RFA: ia64 patch required after recent osabi changes

Kevin Buettner kevinb@redhat.com
Wed Nov 5 02:20:00 GMT 2003


On Nov 4,  7:04pm, J. Johnston wrote:

> The latest changes by Mark K. have caused regressions in the ia64 signal handler 
> back-tracing.  What happens is that the ia64_gdbarch_init function is called 
> without a bfd to calculate the os_ident field.  The os_ident field is later used 
> to set up the gdbarch_tdep structure which contains the sigcontext register 
> address function address.  We end up with an os_ident of -1 and don't set up the 
> sigcontext register address function pointing to the ia64-linux-tdep.c function. 
>   This kills backtracing across signal handlers because we can't figure out the 
> previous ip value without fishing it out of the sigcontext area.
> 
> After discussing this with Andrew, it appears the ia64 code is a bit old.  The 
> info.osabi field is set properly so we don't have to calculate the os_ident. 
> This patch removes the gdbarch_tdep os_ident field and uses instead the 
> info.osabi field in ia64_gdbarch_init.  It also copies code from i386 which 
> looks for a gdbarch candidate.  This code is much more efficient than the old code.
> 
> With this patch, the ia64 signal backtracing works again and there are no 
> regressions in the testsuite.
> 
> Ok to commit?
> 
> -- Jeff J.
> 
> 2003-11-04  Jeff Johnston  <jjohnstn@redhat.com>
> 
> 	* ia64-tdep.c (struct gdbarch_tdep): Remove os_ident field.
> 	(ia64_gdbarch_init): Don't bother calculating the os.  Instead use the 
> gdbarch_info struct and look at the osabi field.  Also use           		 
> gdbarch_list_lookup_by_info() to look for a candidate gdbarch.

Approved.  (But watch the line lengths on your ChangeLog entry when you
check it in...)

Thanks,

Kevin



More information about the Gdb-patches mailing list