xref: /freebsd/contrib/llvm-project/lld/docs/ReleaseNotes.rst (revision bdd1243df58e60e85101c09001d9812a789b6bc4)
11fd87a68SDimitry Andric===========================
21fd87a68SDimitry Andriclld |release| Release Notes
31fd87a68SDimitry Andric===========================
40b57cec5SDimitry Andric
50b57cec5SDimitry Andric.. contents::
60b57cec5SDimitry Andric    :local:
70b57cec5SDimitry Andric
8*bdd1243dSDimitry Andric.. only:: PreRelease
9*bdd1243dSDimitry Andric
10*bdd1243dSDimitry Andric  .. warning::
11*bdd1243dSDimitry Andric     These are in-progress notes for the upcoming LLVM |release| release.
12*bdd1243dSDimitry Andric     Release notes for previous releases can be found on
13*bdd1243dSDimitry Andric     `the Download Page <https://releases.llvm.org/download.html>`_.
14*bdd1243dSDimitry Andric
150b57cec5SDimitry AndricIntroduction
160b57cec5SDimitry Andric============
170b57cec5SDimitry Andric
181fd87a68SDimitry AndricThis document contains the release notes for the lld linker, release |release|.
1985868e8aSDimitry AndricHere we describe the status of lld, including major improvements
2085868e8aSDimitry Andricfrom the previous release. All lld releases may be downloaded
2185868e8aSDimitry Andricfrom the `LLVM releases web site <https://llvm.org/releases/>`_.
220b57cec5SDimitry Andric
230b57cec5SDimitry AndricNon-comprehensive list of changes in this release
240b57cec5SDimitry Andric=================================================
250b57cec5SDimitry Andric
260b57cec5SDimitry AndricELF Improvements
270b57cec5SDimitry Andric----------------
280b57cec5SDimitry Andric
29*bdd1243dSDimitry Andric* ``ELFCOMPRESS_ZSTD`` compressed input sections are now supported.
30*bdd1243dSDimitry Andric  (`D129406 <https://reviews.llvm.org/D129406>`_)
31*bdd1243dSDimitry Andric* ``--compress-debug-sections=zstd`` is now available to compress debug
32*bdd1243dSDimitry Andric  sections with zstd (``ELFCOMPRESS_ZSTD``).
33*bdd1243dSDimitry Andric  (`D133548 <https://reviews.llvm.org/D133548>`_)
34*bdd1243dSDimitry Andric* ``--no-warnings``/``-w`` is now available to suppress warnings.
35*bdd1243dSDimitry Andric  (`D136569 <https://reviews.llvm.org/D136569>`_)
36*bdd1243dSDimitry Andric* ``DT_RISCV_VARIANT_CC`` is now produced if at least one ``R_RISCV_JUMP_SLOT``
37*bdd1243dSDimitry Andric  relocation references a symbol with the ``STO_RISCV_VARIANT_CC`` bit.
38*bdd1243dSDimitry Andric  (`D107951 <https://reviews.llvm.org/D107951>`_)
39*bdd1243dSDimitry Andric* ``--no-undefined-version`` is now the default; symbols named in version
40*bdd1243dSDimitry Andric  scripts that have no matching symbol in the output will be reported. Use
41*bdd1243dSDimitry Andric  ``--undefined-version`` to revert to the old behavior.
42*bdd1243dSDimitry Andric* The output ``SHT_RISCV_ATTRIBUTES`` section now merges all input components
43*bdd1243dSDimitry Andric  instead of picking the first input component.
44*bdd1243dSDimitry Andric  (`D138550 <https://reviews.llvm.org/D138550>`_)
4513138422SDimitry Andric
468c27c554SDimitry AndricBreaking changes
478c27c554SDimitry Andric----------------
4813138422SDimitry Andric
495ffd83dbSDimitry AndricCOFF Improvements
505ffd83dbSDimitry Andric-----------------
515ffd83dbSDimitry Andric
52*bdd1243dSDimitry Andric* The linker command line entry in ``S_ENVBLOCK`` of the PDB is now stripped
53*bdd1243dSDimitry Andric  from input files, to align with MSVC behavior.
54*bdd1243dSDimitry Andric  (`D137723 <https://reviews.llvm.org/D137723>`_)
55*bdd1243dSDimitry Andric* Switched from SHA1 to BLAKE3 for PDB type hashing / ``-gcodeview-ghash``
56*bdd1243dSDimitry Andric  (`D137101 <https://reviews.llvm.org/D137101>`_)
57*bdd1243dSDimitry Andric* Improvements to the PCH.OBJ files handling. Now LLD behaves the same as MSVC
58*bdd1243dSDimitry Andric  link.exe when merging PCH.OBJ files that don't have the same signature.
59*bdd1243dSDimitry Andric  (`D136762 <https://reviews.llvm.org/D136762>`_)
60*bdd1243dSDimitry Andric* Changed the OrdinalBase for DLLs from 0 to 1, matching the output from
61*bdd1243dSDimitry Andric  both MS link.exe and GNU ld. (`D134140 <https://reviews.llvm.org/D134140>`_)
620b57cec5SDimitry Andric
630b57cec5SDimitry AndricMinGW Improvements
640b57cec5SDimitry Andric------------------
650b57cec5SDimitry Andric
66*bdd1243dSDimitry Andric* The lld-specific options ``--guard-cf``, ``--no-guard-cf``,
67*bdd1243dSDimitry Andric  ``--guard-longjmp`` and ``--no-guard-longjmp`` has been added to allow
68*bdd1243dSDimitry Andric  enabling Control Flow Guard and long jump hardening. These options are
69*bdd1243dSDimitry Andric  disabled by default, but enabling ``--guard-cf`` will also enable
70*bdd1243dSDimitry Andric  ``--guard-longjmp`` unless ``--no-guard-longjmp`` is also specified.
71*bdd1243dSDimitry Andric  ``--guard-longjmp`` depends on ``--guard-cf`` and cannot be used by itself.
72*bdd1243dSDimitry Andric  Note that these features require the ``_load_config_used`` symbol to contain
73*bdd1243dSDimitry Andric  the load config directory and be filled with the required symbols.
74*bdd1243dSDimitry Andric  (`D132808 <https://reviews.llvm.org/D132808>`_)
7561cfbce3SDimitry Andric
76*bdd1243dSDimitry Andric* Pick up libraries named ``<name>.lib`` when linked with ``-l<name>``, even
77*bdd1243dSDimitry Andric  if ``-static`` has been specified. This fixes conformance to what
78*bdd1243dSDimitry Andric  GNU ld does. (`D135651 <https://reviews.llvm.org/D135651>`_)
79*bdd1243dSDimitry Andric
80*bdd1243dSDimitry Andric* Unwinding in Rust code on i386 in MinGW builds has been fixed, by avoiding
81*bdd1243dSDimitry Andric  to leave out the ``rust_eh_personality`` symbol.
82*bdd1243dSDimitry Andric  (`D136879 <https://reviews.llvm.org/D136879>`_)
83e8d8bef9SDimitry Andric
8481ad6265SDimitry AndricMachO Improvements
8581ad6265SDimitry Andric------------------
86e8d8bef9SDimitry Andric
87e8d8bef9SDimitry AndricWebAssembly Improvements
88e8d8bef9SDimitry Andric------------------------
89e8d8bef9SDimitry Andric
90