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.

Reply via email to