summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>2012-01-11 08:17:19 +0000
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>2012-01-11 08:17:19 +0000
commit8bcc6b93abafee3cb15e20fda0f1e1d4967bb80e (patch)
tree6f2dd6d846b212c5da5d620ba79ee47bb1c9a6df
parenta31df5ca61f10154c809d4aa77978628c0c74f76 (diff)
downloadcompiler-rt-8bcc6b93abafee3cb15e20fda0f1e1d4967bb80e.tar.gz
compiler-rt-8bcc6b93abafee3cb15e20fda0f1e1d4967bb80e.tar.bz2
compiler-rt-8bcc6b93abafee3cb15e20fda0f1e1d4967bb80e.tar.xz
Call asan_init from .preinit_array.
Protected by an #ifdef, disabled by default. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@147932 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/asan/asan_rtl.cc8
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/asan/asan_rtl.cc b/lib/asan/asan_rtl.cc
index 57dfa2e3..89442468 100644
--- a/lib/asan/asan_rtl.cc
+++ b/lib/asan/asan_rtl.cc
@@ -494,3 +494,11 @@ void __asan_init() {
Report("AddressSanitizer Init done\n");
}
}
+
+#if defined(ASAN_USE_PREINIT_ARRAY)
+// On Linux, we force __asan_init to be called before anyone else
+// by placing it into .preinit_array section.
+// FIXME: do we have anything like this on Mac?
+__attribute__((section(".preinit_array")))
+ typeof(__asan_init) *__asan_preinit =__asan_init;
+#endif