* Makefile.in (i386nbsd-tdep.o): Add $(arch_utils_h),
authorJason Thorpe <thorpej@netbsd.org>
Sun, 1 Sep 2002 23:24:19 +0000 (23:24 +0000)
committerJason Thorpe <thorpej@netbsd.org>
Sun, 1 Sep 2002 23:24:19 +0000 (23:24 +0000)
$(i386_tdep_h), and nbsd-tdep.h to dependency list.
* i386-tdep.h (i386bsd_init_abi): New prototype.
* i386bsd-tdep.c (i386bsd_init_abi): Remove "static" from
function declaration.
(_initialize_i386bsd_tdep): Don't register OS ABI handlers
for NetBSD-a.out or NetBSD-ELF.
(i386nbsd_sigtramp_start, i386nbsd_sigtramp_end)
(i386nbsd_sc_pc_offset, i386nbsd_sc_sp_offset)
(i386nbsd_init_abi, i386nbsdelf_init_abi): Move to...
* i386nbsd-tdep.c: ...here.  Include arch-utils.h, i386-tdep.h,
and nbsd-tdep.h.
(i386nbsd_pc_in_sigtramp): New function.
(i386nbsd_init_abi): Set gdbarch_pc_in_sigtramp to
i386nbsd_pc_in_sigtramp.
(_initialize_i386nbsd_tdep): Register i386nbsd_init_abi
and i386nbsdelf_init_abi OS ABI handlers.
* config/i386/nbsdaout.mt (TDEPFILES): Add nbsd-tdep.o.
* config/i386/nbsdelf.mt (TDEPFILES): Likewise.

gdb/ChangeLog
gdb/Makefile.in
gdb/config/i386/nbsdaout.mt
gdb/config/i386/nbsdelf.mt
gdb/i386-tdep.h
gdb/i386bsd-tdep.c
gdb/i386nbsd-tdep.c

index 13b07df..da5ebb6 100644 (file)
@@ -1,3 +1,25 @@
+2002-09-02  Jason Thorpe  <thorpej@wasabisystems.com>
+
+       * Makefile.in (i386nbsd-tdep.o): Add $(arch_utils_h),
+       $(i386_tdep_h), and $(nbsd_tdep_h) to dependency list.
+       * i386-tdep.h (i386bsd_init_abi): New prototype.
+       * i386bsd-tdep.c (i386bsd_init_abi): Remove "static" from
+       function declaration.
+       (_initialize_i386bsd_tdep): Don't register OS ABI handlers
+       for NetBSD-a.out or NetBSD-ELF.
+       (i386nbsd_sigtramp_start, i386nbsd_sigtramp_end)
+       (i386nbsd_sc_pc_offset, i386nbsd_sc_sp_offset)
+       (i386nbsd_init_abi, i386nbsdelf_init_abi): Move to...
+       * i386nbsd-tdep.c: ...here.  Include arch-utils.h, i386-tdep.h,
+       and nbsd-tdep.h.
+       (i386nbsd_pc_in_sigtramp): New function.
+       (i386nbsd_init_abi): Set gdbarch_pc_in_sigtramp to
+       i386nbsd_pc_in_sigtramp.
+       (_initialize_i386nbsd_tdep): Register i386nbsd_init_abi
+       and i386nbsdelf_init_abi OS ABI handlers.
+       * config/i386/nbsdaout.mt (TDEPFILES): Add nbsd-tdep.o.
+       * config/i386/nbsdelf.mt (TDEPFILES): Likewise.
+
 2002-09-02  Mark Kettenis  <kettenis@gnu.org>
 
        * i386-linux-nat.c (dummy_sse_values): Only try to fill in the SSE
index 2389bdc..2ce4805 100644 (file)
@@ -1755,7 +1755,8 @@ i386ly-tdep.o: i386ly-tdep.c $(defs_h) $(gdbcore_h) $(inferior_h) \
 # OBSOLETE i386m3-nat.o: i386m3-nat.c
 # OBSOLETE i386mach-nat.o: i386mach-nat.c
 i386nbsd-tdep.o: i386nbsd-tdep.c $(defs_h) $(gdbtypes_h) $(gdbcore_h) \
-       $(regcache_h) $(i387_tdep_h)
+       $(regcache_h) $(arch_utils_h) $(i386_tdep_h) $(i387_tdep_h) \
+       $(nbsd_tdep_h)
 i386obsd-nat.o: i386obsd-nat.c $(defs_h)
 i386v-nat.o: i386v-nat.c $(defs_h) $(frame_h) $(inferior_h) $(language_h) \
        $(gdbcore_h) $(gdb_stat_h) $(floatformat_h) $(target_h)
