This brings back the original version of D81359.
I have found several use cases now.
* Unlike GNU ld, LLD's relocation processing is one pass. If we decide to
optimize(relax) R_X86_64_{,REX_}GOTPCRELX, we will suppress GOT generation and
cannot undo the decision later. Optimizing R_X86_64_REX_GOTPCRELX can usually
make it easy to hit `relocation R_X86_64_REX_GOTPCRELX out of range` because
the distance to GOT is usually shorter. Without --no-relax, the user has to
recompile with `-Wa,-mrelax-relocations=no`.
* The option would help during my investigationg of the root cause of https://git.kernel.org/linus/09e43968db40c33a73e9ddbfd937f46d5c334924
* There is need for relaxation for AArch64 & RISC-V. Implementing this for
x86-64 improves consistency with little target-specific cost (two-line
X86_64.cpp change).
Reviewed By: alexander-shaposhnikov
Differential Revision: https://reviews.llvm.org/D113615
66 lines
1.7 KiB
ReStructuredText
66 lines
1.7 KiB
ReStructuredText
========================
|
|
lld 14.0.0 Release Notes
|
|
========================
|
|
|
|
.. contents::
|
|
:local:
|
|
|
|
.. warning::
|
|
These are in-progress notes for the upcoming LLVM 14.0.0 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 14.0.0.
|
|
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
|
|
----------------
|
|
|
|
* ``--export-dynamic-symbol-list`` has been added.
|
|
(`D107317 <https://reviews.llvm.org/D107317>`_)
|
|
* ``--why-extract`` has been added to query why archive members/lazy object files are extracted.
|
|
(`D109572 <https://reviews.llvm.org/D109572>`_)
|
|
* ``e_entry`` no longer falls back to the address of ``.text`` if the entry symbol does not exist.
|
|
Instead, a value of 0 will be written.
|
|
(`D110014 <https://reviews.llvm.org/D110014>`_)
|
|
|
|
Architecture specific changes:
|
|
|
|
* The x86-32 port now supports TLSDESC (``-mtls-dialect=gnu2``).
|
|
(`D112582 <https://reviews.llvm.org/D112582>`_)
|
|
* For x86-64, ``--no-relax`` now suppresses ``R_X86_64_GOTPCRELX`` and
|
|
``R_X86_64_REX_GOTPCRELX`` GOT optimization
|
|
(`D113615 <https://reviews.llvm.org/D113615>`_)
|
|
|
|
Breaking changes
|
|
----------------
|
|
|
|
* ...
|
|
|
|
COFF Improvements
|
|
-----------------
|
|
|
|
* ...
|
|
|
|
MinGW Improvements
|
|
------------------
|
|
|
|
* ...
|
|
|
|
MachO Improvements
|
|
------------------
|
|
|
|
* Item 1.
|
|
|
|
WebAssembly Improvements
|
|
------------------------
|
|
|