[ASan] test blacklist functionality for global-init-order checker (r167725)

llvm-svn: 167727
This commit is contained in:
Alexey Samsonov 2012-11-12 14:03:00 +00:00
parent b3e91f6ae0
commit c835b9e4a3
3 changed files with 49 additions and 0 deletions

View File

@ -0,0 +1,15 @@
int zero_init() { return 0; }
int badGlobal = zero_init();
int readBadGlobal() { return badGlobal; }
namespace badNamespace {
class BadClass {
public:
BadClass() { value = 0; }
int value;
};
// Global object with non-trivial constructor.
BadClass bad_object;
} // namespace badNamespace
int accessBadObject() { return badNamespace::bad_object.value; }

View File

@ -0,0 +1,2 @@
global-init:*badGlobal*
global-init-type:*badNamespace::BadClass*

View File

@ -0,0 +1,32 @@
// Test for blacklist functionality of initialization-order checker.
// RUN: %clangxx_asan -m64 -O0 %s %p/Helpers/initialization-blacklist-extra.cc\
// RUN: -mllvm -asan-blacklist=%p/Helpers/initialization-blacklist.txt \
// RUN: -mllvm -asan-initialization-order -o %t && %t 2>&1
// RUN: %clangxx_asan -m64 -O1 %s %p/Helpers/initialization-blacklist-extra.cc\
// RUN: -mllvm -asan-blacklist=%p/Helpers/initialization-blacklist.txt \
// RUN: -mllvm -asan-initialization-order -o %t && %t 2>&1
// RUN: %clangxx_asan -m64 -O2 %s %p/Helpers/initialization-blacklist-extra.cc\
// RUN: -mllvm -asan-blacklist=%p/Helpers/initialization-blacklist.txt \
// RUN: -mllvm -asan-initialization-order -o %t && %t 2>&1
// RUN: %clangxx_asan -m32 -O0 %s %p/Helpers/initialization-blacklist-extra.cc\
// RUN: -mllvm -asan-blacklist=%p/Helpers/initialization-blacklist.txt \
// RUN: -mllvm -asan-initialization-order -o %t && %t 2>&1
// RUN: %clangxx_asan -m32 -O1 %s %p/Helpers/initialization-blacklist-extra.cc\
// RUN: -mllvm -asan-blacklist=%p/Helpers/initialization-blacklist.txt \
// RUN: -mllvm -asan-initialization-order -o %t && %t 2>&1
// RUN: %clangxx_asan -m32 -O2 %s %p/Helpers/initialization-blacklist-extra.cc\
// RUN: -mllvm -asan-blacklist=%p/Helpers/initialization-blacklist.txt \
// RUN: -mllvm -asan-initialization-order -o %t && %t 2>&1
// Function is defined in another TU.
int readBadGlobal();
int x = readBadGlobal(); // init-order bug.
// Function is defined in another TU.
int accessBadObject();
int y = accessBadObject(); // init-order bug.
int main(int argc, char **argv) {
return argc + x + y - 1;
}