1 | // RUN: %clang_hwasan -O0 %s -o %t && %run %t 2>&1 | FileCheck %s |
2 | |
3 | // REQUIRES: pointer-tagging |
4 | #include <assert.h> |
5 | #include <sanitizer/hwasan_interface.h> |
6 | #include <stdlib.h> |
7 | |
8 | __attribute__((noinline)) int f(void *caller_frame) { |
9 | int z = 0; |
10 | int *volatile p = &z; |
11 | // Tag of local is never zero. |
12 | assert(__hwasan_tag_pointer(p, 0) != p); |
13 | __hwasan_handle_longjmp(NULL); |
14 | return p[0]; |
15 | } |
16 | |
17 | int main() { |
18 | return f(caller_frame: __builtin_frame_address(0)); |
19 | // CHECK: HWASan is ignoring requested __hwasan_handle_longjmp: |
20 | } |
21 | |