commit | a3b1ae6ead5befb332095a05697603550622fb02 | [log] [tgz] |
---|---|---|
author | Fangrui Song <i@maskray.me> | Mon Jan 22 09:09:46 2024 -0800 |
committer | Copybara-Service <copybara-worker@google.com> | Mon Jan 22 09:10:47 2024 -0800 |
tree | b9e10c1efbf4ceaec6cc8c68929b0d7c516b581c | |
parent | 60d3e68e98d01cffa54ecedf605ccaaea0ecebe6 [diff] |
[ELF] Add internal InputFile (#78944) Based on https://reviews.llvm.org/D45375 . Introduce a new InputFile kind `InternalKind`, use it for * `ctx.internalFile`: for linker-defined symbols and some synthesized `Undefined` * `createInternalFile`: for symbol assignments and --defsym I picked "internal" instead of "synthetic" to avoid confusion with SyntheticSection. Currently a symbol's file is one of: nullptr, ObjKind, SharedKind, BitcodeKind, BinaryKind. Now it's non-null (I plan to add an `assert(file)` to Symbol::Symbol and change `toString(const InputFile *)` separately). Debugging and error reporting gets improved. The immediate user-facing difference is more descriptive "File" column in the --cref output. This patch may unlock further simplification. Currently each symbol assignment gets its own `createInternalFile(cmd->location)`. Two symbol assignments in a linker script do not share the same file. Making the file the same would be nice, but would require non trivial code. GitOrigin-RevId: 43b13341fbbb718223484a79a539a3c13062f39f
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
.