mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
[sanitizer] Reduce redzone size for small size global objects
Currently 1 byte global object has a ridiculous 63 bytes redzone. This patch reduces the redzone size to be less than 32 if the size of global object is less than or equal to half of 32 (the minimal size of redzone). A 12 bytes object has a 20 bytes redzone, a 20 bytes object has a 44 bytes redzone. Reviewed By: MaskRay, #sanitizers, vitalybuka Differential Revision: https://reviews.llvm.org/D102469
This commit is contained in:
parent
94fbaca3d2
commit
8ecb4a2780
@ -2552,13 +2552,21 @@ ModuleAddressSanitizer::getRedzoneSizeForGlobal(uint64_t SizeInBytes) const {
|
||||
constexpr uint64_t kMaxRZ = 1 << 18;
|
||||
const uint64_t MinRZ = getMinRedzoneSizeForGlobal();
|
||||
|
||||
// Calculate RZ, where MinRZ <= RZ <= MaxRZ, and RZ ~ 1/4 * SizeInBytes.
|
||||
uint64_t RZ =
|
||||
std::max(MinRZ, std::min(kMaxRZ, (SizeInBytes / MinRZ / 4) * MinRZ));
|
||||
uint64_t RZ = 0;
|
||||
if (SizeInBytes <= MinRZ / 2) {
|
||||
// Reduce redzone size for small size objects, e.g. int, char[1]. MinRZ is
|
||||
// at least 32 bytes, optimize when SizeInBytes is less than or equal to
|
||||
// half of MinRZ.
|
||||
RZ = MinRZ - SizeInBytes;
|
||||
} else {
|
||||
// Calculate RZ, where MinRZ <= RZ <= MaxRZ, and RZ ~ 1/4 * SizeInBytes.
|
||||
RZ = std::max(MinRZ, std::min(kMaxRZ, (SizeInBytes / MinRZ / 4) * MinRZ));
|
||||
|
||||
// Round up to multiple of MinRZ.
|
||||
if (SizeInBytes % MinRZ)
|
||||
RZ += MinRZ - (SizeInBytes % MinRZ);
|
||||
}
|
||||
|
||||
// Round up to multiple of MinRZ.
|
||||
if (SizeInBytes % MinRZ)
|
||||
RZ += MinRZ - (SizeInBytes % MinRZ);
|
||||
assert((RZ + SizeInBytes) % MinRZ == 0);
|
||||
|
||||
return RZ;
|
||||
|
@ -7,7 +7,7 @@ target triple = "amdgcn-amd-amdhsa"
|
||||
; for objects in constant address space.
|
||||
|
||||
@G10 = addrspace(4) global [10 x i8] zeroinitializer, align 1
|
||||
; CHECK: @G10 = addrspace(4) global { [10 x i8], [54 x i8] }
|
||||
; CHECK: @G10 = addrspace(4) global { [10 x i8], [22 x i8] }
|
||||
|
||||
@G31 = addrspace(4) global [31 x i8] zeroinitializer, align 1
|
||||
@G32 = addrspace(4) global [32 x i8] zeroinitializer, align 1
|
||||
|
@ -7,7 +7,7 @@ target triple = "amdgcn-amd-amdhsa"
|
||||
; for objects in global address space.
|
||||
|
||||
@G10 = addrspace(1) global [10 x i8] zeroinitializer, align 1
|
||||
; CHECK: @G10 = addrspace(1) global { [10 x i8], [54 x i8] }
|
||||
; CHECK: @G10 = addrspace(1) global { [10 x i8], [22 x i8] }
|
||||
|
||||
@G31 = addrspace(1) global [31 x i8] zeroinitializer, align 1
|
||||
@G32 = addrspace(1) global [32 x i8] zeroinitializer, align 1
|
||||
|
@ -8,7 +8,7 @@ target triple = "x86_64-unknown-linux-gnu"
|
||||
; Here we check that the global redzone sizes grow with the object size.
|
||||
|
||||
@G10 = global [10 x i8] zeroinitializer, align 1
|
||||
; CHECK: @G10 = global { [10 x i8], [54 x i8] }
|
||||
; CHECK: @G10 = global { [10 x i8], [22 x i8] }
|
||||
|
||||
@G31 = global [31 x i8] zeroinitializer, align 1
|
||||
@G32 = global [32 x i8] zeroinitializer, align 1
|
||||
|
@ -3,7 +3,7 @@
|
||||
source_filename = "version.c"
|
||||
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-apple-macosx10.12.0"
|
||||
; CHECK: @version = constant { [5 x i8], [59 x i8] } {{.*}}, !dbg ![[GV:.*]]
|
||||
; CHECK: @version = constant { [5 x i8], [27 x i8] } {{.*}}, !dbg ![[GV:.*]]
|
||||
|
||||
@version = constant [5 x i8] c"4.00\00", align 1, !dbg !0
|
||||
|
||||
|
@ -9,14 +9,14 @@ target triple = "x86_64-apple-macosx10.10.0"
|
||||
@.str.1 = private unnamed_addr constant [13 x i8] c"Hello world.\00", align 1
|
||||
@.str.2 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1
|
||||
|
||||
; CHECK: @.str.1 = internal constant { [13 x i8], [51 x i8] } { [13 x i8] c"Hello world.\00", [51 x i8] zeroinitializer }, section "__TEXT,__asan_cstring,regular", align 32
|
||||
; CHECK: @.str.2 = internal constant { [4 x i8], [60 x i8] } { [4 x i8] c"%s\0A\00", [60 x i8] zeroinitializer }, section "__TEXT,__asan_cstring,regular", align 32
|
||||
; CHECK: @.str.1 = internal constant { [13 x i8], [19 x i8] } { [13 x i8] c"Hello world.\00", [19 x i8] zeroinitializer }, section "__TEXT,__asan_cstring,regular", align 32
|
||||
; CHECK: @.str.2 = internal constant { [4 x i8], [28 x i8] } { [4 x i8] c"%s\0A\00", [28 x i8] zeroinitializer }, section "__TEXT,__asan_cstring,regular", align 32
|
||||
|
||||
; Shouldn't be put into special section:
|
||||
@.str.3 = private unnamed_addr constant [4 x i8] c"\00\01\02\03", align 1
|
||||
@.str.4 = private unnamed_addr global [7 x i8] c"Hello.\00", align 1
|
||||
@.str.5 = private unnamed_addr constant [8 x i8] c"Hello.\00\00", align 1
|
||||
|
||||
; CHECK: @.str.3 = internal constant { [4 x i8], [60 x i8] } { [4 x i8] c"\00\01\02\03", [60 x i8] zeroinitializer }, align 32
|
||||
; CHECK: @.str.4 = private global { [7 x i8], [57 x i8] } { [7 x i8] c"Hello.\00", [57 x i8] zeroinitializer }, align 32
|
||||
; CHECK: @.str.5 = internal constant { [8 x i8], [56 x i8] } { [8 x i8] c"Hello.\00\00", [56 x i8] zeroinitializer }, align 32
|
||||
; CHECK: @.str.3 = internal constant { [4 x i8], [28 x i8] } { [4 x i8] c"\00\01\02\03", [28 x i8] zeroinitializer }, align 32
|
||||
; CHECK: @.str.4 = private global { [7 x i8], [25 x i8] } { [7 x i8] c"Hello.\00", [25 x i8] zeroinitializer }, align 32
|
||||
; CHECK: @.str.5 = internal constant { [8 x i8], [24 x i8] } { [8 x i8] c"Hello.\00\00", [24 x i8] zeroinitializer }, align 32
|
||||
|
@ -15,8 +15,8 @@ target triple = "x86_64-apple-macosx10.11.0"
|
||||
; CHECK: @b = {{.*}} %struct
|
||||
|
||||
; CHECK: @llvm.compiler.used =
|
||||
; CHECK-SAME: i8* bitcast ({ %struct, [48 x i8] }* @a to i8*)
|
||||
; CHECK-SAME: i8* bitcast ({ %struct, [48 x i8] }* @b to i8*)
|
||||
; CHECK-SAME: i8* bitcast ({ %struct, [16 x i8] }* @a to i8*)
|
||||
; CHECK-SAME: i8* bitcast ({ %struct, [16 x i8] }* @b to i8*)
|
||||
|
||||
define i32 @main(i32, i8** nocapture readnone) {
|
||||
%3 = alloca %struct, align 8
|
||||
|
@ -19,17 +19,17 @@ target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
; Check that globals were instrumented:
|
||||
|
||||
; CHECK: @global = global { i32, [60 x i8] } zeroinitializer, align 32
|
||||
; CHECK: @.str = internal constant { [14 x i8], [50 x i8] } { [14 x i8] c"Hello, world!\00", [50 x i8] zeroinitializer }, align 32
|
||||
; CHECK: @global = global { i32, [28 x i8] } zeroinitializer, align 32
|
||||
; CHECK: @.str = internal constant { [14 x i8], [18 x i8] } { [14 x i8] c"Hello, world!\00", [18 x i8] zeroinitializer }, align 32
|
||||
|
||||
; Check emitted location descriptions:
|
||||
; CHECK: [[VARNAME:@___asan_gen_.[0-9]+]] = private unnamed_addr constant [7 x i8] c"global\00", align 1
|
||||
; CHECK: [[FILENAME:@___asan_gen_.[0-9]+]] = private unnamed_addr constant [22 x i8] c"/tmp/asan-globals.cpp\00", align 1
|
||||
; CHECK: [[LOCDESCR:@___asan_gen_.[0-9]+]] = private unnamed_addr constant { [22 x i8]*, i32, i32 } { [22 x i8]* [[FILENAME]], i32 5, i32 5 }
|
||||
; NOALIAS: @__asan_global_global = {{.*}}i64 ptrtoint ({ i32, [60 x i8] }* @global to i64){{.*}} section "asan_globals"{{.*}}, !associated
|
||||
; NOALIAS: @__asan_global_.str = {{.*}}i64 ptrtoint ({ [14 x i8], [50 x i8] }* @{{.str|1}} to i64){{.*}} section "asan_globals"{{.*}}, !associated
|
||||
; ALIAS: @__asan_global_global = {{.*}}i64 ptrtoint ({ i32, [60 x i8] }* @0 to i64){{.*}} section "asan_globals"{{.*}}, !associated
|
||||
; ALIAS: @__asan_global_.str = {{.*}}i64 ptrtoint ({ [14 x i8], [50 x i8] }* @3 to i64){{.*}} section "asan_globals"{{.*}}, !associated
|
||||
; NOALIAS: @__asan_global_global = {{.*}}i64 ptrtoint ({ i32, [28 x i8] }* @global to i64){{.*}} section "asan_globals"{{.*}}, !associated
|
||||
; NOALIAS: @__asan_global_.str = {{.*}}i64 ptrtoint ({ [14 x i8], [18 x i8] }* @{{.str|1}} to i64){{.*}} section "asan_globals"{{.*}}, !associated
|
||||
; ALIAS: @__asan_global_global = {{.*}}i64 ptrtoint ({ i32, [28 x i8] }* @0 to i64){{.*}} section "asan_globals"{{.*}}, !associated
|
||||
; ALIAS: @__asan_global_.str = {{.*}}i64 ptrtoint ({ [14 x i8], [18 x i8] }* @3 to i64){{.*}} section "asan_globals"{{.*}}, !associated
|
||||
|
||||
; The metadata has to be inserted to llvm.compiler.used to avoid being stripped
|
||||
; during LTO.
|
||||
|
@ -18,8 +18,8 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||
@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__sub_I_asan_globals.cpp, i8* null }]
|
||||
|
||||
; Check that globals were instrumented:
|
||||
; CHECK: @global = global { i32, [60 x i8] } zeroinitializer, align 32
|
||||
; CHECK: @.str = internal constant { [14 x i8], [50 x i8] } { [14 x i8] c"Hello, world!\00", [50 x i8] zeroinitializer }{{.*}}, align 32
|
||||
; CHECK: @global = global { i32, [28 x i8] } zeroinitializer, align 32
|
||||
; CHECK: @.str = internal constant { [14 x i8], [18 x i8] } { [14 x i8] c"Hello, world!\00", [18 x i8] zeroinitializer }{{.*}}, align 32
|
||||
|
||||
; Check emitted location descriptions:
|
||||
; CHECK: [[VARNAME:@___asan_gen_.[0-9]+]] = private unnamed_addr constant [7 x i8] c"global\00", align 1
|
||||
|
@ -15,8 +15,8 @@ $mystr = comdat any
|
||||
; CHECK: $dead_global = comdat noduplicates
|
||||
; CHECK: $private_str = comdat noduplicates
|
||||
|
||||
; CHECK: @dead_global = global { i32, [60 x i8] } { i32 42, [60 x i8] zeroinitializer }, comdat, align 32
|
||||
; CHECK: @private_str = internal constant { [8 x i8], [56 x i8] } { [8 x i8] c"private\00", [56 x i8] zeroinitializer }, comdat, align 32
|
||||
; CHECK: @dead_global = global { i32, [28 x i8] } { i32 42, [28 x i8] zeroinitializer }, comdat, align 32
|
||||
; CHECK: @private_str = internal constant { [8 x i8], [24 x i8] } { [8 x i8] c"private\00", [24 x i8] zeroinitializer }, comdat, align 32
|
||||
|
||||
; CHECK: @__asan_global_dead_global = private global { {{.*}} }, section ".ASAN$GL", comdat($dead_global), align 64, !associated
|
||||
; CHECK: @__asan_global_private_str = private global { {{.*}} }, section ".ASAN$GL", comdat($private_str), align 64, !associated
|
||||
|
@ -33,22 +33,22 @@ target triple = "x86_64-unknown-linux-gnu"
|
||||
; NOCOMDAT-NOT: $_ZZ4funcvE10static_var.{{[01-9a-f]+}} = comdat any
|
||||
; NOCOMDAT-NOT: $.str.{{[01-9a-f]+}} = comdat any
|
||||
|
||||
; COMDAT: @global = global { i32, [60 x i8] } zeroinitializer, comdat, align 32
|
||||
; COMDAT: @dyn_init_global = global { i32, [60 x i8] } zeroinitializer, comdat, align 32
|
||||
; COMDAT: @_ZZ4funcvE10static_var = internal global { i32, [60 x i8] } zeroinitializer, comdat($_ZZ4funcvE10static_var.{{[01-9a-f]+}}), align 32
|
||||
; COMDAT: @.str = internal constant { [14 x i8], [50 x i8] } { [14 x i8] c"Hello, world!\00", [50 x i8] zeroinitializer }, comdat($.str.{{[01-9a-f]+}}), align 32
|
||||
; COMDAT: @global = global { i32, [28 x i8] } zeroinitializer, comdat, align 32
|
||||
; COMDAT: @dyn_init_global = global { i32, [28 x i8] } zeroinitializer, comdat, align 32
|
||||
; COMDAT: @_ZZ4funcvE10static_var = internal global { i32, [28 x i8] } zeroinitializer, comdat($_ZZ4funcvE10static_var.{{[01-9a-f]+}}), align 32
|
||||
; COMDAT: @.str = internal constant { [14 x i8], [18 x i8] } { [14 x i8] c"Hello, world!\00", [18 x i8] zeroinitializer }, comdat($.str.{{[01-9a-f]+}}), align 32
|
||||
|
||||
; NOCOMDAT: @global = global { i32, [60 x i8] } zeroinitializer, align 32
|
||||
; NOCOMDAT: @dyn_init_global = global { i32, [60 x i8] } zeroinitializer, align 32
|
||||
; NOCOMDAT: @_ZZ4funcvE10static_var = internal global { i32, [60 x i8] } zeroinitializer, align 32
|
||||
; NOCOMDAT: @.str = internal constant { [14 x i8], [50 x i8] } { [14 x i8] c"Hello, world!\00", [50 x i8] zeroinitializer }, align 32
|
||||
; NOCOMDAT: @global = global { i32, [28 x i8] } zeroinitializer, align 32
|
||||
; NOCOMDAT: @dyn_init_global = global { i32, [28 x i8] } zeroinitializer, align 32
|
||||
; NOCOMDAT: @_ZZ4funcvE10static_var = internal global { i32, [28 x i8] } zeroinitializer, align 32
|
||||
; NOCOMDAT: @.str = internal constant { [14 x i8], [18 x i8] } { [14 x i8] c"Hello, world!\00", [18 x i8] zeroinitializer }, align 32
|
||||
|
||||
; Check emitted location descriptions:
|
||||
; CHECK: [[VARNAME:@___asan_gen_.[0-9]+]] = private unnamed_addr constant [7 x i8] c"global\00", align 1
|
||||
; CHECK: [[FILENAME:@___asan_gen_.[0-9]+]] = private unnamed_addr constant [22 x i8] c"/tmp/asan-globals.cpp\00", align 1
|
||||
; CHECK: [[LOCDESCR:@___asan_gen_.[0-9]+]] = private unnamed_addr constant { [22 x i8]*, i32, i32 } { [22 x i8]* [[FILENAME]], i32 5, i32 5 }
|
||||
; COMDAT: @__asan_global_global = {{.*}}i64 ptrtoint ({ i32, [60 x i8] }* @global to i64){{.*}} section "asan_globals"{{.*}}, !associated
|
||||
; COMDAT: @__asan_global_.str = {{.*}}i64 ptrtoint ({ [14 x i8], [50 x i8] }* @{{.str|1}} to i64){{.*}} section "asan_globals"{{.*}}, !associated
|
||||
; COMDAT: @__asan_global_global = {{.*}}i64 ptrtoint ({ i32, [28 x i8] }* @global to i64){{.*}} section "asan_globals"{{.*}}, !associated
|
||||
; COMDAT: @__asan_global_.str = {{.*}}i64 ptrtoint ({ [14 x i8], [18 x i8] }* @{{.str|1}} to i64){{.*}} section "asan_globals"{{.*}}, !associated
|
||||
|
||||
; The metadata has to be inserted to llvm.compiler.used to avoid being stripped
|
||||
; during LTO.
|
||||
|
@ -24,11 +24,11 @@ target triple = "x86_64-unknown-linux-gnu"
|
||||
; CHECK-NOINDICATOR-NOT: __odr_asan_gen_a
|
||||
; CHECK-NOALIAS-NOT: private alias
|
||||
; CHECK-INDICATOR: @__odr_asan_gen_a = global i8 0, align 1
|
||||
; CHECK-ALIAS: @0 = private alias { [2 x i32], [56 x i8] }, { [2 x i32], [56 x i8] }* @a
|
||||
; CHECK-ALIAS: @0 = private alias { [2 x i32], [24 x i8] }, { [2 x i32], [24 x i8] }* @a
|
||||
|
||||
; CHECK-ALIAS: @1 = private alias { [2 x i32], [56 x i8] }, { [2 x i32], [56 x i8] }* @b
|
||||
; CHECK-ALIAS: @2 = private alias { [2 x i32], [56 x i8] }, { [2 x i32], [56 x i8] }* @c
|
||||
; CHECK-ALIAS: @3 = private alias { [2 x i32], [56 x i8] }, { [2 x i32], [56 x i8] }* @d
|
||||
; CHECK-ALIAS: @1 = private alias { [2 x i32], [24 x i8] }, { [2 x i32], [24 x i8] }* @b
|
||||
; CHECK-ALIAS: @2 = private alias { [2 x i32], [24 x i8] }, { [2 x i32], [24 x i8] }* @c
|
||||
; CHECK-ALIAS: @3 = private alias { [2 x i32], [24 x i8] }, { [2 x i32], [24 x i8] }* @d
|
||||
|
||||
; Function Attrs: nounwind sanitize_address uwtable
|
||||
define i32 @foo(i32 %M) #0 {
|
||||
|
@ -11,15 +11,15 @@ target triple = "x86_64-unknown-linux-gnu"
|
||||
@c = internal global [2 x i32] zeroinitializer, align 4
|
||||
@d = unnamed_addr global [2 x i32] zeroinitializer, align 4
|
||||
|
||||
; NOALIAS: @__asan_global_a = private global { i64, i64, i64, i64, i64, i64, i64, i64 } { i64 ptrtoint ({ [2 x i32], [56 x i8] }* @a to i64), i64 8, i64 64, i64 ptrtoint ([2 x i8]* @___asan_gen_.1 to i64), i64 ptrtoint ([8 x i8]* @___asan_gen_ to i64), i64 0, i64 0, i64 0 }
|
||||
; NOALIAS-NEXT: @__asan_global_b = private global { i64, i64, i64, i64, i64, i64, i64, i64 } { i64 ptrtoint ({ [2 x i32], [56 x i8] }* @b to i64), i64 8, i64 64, i64 ptrtoint ([2 x i8]* @___asan_gen_.2 to i64), i64 ptrtoint ([8 x i8]* @___asan_gen_ to i64), i64 0, i64 0, i64 -1 }
|
||||
; NOALIAS-NEXT: @__asan_global_c = private global { i64, i64, i64, i64, i64, i64, i64, i64 } { i64 ptrtoint ({ [2 x i32], [56 x i8] }* @c to i64), i64 8, i64 64, i64 ptrtoint ([2 x i8]* @___asan_gen_.3 to i64), i64 ptrtoint ([8 x i8]* @___asan_gen_ to i64), i64 0, i64 0, i64 -1 }
|
||||
; NOALIAS-NEXT: @__asan_global_d = private global { i64, i64, i64, i64, i64, i64, i64, i64 } { i64 ptrtoint ({ [2 x i32], [56 x i8] }* @d to i64), i64 8, i64 64, i64 ptrtoint ([2 x i8]* @___asan_gen_.4 to i64), i64 ptrtoint ([8 x i8]* @___asan_gen_ to i64), i64 0, i64 0, i64 0 }
|
||||
; NOALIAS: @__asan_global_a = private global { i64, i64, i64, i64, i64, i64, i64, i64 } { i64 ptrtoint ({ [2 x i32], [24 x i8] }* @a to i64), i64 8, i64 32, i64 ptrtoint ([2 x i8]* @___asan_gen_.1 to i64), i64 ptrtoint ([8 x i8]* @___asan_gen_ to i64), i64 0, i64 0, i64 0 }
|
||||
; NOALIAS-NEXT: @__asan_global_b = private global { i64, i64, i64, i64, i64, i64, i64, i64 } { i64 ptrtoint ({ [2 x i32], [24 x i8] }* @b to i64), i64 8, i64 32, i64 ptrtoint ([2 x i8]* @___asan_gen_.2 to i64), i64 ptrtoint ([8 x i8]* @___asan_gen_ to i64), i64 0, i64 0, i64 -1 }
|
||||
; NOALIAS-NEXT: @__asan_global_c = private global { i64, i64, i64, i64, i64, i64, i64, i64 } { i64 ptrtoint ({ [2 x i32], [24 x i8] }* @c to i64), i64 8, i64 32, i64 ptrtoint ([2 x i8]* @___asan_gen_.3 to i64), i64 ptrtoint ([8 x i8]* @___asan_gen_ to i64), i64 0, i64 0, i64 -1 }
|
||||
; NOALIAS-NEXT: @__asan_global_d = private global { i64, i64, i64, i64, i64, i64, i64, i64 } { i64 ptrtoint ({ [2 x i32], [24 x i8] }* @d to i64), i64 8, i64 32, i64 ptrtoint ([2 x i8]* @___asan_gen_.4 to i64), i64 ptrtoint ([8 x i8]* @___asan_gen_ to i64), i64 0, i64 0, i64 0 }
|
||||
|
||||
; ALIAS: @__asan_global_a = private global { i64, i64, i64, i64, i64, i64, i64, i64 } { i64 ptrtoint ({ [2 x i32], [56 x i8] }* @0 to i64), i64 8, i64 64, i64 ptrtoint ([2 x i8]* @___asan_gen_.1 to i64), i64 ptrtoint ([8 x i8]* @___asan_gen_ to i64), i64 0, i64 0, i64 0 }
|
||||
; ALIAS-NEXT: @__asan_global_b = private global { i64, i64, i64, i64, i64, i64, i64, i64 } { i64 ptrtoint ({ [2 x i32], [56 x i8] }* @1 to i64), i64 8, i64 64, i64 ptrtoint ([2 x i8]* @___asan_gen_.2 to i64), i64 ptrtoint ([8 x i8]* @___asan_gen_ to i64), i64 0, i64 0, i64 -1 }
|
||||
; ALIAS-NEXT: @__asan_global_c = private global { i64, i64, i64, i64, i64, i64, i64, i64 } { i64 ptrtoint ({ [2 x i32], [56 x i8] }* @2 to i64), i64 8, i64 64, i64 ptrtoint ([2 x i8]* @___asan_gen_.3 to i64), i64 ptrtoint ([8 x i8]* @___asan_gen_ to i64), i64 0, i64 0, i64 -1 }
|
||||
; ALIAS-NEXT: @__asan_global_d = private global { i64, i64, i64, i64, i64, i64, i64, i64 } { i64 ptrtoint ({ [2 x i32], [56 x i8] }* @3 to i64), i64 8, i64 64, i64 ptrtoint ([2 x i8]* @___asan_gen_.4 to i64), i64 ptrtoint ([8 x i8]* @___asan_gen_ to i64), i64 0, i64 0, i64 0 }
|
||||
; ALIAS: @__asan_global_a = private global { i64, i64, i64, i64, i64, i64, i64, i64 } { i64 ptrtoint ({ [2 x i32], [24 x i8] }* @0 to i64), i64 8, i64 32, i64 ptrtoint ([2 x i8]* @___asan_gen_.1 to i64), i64 ptrtoint ([8 x i8]* @___asan_gen_ to i64), i64 0, i64 0, i64 0 }
|
||||
; ALIAS-NEXT: @__asan_global_b = private global { i64, i64, i64, i64, i64, i64, i64, i64 } { i64 ptrtoint ({ [2 x i32], [24 x i8] }* @1 to i64), i64 8, i64 32, i64 ptrtoint ([2 x i8]* @___asan_gen_.2 to i64), i64 ptrtoint ([8 x i8]* @___asan_gen_ to i64), i64 0, i64 0, i64 -1 }
|
||||
; ALIAS-NEXT: @__asan_global_c = private global { i64, i64, i64, i64, i64, i64, i64, i64 } { i64 ptrtoint ({ [2 x i32], [24 x i8] }* @2 to i64), i64 8, i64 32, i64 ptrtoint ([2 x i8]* @___asan_gen_.3 to i64), i64 ptrtoint ([8 x i8]* @___asan_gen_ to i64), i64 0, i64 0, i64 -1 }
|
||||
; ALIAS-NEXT: @__asan_global_d = private global { i64, i64, i64, i64, i64, i64, i64, i64 } { i64 ptrtoint ({ [2 x i32], [24 x i8] }* @3 to i64), i64 8, i64 32, i64 ptrtoint ([2 x i8]* @___asan_gen_.4 to i64), i64 ptrtoint ([8 x i8]* @___asan_gen_ to i64), i64 0, i64 0, i64 0 }
|
||||
; ALIAS: @0 = private alias {{.*}} @a
|
||||
; ALIAS-NEXT: @1 = private alias {{.*}} @b
|
||||
; ALIAS-NEXT: @2 = private alias {{.*}} @c
|
||||
|
@ -8,13 +8,13 @@
|
||||
; CHECK: $"??_C@_04JIHMPGLA@asdf?$AA@" = comdat any
|
||||
|
||||
; CHECK: @"??_C@_04JIHMPGLA@asdf?$AA@" =
|
||||
; CHECK-SAME: linkonce_odr dso_local constant { [5 x i8], [59 x i8] }
|
||||
; CHECK-SAME: { [5 x i8] c"asdf\00", [59 x i8] zeroinitializer }, comdat, align 32
|
||||
; CHECK-SAME: linkonce_odr dso_local constant { [5 x i8], [27 x i8] }
|
||||
; CHECK-SAME: { [5 x i8] c"asdf\00", [27 x i8] zeroinitializer }, comdat, align 32
|
||||
|
||||
; CHECK: @"__asan_global_??_C@_04JIHMPGLA@asdf?$AA@" =
|
||||
; CHECK-SAME: private global { i64, i64, i64, i64, i64, i64, i64, i64 }
|
||||
; CHECK-SAME: { i64 ptrtoint ({ [5 x i8], [59 x i8] }* @"??_C@_04JIHMPGLA@asdf?$AA@" to i64),
|
||||
; CHECK-SAME: i64 5, i64 64, i64 ptrtoint ([17 x i8]* @___asan_gen_.1 to i64),
|
||||
; CHECK-SAME: { i64 ptrtoint ({ [5 x i8], [27 x i8] }* @"??_C@_04JIHMPGLA@asdf?$AA@" to i64),
|
||||
; CHECK-SAME: i64 5, i64 32, i64 ptrtoint ([17 x i8]* @___asan_gen_.1 to i64),
|
||||
; CHECK-SAME: i64 ptrtoint ([8 x i8]* @___asan_gen_ to i64), i64 0,
|
||||
; CHECK-SAME: i64 ptrtoint ({ [6 x i8]*, i32, i32 }* @___asan_gen_.3 to i64), i64 0 },
|
||||
; CHECK-SAME: section ".ASAN$GL", comdat($"??_C@_04JIHMPGLA@asdf?$AA@"), align 64
|
||||
|
Loading…
Reference in New Issue
Block a user