/* Generic target-file-type support for the BFD library.
- Copyright 1990, 1991, 1992 Free Software Foundation, Inc.
+ Copyright 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
Written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
. bfd_target_ecoff_flavour,
. bfd_target_elf_flavour,
. bfd_target_ieee_flavour,
+. bfd_target_nlm_flavour,
. bfd_target_oasys_flavour,
. bfd_target_tekhex_flavour,
. bfd_target_srec_flavour,
could do the same.
. bfd_vma (*bfd_getx64) PARAMS ((bfd_byte *));
+. bfd_signed_vma (*bfd_getx_signed_64) PARAMS ((bfd_byte *));
. void (*bfd_putx64) PARAMS ((bfd_vma, bfd_byte *));
. bfd_vma (*bfd_getx32) PARAMS ((bfd_byte *));
+. bfd_signed_vma (*bfd_getx_signed_32) PARAMS ((bfd_byte *));
. void (*bfd_putx32) PARAMS ((bfd_vma, bfd_byte *));
. bfd_vma (*bfd_getx16) PARAMS ((bfd_byte *));
+. bfd_signed_vma (*bfd_getx_signed_16) PARAMS ((bfd_byte *));
. void (*bfd_putx16) PARAMS ((bfd_vma, bfd_byte *));
Byte swapping for the headers
. bfd_vma (*bfd_h_getx64) PARAMS ((bfd_byte *));
+. bfd_signed_vma (*bfd_h_getx_signed_64) PARAMS ((bfd_byte *));
. void (*bfd_h_putx64) PARAMS ((bfd_vma, bfd_byte *));
. bfd_vma (*bfd_h_getx32) PARAMS ((bfd_byte *));
+. bfd_signed_vma (*bfd_h_getx_signed_32) PARAMS ((bfd_byte *));
. void (*bfd_h_putx32) PARAMS ((bfd_vma, bfd_byte *));
. bfd_vma (*bfd_h_getx16) PARAMS ((bfd_byte *));
+. bfd_signed_vma (*bfd_h_getx_signed_16) PARAMS ((bfd_byte *));
. void (*bfd_h_putx16) PARAMS ((bfd_vma, bfd_byte *));
Format dependent routines: these are vectors of entry points
. struct symbol_cache_entry *,
. bfd_print_symbol_type));
.#define bfd_print_symbol(b,p,s,e) BFD_SEND(b, _bfd_print_symbol, (b,p,s,e))
+. void (*_bfd_get_symbol_info) PARAMS ((bfd *,
+. struct symbol_cache_entry *,
+. symbol_info *));
+.#define bfd_get_symbol_info(b,p,e) BFD_SEND(b, _bfd_get_symbol_info, (b,p,e))
. alent * (*_get_lineno) PARAMS ((bfd *, struct symbol_cache_entry *));
.
. void (*_bfd_debug_info_accumulate) PARAMS ((bfd *, struct sec *));
.
. bfd_byte * (*_bfd_get_relocated_section_contents) PARAMS ((bfd *,
-. struct bfd_seclet *, bfd_byte *data));
+. struct bfd_seclet *, bfd_byte *data,
+. boolean relocateable));
.
. boolean (*_bfd_relax_section) PARAMS ((bfd *, struct sec *,
. struct symbol_cache_entry **));
+.
+. boolean (*_bfd_seclet_link) PARAMS ((bfd *, PTR data,
+. boolean relocateable));
. {* See documentation on reloc types. *}
. CONST struct reloc_howto_struct *
. void *ptr,
. unsigned long size));
-Data for use by back-end routines; e.g., for a.out, includes whether
-this particular target maps ZMAGIC files contiguously or with text and
-data separated. Could perhaps also be used to eliminate some of the
-above COFF-specific fields.
+Data for use by back-end routines, which isn't generic enough to belong
+in this structure.
. PTR backend_data;
.} bfd_target;
#if MINIMIZE && defined(DEFAULT_VECTOR) && !defined(SELECT_VECS)
#ifdef TRAD_CORE
#define SELECT_VECS &DEFAULT_VECTOR,&trad_core_vec
-#else
+#endif
#ifdef SCO_CORE
#define SELECT_VECS &DEFAULT_VECTOR,&sco_core_vec
-#else
+#endif
#ifdef AIX386_CORE
#define SELECT_VECS &DEFAULT_VECTOR,&aix386_core_vec
-#else
-#define SELECT_VECS &DEFAULT_VECTOR
#endif
+#ifdef HPUX_CORE
+#define SELECT_VECS &DEFAULT_VECTOR,&hpux_core_vec
#endif
+#ifndef SELECT_VECS
+#define SELECT_VECS &DEFAULT_VECTOR
#endif
#endif
/* All known xvecs. They are listed a second time below, since
we can't intermix extern's and initializers. */
+extern bfd_target i386lynx_vec;
extern bfd_target ecoff_little_vec;
extern bfd_target ecoff_big_vec;
+extern bfd_target aout_mips_little_vec;
+extern bfd_target aout_mips_big_vec;
extern bfd_target sunos_big_vec;
extern bfd_target demo_64_vec;
extern bfd_target srec_vec;
+extern bfd_target symbolsrec_vec;
extern bfd_target tekhex_vec;
extern bfd_target a_out_adobe_vec;
extern bfd_target b_out_vec_little_host;
extern bfd_target b_out_vec_big_host;
extern bfd_target icoff_little_vec;
extern bfd_target icoff_big_vec;
-extern bfd_target elf_little_vec;
-extern bfd_target elf_big_vec;
+extern bfd_target bfd_elf32_sparc_vec;
+extern bfd_target bfd_elf32_i386_vec;
+extern bfd_target bfd_elf32_m68k_vec;
+extern bfd_target bfd_elf32_i860_vec;
+extern bfd_target bfd_elf32_m88k_vec;
+extern bfd_target bfd_elf32_bigmips_vec;
+extern bfd_target bfd_elf32_littlemips_vec;
+extern bfd_target bfd_elf32_big_generic_vec;
+extern bfd_target bfd_elf32_little_generic_vec;
+extern bfd_target bfd_elf64_big_generic_vec;
+extern bfd_target bfd_elf64_little_generic_vec;
+extern bfd_target bfd_nlm32_big_generic_vec;
+extern bfd_target bfd_nlm32_little_generic_vec;
+extern bfd_target bfd_nlm64_big_generic_vec;
+extern bfd_target bfd_nlm64_little_generic_vec;
extern bfd_target ieee_vec;
extern bfd_target oasys_vec;
extern bfd_target m88kbcs_vec;
extern bfd_target m68kcoff_vec;
+extern bfd_target m68kcoffun_vec;
extern bfd_target i386coff_vec;
extern bfd_target i386aout_vec;
extern bfd_target i386linux_vec;
extern bfd_target trad_core_vec;
extern bfd_target sco_core_vec;
extern bfd_target aix386_core_vec;
+extern bfd_target hpux_core_vec;
extern bfd_target rs6000coff_vec;
extern bfd_target h8300coff_vec;
+extern bfd_target h8500coff_vec;
extern bfd_target z8kcoff_vec;
extern bfd_target we32kcoff_vec;
-#ifdef HOST_HPPAHPUX
+extern bfd_target shcoff_vec;
+extern bfd_target hp300hpux_vec;
+
+#if defined (HOST_HPPAHPUX) || defined (HOST_HPPABSD)
extern bfd_target hppa_vec;
#endif
extern bfd_target DEFAULT_VECTOR;
#endif
+bfd_target *target_vector[] = {
+
#ifdef SELECT_VECS
-bfd_target *target_vector[] = {
SELECT_VECS,
- 0
-};
-#else
-
-bfd_target *target_vector[] = {
+#else /* not SELECT_VECS */
#ifdef DEFAULT_VECTOR
&DEFAULT_VECTOR,
&i386coff_vec,
&i386aout_vec,
+ &i386lynx_vec,
&ecoff_little_vec,
&ecoff_big_vec,
+ &aout_mips_little_vec,
+ &aout_mips_big_vec,
&ieee_vec,
#if 0
/* We have no oasys tools anymore, so we can't test any of this
&oasys_vec,
#endif
&sunos_big_vec,
-#ifdef HOST_64_BIT
+#ifdef BFD64
&demo_64_vec, /* Only compiled if host has long-long support */
#endif
&h8300coff_vec,
&z8kcoff_vec,
&m88kbcs_vec,
&srec_vec,
+ &symbolsrec_vec,
/* &tekhex_vec,*/
&icoff_little_vec,
&icoff_big_vec,
- &elf_little_vec,
- &elf_big_vec,
+ &bfd_elf32_sparc_vec,
+ &bfd_elf32_i386_vec,
+ &bfd_elf32_m68k_vec,
+ &bfd_elf32_i860_vec,
+ &bfd_elf32_m88k_vec,
+ &bfd_elf32_littlemips_vec,
+ &bfd_elf32_bigmips_vec,
+ &bfd_elf32_little_generic_vec,
+ &bfd_elf32_big_generic_vec,
+ &bfd_nlm32_little_generic_vec,
+ &bfd_nlm32_big_generic_vec,
+#ifdef BFD64
+ &bfd_elf64_little_generic_vec,
+ &bfd_elf64_big_generic_vec,
+ &bfd_nlm64_little_generic_vec,
+ &bfd_nlm64_big_generic_vec,
+#endif
&a_out_adobe_vec,
&b_out_vec_little_host,
&b_out_vec_big_host,
&m68kcoff_vec,
+ &m68kcoffun_vec,
&a29kcoff_big_vec,
&rs6000coff_vec,
-#ifdef HOST_HPPAHPUX
+#if defined (HOST_HPPAHPUX) || defined (HOST_HPPABSD)
&hppa_vec,
#endif
+ &hp300hpux_vec,
&we32kcoff_vec,
#ifdef TRAD_CORE
&sco_core_vec,
#endif
#ifdef AIX386_CORE
- &aix386_core_vec,
+ &aix386_core_vec,
#endif
+#ifdef HPUX_CORE
+ &hpux_core_vec,
+#endif
+
+#endif /* not SELECT_VECS */
NULL, /* end of list marker */
};
-#endif
-
/* default_vector[0] contains either the address of the default vector,
if there is one, or zero if there isn't. */