[PATCH] D14962: [ASAN] Add doFinalization to reset state
Keno Fischer via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 24 11:06:25 PST 2015
loladiro created this revision.
loladiro added a reviewer: kcc.
loladiro added a subscriber: llvm-commits.
loladiro set the repository for this revision to rL LLVM.
If the same pass manager is used for multiple modules ASAN complains about GlobalsMD being initialized twice. Fix this by resetting GlobalsMD in a new doFinalization method to allow this use case.
Repository:
rL LLVM
http://reviews.llvm.org/D14962
Files:
lib/Transforms/Instrumentation/AddressSanitizer.cpp
Index: lib/Transforms/Instrumentation/AddressSanitizer.cpp
===================================================================
--- lib/Transforms/Instrumentation/AddressSanitizer.cpp
+++ lib/Transforms/Instrumentation/AddressSanitizer.cpp
@@ -280,6 +280,11 @@
GlobalsMetadata() : inited_(false) {}
+ void reset() {
+ inited_ = false;
+ Entries.clear();
+ }
+
void init(Module &M) {
assert(!inited_);
inited_ = true;
@@ -450,6 +455,7 @@
bool maybeInsertAsanInitAtFunctionEntry(Function &F);
void markEscapedLocalAllocas(Function &F);
bool doInitialization(Module &M) override;
+ bool doFinalization(Module &M) override;
static char ID; // Pass identification, replacement for typeid
DominatorTree &getDominatorTree() const { return *DT; }
@@ -1506,6 +1512,11 @@
return true;
}
+bool AddressSanitizer::doFinalization(Module &M) {
+ GlobalsMD.reset();
+ return false;
+}
+
bool AddressSanitizer::maybeInsertAsanInitAtFunctionEntry(Function &F) {
// For each NSObject descendant having a +load method, this method is invoked
// by the ObjC runtime before any of the static constructors is called.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D14962.41066.patch
Type: text/x-patch
Size: 1155 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151124/9f8517bf/attachment.bin>
More information about the llvm-commits
mailing list