}
#endif
+#if ASAN_INTERCEPT__LIBC_SIGLONGJMP
+INTERCEPTOR(void, __libc_siglongjmp, void *env, int val) {
+ __asan_handle_no_return();
+ REAL(__libc_siglongjmp)(env, val);
+}
+#endif
+
+#if ASAN_INTERCEPT__LIBC_LONGJMP
+INTERCEPTOR(void, __libc_longjmp, void *env, int val) {
+ __asan_handle_no_return();
+ REAL(__libc_longjmp)(env, val);
+}
+#endif
+
#if ASAN_INTERCEPT___CXA_THROW
INTERCEPTOR(void, __cxa_throw, void *a, void *b, void *c) {
CHECK(REAL(__cxa_throw));
#if ASAN_INTERCEPT_SIGLONGJMP
ASAN_INTERCEPT_FUNC(siglongjmp);
#endif
+#if ASAN_INTERCEPT__LIBC_SIGLONGJMP
+ ASAN_INTERCEPT_FUNC(__libc_siglongjmp);
+#endif
+#if ASAN_INTERCEPT__LIBC_LONGJMP
+ ASAN_INTERCEPT_FUNC(__libc_longjmp);
+#endif
// Intercept exception handling functions.
#if ASAN_INTERCEPT___CXA_THROW
#if SANITIZER_LINUX && !SANITIZER_ANDROID
# define ASAN_INTERCEPT_SWAPCONTEXT 1
+# define ASAN_INTERCEPT__LIBC_SIGLONGJMP 1
+# define ASAN_INTERCEPT__LIBC_LONGJMP 1
#else
# define ASAN_INTERCEPT_SWAPCONTEXT 0
+# define ASAN_INTERCEPT__LIBC_SIGLONGJMP 0
+# define ASAN_INTERCEPT__LIBC_LONGJMP 0
#endif
#if !SANITIZER_WINDOWS