| // 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; |
| } |