]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Darwin, libsanitizer - remove reference to __cxa_rethrow_primary_exception.
authorIain Sandoe <iain@sandoe.co.uk>
Sun, 18 Aug 2019 19:11:29 +0000 (19:11 +0000)
committerIain Sandoe <iains@gcc.gnu.org>
Sun, 18 Aug 2019 19:11:29 +0000 (19:11 +0000)
For some Darwin versions the absence of the rethrow_primary_exception
symbol causes almost all sanitizer tests to fail.
The symbol is not present in libstdc++ and, therefore is is correct to
remove the reference to it for all platforms.  We do this by adding a
new guard "ASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION".

For the backported version, to avoid bumping the library version, this
is only applied for Darwin (because of the way that symbol interposing
works on Darwin, this does not alter the exported symbols list).

libsanitizer/

2019-08-18  Iain Sandoe  <iain@sandoe.co.uk>

Backport from mainline
2019-06-18  Iain Sandoe  <iain@sandoe.co.uk>

PR libsanitizer/87880
* asan/asan_interceptors.h:
(ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION): New.
* asan/Makefile.am (DEFS): Add (for Darwin only)
ASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION, defined to 0.
* asan/Makefile.in: Regenerated.

From-SVN: r274625

libsanitizer/ChangeLog
libsanitizer/asan/Makefile.am
libsanitizer/asan/Makefile.in
libsanitizer/asan/asan_interceptors.h

index c7d3cf4f562c9c22382c60d5f3d6502d498f486a..b797761bc43a7774d7a9e68e5239e056856eea53 100644 (file)
@@ -1,3 +1,15 @@
+2019-08-18  Iain Sandoe  <iain@sandoe.co.uk>
+
+       Backport from mainline
+       2019-06-18  Iain Sandoe  <iain@sandoe.co.uk>
+
+       PR libsanitizer/87880
+       * asan/asan_interceptors.h:
+       (ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION): New.
+       * asan/Makefile.am (DEFS): Add (for Darwin only)
+       ASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION, defined to 0.
+       * asan/Makefile.in: Regenerated.
+
 2019-08-12  Release Manager
 
        * GCC 9.2.0 released.
index 867240d244533c077229539d5cfcf1dd70979413..6efbc1df7f8bb27568d67c21e601cedd0578f144 100644 (file)
@@ -5,7 +5,7 @@ gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER)
 
 DEFS = -D_GNU_SOURCE -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DASAN_HAS_EXCEPTIONS=1 -DASAN_NEEDS_SEGV=1 -DCAN_SANITIZE_UB=0
 if USING_MAC_INTERPOSE
-DEFS += -DMAC_INTERPOSE_FUNCTIONS -DMISSING_BLOCKS_SUPPORT
+DEFS += -DMAC_INTERPOSE_FUNCTIONS -DMISSING_BLOCKS_SUPPORT -DASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION=0
 endif
 AM_CXXFLAGS = -Wall -W -Wno-unused-parameter -Wwrite-strings -pedantic -Wno-long-long  -fPIC -fno-builtin -fno-exceptions -fno-rtti -fomit-frame-pointer -funwind-tables -fvisibility=hidden -Wno-variadic-macros -fno-ipa-icf
 AM_CXXFLAGS += $(LIBSTDCXX_RAW_CXX_CXXFLAGS)
index 926ff7d7491c9713a43b12bf575e023368526767..8dfd93a6fd328f0fde645393dbd945522eeeefdc 100644 (file)
@@ -90,7 +90,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-@USING_MAC_INTERPOSE_TRUE@am__append_1 = -DMAC_INTERPOSE_FUNCTIONS -DMISSING_BLOCKS_SUPPORT
+@USING_MAC_INTERPOSE_TRUE@am__append_1 = -DMAC_INTERPOSE_FUNCTIONS -DMISSING_BLOCKS_SUPPORT -DASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION=0
 @USING_MAC_INTERPOSE_FALSE@am__append_2 = $(top_builddir)/interception/libinterception.la
 @LIBBACKTRACE_SUPPORTED_TRUE@am__append_3 = $(top_builddir)/libbacktrace/libsanitizer_libbacktrace.la
 subdir = asan
index b599ebb0ba91b5c3800f35ed753aabb3563c375a..beb1dc9532b9d1c7ee38ae5686f5728007fa6cc6 100644 (file)
@@ -79,7 +79,12 @@ void InitializePlatformInterceptors();
 #if ASAN_HAS_EXCEPTIONS && !SANITIZER_WINDOWS && !SANITIZER_SOLARIS && \
     !SANITIZER_NETBSD
 # define ASAN_INTERCEPT___CXA_THROW 1
-# define ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION 1
+# if ! defined(ASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION) \
+     || ASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION
+#   define ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION 1
+# else
+#   define ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION 0
+# endif
 # if defined(_GLIBCXX_SJLJ_EXCEPTIONS) || (SANITIZER_IOS && defined(__arm__))
 #  define ASAN_INTERCEPT__UNWIND_SJLJ_RAISEEXCEPTION 1
 # else