> To my understanding this can only happen if there is control flow from > a leaf function which in turn should only occur with signals. Perhaps > we could modify the CFA "a bit" for the frame where the signal > occurred? There is already a hack in uw_identify_context which does > this for the signal frame: > > static inline _Unwind_Ptr > uw_identify_context (struct _Unwind_Context *context) > { > /* The CFA is not sufficient to disambiguate the context of a function > interrupted by a signal before establishing its frame and the context > of the signal itself. */ > if (STACK_GROWS_DOWNWARD) > return _Unwind_GetCFA (context) - _Unwind_IsSignalFrame (context); > else > return _Unwind_GetCFA (context) + _Unwind_IsSignalFrame (context); > }
Why does this "hack" not work? It was precisely devised for this purpose. -- Eric Botcazou