eh interface questions

Richard Henderson rth at redhat.com
Thu Feb 22 18:47:21 UTC 2001


]  typedef void (*_Unwind_Exception_Cleanup_Fn)
]              (_Unwind_Reason_Code reason,
]               struct _Unwind_Exception *exc);

What is the purpose of the reason code here?  Yes, once can indicate
why someone other than the normal language runtime is deleting the
exception, but what's the point?

]  _Unwind_Reason_Code (*__personality_routine)
]          (int version,
]           _Unwind_Action actions,
]           uint64 exceptionClass,
]           struct _Unwind_Exception *exceptionObject,
]           struct _Unwind_Context *context);

Why bother passing exceptionClass here (and to _Unwind_Stop_Fn) when
it is available in exceptionObject->exception_class?  And come to 
think of is, what sort of exceptionClass should longjmp_unwind provide?

]  uint64 _Unwind_GetRegionStart
]          (struct _Unwind_Context *context);

This is all well and good for function-relative code addresses, but
what about data addresses?  The HP LSDA, for instance, contains
GP-relative pointers to type_info objects.  That GP base is of course
for the target DSO, not necessarily the current DSO.

Given that HPUX and AIX (for example) don't respect a fixed offset
between text and data segments, certainly something of this nature
is required.


r~




More information about the cxx-abi-dev mailing list