RFA: ia64 patch required after recent osabi changes
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 <email@example.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...)
More information about the Gdb-patches