http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50888
--- Comment #8 from Andrew Haley <aph at gcc dot gnu.org> 2011-11-22 17:55:51 UTC --- (In reply to comment #7) > isspace is actually marked as not throwing, i.e. throw() in C++. In glibc > 2.15+ it happens to be implemented as throw() inline function which calls > another function (which is throw() too), the problem is that with > -fnon-call-exceptions the compiler doesn't know the function pointer is always > non-NULL and assumes the call instruction might throw on SIGSEGV/SIGILL etc. > That will always work, but the compiler must assume it doesn't always, thus it > needs -lsupc++ support with which libjava is not linked. Thank you, all is now clear. I wonder if it might make sense to fix this in a more general way than simply not calling isspace(). Perhaps we could provide a weak __cxa_call_unexpected, or find some way of persuading g++ not to emit such a call.