On Tue, Jan 31, 2006, Maciej W. Rozycki wrote:
> On Tue, 31 Jan 2006, Johannes Stezenbach wrote:
>
> > I think (maybe in error ;-), that all binaries compiled for
> > a 32bit ABI, but a 64bit ISA, have this flag set, as the kernel
> > will refuse to execute 64bt code (i.e. not o32 or n32 ABI). Therefore,
> > shouldn't gdb also evaluate this flag when deciding about the ISA
> > register size?
>
> O32 implies 32-bit registers no matter what ISA is specified (while
> o32/MIPS-III is effectively o32/MIPS-II, o32/MIPS-IV makes a difference),
> therefore it's a bug. You should try sending your proposal to
> <gdb-patches@sources.redhat.com> instead. But I smell the problem is
> elsewhere -- mips_isa_regsize() shouldn't be called for the "cooked"
> registers and these are ones you should only see under Linux or, as a
> matter of fact, any hosted environment. See mips_register_type() for a
> start.
Yes, that's why I said I'm confused about mips_isa_regsize() vs.
mips_abi_regsize().
mips_abi_regsize() correctly says the register size is 32bit for o32,
but mips_register_type() calls mips_isa_regsize(), not
mips_abi_regsize(). That's why I chose to "fix" mips_isa_regsize().
Or should mips_register_type() simply call mips_abi_regsize()?
Or is the correct fix to change gdbserver to transfer registers
in mips_isa_regsize() size, i.e. 64bit for 64bit ISA?
(But gdb would't use the upper 32bits of the registers anyway
with o32 ABI, and this would be more complicated to fix.)
I can't decide :-(
Johannes
|