This is the mail archive of the gdb-patches@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]

Re: [patch rfc] Add NUM_REGS pseudo regs to MIPS


On Jul 21, 11:26, Andrew Cagney wrote:
} Subject: Re: [patch rfc] Add NUM_REGS pseudo regs to MIPS
} Sigh.  Something in the backtrace is still amiss.
} 
} 
} > #2  0x080ca201 in gdbarch_register_sim_regno (gdbarch=0x82fdc48, reg_nr=90)
} >     at ../../combined/gdb/gdbarch.c:4078
} > #3  0x08125173 in gdbsim_fetch_register (regno=90) at ../../combined/gdb/remote-sim.c:299
} > #4  0x08093e0b in legacy_read_register_gen (regnum=90, 
} >     myaddr=0xbffff140 " ñÿ¿HÜ/\bhñÿ¿î\211\f\bHÜ/\bZ")
} >     at ../../combined/gdb/regcache.c:727
} 
} As far as I can tell, frame_register_unwind doesn't call 
} legacy_read_register_gen.
} 
} > #5  0x08113891 in frame_register_unwind (frame=0x82e0f40, regnum=90, 
} >     optimizedp=0xbffff0e8, lvalp=0xbffff0ec, addrp=0xbffff0f0, realnump=0xbffff014, 
} >     bufferp=0xbffff140) at ../../combined/gdb/frame.c:534
} > #6  0x080dbd82 in mips_get_saved_register (
} >     raw_buffer=0xbffff140 " ñÿ¿HÜ/\bhñÿ¿î\211\f\bHÜ/\bZ", optimizedp=0xbffff0e8, 
} >     addrp=0xbffff0f0, frame=0x82e0f40, regnum=90, lvalp=0xbffff0ec)
} >     at ../../combined/gdb/mips-tdep.c:5603
} 
} I suspect some agressive tail-call optimization by GCC is involved.  Can 
} you update your sources (so that we both have the same code) and then 
} configure/build gdb using:
} 
} 	CFLAGS="-O -g" .../configure ....
} 
} so that -O2 is disabled (or at least should be).

OK...  cvs as of about 9:30PDT 21 July.  Confirmed that the GDB build
was only -O -g, though some other things (newlib, mostly) got -O2.

That was quite a tail-call optimization -- looks like 3 frames
vanished.  I'm a little worried about a warning I got in this
backtrace from top-gdb:
During symbol reading, debug info mismatch between compiler and debugger.

The top gdb and gcc came from RedHat 7.1.  I suppose I could build a
new host gcc and gdb, but that seems like a fair amount of pain.

Anyway, here's the trace, along with a bunch of "up; list" to make sure
everything's sane looking:

(steve@mustang) 434> gdb ./gdb
GNU gdb 5.0rh-5 Red Hat Linux 7.1
Copyright 2001 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux"...
Setting up the environment for debugging gdb.
Breakpoint 1 at 0x811292a: file ../../combined/gdb/utils.c, line 807.
Breakpoint 2 at 0x80815fa: file ../../combined/gdb/cli/cli-cmds.c, line 191.
(top-gdb) run /users/steve/tmp/t/hello.mips
Starting program: /users/steve/gnu-toolchain/build.mips/gdb/./gdb /users/steve/tmp/t/hello.mips
GNU gdb 2003-07-21-cvs
Copyright 2003 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "--host=i686-pc-linux-gnu --target=mips-elf"...
Setting up the environment for debugging gdb.
.gdbinit:5: Error in sourced command file:
Function "internal_error" not defined.
(gdb) target sim
Connected to the simulator.
(gdb) load
Loading section .text, size 0x150c vma 0xa0020000
Loading section .init, size 0x38 vma 0xa002150c
Loading section .fini, size 0x28 vma 0xa0021544
Loading section .sdata, size 0x14 vma 0xa0021d20
Loading section .ctors, size 0x8 vma 0xa002156c
Loading section .dtors, size 0x8 vma 0xa0021574
Loading section .rodata, size 0x2 vma 0xa002157c
Loading section .eh_frame, size 0x4 vma 0xa0021580
Loading section .data, size 0x790 vma 0xa0021588
Loading section .jcr, size 0x4 vma 0xa0021d18
Start address 0xa0020004
Transfer rate: 59728 bits in <1 sec.
(gdb) break _start
Breakpoint 1 at 0xa0020004: file ../../../../combined/libgloss/mips/crt0.S, line 74.
(gdb) run
Starting program: /users/steve/tmp/t/hello.mips 