index aa88957..7ffb502 100644 (file)
@@ -1,3 +1,4 @@
 # Target: Intel 386 running NetBSD
-TDEPFILES= i386-tdep.o i387-tdep.o i386bsd-tdep.o i386nbsd-tdep.o corelow.o
+TDEPFILES= i386-tdep.o i387-tdep.o i386bsd-tdep.o i386nbsd-tdep.o corelow.o \
+       nbsd-tdep.o
 TM_FILE= tm-nbsdaout.h
index fc80608..a1035cf 100644 (file)
@@ -1,3 +1,4 @@
 # Target: Intel 386 running NetBSD
-TDEPFILES= i386-tdep.o i387-tdep.o i386bsd-tdep.o i386nbsd-tdep.o corelow.o
+TDEPFILES= i386-tdep.o i387-tdep.o i386bsd-tdep.o i386nbsd-tdep.o corelow.o \
+       nbsd-tdep.o
 TM_FILE= tm-nbsd.h
index 30128d9..646001b 100644 (file)
@@ -175,5 +175,6 @@ extern void i386_svr4_init_abi (struct gdbarch_info, struct gdbarch *);
 /* Functions exported from i386bsd-tdep.c.  */
 
 extern CORE_ADDR i386bsd_sigcontext_addr (struct frame_info *frame);
+extern void i386bsd_init_abi (struct gdbarch_info, struct gdbarch *);
 
 #endif /* i386-tdep.h */
index 2edf3ea..368fa56 100644 (file)
@@ -93,7 +93,7 @@ i386bsd_aout_in_solib_call_trampoline (CORE_ADDR pc, char *name)
 int i386bsd_sc_pc_offset = 20;
 int i386bsd_sc_sp_offset = 8;
 
-static void
+void
 i386bsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
@@ -113,61 +113,6 @@ i386bsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
   tdep->sc_sp_offset = i386bsd_sc_sp_offset;
 }
 
-/* NetBSD 1.0 or later.  */
-
-CORE_ADDR i386nbsd_sigtramp_start = 0xbfbfdf20;
-CORE_ADDR i386nbsd_sigtramp_end = 0xbfbfdff0;
-
-/* From <machine/signal.h>.  */
-int i386nbsd_sc_pc_offset = 44;
-int i386nbsd_sc_sp_offset = 56;
-
-static void
-i386nbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
-{
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-
-  /* Obviously NetBSD is BSD-based.  */
-  i386bsd_init_abi (info, gdbarch);
-
-  /* NetBSD uses -freg-struct-return by default.  */
-  tdep->struct_return = reg_struct_return;
-
-  /* NetBSD uses a different memory layout.  */
-  tdep->sigtramp_start = i386nbsd_sigtramp_start;
-  tdep->sigtramp_end = i386nbsd_sigtramp_end;
-
-  /* NetBSD has a `struct sigcontext' that's different from the
-     origional 4.3 BSD.  */
-  tdep->sc_pc_offset = i386nbsd_sc_pc_offset;
-  tdep->sc_sp_offset = i386nbsd_sc_sp_offset;
-}
-
-/* NetBSD ELF.  */
-static void
-i386nbsdelf_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
-{
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-
-  /* It's still NetBSD.  */
-  i386nbsd_init_abi (info, gdbarch);
-
-  /* But ELF-based.  */
-  i386_elf_init_abi (info, gdbarch);
-
-  /* NetBSD ELF uses SVR4-style shared libraries.  */
-  set_gdbarch_in_solib_call_trampoline (gdbarch,
-                                       generic_in_solib_call_trampoline);
-
-  /* NetBSD ELF uses -fpcc-struct-return by default.  */
-  tdep->struct_return = pcc_struct_return;
-
-  /* We support the SSE registers on NetBSD ELF.  */
-  tdep->num_xmm_regs = I386_NUM_XREGS - 1;
-  set_gdbarch_num_regs (gdbarch, I386_NUM_GREGS + I386_NUM_FREGS
-                       + I386_NUM_XREGS);
-}
-
 /* FreeBSD 3.0-RELEASE or later.  */
 
 CORE_ADDR i386fbsd_sigtramp_start = 0xbfbfdf20;
