| 1 | // Make sure the sanitize_address attribute is emitted when using ASan, KASan or |
| 2 | // HWASan. Either __attribute__((no_sanitize("address")) or |
| 3 | // __attribute__((no_sanitize("kernel-address")) disables both ASan and KASan |
| 4 | // instrumentation. |
| 5 | // Same for __attribute__((no_sanitize("hwaddress")) and |
| 6 | // __attribute__((no_sanitize("kernel-hwddress")) and HWASan and KHWASan. |
| 7 | |
| 8 | // RUN: %clang_cc1 -triple i386-unknown-linux -disable-O0-optnone \ |
| 9 | // RUN: -emit-llvm -o - %s | FileCheck -check-prefix=CHECK-NOASAN %s |
| 10 | |
| 11 | // RUN: %clang_cc1 -triple i386-unknown-linux -fsanitize=address \ |
| 12 | // RUN: -disable-O0-optnone -emit-llvm -o - %s | \ |
| 13 | // RUN: FileCheck -check-prefix=CHECK-ASAN %s |
| 14 | |
| 15 | // RUN: %clang_cc1 -triple i386-unknown-linux -fsanitize=kernel-address \ |
| 16 | // RUN: -disable-O0-optnone -emit-llvm -o - %s | \ |
| 17 | // RUN: FileCheck -check-prefix=CHECK-KASAN %s |
| 18 | |
| 19 | // RUN: %clang_cc1 -triple i386-unknown-linux -fsanitize=hwaddress \ |
| 20 | // RUN: -disable-O0-optnone -emit-llvm -o - %s | \ |
| 21 | // RUN: FileCheck -check-prefix=CHECK-HWASAN %s |
| 22 | |
| 23 | // RUN: %clang_cc1 -triple i386-unknown-linux -fsanitize=kernel-hwaddress \ |
| 24 | // RUN: -disable-O0-optnone -emit-llvm -o - %s | \ |
| 25 | // RUN: FileCheck -check-prefix=CHECK-KHWASAN %s |
| 26 | |
| 27 | int HasSanitizeAddress() { return 1; } |
| 28 | // CHECK-NOASAN: {{Function Attrs: noinline nounwind$}} |
| 29 | // CHECK-ASAN: Function Attrs: noinline nounwind sanitize_address |
| 30 | // CHECK-KASAN: Function Attrs: noinline nounwind sanitize_address |
| 31 | // CHECK-HWASAN: Function Attrs: noinline nounwind sanitize_hwaddress |
| 32 | // CHECK-KHWASAN: Function Attrs: noinline nounwind sanitize_hwaddress |
| 33 | |
| 34 | __attribute__((no_sanitize("address"))) int NoSanitizeQuoteAddress() { |
| 35 | return 0; |
| 36 | } |
| 37 | // CHECK-NOASAN: {{Function Attrs: noinline nounwind$}} |
| 38 | // CHECK-ASAN: {{Function Attrs: noinline nounwind$}} |
| 39 | // CHECK-KASAN: {{Function Attrs: noinline nounwind$}} |
| 40 | // CHECK-HWASAN: {{Function Attrs: noinline nounwind sanitize_hwaddress$}} |
| 41 | // CHECK-KHWASAN: {{Function Attrs: noinline nounwind sanitize_hwaddress$}} |
| 42 | |
| 43 | __attribute__((no_sanitize_address)) int NoSanitizeAddress() { return 0; } |
| 44 | // CHECK-NOASAN: {{Function Attrs: noinline nounwind$}} |
| 45 | // CHECK-ASAN: {{Function Attrs: noinline nounwind$}} |
| 46 | // CHECK-KASAN: {{Function Attrs: noinline nounwind$}} |
| 47 | // CHECK-HWASAN: {{Function Attrs: noinline nounwind sanitize_hwaddress$}} |
| 48 | // CHECK-KHWASAN: {{Function Attrs: noinline nounwind sanitize_hwaddress$}} |
| 49 | |
| 50 | __attribute__((no_sanitize("kernel-address"))) int NoSanitizeKernelAddress() { |
| 51 | return 0; |
| 52 | } |
| 53 | // CHECK-NOASAN: {{Function Attrs: noinline nounwind$}} |
| 54 | // CHECK-ASAN: {{Function Attrs: noinline nounwind$}} |
| 55 | // CHECK-KASAN: {{Function Attrs: noinline nounwind$}} |
| 56 | // CHECK-HWASAN: {{Function Attrs: noinline nounwind sanitize_hwaddress$}} |
| 57 | // CHECK-KHWASAN: {{Function Attrs: noinline nounwind sanitize_hwaddress$}} |
| 58 | |
| 59 | __attribute__((no_sanitize("hwaddress"))) int NoSanitizeHWAddress() { |
| 60 | return 0; |
| 61 | } |
| 62 | // CHECK-NOASAN: {{Function Attrs: noinline nounwind$}} |
| 63 | // CHECK-ASAN: {{Function Attrs: noinline nounwind sanitize_address$}} |
| 64 | // CHECK-KASAN: {{Function Attrs: noinline nounwind sanitize_address$}} |
| 65 | // CHECK-HWASAN: {{Function Attrs: noinline nounwind$}} |
| 66 | // CHECK-KHWASAN: {{Function Attrs: noinline nounwind$}} |
| 67 | |
| 68 | __attribute__((no_sanitize("kernel-hwaddress"))) int NoSanitizeKernelHWAddress() { |
| 69 | return 0; |
| 70 | } |
| 71 | // CHECK-NOASAN: {{Function Attrs: noinline nounwind$}} |
| 72 | // CHECK-ASAN: {{Function Attrs: noinline nounwind sanitize_address$}} |
| 73 | // CHECK-KASAN: {{Function Attrs: noinline nounwind sanitize_address$}} |
| 74 | // CHECK-HWASAN: {{Function Attrs: noinline nounwind$}} |
| 75 | // CHECK-KHWASAN: {{Function Attrs: noinline nounwind$}} |
| 76 | |