Breakpoint 1, _start () at ../../../../combined/libgloss/mips/crt0.S:74
74              li      v0, STATUS_MASK
Current language:  auto; currently asm
(gdb) info reg
          zero       at       v0       v1       a0       a1       a2       a3

Breakpoint 1, internal_error (file=0x824e580 "../../combined/gdb/mips-tdep.c", 
    line=5671, string=0x824e555 "%s: Assertion `%s' failed.")
    at ../../combined/gdb/utils.c:807
807       va_start (ap, string);
(top-gdb) info stack
#0  internal_error (file=0x824e580 "../../combined/gdb/mips-tdep.c", line=5671, 
    string=0x824e555 "%s: Assertion `%s' failed.") at ../../combined/gdb/utils.c:807
#1  0x080dd45c in mips_register_sim_regno (regnum=90)
    at ../../combined/gdb/mips-tdep.c:5671
#2  0x080cb037 in gdbarch_register_sim_regno (gdbarch=0x83179d8, reg_nr=90)
    at ../../combined/gdb/gdbarch.c:3983
#3  0x08127e0f in gdbsim_fetch_register (regno=90) at ../../combined/gdb/remote-sim.c:299
#4  0x08094450 in legacy_read_register_gen (regnum=90, 
    myaddr=0xbffff0f0 "Ððÿ¿Øy1\b\030ñÿ¿\020\227\f\bØy1\bZ")
    at ../../combined/gdb/regcache.c:730
#5  0x0809453e in regcache_raw_read (regcache=0x8323000, regnum=90, buf=0xbffff0f0)
    at ../../combined/gdb/regcache.c:748
#6  0x0809499a in regcache_cooked_read (regcache=0x8323000, regnum=90, buf=0xbffff0f0)
    at ../../combined/gdb/regcache.c:838
#7  0x081553ef in sentinel_frame_prev_register (next_frame=0x82faca8, 
    this_prologue_cache=0x82facbc, regnum=90, optimized=0xbffff098, lvalp=0xbffff09c, 
    addrp=0xbffff0a0, realnum=0xbfffefd4, bufferp=0xbffff0f0)
    at ../../combined/gdb/sentinel-frame.c:69
#8  0x0811622b in frame_register_unwind (frame=0x82faca8, regnum=90, 
    optimizedp=0xbffff098, lvalp=0xbffff09c, addrp=0xbffff0a0, realnump=0xbfffefd4, 
    bufferp=0xbffff0f0) at ../../combined/gdb/frame.c:532
#9  0x080dd324 in mips_get_saved_register (
    raw_buffer=0xbffff0f0 "Ððÿ¿Øy1\b\030ñÿ¿\020\227\f\bØy1\bZ", optimizedp=0xbffff098, 
    addrp=0xbffff0a0, frame=0x82faca8, regnum=90, lvalp=0xbffff09c)
    at ../../combined/gdb/mips-tdep.c:5605
#10 0x080cb7f6 in gdbarch_deprecated_get_saved_register (gdbarch=0x83179d8, 
    raw_buffer=0xbffff0f0 "Ððÿ¿Øy1\b\030ñÿ¿\020\227\f\bØy1\bZ", optimized=0xbffff098, 
    addrp=0xbffff0a0, frame=0x82faca8, regnum=90, lval=0xbffff09c)
    at ../../combined/gdb/gdbarch.c:4194
#11 0x08116433 in frame_register (frame=0x82faca8, regnum=90, optimizedp=0xbffff098, 
    lvalp=0xbffff09c, addrp=0xbffff0a0, realnump=0xbffff0ac, bufferp=0xbffff0f0)
    at ../../combined/gdb/frame.c:575
#12 0x08116846 in frame_register_read (frame=0x82faca8, regnum=90, myaddr=0xbffff0f0)
    at ../../combined/gdb/frame.c:753
#13 0x080db5e6 in print_gp_register_row (file=0x8316608, frame=0x82faca8, 
    start_regnum=90) at ../../combined/gdb/mips-tdep.c:4304
#14 0x080db857 in mips_print_registers_info (gdbarch=0x83179d8, file=0x8316608, 
    frame=0x82faca8, regnum=-1, all=0) at ../../combined/gdb/mips-tdep.c:4358
