mirror of
https://github.com/opnsense/src.git
synced 2026-03-21 02:10:09 -04:00
102 lines
3.4 KiB
ReStructuredText
102 lines
3.4 KiB
ReStructuredText
======================
|
|
LLD 3.9 Release Notes
|
|
======================
|
|
|
|
.. contents::
|
|
:local:
|
|
|
|
Introduction
|
|
============
|
|
|
|
This document contains the release notes for the LLD linker, release 3.9.
|
|
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/>`_.
|
|
|
|
What's new in ELF Support?
|
|
==========================
|
|
|
|
LLD 3.9 is a major milestone for us. It is the first release that can
|
|
link real-world large userland programs, including LLVM/Clang/LLD
|
|
themselves. In fact, for example, it can now be used to produce most
|
|
userland programs distributed as part of FreeBSD.
|
|
|
|
Many contributors have joined to the project to develop new features,
|
|
port it to new architectures and fix issues since the last release.
|
|
|
|
Link-Time Optimization
|
|
----------------------
|
|
|
|
Initial support for LTO has been added. It is compatible with
|
|
`the LLVM gold plugin <http://llvm.org/docs/GoldPlugin.html>`_ in terms of
|
|
command line flags and input file format so that LLD is usable as a
|
|
drop-in replacement for GNU gold. LTO is implemented as a native
|
|
feature unlike the GNU gold's plugin mechanism.
|
|
|
|
Identical Code Folding
|
|
----------------------
|
|
|
|
LLD 3.9 can now merge identical code sections to produce smaller
|
|
output files. It is expected to be used with ``-ffunction-sections``.
|
|
|
|
Symbol Versioning
|
|
-----------------
|
|
|
|
LLD 3.9 is able to link against versioned symbols as well as produce
|
|
versioned symbols. Both the original Sun's symbol versioning scheme
|
|
and the GNU extension are supported.
|
|
|
|
New Targets
|
|
-----------
|
|
|
|
LLD has expanded support for new targets, including ARM/Thumb, the x32
|
|
ABI and MIPS N64 ABI, in addition to the existing support for x86,
|
|
x86-64, MIPS, PowerPC and PPC64.
|
|
|
|
TLS Relocation Optimizations
|
|
----------------------------
|
|
|
|
The ELF ABI specification of the thread-local variable define a few
|
|
peephole optimizations linkers can do by rewriting instructions at the
|
|
link-time to reduce run-time overhead to access TLS variables. That
|
|
feature has been implemented.
|
|
|
|
New Linker Flags
|
|
----------------
|
|
|
|
Many command line options have been added in this release, including:
|
|
|
|
- Symbol resolution and output options: ``-Bsymbolic-functions``,
|
|
``-export-dynamic-symbol``, ``-image-base``, ``-pie``, ``-end-lib``,
|
|
``-start-lib``, ``-build-id={md5,sha1,none,0x<hexstring>}``.
|
|
|
|
- Symbol versioning option: ``-dynamic-list``.
|
|
|
|
- LTO options: ``-lto-O``, ``-lto-aa-pipeline``, ``-lto-jobs``,
|
|
``-lto-newpm-passes``, ``-plugin``, ``-plugin-eq``, ``-plugin-opt``,
|
|
``-plugin-opt-eq``, ``-disable-verify``, ``-mllvm``.
|
|
|
|
- Driver optionss: ``-help``, ``-version``, ``-unresolved-symbols``.
|
|
|
|
- Debug options: ``-demangle``, ``-reproduce``, ``-save-temps``,
|
|
``-strip-debug``, ``-trace``, ``-trace-symbol``,
|
|
``-warn-execstack``.
|
|
|
|
- Exception handling option: ``-eh-frame-hdr``.
|
|
|
|
- Identical Code Folding option: ``-icf``.
|
|
|
|
Changes to the MIPS Target
|
|
--------------------------
|
|
|
|
* Added support for MIPS N64 ABI.
|
|
* Added support for TLS relocations for both O32 and N64 MIPS ABIs.
|
|
|
|
Building LLVM Toolchain with LLD
|
|
--------------------------------
|
|
|
|
A new CMake variable, ``LLVM_ENABLE_LLD``, has been added to use LLD
|
|
to build the LLVM toolchain. If the varaible is true, ``-fuse-ld=lld``
|
|
option will be added to linker flags so that ``ld.lld`` is used
|
|
instead of default ``ld``. Because ``-fuse-ld=lld`` is a new compiler
|
|
driver option, you need Clang 3.8 or newer to use the feature.
|