Andrew Cagney wrote:
[ ... ] This adds NUM_REGS pseudo registers to the MIPS [ ... ]
OK, not a direct reply to your rfc, but it's in the right part of the
forest to be causing my problem, so...
I've built a Linux cross MIPS toolchain from a combined source tree,
checked out of the sources.redhat.com tree yesterday (6 July), and when
I attempt to do anything in the sim with the register set, I hit an
assert:
../../combined/gdb/mips-tdep.c:5669: internal-error: mips_register_sim_regno: Assertion `regnum >= 0 && regnum < NUM_REGS' failed.
Setting breakpoints and doing a nested gdb on the thing reveals that
it's trying to display register 90. The path there is kinda ugly,
but here's the trace into gdbarch_num_regs(), which is about to
return 90:
Here's what the gdbarch structure looks like (well, the first bits, anyhow):
(top-gdb) print gdbarch
$8 = (struct gdbarch *) 0x82fdc48
(top-gdb) print *gdbarch
$9 = {initialized_p = 1, bfd_arch_info = 0x8286740, byte_order = 0,
osabi = GDB_OSABI_UNKNOWN, tdep = 0x82fdc18, dump_tdep = 0x80dcc9c <mips_dump_tdep>,
nr_data = 6, data = 0x82fded0, swap = 0x82fdef0, short_bit = 16, int_bit = 32,
long_bit = 32, long_long_bit = 64, float_bit = 32, double_bit = 64,
long_double_bit = 64, ptr_bit = 32, addr_bit = 32, bfd_vma_bit = 32, char_signed = 1,
read_pc = 0x80d53c8 <mips_read_pc>, write_pc = 0x8095214 <generic_target_write_pc>,
read_sp = 0x80d5204 <mips_read_sp>,
virtual_frame_pointer = 0x80ce958 <legacy_virtual_frame_pointer>,
pseudo_register_read = 0x80d4aec <mips_pseudo_register_read>,
pseudo_register_write = 0x80d4b78 <mips_pseudo_register_write>, num_regs = 90,
num_pseudo_regs = 90, sp_regnum = -1, pc_regnum = -1, ps_regnum = -1, fp0_regnum = -1,
npc_regnum = -1, stab_reg_to_regnum = 0x80dbda4 <mips_stab_reg_to_regnum>,
ecoff_reg_to_regnum = 0x80dbe0c <mips_dwarf_dwarf2_ecoff_reg_to_regnum>,
dwarf_reg_to_regnum = 0x80dbe0c <mips_dwarf_dwarf2_ecoff_reg_to_regnum>,
sdb_reg_to_regnum = 0x80ce8a4 <no_op_reg_to_regnum>,
dwarf2_reg_to_regnum = 0x80dbe0c <mips_dwarf_dwarf2_ecoff_reg_to_regnum>,
register_name = 0x80d48ec <mips_register_name>,
register_type = 0x80d5178 <mips_register_type>, deprecated_register_virtual_type = 0,
[ etc etc ]
Being rather weak in gdb-fu, I thought I'd defer to an expert. Or at least someone
who's generated patches in the vicinity.
If you'd like me to try some other stuff or provide more data, that can easily
be arranged.