468663ddbb
Former-commit-id: 1d6753294b2993e1fbf92de9366bb9544db4189b
100 lines
3.7 KiB
ReStructuredText
100 lines
3.7 KiB
ReStructuredText
=======================
|
|
LLD 6.0.0 Release Notes
|
|
=======================
|
|
|
|
.. contents::
|
|
:local:
|
|
|
|
Introduction
|
|
============
|
|
|
|
This document contains the release notes for the lld linker, release 6.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 <http://llvm.org/releases/>`_.
|
|
|
|
Non-comprehensive list of changes in this release
|
|
=================================================
|
|
|
|
ELF Improvements
|
|
----------------
|
|
|
|
* A lot of bugs and compatibility issues have been identified and fixed as a
|
|
result of people using lld 5.0 as a standard system linker. In particular,
|
|
linker script and version script support has significantly improved that
|
|
it should be able to handle almost all scripts.
|
|
|
|
* A mitigation for Spectre v2 has been implemented. If you pass ``-z
|
|
retpolineplt``, lld uses RET instruction instead of JMP instruction in PLT.
|
|
The option is available for x86 and x86-64.
|
|
|
|
* Identical Code Folding (ICF) now de-duplicates .eh_frame entries, so lld now
|
|
generates slightly smaller outputs than before when you pass ``--icf=all``.
|
|
|
|
* Analysis for ``--as-needed`` is now done after garbage collection. If garbage
|
|
collector eliminates all sections that use some library, that library is
|
|
eliminated from DT_NEEDED tags. Previously, the analysis ran before garbage
|
|
collection.
|
|
|
|
* Size of code segment is now always rounded up to page size to make sure that
|
|
unused bytes at end of code segment is filled with trap instructions (such
|
|
as INT3) instead of zeros.
|
|
|
|
* lld is now able to generate Android-style compact dynamic relocation table.
|
|
You can turn on the feature by passing ``--pack-dyn-relocs=android``.
|
|
|
|
* Debug information is used in more cases when reporting errors.
|
|
|
|
* ``--gdb-index`` gets faster than before.
|
|
|
|
* String merging is now multi-threaded, which makes ``-O2`` faster.
|
|
|
|
* ``--hash-style=both`` is now default instead of ``--hash-style=sysv`` to
|
|
match the behavior of recent versions of GNU linkers.
|
|
|
|
* ARM PLT entries automatically use short or long variants.
|
|
|
|
* lld can now identify and patch a code sequence that triggers AArch64 errata 843419.
|
|
Add ``--fix-cortex-a53-843419`` to enable the feature.
|
|
|
|
* lld can now generate thunks for out of range branches.
|
|
|
|
* MIPS port now generates all output dynamic relocations using Elf_Rel format only.
|
|
|
|
* Added handling of the R_MIPS_26 relocation in case of N32/N64 ABIs and
|
|
generating proper PLT entries.
|
|
|
|
* The following options have been added: ``--icf=none`` ``-z muldefs``
|
|
``--plugin-opt`` ``--no-eh-frame-hdr`` ``--no-gdb-index``
|
|
``--orphan-handling={place,discard,warn,error}``
|
|
``--pack-dyn-relocs={none,android}`` ``--no-omagic``
|
|
``--no-print-gc-sections`` ``--ignore-function-address-equality`` ``-z
|
|
retpolineplt`` ``--print-icf-sections`` ``--no-pie``
|
|
|
|
COFF Improvements
|
|
-----------------
|
|
|
|
* A GNU ld style frontend for the COFF linker has been added for MinGW.
|
|
In MinGW environments, the linker is invoked with GNU ld style parameters;
|
|
which lld previously only supported when used as an ELF linker. When
|
|
a PE/COFF target is chosen, those parameters are rewritten into the
|
|
lld-link style parameters and the COFF linker is invoked instead.
|
|
|
|
* Initial support for the ARM64 architecture has been added.
|
|
|
|
* New ``--version`` flag.
|
|
|
|
* Significantly improved support for writing PDB Files.
|
|
|
|
* New ``--rsp-quoting`` flag, like ``clang-cl``.
|
|
|
|
* ``/manifestuac:no`` no longer incorrectly disables ``/manifestdependency:``.
|
|
|
|
* Only write ``.manifest`` files if ``/manifest`` is passed.
|
|
|
|
WebAssembly Improvements
|
|
------------------------
|
|
|
|
* Initial version of WebAssembly support has landed. You can invoke the
|
|
WebAssembly linker by ``wasm-ld``.
|