summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Instrumentation
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2011-11-23 02:10:54 +0000
committerKostya Serebryany <kcc@google.com>2011-11-23 02:10:54 +0000
commit8b5c7a56a34ed560737ed7aed80b542556a4971d (patch)
treedcccdc9fe2e372ad091636b0c89959090fff5870 /llvm/lib/Transforms/Instrumentation
parent2d988f0f05db22d0771d31e5839ed6df01e8ac19 (diff)
downloadbcm5719-llvm-8b5c7a56a34ed560737ed7aed80b542556a4971d.tar.gz
bcm5719-llvm-8b5c7a56a34ed560737ed7aed80b542556a4971d.zip
[asan] do not instrument threadlocal globals, this is buggy
llvm-svn: 145092
Diffstat (limited to 'llvm/lib/Transforms/Instrumentation')
-rw-r--r--llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
index e12da867238..b6175396d36 100644
--- a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
+++ b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
@@ -455,6 +455,11 @@ bool AddressSanitizer::insertGlobalRedzones(Module &M) {
G->getLinkage() != GlobalVariable::PrivateLinkage &&
G->getLinkage() != GlobalVariable::InternalLinkage)
continue;
+ // Two problems with thread-locals:
+ // - The address of the main thread's copy can't be computed at link-time.
+ // - Need to poison all copies, not just the main thread's one.
+ if (G->isThreadLocal())
+ continue;
// For now, just ignore this Alloca if the alignment is large.
if (G->getAlignment() > RedzoneSize) continue;
@@ -787,6 +792,7 @@ void AddressSanitizer::PoisonStack(const ArrayRef<AllocaInst*> &AllocaVec,
// Workaround for bug 11395: we don't want to instrument stack in functions
// with large assembly blobs (32-bit only), otherwise reg alloc may crash.
+// FIXME: remove once the bug 11395 is fixed.
bool AddressSanitizer::LooksLikeCodeInBug11395(Instruction *I) {
if (LongSize != 32) return false;
CallInst *CI = dyn_cast<CallInst>(I);
OpenPOWER on IntegriCloud