summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--compiler-rt/lib/asan/Makefile.old2
-rw-r--r--compiler-rt/lib/asan/asan_rtl.cc8
2 files changed, 8 insertions, 2 deletions
diff --git a/compiler-rt/lib/asan/Makefile.old b/compiler-rt/lib/asan/Makefile.old
index 6d3aaf73a00..32829db0747 100644
--- a/compiler-rt/lib/asan/Makefile.old
+++ b/compiler-rt/lib/asan/Makefile.old
@@ -287,8 +287,6 @@ lib: $(LIBASAN_A)
$(LIBASAN_A): $(BIN) $(LIBASAN_OBJ) $(MAKEFILE)
mkdir -p $(LIBASAN_INST_DIR)
ar ru $@ $(LIBASAN_OBJ)
- $(CXX) -shared $(CFLAGS) $(LIBASAN_OBJ) $(LD_FLAGS) -o $(BIN)/libasan$(SUFF).so
-
TEST_OBJECTS_COMMON=\
$(BIN)/asan_test$(SUFF).o \
diff --git a/compiler-rt/lib/asan/asan_rtl.cc b/compiler-rt/lib/asan/asan_rtl.cc
index 3ea28754ad9..570dd4e5d5a 100644
--- a/compiler-rt/lib/asan/asan_rtl.cc
+++ b/compiler-rt/lib/asan/asan_rtl.cc
@@ -774,3 +774,11 @@ void __asan_init() {
Report("AddressSanitizer Init done\n");
}
}
+
+#ifdef __linux__
+// 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
OpenPOWER on IntegriCloud