mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-16 16:37:42 +00:00
[msan] Switch TLS globals to initial-exec model.
They are always defined in the main executable. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181994 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d4cdf88cb9
commit
8f79b2f762
@ -299,30 +299,30 @@ void MemorySanitizer::initializeCallbacks(Module &M) {
|
||||
RetvalTLS = new GlobalVariable(
|
||||
M, ArrayType::get(IRB.getInt64Ty(), 8), false,
|
||||
GlobalVariable::ExternalLinkage, 0, "__msan_retval_tls", 0,
|
||||
GlobalVariable::GeneralDynamicTLSModel);
|
||||
GlobalVariable::InitialExecTLSModel);
|
||||
RetvalOriginTLS = new GlobalVariable(
|
||||
M, OriginTy, false, GlobalVariable::ExternalLinkage, 0,
|
||||
"__msan_retval_origin_tls", 0, GlobalVariable::GeneralDynamicTLSModel);
|
||||
"__msan_retval_origin_tls", 0, GlobalVariable::InitialExecTLSModel);
|
||||
|
||||
ParamTLS = new GlobalVariable(
|
||||
M, ArrayType::get(IRB.getInt64Ty(), 1000), false,
|
||||
GlobalVariable::ExternalLinkage, 0, "__msan_param_tls", 0,
|
||||
GlobalVariable::GeneralDynamicTLSModel);
|
||||
GlobalVariable::InitialExecTLSModel);
|
||||
ParamOriginTLS = new GlobalVariable(
|
||||
M, ArrayType::get(OriginTy, 1000), false, GlobalVariable::ExternalLinkage,
|
||||
0, "__msan_param_origin_tls", 0, GlobalVariable::GeneralDynamicTLSModel);
|
||||
0, "__msan_param_origin_tls", 0, GlobalVariable::InitialExecTLSModel);
|
||||
|
||||
VAArgTLS = new GlobalVariable(
|
||||
M, ArrayType::get(IRB.getInt64Ty(), 1000), false,
|
||||
GlobalVariable::ExternalLinkage, 0, "__msan_va_arg_tls", 0,
|
||||
GlobalVariable::GeneralDynamicTLSModel);
|
||||
GlobalVariable::InitialExecTLSModel);
|
||||
VAArgOverflowSizeTLS = new GlobalVariable(
|
||||
M, IRB.getInt64Ty(), false, GlobalVariable::ExternalLinkage, 0,
|
||||
"__msan_va_arg_overflow_size_tls", 0,
|
||||
GlobalVariable::GeneralDynamicTLSModel);
|
||||
GlobalVariable::InitialExecTLSModel);
|
||||
OriginTLS = new GlobalVariable(
|
||||
M, IRB.getInt32Ty(), false, GlobalVariable::ExternalLinkage, 0,
|
||||
"__msan_origin_tls", 0, GlobalVariable::GeneralDynamicTLSModel);
|
||||
"__msan_origin_tls", 0, GlobalVariable::InitialExecTLSModel);
|
||||
|
||||
// We insert an empty inline asm after __msan_report* to avoid callback merge.
|
||||
EmptyAsm = InlineAsm::get(FunctionType::get(IRB.getVoidTy(), false),
|
||||
|
@ -5,8 +5,17 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
|
||||
; Check the presence of __msan_init
|
||||
; CHECK: @llvm.global_ctors {{.*}} @__msan_init
|
||||
|
||||
; Check the presence and the linkage type of __msan_track_origins
|
||||
; Check the presence and the linkage type of __msan_track_origins and
|
||||
; other interface symbols.
|
||||
; CHECK: @__msan_track_origins = weak_odr constant i32 0
|
||||
; CHECK: @__msan_keep_going = weak_odr constant i32 0
|
||||
; CHECK: @__msan_retval_tls = external thread_local(initialexec) global [{{.*}}]
|
||||
; CHECK: @__msan_retval_origin_tls = external thread_local(initialexec) global i32
|
||||
; CHECK: @__msan_param_tls = external thread_local(initialexec) global [{{.*}}]
|
||||
; CHECK: @__msan_param_origin_tls = external thread_local(initialexec) global [{{.*}}]
|
||||
; CHECK: @__msan_va_arg_tls = external thread_local(initialexec) global [{{.*}}]
|
||||
; CHECK: @__msan_va_arg_overflow_size_tls = external thread_local(initialexec) global i64
|
||||
; CHECK: @__msan_origin_tls = external thread_local(initialexec) global i32
|
||||
|
||||
|
||||
; Check instrumentation of stores
|
||||
|
Loading…
Reference in New Issue
Block a user