This is the mail archive of the gdb-patches@sourceware.org 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] |
On Wed, Dec 29, 2010 at 02:04, Pedro Alves <pedro@codesourcery.com> wrote: > On Tuesday 28 December 2010 17:23:59, Pedro Alves wrote: >> On Tuesday 28 December 2010 17:08:52, Joel Brobecker wrote: >> > > Joel, ?do you think this patch can check in to 7.2.1. >> > >> > I think that it's borderline, and I'm tempted to say no, considering >> > that this is not a crash or a regression (just a limitation). ?But >> > it looks relatively safe to me. ?So, if Pedro agrees, it's OK with me. >> >> Yeah. ?I understand that without this patch, MIPS tracepoints are >> practically useless on 7.2, so on those grounds, I'd be okay. >> >> However, I just went to check whether collecting a pseudo or >> user register in x86/x86_64 still gives a reasonable error, and >> I now get: >> >> ?>./gdb -q ./gdb >> ?Reading symbols from /home/pedro/gdb/baseline/build/gdb/gdb...done. >> ?(top-gdb) start >> ?Temporary breakpoint 3 at 0x4565c3: file ../../src/gdb/gdb.c, line 29. >> ?Starting program: /home/pedro/gdb/baseline/build/gdb/gdb >> ?[Thread debugging using libthread_db enabled] >> >> ?Temporary breakpoint 3, main (argc=1, argv=0x7fffffffe108) at ../../src/gdb/gdb.c:29 >> ?29 ? ? ? ?memset (&args, 0, sizeof args); >> ?(top-gdb) maint agent $sp >> ?../../src/gdb/regcache.c:166: internal-error: register_type: Assertion `regnum >= 0 && regnum < descr->nr_cooked_registers' failed. >> ?A problem internal to GDB has been detected, >> ?further debugging may prove unreliable. >> ?Quit this debugging session? (y or n) >> >> While before (on 7.2), we'd get: >> >> ?(top-gdb) maint agent $sp >> ?'sp' is a pseudo-register; GDB cannot yet trace pseudoregister contents. >> >> We'll need to get this fixed this before considering a backport to 7.2. >> >> > > Fixed for now. ?I've reinstated the exact same old error, but under > a stricter check: we now error out for user registers, but let > pseudo-registers pass: > > ?(top-gdb) maint agent $pc > ?'pc' is a pseudo-register; GDB cannot yet trace pseudoregister contents. > > Pseudo-registers will error out further on, on the new errors that Hui > added when the new gdbarch callbacks aren't implemented. ?On x86_64: > > ?(top-gdb) maint agent $rsp > ?Scope: 0x4565c3 > ?Reg mask: 80 > ? 0 ?end > > ?(top-gdb) maint agent $esp > ?'esp' is a pseudo-register; GDB cannot yet trace its contents. > > -- > Pedro Alves > > 2010-12-28 ?Pedro Alves ?<pedro@codesourcery.com> > > ? ? ? ?gdb/ > ? ? ? ?* ax-gdb.c (gen_expr) <OP_REGISTER>: Error out if trying to > ? ? ? ?collect a user register. > > --- > ?gdb/ax-gdb.c | ? ?6 ++++++ > ?1 file changed, 6 insertions(+) > > Index: src/gdb/ax-gdb.c > =================================================================== > --- src.orig/gdb/ax-gdb.c ? ? ? 2010-12-28 16:22:01.000000000 +0000 > +++ src/gdb/ax-gdb.c ? ?2010-12-28 17:54:45.000000000 +0000 > @@ -1978,6 +1978,12 @@ gen_expr (struct expression *exp, union > ? ? ? ?if (reg == -1) > ? ? ? ? ?internal_error (__FILE__, __LINE__, > ? ? ? ? ? ? ? ? ? ? ? ? ?_("Register $%s not available"), name); > + ? ? ? /* No support for tracing user registers yet. ?*/ > + ? ? ? if (reg >= gdbarch_num_regs (exp->gdbarch) > + ? ? ? ? ? + gdbarch_num_pseudo_regs (exp->gdbarch)) > + ? ? ? ? error (_("'%s' is a pseudo-register; " > + ? ? ? ? ? ? ? ? ?"GDB cannot yet trace pseudoregister contents."), > + ? ? ? ? ? ? ? ?name); > ? ? ? ?value->kind = axs_lvalue_register; > ? ? ? ?value->u.reg = reg; > ? ? ? ?value->type = register_type (exp->gdbarch, reg); > (top-gdb) maintenance agent $pc 'pc' is a pseudo-register; GDB cannot yet trace pseudoregister contents. (top-gdb) maintenance agent $ax 'ax' is a pseudo-register; GDB cannot yet trace its contents. This place is a bit confusing. Do you think we change the "pseudo-register" to "user-register" in gen_expr? For example: (top-gdb) maintenance agent $pc 'pc' is a user-register; GDB cannot yet trace user-register contents. (top-gdb) maintenance agent $ax 'ax' is a pseudo-register; GDB cannot yet trace its contents. I make a patch for it. Thanks, Hui 2010-12-29 Hui Zhu <teawater@gmail.com> * ax-gdb.c (gen_expr): Change error message.
Attachment:
gen_expr_change_message.txt
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |