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 to continue, or q 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 , 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 , 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 , 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 , 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 , 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 , 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
, 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 , 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 , write_pc = 0x8095868 , read_sp = 0x80d63b8 , virtual_frame_pointer = 0x80cfab0 , pseudo_register_read = 0x80d5da4 , pseudo_register_write = 0x80d5e24 , 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 , ecoff_reg_to_regnum = 0x80dd3ac , dwarf_reg_to_regnum = 0x80dd3ac , sdb_reg_to_regnum = 0x80cfa04 , dwarf2_reg_to_regnum = 0x80dd3ac , register_name = 0x80d5b8c , register_type = 0x80d632c , deprecated_register_virtual_type = 0, deprecated_register_bytes = 0, deprecated_register_byte = 0x80d6048 , deprecated_register_raw_size = 0x80d5f50 , deprecated_register_virtual_size = 0x80cfb58 , deprecated_max_register_raw_size = 0, deprecated_max_register_virtual_size = 0, unwind_dummy_id = 0, deprecated_save_dummy_frame_tos = 0x811cad0 , deprecated_fp_regnum = -1, deprecated_target_read_fp = 0x80d63b8 , push_dummy_call = 0x80d9c18 , 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 , 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 , print_float_info = 0, print_vector_info = 0, register_sim_regno = 0x80dd418 , register_bytes_ok = 0, cannot_fetch_register = 0x80cfaa4 , cannot_store_register = 0x80cfaa4 , get_longjmp_target = 0, deprecated_pc_in_call_dummy = 0x811c924 , deprecated_init_frame_pc_first = 0x80d7518 , deprecated_init_frame_pc = 0x80cfa0c , believe_pcc_promotion = 0, believe_pcc_promotion_type = 0, deprecated_get_saved_register = 0x80dd254 , deprecated_register_convertible = 0x80d613c , deprecated_register_convert_to_virtual = 0x80d6188 , deprecated_register_convert_to_raw = 0x80d61e4 , convert_register_p = 0x80cfd1c , register_to_value = 0x80cfd34 , value_to_register = 0x80cfd6c , pointer_to_address = 0x8092cb8 , address_to_pointer = 0x8092cec , integer_to_address = 0x80dd4bc , return_value_on_stack = 0x80cf84c , deprecated_pop_frame = 0x80dac90 , deprecated_store_struct_return = 0, extract_return_value = 0x80dc4a0 , store_return_value = 0x80cf748 , deprecated_extract_return_value = 0, deprecated_store_return_value = 0x80dc4b8 , ---Type to continue, or q to quit--- extract_struct_value_address = 0x80dc858 , deprecated_extract_struct_value_address = 0, use_struct_convention = 0x80cf7b0 , deprecated_frame_init_saved_regs = 0x80d6f10 , deprecated_init_extra_frame_info = 0x80d8b28 , skip_prologue = 0x80dbbec , prologue_frameless_p = 0x80cf8ac , inner_than = 0x80cf8fc , breakpoint_from_pc = 0x80dcc74 , memory_insert_breakpoint = 0x80ec9b8 , memory_remove_breakpoint = 0x80eca24 , decr_pc_after_break = 0, function_start_offset = 0, remote_translate_xfer_address = 0x80cf88c , frame_args_skip = 0, frameless_function_invocation = 0x80cf840 , deprecated_frame_chain = 0x80d8a1c , deprecated_frame_chain_valid = 0, deprecated_frame_saved_pc = 0x80d75a4 , unwind_pc = 0, unwind_sp = 0, deprecated_frame_args_address = 0x8117e38 , deprecated_frame_locals_address = 0x8117e38 , deprecated_saved_pc_after_call = 0x80dd330 , frame_num_args = 0, stack_align = 0, frame_align = 0x80d8f14 , reg_struct_has_addr = 0x80d6538 , parm_boundary = 0, float_format = 0x82b4ac0, double_format = 0x82b4b80, long_double_format = 0x82b4b80, convert_from_func_ptr_addr = 0x80cf9f8 , addr_bits_remove = 0x80d7458 , smash_text_address = 0x80cf9f8 , software_single_step = 0, print_insn = 0x80cf8e4 , skip_trampoline_code = 0x80dce68 , in_solib_call_trampoline = 0x80dd06c , in_solib_return_trampoline = 0x80dd104 , pc_in_sigtramp = 0x80dc874 , sigtramp_start = 0, sigtramp_end = 0, in_function_epilogue_p = 0x80cf880 , construct_inferior_arguments = 0x80b6cf0 , elf_make_msymbol_special = 0x80d5908 , coff_make_msymbol_special = 0x80cfa9c , 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 , 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