commit | 74cadfeb2ebb80939272953e6338ecc0e67ee863 | [log] [tgz] |
---|---|---|
author | Fangrui Song <i@maskray.me> | Wed Oct 18 08:56:17 2023 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Wed Oct 18 09:01:36 2023 -0700 |
tree | 9f8b3a998122af69c1f4471a0a056e36ef64d902 | |
parent | 85a264c7f80f6b6101acb60ada1d730e7dbd6ae8 [diff] |
[ELF] Merge copyLocalSymbols and demoteLocalSymbolsInDiscardedSections (#69425) Follow-up to #69295: In `Writer<ELFT>::run`, the symbol passes are flexible: they can be placed almost everywhere before `scanRelocations`, with a constraint that the `computeIsPreemptible` pass must be invoked for linker-defined non-local symbols. Merge copyLocalSymbols and demoteLocalSymbolsInDiscardedSections to simplify code: * Demoting local symbols can be made unconditional, not constrainted to /DISCARD/ uses due to performance concerns * `includeInSymtab` can be made faster * Make symbol passes close to each other * Decrease data cache misses due to saving an iteration over local symbols There is no speedup, likely due to the unconditional `dr->section` access in `demoteAndCopyLocalSymbols`. `gc-sections-tls.s` no longer reports an error because the TLS symbol is converted to an Undefined. GitOrigin-RevId: ec0e556e6708e1e979be271a74a03abd1b45496a
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.
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
.