================ @@ -29,42 +29,195 @@ Non-comprehensive list of changes in this release ELF Improvements ---------------- -* ``--print-gc-sections=<file>`` prints garbage collection section listing to a file. +* Added ``--print-gc-sections=<file>`` to redirect garbage collection section + listing to a file, avoiding contamination of stdout with other linker output. (`#159706 <https://github.com/llvm/llvm-project/pull/159706>`_) +* Added ``VersionNode`` lexer state for better version script parsing. + This brings the lexer behavior closer to GNU ld. + (`#174530 <https://github.com/llvm/llvm-project/pull/174530>`_) +* ``-r``/``--emit-relocs``: Fixed a crash when processing relocation sections + that are placed before their relocated sections. + (`#156354 <https://github.com/llvm/llvm-project/pull/156354>`_) +* Unversioned undefined symbols now use version index 0, aligning with + GNU ld 2.46 behavior. + (`#168189 <https://github.com/llvm/llvm-project/pull/168189>`_) +* ``.data.rel.ro.hot`` and ``.data.rel.ro.unlikely`` are now recognized as + RELRO sections, allowing profile-guided static data partitioning. + (`#148920 <https://github.com/llvm/llvm-project/pull/148920>`_) +* DTLTO now supports archive members and bitcode members of thin archives. + (`#157043 <https://github.com/llvm/llvm-project/pull/157043>`_) + (`#149425 <https://github.com/llvm/llvm-project/pull/149425>`_) +* For DTLTO, ``--thinlto-remote-compiler-prepend-arg=<arg>`` has been added to + prepend an argument to the remote compiler's command line. + (`#162456 <https://github.com/llvm/llvm-project/pull/162456>`_) +* Balanced Partitioning (BP) section ordering now skips input sections with + null data, and filters out section symbols. + (`#149265 <https://github.com/llvm/llvm-project/pull/149265>`_) + (`#151685 <https://github.com/llvm/llvm-project/pull/151685>`_) +* For AArch64, fixed a crash when using ``--fix-cortex-a53-843419`` with + synthetic sections and improved handling when patched code is far from + the short jump. + (`#170495 <https://github.com/llvm/llvm-project/pull/170495>`_) +* For AArch64, added support for the ``R_AARCH64_FUNCINIT64`` dynamic + relocation type for relocating word-sized data using the return value + of a function. + (`#156564 <https://github.com/llvm/llvm-project/pull/156564>`_) +* For AArch64, added support for the ``R_AARCH64_PATCHINST`` relocation type + to support deactivation symbols. + (`#133534 <https://github.com/llvm/llvm-project/pull/133534>`_) +* For AArch64, added support for reading AArch64 Build Attributes and + converting them into GNU Properties. + (`#147970 <https://github.com/llvm/llvm-project/pull/147970>`_) +* For ARM, fixed incorrect veneer generation for wraparound branches at + the high end of the 32-bit address space branching to the low end. + (`#165263 <https://github.com/llvm/llvm-project/pull/165263>`_) +* For Hexagon, added range extension thunk support. + (`#111217 <https://github.com/llvm/llvm-project/pull/111217>`_) +* For LoongArch, added GOT indirection to PC relative optimization in + normal or medium code model. + (`#123743 <https://github.com/llvm/llvm-project/pull/123743>`_) +* For LoongArch, added support for relaxation during TLSDESC GD/LD to + IE/LE conversion to remove redundant NOPs. + (`#123730 <https://github.com/llvm/llvm-project/pull/123730>`_) +* For LoongArch, the linker now checks that the relocation addend is zero + before applying relaxation to ``R_LARCH_GOT_PC_{HI20,LO12}``. + (`#151264 <https://github.com/llvm/llvm-project/pull/151264>`_) +* For LoongArch, ``-r`` now synthesizes ``R_LARCH_ALIGN`` at input section + start to preserve alignment information. + (`#153935 <https://github.com/llvm/llvm-project/pull/153935>`_) +* For RISC-V, added infrastructure for handling vendor-specific relocations. + (`#159987 <https://github.com/llvm/llvm-project/pull/159987>`_) +* For RISC-V, added support for statically resolved vendor-specific relocations. + (`#169273 <https://github.com/llvm/llvm-project/pull/169273>`_) +* For RISC-V, ``-r`` now synthesizes ``R_RISCV_ALIGN`` at input section start + to preserve alignment information during two-stage linking. + (`#151639 <https://github.com/llvm/llvm-project/pull/151639>`_) Breaking changes ---------------- COFF Improvements ----------------- -* ``/fat-lto-objects`` addded to support FatLTO. Without ``/fat-lto-objects`` or with ``/fat-lto-objects:no``, LLD will link LLVM FatLTO objects using the relocatable object file. +* Added ``/sectionlayout:@<file>`` to specify custom output section ordering. + (`#152779 <https://github.com/llvm/llvm-project/pull/152779>`_) +* Added ``/nodbgdirmerge`` to emit the debug directory section in ``.cvinfo`` + instead of merging it to ``.rdata``. + (`#159235 <https://github.com/llvm/llvm-project/pull/159235>`_) +* Added ``/fat-lto-objects`` to support FatLTO. (`#165529 <https://github.com/llvm/llvm-project/pull/165529>`_) -* ``/linkreprofullpathrsp`` prints the full path to each object passed to the link line to a file. - (`#174971 <https://github.com/llvm/llvm-project/pull/165449>`_) -* ``-prefetch-inputs`` can improve link times by asynchronously loading input files in RAM. - This will dampen the effect of input file I/O latency on link times. - However this flag can have an adverse effect when linking a large number of inputs files, or if all - inputs do not fit in RAM at once. For those cases, linking might be a bit slower since the inputs - will be streamed into RAM upfront, only to be evicted later by swapping. +* Added ``/linkreprofullpathrsp`` to print the full path to each object + passed to the link line to a file. + (`#174971 <https://github.com/llvm/llvm-project/pull/174971>`_) +* Added CET flags: ``/cetcompatstrict``, ``/cetipvalidationrelaxed``, + ``/cetdynamicapisinproc``, and ``/hotpatchcompatible``. + (`#150761 <https://github.com/llvm/llvm-project/pull/150761>`_) +* Added support for ARM64X same-address thunks. + (`#151255 <https://github.com/llvm/llvm-project/pull/151255>`_) +* Added support for Integrated Distributed ThinLTO. + (`#148594 <https://github.com/llvm/llvm-project/pull/148594>`_) +* Added ``-prefetch-inputs`` to improve link times by asynchronously + loading input files in RAM. (`#169224 <https://github.com/llvm/llvm-project/pull/169224>`_) +* Added more ``--time-trace`` tags for ThinLTO linking. + (`#156471 <https://github.com/llvm/llvm-project/pull/156471>`_) +* For DTLTO, ``/thinlto-remote-compiler-prepend-arg:<arg>`` has been added to + prepend an argument to the remote compiler's command line. + (`#162456 <https://github.com/llvm/llvm-project/pull/162456>`_) +* ``/summary`` now works when ``/debug`` isn't provided. + (`#157476 <https://github.com/llvm/llvm-project/pull/157476>`_) +* ``/summary`` now displays the size of all consumed inputs. + (`#157284 <https://github.com/llvm/llvm-project/pull/157284>`_) +* Loop and SLP vectorize options are now passed to the LTO backend. + (`#173041 <https://github.com/llvm/llvm-project/pull/173041>`_) +* Fixed implicit DLL entry point for MinGW. + (`#171680 <https://github.com/llvm/llvm-project/pull/171680>`_) +* Fixed manifest UAC trustInfo namespace. + (`#165285 <https://github.com/llvm/llvm-project/pull/165285>`_) +* Fixed AArch64 delayimport of sret arguments. + (`#163096 <https://github.com/llvm/llvm-project/pull/163096>`_) +* Fixed tailMergeARM64 delayload thunk 128 MB range limitation. + (`#161844 <https://github.com/llvm/llvm-project/pull/161844>`_) +* Fixed symbol names for import thunks. + (`#160694 <https://github.com/llvm/llvm-project/pull/160694>`_) +* Deduplicate common chunks when linking COFF files. + (`#162553 <https://github.com/llvm/llvm-project/pull/162553>`_) +* Aligned EC code ranges to page boundaries. + (`#168222 <https://github.com/llvm/llvm-project/pull/168222>`_) +* Discard ``.llvmbc`` and ``.llvmcmd`` sections. + (`#150897 <https://github.com/llvm/llvm-project/pull/150897>`_) +* Fixed resolving symbols with ``-alternatename`` when the target is undefined. ---------------- aganea wrote:
I would write `/alternatename` since that's how we usually refer to it. I prefer using slashes when it's an existing MSVC flag, or dashes when it's a LLD-specific flag. https://github.com/llvm/llvm-project/pull/177088 _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
