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