#15 0x080cadc5 in gdbarch_print_registers_info (gdbarch=0x83179d8, file=0x8316608, 
    frame=0x82faca8, regnum=-1, all=0) at ../../combined/gdb/gdbarch.c:3918
#16 0x080b892b in registers_info (addr_exp=0x0, fpregs=0)
    at ../../combined/gdb/infcmd.c:1620
#17 0x080b8b48 in nofp_registers_info (addr_exp=0x0, from_tty=1)
    at ../../combined/gdb/infcmd.c:1720
#18 0x0807e5d2 in do_cfunc (c=0x82ed018, args=0x0, from_tty=1)
    at ../../combined/gdb/cli/cli-decode.c:53
#19 0x0807fed0 in cmd_func (cmd=0x82ed018, args=0x0, from_tty=1)
    at ../../combined/gdb/cli/cli-decode.c:1517
#20 0x081105e4 in execute_command (p=0x82e0a98 "", from_tty=1)
    at ../../combined/gdb/top.c:716
#21 0x080c4602 in command_handler (command=0x82e0a90 "info reg")
    at ../../combined/gdb/event-top.c:500
#22 0x080c4c48 in command_line_handler (rl=0x835fe40 "info reg")
    at ../../combined/gdb/event-top.c:793
During symbol reading, debug info mismatch between compiler and debugger.
#23 0x0820d1e2 in rl_callback_read_char () at ../../combined/readline/callback.c:123
#24 0x080c3f37 in rl_callback_read_char_wrapper (client_data=0x0)
    at ../../combined/gdb/event-top.c:166
#25 0x080c44d8 in stdin_event_handler (error=0, client_data=0x0)
    at ../../combined/gdb/event-top.c:416
---Type <return> to continue, or q <return> to quit--- 
#26 0x080c38aa in handle_file_event (event_file_desc=0)
    at ../../combined/gdb/event-loop.c:721
#27 0x080c3382 in process_event () at ../../combined/gdb/event-loop.c:334
#28 0x080c33c1 in gdb_do_one_event (data=0x0) at ../../combined/gdb/event-loop.c:371
#29 0x08110276 in do_catch_errors (uiout=0x830ecb0, data=0xbffff498)
    at ../../combined/gdb/top.c:497
#30 0x0811014e in catcher (func=0x8110268 <do_catch_errors>, func_uiout=0x830ecb0, 
    func_args=0xbffff498, func_val=0xbffff490, func_caught=0xbffff494, 
    errstring=0x823dba0 "", mask=6) at ../../combined/gdb/top.c:429
#31 0x081102b0 in catch_errors (func=0x80c3398 <gdb_do_one_event>, func_args=0x0, 
    errstring=0x823dba0 "", mask=6) at ../../combined/gdb/top.c:509
#32 0x080c33e3 in start_event_loop () at ../../combined/gdb/event-loop.c:397
#33 0x080c401e in cli_command_loop () at ../../combined/gdb/event-top.c:198
#34 0x080c2e5e in current_interp_command_loop () at ../../combined/gdb/interps.c:279
#35 0x0807c5f7 in captured_command_loop (data=0x0) at ../../combined/gdb/main.c:97
#36 0x08110276 in do_catch_errors (uiout=0x830ecb0, data=0xbffff638)
    at ../../combined/gdb/top.c:497
#37 0x0811014e in catcher (func=0x8110268 <do_catch_errors>, func_uiout=0x830ecb0, 
    func_args=0xbffff638, func_val=0xbffff630, func_caught=0xbffff634, 
    errstring=0x8220a20 "", mask=6) at ../../combined/gdb/top.c:429
#38 0x081102b0 in catch_errors (func=0x807c5ec <captured_command_loop>, func_args=0x0, 
    errstring=0x8220a20 "", mask=6) at ../../combined/gdb/top.c:509
#39 0x0807d1c7 in captured_main (data=0xbffff920) at ../../combined/gdb/main.c:811
#40 0x08110276 in do_catch_errors (uiout=0x82b9420, data=0xbffff8d8)
    at ../../combined/gdb/top.c:497
#41 0x0811014e in catcher (func=0x8110268 <do_catch_errors>, func_uiout=0x82b9420, 
    func_args=0xbffff8d8, func_val=0xbffff8d0, func_caught=0xbffff8d4, 
    errstring=0x8220a20 "", mask=6) at ../../combined/gdb/top.c:429
