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

Fixes https://code.google.com/p/address-sanitizer/issues/detail?id=279.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204331 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Alexander Potapenko 2014-03-20 10:48:34 +00:00
parent 37fb9b9591
commit d68ef1a8d7
2 changed files with 14 additions and 0 deletions

View File

@ -927,6 +927,8 @@ bool AddressSanitizerModule::ShouldInstrumentGlobal(GlobalVariable *G) {
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;

View File

@ -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"
@.str_noinst = private unnamed_addr constant [4 x i8] c"aaa\00", section "llvm.metadata"
@.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