mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-25 04:51:38 +00:00

Such pointers are often used by the core parts of mingw-w64, to locally define a function that might have been referred to with dllimport. (MSVC style linkers can automatically provide such pointers, if there are undefined references to `__imp_<func>` left but a definition of `<func>` is available - although this prints the warning LNK4217. GNU ld doesn't do this, so in mingw-w64, such things are generally handled by manually providing the relevant `__imp_` pointers.) Make sure that a full LTO build, that does LTO of both the `__imp_` pointer and the object file referencing it, successfully resolves such symbols. This solution admittedly probably reduces the effect of the LTO compilation if there would happen to be `__imp_` prefixed symbols included, in LTO objects, that aren't actually used. Such symbols are mostly used in the base toolchain, not often in user code, and usually only the relevant object files are linked in anyway. This fixes https://github.com/llvm/llvm-project/issues/57982.
LLVM Linker (lld)
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.
Benchmarking
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
.