81 lines
2.8 KiB
ReStructuredText
81 lines
2.8 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
|
|
----------------
|
|
* For AArch64, added support for ``-zgcs-report-dynamic``, enabling checks for
|
|
GNU GCS Attribute Flags in Dynamic Objects when GCS is enabled. Inherits value
|
|
from ``-zgcs-report`` (capped at ``warning`` level) unless user-defined,
|
|
ensuring compatibility with GNU ld linker.
|
|
|
|
* The default Hexagon architecture version in ELF object files produced by
|
|
lld is changed to v68. This change is only effective when the version is
|
|
not provided in the command line by the user and cannot be inferred from
|
|
inputs.
|
|
|
|
* ``--why-live=<glob>`` prints for each symbol matching ``<glob>`` a chain of
|
|
items that kept it live during garbage collection. This is inspired by the
|
|
Mach-O LLD feature of the same name.
|
|
|
|
* Linker script ``OVERLAY`` descriptions now support virtual memory regions
|
|
(e.g. ``>region``) and ``NOCROSSREFS``.
|
|
|
|
* Added ``--xosegment`` and ``--no-xosegment`` flags to control whether to place
|
|
executable-only and readable-executable sections in the same segment. The
|
|
default value is ``--no-xosegment``.
|
|
(`#132412 <https://github.com/llvm/llvm-project/pull/132412>`_)
|
|
|
|
* For AArch64, added support for the ``SHF_AARCH64_PURECODE`` section flag,
|
|
which indicates that the section only contains program code and no data.
|
|
An output section will only have this flag set if all input sections also
|
|
have it set. (`#125689 <https://github.com/llvm/llvm-project/pull/125689>`_,
|
|
`#134798 <https://github.com/llvm/llvm-project/pull/134798>`_)
|
|
|
|
* For AArch64 and ARM, added ``-zexecute-only-report``, which checks for
|
|
missing ``SHF_AARCH64_PURECODE`` and ``SHF_ARM_PURECODE`` section flags
|
|
on executable sections.
|
|
(`#128883 <https://github.com/llvm/llvm-project/pull/128883>`_)
|
|
|
|
Breaking changes
|
|
----------------
|
|
* Executable-only and readable-executable sections are now allowed to be placed
|
|
in the same segment by default. Pass ``--xosegment`` to lld in order to get
|
|
the old behavior back.
|
|
|
|
COFF Improvements
|
|
-----------------
|
|
|
|
MinGW Improvements
|
|
------------------
|
|
|
|
MachO Improvements
|
|
------------------
|
|
|
|
WebAssembly Improvements
|
|
------------------------
|
|
|
|
Fixes
|
|
#####
|