• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; Test of global redzone layout
2
3; REQUIRES: allow_dump
4
5; RUN: %p2i -i %s --args -threads=0 -fsanitize-address \
6; RUN:     | FileCheck %s
7; RUN: %p2i -i %s --args -verbose=global_init,inst -threads=0 \
8; RUN:     -fsanitize-address | FileCheck --check-prefix=DUMP %s
9
10; The array of redzones
11
12; DUMP-LABEL: ========= Instrumented Globals =========
13; DUMP: @__$rz_array = internal constant <{ i32, i32, i32, i32, i32, i32 }>
14; DUMP:         <{ i32 ptrtoint ([32 x i8]* @__$rz0 to i32), i32 ptrtoint ([32 x i8]* @__$rz1 to i32),
15; DUMP:         i32 ptrtoint ([32 x i8]* @__$rz2 to i32), i32 ptrtoint ([32 x i8]* @__$rz3 to i32),
16; DUMP:         i32 ptrtoint ([32 x i8]* @__$rz4 to i32), i32 ptrtoint ([32 x i8]* @__$rz5 to i32) }>
17
18; (SPACE is 32 ascii)
19; DUMP-NEXT: @__$rz_sizes = internal constant <{ [4 x i8], [4 x i8], [4 x i8], [4 x i8], [4 x i8],
20; DUMP-SAME: [4 x i8] }> <{ [4 x i8] c" \00\00\00", [4 x i8] c" \00\00\00", [4 x i8] c" \00\00\00",
21; DUMP-SAME: [4 x i8] c" \00\00\00", [4 x i8] c" \00\00\00", [4 x i8] c" \00\00\00" }>
22
23; CHECK-LABEL: .type   __$rz_array,%object
24; CHECK-NEXT: .section   .rodata
25; CHECK-NEXT: __$rz_array:
26; CHECK-NEXT: .long   __$rz0
27; CHECK-NEXT: .long   __$rz1
28; CHECK-NEXT: .long   __$rz2
29; CHECK-NEXT: .long   __$rz3
30; CHECK-NEXT: .long   __$rz4
31; CHECK-NEXT: .long   __$rz5
32; CHECK-LABEL: .type   __$rz_sizes,%object
33; CHECK-NEXT: .section   .rodata
34; CHECK-NEXT: __$rz_sizes:
35; CHECK-NEXT: .byte   32
36; CHECK-NEXT: .byte   0
37; CHECK-NEXT: .byte   0
38; CHECK-NEXT: .byte   0
39; CHECK-NEXT: .byte   32
40; CHECK-NEXT: .byte   0
41; CHECK-NEXT: .byte   0
42; CHECK-NEXT: .byte   0
43; CHECK-NEXT: .byte   32
44; CHECK-NEXT: .byte   0
45; CHECK-NEXT: .byte   0
46; CHECK-NEXT: .byte   0
47; CHECK-NEXT: .byte   32
48; CHECK-NEXT: .byte   0
49; CHECK-NEXT: .byte   0
50; CHECK-NEXT: .byte   0
51; CHECK-NEXT: .byte   32
52; CHECK-NEXT: .byte   0
53; CHECK-NEXT: .byte   0
54; CHECK-NEXT: .byte   0
55; CHECK-NEXT: .byte   32
56; CHECK-NEXT: .byte   0
57; CHECK-NEXT: .byte   0
58; CHECK-NEXT: .byte   0
59
60; A zero-initialized global
61@zeroInitGlobal = internal global [32 x i8] zeroinitializer
62
63; DUMP-NEXT: @__$rz0 = internal global [32 x i8] zeroinitializer
64; DUMP-NEXT: @zeroInitGlobal = internal global [32 x i8] zeroinitializer
65; DUMP-NEXT: @__$rz1 = internal global [32 x i8] zeroinitializer
66
67; CHECK-LABEL: .type   __$rz0,%object
68; CHECK-NEXT: .section   .bss
69; CHECK-NEXT: .p2align   5
70; CHECK-NEXT: __$rz0:
71; CHECK-LABEL: .type   zeroInitGlobal,%object
72; CHECK-NEXT: .section   .bss
73; CHECK-NEXT: .p2align   5
74; CHECK-NEXT: zeroInitGlobal:
75; CHECK-LABEL: .type   __$rz1,%object
76; CHECK-NEXT: .section   .bss
77; CHECK-NEXT: __$rz1:
78
79; A constant-initialized global
80@constInitGlobal = internal constant [32 x i8] c"ABCDEFGHIJKLMNOPQRSTUVWXYZ012345"
81
82; CHECK-LABEL: .type   __$rz2,%object
83; CHECK-NEXT: .section   .rodata
84; CHECK-NEXT: .p2align   5
85; CHECK-NEXT: __$rz2:
86; CHECK-LABEL: .type   constInitGlobal,%object
87; CHECK-NEXT: .section   .rodata
88; CHECK-NEXT: .p2align   5
89; CHECK-NEXT: constInitGlobal:
90; CHECK-LABEL: .type   __$rz3,%object
91; CHECK-NEXT: .section   .rodata
92; CHECK-NEXT: __$rz3:
93
94; DUMP-NEXT: @__$rz2 = internal constant [32 x i8] c"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"
95; DUMP-NEXT: @constInitGlobal = internal constant [32 x i8] c"ABCDEFGHIJKLMNOPQRSTUVWXYZ012345"
96; DUMP-NEXT: @__$rz3 = internal constant [32 x i8] c"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"
97
98; A regular global
99@regInitGlobal = internal global [32 x i8] c"ABCDEFGHIJKLMNOPQRSTUVWXYZ012345"
100
101; DUMP-NEXT: @__$rz4 = internal global [32 x i8] c"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"
102; DUMP-NEXT: @regInitGlobal = internal global [32 x i8] c"ABCDEFGHIJKLMNOPQRSTUVWXYZ012345"
103; DUMP-NEXT: @__$rz5 = internal global [32 x i8] c"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"
104
105; CHECK-LABEL: .type   __$rz4,%object
106; CHECK-NEXT: .section   .data
107; CHECK-NEXT: .p2align   5
108; CHECK-NEXT: __$rz4:
109; CHECK-LABEL: .type   regInitGlobal,%object
110; CHECK-NEXT: .section   .data
111; CHECK-NEXT: .p2align   5
112; CHECK-NEXT: regInitGlobal:
113; CHECK-LABEL: .type   __$rz5,%object
114; CHECK-NEXT: .section   .data
115; CHECK-NEXT: __$rz5:
116
117define internal void @func() {
118  ret void
119}
120
121; DUMP-LABEL: define internal void @func() {
122; CHECK-LABEL: func: