forked from OSchip/llvm-project
a2404f11c7
Previously, our unwind info finalization logic assumed that the LSDA section referenced by `__compact_unwind` was already finalized before `__TEXT,__unwind_info` itself. However, that assumption could be broken by the use of `-rename_section` -- it could be (and is) used to move `__gcc_except_tab` it into a different segment later in the file. (__TEXT is always the first non-zerofill segment, so any rename basically guarantees that the section will be ordered after `__unwind_info`.) To handle this case, we compare LSDA relocations instead of their final values in `UnwindInfoSection::finalize()`, and we actually relocate those LSDAs in `UnwindInfoSection::writeTo()`. In order to do this, we need an easy way to track which Symbol a given CUE corresponds to. My solution was to change our `cuPtrVector` into a vector of indices, with each index used for both the symbols vector (`symbolsVec`) as well as the CUE vector (`cuVector`). This change seems perf neutral. Numbers for linking chromium_framework on my 16 core Mac Pro: base diff difference (95% CI) sys_time 1.248 ± 0.025 1.245 ± 0.026 [ -1.3% .. +0.8%] user_time 3.588 ± 0.045 3.587 ± 0.037 [ -0.6% .. +0.5%] wall_time 4.605 ± 0.069 4.595 ± 0.069 [ -1.0% .. +0.5%] samples 42 26 Reviewed By: #lld-macho, oontvoo Differential Revision: https://reviews.llvm.org/D113582 |
||
---|---|---|
.. | ||
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
.