This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
[BUG/tracepoint/mips] MIPS tracepoint cannot collect stack info through collect *(unsigned char *)($sp)@512
- From: Hui Zhu <teawater at gmail dot com>
- To: gdb at sourceware dot org
- Date: Fri, 3 Sep 2010 17:28:25 +0800
- Subject: [BUG/tracepoint/mips] MIPS tracepoint cannot collect stack info through collect *(unsigned char *)($sp)@512
- References: <AANLkTimSr6WmFg48kfubaCSV-ezhwp1AQCP2M1cTf_iD@mail.gmail.com>
Hi,
I try MIPS tracepoint but when I want to use?collect *(unsigned char
*)($sp)@512 to collect the stack info, but I got:
(gdb) actions
Enter actions for tracepoint 1, one per line.
End with a line saying just "end".
>collect *(unsigned char *)($sp)@512
'sp' is a pseudo-register; GDB cannot yet trace pseudoregister contents.
That is because in ax-gdb.c:
reg = user_reg_map_name_to_regnum (exp->gdbarch, name, strlen (name));
if (reg == -1)
?internal_error (__FILE__, __LINE__,
?_("Register $%s not available"), name);
if (reg >= gdbarch_num_regs (exp->gdbarch))
?error (_("'%s' is a pseudo-register; "
? "GDB cannot yet trace pseudoregister contents."),
name);
In?user_reg_map_name_to_regnum, it will call?mips_register_name to get reg name:
But in function?mips_register_name:
??/* Map [gdbarch_num_regs .. 2*gdbarch_num_regs) onto the raw registers,
?? ? but then don't make the raw register names visible. ?*/
??int rawnum = regno % gdbarch_num_regs (gdbarch);
??if (regno < gdbarch_num_regs (gdbarch))
?? ?return "";
So it make?user_reg_map_name_to_regnum just can return the "reg"
bigger than?gdbarch_num_regs.
Then it will get this error message. ?Do you have some way to handle this issue?
Thanks,
Hui