mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 20:23:11 +01:00
This reverts commit r201625 and r201624.
Since r201608 got reverted, it is not safe to use private linkage in these cases until it is committed back. llvm-svn: 201688
This commit is contained in:
parent
b0b9c3767b
commit
5bdf119d0c
@ -915,7 +915,7 @@ void generateStringPrint(llvm::LLVMContext &context,
|
||||
new llvm::GlobalVariable(module,
|
||||
stringConstant->getType(),
|
||||
true,
|
||||
llvm::GlobalValue::PrivateLinkage,
|
||||
llvm::GlobalValue::LinkerPrivateLinkage,
|
||||
stringConstant,
|
||||
"");
|
||||
}
|
||||
@ -959,7 +959,7 @@ void generateIntegerPrint(llvm::LLVMContext &context,
|
||||
new llvm::GlobalVariable(module,
|
||||
stringConstant->getType(),
|
||||
true,
|
||||
llvm::GlobalValue::PrivateLinkage,
|
||||
llvm::GlobalValue::LinkerPrivateLinkage,
|
||||
stringConstant,
|
||||
"");
|
||||
}
|
||||
|
@ -561,13 +561,19 @@ static size_t TypeSizeToSizeIndex(uint32_t TypeSize) {
|
||||
static GlobalVariable *createPrivateGlobalForString(
|
||||
Module &M, StringRef Str, bool AllowMerging) {
|
||||
Constant *StrConst = ConstantDataArray::getString(M.getContext(), Str);
|
||||
// We use private linkage for module-local strings. If they can be merged
|
||||
// with another one, we set the unnamed_addr attribute.
|
||||
// For module-local strings that can be merged with another one we set the
|
||||
// private linkage and the unnamed_addr attribute.
|
||||
// Non-mergeable strings are made linker_private to remove them from the
|
||||
// symbol table. "private" linkage doesn't work for Darwin, where the
|
||||
// "L"-prefixed globals end up in __TEXT,__const section
|
||||
// (see http://llvm.org/bugs/show_bug.cgi?id=17976 for more info).
|
||||
GlobalValue::LinkageTypes linkage =
|
||||
AllowMerging ? GlobalValue::PrivateLinkage
|
||||
: GlobalValue::LinkerPrivateLinkage;
|
||||
GlobalVariable *GV =
|
||||
new GlobalVariable(M, StrConst->getType(), true,
|
||||
GlobalValue::PrivateLinkage, StrConst, kAsanGenPrefix);
|
||||
if (AllowMerging)
|
||||
GV->setUnnamedAddr(true);
|
||||
linkage, StrConst, kAsanGenPrefix);
|
||||
if (AllowMerging) GV->setUnnamedAddr(true);
|
||||
GV->setAlignment(1); // Strings may not be merged w/o setting align 1.
|
||||
return GV;
|
||||
}
|
||||
|
@ -7,7 +7,6 @@ target triple = "x86_64-unknown-linux-gnu"
|
||||
; module ctor/dtor
|
||||
|
||||
; CHECK: llvm.global_ctors
|
||||
; CHECK: @__asan_gen_ = private constant [8 x i8] c"<stdin>\00", align 1
|
||||
; CHECK: llvm.global_dtors
|
||||
|
||||
; Test that we don't instrument global arrays with static initializer
|
||||
|
Loading…
Reference in New Issue
Block a user