commit | b52a1e96858849d777bc77a283ec335fc7c14cb5 | [log] [tgz] |
---|---|---|
author | Parth Arora <quic_partaror@quicinc.com> | Mon Mar 25 16:11:21 2024 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Mon Mar 25 16:18:14 2024 -0700 |
tree | 0c511eba188edb09f66e12e3dcd18cee5596014f | |
parent | 236f6c97daf1636d08d98fb70137731beae45411 [diff] |
[ELF] Fix unnecessary inclusion of unreferenced provide symbols Previously, linker was unnecessarily including a PROVIDE symbol which was referenced by another unused PROVIDE symbol. For example, if a linker script contained the below code and 'not_used_sym' provide symbol is not included, then linker was still unnecessarily including 'foo' PROVIDE symbol because it was referenced by 'not_used_sym'. This commit fixes this behavior. PROVIDE(not_used_sym = foo) PROVIDE(foo = 0x1000) This commit fixes this behavior by using dfs-like algorithm to find all the symbols referenced in provide expressions of included provide symbols. This commit also fixes the issue of unused section not being garbage-collected if a symbol of the section is referenced by an unused PROVIDE symbol. Closes #74771 Closes #84730 Co-authored-by: Fangrui Song <i@maskray.me> GitOrigin-RevId: ebb326a51fec37b5a47e5702e8ea157cd4f835cd
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
.