#42 0x081102b0 in catch_errors (func=0x807c628 <captured_main>, func_args=0xbffff920, 
    errstring=0x8220a20 "", mask=6) at ../../combined/gdb/top.c:509
#43 0x0807d1ef in gdb_main (args=0xbffff920) at ../../combined/gdb/main.c:820
#44 0x0807c5e9 in main (argc=2, argv=0xbffff9ac) at ../../combined/gdb/gdb.c:35
#45 0x4006e177 in __libc_start_main (main=0x807c5c0 <main>, argc=2, ubp_av=0xbffff9ac, 
    init=0x807b91c <_init>, fini=0x82209d0 <_fini>, rtld_fini=0x4000e184 <_dl_fini>, 
    stack_end=0xbffff99c) at ../sysdeps/generic/libc-start.c:129
(top-gdb) up
#1  0x080dd45c in mips_register_sim_regno (regnum=90)
    at ../../combined/gdb/mips-tdep.c:5671
5671      gdb_assert (regnum >= 0 && regnum < NUM_REGS);
(top-gdb) list
5666
5667    static int
5668    mips_register_sim_regno (int regnum)
5669    {
5670      /* Only makes sense to supply raw registers.  */
5671      gdb_assert (regnum >= 0 && regnum < NUM_REGS);
5672      /* FIXME: cagney/2002-05-13: Need to look at the pseudo register to
5673         decide if it is valid.  Should instead define a standard sim/gdb
5674         register numbering scheme.  */
5675      if (REGISTER_NAME (NUM_REGS + regnum) != NULL
(top-gdb) up
#2  0x080cb037 in gdbarch_register_sim_regno (gdbarch=0x83179d8, reg_nr=90)
    at ../../combined/gdb/gdbarch.c:3983
3983      return gdbarch->register_sim_regno (reg_nr);
(top-gdb) list
3978    {
3979      gdb_assert (gdbarch != NULL);
3980      gdb_assert (gdbarch->register_sim_regno != NULL);
3981      if (gdbarch_debug >= 2)
3982        fprintf_unfiltered (gdb_stdlog, "gdbarch_register_sim_regno called\n");
3983      return gdbarch->register_sim_regno (reg_nr);
3984    }
3985
3986    void
3987    set_gdbarch_register_sim_regno (struct gdbarch *gdbarch,
(top-gdb) up
#3  0x08127e0f in gdbsim_fetch_register (regno=90) at ../../combined/gdb/remote-sim.c:299
299       switch (REGISTER_SIM_REGNO (regno))
(top-gdb) list
294           for (regno = 0; regno < NUM_REGS; regno++)
295             gdbsim_fetch_register (regno);
296           return;
297         }
298
299       switch (REGISTER_SIM_REGNO (regno))
300         {
301         case LEGACY_SIM_REGNO_IGNORE:
302           break;
303         case SIM_REGNO_DOES_NOT_EXIST:
(top-gdb) up
#4  0x08094450 in legacy_read_register_gen (regnum=90, 
    myaddr=0xbffff0f0 "Ððÿ¿Øy1\b\030ñÿ¿\020\227\f\bØy1\bZ")
    at ../../combined/gdb/regcache.c:730
730         target_fetch_registers (regnum);
(top-gdb) list
725           registers_changed ();
726           registers_ptid = inferior_ptid;
727         }
728
729       if (!register_cached (regnum))
730         target_fetch_registers (regnum);
731
732       memcpy (myaddr, register_buffer (current_regcache, regnum),
733               REGISTER_RAW_SIZE (regnum));
734     }
(top-gdb) up
#5  0x0809453e in regcache_raw_read (regcache=0x8323000, regnum=90, buf=0xbffff0f0)
    at ../../combined/gdb/regcache.c:748
