1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
|
// RUN: rm -rf %t
// RUN: split-file %s %t
// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow -fsanitize-ignorelist=%t/src.ignorelist -emit-llvm %t/test2.c -o - | FileCheck %s --check-prefixes=CHECK2
// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow -fsanitize-ignorelist=%t/src.ignorelist -emit-llvm %t/test1.c -o - | FileCheck %s --check-prefixes=CHECK1,SANITIZE
// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow -fsanitize-ignorelist=%t/src.ignorelist.contradict1 -emit-llvm %t/test1.c -o - | FileCheck %s --check-prefixes=CHECK1,IGNORE
// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow -fsanitize-ignorelist=%t/src.ignorelist.contradict2 -emit-llvm %t/test1.c -o - | FileCheck %s --check-prefixes=CHECK1,SANITIZE
// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow -fsanitize-ignorelist=%t/src.ignorelist.contradict3 -emit-llvm %t/test1.c -o - | FileCheck %s --check-prefixes=CHECK1,IGNORE
// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow -fsanitize-ignorelist=%t/src.ignorelist.contradict4 -emit-llvm %t/test1.c -o - | FileCheck %s --check-prefixes=CHECK1,SANITIZE
// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow -fsanitize-ignorelist=%t/src.ignorelist.contradict5 -emit-llvm %t/test1.c -o - | FileCheck %s --check-prefixes=CHECK1,IGNORE
// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow -fsanitize-ignorelist=%t/src.ignorelist.contradict6 -emit-llvm %t/test1.c -o - | FileCheck %s --check-prefixes=CHECK1,SANITIZE
// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow -fsanitize-ignorelist=%t/src.ignorelist.contradict7 -emit-llvm %t/test1.c -o - | FileCheck %s --check-prefixes=CHECK1,IGNORE
// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow -fsanitize-ignorelist=%t/src.ignorelist.contradict8 -emit-llvm %t/test1.c -o - | FileCheck %s --check-prefixes=CHECK1,SANITIZE
// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow -fsanitize-ignorelist=%t/src.ignorelist -fsanitize-ignorelist=%t/src.ignorelist.contradict9 -emit-llvm %t/test1.c -o - | FileCheck %s --check-prefixes=CHECK1,IGNORE
// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow -fsanitize-ignorelist=%t/src.ignorelist.contradict9 -fsanitize-ignorelist=%t/src.ignorelist -emit-llvm %t/test1.c -o - | FileCheck %s --check-prefixes=CHECK1,SANITIZE
// Verify ubsan only emits checks for files in the allowlist
//--- src.ignorelist
src:*
src:*/test1.c=sanitize
//--- src.ignorelist.contradict1
src:*
src:*/test1.c=sanitize
src:*/test1.c
//--- src.ignorelist.contradict2
src:*
src:*/test1.c
src:*/test1.c=sanitize
//--- src.ignorelist.contradict3
src:*
src:*/test1.c
src:*/test1.c=sanitize
src:*/test1.c
//--- src.ignorelist.contradict4
src:*
src:*/test1.c=sanitize
src:*/test1.c
src:*/test1.c=sanitize
//--- src.ignorelist.contradict5
src:*
src:*/te*t1.c
src:*/tes*1.c=sanitize
src:*/test1.c
//--- src.ignorelist.contradict6
src:*
src:*/tes*1.c=sanitize
src:*/te*t1.c
src:*/t*st1.c=sanitize
//--- src.ignorelist.contradict7
[{unsigned-integer-overflow,signed-integer-overflow}]
src:*
src:*/tes*1.c=sanitize
src:*/te*t1.c
src:*/t*st1.c=sanitize
[{unsigned-integer-overflow,signed-integer-overflow}]
src:*
src:*/te*t1.c
src:*/tes*1.c=sanitize
src:*/test1.c
//--- src.ignorelist.contradict8
[{unsigned-integer-overflow,signed-integer-overflow}]
src:*
src:*/te*t1.c
src:*/tes*1.c=sanitize
src:*/test1.c
[{unsigned-integer-overflow,signed-integer-overflow}]
src:*
src:*/tes*1.c=sanitize
src:*/te*t1.c
src:*/t*st1.c=sanitize
//--- src.ignorelist.contradict9
src:*
src:*/test1.c=sanitize
src:*/test1.c
src:*/test1.c=sanitize
src:*/te*t1.c
src:*/test*.c
//--- test1.c
// CHECK1-LABEL: define dso_local i32 @add
int add(int a, int b) {
// IGNORE: %add = add nsw
// SANITIZE: = call { i32, i1 } @llvm.sadd.with.overflow.i32
return a+b;
}
//--- test2.c
// CHECK2-LABEL: define dso_local i32 @sub
int sub(int a, int b) {
// CHECK2: %sub = sub nsw
return a-b;
}
|