105 lines
5.0 KiB
ReStructuredText
105 lines
5.0 KiB
ReStructuredText
===========================
|
|
lld |release| Release Notes
|
|
===========================
|
|
|
|
.. contents::
|
|
:local:
|
|
|
|
.. only:: PreRelease
|
|
|
|
.. warning::
|
|
These are in-progress notes for the upcoming LLVM |release| release.
|
|
Release notes for previous releases can be found on
|
|
`the Download Page <https://releases.llvm.org/download.html>`_.
|
|
|
|
Introduction
|
|
============
|
|
|
|
This document contains the release notes for the lld linker, release |release|.
|
|
Here we describe the status of lld, including major improvements
|
|
from the previous release. All lld releases may be downloaded
|
|
from the `LLVM releases web site <https://llvm.org/releases/>`_.
|
|
|
|
Non-comprehensive list of changes in this release
|
|
=================================================
|
|
|
|
ELF Improvements
|
|
----------------
|
|
|
|
* ``EI_OSABI`` in the output is now inferred from input object files.
|
|
(`#97144 <https://github.com/llvm/llvm-project/pull/97144>`_)
|
|
* ``--compress-sections <section-glib>={none,zlib,zstd}[:level]`` is added to compress
|
|
matched output sections without the ``SHF_ALLOC`` flag.
|
|
(`#84855 <https://github.com/llvm/llvm-project/pull/84855>`_)
|
|
(`#90567 <https://github.com/llvm/llvm-project/pull/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 <https://github.com/llvm/llvm-project/pull/72714>`_)
|
|
* ``--no-allow-shlib-undefined`` now rejects non-exported definitions in the
|
|
``def-hidden.so ref.so`` case.
|
|
(`#86777 <https://github.com/llvm/llvm-project/issues/86777>`_)
|
|
* ``--debug-names`` is added to create a merged ``.debug_names`` index
|
|
from input ``.debug_names`` sections. Type units are not handled yet.
|
|
(`#86508 <https://github.com/llvm/llvm-project/pull/86508>`_)
|
|
* ``--enable-non-contiguous-regions`` option allows automatically packing input
|
|
sections into memory regions by automatically spilling to later matches if a
|
|
region would overflow. This reduces the toil of manually packing regions
|
|
(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 <https://github.com/llvm/llvm-project/pull/90007>`_)
|
|
* ``--default-script`/``-dT`` is implemented to specify a default script that is processed
|
|
if ``--script``/``-T`` is not specified.
|
|
(`#89327 <https://github.com/llvm/llvm-project/pull/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.
|
|
(`#94704 <https://github.com/llvm/llvm-project/pull/94704>`_)
|
|
* ``--build-id`` now defaults to generating a 20-byte digest ("sha1") instead
|
|
of 8-byte ("fast"). This improves compatibility with RPM packaging tools.
|
|
(`#93943 <https://github.com/llvm/llvm-project/pull/93943>`_)
|
|
* ``-z lrodata-after-bss`` is implemented to place ``.lrodata`` after ``.bss``.
|
|
(`#81224 <https://github.com/llvm/llvm-project/pull/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 <https://github.com/llvm/llvm-project/pull/97480>`_)
|
|
* When AArch64 PAuth is enabled, ``-z pack-relative-relocs`` now encodes ``R_AARCH64_AUTH_RELATIVE`` relocations in ``.rela.auth.dyn``.
|
|
(`#96496 <https://github.com/llvm/llvm-project/pull/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 <https://github.com/llvm/llvm-project/pull/93644>`_)
|
|
* ``DW_EH_sdata4`` of addresses larger than 0x80000000 is now supported for MIPS32.
|
|
(`#92438 <https://github.com/llvm/llvm-project/pull/92438>`_)
|
|
* Certain unknown section types are rejected.
|
|
(`#85173 <https://github.com/llvm/llvm-project/pull/85173>`_)
|
|
* ``PROVIDE(lhs = rhs) PROVIDE(rhs = ...)``, ``lhs`` is now defined only if ``rhs`` is needed.
|
|
(`#74771 <https://github.com/llvm/llvm-project/issues/74771>`_)
|
|
(`#87530 <https://github.com/llvm/llvm-project/pull/87530>`_)
|
|
* Orphan placement is refined to prefer the last similar section when its rank <= orphan's rank.
|
|
(`#94099 <https://github.com/llvm/llvm-project/pull/94099>`_)
|
|
Non-alloc orphan sections are now placed at the end.
|
|
(`#94519 <https://github.com/llvm/llvm-project/pull/94519>`_)
|
|
* R_X86_64_REX_GOTPCRELX of the addq form is no longer incorrectly optimized when the address is larger than 0x80000000.
|
|
|
|
Breaking changes
|
|
----------------
|
|
|
|
COFF Improvements
|
|
-----------------
|
|
|
|
MinGW Improvements
|
|
------------------
|
|
|
|
MachO Improvements
|
|
------------------
|
|
|
|
WebAssembly Improvements
|
|
------------------------
|
|
|
|
Fixes
|
|
#####
|