Invalid program counters and unwinding
Nathan Sidwell
nathan@acm.org
Tue Jun 26 11:35:00 GMT 2018
On 06/26/2018 07:21 AM, Florian Weimer wrote:
> GCC doesn't do this AFAIK, but it's theoretically possible not to
> preserve the return address for a noreturn function. But that would be
> very bad for exception handling, so let's hope compilers don't do this.
I'd forgotten about noreturn. Such functions may terminate by throwing
an exception (and for our purposes I think pthread_cancel implementatio
is sufficiently exception-like):
from C++ std: [dcl.attr.noreturn]/2 [ Note: The function may terminate
by throwing an exception. â end note ]
and from doc/extend.texi:
The @code{noreturn} keyword does not affect the exceptional path
when that applies: a @code{noreturn}-marked function may still
return to the caller by throwing an exception or calling
@code{longjmp}.
IIRC, in gcc-land you have to give both noreturn and nothrow attributes
to make it non-unwindable.
nathan
--
Nathan Sidwell
More information about the Libc-alpha
mailing list