1
- ; RUN: opt -mtriple=aarch64-unknown-linux-gnu -passes=hwasan -hwasan-instrument-with-calls -hwasan-use-stack-safety=1 -hwasan-generate-tags-with-calls -S < %s | FileCheck %s --check-prefixes=SAFETY,CHECK
1
+ ; RUN: opt -pass-remarks-output=%t.pass-remarks -mtriple=aarch64-unknown-linux-gnu -passes=hwasan -hwasan-instrument-with-calls -hwasan-use-stack-safety=1 -hwasan-generate-tags-with-calls -S < %s | FileCheck %s --check-prefixes=SAFETY,CHECK
2
+ ; RUN: cat %t.pass-remarks | FileCheck %s --check-prefixes=SAFETY-REMARKS
2
3
; RUN: opt -mtriple=aarch64-unknown-linux-gnu -passes=hwasan -hwasan-instrument-with-calls -hwasan-use-stack-safety=0 -hwasan-generate-tags-with-calls -S < %s | FileCheck %s --check-prefixes=NOSAFETY,CHECK
3
4
; RUN: opt -mtriple=aarch64-unknown-linux-gnu -passes=hwasan -hwasan-instrument-with-calls -hwasan-generate-tags-with-calls -S < %s | FileCheck %s --check-prefixes=SAFETY,CHECK
4
5
; RUN: opt -mtriple=aarch64-unknown-linux-gnu -passes=hwasan -hwasan-instrument-stack=0 -hwasan-instrument-with-calls -hwasan-generate-tags-with-calls -S < %s | FileCheck %s --check-prefixes=NOSTACK,CHECK
20
21
; SAFETY-NOT: call {{.*}}__hwasan_store
21
22
; NOSTACK-NOT: call {{.*}}__hwasan_generate_tag
22
23
; NOSTACK-NOT: call {{.*}}__hwasan_store
24
+ ; SAFETY-REMARKS: --- !Passed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_simple
23
25
%buf.sroa.0 = alloca i8 , align 4
24
26
call void @llvm.lifetime.start.p0 (i64 1 , ptr nonnull %buf.sroa.0 )
25
27
store volatile i8 0 , ptr %buf.sroa.0 , align 4 , !tbaa !8
37
39
; SAFETY-NOT: call {{.*}}__hwasan_store
38
40
; NOSTACK-NOT: call {{.*}}__hwasan_generate_tag
39
41
; NOSTACK-NOT: call {{.*}}__hwasan_store
42
+ ; SAFETY-REMARKS: --- !Passed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_cmpxchg
40
43
%buf.sroa.0 = alloca i8 , align 4
41
44
call void @llvm.lifetime.start.p0 (i64 1 , ptr nonnull %buf.sroa.0 )
42
45
%0 = cmpxchg ptr %buf.sroa.0 , i8 1 , i8 2 monotonic monotonic , align 4
54
57
; SAFETY-NOT: call {{.*}}__hwasan_store
55
58
; NOSTACK-NOT: call {{.*}}__hwasan_generate_tag
56
59
; NOSTACK-NOT: call {{.*}}__hwasan_store
60
+ ; SAFETY-REMARKS: --- !Passed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_atomicrwm
57
61
%buf.sroa.0 = alloca i8 , align 4
58
62
call void @llvm.lifetime.start.p0 (i64 1 , ptr nonnull %buf.sroa.0 )
59
63
%0 = atomicrmw add ptr %buf.sroa.0 , i8 1 monotonic , align 4
71
75
; SAFETY-NOT: call {{.*}}__hwasan_store
72
76
; NOSTACK-NOT: call {{.*}}__hwasan_generate_tag
73
77
; NOSTACK-NOT: call {{.*}}__hwasan_store
78
+ ; SAFETY-REMARKS: --- !Passed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_use
74
79
%buf.sroa.0 = alloca i8 , align 4
75
80
call void @use (ptr nonnull %buf.sroa.0 )
76
81
call void @llvm.lifetime.start.p0 (i64 1 , ptr nonnull %buf.sroa.0 )
89
94
; SAFETY-NOT: call {{.*}}__hwasan_store
90
95
; NOSTACK-NOT: call {{.*}}__hwasan_generate_tag
91
96
; NOSTACK-NOT: call {{.*}}__hwasan_store
97
+ ; SAFETY-REMARKS: --- !Passed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_in_range
92
98
%buf.sroa.0 = alloca [10 x i8 ], align 4
93
99
call void @llvm.lifetime.start.p0 (i64 10 , ptr nonnull %buf.sroa.0 )
94
100
store volatile i8 0 , ptr %buf.sroa.0 , align 4 , !tbaa !8
@@ -106,6 +112,7 @@ entry:
106
112
; SAFETY-NOT: call {{.*}}__hwasan_store
107
113
; NOSTACK-NOT: call {{.*}}__hwasan_generate_tag
108
114
; NOSTACK-NOT: call {{.*}}__hwasan_store
115
+ ; SAFETY-REMARKS: --- !Passed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_in_range2
109
116
%buf.sroa.0 = alloca [10 x i8 ], align 4
110
117
%ptr = getelementptr [10 x i8 ], ptr %buf.sroa.0 , i32 0 , i32 9
111
118
call void @llvm.lifetime.start.p0 (i64 10 , ptr nonnull %buf.sroa.0 )
@@ -123,6 +130,7 @@ entry:
123
130
; SAFETY-NOT: call {{.*}}__hwasan_memset
124
131
; NOSTACK-NOT: call {{.*}}__hwasan_generate_tag
125
132
; NOSTACK-NOT: call {{.*}}__hwasan_memset
133
+ ; SAFETY-REMARKS: --- !Passed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_in_range3
126
134
%buf.sroa.0 = alloca [10 x i8 ], align 4
127
135
%ptr = getelementptr [10 x i8 ], ptr %buf.sroa.0 , i32 0 , i32 9
128
136
call void @llvm.memset.p0.i32 (ptr %ptr , i8 0 , i32 1 , i1 true )
@@ -138,6 +146,7 @@ entry:
138
146
; SAFETY-NOT: call {{.*}}__hwasan_memmove
139
147
; NOSTACK-NOT: call {{.*}}__hwasan_generate_tag
140
148
; NOSTACK-NOT: call {{.*}}__hwasan_memmove
149
+ ; SAFETY-REMARKS: --- !Passed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_in_range4
141
150
%buf.sroa.0 = alloca [10 x i8 ], align 4
142
151
%ptr = getelementptr [10 x i8 ], ptr %buf.sroa.0 , i32 0 , i32 9
143
152
call void @llvm.memmove.p0.p0.i32 (ptr %ptr , ptr %ptr , i32 1 , i1 true )
@@ -153,6 +162,7 @@ entry:
153
162
; SAFETY-NOT: call {{.*}}__hwasan_memmove
154
163
; NOSTACK-NOT: call {{.*}}__hwasan_generate_tag
155
164
; NOSTACK-NOT: call {{.*}}__hwasan_memmove
165
+ ; SAFETY-REMARKS: --- !Passed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_in_range5
156
166
%buf.sroa.0 = alloca [10 x i8 ], align 4
157
167
%ptr = getelementptr [10 x i8 ], ptr %buf.sroa.0 , i32 0 , i32 9
158
168
%buf.sroa.1 = alloca [10 x i8 ], align 4
@@ -171,6 +181,7 @@ entry:
171
181
; SAFETY: call {{.*}}__hwasan_store
172
182
; NOSTACK-NOT: call {{.*}}__hwasan_generate_tag
173
183
; NOSTACK-NOT: call {{.*}}__hwasan_store
184
+ ; SAFETY-REMARKS: --- !Missed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_out_of_range
174
185
%buf.sroa.0 = alloca [10 x i8 ], align 4
175
186
%ptr = getelementptr [10 x i8 ], ptr %buf.sroa.0 , i32 0 , i32 10
176
187
call void @llvm.lifetime.start.p0 (i64 10 , ptr nonnull %buf.sroa.0 )
@@ -188,6 +199,7 @@ entry:
188
199
; SAFETY: call {{.*}}__hwasan_store
189
200
; NOSTACK-NOT: call {{.*}}__hwasan_generate_tag
190
201
; NOSTACK-NOT: call {{.*}}__hwasan_store
202
+ ; SAFETY-REMARKS: --- !Missed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_out_of_range2
191
203
%buf.sroa.0 = alloca [10 x i8 ], align 4
192
204
%ptr = getelementptr [10 x i8 ], ptr %buf.sroa.0 , i32 0 , i32 10
193
205
call void @llvm.lifetime.start.p0 (i64 10 , ptr nonnull %buf.sroa.0 )
@@ -205,6 +217,7 @@ entry:
205
217
; SAFETY: call {{.*}}__hwasan_memset
206
218
; NOSTACK-NOT: call {{.*}}__hwasan_generate_tag
207
219
; NOSTACK-NOT: call {{.*}}__hwasan_memset
220
+ ; SAFETY-REMARKS: --- !Missed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_out_of_range3
208
221
%buf.sroa.0 = alloca [10 x i8 ], align 4
209
222
%ptr = getelementptr [10 x i8 ], ptr %buf.sroa.0 , i32 0 , i32 9
210
223
call void @llvm.memset.p0.i32 (ptr %ptr , i8 0 , i32 2 , i1 true )
@@ -220,6 +233,7 @@ entry:
220
233
; SAFETY: call {{.*}}__hwasan_memmove
221
234
; NOSTACK-NOT: call {{.*}}__hwasan_generate_tag
222
235
; NOSTACK-NOT: call {{.*}}__hwasan_memmove
236
+ ; SAFETY-REMARKS: --- !Missed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_out_of_range4
223
237
%buf.sroa.0 = alloca [10 x i8 ], align 4
224
238
%ptr = getelementptr [10 x i8 ], ptr %buf.sroa.0 , i32 0 , i32 9
225
239
call void @llvm.memmove.p0.p0.i32 (ptr %ptr , ptr %ptr , i32 2 , i1 true )
@@ -235,6 +249,7 @@ entry:
235
249
; SAFETY: call {{.*}}__hwasan_memmove
236
250
; NOSTACK-NOT: call {{.*}}__hwasan_generate_tag
237
251
; NOSTACK-NOT: call {{.*}}__hwasan_memmove
252
+ ; SAFETY-REMARKS: --- !Missed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_out_of_range5
238
253
%buf.sroa.0 = alloca [10 x i8 ], align 4
239
254
%ptr = getelementptr [10 x i8 ], ptr %buf.sroa.0 , i32 0 , i32 9
240
255
%buf.sroa.1 = alloca [10 x i8 ], align 4
@@ -256,6 +271,7 @@ entry:
256
271
; SAFETY: call {{.*}}__hwasan_store
257
272
; NOSTACK-NOT: call {{.*}}__hwasan_generate_tag
258
273
; NOSTACK-NOT: call {{.*}}__hwasan_store
274
+ ; SAFETY-REMARKS: --- !Missed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_out_of_range6
259
275
%buf.sroa.0 = alloca [10 x i8 ], align 4
260
276
%ptr = getelementptr [10 x i8 ], ptr %buf.sroa.0 , i32 0 , i32 10
261
277
call void @llvm.lifetime.start.p0 (i64 10 , ptr nonnull %buf.sroa.0 )
@@ -275,6 +291,7 @@ entry:
275
291
; SAFETY: call {{.*}}__hwasan_store
276
292
; NOSTACK-NOT: call {{.*}}__hwasan_generate_tag
277
293
; NOSTACK-NOT: call {{.*}}__hwasan_store
294
+ ; SAFETY-REMARKS: --- !Missed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_potentially_out_of_range
278
295
%buf.sroa.0 = alloca [10 x i8 ], align 4
279
296
%off = call i32 @getoffset ()
280
297
%ptr = getelementptr [10 x i8 ], ptr %buf.sroa.0 , i32 0 , i32 %off
@@ -293,6 +310,7 @@ entry:
293
310
; SAFETY: call {{.*}}__hwasan_memmove
294
311
; NOSTACK-NOT: call {{.*}}__hwasan_generate_tag
295
312
; NOSTACK: call {{.*}}__hwasan_memmove
313
+ ; SAFETY-REMARKS: --- !Missed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_potentially_out_of_range2
296
314
%buf.sroa.0 = alloca [10 x i8 ], align 4
297
315
%ptr = getelementptr [10 x i8 ], ptr %buf.sroa.0 , i32 0 , i32 9
298
316
call void @llvm.memmove.p0.p0.i32 (ptr %ptr , ptr %a , i32 1 , i1 true )
@@ -309,6 +327,7 @@ entry:
309
327
; SAFETY: call {{.*}}__hwasan_store
310
328
; NOSTACK-NOT: call {{.*}}__hwasan_generate_tag
311
329
; NOSTACK: call {{.*}}__hwasan_store
330
+ ; SAFETY-REMARKS: --- !Missed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_unclear
312
331
%buf.sroa.0 = alloca i8 , align 4
313
332
%ptr = call ptr @getptr (ptr %buf.sroa.0 )
314
333
call void @llvm.lifetime.start.p0 (i64 10 , ptr nonnull %ptr )
@@ -326,6 +345,7 @@ entry:
326
345
; SAFETY: call {{.*}}__hwasan_store
327
346
; NOSTACK-NOT: call {{.*}}__hwasan_generate_tag
328
347
; NOSTACK: call {{.*}}__hwasan_store
348
+ ; SAFETY-REMARKS: --- !Missed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_select
329
349
%x = call ptr @getptr (ptr %a )
330
350
%buf.sroa.0 = alloca i8 , align 4
331
351
call void @llvm.lifetime.start.p0 (i64 1 , ptr nonnull %buf.sroa.0 )
@@ -346,6 +366,7 @@ entry:
346
366
; SAFETY-NOT: call {{.*}}__hwasan_store
347
367
; NOSTACK-NOT: call {{.*}}__hwasan_generate_tag
348
368
; NOSTACK-NOT: call {{.*}}__hwasan_store
369
+ ; SAFETY-REMARKS: --- !Passed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_retptr
349
370
%buf.sroa.0 = alloca i8 , align 4
350
371
call void @llvm.lifetime.start.p0 (i64 1 , ptr nonnull %buf.sroa.0 )
351
372
%ptr = call ptr @retptr (ptr %buf.sroa.0 )
0 commit comments