This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [ping] Re: [rfc] [7/9] Multi-target support: Fix GDB_OSABI_OPENBSD_AOUT problem


> Date: Thu, 15 Nov 2007 02:05:39 +0100 (CET)
> From: "Ulrich Weigand" <uweigand@de.ibm.com>
> 
> 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?

Works for me on OpenBSD/i386.

> 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
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]