[llvm] r204331 - [ASan] Do not instrument globals from the llvm.metadata section.

Alexander Potapenko glider at google.com
Thu Mar 20 03:48:35 PDT 2014


Author: glider
Date: Thu Mar 20 05:48:34 2014
New Revision: 204331

URL: http://llvm.org/viewvc/llvm-project?rev=204331&view=rev
Log:
[ASan] Do not instrument globals from the llvm.metadata section.
Fixes https://code.google.com/p/address-sanitizer/issues/detail?id=279.


Added:
    llvm/trunk/test/Instrumentation/AddressSanitizer/do-not-instrument-llvm-metadata.ll
Modified:
    llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp

Modified: llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp?rev=204331&r1=204330&r2=204331&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp (original)
+++ llvm/trunk/lib/Transforms/Instrumentation/AddressSanitizer.cpp Thu Mar 20 05:48:34 2014
@@ -927,6 +927,8 @@ bool AddressSanitizerModule::ShouldInstr
       DEBUG(dbgs() << "Ignoring a cstring literal: " << *G << "\n");
       return false;
     }
+    // Globals from llvm.metadata aren't emitted, do not instrument them.
+    if (Section == "llvm.metadata") return false;
   }
 
   return true;

Added: llvm/trunk/test/Instrumentation/AddressSanitizer/do-not-instrument-llvm-metadata.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/AddressSanitizer/do-not-instrument-llvm-metadata.ll?rev=204331&view=auto
==============================================================================
--- llvm/trunk/test/Instrumentation/AddressSanitizer/do-not-instrument-llvm-metadata.ll (added)
+++ llvm/trunk/test/Instrumentation/AddressSanitizer/do-not-instrument-llvm-metadata.ll Thu Mar 20 05:48:34 2014
@@ -0,0 +1,12 @@
+; This test checks that we are not instrumenting globals in llvm.metadata.
+; RUN: opt < %s -asan -asan-module -S | FileCheck %s
+
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
+
+ at .str_noinst = private unnamed_addr constant [4 x i8] c"aaa\00", section "llvm.metadata"
+ at .str_inst = private unnamed_addr constant [4 x i8] c"aaa\00",
+
+; CHECK-NOT: {{asan_gen.*str_noinst}}
+; CHECK: {{asan_gen.*str_inst}}
+; CHECK: @asan.module_ctor





More information about the llvm-commits mailing list