diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2016-08-24 17:38:40 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2016-08-24 17:38:40 +0000 |
commit | 9ecbd621ba20f59d814d3ddf46ac133748edd77d (patch) | |
tree | 5d6325368ba68ebb2622034f9005565fd5c28693 /docs | |
parent | eb67a071cac61790f5ef8dd6f9278cea7e46b6d0 (diff) | |
download | src-9ecbd621ba20f59d814d3ddf46ac133748edd77d.tar.gz src-9ecbd621ba20f59d814d3ddf46ac133748edd77d.zip |
Vendor import of lld release_39 branch r279477:vendor/lld/lldb-release_39-r279477vendor/lld/lld-release_390-r280324vendor/lld/lld-release_39-r279689
Notes
Notes:
svn path=/vendor/lld/dist/; revision=304767
svn path=/vendor/lld/lld-release_390-r280324/; revision=305296; tag=vendor/lld/lld-release_390-r280324
Diffstat (limited to 'docs')
-rw-r--r-- | docs/ReleaseNotes.rst | 93 |
1 files changed, 77 insertions, 16 deletions
diff --git a/docs/ReleaseNotes.rst b/docs/ReleaseNotes.rst index a257676cded5..5344fc4d2dad 100644 --- a/docs/ReleaseNotes.rst +++ b/docs/ReleaseNotes.rst @@ -5,9 +5,6 @@ LLD 3.9 Release Notes .. contents:: :local: -.. warning:: - These are in-progress notes for the upcoming LLVM 3.9 release. - Introduction ============ @@ -16,26 +13,90 @@ 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 -================================================= +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. -ELF Improvements +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 ---------------- -* Initial support for LTO. +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. -COFF Improvements ------------------ - -* Item 1. - -MachO Improvements ------------------- +Building LLVM Toolchain with LLD +-------------------------------- -* Item 1. +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. |