]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lld/docs/ReleaseNotes.rst
Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lld / docs / ReleaseNotes.rst
1 =======================
2 lld 8.0.0 Release Notes
3 =======================
4
5 .. contents::
6     :local:
7
8 Introduction
9 ============
10
11 lld is a high-performance linker that supports ELF (Unix), COFF (Windows),
12 Mach-O (macOS), MinGW and WebAssembly. lld is command-line-compatible with
13 GNU linkers and Microsoft link.exe and is significantly faster than the
14 system default linkers.
15
16 lld 8.0.0 has lots of feature improvements and bug fixes.
17
18 Non-comprehensive list of changes in this release
19 =================================================
20
21 ELF Improvements
22 ----------------
23
24 * lld now supports RISC-V. (`r339364
25   <https://reviews.llvm.org/rL339364>`_)
26
27 * Default image base address has changed from 65536 to 2 MiB for i386
28   and 4 MiB for AArch64 to make lld-generated executables work better
29   with automatic superpage promotion. FreeBSD can promote contiguous
30   non-superpages to a superpage if they are aligned to the superpage
31   size. (`r342746 <https://reviews.llvm.org/rL342746>`_)
32
33 * lld now attempts to place a ``.note`` segment in the first page of a
34   generated file, so that you can find some important information
35   (``.note.gnu.build-id`` in particular) in a core file even if a core
36   file is truncated by ulimit.
37   (`r349524 <https://reviews.llvm.org/rL349524>`_)
38
39 * lld now reports an error if ``_GLOBAL_OFFSET_TABLE_`` symbol is
40   defined by an input object file, as the symbol is supposed to be
41   synthesized by the linker.
42   (`r347854 <https://reviews.llvm.org/rL347854>`_)
43
44 * lld/Hexagon can now link Linux kernel and musl libc for Qualcomm
45   Hexagon ISA.
46
47 * Initial MSP430 ISA support has landed.
48
49 * lld now uses the ``sigrie`` instruction as a trap instruction for
50   MIPS targets.
51
52 * lld now creates a TLS segment for AArch64 with a slightly larger
53   alignment requirement, so that the loader makes a few bytes room
54   before each TLS segment at runtime. The aim of this change is to
55   make room to accomodate nonstandard Android TLS slots while keeping
56   the compatibility with the standard AArch64 ABI.
57   (`r350681 <https://reviews.llvm.org/rL350681>`_)
58
59 * The following flags have been added: ``--call-graph-profile``,
60   ``--no-call-graph-profile``, ``--warn-ifunc-textrel``,
61   ``-z interpose``, ``-z global``, ``-z nodefaultlib``
62
63 COFF Improvements
64 -----------------
65
66 * PDB GUID is set to hash of PDB contents instead to a random byte
67   sequence for build reproducibility.
68
69 * ``/pdbsourcepath:`` is now also used to make ``"cwd"``, ``"exe"``, ``"pdb"``
70   in the env block of PDB outputs absolute if they are relative, and to make
71   paths to obj files referenced in PDB outputs absolute if they are relative.
72   Together with the previous item, this makes it possible to generate
73   executables and PDBs that are fully deterministic and independent of the
74   absolute path to the build directory, so that different machines building
75   the same code in different directories can produce exactly the same output.
76
77 * The following flags have been added: ``/force:multiple``
78
79 * lld now can link against import libraries produced by GNU tools.
80
81 * lld can create thunks for ARM and ARM64, to allow linking larger images
82   (over 16 MB for ARM and over 128 MB for ARM64)
83
84 * Several speed and memory usage improvements.
85
86 * lld now creates debug info for typedefs.
87
88 * lld can now link obj files produced by ``cl.exe /Z7 /Yc``.
89
90 * lld now understands ``%_PDB%`` and ``%_EXT%`` in ``/pdbaltpath:``.
91
92 * Undefined symbols are now printed in demangled form in addition to raw form.
93
94 MinGW Improvements
95 ------------------
96
97 * lld can now automatically import data variables from DLLs without the
98   use of the dllimport attribute.
99
100 * lld can now use existing normal MinGW sysroots with import libraries and
101   CRT startup object files for GNU binutils. lld can handle most object
102   files produced by GCC, and thus works as a drop-in replacement for
103   ld.bfd in such environments. (There are known issues with linking crtend.o
104   from GCC in setups with DWARF exceptions though, where object files are
105   linked in a different order than with GNU ld, inserting a DWARF exception
106   table terminator too early.)
107
108 * lld now supports COFF embedded directives for linking to nondefault
109   libraries, just like for the normal COFF target.
110
111 * Actually generate a codeview build id signature, even if not creating a PDB.
112   Previously, the ``--build-id`` option did not actually generate a build id
113   unless ``--pdb`` was specified.
114
115 WebAssembly Improvements
116 ------------------------
117
118 * Add initial support for creating shared libraries (-shared).
119   Note: The shared library format is still under active development and may
120   undergo significant changes in future versions.
121   See: https://github.com/WebAssembly/tool-conventions/blob/master/DynamicLinking.md