llvm-capstone/lld
Martin Storsjo 98ff9f845d [COFF] Sort .reloc before all other discardable sections
If a binary is stripped, which can remove discardable sections (except
for the .reloc section, which also is marked as discardable as it isn't
loaded at runtime, only read by the loader), the .reloc section should
be first of them, in order not to create gaps in the image.

Previously, binaries with relocations were broken if they were stripped
by GNU binutils strip. Trying to execute such binaries produces an error
about "xx is not a valid win32 application".

This fixes GNU binutils bug 23348.

Prior to SVN r329370 (which didn't intend to have functional changes),
the code for moving discardable sections to the end didn't clearly
express how other discardable sections should be ordered compared to
.reloc, but the change retained the exact same end result as before.

After SVN r329370, the code (and comments) more clearly indicate that
it tries to make the .reloc section the absolutely last one; this patch
changes that.

This matches how GNU binutils ld sorts .reloc compared to dwarf debug
info sections.

Differential Revision: https://reviews.llvm.org/D49351

Signed-off-by: Martin Storsjö <martin@martin.st>
llvm-svn: 337598
2018-07-20 18:43:35 +00:00
..
cmake/modules [CMake] Properly conditionalize installation of lld libraries 2018-03-09 13:09:36 +00:00
COFF [COFF] Sort .reloc before all other discardable sections 2018-07-20 18:43:35 +00:00
Common [LTO] Errors in LLVM backend should manifest as lld errors 2018-07-02 21:01:43 +00:00
docs ELF: Implement --icf=safe using address-significance tables. 2018-07-18 22:49:31 +00:00
ELF [ELF][HEXAGON] Add support for R_HEX_B15_PCREL 2018-07-19 20:27:43 +00:00
include/lld [Darwin] Use errorHandler from liblldCommon 2018-06-12 02:34:04 +00:00
lib [Darwin] Do not error on '-lto_library' option 2018-06-13 18:59:14 +00:00
MinGW [MinGW] Implement the GNU ld options -S/--strip-debug 2018-06-29 06:08:31 +00:00
test [COFF] Sort .reloc before all other discardable sections 2018-07-20 18:43:35 +00:00
tools/lld Add wasm-ld to help text Improve error text 2018-07-17 16:34:48 +00:00
unittests [Darwin] Use errorHandler from liblldCommon 2018-06-12 02:34:04 +00:00
utils Add a script to run various benchmarks and send the result to lnt. 2017-11-14 16:40:30 +00:00
wasm [WebAssembly] Fix archive member display in error messages 2018-07-18 21:46:09 +00:00
.arcconfig [lld] Set up .arcconfig to point to new Diffusion LLD repository 2017-12-06 20:56:23 +00:00
.clang-format
.gitignore
CMakeLists.txt [WebAssembly] Initial wasm linker implementation 2017-11-17 18:14:09 +00:00
CODE_OWNERS.TXT [WebAssembly] Initial wasm linker implementation 2017-11-17 18:14:09 +00:00
LICENSE.TXT Update copyright year to 2018. 2018-06-18 12:22:17 +00:00
README.md Note that the test .tar.xz has been updated. 2017-12-22 19:37:32 +00:00

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.