diff --git a/lld/docs/ReleaseNotes.rst b/lld/docs/ReleaseNotes.rst index 12ea6de0fc15c43..c95170c1165b228 100644 --- a/lld/docs/ReleaseNotes.rst +++ b/lld/docs/ReleaseNotes.rst @@ -26,15 +26,21 @@ Non-comprehensive list of changes in this release ELF Improvements ---------------- +* ``EI_OSABI`` in the output is now inferred from input object files. + (`#97144 `_) * ``--compress-sections ={none,zlib,zstd}[:level]`` is added to compress matched output sections without the ``SHF_ALLOC`` flag. (`#84855 `_) (`#90567 `_) * The default compression level for zlib is now independent of linker optimization level (``Z_BEST_SPEED``). +* zstd compression parallelism no longer requires ``ZSTD_MULITHREAD`` build. * ``GNU_PROPERTY_AARCH64_FEATURE_PAUTH`` notes, ``R_AARCH64_AUTH_ABS64`` and ``R_AARCH64_AUTH_RELATIVE`` relocations are now supported. (`#72714 `_) +* ``--no-allow-shlib-undefined`` now rejects non-exported definitions in the + ``def-hidden.so ref.so`` case. + (`#86777 `_) * ``--debug-names`` is added to create a merged ``.debug_names`` index from input ``.debug_names`` sections. Type units are not handled yet. (`#86508 `_) @@ -44,6 +50,9 @@ ELF Improvements (typical for embedded). It also makes full LTO feasible in such cases, since IR merging currently prevents the linker script from referring to input files. (`#90007 `_) +* ``--default-script`/``-dT`` is implemented to specify a default script that is processed + if ``--script``/``-T`` is not specified. + (`#89327 `_) * ``--force-group-allocation`` is implemented to discard ``SHT_GROUP`` sections and combine relocation sections if their relocated section group members are placed to the same output section. @@ -51,6 +60,30 @@ ELF Improvements * ``--build-id`` now defaults to generating a 20-byte digest ("sha1") instead of 8-byte ("fast"). This improves compatibility with RPM packaging tools. (`#93943 `_) +* ``-z lrodata-after-bss`` is implemented to place ``.lrodata`` after ``.bss``. + (`#81224 `_) +* ``--export-dynamic`` no longer creates dynamic sections for ``-no-pie`` static linking. +* ``--lto-emit-asm`` is now added as the canonical spelling of ``--plugin-opt=emit-llvm``. +* ``--lto-emit-llvm`` now uses the pre-codegen module. + (`#97480 `_) +* When AArch64 PAuth is enabled, ``-z pack-relative-relocs`` now encodes ``R_AARCH64_AUTH_RELATIVE`` relocations in ``.rela.auth.dyn``. + (`#96496 `_) +* ``-z gcs`` and ``-z gcs-report`` are now supported for AArch64 Guarded Control Stack extension. +* ``-r`` now forces ``-Bstatic``. +* Thumb2 PLT is now supported for Cortex-M processors. + (`#93644 `_) +* ``DW_EH_sdata4`` of addresses larger than 0x80000000 is now supported for MIPS32. + (`#92438 `_) +* Certain unknown section types are rejected. + (`#85173 `_) +* ``PROVIDE(lhs = rhs) PROVIDE(rhs = ...)``, ``lhs`` is now defined only if ``rhs`` is needed. + (`#74771 `_) + (`#87530 `_) +* Orphan placement is refined to prefer the last similar section when its rank <= orphan's rank. + (`#94099 `_) + Non-alloc orphan sections are now placed at the end. + (`#94519 `_) +* R_X86_64_REX_GOTPCRELX of the addq form is no longer incorrectly optimized when the address is larger than 0x80000000. Breaking changes ----------------