diff options
| author | Lukasz Anforowicz <lukasza@chromium.org> | 2023-08-08 19:47:36 +0000 |
|---|---|---|
| committer | Lukasz Anforowicz <lukasza@chromium.org> | 2023-08-29 19:02:33 +0000 |
| commit | e6dddbda35399c08c7940477c363002ab1d276da (patch) | |
| tree | cb5db82f42ddf7ec5b1c7745dd252d31cba8adba /compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp | |
| parent | c587fd418521c841f8683c58872293475b8d9b3b (diff) | |
| download | rust-e6dddbda35399c08c7940477c363002ab1d276da.tar.gz rust-e6dddbda35399c08c7940477c363002ab1d276da.zip | |
Preserve `___asan_globals_registered` symbol during LTO.
Fixes https://github.com/rust-lang/rust/issues/113404
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp')
| -rw-r--r-- | compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp index 6af5c24c458..308c935edf9 100644 --- a/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp +++ b/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp @@ -1058,6 +1058,13 @@ extern "C" void LLVMRustPrintPasses() { extern "C" void LLVMRustRunRestrictionPass(LLVMModuleRef M, char **Symbols, size_t Len) { auto PreserveFunctions = [=](const GlobalValue &GV) { + // Preserve LLVM-injected, ASAN-related symbols. + // See also https://github.com/rust-lang/rust/issues/113404. + if (GV.getName() == "___asan_globals_registered") { + return true; + } + + // Preserve symbols exported from Rust modules. for (size_t I = 0; I < Len; I++) { if (GV.getName() == Symbols[I]) { return true; |
