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]

Re: [PATCH 4/4] Don't throw an error in 'info registers' for unavailable MIPS GP registers.


On Thursday, April 13, 2017 11:37:15 AM Luis Machado wrote:
> On 04/12/2017 01:37 PM, John Baldwin wrote:
> > index 674b5098b0..4ec0c31341 100644
> > --- a/gdb/mips-tdep.c
> > +++ b/gdb/mips-tdep.c
> > @@ -6533,8 +6533,14 @@ print_gp_register_row (struct ui_file *file, struct frame_info *frame,
> >
> >        /* OK: get the data in raw format.  */
> >        if (!deprecated_frame_register_read (frame, regnum, raw_buffer))
> > -	error (_("can't read register %d (%s)"),
> > -	       regnum, gdbarch_register_name (gdbarch, regnum));
> > +	{
> > +	  fprintf_filtered (file, "%*.*s ",
> > +			    (int) mips_abi_regsize (gdbarch) * 2,
> > +			    (int) mips_abi_regsize (gdbarch) * 2,
> > +			    "<unavailable>");
> > +	  col++;
> > +	  continue;
> > +	}
> 
> What is the output you're getting in this case?

On FreeBSD (which doesn't support fir) I now get this:

O32:

(gdb) info registers 
          zero       at       v0       v1       a0       a1       a2       a3
 R0   00000000 00000000 00000000 00000000 00000001 7fffecac 7fffecb4 004182c0 
            t0       t1       t2       t3       t4       t5       t6       t7
 R8   00000000 00000000 00000061 2e9a1b76 00124f9b 00000001 00001000 00401964 
            s0       s1       s2       s3       s4       s5       s6       s7
 R16  7fffecb4 00000001 7fffecac 00000000 00000000 00000000 00000000 00000000 
            t8       t9       k0       k1       gp       sp       s8       ra
 R24  0000008d 004033d0 00000000 00000000 00420320 7ffeec60 00000000 00401980 
            sr       lo       hi      bad    cause       pc
      00008413 0000d0d7 000002d1 004033d0 00000024 004033d0 
           fsr      fir
      00000000 <unavail 


N64:

(gdb) info registers 
                  zero               at               v0               v1
 R0   0000000000000000 0000000000000000 0000000000000000 0000000000000000 
                    a0               a1               a2               a3
 R4   0000000000000001 0000007fffffeb40 0000007fffffeb50 0000000120018030 
                    a4               a5               a6               a7
 R8   0000000000000000 0000000000000001 0000000000000000 0000000000000001 
                    t0               t1               t2               t3
 R12  0000000000000000 0000000000000000 0000000000000000 0000000160051940 
                    s0               s1               s2               s3
 R16  0000007fffffeb50 0000000000000001 0000007fffffeb40 0000000000000000 
                    s4               s5               s6               s7
 R20  0000000000000000 0000000000000000 0000000000000000 0000000000000000 
                    t8               t9               k0               k1
 R24  000000000000008d 00000001200035e8 0000000000000000 0000000000000000 
                    gp               sp               s8               ra
 R28  0000000120020090 0000007fffffead8 0000000000000000 00000001200020b4 
                    sr               lo               hi              bad
      00000000008084b3 000000000000d0d7 00000000000002d1 0000007fffffeaa8 
                 cause               pc
      0000000000000024 00000001200035e8 
                   fsr              fir
              00000000    <unavailable> 

It was more dire on a target that doesn't supply all registers.  For example,
I have an out of tree target for FreeBSD kernels and stopped threads in
FreeBSD's kernel only supply a subset of GPRs.  Without the patch examining
registers for a stopped thread looks like this:

(kgdb) info registers 
                  zero               at               v0               v1
 R0   0000000000000000 can't read register 91 (at)

with the patch it looks like this:

(kgdb) info registers 
                  zero               at               v0               v1
 R0   0000000000000000    <unavailable>    <unavailable>    <unavailable> 
                    a0               a1               a2               a3
 R4      <unavailable>    <unavailable>    <unavailable>    <unavailable> 
                    a4               a5               a6               a7
 R8      <unavailable>    <unavailable>    <unavailable>    <unavailable> 
                    t0               t1               t2               t3
 R12     <unavailable>    <unavailable>    <unavailable>    <unavailable> 
                    s0               s1               s2               s3
 R16  00000000ffff00fa 0000000000000000 0000000000000000 0000010000000000 
                    s4               s5               s6               s7
 R20  00000000ffff00fa 0000000000000000 0000000000000000 0000010000000000 
                    t8               t9               k0               k1
 R24  0000007fffffefa0    <unavailable>    <unavailable>    <unavailable> 
                    gp               sp               s8               ra
 R28  0000000000000102 00000000fffd002e    <unavailable> 0000007fffffefa0 
                    sr               lo               hi              bad
      0000000000000010    <unavailable>    <unavailable>    <unavailable> 
                 cause               pc
         <unavailable> 0000000000000000 
                   fsr              fir
         <unavailable>    <unavailable> 

-- 
John Baldwin


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]