748           legacy_read_register_gen (regnum, buf);
(top-gdb) list
743         {
744           gdb_assert (regcache == current_regcache);
745           /* For moment, just use underlying legacy code.  Ulgh!!! This
746              silently and very indirectly updates the regcache's regcache
747              via the global deprecated_register_valid[].  */
748           legacy_read_register_gen (regnum, buf);
749           return;
750         }
751       /* Make certain that the register cache is up-to-date with respect
752          to the current thread.  This switching shouldn't be necessary
(top-gdb) up
#6  0x0809499a in regcache_cooked_read (regcache=0x8323000, regnum=90, buf=0xbffff0f0)
    at ../../combined/gdb/regcache.c:838
838         regcache_raw_read (regcache, regnum, buf);
(top-gdb) list
833     regcache_cooked_read (struct regcache *regcache, int regnum, void *buf)
834     {
835       gdb_assert (regnum >= 0);
836       gdb_assert (regnum < regcache->descr->nr_cooked_registers);
837       if (regnum < regcache->descr->nr_raw_registers)
838         regcache_raw_read (regcache, regnum, buf);
839       else if (regcache->readonly_p
840                && regnum < regcache->descr->nr_cooked_registers
841                && regcache->register_valid_p[regnum])
842         /* Read-only register cache, perhaphs the cooked value was cached?  */
(top-gdb) up
#7  0x081553ef in sentinel_frame_prev_register (next_frame=0x82faca8, 
    this_prologue_cache=0x82facbc, regnum=90, optimized=0xbffff098, lvalp=0xbffff09c, 
    addrp=0xbffff0a0, realnum=0xbfffefd4, bufferp=0xbffff0f0)
    at ../../combined/gdb/sentinel-frame.c:69
69            regcache_cooked_read (cache->regcache, regnum, bufferp);
(top-gdb) list
64          {
65            /* Return the actual value.  */
66            /* Use the regcache_cooked_read() method so that it, on the fly,
67               constructs either a raw or pseudo register from the raw
68               register cache.  */
69            regcache_cooked_read (cache->regcache, regnum, bufferp);
70          }
71      }
72
73      static void
(top-gdb) up
#8  0x0811622b in frame_register_unwind (frame=0x82faca8, regnum=90, 
    optimizedp=0xbffff098, lvalp=0xbffff09c, addrp=0xbffff0a0, realnump=0xbfffefd4, 
    bufferp=0xbffff0f0) at ../../combined/gdb/frame.c:532
532       frame->unwind->prev_register (frame->next, &frame->prologue_cache, regnum,
(top-gdb) list
527         }
528
529       /* Ask this frame to unwind its register.  See comment in
530          "frame-unwind.h" for why NEXT frame and this unwind cace are
531          passed in.  */
532       frame->unwind->prev_register (frame->next, &frame->prologue_cache, regnum,
533                                     optimizedp, lvalp, addrp, realnump, bufferp);
534
535       if (frame_debug)
536         {
(top-gdb) up
#9  0x080dd324 in mips_get_saved_register (
    raw_buffer=0xbffff0f0 "Ððÿ¿Øy1\b\030ñÿ¿\020\227\f\bØy1\bZ", optimizedp=0xbffff098, 
    addrp=0xbffff0a0, frame=0x82faca8, regnum=90, lvalp=0xbffff09c)
    at ../../combined/gdb/mips-tdep.c:5605
5605        frame_register_unwind (deprecated_get_next_frame_hack (frame),
(top-gdb) list
5600        frame_register_unwind (deprecated_get_next_frame_hack (frame),
5601                               regnum % NUM_REGS, optimizedp, lvalp, addrp,
5602                               &realnumx, raw_buffer);
5603      else
5604        /* Get it from the next frame.  */
5605        frame_register_unwind (deprecated_get_next_frame_hack (frame),
5606                               regnum, optimizedp, lvalp, addrp,
5607                               &realnumx, raw_buffer);
5608    }
5609
(top-gdb) up
#10 0x080cb7f6 in gdbarch_deprecated_get_saved_register (gdbarch=0x83179d8, 
    raw_buffer=0xbffff0f0 "Ððÿ¿Øy1\b\030ñÿ¿\020\227\f\bØy1\bZ", optimized=0xbffff098, 
    addrp=0xbffff0a0, frame=0x82faca8, regnum=90, lval=0xbffff09c)
    at ../../combined/gdb/gdbarch.c:4194
