Skip to content

Commit 51613c7

Browse files
MaskRaygithub-actions[bot]
authored andcommitted
Automerge: ReleaseNotes: add lld/ELF notes
Move linker script changes to the middle and target-specific options/behavior changes to the end.
2 parents e755bdf + 8983b22 commit 51613c7

File tree

1 file changed

+26
-18
lines changed

1 file changed

+26
-18
lines changed

lld/docs/ReleaseNotes.rst

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -28,43 +28,51 @@ ELF Improvements
2828
* Added ``-z dynamic-undefined-weak`` to make undefined weak symbols dynamic
2929
when the dynamic symbol table is present.
3030
(`#143831 <https://github.com/llvm/llvm-project/pull/143831>`_)
31-
32-
* For AArch64, added support for ``-zgcs-report-dynamic``, enabling checks for
33-
GNU GCS Attribute Flags in Dynamic Objects when GCS is enabled. Inherits value
34-
from ``-zgcs-report`` (capped at ``warning`` level) unless user-defined,
35-
ensuring compatibility with GNU ld linker.
36-
37-
* The default Hexagon architecture version in ELF object files produced by
38-
lld is changed to v68. This change is only effective when the version is
39-
not provided in the command line by the user and cannot be inferred from
40-
inputs.
41-
31+
* For ``-z undefs`` (default for ``-shared``), relocations referencing undefined
32+
strong symbols now behave like relocations referencing undefined weak symbols.
4233
* ``--why-live=<glob>`` prints for each symbol matching ``<glob>`` a chain of
4334
items that kept it live during garbage collection. This is inspired by the
4435
Mach-O LLD feature of the same name.
36+
* ``--thinlto-distributor=`` and ``--thinlto-remote-compiler=`` options are
37+
added to support Integrated Distributed ThinLTO.
38+
(`#142757 <https://github.com/llvm/llvm-project/pull/142757>`_)
4539

4640
* Linker script ``OVERLAY`` descriptions now support virtual memory regions
4741
(e.g. ``>region``) and ``NOCROSSREFS``.
48-
49-
* Added ``--xosegment`` and ``--no-xosegment`` flags to control whether to place
50-
executable-only and readable-executable sections in the same segment. The
51-
default value is ``--no-xosegment``.
42+
* When the last ``PT_LOAD`` segment is executable and includes BSS sections,
43+
its ``p_memsz`` member is now correct.
44+
(`#139207 <https://github.com/llvm/llvm-project/pull/139207>`_)
45+
* Spurious ``ASSERT`` errors before the layout converges are now fixed.
46+
47+
* For ARM and AArch64, ``--xosegment`` and ``--no-xosegment`` control whether
48+
to place executable-only and readable-executable sections in the same
49+
segment. The default option is ``--no-xosegment``.
5250
(`#132412 <https://github.com/llvm/llvm-project/pull/132412>`_)
53-
5451
* For AArch64, added support for the ``SHF_AARCH64_PURECODE`` section flag,
5552
which indicates that the section only contains program code and no data.
5653
An output section will only have this flag set if all input sections also
5754
have it set. (`#125689 <https://github.com/llvm/llvm-project/pull/125689>`_,
5855
`#134798 <https://github.com/llvm/llvm-project/pull/134798>`_)
59-
6056
* For AArch64 and ARM, added ``-zexecute-only-report``, which checks for
6157
missing ``SHF_AARCH64_PURECODE`` and ``SHF_ARM_PURECODE`` section flags
6258
on executable sections.
6359
(`#128883 <https://github.com/llvm/llvm-project/pull/128883>`_)
64-
60+
* For AArch64, ``-z nopac-plt`` has been added.
6561
* For AArch64 and X86_64, added ``--branch-to-branch``, which rewrites branches
6662
that point to another branch instruction to instead branch directly to the
6763
target of the second instruction. Enabled by default at ``-O2``.
64+
* For AArch64, added support for ``-zgcs-report-dynamic``, enabling checks for
65+
GNU GCS Attribute Flags in Dynamic Objects when GCS is enabled. Inherits value
66+
from ``-zgcs-report`` (capped at ``warning`` level) unless user-defined,
67+
ensuring compatibility with GNU ld linker.
68+
* The default Hexagon architecture version in ELF object files produced by
69+
lld is changed to v68. This change is only effective when the version is
70+
not provided in the command line by the user and cannot be inferred from
71+
inputs.
72+
* For LoongArch, the initial-exec to local-exec TLS optimization has been implemented.
73+
* For RISCV, an oscillation bug due to call relaxation is now fixed.
74+
(`#142899 <https://github.com/llvm/llvm-project/pull/142899>`_)
75+
* For x86-64, the ``.ltext`` section is now placed before ``.rodata``.
6876

6977
Breaking changes
7078
----------------

0 commit comments

Comments
 (0)