[llvm-commits] [compiler-rt] r167727 - in /compiler-rt/trunk/lib/asan/lit_tests: Helpers/initialization-blacklist-extra.cc Helpers/initialization-blacklist.txt initialization-blacklist.cc

Alexey Samsonov samsonov at google.com
Mon Nov 12 06:03:01 PST 2012


Author: samsonov
Date: Mon Nov 12 08:03:00 2012
New Revision: 167727

URL: http://llvm.org/viewvc/llvm-project?rev=167727&view=rev
Log:
[ASan] test blacklist functionality for global-init-order checker (r167725)

Added:
    compiler-rt/trunk/lib/asan/lit_tests/Helpers/initialization-blacklist-extra.cc
    compiler-rt/trunk/lib/asan/lit_tests/Helpers/initialization-blacklist.txt
    compiler-rt/trunk/lib/asan/lit_tests/initialization-blacklist.cc

Added: compiler-rt/trunk/lib/asan/lit_tests/Helpers/initialization-blacklist-extra.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/lit_tests/Helpers/initialization-blacklist-extra.cc?rev=167727&view=auto
==============================================================================
--- compiler-rt/trunk/lib/asan/lit_tests/Helpers/initialization-blacklist-extra.cc (added)
+++ compiler-rt/trunk/lib/asan/lit_tests/Helpers/initialization-blacklist-extra.cc Mon Nov 12 08:03:00 2012
@@ -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; }

Added: compiler-rt/trunk/lib/asan/lit_tests/Helpers/initialization-blacklist.txt
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/lit_tests/Helpers/initialization-blacklist.txt?rev=167727&view=auto
==============================================================================
--- compiler-rt/trunk/lib/asan/lit_tests/Helpers/initialization-blacklist.txt (added)
+++ compiler-rt/trunk/lib/asan/lit_tests/Helpers/initialization-blacklist.txt Mon Nov 12 08:03:00 2012
@@ -0,0 +1,2 @@
+global-init:*badGlobal*
+global-init-type:*badNamespace::BadClass*

Added: compiler-rt/trunk/lib/asan/lit_tests/initialization-blacklist.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/lit_tests/initialization-blacklist.cc?rev=167727&view=auto
==============================================================================
--- compiler-rt/trunk/lib/asan/lit_tests/initialization-blacklist.cc (added)
+++ compiler-rt/trunk/lib/asan/lit_tests/initialization-blacklist.cc Mon Nov 12 08:03:00 2012
@@ -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;
+}





More information about the llvm-commits mailing list