4194      gdbarch->deprecated_get_saved_register (raw_buffer, optimized, addrp, frame, regnum, lval);
(top-gdb) list
4189    {
4190      gdb_assert (gdbarch != NULL);
4191      gdb_assert (gdbarch->deprecated_get_saved_register != NULL);
4192      if (gdbarch_debug >= 2)
4193        fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_get_saved_register called\n");
4194      gdbarch->deprecated_get_saved_register (raw_buffer, optimized, addrp, frame, regnum, lval);
4195    }
4196
4197    void
4198    set_gdbarch_deprecated_get_saved_register (struct gdbarch *gdbarch,
(top-gdb) up
#11 0x08116433 in frame_register (frame=0x82faca8, regnum=90, optimizedp=0xbffff098, 
    lvalp=0xbffff09c, addrp=0xbffff0a0, realnump=0xbffff0ac, bufferp=0xbffff0f0)
    at ../../combined/gdb/frame.c:575
575           DEPRECATED_GET_SAVED_REGISTER (bufferp, optimizedp, addrp, frame,
(top-gdb) list
570       /* Ulgh!  Old code that, for lval_register, sets ADDRP to the offset
571          of the register in the register cache.  It should instead return
572          the REGNUM corresponding to that register.  Translate the .  */
573       if (DEPRECATED_GET_SAVED_REGISTER_P ())
574         {
575           DEPRECATED_GET_SAVED_REGISTER (bufferp, optimizedp, addrp, frame,
576                                          regnum, lvalp);
577           /* Compute the REALNUM if the caller wants it.  */
578           if (*lvalp == lval_register)
579             {
(top-gdb) up
#12 0x08116846 in frame_register_read (frame=0x82faca8, regnum=90, myaddr=0xbffff0f0)
    at ../../combined/gdb/frame.c:753
753       frame_register (frame, regnum, &optimized, &lval, &addr, &realnum, myaddr);
(top-gdb) list
748     {
749       int optimized;
750       enum lval_type lval;
751       CORE_ADDR addr;
752       int realnum;
753       frame_register (frame, regnum, &optimized, &lval, &addr, &realnum, myaddr);
754
755       /* FIXME: cagney/2002-05-15: This test, is just bogus.
756
757          It indicates that the target failed to supply a value for a
(top-gdb) up
#13 0x080db5e6 in print_gp_register_row (file=0x8316608, frame=0x82faca8, 
    start_regnum=90) at ../../combined/gdb/mips-tdep.c:4304
4304          if (!frame_register_read (frame, regnum, raw_buffer))
(top-gdb) list
4299          if (*REGISTER_NAME (regnum) == '\0')
4300            continue;               /* unused register */
4301          if (TYPE_CODE (gdbarch_register_type (gdbarch, regnum)) == TYPE_CODE_FLT)
4302            break;                  /* end row: reached FP register */
4303          /* OK: get the data in raw format.  */
4304          if (!frame_register_read (frame, regnum, raw_buffer))
4305            error ("can't read register %d (%s)", regnum, REGISTER_NAME (regnum));
4306          /* pad small registers */
4307          for (byte = 0; byte < (MIPS_REGSIZE - REGISTER_VIRTUAL_SIZE (regnum)); byte++)
4308            printf_filtered ("  ");
(top-gdb) up
#14 0x080db857 in mips_print_registers_info (gdbarch=0x83179d8, file=0x8316608, 
    frame=0x82faca8, regnum=-1, all=0) at ../../combined/gdb/mips-tdep.c:4358
4358                regnum = print_gp_register_row (file, frame, regnum);
(top-gdb) list
4353                    regnum = print_fp_register_row (file, frame, regnum);
4354                  else
4355                    regnum += MIPS_NUMREGS; /* skip floating point regs */
4356                }
4357              else
4358                regnum = print_gp_register_row (file, frame, regnum);
4359            }
4360        }
4361    }
4362
(top-gdb) 

Aw heck, nothing like too much data, better than too little:

