commit | a506f2014bb9546cc6372699b149827cdc5eb752 | [log] [tgz] |
---|---|---|
author | Nico Weber <thakis@chromium.org> | Mon Mar 01 15:25:10 2021 -0500 |
committer | Copybara-Service <copybara-worker@google.com> | Thu Mar 18 00:31:11 2021 -0700 |
tree | 898d3ac6b8db7cc03e6733df790b2f7ef413df63 | |
parent | 4b9e67e8ca2ba883537c8fab05123752cf78d175 [diff] |
[lld/mac] Add support for -flat_namespace -flat_namespace makes lld emit binaries that use name lookup that's more in line with other POSIX systems: Instead of looking up symbols as (dylib,name) pairs by dyld, they're instead looked up just by name. -flat_namespace has three effects: 1. MH_TWOLEVEL and MH_NNOUNDEFS are no longer set in the Mach-O header 2. All symbols use BIND_SPECIAL_DYLIB_FLAT_LOOKUP as ordinal 3. When a dylib is added to the link, its dependent dylibs are also added, so that lld can verify that no undefined symbols remain at the end of a link with -flat_namespace. These transitive dylibs are added for symbol resolution, but they are not emitted in LC_LOAD_COMMANDs. -undefined with -flat_namespace still isn't implemented. Before this change, it was impossible to hit that combination because -flat_namespace caused a diagnostic. Now that it no longer does, emit a dedicated temporary diagnostic when both flags are used. Differential Revision: https://reviews.llvm.org/D97641 GitOrigin-RevId: 8174f33dc9bf34e1cde57931e2e028bd4d49c98e
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
.