[PATCH/RFA] Fix busted logic in find_saved_register()
Andrew Cagney
ac131313@cygnus.com
Sat Apr 20 17:00:00 GMT 2002
> Ok, I will commit the fix.
>
> > You mention that the alpha is calling that function. Is that directly
> > or indirectly? I'm going to eliminate the MIPS direct call.
>
> Directly. The alpha_get_saved_register() is nearly identical to the
> mips_get_saved_register().
If you've implemented INIT_SAVED_REGS() do you need a custom
get_saved_register()?
> How are you changing the MIPS target?
Things will affect the MIPS at two levels.
Ref:
Andrew Cagney - [rfc] Frame based register cache / frame->unwind
http://sources.redhat.com/ml/gdb/2002-04/msg00245.html
I'm looking to change the way frames are unwound. I'd ignore that patch
as posted - I've managed to greatly simplify things. Main thing to note
that the new code doesn't use find_saved_register(). Instead it uses a
recursive frame->register_unwind() method.
If/when this change goes through, any code using the existing
find_saved_register() would be handed a local copy.
--
At a more theoretical [sp] level, I'm looking to rewrite the entire
function. Much of the MIPS complexity comes about because its REGNUM's
are overloaded. For instance, the hardware fp0 register might be 64
bits but when a program (via debug info) refers to it, it is only 32 bits.
I think the way to handle this is to map debug info REGNUMs onto the
pseudo address space and then use register_{read,write} to map them onto
the corresponding hardware register.
This one is more theoretical as the SH5 is the first port to try to get
this working and (apparently) it flushed out a few teething problems.
enjoy,
Andrew
More information about the Gdb-patches
mailing list