This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
I'm seeing the following internal error:
.../frame.c:591: internal-error: Failed to compute the register number corresponding to 0x296
This is happening because the *addrp value in the following loop (which is in frame_register() in frame.c)...
for (regnum = 0; regnum < NUM_REGS + NUM_PSEUDO_REGS; regnum++) { if (*addrp == register_offset_hack (current_gdbarch, regnum)) { *realnump = regnum; return; } }
...is set using a value obtained from REGISTER_BYTE(). (See sentinel_frame_prev_register in sentinel-frame.c.) But the value obtained from register_offset_hack() was computed by using the register's virtual type.
/* If an old style architecture, fill in the remainder of the
register cache descriptor using the register macros. */
if (!gdbarch_pseudo_register_read_p (gdbarch)
&& !gdbarch_pseudo_register_write_p (gdbarch)
&& !gdbarch_register_type_p (gdbarch))
{
descr->legacy_p = 1;
init_legacy_regcache_descr (gdbarch, descr);
return descr;
}| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |