Loading lld/docs/ReleaseNotes.rst +47 −22 Original line number Diff line number Diff line Loading @@ -8,9 +8,9 @@ LLD 6.0.0 Release Notes Introduction ============ This document contains the release notes for the LLD linker, release 6.0.0. Here we describe the status of LLD, including major improvements from the previous release. All LLD releases may be downloaded This document contains the release notes for the lld linker, release 6.0.0. Here we describe the status of lld, including major improvements from the previous release. All lld releases may be downloaded from the `LLVM releases web site <http://llvm.org/releases/>`_. Non-comprehensive list of changes in this release Loading @@ -19,40 +19,64 @@ Non-comprehensive list of changes in this release ELF Improvements ---------------- * MIPS port now generates all output dynamic relocations using Elf_Rel format only. * A lot of bugs and compatibility issues have been identified and fixed as a result of people using lld 5.0 as a standard system linker. In particular, linker script and version script support has significantly improved that it should be able to handle almost all scripts. * Added handling of the R_MIPS_26 relocation in case of N32 / N64 ABIs and generating proper PLT entries. * A mitigation for Spectre v2 has been implemented. If you pass ``-z retpolineplt``, lld uses RET instruction instead of JMP instruction in PLT. The option is available for x86 and x86-64. * lld can patch Aarch64 errata 843419. * Identical Code Folding (ICF) now de-duplicates .eh_frame entries, so lld now generates slightly smaller outputs than before when you pass ``--icf=all``. * lld can generate thunks for out of range thunks. * Analysis for ``--as-needed`` is now done after garbage collection. If garbage collector eliminates all sections that use some library, that library is eliminated from DT_NEEDED tags. Previously, the analysis ran before garbage collection. * ARM PLT entries automatically use short or long variants. * Size of code segment is now always rounded up to page size to make sure that unused bytes at end of code segment is filled with trap instructions (such as INT3) instead of zeros. * lld is now able to generate Android-style compact dynamic relocation table. You can turn on the feature by passing ``--pack-dyn-relocs=android``. * Debug information is used in more cases when reporting errors. * Lots of bug fixes. Should be able to handle almost all linker and version scripts. * ``--gdb-index`` gets faster than before. * Faster gdb index creation. * String merging is now multi-threaded, which makes ``-O2`` faster. * Tar files created by --reproduce now work even in the presence of absolute paths. * ``--hash-style=both`` is now default instead of ``--hash-style=sysv`` to match the behavior of recent versions of GNU linkers. * ARM PLT entries automatically use short or long variants. * lld defaults to --hash-style=both. * lld can now identify and patch a code sequence that triggers AArch64 errata 843419. Add ``--fix-cortex-a53-843419`` to enable the feature. * ICF now deduplicates .eh_frame entries. * lld can now generate thunks for out of range thunks. * LLD supports the Android relocation packing format. * MIPS port now generates all output dynamic relocations using Elf_Rel format only. * Debug info is used in more cases when reporting errors. * Added handling of the R_MIPS_26 relocation in case of N32/N64 ABIs and generating proper PLT entries. * LLD can produce x86/x86_64 PLTs that use retpolines. * The following options have been added: ``--icf=none`` ``-z muldefs`` ``--plugin-opt`` ``--no-eh-frame-hdr`` ``--no-gdb-index`` ``--orphan-handling={place,discard,warn,error}`` ``--pack-dyn-relocs={none,android}`` ``--no-omagic`` ``--no-print-gc-sections`` ``--ignore-function-address-equality`` ``-z retpolineplt`` ``--print-icf-sections`` ``--no-pie`` COFF Improvements ----------------- * A GNU ld style frontend for the COFF linker has been added for MinGW. In MinGW environments, the linker is invoked with GNU ld style parameters; which LLD previously only supported when used as an ELF linker. When which lld previously only supported when used as an ELF linker. When a PE/COFF target is chosen, those parameters are rewritten into the lld-link style parameters and the COFF linker is invoked instead. Loading @@ -68,7 +92,8 @@ COFF Improvements * Only write ``.manifest`` files if ``/manifest`` is passed. MachO Improvements ------------------ WebAssembly Improvements ------------------------ * Item 1. * Initial version of WebAssembly support has landed. You can invoke the WebAssembly linker by ``wasm-ld``. Loading
lld/docs/ReleaseNotes.rst +47 −22 Original line number Diff line number Diff line Loading @@ -8,9 +8,9 @@ LLD 6.0.0 Release Notes Introduction ============ This document contains the release notes for the LLD linker, release 6.0.0. Here we describe the status of LLD, including major improvements from the previous release. All LLD releases may be downloaded This document contains the release notes for the lld linker, release 6.0.0. Here we describe the status of lld, including major improvements from the previous release. All lld releases may be downloaded from the `LLVM releases web site <http://llvm.org/releases/>`_. Non-comprehensive list of changes in this release Loading @@ -19,40 +19,64 @@ Non-comprehensive list of changes in this release ELF Improvements ---------------- * MIPS port now generates all output dynamic relocations using Elf_Rel format only. * A lot of bugs and compatibility issues have been identified and fixed as a result of people using lld 5.0 as a standard system linker. In particular, linker script and version script support has significantly improved that it should be able to handle almost all scripts. * Added handling of the R_MIPS_26 relocation in case of N32 / N64 ABIs and generating proper PLT entries. * A mitigation for Spectre v2 has been implemented. If you pass ``-z retpolineplt``, lld uses RET instruction instead of JMP instruction in PLT. The option is available for x86 and x86-64. * lld can patch Aarch64 errata 843419. * Identical Code Folding (ICF) now de-duplicates .eh_frame entries, so lld now generates slightly smaller outputs than before when you pass ``--icf=all``. * lld can generate thunks for out of range thunks. * Analysis for ``--as-needed`` is now done after garbage collection. If garbage collector eliminates all sections that use some library, that library is eliminated from DT_NEEDED tags. Previously, the analysis ran before garbage collection. * ARM PLT entries automatically use short or long variants. * Size of code segment is now always rounded up to page size to make sure that unused bytes at end of code segment is filled with trap instructions (such as INT3) instead of zeros. * lld is now able to generate Android-style compact dynamic relocation table. You can turn on the feature by passing ``--pack-dyn-relocs=android``. * Debug information is used in more cases when reporting errors. * Lots of bug fixes. Should be able to handle almost all linker and version scripts. * ``--gdb-index`` gets faster than before. * Faster gdb index creation. * String merging is now multi-threaded, which makes ``-O2`` faster. * Tar files created by --reproduce now work even in the presence of absolute paths. * ``--hash-style=both`` is now default instead of ``--hash-style=sysv`` to match the behavior of recent versions of GNU linkers. * ARM PLT entries automatically use short or long variants. * lld defaults to --hash-style=both. * lld can now identify and patch a code sequence that triggers AArch64 errata 843419. Add ``--fix-cortex-a53-843419`` to enable the feature. * ICF now deduplicates .eh_frame entries. * lld can now generate thunks for out of range thunks. * LLD supports the Android relocation packing format. * MIPS port now generates all output dynamic relocations using Elf_Rel format only. * Debug info is used in more cases when reporting errors. * Added handling of the R_MIPS_26 relocation in case of N32/N64 ABIs and generating proper PLT entries. * LLD can produce x86/x86_64 PLTs that use retpolines. * The following options have been added: ``--icf=none`` ``-z muldefs`` ``--plugin-opt`` ``--no-eh-frame-hdr`` ``--no-gdb-index`` ``--orphan-handling={place,discard,warn,error}`` ``--pack-dyn-relocs={none,android}`` ``--no-omagic`` ``--no-print-gc-sections`` ``--ignore-function-address-equality`` ``-z retpolineplt`` ``--print-icf-sections`` ``--no-pie`` COFF Improvements ----------------- * A GNU ld style frontend for the COFF linker has been added for MinGW. In MinGW environments, the linker is invoked with GNU ld style parameters; which LLD previously only supported when used as an ELF linker. When which lld previously only supported when used as an ELF linker. When a PE/COFF target is chosen, those parameters are rewritten into the lld-link style parameters and the COFF linker is invoked instead. Loading @@ -68,7 +92,8 @@ COFF Improvements * Only write ``.manifest`` files if ``/manifest`` is passed. MachO Improvements ------------------ WebAssembly Improvements ------------------------ * Item 1. * Initial version of WebAssembly support has landed. You can invoke the WebAssembly linker by ``wasm-ld``.