* alpha-tdep.h (ALPHA_S0_REGNUM): New define.

* alphabsd-nat.c: Include <sys/types.h>, <sys/signal.h>,
<machine/pcb.h> and "bsd-kvm.h".
(alphabsd_supply_pcb): New function.
(_initialize_alphabsd_nat): Enable libkvm interface.
* Makefile.in (alphabsd-nat.o): Update dependencies.
* config/alpha/fbsd.mh (NATDEPFILES): Add bsd-kvm.o.
(LOADLIBES): New variable.
* config/alpha/nbsd.mh (NATDEPFILES): Add bsd-kvm.o.
(LOADLIBES): New variable.
This commit is contained in:
Mark Kettenis 2006-07-31 20:15:50 +00:00
parent 35d5d4ee3d
commit 4816ec693b
6 changed files with 61 additions and 4 deletions

View file

@ -1,3 +1,16 @@
2006-07-31 Mark Kettenis <kettenis@gnu.org>
* alpha-tdep.h (ALPHA_S0_REGNUM): New define.
* alphabsd-nat.c: Include <sys/types.h>, <sys/signal.h>,
<machine/pcb.h> and "bsd-kvm.h".
(alphabsd_supply_pcb): New function.
(_initialize_alphabsd_nat): Enable libkvm interface.
* Makefile.in (alphabsd-nat.o): Update dependencies.
* config/alpha/fbsd.mh (NATDEPFILES): Add bsd-kvm.o.
(LOADLIBES): New variable.
* config/alpha/nbsd.mh (NATDEPFILES): Add bsd-kvm.o.
(LOADLIBES): New variable.
2006-07-31 Fred Fish <fnf@specifix.com>
* arm-tdep.c (arm_make_prologue_cache): Use FRAME_OBSTACK_ZALLOC

View file

@ -1694,7 +1694,8 @@ aix-thread.o: aix-thread.c $(defs_h) $(gdb_assert_h) $(gdbthread_h) \
$(target_h) $(inferior_h) $(regcache_h) $(gdbcmd_h) $(ppc_tdep_h) \
$(gdb_string_h)
alphabsd-nat.o: alphabsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \
$(alpha_tdep_h) $(alphabsd_tdep_h) $(inf_ptrace_h) $(gregset_h)
$(alpha_tdep_h) $(alphabsd_tdep_h) $(inf_ptrace_h) $(gregset_h) \
$(bsd_kvm_h)
alphabsd-tdep.o: alphabsd-tdep.c $(defs_h) $(alpha_tdep_h) \
$(alphabsd_tdep_h)
alphafbsd-tdep.o: alphafbsd-tdep.c $(defs_h) $(value_h) $(osabi_h) \

View file

@ -40,6 +40,7 @@
#define ALPHA_V0_REGNUM 0 /* Function integer return value */
#define ALPHA_T7_REGNUM 8 /* Return address register for OSF/1 __add* */
#define ALPHA_S0_REGNUM 9 /* First saved register */
#define ALPHA_GCC_FP_REGNUM 15 /* Used by gcc as frame register */
#define ALPHA_A0_REGNUM 16 /* Loc of first arg during a subr call */
#define ALPHA_T9_REGNUM 23 /* Return address register for OSF/1 __div* */

View file

@ -1,6 +1,7 @@
/* Native-dependent code for Alpha BSD's.
Copyright (C) 2000, 2001, 2002, 2004, 2005 Free Software Foundation, Inc.
Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006
Free Software Foundation, Inc.
This file is part of GDB.
@ -150,6 +151,40 @@ alphabsd_store_inferior_registers (int regno)
perror_with_name (_("Couldn't write floating point status"));
}
}
/* Support for debugging kernel virtual memory images. */
#include <sys/types.h>
#include <sys/signal.h>
#include <machine/pcb.h>
#include "bsd-kvm.h"
static int
alphabsd_supply_pcb (struct regcache *regcache, struct pcb *pcb)
{
int regnum;
/* The following is true for OpenBSD 3.9:
The pcb contains the register state at the context switch inside
cpu_switch(). */
/* The stack pointer shouldn't be zero. */
if (pcb->pcb_hw.apcb_ksp == 0)
return 0;
regcache_raw_supply (regcache, ALPHA_SP_REGNUM, &pcb->pcb_hw.apcb_ksp);
for (regnum = ALPHA_S0_REGNUM; regnum < ALPHA_A0_REGNUM; regnum++)
regcache_raw_supply (regcache, regnum,
&pcb->pcb_context[regnum - ALPHA_S0_REGNUM]);
regcache_raw_supply (regcache, ALPHA_RA_REGNUM, &pcb->pcb_context[7]);
return 1;
}
/* Provide a prototype to silence -Wmissing-prototypes. */
void _initialize_alphabsd_nat (void);
@ -163,4 +198,7 @@ _initialize_alphabsd_nat (void)
t->to_fetch_registers = alphabsd_fetch_inferior_registers;
t->to_store_registers = alphabsd_store_inferior_registers;
add_target (t);
/* Support debugging kernel virtual memory images. */
bsd_kvm_add_target (alphabsd_supply_pcb);
}

View file

@ -1,4 +1,6 @@
# Host: FreeBSD/alpha
NATDEPFILES= fork-child.o inf-ptrace.o \
fbsd-nat.o alphabsd-nat.o \
fbsd-nat.o alphabsd-nat.o bsd-kvm.o \
gcore.o corelow.o core-regset.o
LOADLIBES= -lkvm

View file

@ -1,2 +1,4 @@
# Host: NetBSD/alpha
NATDEPFILES= fork-child.o inf-ptrace.o alphabsd-nat.o
NATDEPFILES= fork-child.o inf-ptrace.o alphabsd-nat.o bsd-kvm.o
LOADLIBES= -lkvm