@@ -246,10 +191,6 @@ _initialize_i386bsd_tdep (void)
   gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_aout_flavour,
                                  i386bsd_aout_osabi_sniffer);
 
-  gdbarch_register_osabi (bfd_arch_i386, GDB_OSABI_NETBSD_AOUT,
-                         i386nbsd_init_abi);
-  gdbarch_register_osabi (bfd_arch_i386, GDB_OSABI_NETBSD_ELF,
-                         i386nbsdelf_init_abi);
   gdbarch_register_osabi (bfd_arch_i386, GDB_OSABI_FREEBSD_AOUT,
                          i386fbsdaout_init_abi);
   gdbarch_register_osabi (bfd_arch_i386, GDB_OSABI_FREEBSD_ELF,
index 634101a..cba2f19 100644 (file)
 #include "gdbtypes.h"
 #include "gdbcore.h"
 #include "regcache.h"
+#include "arch-utils.h"
 
+#include "i386-tdep.h"
 #include "i387-tdep.h"
+#include "nbsd-tdep.h"
 
 /* Map a GDB register number to an offset in the reg structure.  */
 static int regmap[] =
@@ -137,9 +140,85 @@ static struct core_fns i386nbsd_elfcore_fns =
   NULL                                 /* next */
 };
 
+static int
+i386nbsd_pc_in_sigtramp (CORE_ADDR pc, char *name)
+{
+  struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+
+  /* Check for libc-provided signal trampoline.  */
+  if (nbsd_pc_in_sigtramp (pc, name))
+    return 1;
+
+  /* FIXME: sigtramp_start/sigtramp_end need to go away; we should
+     not be assuming the location of the kernel-provided trampoline!  */
+
+  return (pc >= tdep->sigtramp_start && pc < tdep->sigtramp_end);
+}
+
+CORE_ADDR i386nbsd_sigtramp_start = 0xbfbfdf20;
+CORE_ADDR i386nbsd_sigtramp_end = 0xbfbfdff0;
+
+/* From <machine/signal.h>.  */
+int i386nbsd_sc_pc_offset = 44;
+int i386nbsd_sc_sp_offset = 56;
+
+static void 
+i386nbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+{
+  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+
+  /* Obviously NetBSD is BSD-based.  */
+  i386bsd_init_abi (info, gdbarch);
+
+  /* NetBSD has different signal trampoline conventions.  */
+  set_gdbarch_pc_in_sigtramp (gdbarch, i386nbsd_pc_in_sigtramp);
+
+  /* NetBSD uses -freg-struct-return by default.  */
+  tdep->struct_return = reg_struct_return;
+
+  /* NetBSD uses a different memory layout.  */
+  tdep->sigtramp_start = i386nbsd_sigtramp_start;
+  tdep->sigtramp_end = i386nbsd_sigtramp_end;
+
+  /* NetBSD has a `struct sigcontext' that's different from the
+     origional 4.3 BSD.  */
+  tdep->sc_pc_offset = i386nbsd_sc_pc_offset;
+  tdep->sc_sp_offset = i386nbsd_sc_sp_offset;
+}
+
+/* NetBSD ELF.  */
+static void
+i386nbsdelf_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+{
+  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+
+  /* It's still NetBSD.  */
+  i386nbsd_init_abi (info, gdbarch);
+
+  /* But ELF-based.  */
+  i386_elf_init_abi (info, gdbarch);
+
+  /* NetBSD ELF uses SVR4-style shared libraries.  */
+  set_gdbarch_in_solib_call_trampoline (gdbarch,
+                                        generic_in_solib_call_trampoline);
+
+  /* NetBSD ELF uses -fpcc-struct-return by default.  */
+  tdep->struct_return = pcc_struct_return;
+
+  /* We support the SSE registers on NetBSD ELF.  */
+  tdep->num_xmm_regs = I386_NUM_XREGS - 1;
+  set_gdbarch_num_regs (gdbarch, I386_NUM_GREGS + I386_NUM_FREGS
+                        + I386_NUM_XREGS);
+}
+
 void
 _initialize_i386nbsd_tdep (void)
 {
   add_core_fns (&i386nbsd_core_fns);
   add_core_fns (&i386nbsd_elfcore_fns);
+
+  gdbarch_register_osabi (bfd_arch_i386, GDB_OSABI_NETBSD_AOUT,
+                         i386nbsd_init_abi);
+  gdbarch_register_osabi (bfd_arch_i386, GDB_OSABI_NETBSD_ELF,
+                         i386nbsdelf_init_abi);
 }