Index: lib/Transforms/Instrumentation/AddressSanitizer.cpp =================================================================== --- lib/Transforms/Instrumentation/AddressSanitizer.cpp +++ lib/Transforms/Instrumentation/AddressSanitizer.cpp @@ -1627,7 +1627,7 @@ StringRef OriginalName) { GlobalVariable *Metadata = new GlobalVariable(M, Initializer->getType(), false, - GlobalVariable::InternalLinkage, Initializer, + GlobalVariable::PrivateLinkage, Initializer, Twine("__asan_global_") + GlobalValue::getRealLinkageName(OriginalName)); Metadata->setSection(getGlobalMetadataSection()); @@ -1691,7 +1691,7 @@ LivenessTy, Initializer->getAggregateElement(0u), ConstantExpr::getPointerCast(Metadata, IntptrTy), nullptr); GlobalVariable *Liveness = new GlobalVariable( - M, LivenessTy, false, GlobalVariable::InternalLinkage, LivenessBinder, + M, LivenessTy, false, GlobalVariable::PrivateLinkage, LivenessBinder, Twine("__asan_binder_") + G->getName()); Liveness->setSection("__DATA,__asan_liveness,regular,live_support"); LivenessGlobals[i] = Liveness; Index: test/Instrumentation/AddressSanitizer/global_metadata_darwin.ll =================================================================== --- test/Instrumentation/AddressSanitizer/global_metadata_darwin.ll +++ test/Instrumentation/AddressSanitizer/global_metadata_darwin.ll @@ -16,10 +16,10 @@ ; Find the metadata for @global: -; CHECK: [[METADATA:@.+]] = internal global {{.*}} @global {{.*}} section "__DATA,__asan_globals,regular" +; CHECK: [[METADATA:@.+]] = private global {{.*}} @global {{.*}} section "__DATA,__asan_globals,regular" ; Find the liveness binder for @global and its metadata: -; CHECK: @__asan_binder_global = internal global {{.*}} @global {{.*}} [[METADATA]] {{.*}} section "__DATA,__asan_liveness,regular,live_support" +; CHECK: @__asan_binder_global = private global {{.*}} @global {{.*}} [[METADATA]] {{.*}} section "__DATA,__asan_liveness,regular,live_support" ; The binder has to be inserted to llvm.compiler.used to avoid being stripped ; during LTO. Index: test/Instrumentation/AddressSanitizer/global_metadata_windows.ll =================================================================== --- test/Instrumentation/AddressSanitizer/global_metadata_windows.ll +++ test/Instrumentation/AddressSanitizer/global_metadata_windows.ll @@ -13,7 +13,7 @@ ; CHECK: $dead_global = comdat noduplicates ; CHECK: @dead_global = local_unnamed_addr global { i32, [60 x i8] } { i32 42, [60 x i8] zeroinitializer }, comdat, align 32 -; CHECK: @__asan_global_dead_global = internal global { {{.*}} }, section ".ASAN$GL", comdat($dead_global), align 64 +; CHECK: @__asan_global_dead_global = private global { {{.*}} }, section ".ASAN$GL", comdat($dead_global), align 64 @dead_global = local_unnamed_addr global i32 42, align 4 @mystr = linkonce_odr unnamed_addr constant [5 x i8] c"main\00", comdat, align 1