* configure.in (*-*-netbsd*): Set COREFILE to netbsd-core.c.
authorJ.T. Conklin <jtc@acorntoolworks.com>
Tue, 6 Feb 1996 22:19:05 +0000 (22:19 +0000)
committerJ.T. Conklin <jtc@acorntoolworks.com>
Tue, 6 Feb 1996 22:19:05 +0000 (22:19 +0000)
don't define TRAD_HEADER.
* configure: Rebuild.
* netbsd-core.c: New file, support for NetBSD core files.
* hosts/*nbsd.h: Removed.

bfd/.Sanitize
bfd/ChangeLog
bfd/configure
bfd/hosts/.Sanitize
bfd/hosts/i386nbsd.h [deleted file]
bfd/hosts/m68knbsd.h [deleted file]
bfd/hosts/mipsnbsd.h [deleted file]
bfd/hosts/nbsd.h [deleted file]
bfd/hosts/ns32knbsd.h [deleted file]
bfd/hosts/sparcnbsd.h [deleted file]
bfd/netbsd-core.c [new file with mode: 0644]

index 8bd22441796b78a8ba4aa3a6fa483ebdf963e890..a03d7acfd270cc44604977674962802c5156b732 100644 (file)
@@ -203,6 +203,7 @@ mipsbsd.c
 mpw-config.in
 mpw-make.sed
 newsos3.c
+netbsd-core.c
 netbsd.h
 nlm-target.h
 nlm.c
index a9ae11ae95bf1a04aaf5d28e35527aa631e384c8..45b1e1e2555dfd680726b69b5af098835e435876 100644 (file)
@@ -1,3 +1,12 @@
+Tue Feb  6 14:04:49 1996  J.T. Conklin  <jtc@rtl.cygnus.com>
+
+       * configure.in (*-*-netbsd*): Set COREFILE to netbsd-core.c.
+       don't define TRAD_HEADER.
+       * configure: Rebuild.
+
+       * netbsd-core.c: New file, support for NetBSD core files.
+       * hosts/*nbsd.h: Removed.
+
 Tue Feb  6 11:47:49 1996  Doug Evans  <dje@charmed.cygnus.com>
 
        * reloc.c (BFD_RELOC_SPARC_[567]): New reloc types.
index 923f5c0e3237c5f8d4f5ed048a194d79cd0aff48..be3d0b1a18f48c14371318f56c6be575026746bd 100755 (executable)
@@ -1170,7 +1170,7 @@ done
 
 
 case "${host}" in
-i[345]86-*-msdos* | i[345]86-*-go32* | *-*-cygwin32)
+i[345]86-*-msdos* | i[345]86-*-go32* | i[345]86-*-win32)
   cat >> confdefs.h <<\EOF
 #define USE_BINARY_FOPEN 1
 EOF
@@ -1299,11 +1299,7 @@ EOF
 
        ;;
   i[345]86-*-netbsd*)
-       COREFILE=trad-core.o
-       cat >> confdefs.h <<\EOF
-#define TRAD_HEADER "hosts/i386nbsd.h"
-EOF
-
+       COREFILE=netbsd-core.o
        ;;
   i[345]86-esix-sysv3*)
        COREFILE=trad-core.o
@@ -1357,11 +1353,7 @@ EOF
 
        ;;
   mips-*-netbsd*)
-       COREFILE=trad-core.o
-       cat >> confdefs.h <<\EOF
-#define TRAD_HEADER "hosts/mipsnbsd.h"
-EOF
-
+       COREFILE=netbsd-core.o
        ;;
   mips-dec-*)
        COREFILE=trad-core.o
@@ -1424,11 +1416,7 @@ EOF
 
        ;;
   m68*-*-netbsd*)
-       COREFILE=trad-core.o
-       cat >> confdefs.h <<\EOF
-#define TRAD_HEADER "hosts/m68knbsd.h"
-EOF
-
+       COREFILE=netbsd-core.o
        ;;
   m68*-apple-aux*)
        COREFILE=trad-core.o
@@ -1454,11 +1442,7 @@ EOF
 
        ;;
   ns32k-*-netbsd*)
-       COREFILE=trad-core.o
-       cat >> confdefs.h <<\EOF
-#define TRAD_HEADER "hosts/ns32knbsd.h"
-EOF
-
+       COREFILE=netbsd-core.o
        ;;
   rs6000-*-lynx*)      COREFILE=lynx-core.o ;;
   rs6000-*-aix4*)      COREFILE=rs6000-core.o ;;
@@ -1466,11 +1450,7 @@ EOF
   powerpc-*-aix4*)     COREFILE=rs6000-core.o ;;
   powerpc-*-aix*)      COREFILE=rs6000-core.o ;;
   sparc-*-netbsd*)
-       COREFILE=trad-core.o
-       cat >> confdefs.h <<\EOF
-#define TRAD_HEADER "hosts/sparcnbsd.h"
-EOF
-
+       COREFILE=netbsd-core.o
        ;;
   tahoe-*-*)
        COREFILE=trad-core.o
@@ -1522,7 +1502,7 @@ EOF
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1526 "configure"
+#line 1506 "configure"
 #include "confdefs.h"
 #include <sys/procfs.h>
 int main() { return 0; }
@@ -1809,7 +1789,7 @@ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1813 "configure"
+#line 1793 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -1861,7 +1841,7 @@ else
   ac_cv_func_mmap=no
 else
 cat > conftest.$ac_ext <<EOF
-#line 1865 "configure"
+#line 1845 "configure"
 #include "confdefs.h"
 
 /* Thanks to Mike Haertel and Jim Avera for this test. */
