[Bug sanitizer/87880] [9 regression] All macOS asan execution tests FAIL
iains at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Nov 6 14:29:00 GMT 2018
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.
More information about the Gcc-bugs
mailing list