1// Tests that global tags wrap around successfully after tag 0xff on aarch64 or
2// 0x3f on x86_64.
3// RUN: %clang_hwasan %s -o %t
4// RUN: %run %t 0
5
6#include <stdlib.h>
7
8// Create >256 globals to ensure every tag is used.
9int x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16,
10 x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31,
11 x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46,
12 x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61,
13 x62, x63, x64, x65, x66, x67, x68, x69, x70, x71, x72, x73, x74, x75, x76,
14 x77, x78, x79, x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x90, x91,
15 x92, x93, x94, x95, x96, x97, x98, x99, x100, x101, x102, x103, x104, x105,
16 x106, x107, x108, x109, x110, x111, x112, x113, x114, x115, x116, x117,
17 x118, x119, x120, x121, x122, x123, x124, x125, x126, x127, x128, x129,
18 x130, x131, x132, x133, x134, x135, x136, x137, x138, x139, x140, x141,
19 x142, x143, x144, x145, x146, x147, x148, x149, x150, x151, x152, x153,
20 x154, x155, x156, x157, x158, x159, x160, x161, x162, x163, x164, x165,
21 x166, x167, x168, x169, x170, x171, x172, x173, x174, x175, x176, x177,
22 x178, x179, x180, x181, x182, x183, x184, x185, x186, x187, x188, x189,
23 x190, x191, x192, x193, x194, x195, x196, x197, x198, x199, x200, x201,
24 x202, x203, x204, x205, x206, x207, x208, x209, x210, x211, x212, x213,
25 x214, x215, x216, x217, x218, x219, x220, x221, x222, x223, x224, x225,
26 x226, x227, x228, x229, x230, x231, x232, x233, x234, x235, x236, x237,
27 x238, x239, x240, x241, x242, x243, x244, x245, x246, x247, x248, x249,
28 x250, x251, x252, x253, x254, x255, x256;
29
30int main(int argc, char **argv) {
31 int i = atoi(nptr: argv[1]);
32
33 // Write to every global to make sure tags match even after wrapping around
34 // to 0.
35 (&x0)[i] = 1;
36 (&x1)[i] = 1;
37 (&x2)[i] = 1;
38 (&x3)[i] = 1;
39 (&x4)[i] = 1;
40 (&x5)[i] = 1;
41 (&x6)[i] = 1;
42 (&x7)[i] = 1;
43 (&x8)[i] = 1;
44 (&x9)[i] = 1;
45 (&x10)[i] = 1;
46 (&x11)[i] = 1;
47 (&x12)[i] = 1;
48 (&x13)[i] = 1;
49 (&x14)[i] = 1;
50 (&x15)[i] = 1;
51 (&x16)[i] = 1;
52 (&x17)[i] = 1;
53 (&x18)[i] = 1;
54 (&x19)[i] = 1;
55 (&x20)[i] = 1;
56 (&x21)[i] = 1;
57 (&x22)[i] = 1;
58 (&x23)[i] = 1;
59 (&x24)[i] = 1;
60 (&x25)[i] = 1;
61 (&x26)[i] = 1;
62 (&x27)[i] = 1;
63 (&x28)[i] = 1;
64 (&x29)[i] = 1;
65 (&x30)[i] = 1;
66 (&x31)[i] = 1;
67 (&x32)[i] = 1;
68 (&x33)[i] = 1;
69 (&x34)[i] = 1;
70 (&x35)[i] = 1;
71 (&x36)[i] = 1;
72 (&x37)[i] = 1;
73 (&x38)[i] = 1;
74 (&x39)[i] = 1;
75 (&x40)[i] = 1;
76 (&x41)[i] = 1;
77 (&x42)[i] = 1;
78 (&x43)[i] = 1;
79 (&x44)[i] = 1;
80 (&x45)[i] = 1;
81 (&x46)[i] = 1;
82 (&x47)[i] = 1;
83 (&x48)[i] = 1;
84 (&x49)[i] = 1;
85 (&x50)[i] = 1;
86 (&x51)[i] = 1;
87 (&x52)[i] = 1;
88 (&x53)[i] = 1;
89 (&x54)[i] = 1;
90 (&x55)[i] = 1;
91 (&x56)[i] = 1;
92 (&x57)[i] = 1;
93 (&x58)[i] = 1;
94 (&x59)[i] = 1;
95 (&x60)[i] = 1;
96 (&x61)[i] = 1;
97 (&x62)[i] = 1;
98 (&x63)[i] = 1;
99 (&x64)[i] = 1;
100 (&x65)[i] = 1;
101 (&x66)[i] = 1;
102 (&x67)[i] = 1;
103 (&x68)[i] = 1;
104 (&x69)[i] = 1;
105 (&x70)[i] = 1;
106 (&x71)[i] = 1;
107 (&x72)[i] = 1;
108 (&x73)[i] = 1;
109 (&x74)[i] = 1;
110 (&x75)[i] = 1;
111 (&x76)[i] = 1;
112 (&x77)[i] = 1;
113 (&x78)[i] = 1;
114 (&x79)[i] = 1;
115 (&x80)[i] = 1;
116 (&x81)[i] = 1;
117 (&x82)[i] = 1;
118 (&x83)[i] = 1;
119 (&x84)[i] = 1;
120 (&x85)[i] = 1;
121 (&x86)[i] = 1;
122 (&x87)[i] = 1;
123 (&x88)[i] = 1;
124 (&x89)[i] = 1;
125 (&x90)[i] = 1;
126 (&x91)[i] = 1;
127 (&x92)[i] = 1;
128 (&x93)[i] = 1;
129 (&x94)[i] = 1;
130 (&x95)[i] = 1;
131 (&x96)[i] = 1;
132 (&x97)[i] = 1;
133 (&x98)[i] = 1;
134 (&x99)[i] = 1;
135 (&x100)[i] = 1;
136 (&x101)[i] = 1;
137 (&x102)[i] = 1;
138 (&x103)[i] = 1;
139 (&x104)[i] = 1;
140 (&x105)[i] = 1;
141 (&x106)[i] = 1;
142 (&x107)[i] = 1;
143 (&x108)[i] = 1;
144 (&x109)[i] = 1;
145 (&x110)[i] = 1;
146 (&x111)[i] = 1;
147 (&x112)[i] = 1;
148 (&x113)[i] = 1;
149 (&x114)[i] = 1;
150 (&x115)[i] = 1;
151 (&x116)[i] = 1;
152 (&x117)[i] = 1;
153 (&x118)[i] = 1;
154 (&x119)[i] = 1;
155 (&x120)[i] = 1;
156 (&x121)[i] = 1;
157 (&x122)[i] = 1;
158 (&x123)[i] = 1;
159 (&x124)[i] = 1;
160 (&x125)[i] = 1;
161 (&x126)[i] = 1;
162 (&x127)[i] = 1;
163 (&x128)[i] = 1;
164 (&x129)[i] = 1;
165 (&x130)[i] = 1;
166 (&x131)[i] = 1;
167 (&x132)[i] = 1;
168 (&x133)[i] = 1;
169 (&x134)[i] = 1;
170 (&x135)[i] = 1;
171 (&x136)[i] = 1;
172 (&x137)[i] = 1;
173 (&x138)[i] = 1;
174 (&x139)[i] = 1;
175 (&x140)[i] = 1;
176 (&x141)[i] = 1;
177 (&x142)[i] = 1;
178 (&x143)[i] = 1;
179 (&x144)[i] = 1;
180 (&x145)[i] = 1;
181 (&x146)[i] = 1;
182 (&x147)[i] = 1;
183 (&x148)[i] = 1;
184 (&x149)[i] = 1;
185 (&x150)[i] = 1;
186 (&x151)[i] = 1;
187 (&x152)[i] = 1;
188 (&x153)[i] = 1;
189 (&x154)[i] = 1;
190 (&x155)[i] = 1;
191 (&x156)[i] = 1;
192 (&x157)[i] = 1;
193 (&x158)[i] = 1;
194 (&x159)[i] = 1;
195 (&x160)[i] = 1;
196 (&x161)[i] = 1;
197 (&x162)[i] = 1;
198 (&x163)[i] = 1;
199 (&x164)[i] = 1;
200 (&x165)[i] = 1;
201 (&x166)[i] = 1;
202 (&x167)[i] = 1;
203 (&x168)[i] = 1;
204 (&x169)[i] = 1;
205 (&x170)[i] = 1;
206 (&x171)[i] = 1;
207 (&x172)[i] = 1;
208 (&x173)[i] = 1;
209 (&x174)[i] = 1;
210 (&x175)[i] = 1;
211 (&x176)[i] = 1;
212 (&x177)[i] = 1;
213 (&x178)[i] = 1;
214 (&x179)[i] = 1;
215 (&x180)[i] = 1;
216 (&x181)[i] = 1;
217 (&x182)[i] = 1;
218 (&x183)[i] = 1;
219 (&x184)[i] = 1;
220 (&x185)[i] = 1;
221 (&x186)[i] = 1;
222 (&x187)[i] = 1;
223 (&x188)[i] = 1;
224 (&x189)[i] = 1;
225 (&x190)[i] = 1;
226 (&x191)[i] = 1;
227 (&x192)[i] = 1;
228 (&x193)[i] = 1;
229 (&x194)[i] = 1;
230 (&x195)[i] = 1;
231 (&x196)[i] = 1;
232 (&x197)[i] = 1;
233 (&x198)[i] = 1;
234 (&x199)[i] = 1;
235 (&x200)[i] = 1;
236 (&x201)[i] = 1;
237 (&x202)[i] = 1;
238 (&x203)[i] = 1;
239 (&x204)[i] = 1;
240 (&x205)[i] = 1;
241 (&x206)[i] = 1;
242 (&x207)[i] = 1;
243 (&x208)[i] = 1;
244 (&x209)[i] = 1;
245 (&x210)[i] = 1;
246 (&x211)[i] = 1;
247 (&x212)[i] = 1;
248 (&x213)[i] = 1;
249 (&x214)[i] = 1;
250 (&x215)[i] = 1;
251 (&x216)[i] = 1;
252 (&x217)[i] = 1;
253 (&x218)[i] = 1;
254 (&x219)[i] = 1;
255 (&x220)[i] = 1;
256 (&x221)[i] = 1;
257 (&x222)[i] = 1;
258 (&x223)[i] = 1;
259 (&x224)[i] = 1;
260 (&x225)[i] = 1;
261 (&x226)[i] = 1;
262 (&x227)[i] = 1;
263 (&x228)[i] = 1;
264 (&x229)[i] = 1;
265 (&x230)[i] = 1;
266 (&x231)[i] = 1;
267 (&x232)[i] = 1;
268 (&x233)[i] = 1;
269 (&x234)[i] = 1;
270 (&x235)[i] = 1;
271 (&x236)[i] = 1;
272 (&x237)[i] = 1;
273 (&x238)[i] = 1;
274 (&x239)[i] = 1;
275 (&x240)[i] = 1;
276 (&x241)[i] = 1;
277 (&x242)[i] = 1;
278 (&x243)[i] = 1;
279 (&x244)[i] = 1;
280 (&x245)[i] = 1;
281 (&x246)[i] = 1;
282 (&x247)[i] = 1;
283 (&x248)[i] = 1;
284 (&x249)[i] = 1;
285 (&x250)[i] = 1;
286 (&x251)[i] = 1;
287 (&x252)[i] = 1;
288 (&x253)[i] = 1;
289 (&x254)[i] = 1;
290 (&x255)[i] = 1;
291 (&x256)[i] = 1;
292
293 return 0;
294}
295

source code of compiler-rt/test/hwasan/TestCases/globals-wrap-tag.c