This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [ping] Re: [rfc] [7/9] Multi-target support: Fix GDB_OSABI_OPENBSD_AOUT problem
- From: "Ulrich Weigand" <uweigand at de dot ibm dot com>
- To: mark dot kettenis at xs4all dot nl (Mark Kettenis)
- Cc: gdb-patches at sourceware dot org
- Date: Thu, 15 Nov 2007 02:05:39 +0100 (CET)
- Subject: Re: [ping] Re: [rfc] [7/9] Multi-target support: Fix GDB_OSABI_OPENBSD_AOUT problem
Mark Kettenis wrote:
> Sorry; I didn't have the time to test this diff until now.
> Unfortunately it breaks OpenBSD/i386. The problem is that
> OpenBSD/i386 still uses a core file format that's classified as NetBSD
> a.out. NetBSD doesn't use this format anymore, so I think the
> solution is to sacrifice NetBSD/i386 a.out instead of OpenBSD/i386
> a.out.
I see; that would work for me as well. Something like the
following patch?
Thanks,
Ulrich
ChangeLog:
* i386nbsd-tdep.c (i386nbsd_aout_supply_regset): Remove.
(i386nbsd_aout_regset_from_core_section): Likewise.
(i386nbsd_aout_init_abi): Likewise.
(_initialize_i386nbsd_tdep): Do not register i386nbsd_aout_init_abi.
* vaxnbsd-tdep.c (vaxnbsd_aout_init_abi): Remove.
(_initialize_vaxnbsd_tdep): Do not register vaxnbsd_aout_init_abi.
diff -urNp gdb-orig/gdb/i386nbsd-tdep.c gdb-head/gdb/i386nbsd-tdep.c
--- gdb-orig/gdb/i386nbsd-tdep.c 2007-10-30 20:05:37.000000000 +0100
+++ gdb-head/gdb/i386nbsd-tdep.c 2007-11-15 00:38:14.504963834 +0100
@@ -56,41 +56,6 @@ static int i386nbsd_r_reg_offset[] =
15 * 4 /* %gs */
};
-static void
-i386nbsd_aout_supply_regset (const struct regset *regset,
- struct regcache *regcache, int regnum,
- const void *regs, size_t len)
-{
- const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch);
-
- gdb_assert (len >= tdep->sizeof_gregset + I387_SIZEOF_FSAVE);
-
- i386_supply_gregset (regset, regcache, regnum, regs, tdep->sizeof_gregset);
- i387_supply_fsave (regcache, regnum, (char *) regs + tdep->sizeof_gregset);
-}
-
-static const struct regset *
-i386nbsd_aout_regset_from_core_section (struct gdbarch *gdbarch,
- const char *sect_name,
- size_t sect_size)
-{
- struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-
- /* NetBSD a.out core dumps don't use seperate register sets for the
- general-purpose and floating-point registers. */
-
- if (strcmp (sect_name, ".reg") == 0
- && sect_size >= tdep->sizeof_gregset + I387_SIZEOF_FSAVE)
- {
- if (tdep->gregset == NULL)
- tdep->gregset =
- regset_alloc (gdbarch, i386nbsd_aout_supply_regset, NULL);
- return tdep->gregset;
- }
-
- return NULL;
-}
-
/* Under NetBSD/i386, signal handler invocations can be identified by the
designated code sequence that is used to return from a signal handler.
In particular, the return address of a signal handler points to the
@@ -242,18 +207,6 @@ i386nbsd_init_abi (struct gdbarch_info i
tdep->sc_num_regs = ARRAY_SIZE (i386nbsd_sc_reg_offset);
}
-/* NetBSD a.out. */
-
-static void
-i386nbsdaout_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
-{
- i386nbsd_init_abi (info, gdbarch);
-
- /* NetBSD a.out has a single register set. */
- set_gdbarch_regset_from_core_section
- (gdbarch, i386nbsd_aout_regset_from_core_section);
-}
-
/* NetBSD ELF. */
static void
@@ -278,8 +231,6 @@ i386nbsdelf_init_abi (struct gdbarch_inf
void
_initialize_i386nbsd_tdep (void)
{
- gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_NETBSD_AOUT,
- i386nbsdaout_init_abi);
gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_NETBSD_ELF,
i386nbsdelf_init_abi);
}
diff -urNp gdb-orig/gdb/vaxnbsd-tdep.c gdb-head/gdb/vaxnbsd-tdep.c
--- gdb-orig/gdb/vaxnbsd-tdep.c 2007-10-30 20:28:29.000000000 +0100
+++ gdb-head/gdb/vaxnbsd-tdep.c 2007-11-15 00:37:04.223382898 +0100
@@ -26,13 +26,6 @@
#include "gdb_string.h"
-/* NetBSD a.out. */
-
-static void
-vaxnbsd_aout_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
-{
-}
-
/* NetBSD ELF. */
static void
@@ -50,8 +43,6 @@ void _initialize_vaxnbsd_tdep (void);
void
_initialize_vaxnbsd_tdep (void)
{
- gdbarch_register_osabi (bfd_arch_vax, 0, GDB_OSABI_NETBSD_AOUT,
- vaxnbsd_aout_init_abi);
gdbarch_register_osabi (bfd_arch_vax, 0, GDB_OSABI_NETBSD_ELF,
vaxnbsd_elf_init_abi);
}
--
Dr. Ulrich Weigand
GNU Toolchain for Linux on System z and Cell BE
Ulrich.Weigand@de.ibm.com