commit | f97e188d8eb7cc4a7f65e365a9c3d16b2e52aae0 | [log] [tgz] |
---|---|---|
author | Nico Weber <thakis@chromium.org> | Thu Feb 25 19:56:31 2021 -0500 |
committer | Copybara-Service <copybara-worker@google.com> | Fri Feb 26 22:04:14 2021 -0800 |
tree | 9205c0a1ba4d7cfdb3b8816001f22f9cd06ef73a | |
parent | 183315165e6b757c62ee03cf8b29ea8fb924f234 [diff] |
[lld/mac] Add some support for dynamic lookup symbols, and implement -U Dynamic lookup symbols are symbols that work like dynamic symbols in ELF: They're not bound to a dylib like normal Mach-O twolevel lookup symbols, but they live in a global pool and dyld resolves them against exported symbols from all loaded dylibs. This adds support for dynamical lookup symbols to lld/mac. They are represented as DylibSymbols with file set to nullptr. This also uses this support to implement the -U flag, which makes a specific symbol that's undefined at the end of the link a dynamic lookup symbol. For -U, it'd be sufficient to just to a pass over remaining undefined symbols at the end of the link and to replace them with dynamic lookup symbols then. But I'd like to use this code to implement flat_namespace too, and that will require real support for resolving dynamic lookup symbols in SymbolTable. So this patch adds this now already. While writing tests for this, I noticed that we didn't set N_WEAK_DEF in the symbol table for DylibSymbols, so this fixes that too. Differential Revision: https://reviews.llvm.org/D97521 GitOrigin-RevId: cafb6cd10c7434fdb541a40eda89fc51880f43c0
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
.