Module Name: src
Committed By: christos
Date: Wed Feb 14 02:11:22 UTC 2018
Modified Files:
src/external/gpl3/gcc/dist/libsanitizer/asan: asan_interceptors.cc
Log Message:
our __csa_atexit does not like NULL dso; use atexit(3) instead.
To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 \
src/external/gpl3/gcc/dist/libsanitizer/asan/asan_interceptors.cc
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/external/gpl3/gcc/dist/libsanitizer/asan/asan_interceptors.cc
diff -u src/external/gpl3/gcc/dist/libsanitizer/asan/asan_interceptors.cc:1.3 src/external/gpl3/gcc/dist/libsanitizer/asan/asan_interceptors.cc:1.4
--- src/external/gpl3/gcc/dist/libsanitizer/asan/asan_interceptors.cc:1.3 Thu Feb 1 22:41:11 2018
+++ src/external/gpl3/gcc/dist/libsanitizer/asan/asan_interceptors.cc Tue Feb 13 21:11:22 2018
@@ -705,10 +705,17 @@ INTERCEPTOR(long long, atoll, const char
}
#endif // ASAN_INTERCEPT_ATOLL_AND_STRTOLL
+#ifdef SANITIZER_NETBSD
+extern "C" void atexit(void (*)(void));
+static void Atexit(void) {
+ StopInitOrderChecking();
+}
+#else
static void AtCxaAtexit(void *unused) {
(void)unused;
StopInitOrderChecking();
}
+#endif
#if ASAN_INTERCEPT___CXA_ATEXIT
INTERCEPTOR(int, __cxa_atexit, void (*func)(void *), void *arg,
@@ -718,7 +725,11 @@ INTERCEPTOR(int, __cxa_atexit, void (*fu
#endif
ENSURE_ASAN_INITED();
int res = REAL(__cxa_atexit)(func, arg, dso_handle);
+#ifdef SANITIZER_NETBSD
+ ::atexit(Atexit);
+#else
REAL(__cxa_atexit)(AtCxaAtexit, nullptr, nullptr);
+#endif
return res;
}
#endif // ASAN_INTERCEPT___CXA_ATEXIT