diff options
Diffstat (limited to 'contrib/llvm/tools/lld/docs/ReleaseNotes.rst')
| -rw-r--r-- | contrib/llvm/tools/lld/docs/ReleaseNotes.rst | 130 |
1 files changed, 48 insertions, 82 deletions
diff --git a/contrib/llvm/tools/lld/docs/ReleaseNotes.rst b/contrib/llvm/tools/lld/docs/ReleaseNotes.rst index 0f15ee92cc8b..dc5df6795d99 100644 --- a/contrib/llvm/tools/lld/docs/ReleaseNotes.rst +++ b/contrib/llvm/tools/lld/docs/ReleaseNotes.rst @@ -1,33 +1,22 @@ ======================= -LLD 7.0.0 Release Notes +lld 8.0.0 Release Notes ======================= .. contents:: :local: +.. warning:: + These are in-progress notes for the upcoming LLVM 8.0.0 release. + Release notes for previous releases can be found on + `the Download Page <https://releases.llvm.org/download.html>`_. + Introduction ============ -lld is a high-performance linker that supports ELF (Unix), COFF (Windows), -Mach-O (macOS), MinGW and WebAssembly. lld is command-line-compatible with GNU -linkers and Microsoft link.exe, and is significantly faster than the system -default linkers. - -lld 7 for ELF, COFF and MinGW are production-ready. - -* lld/ELF can build the entire FreeBSD/{AMD64,ARMv7} and will be the default - linker of the next version of the operating system. - -* lld/COFF is being used to create official builds of large popular programs - such as Chrome and Firefox. - -* lld/MinGW is being used by Firefox for their MinGW builds. lld/MinGW still - needs a sysroot specifically built for lld, with llvm-dlltool, though. - -* lld/WebAssembly is used as the default (only) linker in Emscripten when using - the upstream LLVM compiler. - -* lld/Mach-O is still experimental. +This document contains the release notes for the lld linker, release 8.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 <https://llvm.org/releases/>`_. Non-comprehensive list of changes in this release ================================================= @@ -35,80 +24,57 @@ Non-comprehensive list of changes in this release ELF Improvements ---------------- -* Fixed a lot of long-tail compatibility issues with GNU linkers. - -* Added ``-z retpolineplt`` to emit a PLT entry that doesn't contain an indirect - jump instruction to mitigate Spectre v2 vulnerability. - -* Added experimental support for `SHT_RELR sections - <https://groups.google.com/forum/#!topic/generic-abi/bX460iggiKg>`_ to create a - compact dynamic relocation table. - -* Added support for `split stacks <https://gcc.gnu.org/wiki/SplitStacks>`_. - -* Added support for address significance table (section with type - SHT_LLVM_ADDRSIG) to improve Identical Code Folding (ICF). Combined with the - ``-faddrsig`` compiler option added to Clang 7, lld's ``--icf=all`` can now - safely merge functions and data to generate smaller outputs than before. +* lld now supports RISC-V. (`r339364 + <https://reviews.llvm.org/rL339364>`_) -* Improved ``--gdb-index`` so that it is faster (`r336790 - <https://reviews.llvm.org/rL336790>`_) and uses less memory (`r336672 - <https://reviews.llvm.org/rL336672>`_). +* Default image base address has changed from 65536 to 2 MiB for i386 + and 4 MiB for AArch64 to make lld-generated executables work better + with automatic superpage promotion. FreeBSD can promote contiguous + non-superpages to a superpage if they are aligned to the superpage + size. (`r342746 <https://reviews.llvm.org/rL342746>`_) -* Reduced memory usage of ``--compress-debug-sections`` (`r338913 - <https://reviews.llvm.org/rL338913>`_). +* lld/Hexagon can now link Linux kernel and musl libc for Qualcomm + Hexagon ISA. -* Added linker script OVERLAY support (`r335714 <https://reviews.llvm.org/rL335714>`_). +* Initial MSP430 ISA support has landed. -* Added ``--warn-backref`` to make it easy to identify command line option order - that doesn't work with GNU linkers (`r329636 <https://reviews.llvm.org/rL329636>`_) +* The following flags have been added: ``-z interpose``, ``-z global`` -* Added ld.lld.1 man page (`r324512 <https://reviews.llvm.org/rL324512>`_). - -* Added support for multi-GOT. - -* Added support for MIPS position-independent executable (PIE). - -* Fixed MIPS TLS GOT entries for local symbols in shared libraries. - -* Fixed calculation of MIPS GP relative relocations in case of relocatable - output. - -* Added support for PPCv2 ABI. - -* Removed an incomplete support of PPCv1 ABI. +COFF Improvements +----------------- -* Added support for Qualcomm Hexagon ISA. +* PDB GUID is set to hash of PDB contents instead to a random byte + sequence for build reproducibility. -* Added the following flags: ``--apply-dynamic-relocs``, ``--check-sections``, - ``--cref``, ``--just-symbols``, ``--keep-unique``, - ``--no-allow-multiple-definition``, ``--no-apply-dynamic-relocs``, - ``--no-check-sections``, ``--no-gnu-unique, ``--no-pic-executable``, - ``--no-undefined-version``, ``--no-warn-common``, ``--pack-dyn-relocs=relr``, - ``--pop-state``, ``--print-icf-sections``, ``--push-state``, - ``--thinlto-index-only``, ``--thinlto-object-suffix-replace``, - ``--thinlto-prefix-replace``, ``--warn-backref``, ``-z combreloc``, ``-z - copyreloc``, ``-z initfirst``, ``-z keep-text-section-prefix``, ``-z lazy``, - ``-z noexecstack``, ``-z relro``, ``-z retpolineplt``, ``-z text`` +* The following flags have been added: ``/force:multiple`` -COFF Improvements ------------------ +* lld now can link against import libraries produced by GNU tools. -* Improved correctness of exporting mangled stdcall symbols. +* lld can create thunks for ARM, to allow linking images over 16 MB. -* Completed support for ARM64 relocations. +MinGW Improvements +------------------ -* Added support for outputting PDB debug info for MinGW targets. +* lld can now automatically import data variables from DLLs without the + use of the dllimport attribute. -* Improved compatibility of output binaries with GNU binutils objcopy/strip. +* lld can now use existing normal MinGW sysroots with import libraries and + CRT startup object files for GNU binutils. lld can handle most object + files produced by GCC, and thus works as a drop-in replacement for + ld.bfd in such environments. (There are known issues with linking crtend.o + from GCC in setups with DWARF exceptions though, where object files are + linked in a different order than with GNU ld, inserting a DWARF exception + table terminator too early.) -* Sped up PDB file creation. +MachO Improvements +------------------ -* Changed section layout to improve compatibility with link.exe. +* Item 1. -* `/subsystem` inference is improved to cover more corner cases. +WebAssembly Improvements +------------------------ -* Added the following flags: ``--color-diagnostics={always,never,auto}``, - ``--no-color-diagnostics``, ``/brepro``, ``/debug:full``, ``/debug:ghash``, - ``/guard:cf``, ``/guard:longjmp``, ``/guard:nolongjmp``, ``/integritycheck``, - ``/order``, ``/pdbsourcepath``, ``/timestamp`` +* Add initial support for creating shared libraries (-shared). + Note: The shared library format is still under active development and may + undergo significant changes in future versions. + See: https://github.com/WebAssembly/tool-conventions/blob/master/DynamicLinking.md |
