xref: /llvm-project/compiler-rt/test/hwasan/TestCases/globals-wrap-tag.c (revision 4d8b0aa5c0c3ca386c130ab153ae3720100bcd81)
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.
9 int 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 
main(int argc,char ** argv)30 int main(int argc, char **argv) {
31   int i = atoi(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