diff options
| author | Kostya Serebryany <kcc@google.com> | 2012-11-20 13:11:32 +0000 |
|---|---|---|
| committer | Kostya Serebryany <kcc@google.com> | 2012-11-20 13:11:32 +0000 |
| commit | dc4cb2b736817dbbd461586ac1f5dd5b1531e9d4 (patch) | |
| tree | 9ba6765ba9cad6475b33cb741094d2bcff388b4d /llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp | |
| parent | b3bd605ffab292aded81e2c6c4f410cbaf1aed76 (diff) | |
| download | bcm5719-llvm-dc4cb2b736817dbbd461586ac1f5dd5b1531e9d4.tar.gz bcm5719-llvm-dc4cb2b736817dbbd461586ac1f5dd5b1531e9d4.zip | |
[asan] don't instrument linker-initialized globals even with external linkage in -asan-initialization-order mode
llvm-svn: 168367
Diffstat (limited to 'llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp')
| -rw-r--r-- | llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp index aad31b4c6ed..4d5bb19aa84 100644 --- a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp +++ b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp @@ -364,11 +364,9 @@ void AddressSanitizer::instrumentMop(Instruction *I) { if (!ClInitializers) return; // If a global variable does not have dynamic initialization we don't - // have to instrument it. However, if a global has external linkage, we - // assume it has dynamic initialization, as it may have an initializer - // in a different TU. - if (G->getLinkage() != GlobalVariable::ExternalLinkage && - !DynamicallyInitializedGlobals.Contains(G)) + // have to instrument it. However, if a global does not have initailizer + // at all, we assume it has dynamic initializer (in other TU). + if (G->hasInitializer() && !DynamicallyInitializedGlobals.Contains(G)) return; } } |

