jacob navia writes:
 > Andrew Haley wrote:
 > 
 > >I suspect that the gcc unwinder is relying on __dl_iterate_phdr to
 > >scan the loaded libraries and isn't using the region that you have
 > >registered.
 > >
 > >But this is odd, becasue when I look at _Unwind_Find_FDE in
 > >unwind-dw2-fde-glibc.c, I see:
 > >
 > >  ret = _Unwind_Find_registered_FDE (pc, bases);
 > >
 > >  ...
 > >
 > >  
 > >  if (dl_iterate_phdr (_Unwind_IteratePhdrCallback, &data) < 0)
 > >    return NULL;
 > >
 > >So, it looks to me as though we do call _Unwind_Find_registered_FDE
 > >first.  If you have registered your EH data, it should be found.
 > >
 > >  
 > >
 > OK, so I have to look there then. Actually this is good news because
 > figuring out how to mess with the dynamic loader data is not something
 > for the faint of heart :-)

True.

 > >So, what happens when _Unwind_Find_registered_FDE is called?  Does it
 > >find the EH data you have registered?
 > >
 > >  
 > >
 > Yes but then it stops there instead of going upwards and finding the catch!
 > It is as my insertion left the list of registered routines in a bad state.

OK, so the problem is in decoding the unwinder data, and you're just
going to have to single-step through the part where it decodes the
data you've generated.

Andrew.

Reply via email to