From 176c085a381e99c95845250e221e60744c3a1ec4 Mon Sep 17 00:00:00 2001 From: Artur Grabowski Date: Tue, 21 May 2002 16:32:13 +0000 Subject: Support for kcore on alpha. Based on a diff from Mattias Amnefelt , which was in turn based on code in NetBSD, but I rewrote all the relevant pieces to have less alignment errors and follow gdb code style. fgs@ ok. --- gnu/usr.bin/binutils/gdb/alphaobsd-nat.c | 18 ++++++++++++++++++ gnu/usr.bin/binutils/gdb/config/alpha/nm-obsd.h | 3 +++ gnu/usr.bin/binutils/gdb/config/alpha/obsd.mh | 4 ++-- gnu/usr.bin/binutils/gdb/config/alpha/tm-alpha.h | 1 + 4 files changed, 24 insertions(+), 2 deletions(-) (limited to 'gnu/usr.bin/binutils') diff --git a/gnu/usr.bin/binutils/gdb/alphaobsd-nat.c b/gnu/usr.bin/binutils/gdb/alphaobsd-nat.c index 734de850fa2..7136c0101f1 100644 --- a/gnu/usr.bin/binutils/gdb/alphaobsd-nat.c +++ b/gnu/usr.bin/binutils/gdb/alphaobsd-nat.c @@ -267,6 +267,24 @@ child_resume (pid, step, signal) perror_with_name ("ptrace"); } +#ifdef FETCH_KCORE_REGISTERS +void +fetch_kcore_registers (pcbp) + struct pcb *pcbp; +{ + int i; + + registers_changed (); + + supply_register (SP_REGNUM, &pcbp->pcb_hw.apcb_ksp); /* sp */ + supply_register (PC_REGNUM, &pcbp->pcb_context[7]); /* pc */ + + for (i = 0; i < 7; i++) /* s0 - s6 */ + supply_register (S0_REGNUM + i, &pcbp->pcb_context[i]); +} +#endif /* FETCH_KCORE_REGISTERS */ + + /* Register that we are able to handle alpha core file formats. */ static struct core_fns alpha_core_fns = diff --git a/gnu/usr.bin/binutils/gdb/config/alpha/nm-obsd.h b/gnu/usr.bin/binutils/gdb/config/alpha/nm-obsd.h index 0c31c103662..d5498bde3e0 100644 --- a/gnu/usr.bin/binutils/gdb/config/alpha/nm-obsd.h +++ b/gnu/usr.bin/binutils/gdb/config/alpha/nm-obsd.h @@ -43,3 +43,6 @@ get_longjmp_target PARAMS ((CORE_ADDR *)); #define FETCH_INFERIOR_REGISTERS #define CHILD_RESUME + +/* This enables functions needed by kcore-nbsd.c */ +#define FETCH_KCORE_REGISTERS diff --git a/gnu/usr.bin/binutils/gdb/config/alpha/obsd.mh b/gnu/usr.bin/binutils/gdb/config/alpha/obsd.mh index dd128776a21..7e6923e96b4 100644 --- a/gnu/usr.bin/binutils/gdb/config/alpha/obsd.mh +++ b/gnu/usr.bin/binutils/gdb/config/alpha/obsd.mh @@ -2,7 +2,7 @@ XDEPFILES= XM_FILE= xm-alphaobsd.h NAT_FILE= nm-obsd.h -NATDEPFILES= infptrace.o inftarg.o corelow.o alphaobsd-nat.o fork-child.o - +NATDEPFILES= infptrace.o inftarg.o corelow.o kcore-nbsd.o alphaobsd-nat.o fork-child.o +NAT_CLIBS= -lkvm MMALLOC = MMALLOC_CFLAGS = -DNO_MMALLOC diff --git a/gnu/usr.bin/binutils/gdb/config/alpha/tm-alpha.h b/gnu/usr.bin/binutils/gdb/config/alpha/tm-alpha.h index a8dcde4358a..c59e3d851b4 100644 --- a/gnu/usr.bin/binutils/gdb/config/alpha/tm-alpha.h +++ b/gnu/usr.bin/binutils/gdb/config/alpha/tm-alpha.h @@ -128,6 +128,7 @@ alpha_saved_pc_after_call PARAMS ((struct frame_info *)); #define V0_REGNUM 0 /* Function integer return value */ #define T7_REGNUM 8 /* Return address register for OSF/1 __add* */ +#define S0_REGNUM 9 /* First callee-saved register */ #define GCC_FP_REGNUM 15 /* Used by gcc as frame register */ #define A0_REGNUM 16 /* Loc of first arg during a subr call */ #define T9_REGNUM 23 /* Return address register for OSF/1 __div* */ -- cgit v1.2.3