@@ -26,15 +26,21 @@ Non-comprehensive list of changes in this release
2626ELF Improvements
2727----------------
2828
29+ * ``EI_OSABI `` in the output is now inferred from input object files.
30+ (`#97144 <https://github.com/llvm/llvm-project/pull/97144 >`_)
2931* ``--compress-sections <section-glib>={none,zlib,zstd}[:level] `` is added to compress
3032 matched output sections without the ``SHF_ALLOC `` flag.
3133 (`#84855 <https://github.com/llvm/llvm-project/pull/84855 >`_)
3234 (`#90567 <https://github.com/llvm/llvm-project/pull/90567 >`_)
3335* The default compression level for zlib is now independent of linker
3436 optimization level (``Z_BEST_SPEED ``).
37+ * zstd compression parallelism no longer requires ``ZSTD_MULITHREAD `` build.
3538* ``GNU_PROPERTY_AARCH64_FEATURE_PAUTH `` notes, ``R_AARCH64_AUTH_ABS64 `` and
3639 ``R_AARCH64_AUTH_RELATIVE `` relocations are now supported.
3740 (`#72714 <https://github.com/llvm/llvm-project/pull/72714 >`_)
41+ * ``--no-allow-shlib-undefined `` now rejects non-exported definitions in the
42+ ``def-hidden.so ref.so `` case.
43+ (`#86777 <https://github.com/llvm/llvm-project/issues/86777 >`_)
3844* ``--debug-names `` is added to create a merged ``.debug_names `` index
3945 from input ``.debug_names `` sections. Type units are not handled yet.
4046 (`#86508 <https://github.com/llvm/llvm-project/pull/86508 >`_)
@@ -44,13 +50,40 @@ ELF Improvements
4450 (typical for embedded). It also makes full LTO feasible in such cases, since
4551 IR merging currently prevents the linker script from referring to input
4652 files. (`#90007 <https://github.com/llvm/llvm-project/pull/90007 >`_)
53+ * ``--default-script`/ ``-dT`` is implemented to specify a default script that is processed
54+ if ``--script ``/``-T `` is not specified.
55+ (`#89327 <https://github.com/llvm/llvm-project/pull/89327 >`_)
4756* ``--force-group-allocation `` is implemented to discard ``SHT_GROUP `` sections
4857 and combine relocation sections if their relocated section group members are
4958 placed to the same output section.
5059 (`#94704 <https://github.com/llvm/llvm-project/pull/94704 >`_)
5160* ``--build-id `` now defaults to generating a 20-byte digest ("sha1") instead
5261 of 8-byte ("fast"). This improves compatibility with RPM packaging tools.
5362 (`#93943 <https://github.com/llvm/llvm-project/pull/93943 >`_)
63+ * ``-z lrodata-after-bss `` is implemented to place ``.lrodata `` after ``.bss ``.
64+ (`#81224 <https://github.com/llvm/llvm-project/pull/81224 >`_)
65+ * ``--export-dynamic `` no longer creates dynamic sections for ``-no-pie `` static linking.
66+ * ``--lto-emit-asm `` is now added as the canonical spelling of ``--plugin-opt=emit-llvm ``.
67+ * ``--lto-emit-llvm `` now uses the pre-codegen module.
68+ (`#97480 <https://github.com/llvm/llvm-project/pull/97480 >`_)
69+ * When AArch64 PAuth is enabled, ``-z pack-relative-relocs `` now encodes ``R_AARCH64_AUTH_RELATIVE `` relocations in ``.rela.auth.dyn ``.
70+ (`#96496 <https://github.com/llvm/llvm-project/pull/96496 >`_)
71+ * ``-z gcs `` and ``-z gcs-report `` are now supported for AArch64 Guarded Control Stack extension.
72+ * ``-r `` now forces ``-Bstatic ``.
73+ * Thumb2 PLT is now supported for Cortex-M processors.
74+ (`#93644 <https://github.com/llvm/llvm-project/pull/93644 >`_)
75+ * ``DW_EH_sdata4 `` of addresses larger than 0x80000000 is now supported for MIPS32.
76+ (`#92438 <https://github.com/llvm/llvm-project/pull/92438 >`_)
77+ * Certain unknown section types are rejected.
78+ (`#85173 <https://github.com/llvm/llvm-project/pull/85173 >`_)
79+ * ``PROVIDE(lhs = rhs) PROVIDE(rhs = ...) ``, ``lhs `` is now defined only if ``rhs `` is needed.
80+ (`#74771 <https://github.com/llvm/llvm-project/issues/74771 >`_)
81+ (`#87530 <https://github.com/llvm/llvm-project/pull/87530 >`_)
82+ * Orphan placement is refined to prefer the last similar section when its rank <= orphan's rank.
83+ (`#94099 <https://github.com/llvm/llvm-project/pull/94099 >`_)
84+ Non-alloc orphan sections are now placed at the end.
85+ (`#94519 <https://github.com/llvm/llvm-project/pull/94519 >`_)
86+ * R_X86_64_REX_GOTPCRELX of the addq form is no longer incorrectly optimized when the address is larger than 0x80000000.
5487
5588Breaking changes
5689----------------
0 commit comments