(top-gdb) print *gdbarch
$1 = {initialized_p = 1, bfd_arch_info = 0x82a0300, byte_order = 0, 
  osabi = GDB_OSABI_UNKNOWN, tdep = 0x83179a8, dump_tdep = 0x80de244 <mips_dump_tdep>, 
  nr_data = 7, data = 0x8317c60, swap = 0x8317c80, 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 = 0x80d6594 <mips_read_pc>, write_pc = 0x8095868 <generic_target_write_pc>, 
  read_sp = 0x80d63b8 <mips_read_sp>, 
  virtual_frame_pointer = 0x80cfab0 <legacy_virtual_frame_pointer>, 
  pseudo_register_read = 0x80d5da4 <mips_pseudo_register_read>, 
  pseudo_register_write = 0x80d5e24 <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 = 0x80dd340 <mips_stab_reg_to_regnum>, 
  ecoff_reg_to_regnum = 0x80dd3ac <mips_dwarf_dwarf2_ecoff_reg_to_regnum>, 
  dwarf_reg_to_regnum = 0x80dd3ac <mips_dwarf_dwarf2_ecoff_reg_to_regnum>, 
  sdb_reg_to_regnum = 0x80cfa04 <no_op_reg_to_regnum>, 
  dwarf2_reg_to_regnum = 0x80dd3ac <mips_dwarf_dwarf2_ecoff_reg_to_regnum>, 
  register_name = 0x80d5b8c <mips_register_name>, 
  register_type = 0x80d632c <mips_register_type>, deprecated_register_virtual_type = 0, 
  deprecated_register_bytes = 0, 
  deprecated_register_byte = 0x80d6048 <mips_register_byte>, 
  deprecated_register_raw_size = 0x80d5f50 <mips_register_raw_size>, 
  deprecated_register_virtual_size = 0x80cfb58 <generic_register_size>, 
  deprecated_max_register_raw_size = 0, deprecated_max_register_virtual_size = 0, 
  unwind_dummy_id = 0, 
  deprecated_save_dummy_frame_tos = 0x811cad0 <generic_save_dummy_frame_tos>, 
  deprecated_fp_regnum = -1, deprecated_target_read_fp = 0x80d63b8 <mips_read_sp>, 
  push_dummy_call = 0x80d9c18 <mips_o32_push_dummy_call>, deprecated_push_arguments = 0, 
  deprecated_use_generic_dummy_frames = 1, deprecated_push_return_address = 0, 
  deprecated_dummy_write_sp = 0, deprecated_register_size = 0, call_dummy_location = 4, 
  call_dummy_address = 0x80dd228 <mips_call_dummy_address>, 
  deprecated_call_dummy_start_offset = 0, deprecated_call_dummy_breakpoint_offset = 0, 
  deprecated_call_dummy_length = 0, deprecated_call_dummy_words = 0x82dd270, 
  deprecated_sizeof_call_dummy_words = 8, deprecated_call_dummy_stack_adjust = 0, 
  deprecated_fix_call_dummy = 0, push_dummy_code = 0, deprecated_push_dummy_frame = 0, 
  deprecated_extra_stack_alignment_needed = 0, deprecated_do_registers_info = 0, 
  print_registers_info = 0x80db768 <mips_print_registers_info>, print_float_info = 0, 
  print_vector_info = 0, register_sim_regno = 0x80dd418 <mips_register_sim_regno>, 
  register_bytes_ok = 0, cannot_fetch_register = 0x80cfaa4 <cannot_register_not>, 
  cannot_store_register = 0x80cfaa4 <cannot_register_not>, get_longjmp_target = 0, 
  deprecated_pc_in_call_dummy = 0x811c924 <generic_pc_in_call_dummy>, 
  deprecated_init_frame_pc_first = 0x80d7518 <mips_init_frame_pc_first>, 
  deprecated_init_frame_pc = 0x80cfa0c <init_frame_pc_noop>, believe_pcc_promotion = 0, 
  believe_pcc_promotion_type = 0, 
  deprecated_get_saved_register = 0x80dd254 <mips_get_saved_register>, 
  deprecated_register_convertible = 0x80d613c <mips_register_convertible>, 
  deprecated_register_convert_to_virtual = 0x80d6188 <mips_register_convert_to_virtual>, 
  deprecated_register_convert_to_raw = 0x80d61e4 <mips_register_convert_to_raw>, 
  convert_register_p = 0x80cfd1c <legacy_convert_register_p>, 
  register_to_value = 0x80cfd34 <legacy_register_to_value>, 
  value_to_register = 0x80cfd6c <legacy_value_to_register>, 
  pointer_to_address = 0x8092cb8 <signed_pointer_to_address>, 
  address_to_pointer = 0x8092cec <address_to_signed_pointer>, 
  integer_to_address = 0x80dd4bc <mips_integer_to_address>, 
  return_value_on_stack = 0x80cf84c <generic_return_value_on_stack_not>, 
  deprecated_pop_frame = 0x80dac90 <mips_pop_frame>, deprecated_store_struct_return = 0, 
  extract_return_value = 0x80dc4a0 <mips_o32_extract_return_value>, 
  store_return_value = 0x80cf748 <legacy_store_return_value>, 
  deprecated_extract_return_value = 0, 
  deprecated_store_return_value = 0x80dc4b8 <mips_o32_store_return_value>, 
---Type <return> to continue, or q <return> to quit---
  extract_struct_value_address = 0x80dc858 <mips_extract_struct_value_address>, 
  deprecated_extract_struct_value_address = 0, 
  use_struct_convention = 0x80cf7b0 <always_use_struct_convention>, 
  deprecated_frame_init_saved_regs = 0x80d6f10 <mips_find_saved_regs>, 
  deprecated_init_extra_frame_info = 0x80d8b28 <mips_init_extra_frame_info>, 
  skip_prologue = 0x80dbbec <mips_skip_prologue>, 
  prologue_frameless_p = 0x80cf8ac <generic_prologue_frameless_p>, 
  inner_than = 0x80cf8fc <core_addr_lessthan>, 
  breakpoint_from_pc = 0x80dcc74 <mips_breakpoint_from_pc>, 
  memory_insert_breakpoint = 0x80ec9b8 <default_memory_insert_breakpoint>, 
  memory_remove_breakpoint = 0x80eca24 <default_memory_remove_breakpoint>, 
  decr_pc_after_break = 0, function_start_offset = 0, 
  remote_translate_xfer_address = 0x80cf88c <generic_remote_translate_xfer_address>, 
  frame_args_skip = 0, 
  frameless_function_invocation = 0x80cf840 <generic_frameless_function_invocation_not>, 
  deprecated_frame_chain = 0x80d8a1c <mips_frame_chain>, 
  deprecated_frame_chain_valid = 0, 
  deprecated_frame_saved_pc = 0x80d75a4 <mips_frame_saved_pc>, unwind_pc = 0, 
  unwind_sp = 0, deprecated_frame_args_address = 0x8117e38 <get_frame_base>, 
  deprecated_frame_locals_address = 0x8117e38 <get_frame_base>, 
  deprecated_saved_pc_after_call = 0x80dd330 <mips_saved_pc_after_call>, 
  frame_num_args = 0, stack_align = 0, frame_align = 0x80d8f14 <mips_frame_align>, 
  reg_struct_has_addr = 0x80d6538 <mips_o32_reg_struct_has_addr>, parm_boundary = 0, 
  float_format = 0x82b4ac0, double_format = 0x82b4b80, long_double_format = 0x82b4b80, 
  convert_from_func_ptr_addr = 0x80cf9f8 <core_addr_identity>, 
  addr_bits_remove = 0x80d7458 <mips_addr_bits_remove>, 
  smash_text_address = 0x80cf9f8 <core_addr_identity>, software_single_step = 0, 
  print_insn = 0x80cf8e4 <legacy_print_insn>, 
  skip_trampoline_code = 0x80dce68 <mips_skip_stub>, 
  in_solib_call_trampoline = 0x80dd06c <mips_in_call_stub>, 
  in_solib_return_trampoline = 0x80dd104 <mips_in_return_stub>, 
  pc_in_sigtramp = 0x80dc874 <mips_pc_in_sigtramp>, sigtramp_start = 0, 
  sigtramp_end = 0, in_function_epilogue_p = 0x80cf880 <generic_in_function_epilogue_p>, 
  construct_inferior_arguments = 0x80b6cf0 <construct_inferior_arguments>, 
  elf_make_msymbol_special = 0x80d5908 <mips_elf_make_msymbol_special>, 
  coff_make_msymbol_special = 0x80cfa9c <default_coff_make_msymbol_special>, 
  name_of_malloc = 0x823dee0 "malloc", cannot_step_breakpoint = 0, 
  have_nonsteppable_watchpoint = 0, address_class_type_flags = 0, 
  address_class_type_flags_to_name = 0, address_class_name_to_type_flags = 0, 
  register_reggroup_p = 0x80d5c44 <mips_register_reggroup_p>, fetch_pointer_argument = 0}

Anything else?

-- 
Steve Watt       KD6GGD  PP-ASEL-IA       Email at  home: steve@watt.com
Chelsio Communications   http://www.chelsio.com/    work: steve@chelsio.com
510 N. Pastoria Ave                                Voice: +1 408 962 3627
Sunnyvale, CA, USA, 94085                            Fax: +1 408 730 2580


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