This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [RFA] mips 32/64 register/stack fix
Andrew Cagney wrote:
#0 register_size (gdbarch=0x84093e8, regnum=120)
120 looks large enough to be cooked (but to confirm this can you look at
"maint print raw-registers". This will also tell us the register's
type, and hence confirm the size.
Yes, raw is from 0 to 89, and cooked is from 90 to 179.
regcache->descr->sizeof_register is as follows:
8 for all raw
8 for the first 70 cooked
4 for the last 20 cooked
register_type looks like:
raw:
38 @ int64
32 @ double64
20 @ int64
cooked:
38 @ int64
32 @ double64
20 @ int32
Given that you see 8, this suggests that the register's type is wrong
(see mips_register_type).
It looks to me as if mips_register_type relies on mips_regsize.
Which returns 8. Yep, and mips_register_type (120) returns int64_t.
But mips_saved_regsize (tdep) returns 4 (as it should, I guess).
Also, what information is available in the object file header?
Can you be more specific?
Here's the bfd_arch_info:
{bits_per_word = 64, bits_per_address = 64, bits_per_byte = 8,
arch = bfd_arch_mips, mach = 64, arch_name = 0x8382960 "mips",
printable_name = 0x8382a50 "mips:isa64", section_align_power = 3,
the_default = 0, compatible = 0x82c36a4 <mips_compatible>,
scan = 0x825f3c3 <bfd_default_scan>, next = 0x8382f00}
Here's your tdep info:
{elf_flags = 1610625025, mips_abi = MIPS_ABI_EABI32,
found_abi = MIPS_ABI_EABI32, mips_fpu_type = MIPS_FPU_DOUBLE,
mips_last_arg_regnum = 11, mips_last_fp_arg_regnum = 57,
mips_default_saved_regsize = 4, mips_fp_register_double = 0,
mips_default_stack_argsize = 4, default_mask_address_p = 0,
mips64_transfers_32bit_regs_p = 0, regnum = 0x840968c,
mips_processor_reg_names = 0x83995c0}
(GDB) p /x tdep.elf_flags
$10 = 0x60003001