Wrong wording in 1.3 "Throwing an exception."
Christophe de Dinechin
ddd at cup.hp.com
Thu Oct 5 18:56:59 UTC 2000
On Wednesday, October 4, 2000, at 08:18 PM, Jim Dehnert wrote:
> This call (to
> _Unwind_RaiseException) will happen in many places in compiled code
No, the actual call is to __cxa_throw or __cxa_rethrow, which itself calls _Unwind_RaiseException. This means that only __cxa_throw needs to care. What's more, it looks like:
_Unwind_RaiseException(...);
// If it returns, we have no choice
terminate();
There is little that could fail here, except failing to find the proper terminate handler (we need to have GP set right for that). The chances of having GP incorrect for the C++ runtime library and having anything else working is... low. So I would not care too much about that case.
> c) Require that the unwinder also return valid GP for caller
> (and perhaps other registers). (Remember that we've been
> modifying the context during phase 2 unwinding, so this
> probably requires extra work in the unwinder.)
I believe this is not a problem: GP being used by the caller is not the GP set by the unwinder, but the GP as set before we called _Unwind_RaiseException. The GP is not set through stack unwinding but through dld.so generated stubs.
Christophe
More information about the cxx-abi-dev
mailing list