@@ -1955,7 +1935,7 @@ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1959 "configure"
+#line 1939 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
index aa1993fa8d5b37d63574b1fc9c5f2a680a57b538..cc68c8cf514e056e725c1d1eb4309184380e2d53 100644 (file)
@@ -32,22 +32,16 @@ hp300bsd.h
 i386bsd.h
 i386linux.h
 i386mach3.h
-i386nbsd.h
 i386sco.h
 i860mach3.h
 m68kaux.h
-m68knbsd.h
 m88kmach3.h
 mipsbsd.h
-mipsnbsd.h
 mipsmach3.h
-nbsd.h
 news-mips.h
 news.h
-ns32knbsd.h
 pc532mach.h
 riscos.h
-sparcnbsd.h
 symmetry.h
 tahoe.h
 vaxbsd.h
diff --git a/bfd/hosts/i386nbsd.h b/bfd/hosts/i386nbsd.h
deleted file mode 100644 (file)
index 1fd3bed..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Intel 386 running NetBSD */
-
-#ifndef        hosts_i386bsd_H
-#define hosts_i386bsd_H
-
-#include "hosts/nbsd.h"
-
-#define        HOST_MACHINE_ARCH       bfd_arch_i386
-
-#define TRAD_UNIX_CORE_FILE_FAILING_SIGNAL(core_bfd) \
-  ((core_bfd)->tdata.trad_core_data->u.u_sig)
-#define u_comm u_kproc.kp_proc.p_comm
-#endif
-
diff --git a/bfd/hosts/m68knbsd.h b/bfd/hosts/m68knbsd.h
deleted file mode 100644 (file)
index 8dccf67..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/* m68k hosts running NetBSD */
-
-#ifndef hosts_m68knbsd_h
-#define hosts_m68knbsd_h
-
-#include "hosts/nbsd.h"
-
-#define        HOST_MACHINE_ARCH       bfd_arch_m68k
-
-#define TRAD_UNIX_CORE_FILE_FAILING_SIGNAL(core_bfd) \
-  ((core_bfd)->tdata.trad_core_data->u.u_sig)
-#define u_comm u_kproc.kp_proc.p_comm
-#endif
diff --git a/bfd/hosts/mipsnbsd.h b/bfd/hosts/mipsnbsd.h
deleted file mode 100644 (file)
index 32e895a..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/* mips running NetBSD */
-
-#ifndef        hosts_mips
-#define hosts_mips
-
-#include "hosts/nbsd.h"
-
-#define        HOST_MACHINE_ARCH       bfd_arch_mips
-
-#define TRAD_UNIX_CORE_FILE_FAILING_SIGNAL(core_bfd) \
-  ((core_bfd)->tdata.trad_core_data->u.u_sig)
-#define u_comm u_kproc.kp_proc.p_comm
-#endif
diff --git a/bfd/hosts/nbsd.h b/bfd/hosts/nbsd.h
deleted file mode 100644 (file)
index d773ee6..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Architecture independant NetBSD host support */
-
-#include <machine/endian.h>
-#include <machine/vmparam.h>
-#include <machine/param.h>
-#include <machine/reg.h>
-
-#define        HOST_PAGE_SIZE                  NBPG
-#define        HOST_TEXT_START_ADDR            USRTEXT
-#define        HOST_STACK_END_ADDR             USRSTACK
-
-#if BYTE_ORDER == BIG_ENDIAN
-#define HOST_BIG_ENDIAN_P
-#endif
diff --git a/bfd/hosts/ns32knbsd.h b/bfd/hosts/ns32knbsd.h
deleted file mode 100644 (file)
index d072d6d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/* ns32k running NetBSD */
-
-#ifndef        hosts_ns32knbsd_h
-#define hosts_ns32knbsd_h
-
-#include "hosts/nbsd.h"
-
-#define        HOST_MACHINE_ARCH       bfd_arch_ns32k
-
-#define TRAD_UNIX_CORE_FILE_FAILING_SIGNAL(core_bfd) \
-  ((core_bfd)->tdata.trad_core_data->u.u_sig)
-#define u_comm u_kproc.kp_proc.p_comm
-#endif
diff --git a/bfd/hosts/sparcnbsd.h b/bfd/hosts/sparcnbsd.h
deleted file mode 100644 (file)
index c0a4a8d..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Sparc running NetBSD */
-
-#ifndef hosts_sparcnbsd_h
-#define hosts_sparcnbsd_h
-
-#include "hosts/nbsd.h"
-
-#define        HOST_MACHINE_ARCH       bfd_arch_sparc
-
-#define TRAD_UNIX_CORE_FILE_FAILING_SIGNAL(core_bfd) \
-  ((core_bfd)->tdata.trad_core_data->u.u_sig)
-#define u_comm u_kproc.kp_proc.p_comm
-#define TRAD_CORE_REGPOS(core_bfd) \
-  ((bfd_vma)(core_bfd)->tdata.trad_core_data->u.u_kproc.kp_proc.p_md.md_tf)
-
-#define CORE_FPU_OFFSET        (sizeof(struct trapframe))
-
-#endif
diff --git a/bfd/netbsd-core.c b/bfd/netbsd-core.c
new file mode 100644 (file)
index 0000000..60f98e8
--- /dev/null
@@ -0,0 +1,310 @@
+/* BFD back end for NetBSD style core files
+   Copyright 1988, 1989, 1991, 1992, 1993 Free Software Foundation, Inc.
+   Written by Paul Kranenburg, EUR
+
+This file is part of BFD, the Binary File Descriptor library.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include "bfd.h"
+#include "sysdep.h"
+#include "libbfd.h"
+#include "libaout.h"           /* BFD a.out internal data structures */
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/dir.h>
+#include <signal.h>
+#include <sys/core.h>
+#include <errno.h>
+
+/*
+ * FIXME: On NetBSD/sparc CORE_FPU_OFFSET should be (sizeof(struct trapframe))
+ */
+
+struct netbsd_core_struct {
+       struct core core;
+} *rawptr;
+
+/* forward declarations */
+
+static const bfd_target *      netbsd_core_core_file_p PARAMS ((bfd *abfd));
+static char *          netbsd_core_core_file_failing_command PARAMS ((bfd *abfd));
+static int             netbsd_core_core_file_failing_signal PARAMS ((bfd *abfd));
+static boolean         netbsd_core_core_file_matches_executable_p
+                        PARAMS ((bfd *core_bfd, bfd *exec_bfd));
+
+/* Handle NetBSD-style core dump file.  */
+
+/* ARGSUSED */
+static const bfd_target *
+netbsd_core_core_file_p (abfd)
+     bfd *abfd;
+
+{
+       int             i, val, offset;
+       asection        *asect, *asect2;
+       struct core     core;
+       struct coreseg  coreseg;
+
+       val = bfd_read ((void *)&core, 1, sizeof core, abfd);
+       if (val != sizeof core) {
+               /* Too small to be a core file */
+               bfd_set_error(bfd_error_wrong_format);
+               return 0;
+       }
+
+       if (CORE_GETMAGIC(core) != COREMAGIC) {
+               bfd_set_error(bfd_error_wrong_format);
+               return 0;
+       }
+
+       rawptr = (struct netbsd_core_struct *)
+               bfd_zalloc (abfd, sizeof (struct netbsd_core_struct));
+       if (rawptr == NULL) {
+               bfd_set_error(bfd_error_no_memory);
+               return 0;
+       }
+
+       rawptr->core = core;
+       abfd->tdata.netbsd_core_data = rawptr;
+
+       offset = core.c_hdrsize;
+       for (i = 0; i < core.c_nseg; i++) {
+
+               if (bfd_seek (abfd, offset, SEEK_SET) != 0)
+                       goto punt;
+
+               val = bfd_read ((void *)&coreseg, 1, sizeof coreseg, abfd);
+               if (val != sizeof coreseg) {
+                       bfd_set_error(bfd_error_file_truncated);
+                       goto punt;
+               }
+               if (CORE_GETMAGIC(coreseg) != CORESEGMAGIC) {
+                       bfd_set_error(bfd_error_wrong_format);
+                       goto punt;
+               }
+
+               offset += core.c_seghdrsize;
+
+               asect = (asection *) bfd_zalloc (abfd, sizeof(asection));
+               if (asect == NULL) {
+                       bfd_set_error(bfd_error_no_memory);
+               }
+
+               asect->_raw_size = coreseg.c_size;
+               asect->vma = coreseg.c_addr;
+               asect->filepos = offset;
+               asect->alignment_power = 2;
+               asect->next = abfd->sections;
+               abfd->sections = asect;
+               abfd->section_count++;
+               offset += coreseg.c_size;
+
+               switch (CORE_GETFLAG(coreseg)) {
+               case CORE_CPU:
+                       asect->name = ".reg";
+                       asect->flags = SEC_ALLOC + SEC_HAS_CONTENTS;
+#ifdef CORE_FPU_OFFSET
+                       /* Hackish... */
+                       asect->_raw_size = CORE_FPU_OFFSET;
+                       asect2 = (asection *)bfd_zalloc (abfd,
+                                                        sizeof (asection));
+                       if (asect2 == NULL) {
+                               bfd_set_error(bfd_error_no_memory);
+                               goto punt;
+                       }
+                       asect2->_raw_size = coreseg.c_size - CORE_FPU_OFFSET;
+                       asect2->vma = 0;
+                       asect2->filepos = asect->filepos + CORE_FPU_OFFSET;
+                       asect2->alignment_power = 2;
+                       asect2->next = abfd->sections;
+                       asect2->name = ".reg2";
+                       asect2->flags = SEC_ALLOC + SEC_HAS_CONTENTS;
+                       abfd->sections = asect2;
+                       abfd->section_count++;
+#endif
+
+                       break;
+               case CORE_DATA:
+                       asect->name = ".data";
+                       asect->flags = SEC_ALLOC+SEC_LOAD+SEC_HAS_CONTENTS;
+                       break;
+               case CORE_STACK:
+                       asect->name = ".stack";
+                       asect->flags = SEC_ALLOC+SEC_LOAD+SEC_HAS_CONTENTS;
+                       break;
+               }
+       }
+
+       /* OK, we believe you.  You're a core file (sure, sure).  */
+       return abfd->xvec;
+
+punt:  {
+               asection        *anext;
+               for (asect = abfd->sections; asect; asect = anext) {
+                       anext = asect->next;
+                       free((void *)asect);
+               }
+       }
+       free ((void *)rawptr);
+       abfd->tdata.netbsd_core_data = NULL;
+       abfd->sections = NULL;
+       abfd->section_count = 0;
+       return 0;
+}
+
+static char*
+netbsd_core_core_file_failing_command (abfd)
+       bfd *abfd;
+{
+ /*return core_command (abfd);*/
+  return abfd->tdata.netbsd_core_data->core.c_name;
+}
+
+/* ARGSUSED */
+static int
+netbsd_core_core_file_failing_signal (abfd)
+       bfd *abfd;
+{
+  /*return core_signal (abfd);*/
+  return abfd->tdata.netbsd_core_data->core.c_signo;
+}
+
+/* ARGSUSED */
+static boolean
+netbsd_core_core_file_matches_executable_p  (core_bfd, exec_bfd)
+     bfd *core_bfd, *exec_bfd;
+{
+       return true;    /* FIXME, We have no way of telling at this point */
+}
+\f
+/* No archive file support via this BFD */
+#define        netbsd_openr_next_archived_file bfd_generic_openr_next_archived_file
+#define        netbsd_generic_stat_arch_elt            bfd_generic_stat_arch_elt
+#define        netbsd_slurp_armap                      bfd_false
+#define        netbsd_slurp_extended_name_table        bfd_true
+#define        netbsd_write_armap                      (boolean (*) PARAMS     \
+    ((bfd *arch, unsigned int elength, struct orl *map, \
+      unsigned int orl_count, int stridx))) bfd_false
+#define        netbsd_truncate_arname          bfd_dont_truncate_arname
+#define        aout_32_openr_next_archived_file        bfd_generic_openr_next_archived_file
+
+#define        netbsd_close_and_cleanup                bfd_generic_close_and_cleanup
+#define        netbsd_set_section_contents             (boolean (*) PARAMS     \
+        ((bfd *abfd, asection *section, PTR data, file_ptr offset,     \
+        bfd_size_type count))) bfd_false
+#define        netbsd_get_section_contents             bfd_generic_get_section_contents
+#define        netbsd_new_section_hook         (boolean (*) PARAMS     \
+       ((bfd *, sec_ptr))) bfd_true
+#define        netbsd_get_symtab_upper_bound   bfd_0u
+#define        netbsd_get_symtab                       (unsigned int (*) PARAMS \
+        ((bfd *, struct symbol_cache_entry **))) bfd_0u
+#define        netbsd_get_reloc_upper_bound            (unsigned int (*) PARAMS \
+       ((bfd *, sec_ptr))) bfd_0u
+#define        netbsd_canonicalize_reloc               (unsigned int (*) PARAMS \
+       ((bfd *, sec_ptr, arelent **, struct symbol_cache_entry**))) bfd_0u
+#define        netbsd_make_empty_symbol                (struct symbol_cache_entry * \
+       (*) PARAMS ((bfd *))) bfd_false
+#define        netbsd_print_symbol                     (void (*) PARAMS        \
+       ((bfd *, PTR, struct symbol_cache_entry  *,                     \
+       bfd_print_symbol_type))) bfd_false
+#define        netbsd_get_symbol_info          (void (*) PARAMS        \
+       ((bfd *, struct symbol_cache_entry  *,                  \
+       symbol_info *))) bfd_false
+#define        netbsd_get_lineno                       (alent * (*) PARAMS     \
+       ((bfd *, struct symbol_cache_entry *))) bfd_nullvoidptr
+#define        netbsd_set_arch_mach                    (boolean (*) PARAMS     \
+       ((bfd *, enum bfd_architecture, unsigned long))) bfd_false
+#define        netbsd_find_nearest_line                (boolean (*) PARAMS     \
+        ((bfd *abfd, struct sec  *section,                             \
+         struct symbol_cache_entry  **symbols,bfd_vma offset,          \
+         CONST char **file, CONST char **func, unsigned int *line))) bfd_false
+#define        netbsd_sizeof_headers           (int (*) PARAMS \
+       ((bfd *, boolean))) bfd_0
+
+#define netbsd_bfd_debug_info_start            bfd_void
+#define netbsd_bfd_debug_info_end              bfd_void
+#define netbsd_bfd_debug_info_accumulate       (void (*) PARAMS        \
+       ((bfd *, struct sec *))) bfd_void
+#define netbsd_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents
+#define netbsd_bfd_relax_section               bfd_generic_relax_section
+#define netbsd_bfd_seclet_link \
+  ((boolean (*) PARAMS ((bfd *, PTR, boolean))) bfd_false)
+#define netbsd_bfd_reloc_type_lookup \
+  ((CONST struct reloc_howto_struct *(*) PARAMS ((bfd *, bfd_reloc_code_real_type))) bfd_nullvoidptr)
+#define netbsd_bfd_make_debug_symbol \
+  ((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr)
+
+/* If somebody calls any byte-swapping routines, shoot them.  */
+static void
+swap_abort()
+{
+  abort(); /* This way doesn't require any declaration for ANSI to fuck up */
+}
+#define        NO_GET  ((bfd_vma (*) PARAMS ((   const bfd_byte *))) swap_abort )
+#define        NO_PUT  ((void    (*) PARAMS ((bfd_vma, bfd_byte *))) swap_abort )
+#define        NO_SIGNED_GET \
+       ((bfd_signed_vma (*) PARAMS ((    const bfd_byte *))) swap_abort )
+
+const bfd_target netbsd_core_vec =
+  {
+    "netbsd-core",
+    bfd_target_unknown_flavour,
+    true,                      /* target byte order */
+    true,                      /* target headers byte order */
+    (HAS_RELOC | EXEC_P |      /* object flags */
+     HAS_LINENO | HAS_DEBUG |
+     HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT | D_PAGED),
+    (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
+    0,                                                    /* symbol prefix */
+    ' ',                                                  /* ar_pad_char */
+    16,                                                           /* ar_max_namelen */
+    3,                                                    /* minimum alignment power */
+    NO_GET, NO_SIGNED_GET, NO_PUT,     /* 64 bit data */
+    NO_GET, NO_SIGNED_GET, NO_PUT,     /* 32 bit data */
+    NO_GET, NO_SIGNED_GET, NO_PUT,     /* 16 bit data */
+    NO_GET, NO_SIGNED_GET, NO_PUT,     /* 64 bit hdrs */
+    NO_GET, NO_SIGNED_GET, NO_PUT,     /* 32 bit hdrs */
+    NO_GET, NO_SIGNED_GET, NO_PUT,     /* 16 bit hdrs */
+
+    {                          /* bfd_check_format */
+     _bfd_dummy_target,                /* unknown format */
+     _bfd_dummy_target,                /* object file */
+     _bfd_dummy_target,                /* archive */
+     netbsd_core_core_file_p           /* a core file */
+    },
+    {                          /* bfd_set_format */
+     bfd_false, bfd_false,
+     bfd_false, bfd_false
+    },
+    {                          /* bfd_write_contents */
+     bfd_false, bfd_false,
+     bfd_false, bfd_false
+    },
+    
+       BFD_JUMP_TABLE_GENERIC (_bfd_generic),
+       BFD_JUMP_TABLE_COPY (_bfd_generic),
+       BFD_JUMP_TABLE_CORE (netbsd_core),
+       BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive),
+       BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols),
+       BFD_JUMP_TABLE_RELOCS (_bfd_norelocs),
+       BFD_JUMP_TABLE_WRITE (_bfd_generic),
+       BFD_JUMP_TABLE_LINK (_bfd_nolink),
+       BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
+
+    (PTR) 0                    /* backend_data */
+};