diff options
-rw-r--r-- | gdb/ChangeLog | 23 | ||||
-rw-r--r-- | gdb/Makefile.in | 3 | ||||
-rw-r--r-- | gdb/config/sparc/nbsdaout.mh | 6 | ||||
-rw-r--r-- | gdb/config/sparc/nbsdelf.mh | 6 | ||||
-rw-r--r-- | gdb/config/sparc/nm-nbsd.h | 16 | ||||
-rw-r--r-- | gdb/config/sparc/nm-nbsdaout.h | 10 | ||||
-rw-r--r-- | gdb/configure.host | 3 | ||||
-rw-r--r-- | gdb/sparc-tdep.h | 5 | ||||
-rw-r--r-- | gdb/sparcnbsd-nat.c | 134 | ||||
-rw-r--r-- | gdb/sparcnbsd-tdep.c | 18 |
10 files changed, 65 insertions, 159 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c745d208fb1..2c494a6aba1 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,26 @@ +2003-11-16 Mark Kettenis <kettenis@gnu.org> + + * sparc-tdep.h (sparc32nbsd_gregset): Add extern declaration. + * sparcnbsd-nat.c: Rewrite. + * sparcnbsd-tdep.c (sparc32nbsd_gregset): Rename from + sparcnbsd_gregset. + (fetch_core_registers): Adjust. + (sparc32nbsd_init_abi): Rename from sparcnbsd_init_abi. + (sparc32nbsd_aout_init_abi): Rename from sparcbsd_aout_init_abi. + (sparc32nbsd_elf_init_abi): Rename from sparcbsd_elf_init_abi. + (_initialize_sparnbsd_tdep): Adjust. + * Makefile.in (ALLDEPFILES): Add sparcnbsd-nat.c. + (sparcnbsd-nat.o): New dependency. + * configure.host: Add sparc-*-netbsdelf*, sparc-*-netbsdaout* and + sparc-*-netbsd*. + * config/sparc/nm-nbsd.h: Don't include "regcache.h". + (CHILD_PREPARE_TO_STORE): Remove. + * config/sparc/nm-nbsdaout.h: Tweak some comments. + * config/sparc/nbsdelf.mh (NATDEPFILES): Add sparc-nat.o. + (XM_FILE): Delete. + * config/sparc/nbsdaout.mh (NATDEPFILES): Add sparc-nat.o + (XM_FILE): Delete. + 2003-11-15 Mark Kettenis <kettenis@gnu.org> * sparcnbsd-tdep.c: Don't include "target.h", "value.h" and diff --git a/gdb/Makefile.in b/gdb/Makefile.in index f38397be738..a1371a83718 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -1296,7 +1296,7 @@ ALLDEPFILES = \ solib.c solib-irix.c solib-svr4.c solib-sunos.c \ sparc-tdep.c sparc-linux-tdep.c sparc-sol2-tdep.c \ sparcnbsd-tdep.c \ - sparc-nat.c sparc-sol2-nat.c sparcbsd-nat.c \ + sparc-nat.c sparc-sol2-nat.c sparcbsd-nat.c sparcnbsd-nat.c \ sparc64-tdep.c sparc64-sol2-tdep.c sparc64-linux-tdep.c \ sparc64fbsd-tdep.c \ sparc64-nat.c sparc64-sol2-nat.c sparc64-linux-nat.c \ @@ -2323,6 +2323,7 @@ sparc-sol2-tdep.o: sparc-sol2-tdep.c $(defs_h) $(frame_h) $(frame_base_h) \ $(gdb_string_h) $(sparc_tdep_h) sparcbsd-nat.o: sparcbsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \ $(sparc64_tdep_h) $(sparcbsd_nat_h) +sparcnbsd-nat.o: sparcnbsd-nat.c $(defs_h) $(sparc_tdep_h) $(sparc_nat_h) sparcnbsd-tdep.o: sparcnbsd-tdep.c $(defs_h) $(gdbcore_h) $(osabi_h) \ $(regcache_h) $(solib_svr4_h) $(gdb_string_h) \ $(sparc_tdep_h) $(nbsd_tdep_h) diff --git a/gdb/config/sparc/nbsdaout.mh b/gdb/config/sparc/nbsdaout.mh index 45208998124..8944e60e483 100644 --- a/gdb/config/sparc/nbsdaout.mh +++ b/gdb/config/sparc/nbsdaout.mh @@ -1,4 +1,4 @@ -# Host: Sun 4 or Sparcstation, running NetBSD -NATDEPFILES= fork-child.o infptrace.o inftarg.o sparcnbsd-nat.o solib-sunos.o -XM_FILE= xm-nbsd.h +# Host: NetBSD/sparc a.out +NATDEPFILES= sparc-nat.o sparcnbsd-nat.o \ + fork-child.o infptrace.o inftarg.o solib-sunos.o NAT_FILE= nm-nbsdaout.h diff --git a/gdb/config/sparc/nbsdelf.mh b/gdb/config/sparc/nbsdelf.mh index 1042d91b9dd..45309ecaec0 100644 --- a/gdb/config/sparc/nbsdelf.mh +++ b/gdb/config/sparc/nbsdelf.mh @@ -1,4 +1,4 @@ -# Host: Sun 4 or Sparcstation, running NetBSD -NATDEPFILES= fork-child.o infptrace.o inftarg.o sparcnbsd-nat.o -XM_FILE= xm-nbsd.h +# Host: NetBSD/sparc ELF +NATDEPFILES= sparc-nat.o sparcnbsd-nat.o \ + fork-child.o infptrace.o inftarg.o NAT_FILE= nm-nbsd.h diff --git a/gdb/config/sparc/nm-nbsd.h b/gdb/config/sparc/nm-nbsd.h index 7ffd72e9101..089a5acf1dc 100644 --- a/gdb/config/sparc/nm-nbsd.h +++ b/gdb/config/sparc/nm-nbsd.h @@ -1,5 +1,6 @@ -/* Native-dependent definitions for Sparc running NetBSD, for GDB. - Copyright 1986, 1987, 1989, 1992, 1994, 1996, 1999, 2000, 2002 +/* Native-dependent definitions for NetBSD/sparc. + + Copyright 1986, 1987, 1989, 1992, 1994, 1996, 1999, 2000, 2002, 2003 Free Software Foundation, Inc. This file is part of GDB. @@ -22,14 +23,7 @@ #ifndef NM_NBSD_H #define NM_NBSD_H -#include "regcache.h" - -/* Get generic NetBSD native definitions. */ - +/* Get generic NetBSD native definitions. */ #include "config/nm-nbsd.h" -/* Before storing, we need to read all the registers. */ - -#define CHILD_PREPARE_TO_STORE() deprecated_read_register_bytes (0, NULL, DEPRECATED_REGISTER_BYTES) - -#endif /* NM_NBSD_H */ +#endif /* nm-nbsd.h */ diff --git a/gdb/config/sparc/nm-nbsdaout.h b/gdb/config/sparc/nm-nbsdaout.h index 730759153e0..9e463f9b503 100644 --- a/gdb/config/sparc/nm-nbsdaout.h +++ b/gdb/config/sparc/nm-nbsdaout.h @@ -1,5 +1,6 @@ -/* Native-dependent definitions for Sparc running NetBSD a.out, for GDB. - Copyright 1999 Free Software Foundation, Inc. +/* Native-dependent definitions for NetBSD/sparc a.out. + + Copyright 1999, 2003 Free Software Foundation, Inc. This file is part of GDB. @@ -23,8 +24,7 @@ #include "sparc/nm-nbsd.h" -/* Get generic NetBSD a.out native definitions. */ - +/* Get generic NetBSD a.out native definitions. */ #include "config/nm-nbsdaout.h" -#endif /* NM_NBSDAOUT_H */ +#endif /* nm-nbsdaout.h */ diff --git a/gdb/configure.host b/gdb/configure.host index f7cb953ed34..3779635f55b 100644 --- a/gdb/configure.host +++ b/gdb/configure.host @@ -131,6 +131,9 @@ s390*-*-*) gdb_host=s390 ;; sh*-*-netbsdelf*) gdb_host=nbsd ;; sparc-*-linux*) gdb_host=linux ;; +sparc-*-netbsdelf*) gdb_host=nbsdelf ;; +sparc-*-netbsdaout*) gdb_host_nbsdaout ;; +sparc-*-netbsd*) gdb_host=nbsdaout ;; sparc-*-solaris2*) gdb_host=sol2 ;; sparc64-*-freebsd*) gdb_host=fbsd ;; sparc64-*-linux*) gdb_host=linux64 ;; diff --git a/gdb/sparc-tdep.h b/gdb/sparc-tdep.h index 65c68d6e18c..a7bdf235073 100644 --- a/gdb/sparc-tdep.h +++ b/gdb/sparc-tdep.h @@ -171,4 +171,9 @@ extern const struct sparc_gregset sparc32_sol2_gregset; extern void sparc32_sol2_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch); +/* Functions and variables exported from sparcnbsd-tdep.c. */ + +/* Register offsets for NetBSD. */ +extern const struct sparc_gregset sparc32nbsd_gregset; + #endif /* sparc-tdep.h */ diff --git a/gdb/sparcnbsd-nat.c b/gdb/sparcnbsd-nat.c index f63d9e5ace0..9c46b9bfc4c 100644 --- a/gdb/sparcnbsd-nat.c +++ b/gdb/sparcnbsd-nat.c @@ -1,4 +1,5 @@ -/* Native-dependent code for SPARC systems running NetBSD. +/* Native-dependent code for NetBSD/sparc. + Copyright 2002, 2003 Free Software Foundation, Inc. Contributed by Wasabi Systems, Inc. @@ -20,136 +21,15 @@ Boston, MA 02111-1307, USA. */ #include "defs.h" -#include "inferior.h" -#include "regcache.h" #include "sparc-tdep.h" -#include "sparcnbsd-tdep.h" - -#include <sys/types.h> -#include <sys/ptrace.h> -#include <machine/reg.h> - -/* NOTE: We don't bother with any of the deferred_store nonsense; it - makes things a lot more complicated than they need to be. */ - -/* Determine if PT_GETREGS fetches this register. */ -static int -getregs_supplies (int regno) -{ - return (regno == PS_REGNUM - || regno == PC_REGNUM - || regno == NPC_REGNUM - || regno == Y_REGNUM - || (regno >= G0_REGNUM && regno <= G7_REGNUM) - || (regno >= O0_REGNUM && regno <= O7_REGNUM) - /* stack regs (handled by sparcnbsd_supply_reg) */ - || (regno >= L0_REGNUM && regno <= I7_REGNUM)); -} +#include "sparc-nat.h" -/* Determine if PT_GETFPREGS fetches this register. */ -static int -getfpregs_supplies (int regno) -{ - return ((regno >= FP0_REGNUM && regno <= (FP0_REGNUM + 31)) - || regno == FPS_REGNUM); -} +/* Provide a prototype to silence -Wmissing-prototypes. */ +void _initialize_sparcnbsd_nat (void); void -fetch_inferior_registers (int regno) +_initialize_sparcnbsd_nat (void) { - /* We don't use deferred stores. */ - if (deferred_stores) - internal_error (__FILE__, __LINE__, - "fetch_inferior_registers: deferred stores pending"); - - if (regno == -1 || getregs_supplies (regno)) - { - struct reg regs; - - if (ptrace (PT_GETREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) ®s, 0) == -1) - perror_with_name ("Couldn't get registers"); - - sparcnbsd_supply_reg32 ((char *) ®s, regno); - if (regno != -1) - return; - } - - if (regno == -1 || getfpregs_supplies (regno)) - { - struct fpreg fpregs; - - if (ptrace (PT_GETFPREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) &fpregs, 0) == -1) - perror_with_name ("Couldn't get floating point registers"); - - sparcnbsd_supply_fpreg32 ((char *) &fpregs, regno); - if (regno != -1) - return; - } -} - -void -store_inferior_registers (int regno) -{ - /* We don't use deferred stores. */ - if (deferred_stores) - internal_error (__FILE__, __LINE__, - "store_inferior_registers: deferred stores pending"); - - if (regno == -1 || getregs_supplies (regno)) - { - struct reg regs; - - if (ptrace (PT_GETREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) ®s, 0) == -1) - perror_with_name ("Couldn't get registers"); - - sparcnbsd_fill_reg32 ((char *) ®s, regno); - - if (ptrace (PT_SETREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) ®s, 0) == -1) - perror_with_name ("Couldn't write registers"); - - /* Deal with the stack regs. */ - if (regno == -1 || regno == SP_REGNUM - || (regno >= L0_REGNUM && regno <= I7_REGNUM)) - { - CORE_ADDR sp = read_register (SP_REGNUM); - int i; - char buf[4]; - - for (i = L0_REGNUM; i <= I7_REGNUM; i++) - { - if (regno == -1 || regno == SP_REGNUM || regno == i) - { - regcache_collect (i, buf); - target_write_memory (sp + ((i - L0_REGNUM) * 4), - buf, sizeof (buf)); - } - } - } - - if (regno != -1) - return; - } - - if (regno == -1 || getfpregs_supplies (regno)) - { - struct fpreg fpregs; - - if (ptrace (PT_GETFPREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) &fpregs, 0) == -1) - perror_with_name ("Couldn't get floating point registers"); - - sparcnbsd_fill_fpreg32 ((char *) &fpregs, regno); - - if (ptrace (PT_SETFPREGS, PIDGET (inferior_ptid), - (PTRACE_ARG3_TYPE) &fpregs, 0) == -1) - perror_with_name ("Couldn't write floating point registers"); - - if (regno != -1) - return; - } + sparc_gregset = &sparc32nbsd_gregset; } diff --git a/gdb/sparcnbsd-tdep.c b/gdb/sparcnbsd-tdep.c index 4a0abb1f114..0596445255c 100644 --- a/gdb/sparcnbsd-tdep.c +++ b/gdb/sparcnbsd-tdep.c @@ -31,7 +31,7 @@ #include "sparc-tdep.h" #include "nbsd-tdep.h" -const struct sparc_gregset sparcnbsd_gregset = +const struct sparc_gregset sparc32nbsd_gregset = { 0 * 4, /* %psr */ 1 * 4, /* %pc */ @@ -59,7 +59,7 @@ fetch_core_registers (char *core_reg_sect, unsigned core_reg_size, int which, case 0: /* Integer registers. */ if (core_reg_size != reg_size) warning ("Wrong size register set in core file."); - sparc32_supply_gregset (&sparcnbsd_gregset, current_regcache, + sparc32_supply_gregset (&sparc32nbsd_gregset, current_regcache, -1, core_reg_sect); break; @@ -102,25 +102,25 @@ sparcnbsd_aout_in_solib_call_trampoline (CORE_ADDR pc, char *name) } static void -sparcnbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) +sparc32nbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { /* NetBSD doesn't support the 128-bit `long double' from the psABI. */ set_gdbarch_long_double_bit (gdbarch, 64); } static void -sparcnbsd_aout_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) +sparc32nbsd_aout_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { - sparcnbsd_init_abi (info, gdbarch); + sparc32nbsd_init_abi (info, gdbarch); set_gdbarch_in_solib_call_trampoline (gdbarch, sparcnbsd_aout_in_solib_call_trampoline); } static void -sparcnbsd_elf_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) +sparc32nbsd_elf_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { - sparcnbsd_init_abi (info, gdbarch); + sparc32nbsd_init_abi (info, gdbarch); set_gdbarch_pc_in_sigtramp (gdbarch, nbsd_pc_in_sigtramp); @@ -148,9 +148,9 @@ _initialize_sparnbsd_tdep (void) sparcnbsd_aout_osabi_sniffer); gdbarch_register_osabi (bfd_arch_sparc, 0, GDB_OSABI_NETBSD_AOUT, - sparcnbsd_aout_init_abi); + sparc32nbsd_aout_init_abi); gdbarch_register_osabi (bfd_arch_sparc, 0, GDB_OSABI_NETBSD_ELF, - sparcnbsd_elf_init_abi); + sparc32nbsd_elf_init_abi); add_core_fns (&sparcnbsd_core_fns); add_core_fns (&sparcnbsd_elfcore_fns); |