diff --git a/gnu/dist/toolchain/gdb/config/sparc/nbsd.mh b/gnu/dist/toolchain/gdb/config/sparc/nbsd.mh index 3c3e0d20863b..0a6a542425d7 100644 --- a/gnu/dist/toolchain/gdb/config/sparc/nbsd.mh +++ b/gnu/dist/toolchain/gdb/config/sparc/nbsd.mh @@ -2,5 +2,5 @@ XDEPFILES= ser-tcp.o XM_FILE= xm-nbsd.h NAT_FILE= nm-nbsd.h -NATDEPFILES= fork-child.o infptrace.o inftarg.o corelow.o sparcnbsd-nat.o solib.o +NATDEPFILES= fork-child.o infptrace.o inftarg.o corelow.o kcore-nbsd.o sparcnbsd-nat.o solib.o HOST_IPC=-DBSD_IPC diff --git a/gnu/dist/toolchain/gdb/config/sparc/nbsdelf.mh b/gnu/dist/toolchain/gdb/config/sparc/nbsdelf.mh index fae564f541bf..89dbb216627b 100644 --- a/gnu/dist/toolchain/gdb/config/sparc/nbsdelf.mh +++ b/gnu/dist/toolchain/gdb/config/sparc/nbsdelf.mh @@ -2,5 +2,5 @@ XDEPFILES= ser-tcp.o XM_FILE= xm-nbsd.h NAT_FILE= nm-nbsdelf.h -NATDEPFILES= fork-child.o infptrace.o inftarg.o corelow.o sparcnbsd-nat.o solib.o +NATDEPFILES= fork-child.o infptrace.o inftarg.o corelow.o kcore-nbsd.o sparcnbsd-nat.o solib.o HOST_IPC=-DBSD_IPC diff --git a/gnu/dist/toolchain/gdb/sparcnbsd-nat.c b/gnu/dist/toolchain/gdb/sparcnbsd-nat.c index 1f48e43604eb..d452f71388cd 100644 --- a/gnu/dist/toolchain/gdb/sparcnbsd-nat.c +++ b/gnu/dist/toolchain/gdb/sparcnbsd-nat.c @@ -340,3 +340,61 @@ _initialize_sparcnbsd_nat () add_core_fns (&sparcnbsd_core_fns); add_core_fns (&sparcnbsd_elfcore_fns); } + + +/* + * kernel_u_size() is not helpful on NetBSD because + * the "u" struct is NOT in the core dump file. + */ + +#ifdef FETCH_KCORE_REGISTERS +/* + * Get registers from a kernel crash dump or live kernel. + * Called by kcore-nbsd.c:get_kcore_registers(). + */ +void +fetch_kcore_registers (pcb) + struct pcb *pcb; +{ + struct rwindow win; + int i; + u_long sp; + + /* We only do integer registers */ + sp = pcb->pcb_sp; + + supply_register(SP_REGNUM, (char *)&pcb->pcb_sp); + supply_register(PC_REGNUM, (char *)&pcb->pcb_pc); + supply_register(O7_REGNUM, (char *)&pcb->pcb_pc); + supply_register(PS_REGNUM, (char *)&pcb->pcb_psr); + supply_register(WIM_REGNUM, (char *)&pcb->pcb_wim); + /* + * Read last register window saved on stack. + */ + if (target_read_memory(sp, (char *)&win, sizeof win)) { + printf("cannot read register window at sp=%x\n", pcb->pcb_sp); + bzero((char *)&win, sizeof win); + } + for (i = 0; i < sizeof(win.rw_local); ++i) + supply_register(i + L0_REGNUM, (char *)&win.rw_local[i]); + for (i = 0; i < sizeof(win.rw_in); ++i) + supply_register(i + I0_REGNUM, (char *)&win.rw_in[i]); + /* + * read the globals & outs saved on the stack (for a trap frame). + */ + sp += 92 + 12; /* XXX - MINFRAME + R_Y */ + for (i = 1; i < 14; ++i) { + u_long val; + + if (target_read_memory(sp + i*4, (char *)&val, sizeof val) == 0) + supply_register(i, (char *)&val); + } +#if 0 + if (kvread(pcb.pcb_cpctxp, &cps) == 0) + supply_register(CPS_REGNUM, (char *)&cps); +#endif + + /* The kernel does not use the FPU, so ignore it. */ + registers_fetched (); +} +#endif /* FETCH_KCORE_REGISTERS */ diff --git a/gnu/usr.bin/gdb/arch/sparc/defs.mk b/gnu/usr.bin/gdb/arch/sparc/defs.mk index 75c933c38354..38842e937180 100644 --- a/gnu/usr.bin/gdb/arch/sparc/defs.mk +++ b/gnu/usr.bin/gdb/arch/sparc/defs.mk @@ -1,7 +1,8 @@ # This file is automatically generated. DO NOT EDIT! -# Generated from: NetBSD: toolchain2netbsd,v 1.12 2001/08/14 05:17:59 tv Exp +# Generated from: NetBSD: toolchain2netbsd,v 1.14 2002/01/22 13:13:00 mrg Exp # G_INTERNAL_CFLAGS=-g -O2 -I. -I${DIST}/gdb -I${DIST}/gdb/config -DHAVE_CONFIG_H -I${DIST}/gdb/../include/opcode -I${DIST}/gdb/../readline/.. -I../bfd -I${DIST}/gdb/../bfd -I${DIST}/gdb/../include -I../intl -I${DIST}/gdb/../intl -I${DIST}/gdb/tui -DUSE_INCLUDED_REGEX -G_LIBGDB_OBS=version.o blockframe.o breakpoint.o findvar.o stack.o thread.o source.o values.o eval.o valops.o valarith.o valprint.o printcmd.o symtab.o symfile.o symmisc.o infcmd.o infrun.o command.o expprint.o environ.o event-loop.o event-top.o inf-loop.o gdbarch.o arch-utils.o gdbtypes.o copying.o sparc-tdep.o ser-tcp.o ser-unix.o ser-pipe.o fork-child.o infptrace.o inftarg.o corelow.o sparcnbsd-nat.o solib.o remote.o dcache.o remote-utils.o tracepoint.o ax-general.o ax-gdb.o mem-break.o target.o parse.o language.o c-exp.tab.o jv-exp.tab.o f-exp.tab.o m2-exp.tab.o buildsym.o kod.o kod-cisco.o gdb-events.o exec.o bcache.o objfiles.o minsyms.o maint.o demangle.o dbxread.o coffread.o elfread.o dwarfread.o dwarf2read.o mipsread.o stabsread.o corefile.o c-lang.o ch-exp.o ch-lang.o f-lang.o ui-out.o cli-out.o varobj.o wrapper.o jv-lang.o jv-valprint.o jv-typeprint.o m2-lang.o scm-exp.o scm-lang.o scm-valprint.o complaints.o typeprint.o c-typeprint.o ch-typeprint.o f-typeprint.o m2-typeprint.o c-valprint.o cp-valprint.o ch-valprint.o f-valprint.o m2-valprint.o nlmread.o serial.o mdebugread.o os9kread.o top.o utils.o ui-file.o tui-file.o annotate.o inflow.o gnu-regex.o init.o +G_LIBGDB_OBS=version.o blockframe.o breakpoint.o findvar.o stack.o thread.o source.o values.o eval.o valops.o valarith.o valprint.o printcmd.o symtab.o symfile.o symmisc.o infcmd.o infrun.o command.o expprint.o environ.o event-loop.o event-top.o inf-loop.o gdbarch.o arch-utils.o gdbtypes.o copying.o sparc-tdep.o ser-tcp.o ser-unix.o ser-pipe.o fork-child.o infptrace.o inftarg.o corelow.o kcore-nbsd.o sparcnbsd-nat.o solib.o remote.o dcache.o remote-utils.o tracepoint.o ax-general.o ax-gdb.o mem-break.o target.o parse.o language.o c-exp.tab.o jv-exp.tab.o f-exp.tab.o m2-exp.tab.o buildsym.o kod.o kod-cisco.o gdb-events.o exec.o bcache.o objfiles.o minsyms.o maint.o demangle.o dbxread.o coffread.o elfread.o dwarfread.o dwarf2read.o mipsread.o stabsread.o corefile.o c-lang.o ch-exp.o ch-lang.o f-lang.o ui-out.o cli-out.o varobj.o wrapper.o jv-lang.o jv-valprint.o jv-typeprint.o m2-lang.o scm-exp.o scm-lang.o scm-valprint.o complaints.o typeprint.o c-typeprint.o ch-typeprint.o f-typeprint.o m2-typeprint.o c-valprint.o cp-valprint.o ch-valprint.o f-valprint.o m2-valprint.o nlmread.o serial.o mdebugread.o os9kread.o top.o utils.o ui-file.o tui-file.o annotate.o inflow.o gnu-regex.o init.o +G_SIM_OBJS= G_CCFLAGS=-DHAVE_CONFIG_H -I. -I${DIST}/readline -I/usr/local/include -DRL_LIBRARY_VERSION='"4.0"' -g -O2 G_OBJECTS=readline.o vi_mode.o funmap.o keymaps.o parens.o search.o rltty.o complete.o bind.o isearch.o display.o signals.o util.o kill.o undo.o macro.o input.o callback.o terminal.o nls.o xmalloc.o history.o histexpand.o histfile.o histsearch.o shell.o tilde.o diff --git a/gnu/usr.bin/gdb/arch/sparc/init.c b/gnu/usr.bin/gdb/arch/sparc/init.c index ffe246e61d3b..2c977b770c01 100644 --- a/gnu/usr.bin/gdb/arch/sparc/init.c +++ b/gnu/usr.bin/gdb/arch/sparc/init.c @@ -1,5 +1,5 @@ /* This file is automatically generated. DO NOT EDIT! */ -/* Generated from: NetBSD: toolchain2netbsd,v 1.12 2001/08/14 05:17:59 tv Exp */ +/* Generated from: NetBSD: toolchain2netbsd,v 1.14 2002/01/22 13:13:00 mrg Exp */ /* Do not modify this file. */ /* It is created automatically by the Makefile. */ @@ -34,6 +34,7 @@ extern initialize_file_ftype _initialize_kernel_u_addr; extern initialize_file_ftype _initialize_infptrace; extern initialize_file_ftype _initialize_inftarg; extern initialize_file_ftype _initialize_corelow; +extern initialize_file_ftype _initialize_kcore_nbsd; extern initialize_file_ftype _initialize_sparcnbsd_nat; extern initialize_file_ftype _initialize_solib; extern initialize_file_ftype _initialize_remote; @@ -105,6 +106,7 @@ initialize_all_files (void) _initialize_infptrace (); _initialize_inftarg (); _initialize_corelow (); + _initialize_kcore_nbsd (); _initialize_sparcnbsd_nat (); _initialize_solib (); _initialize_remote ();