summaryrefslogtreecommitdiff
path: root/contrib/llvm/tools/lld/docs/ReleaseNotes.rst
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm/tools/lld/docs/ReleaseNotes.rst')
-rw-r--r--contrib/llvm/tools/lld/docs/ReleaseNotes.rst130
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