llvm/lld
Nico Weber 9721197520 [lld/mac] Set branchRange a bit more carefully
- Don't subtract thunkSize from branchRange. Most places care about
  the actual maximal branch range. Subtract thunkSize in the one place
  that wants to leave room for a thunk.
- Set it to 0x800_0000 instead of 0xFF_FFFF
- Subtract 4 for the positive branch direction since it's a
  two's complement 24bit number sign-extended mutiplied by 4,
  so its range is -0x800_0000..+0x7FF_FFFC
- Make boundary checks include the boundary values

This doesn't make a huge difference in practice. It's preparation
for a "real" fix for PR51578 -- but it also lets the repro in comment 0
in that bug place one more thunk before hitting the TODO.

Differential Revision: https://reviews.llvm.org/D108897
2021-08-30 12:36:06 -04:00
..
cmake/modules
COFF [lld/COFF] Ignore /LTCG, /LTCG:, /LTCGOUT:, /ILK: flags 2021-08-27 09:13:30 -04:00
Common [lld] Remove unused LLD_REPOSITORY 2021-08-04 13:04:10 -07:00
docs [ELF] Add --export-dynamic-symbol-list 2021-08-03 09:01:03 -07:00
ELF [ELF] Simplify addGotEntry. NFC 2021-08-29 13:40:08 -07:00
include/lld [lld] Replace LLVM_ATTRIBUTE_NORETURN with [[noreturn]] 2021-07-27 18:51:17 -07:00
lib [CMake][gn] lldMachO=>lldMachOOld, lldMachO2=>lldMachO 2021-08-04 18:52:41 -07:00
MachO [lld/mac] Set branchRange a bit more carefully 2021-08-30 12:36:06 -04:00
MinGW [LLD] [MinGW] Add more options for disabling flags in the executable 2021-08-12 13:27:09 +03:00
test [lld/mac] Don't assert on -dead_strip + arm64 range extension thunks 2021-08-27 23:27:45 -04:00
tools/lld [CMake][gn] lldMachO=>lldMachOOld, lldMachO2=>lldMachO 2021-08-04 18:52:41 -07:00
unittests [CMake][gn] lldMachO=>lldMachOOld, lldMachO2=>lldMachO 2021-08-04 18:52:41 -07:00
utils
wasm [lld][WebAssembly] Handle weakly defined symbols in shared libraries. 2021-08-19 19:25:49 -04:00
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt
CODE_OWNERS.TXT
LICENSE.TXT
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.