[patch rfc] Add NUM_REGS pseudo regs to MIPS
Steve Watt
steve@asicdesigners.com
Mon Jul 21 18:20:00 GMT 2003
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
More information about the Gdb-patches
mailing list