llvm-project/lld
Fangrui Song 7c426fb1a6 [ELF] Support INSERT [AFTER|BEFORE] for orphan sections
D43468+D44380 added INSERT [AFTER|BEFORE] for non-orphan sections. This patch
makes INSERT work for orphan sections as well.

`SECTIONS {...} INSERT [AFTER|BEFORE] .foo` does not set `hasSectionCommands`, so the result
will be similar to a regular link without a linker script. The differences when `hasSectionCommands` is set include:

* image base is different
* -z noseparate-code/-z noseparate-loadable-segments are unavailable
* some special symbols such as `_end _etext _edata` are not defined

The behavior is similar to GNU ld:
INSERT is not considered an external linker script.

This feature makes the section layout more flexible. It can be used to:

* Place .nv_fatbin before other readonly SHT_PROGBITS sections to mitigate relocation overflows.
* Disturb the layout to expose address sensitive application bugs.

Reviewed By: grimar

Differential Revision: https://reviews.llvm.org/D74375
2020-02-12 08:21:52 -08:00
..
COFF [lld] Replace SmallStr.str().str() with std::string conversion operator. 2020-01-29 21:30:21 -08:00
Common Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
ELF [ELF] Support INSERT [AFTER|BEFORE] for orphan sections 2020-02-12 08:21:52 -08:00
MinGW [lld] Replace SmallStr.str().str() with std::string conversion operator. 2020-01-29 21:30:21 -08:00
cmake/modules
docs Bump the trunk major version to 11 2020-01-15 13:38:01 +01:00
include/lld Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
lib Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
test [ELF] Support INSERT [AFTER|BEFORE] for orphan sections 2020-02-12 08:21:52 -08:00
tools/lld Make it possible to redirect not only errs() but also outs() 2019-11-18 11:18:06 +09:00
unittests Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
utils Python 2/3 compatibility 2019-03-20 07:42:13 +00:00
wasm [lld][WebAssembly] Fail if bitcode objects are pulled in after LTO 2020-02-11 17:36:15 -08:00
.arcconfig
.clang-format
.gitignore
CMakeLists.txt try to unbreak build after 4b6d9ac392 2020-01-16 10:12:35 -05:00
CODE_OWNERS.TXT
LICENSE.TXT Fix typos throughout the license files that somehow I and my reviewers 2019-01-21 09:52:34 +00:00
README.md

README.md

LLVM Linker (lld)

This directory and its subdirectories contain source code for the LLVM Linker, a modular cross platform linker which is built as part of the LLVM compiler infrastructure project.

lld is open source software. You may freely distribute it under the terms of the license agreement found in LICENSE.txt.

Benchmarking

In order to make sure various developers can evaluate patches over the same tests, we create a collection of self contained programs.

It is hosted at https://s3-us-west-2.amazonaws.com/linker-tests/lld-speed-test.tar.xz

The current sha256 is 10eec685463d5a8bbf08d77f4ca96282161d396c65bd97dc99dbde644a31610f.