llvm-project/lld
Peter Smith 1811e48b7b [ELF] Fix ARM and Thumb V7PILongThunk overflow behavior.
When the range between the source and target of a V7PILongThunk exceeded an
int32 we would trigger a relocation out of range error for the
R_ARM_MOVT_PREL or R_ARM_THM_MOVT_PREL relocation. This case can happen when
linking the linux kernel as it is loaded above 0xf0000000.

There are two parts to the fix.
- Remove the overflow check for R_ARM_MOVT_PREL or R_ARM_THM_MOVT_PREL. The
ELF for the ARM Architecture document defines these relocations as having no
overflow checking so the check was spurious.
- Use int64_t for the offset calculation, in line with similar thunks so
that PC + (S - P) < 32-bits. This results in less surprising disassembly.

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

llvm-svn: 350836
2019-01-10 16:08:23 +00:00
..
COFF lld-link: Add help strings for /manifest, /nodefaultlib, /noentry; tweak manifest help strings 2019-01-09 19:18:03 +00:00
Common Set MAttrs in LTO mode 2018-11-01 20:02:49 +00:00
ELF [ELF] Fix ARM and Thumb V7PILongThunk overflow behavior. 2019-01-10 16:08:23 +00:00
MinGW [MinGW] Expand comment for MinGW driver. NFC. 2019-01-05 10:43:59 +00:00
cmake/modules [CMake] Properly conditionalize installation of lld libraries 2018-03-09 13:09:36 +00:00
docs [docs] Add a known limitation to the comment about lld supporting GCC/MinGW object files. NFC. 2019-01-05 10:44:03 +00:00
include/lld [WebAssembly] Add support for the event section 2018-12-08 06:17:43 +00:00
lib Fix clang -Wimplicit-fallthrough warnings across llvm, NFC 2018-11-01 19:54:45 +00:00
test [ELF] Fix ARM and Thumb V7PILongThunk overflow behavior. 2019-01-10 16:08:23 +00:00
tools/lld Fix typo in error message. NFC. 2018-09-13 15:37:13 +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] Instruction renaming 2019-01-08 06:25:55 +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

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.