GNU ld's relocatable linking behaviors:
* Sections with the `SHF_GROUP` flag are handled like sections matched
by the `--unique=pattern` option. They are processed like orphan
sections and ignored by input section descriptions.
* Section groups' (usually named `.group`) content is updated as the
section indexes are updated. Section groups can be discarded with
`/DISCARD/ : { *(.group) }`.
`-r --force-group-allocation` discards section groups and allows
sections with the `SHF_GROUP` flag to be matched like normal sections.
If two section group members are placed into the same output section,
their relocation sections (if present) are combined as well.
This behavior can be useful when -r output is used as a pseudo shared
object (e.g., FreeBSD's amd64 kernel modules, CHERIoT compartments).
This patch implements --force-group-allocation:
* Input SHT_GROUP sections are discarded.
* Input sections do not get the SHF_GROUP flag, so `addInputSec`
will combine relocation sections if their relocated section group
members are combined.
The default behavior is:
* Input SHT_GROUP sections are retained.
* Input SHF_GROUP sections can be matched (unlike GNU ld)
* Input SHF_GROUP sections keep the SHF_GROUP flag, so `addInputSec`
will create different OutputDesc copies.
GNU ld provides the `FORCE_GROUP_ALLOCATION` command, which is not
implemented.
Pull Request: https://github.com/llvm/llvm-project/pull/94704
69 lines
2.5 KiB
ReStructuredText
69 lines
2.5 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
|
|
----------------
|
|
|
|
* ``--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``).
|
|
* ``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>`_)
|
|
* ``--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>`_)
|
|
* ``--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>`_)
|
|
|
|
Breaking changes
|
|
----------------
|
|
|
|
COFF Improvements
|
|
-----------------
|
|
|
|
MinGW Improvements
|
|
------------------
|
|
|
|
MachO Improvements
|
|
------------------
|
|
|
|
WebAssembly Improvements
|
|
------------------------
|
|
|
|
Fixes
|
|
#####
|