https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87880
--- Comment #6 from Iain Sandoe <iains at gcc dot gnu.org> --- so I looked a little more at this. As Rainer points out, the libsupc++ implementation does not provide cxa_rethrow_primary_exception whereas the libc++-abi.dylib has it. For the macOS implementations of libstdc.6.dylib and libc++.dylib the symbols from libc++-abi are forwarded via the presented library. For the GCC implementation of libstdc++.dylib, the libsupc++ implementation is statically linked into the library. So - it seems that the build for libsanitiser is either resolving those symbols accidentally from the /usr/lib/libstdc++.dylib (or has been constructed to permit them to be unresolved at link time) - first case seems a build bug - second case they should be guarded by a check for presence at runtime (IIRC there are already an number of symbols that are guarded this way). Longer term: 1. we could add the cxa_rethrow_primary_exception to libsupc++ (will talk to Jonathan about the implications of this) 2. We could split libstdc++ from libsupc++ on Darwin and have the option to build the library on top of libc++abi (forwarding the symbols as the installed system library does). - this is analogous to the need to forward to the unwinder implementation which must always be provided by the shared /usr/lib/system impl on Darwin. It's not 100% clear at the moment if there's state in the abi lib that would mandate that action anyway. At the Cauldron I talked to Jonathan about potentially doing this split, and he didn't at that point have any objection.