| // RUN: rm -rf %t |
| // RUN: split-file %s %t |
| |
| // RUN: %clang -target x86_64-unknown-linux-gnu -S -emit-llvm -fsanitize=address %t/test.c -o - | FileCheck %s --check-prefixes=SANITIZE |
| |
| // RUN: %clang -target x86_64-unknown-linux-gnu -S -emit-llvm -fsanitize=address -fsanitize-ignorelist=%t/order-0.ignorelist %t/test.c -o - | FileCheck %s --check-prefixes=IGNORE |
| // RUN: %clang -target x86_64-unknown-linux-gnu -S -emit-llvm -fsanitize=address -fsanitize-ignorelist=%t/order-1.ignorelist %t/test.c -o - | FileCheck %s --check-prefixes=SANITIZE |
| // RUN: %clang -target x86_64-unknown-linux-gnu -S -emit-llvm -fsanitize=address -fsanitize-ignorelist=%t/order-2.ignorelist %t/test.c -o - | FileCheck %s --check-prefixes=IGNORE |
| // RUN: %clang -target x86_64-unknown-linux-gnu -S -emit-llvm -fsanitize=address -fsanitize-ignorelist=%t/order-3.ignorelist %t/test.c -o - | FileCheck %s --check-prefixes=SANITIZE |
| |
| // The same type can appear multiple times within an ignorelist. Any ``=sanitize`` type |
| // entries enable sanitizer instrumentation, even if it was ignored by entries before. |
| // If multiple entries match the source, then the latest entry takes the |
| // precedence. |
| |
| //--- order-0.ignorelist |
| global:global_array |
| |
| //--- order-1.ignorelist |
| global:global_array |
| global:global_array=sanitize |
| |
| //--- order-2.ignorelist |
| global:* |
| global:global_array=sanitize |
| global:global_array |
| |
| //--- order-3.ignorelist |
| global:* |
| global:global_array=sanitize |
| global:global* |
| global:*array=sanitize |
| |
| //--- test.c |
| // SANITIZE: @global_array ={{.*}} global {{.*}}, comdat, align {{.*}} |
| // IGNORE: @global_array ={{.*}} global {{.*}}, no_sanitize_address, align {{.*}} |
| unsigned global_array[100] = {-1}; |