From 7b989859a865be7807bc3fd800cf43a42d852c2f Mon Sep 17 00:00:00 2001 From: Kostya Serebryany Date: Wed, 20 Feb 2013 15:10:22 +0000 Subject: [asan] move preinit_test to Linux since on Mac __asan_init is called from ld-preload-ed runtime llvm-svn: 175625 --- .../lib/asan/lit_tests/Linux/preinit_test.cc | 27 ++++++++++++++++++++++ compiler-rt/lib/asan/lit_tests/preinit_test.cc | 27 ---------------------- 2 files changed, 27 insertions(+), 27 deletions(-) create mode 100644 compiler-rt/lib/asan/lit_tests/Linux/preinit_test.cc delete mode 100644 compiler-rt/lib/asan/lit_tests/preinit_test.cc (limited to 'compiler-rt/lib/asan/lit_tests') diff --git a/compiler-rt/lib/asan/lit_tests/Linux/preinit_test.cc b/compiler-rt/lib/asan/lit_tests/Linux/preinit_test.cc new file mode 100644 index 00000000000..28e509472c0 --- /dev/null +++ b/compiler-rt/lib/asan/lit_tests/Linux/preinit_test.cc @@ -0,0 +1,27 @@ +// RUN: %clangxx -DFUNC=zzzz %s -shared -o %t.so -fPIC +// RUN: %clangxx_asan -DFUNC=main %s -o %t -Wl,-R. %t.so +// RUN: %t + +// This test ensures that we call __asan_init early enough. +// We build a shared library w/o asan instrumentation +// and the binary with asan instrumentation. +// Both files include the same header (emulated by -DFUNC here) +// with C++ template magic which runs global initializer at library load time. +// The function get() is instrumented with asan, but called +// before the usual constructors are run. +// So, we must make sure that __asan_init is executed even earlier. +// +// See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56393 + +struct A { + int foo() const { return 0; } +}; +A get () { return A(); } +template struct O { + static A const e; +}; +template A const O ::e = get(); +int FUNC() { + return O::e.foo(); +} + diff --git a/compiler-rt/lib/asan/lit_tests/preinit_test.cc b/compiler-rt/lib/asan/lit_tests/preinit_test.cc deleted file mode 100644 index 28e509472c0..00000000000 --- a/compiler-rt/lib/asan/lit_tests/preinit_test.cc +++ /dev/null @@ -1,27 +0,0 @@ -// RUN: %clangxx -DFUNC=zzzz %s -shared -o %t.so -fPIC -// RUN: %clangxx_asan -DFUNC=main %s -o %t -Wl,-R. %t.so -// RUN: %t - -// This test ensures that we call __asan_init early enough. -// We build a shared library w/o asan instrumentation -// and the binary with asan instrumentation. -// Both files include the same header (emulated by -DFUNC here) -// with C++ template magic which runs global initializer at library load time. -// The function get() is instrumented with asan, but called -// before the usual constructors are run. -// So, we must make sure that __asan_init is executed even earlier. -// -// See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56393 - -struct A { - int foo() const { return 0; } -}; -A get () { return A(); } -template struct O { - static A const e; -}; -template A const O ::e = get(); -int FUNC() { - return O::e.foo(); -} - -- cgit v1.2.3