forked from OSchip/llvm-project
2d48b19136
When comparing relocations against two symbols, ICF's equalsConstant() did not look at the value of the two symbols. With subsections_via_symbols, the value is usually 0 but not always: In particular, it isn't 0 for constants in string and literal sections. Since we ignored the value, comparing two constant string symbols or two literal symbols always compared the 0th's element, so functions in the same TU always compared as equal. This can cause mislinks, and, with -dead_strip, crashes. Fixes PR52349, see that bug for lots of details and examples of mislinks. While here, make the existing assembly in icf-literals.s a bit more realistic (use leaq instead of movq with strings, and use foo(%rip) instead of foo@gotpcrel(%rip)). This has no interesting effect, it just maybe makes the test look a bit less surprising. Differential Revision: https://reviews.llvm.org/D112862 |
||
---|---|---|
.. | ||
COFF | ||
Common | ||
ELF | ||
MachO | ||
MinGW | ||
cmake/modules | ||
docs | ||
include/lld | ||
lib | ||
test | ||
tools/lld | ||
unittests | ||
utils | ||
wasm | ||
.clang-format | ||
.clang-tidy | ||
.gitignore | ||
CMakeLists.txt | ||
CODE_OWNERS.TXT | ||
LICENSE.TXT | ||
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
.