Don't always build coffgen.o
authorAlan Modra <amodra@gmail.com>
Wed, 10 Dec 2014 11:14:34 +0000 (21:44 +1030)
committerAlan Modra <amodra@gmail.com>
Wed, 10 Dec 2014 12:43:49 +0000 (23:13 +1030)
Removes a bunch of unused functions from libbfd when building ELF or
AOUT.  Split off the bits we need externally when not building a COFF
target into coff-bfd.c and coff-bfd.h.

bfd/
* Makefile.am (BFD32_LIBS, BFD32_LIBS_CFILES): Remove dwarf2
and coffgen.  Add coff-bfd.  Sort.
(BFD32_BACKENDS, BFD32_BACKENDS_CFILES): Add coffgen and dwarf2.
* bfd-in.h (bfd_coff_get_syment, bfd_coff_get_auxent): Delete.
(struct coff_comdat_info, bfd_coff_get_comdat_section): Delete.
* coffgen.c (coff_symbol_from): Move to coff-bfd.h as macro,
without unused param.  Update uses.
(bfd_coff_get_comdat_section): Move to coff-bfd.h as macro.
(bfd_coff_get_syment, bfd_coff_get_auxent): Move to coff-bfd.c.
* libcoff-in.h: #include "coff-bfd.h".
(struct coff_section_tdata, coff_section_data): Move to coff-bfd.h.
(coff_symbol_from): Delete.
* coff-bfd.c: New file.
* coff-bfd.h: New file.
* coff-i386.c: Update coff_symbol_from occurrences.
* coff-i960.c: Likewise.
* coff-m68k.c: Likewise.
* coff-sh.c: Likewise.
* coff-x86_64.c: Likewise.
* coffcode.h: Likewise.
* pe-mips.c: Likewise.
* configure.ac (elf): Add dwarf2.lo.
(coffgen, coff, ecoff, xcoff): Define.  Use when mapping bfd
target vectors to .o files.  Add dwarf2 for mach-o targets.
Fix the sh target FIXME.
* po/SRC-POTFILES.in: Regenerate.
* Makefile.in: Regenerate.
* configure: Regenerate.
* bfd-in2.h: Regenerate.
* libcoff.h: Regenerate.
binutils/
* objdump.c: #include "coff-bfd.h".
ld/
* ldmisc.c: #include "coff-bfd.h"

24 files changed:
bfd/ChangeLog
bfd/Makefile.am
bfd/Makefile.in
bfd/bfd-in.h
bfd/bfd-in2.h
bfd/coff-bfd.c [new file with mode: 0644]
bfd/coff-bfd.h [new file with mode: 0644]
bfd/coff-i386.c
bfd/coff-i960.c
bfd/coff-m68k.c
bfd/coff-sh.c
bfd/coff-x86_64.c
bfd/coffcode.h
bfd/coffgen.c
bfd/configure
bfd/configure.ac
bfd/libcoff-in.h
bfd/libcoff.h
bfd/pe-mips.c
bfd/po/SRC-POTFILES.in
binutils/ChangeLog
binutils/objdump.c
ld/ChangeLog
ld/ldmisc.c

index df7499c439baeba03e52c0671a5e85a4ea48f8b6..76e382e6fdf6491d9bb086acabd29fafb9570026 100644 (file)
@@ -1,3 +1,36 @@
+2014-12-10  Alan Modra  <amodra@gmail.com>
+
+       * Makefile.am (BFD32_LIBS, BFD32_LIBS_CFILES): Remove dwarf2
+       and coffgen.  Add coff-bfd.  Sort.
+       (BFD32_BACKENDS, BFD32_BACKENDS_CFILES): Add coffgen and dwarf2.
+       * bfd-in.h (bfd_coff_get_syment, bfd_coff_get_auxent): Delete.
+       (struct coff_comdat_info, bfd_coff_get_comdat_section): Delete.
+       * coffgen.c (coff_symbol_from): Move to coff-bfd.h as macro,
+       without unused param.  Update uses.
+       (bfd_coff_get_comdat_section): Move to coff-bfd.h as macro.
+       (bfd_coff_get_syment, bfd_coff_get_auxent): Move to coff-bfd.c.
+       * libcoff-in.h: #include "coff-bfd.h".
+       (struct coff_section_tdata, coff_section_data): Move to coff-bfd.h.
+       (coff_symbol_from): Delete.
+       * coff-bfd.c: New file.
+       * coff-bfd.h: New file.
+       * coff-i386.c: Update coff_symbol_from occurrences.
+       * coff-i960.c: Likewise.
+       * coff-m68k.c: Likewise.
+       * coff-sh.c: Likewise.
+       * coff-x86_64.c: Likewise.
+       * coffcode.h: Likewise.
+       * pe-mips.c: Likewise.
+       * configure.ac (elf): Add dwarf2.lo.
+       (coffgen, coff, ecoff, xcoff): Define.  Use when mapping bfd
+       target vectors to .o files.  Add dwarf2 for mach-o targets.
+       Fix the sh target FIXME.
+       * po/SRC-POTFILES.in: Regenerate.
+       * Makefile.in: Regenerate.
+       * configure: Regenerate.
+       * bfd-in2.h: Regenerate.
+       * libcoff.h: Regenerate.
+
 2014-12-10  Alan Modra  <amodra@gmail.com>
 
        PR 17541
index cea3794c30bf075b32d75783cb6edc16a62733ba..8aa87481c6490c09ab36bafd6a662c6428980a9b 100644 (file)
@@ -64,21 +64,19 @@ BFD_H = bfd.h
 # debugger).
 BFD32_LIBS = \
        archive.lo archures.lo bfd.lo bfdio.lo bfdwin.lo \
-       cache.lo coffgen.lo corefile.lo \
-       format.lo init.lo libbfd.lo opncls.lo reloc.lo \
-       section.lo syms.lo targets.lo hash.lo linker.lo \
-       srec.lo binary.lo tekhex.lo ihex.lo stabs.lo stab-syms.lo \
-       merge.lo dwarf2.lo simple.lo compress.lo verilog.lo
+       cache.lo coff-bfd.lo compress.lo corefile.lo format.lo hash.lo \
+       init.lo libbfd.lo linker.lo merge.lo opncls.lo reloc.lo \
+       section.lo simple.lo stab-syms.lo stabs.lo syms.lo targets.lo \
+       binary.lo ihex.lo srec.lo tekhex.lo verilog.lo
 
 BFD64_LIBS = archive64.lo
 
 BFD32_LIBS_CFILES = \
        archive.c archures.c bfd.c bfdio.c bfdwin.c \
-       cache.c coffgen.c corefile.c \
-       format.c init.c libbfd.c opncls.c reloc.c \
-       section.c syms.c targets.c hash.c linker.c \
-       srec.c binary.c tekhex.c ihex.c stabs.c stab-syms.c \
-       merge.c dwarf2.c simple.c compress.c verilog.c
+       cache.c coff-bfd.c compress.c corefile.c format.c hash.c \
+       init.c libbfd.c linker.c merge.c opncls.c reloc.c \
+       section.c simple.c stab-syms.c stabs.c syms.c targets.c \
+       binary.c ihex.c srec.c tekhex.c verilog.c
 
 BFD64_LIBS_CFILES = archive64.c
 
@@ -295,8 +293,10 @@ BFD32_BACKENDS = \
        coff-we32k.lo \
        coff-z80.lo \
        coff-z8k.lo \
+       coffgen.lo \
        cofflink.lo \
        dwarf1.lo \
+       dwarf2.lo \
        ecoff.lo \
        ecofflink.lo \
        elf-attrs.lo \
@@ -483,8 +483,10 @@ BFD32_BACKENDS_CFILES = \
        coff-we32k.c \
        coff-z80.c \
        coff-z8k.c \
+       coffgen.c \
        cofflink.c \
        dwarf1.c \
+       dwarf2.c \
        ecoff.c \
        ecofflink.c \
        elf-attrs.c \
index fbad166f89df4fb409ecce5b7e9561c2a42a2a7c..50fbc2506c7be794ad17dece67348e91e2db7159 100644 (file)
@@ -121,11 +121,10 @@ am__installdirs = "$(DESTDIR)$(bfdlibdir)" \
 LTLIBRARIES = $(bfdlib_LTLIBRARIES) $(noinst_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 am__objects_1 = archive.lo archures.lo bfd.lo bfdio.lo bfdwin.lo \
-       cache.lo coffgen.lo corefile.lo format.lo init.lo libbfd.lo \
-       opncls.lo reloc.lo section.lo syms.lo targets.lo hash.lo \
-       linker.lo srec.lo binary.lo tekhex.lo ihex.lo stabs.lo \
-       stab-syms.lo merge.lo dwarf2.lo simple.lo compress.lo \
-       verilog.lo
+       cache.lo coff-bfd.lo compress.lo corefile.lo format.lo hash.lo \
+       init.lo libbfd.lo linker.lo merge.lo opncls.lo reloc.lo \
+       section.lo simple.lo stab-syms.lo stabs.lo syms.lo targets.lo \
+       binary.lo ihex.lo srec.lo tekhex.lo verilog.lo
 am_libbfd_la_OBJECTS = $(am__objects_1)
 libbfd_la_OBJECTS = $(am_libbfd_la_OBJECTS)
 libbfd_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
@@ -366,20 +365,18 @@ BFD_H = bfd.h
 # debugger).
 BFD32_LIBS = \
        archive.lo archures.lo bfd.lo bfdio.lo bfdwin.lo \
-       cache.lo coffgen.lo corefile.lo \
-       format.lo init.lo libbfd.lo opncls.lo reloc.lo \
-       section.lo syms.lo targets.lo hash.lo linker.lo \
-       srec.lo binary.lo tekhex.lo ihex.lo stabs.lo stab-syms.lo \
-       merge.lo dwarf2.lo simple.lo compress.lo verilog.lo
+       cache.lo coff-bfd.lo compress.lo corefile.lo format.lo hash.lo \
+       init.lo libbfd.lo linker.lo merge.lo opncls.lo reloc.lo \
+       section.lo simple.lo stab-syms.lo stabs.lo syms.lo targets.lo \
+       binary.lo ihex.lo srec.lo tekhex.lo verilog.lo
 
 BFD64_LIBS = archive64.lo
 BFD32_LIBS_CFILES = \
        archive.c archures.c bfd.c bfdio.c bfdwin.c \
-       cache.c coffgen.c corefile.c \
-       format.c init.c libbfd.c opncls.c reloc.c \
-       section.c syms.c targets.c hash.c linker.c \
-       srec.c binary.c tekhex.c ihex.c stabs.c stab-syms.c \
-       merge.c dwarf2.c simple.c compress.c verilog.c
+       cache.c coff-bfd.c compress.c corefile.c format.c hash.c \
+       init.c libbfd.c linker.c merge.c opncls.c reloc.c \
+       section.c simple.c stab-syms.c stabs.c syms.c targets.c \
+       binary.c ihex.c srec.c tekhex.c verilog.c
 
 BFD64_LIBS_CFILES = archive64.c
 
@@ -597,8 +594,10 @@ BFD32_BACKENDS = \
        coff-we32k.lo \
        coff-z80.lo \
        coff-z8k.lo \
+       coffgen.lo \
        cofflink.lo \
        dwarf1.lo \
+       dwarf2.lo \
        ecoff.lo \
        ecofflink.lo \
        elf-attrs.lo \
@@ -785,8 +784,10 @@ BFD32_BACKENDS_CFILES = \
        coff-we32k.c \
        coff-z80.c \
        coff-z8k.c \
+       coffgen.c \
        cofflink.c \
        dwarf1.c \
+       dwarf2.c \
        ecoff.c \
        ecofflink.c \
        elf-attrs.c \
@@ -1272,6 +1273,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-apollo.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-arm.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-aux.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-bfd.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-go32.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-h8300.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-h8500.Plo@am__quote@
index 1f80a76ba053b091418ba549260341e0c7d2e2a2..0f2b57fc306a3fd4b9b74701d1bc7657601cbaf1 100644 (file)
@@ -806,12 +806,6 @@ struct internal_syment;
 union internal_auxent;
 #endif
 
-extern bfd_boolean bfd_coff_get_syment
-  (bfd *, struct bfd_symbol *, struct internal_syment *);
-
-extern bfd_boolean bfd_coff_get_auxent
-  (bfd *, struct bfd_symbol *, int, union internal_auxent *);
-
 extern bfd_boolean bfd_coff_set_symbol_class
   (bfd *, struct bfd_symbol *, unsigned int);
 
@@ -991,23 +985,3 @@ extern void bfd_elf32_ia64_after_parse
 
 extern void bfd_elf64_ia64_after_parse
   (int);
-
-/* This structure is used for a comdat section, as in PE.  A comdat
-   section is associated with a particular symbol.  When the linker
-   sees a comdat section, it keeps only one of the sections with a
-   given name and associated with a given symbol.  */
-
-struct coff_comdat_info
-{
-  /* The name of the symbol associated with a comdat section.  */
-  const char *name;
-
-  /* The local symbol table index of the symbol associated with a
-     comdat section.  This is only meaningful to the object file format
-     specific code; it is not an index into the list returned by
-     bfd_canonicalize_symtab.  */
-  long symbol;
-};
-
-extern struct coff_comdat_info * bfd_coff_get_comdat_section
-  (bfd *, struct bfd_section *);
index 94546b4a5f85f5fd98b6305e060cb14b724d1816..7f45316800c6cb949bb08c3f8ae04ed2d33426e5 100644 (file)
@@ -813,12 +813,6 @@ struct internal_syment;
 union internal_auxent;
 #endif
 
-extern bfd_boolean bfd_coff_get_syment
-  (bfd *, struct bfd_symbol *, struct internal_syment *);
-
-extern bfd_boolean bfd_coff_get_auxent
-  (bfd *, struct bfd_symbol *, int, union internal_auxent *);
-
 extern bfd_boolean bfd_coff_set_symbol_class
   (bfd *, struct bfd_symbol *, unsigned int);
 
@@ -998,26 +992,6 @@ extern void bfd_elf32_ia64_after_parse
 
 extern void bfd_elf64_ia64_after_parse
   (int);
-
-/* This structure is used for a comdat section, as in PE.  A comdat
-   section is associated with a particular symbol.  When the linker
-   sees a comdat section, it keeps only one of the sections with a
-   given name and associated with a given symbol.  */
-
-struct coff_comdat_info
-{
-  /* The name of the symbol associated with a comdat section.  */
-  const char *name;
-
-  /* The local symbol table index of the symbol associated with a
-     comdat section.  This is only meaningful to the object file format
-     specific code; it is not an index into the list returned by
-     bfd_canonicalize_symtab.  */
-  long symbol;
-};
-
-extern struct coff_comdat_info * bfd_coff_get_comdat_section
-  (bfd *, struct bfd_section *);
 /* Extracted from init.c.  */
 void bfd_init (void);
 
diff --git a/bfd/coff-bfd.c b/bfd/coff-bfd.c
new file mode 100644 (file)
index 0000000..81ecdf8
--- /dev/null
@@ -0,0 +1,99 @@
+/* BFD COFF interfaces used outside of BFD.
+   Copyright (C) 1990-2014 Free Software Foundation, Inc.
+   Written by Cygnus Support.
+
+   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 3 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., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libbfd.h"
+#include "coff/internal.h"
+#include "libcoff.h"
+
+/* Return the COFF syment for a symbol.  */
+
+bfd_boolean
+bfd_coff_get_syment (bfd *abfd,
+                    asymbol *symbol,
+                    struct internal_syment *psyment)
+{
+  coff_symbol_type *csym;
+
+  csym = coff_symbol_from (symbol);
+  if (csym == NULL || csym->native == NULL
+      || ! csym->native->is_sym)
+    {
+      bfd_set_error (bfd_error_invalid_operation);
+      return FALSE;
+    }
+
+  *psyment = csym->native->u.syment;
+
+  if (csym->native->fix_value)
+    psyment->n_value = psyment->n_value -
+      (bfd_hostptr_t) obj_raw_syments (abfd);
+
+  /* FIXME: We should handle fix_line here.  */
+
+  return TRUE;
+}
+
+/* Return the COFF auxent for a symbol.  */
+
+bfd_boolean
+bfd_coff_get_auxent (bfd *abfd,
+                    asymbol *symbol,
+                    int indx,
+                    union internal_auxent *pauxent)
+{
+  coff_symbol_type *csym;
+  combined_entry_type *ent;
+
+  csym = coff_symbol_from (symbol);
+
+  if (csym == NULL
+      || csym->native == NULL
+      || ! csym->native->is_sym
+      || indx >= csym->native->u.syment.n_numaux)
+    {
+      bfd_set_error (bfd_error_invalid_operation);
+      return FALSE;
+    }
+
+  ent = csym->native + indx + 1;
+
+  BFD_ASSERT (! ent->is_sym);
+  *pauxent = ent->u.auxent;
+
+  if (ent->fix_tag)
+    pauxent->x_sym.x_tagndx.l =
+      ((combined_entry_type *) pauxent->x_sym.x_tagndx.p
+       - obj_raw_syments (abfd));
+
+  if (ent->fix_end)
+    pauxent->x_sym.x_fcnary.x_fcn.x_endndx.l =
+      ((combined_entry_type *) pauxent->x_sym.x_fcnary.x_fcn.x_endndx.p
+       - obj_raw_syments (abfd));
+
+  if (ent->fix_scnlen)
+    pauxent->x_csect.x_scnlen.l =
+      ((combined_entry_type *) pauxent->x_csect.x_scnlen.p
+       - obj_raw_syments (abfd));
+
+  return TRUE;
+}
diff --git a/bfd/coff-bfd.h b/bfd/coff-bfd.h
new file mode 100644 (file)
index 0000000..3e30ef3
--- /dev/null
@@ -0,0 +1,86 @@
+/* BFD COFF interfaces used outside of BFD.
+   Copyright (C) 1990-2014 Free Software Foundation, Inc.
+   Written by Cygnus Support.
+
+   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 3 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., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
+
+/* This structure is used for a comdat section, as in PE.  A comdat
+   section is associated with a particular symbol.  When the linker
+   sees a comdat section, it keeps only one of the sections with a
+   given name and associated with a given symbol.  */
+
+struct coff_comdat_info
+{
+  /* The name of the symbol associated with a comdat section.  */
+  const char *name;
+
+  /* The local symbol table index of the symbol associated with a
+     comdat section.  This is only meaningful to the object file format
+     specific code; it is not an index into the list returned by
+     bfd_canonicalize_symtab.  */
+  long symbol;
+};
+
+/* The used_by_bfd field of a section may be set to a pointer to this
+   structure.  */
+
+struct coff_section_tdata
+{
+  /* The relocs, swapped into COFF internal form.  This may be NULL.  */
+  struct internal_reloc *relocs;
+  /* If this is TRUE, the relocs entry may not be freed.  */
+  bfd_boolean keep_relocs;
+  /* The section contents.  This may be NULL.  */
+  bfd_byte *contents;
+  /* If this is TRUE, the contents entry may not be freed.  */
+  bfd_boolean keep_contents;
+  /* Information cached by coff_find_nearest_line.  */
+  bfd_vma offset;
+  unsigned int i;
+  const char *function;
+  /* Optional information about a COMDAT entry; NULL if not COMDAT. */
+  struct coff_comdat_info *comdat;
+  int line_base;
+  /* A pointer used for .stab linking optimizations.  */
+  void * stab_info;
+  /* Available for individual backends.  */
+  void * tdata;
+};
+
+/* An accessor macro for the coff_section_tdata structure.  */
+#define coff_section_data(abfd, sec) \
+  ((struct coff_section_tdata *) (sec)->used_by_bfd)
+
+#define bfd_coff_get_comdat_section(abfd, sec)         \
+  ((bfd_get_flavour (abfd) == bfd_target_coff_flavour  \
+    && coff_section_data (abfd, sec) != NULL)          \
+   ? coff_section_data (abfd, sec)->comdat : NULL)
+
+#define coff_symbol_from(symbol)                       \
+  ((bfd_family_coff (bfd_asymbol_bfd (symbol))         \
+    && bfd_asymbol_bfd (symbol)->tdata.coff_obj_data)  \
+   ? (coff_symbol_type *) (symbol) : NULL)
+
+struct internal_syment;
+union internal_auxent;
+
+extern bfd_boolean bfd_coff_get_syment
+  (bfd *, struct bfd_symbol *, struct internal_syment *);
+
+extern bfd_boolean bfd_coff_get_auxent
+  (bfd *, struct bfd_symbol *, int, union internal_auxent *);
index 848d69b91c0491fc7ae5c445d8444af21877357f..e3f3b5810a9ee7a5cfb1b509d37fa0bb628b293d 100644 (file)
@@ -379,7 +379,7 @@ static reloc_howto_type howto_table[] =
       coffsym = (obj_symbols (abfd)                            \
                 + (cache_ptr->sym_ptr_ptr - symbols));         \
     else if (ptr)                                              \
-      coffsym = coff_symbol_from (abfd, ptr);                  \
+      coffsym = coff_symbol_from (ptr);                                \
     if (coffsym != (coff_symbol_type *) NULL                   \
        && coffsym->native->u.syment.n_scnum == 0)              \
       cache_ptr->addend = - coffsym->native->u.syment.n_value; \
index 14482576323d5b8dfe43722629d3a06524f22dc2..963433eefc8265b31dfde62e573bb857bcfc8299 100644 (file)
@@ -62,22 +62,22 @@ coff_i960_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED, const char *name)
 /* This is just like the usual CALC_ADDEND, but it includes the
    section VMA for PC relative relocs.  */
 #ifndef CALC_ADDEND
-#define CALC_ADDEND(abfd, ptr, reloc, cache_ptr)                \
-  {                                                             \
-    coff_symbol_type *coffsym = (coff_symbol_type *) NULL;      \
-    if (ptr && bfd_asymbol_bfd (ptr) != abfd)                   \
-      coffsym = (obj_symbols (abfd)                             \
-                 + (cache_ptr->sym_ptr_ptr - symbols));         \
-    else if (ptr)                                               \
-      coffsym = coff_symbol_from (abfd, ptr);                   \
-    if (coffsym != (coff_symbol_type *) NULL                    \
-        && coffsym->native->u.syment.n_scnum == 0)              \
-      cache_ptr->addend = 0;                                    \
-    else if (ptr && bfd_asymbol_bfd (ptr) == abfd               \
-             && ptr->section != (asection *) NULL)              \
-      cache_ptr->addend = - (ptr->section->vma + ptr->value);   \
-    else                                                        \
-      cache_ptr->addend = 0;                                    \
+#define CALC_ADDEND(abfd, ptr, reloc, cache_ptr)               \
+  {                                                            \
+    coff_symbol_type *coffsym = (coff_symbol_type *) NULL;     \
+    if (ptr && bfd_asymbol_bfd (ptr) != abfd)                  \
+      coffsym = (obj_symbols (abfd)                            \
+                + (cache_ptr->sym_ptr_ptr - symbols));         \
+    else if (ptr)                                              \
+      coffsym = coff_symbol_from (ptr);                                \
+    if (coffsym != (coff_symbol_type *) NULL                   \
+       && coffsym->native->u.syment.n_scnum == 0)              \
+      cache_ptr->addend = 0;                                   \
+    else if (ptr && bfd_asymbol_bfd (ptr) == abfd              \
+            && ptr->section != (asection *) NULL)              \
+      cache_ptr->addend = - (ptr->section->vma + ptr->value);  \
+    else                                                       \
+      cache_ptr->addend = 0;                                   \
     if (ptr && (reloc.r_type == 25 || reloc.r_type == 27))     \
       cache_ptr->addend += asect->vma;                         \
   }
index 5ebf52c3c9a866fb4f2490cefba9d2727efd1b73..20696f55178714b76ab4eb54f8bd21dd6a2c2815 100644 (file)
@@ -360,7 +360,7 @@ m68kcoff_common_addend_special_fn (bfd *abfd,
       coffsym = (obj_symbols (abfd)                            \
                 + (cache_ptr->sym_ptr_ptr - symbols));         \
     else if (ptr)                                              \
-      coffsym = coff_symbol_from (abfd, ptr);                  \
+      coffsym = coff_symbol_from (ptr);                                \
     if (coffsym != (coff_symbol_type *) NULL                   \
        && coffsym->native->u.syment.n_scnum == 0)              \
       cache_ptr->addend = - coffsym->native->u.syment.n_value; \
index 23e32ec6330b0cee241d2b7cb5c92e078051a2ba..fcd9570b8d4fe1d4cae0881260fd76b7f7cb60ce 100644 (file)
@@ -530,22 +530,22 @@ sh_coff_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
 
 /* This is the same as the macro in coffcode.h, except that it copies
    r_offset into reloc_entry->addend for some relocs.  */
-#define CALC_ADDEND(abfd, ptr, reloc, cache_ptr)                \
-  {                                                             \
-    coff_symbol_type *coffsym = (coff_symbol_type *) NULL;      \
-    if (ptr && bfd_asymbol_bfd (ptr) != abfd)                   \
-      coffsym = (obj_symbols (abfd)                             \
-                 + (cache_ptr->sym_ptr_ptr - symbols));         \
-    else if (ptr)                                               \
-      coffsym = coff_symbol_from (abfd, ptr);                   \
-    if (coffsym != (coff_symbol_type *) NULL                    \
-        && coffsym->native->u.syment.n_scnum == 0)              \
-      cache_ptr->addend = 0;                                    \
-    else if (ptr && bfd_asymbol_bfd (ptr) == abfd               \
-             && ptr->section != (asection *) NULL)              \
-      cache_ptr->addend = - (ptr->section->vma + ptr->value);   \
-    else                                                        \
-      cache_ptr->addend = 0;                                    \
+#define CALC_ADDEND(abfd, ptr, reloc, cache_ptr)               \
+  {                                                            \
+    coff_symbol_type *coffsym = (coff_symbol_type *) NULL;     \
+    if (ptr && bfd_asymbol_bfd (ptr) != abfd)                  \
+      coffsym = (obj_symbols (abfd)                            \
+                + (cache_ptr->sym_ptr_ptr - symbols));         \
+    else if (ptr)                                              \
+      coffsym = coff_symbol_from (ptr);                                \
+    if (coffsym != (coff_symbol_type *) NULL                   \
+       && coffsym->native->u.syment.n_scnum == 0)              \
+      cache_ptr->addend = 0;                                   \
+    else if (ptr && bfd_asymbol_bfd (ptr) == abfd              \
+            && ptr->section != (asection *) NULL)              \
+      cache_ptr->addend = - (ptr->section->vma + ptr->value);  \
+    else                                                       \
+      cache_ptr->addend = 0;                                   \
     if ((reloc).r_type == R_SH_SWITCH8                         \
        || (reloc).r_type == R_SH_SWITCH16                      \
        || (reloc).r_type == R_SH_SWITCH32                      \
index 742adc29e03514e166d66f59db0955dbd6d8770d..03628b9fe8db7a52992d5ec768bae1f4d30a8ed1 100644 (file)
@@ -499,7 +499,7 @@ static reloc_howto_type howto_table[] =
       coffsym = (obj_symbols (abfd)                            \
                 + (cache_ptr->sym_ptr_ptr - symbols));         \
     else if (ptr)                                              \
-      coffsym = coff_symbol_from (abfd, ptr);                  \
+      coffsym = coff_symbol_from (ptr);                                \
                                                                \
     if (coffsym != NULL                                                \
        && coffsym->native->u.syment.n_scnum == 0)              \
index 1719b2d9008f53676cd469b68d7e01586e574443..a5ea3322f44543cffec0c4743230faf784570bd1 100644 (file)
@@ -3174,7 +3174,7 @@ coff_compute_section_file_positions (bfd * abfd)
        {
          coff_symbol_type *cf;
 
-         cf = coff_symbol_from (abfd, *symp);
+         cf = coff_symbol_from (*symp);
          if (cf != NULL
              && cf->native != NULL
              && cf->native->is_sym
@@ -3872,7 +3872,7 @@ coff_write_object_contents (bfd * abfd)
              /* See if this is the section symbol.  */
              if (strcmp ((*psym)->name, current->name) == 0)
                {
-                 csym = coff_symbol_from (abfd, *psym);
+                 csym = coff_symbol_from (*psym);
                  if (csym == NULL
                      || csym->native == NULL
                      || ! csym->native->is_sym
@@ -5185,7 +5185,7 @@ SUBSUBSECTION
       coffsym = (obj_symbols (abfd)                            \
                 + (cache_ptr->sym_ptr_ptr - symbols));         \
     else if (ptr)                                              \
-      coffsym = coff_symbol_from (abfd, ptr);                  \
+      coffsym = coff_symbol_from (ptr);                                \
     if (coffsym != NULL                                                \
        && coffsym->native->is_sym                              \
        && coffsym->native->u.syment.n_scnum == 0)              \
index 2b8884d3ad90c6ffa39701a63aa9f3e453766a52..db89c72576cc80bf9f6ac627e09b7285f6e03af9 100644 (file)
@@ -633,22 +633,6 @@ coff_count_linenumbers (bfd *abfd)
   return total;
 }
 
-/* Takes a bfd and a symbol, returns a pointer to the coff specific
-   area of the symbol if there is one.  */
-
-coff_symbol_type *
-coff_symbol_from (bfd *ignore_abfd ATTRIBUTE_UNUSED,
-                 asymbol *symbol)
-{
-  if (!bfd_family_coff (bfd_asymbol_bfd (symbol)))
-    return (coff_symbol_type *) NULL;
-
-  if (bfd_asymbol_bfd (symbol)->tdata.coff_obj_data == (coff_data_type *) NULL)
-    return (coff_symbol_type *) NULL;
-
-  return (coff_symbol_type *) symbol;
-}
-
 static void
 fixup_symbol_value (bfd *abfd,
                    coff_symbol_type *coff_symbol_ptr,
@@ -765,8 +749,9 @@ coff_renumber_symbols (bfd *bfd_ptr, int *first_undef)
 
   for (symbol_index = 0; symbol_index < symbol_count; symbol_index++)
     {
-      coff_symbol_type *coff_symbol_ptr = coff_symbol_from (bfd_ptr, symbol_ptr_ptr[symbol_index]);
+      coff_symbol_type *coff_symbol_ptr;
 
+      coff_symbol_ptr = coff_symbol_from (symbol_ptr_ptr[symbol_index]);
       symbol_ptr_ptr[symbol_index]->udata.i = symbol_index;
       if (coff_symbol_ptr && coff_symbol_ptr->native)
        {
@@ -810,9 +795,9 @@ coff_mangle_symbols (bfd *bfd_ptr)
 
   for (symbol_index = 0; symbol_index < symbol_count; symbol_index++)
     {
-      coff_symbol_type *coff_symbol_ptr =
-      coff_symbol_from (bfd_ptr, symbol_ptr_ptr[symbol_index]);
+      coff_symbol_type *coff_symbol_ptr;
 
+      coff_symbol_ptr = coff_symbol_from (symbol_ptr_ptr[symbol_index]);
       if (coff_symbol_ptr && coff_symbol_ptr->native)
        {
          int i;
@@ -1140,7 +1125,7 @@ coff_write_alien_symbol (bfd *abfd,
       /* Copy the any flags from the file header into the symbol.
          FIXME: Why?  */
       {
-       coff_symbol_type *c = coff_symbol_from (abfd, symbol);
+       coff_symbol_type *c = coff_symbol_from (symbol);
        if (c != (coff_symbol_type *) NULL)
          native->u.syment.n_flags = bfd_asymbol_bfd (&c->symbol)->flags;
       }
@@ -1272,7 +1257,7 @@ coff_write_symbols (bfd *abfd)
   for (p = abfd->outsymbols, i = 0; i < limit; i++, p++)
     {
       asymbol *symbol = *p;
-      coff_symbol_type *c_symbol = coff_symbol_from (abfd, symbol);
+      coff_symbol_type *c_symbol = coff_symbol_from (symbol);
 
       if (c_symbol == (coff_symbol_type *) NULL
          || c_symbol->native == (combined_entry_type *) NULL)
@@ -1372,7 +1357,7 @@ coff_write_symbols (bfd *abfd)
        {
          asymbol *q = *p;
          size_t name_length = strlen (q->name);
-         coff_symbol_type *c_symbol = coff_symbol_from (abfd, q);
+         coff_symbol_type *c_symbol = coff_symbol_from (q);
          size_t maxlen;
 
          /* Figure out whether the symbol name should go in the string
@@ -2045,79 +2030,6 @@ coff_get_symbol_info (bfd *abfd, asymbol *symbol, symbol_info *ret)
       (bfd_hostptr_t) obj_raw_syments (abfd);
 }
 
-/* Return the COFF syment for a symbol.  */
-
-bfd_boolean
-bfd_coff_get_syment (bfd *abfd,
-                    asymbol *symbol,
-                    struct internal_syment *psyment)
-{
-  coff_symbol_type *csym;
-
-  csym = coff_symbol_from (abfd, symbol);
-  if (csym == NULL || csym->native == NULL
-      || ! csym->native->is_sym)
-    {
-      bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
-    }
-
-  *psyment = csym->native->u.syment;
-
-  if (csym->native->fix_value)
-    psyment->n_value = psyment->n_value -
-      (bfd_hostptr_t) obj_raw_syments (abfd);
-
-  /* FIXME: We should handle fix_line here.  */
-
-  return TRUE;
-}
-
-/* Return the COFF auxent for a symbol.  */
-
-bfd_boolean
-bfd_coff_get_auxent (bfd *abfd,
-                    asymbol *symbol,
-                    int indx,
-                    union internal_auxent *pauxent)
-{
-  coff_symbol_type *csym;
-  combined_entry_type *ent;
-
-  csym = coff_symbol_from (abfd, symbol);
-
-  if (csym == NULL
-      || csym->native == NULL
-      || ! csym->native->is_sym
-      || indx >= csym->native->u.syment.n_numaux)
-    {
-      bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
-    }
-
-  ent = csym->native + indx + 1;
-
-  BFD_ASSERT (! ent->is_sym);
-  *pauxent = ent->u.auxent;
-
-  if (ent->fix_tag)
-    pauxent->x_sym.x_tagndx.l =
-      ((combined_entry_type *) pauxent->x_sym.x_tagndx.p
-       - obj_raw_syments (abfd));
-
-  if (ent->fix_end)
-    pauxent->x_sym.x_fcnary.x_fcn.x_endndx.l =
-      ((combined_entry_type *) pauxent->x_sym.x_fcnary.x_fcn.x_endndx.p
-       - obj_raw_syments (abfd));
-
-  if (ent->fix_scnlen)
-    pauxent->x_csect.x_scnlen.l =
-      ((combined_entry_type *) pauxent->x_csect.x_scnlen.p
-       - obj_raw_syments (abfd));
-
-  return TRUE;
-}
-
 /* Print out information about COFF symbol.  */
 
 void
@@ -2567,7 +2479,7 @@ bfd_coff_set_symbol_class (bfd *         abfd,
 {
   coff_symbol_type * csym;
 
-  csym = coff_symbol_from (abfd, symbol);
+  csym = coff_symbol_from (symbol);
   if (csym == NULL)
     {
       bfd_set_error (bfd_error_invalid_operation);
@@ -2623,16 +2535,6 @@ bfd_coff_set_symbol_class (bfd *         abfd,
   return TRUE;
 }
 
-struct coff_comdat_info *
-bfd_coff_get_comdat_section (bfd *abfd, struct bfd_section *sec)
-{
-  if (bfd_get_flavour (abfd) == bfd_target_coff_flavour
-      && coff_section_data (abfd, sec) != NULL)
-    return coff_section_data (abfd, sec)->comdat;
-  else
-    return NULL;
-}
-
 bfd_boolean
 _bfd_coff_section_already_linked (bfd *abfd,
                                  asection *sec,
index 3bb0cf72384aebc844461830a5cb5b77a7107e95..f7a9e81a7e41c01592e8d461fef7e4a866039168 100755 (executable)
@@ -15276,7 +15276,11 @@ selarchs="$f"
 tb=
 
 elf="elf.lo elflink.lo elf-attrs.lo elf-strtab.lo
-     elf-eh-frame.lo dwarf1.lo"
+     elf-eh-frame.lo dwarf1.lo dwarf2.lo"
+coffgen="coffgen.lo dwarf2.lo"
+coff="cofflink.lo $coffgen"
+ecoff="ecofflink.lo $coffgen"
+xcoff="xcofflink.lo $coffgen"
 
 for vec in $selvecs
 do
@@ -15289,7 +15293,7 @@ do
     aarch64_elf32_le_vec)       tb="$tb elf32-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf32.lo $elf"; target_size=64 ;;
     aarch64_elf64_be_vec)       tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
     aarch64_elf64_le_vec)       tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
-    alpha_ecoff_le_vec)                 tb="$tb coff-alpha.lo ecoff.lo ecofflink.lo"; target_size=64 ;;
+    alpha_ecoff_le_vec)                 tb="$tb coff-alpha.lo ecoff.lo $ecoff"; target_size=64 ;;
     alpha_elf64_vec)            tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
     alpha_elf64_fbsd_vec)       tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
     alpha_nlm32_vec)            tb="$tb nlm32-alpha.lo nlm32.lo nlm.lo"; target_size=64 ;;
@@ -15306,8 +15310,8 @@ do
     arm_aout_le_vec)            tb="$tb aout-arm.lo aout32.lo" ;;
     arm_aout_nbsd_vec)          tb="$tb armnetbsd.lo aout32.lo" ;;
     arm_aout_riscix_vec)        tb="$tb aout32.lo riscix.lo" ;;
-    arm_coff_be_vec)            tb="$tb coff-arm.lo cofflink.lo " ;;
-    arm_coff_le_vec)            tb="$tb coff-arm.lo cofflink.lo " ;;
+    arm_coff_be_vec)            tb="$tb coff-arm.lo $coff" ;;
+    arm_coff_le_vec)            tb="$tb coff-arm.lo $coff" ;;
     arm_elf32_be_vec)           tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
     arm_elf32_le_vec)           tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
     arm_elf32_nacl_be_vec)      tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
     arm_elf32_symbian_le_vec)   tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
     arm_elf32_vxworks_be_vec)   tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
     arm_elf32_vxworks_le_vec)   tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
-    arm_pe_be_vec)              tb="$tb pe-arm.lo peigen.lo cofflink.lo " ;;
-    arm_pe_le_vec)              tb="$tb pe-arm.lo peigen.lo cofflink.lo " ;;
-    arm_pe_epoc_be_vec)                 tb="$tb epoc-pe-arm.lo peigen.lo cofflink.lo " ;;
-    arm_pe_epoc_le_vec)                 tb="$tb epoc-pe-arm.lo peigen.lo cofflink.lo " ;;
-    arm_pe_wince_be_vec)        tb="$tb pe-arm-wince.lo pe-arm.lo peigen.lo cofflink.lo " ;;
-    arm_pe_wince_le_vec)        tb="$tb pe-arm-wince.lo pe-arm.lo peigen.lo cofflink.lo " ;;
-    arm_pei_be_vec)             tb="$tb pei-arm.lo peigen.lo cofflink.lo " ;;
-    arm_pei_le_vec)             tb="$tb pei-arm.lo peigen.lo cofflink.lo " ;;
-    arm_pei_epoc_be_vec)        tb="$tb epoc-pei-arm.lo peigen.lo cofflink.lo " ;;
-    arm_pei_epoc_le_vec)        tb="$tb epoc-pei-arm.lo peigen.lo cofflink.lo " ;;
-    arm_pei_wince_be_vec)       tb="$tb pei-arm-wince.lo pei-arm.lo peigen.lo cofflink.lo " ;;
-    arm_pei_wince_le_vec)       tb="$tb pei-arm-wince.lo pei-arm.lo peigen.lo cofflink.lo " ;;
+    arm_pe_be_vec)              tb="$tb pe-arm.lo peigen.lo $coff" ;;
+    arm_pe_le_vec)              tb="$tb pe-arm.lo peigen.lo $coff" ;;
+    arm_pe_epoc_be_vec)                 tb="$tb epoc-pe-arm.lo peigen.lo $coff" ;;
+    arm_pe_epoc_le_vec)                 tb="$tb epoc-pe-arm.lo peigen.lo $coff" ;;
+    arm_pe_wince_be_vec)        tb="$tb pe-arm-wince.lo pe-arm.lo peigen.lo $coff" ;;
+    arm_pe_wince_le_vec)        tb="$tb pe-arm-wince.lo pe-arm.lo peigen.lo $coff" ;;
+    arm_pei_be_vec)             tb="$tb pei-arm.lo peigen.lo $coff" ;;
+    arm_pei_le_vec)             tb="$tb pei-arm.lo peigen.lo $coff" ;;
+    arm_pei_epoc_be_vec)        tb="$tb epoc-pei-arm.lo peigen.lo $coff" ;;
+    arm_pei_epoc_le_vec)        tb="$tb epoc-pei-arm.lo peigen.lo $coff" ;;
+    arm_pei_wince_be_vec)       tb="$tb pei-arm-wince.lo pei-arm.lo peigen.lo $coff" ;;
+    arm_pei_wince_le_vec)       tb="$tb pei-arm-wince.lo pei-arm.lo peigen.lo $coff" ;;
     avr_elf32_vec)              tb="$tb elf32-avr.lo elf32.lo $elf" ;;
     bfin_elf32_vec)             tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
     bfin_elf32_fdpic_vec)       tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
@@ -15350,9 +15354,9 @@ do
     fr30_elf32_vec)             tb="$tb elf32-fr30.lo elf32.lo $elf" ;;
     frv_elf32_vec)              tb="$tb elf32-frv.lo elf32.lo $elf" ;;
     frv_elf32_fdpic_vec)        tb="$tb elf32-frv.lo elf32.lo $elf" ;;
-    h8300_coff_vec)             tb="$tb coff-h8300.lo reloc16.lo" ;;
+    h8300_coff_vec)             tb="$tb coff-h8300.lo reloc16.lo $coffgen" ;;
     h8300_elf32_vec)            tb="$tb elf32-h8300.lo elf32.lo $elf" ;;
-    h8500_coff_vec)             tb="$tb coff-h8500.lo reloc16.lo" ;;
+    h8500_coff_vec)             tb="$tb coff-h8500.lo reloc16.lo $coffgen" ;;
     hppa_elf32_vec)             tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
     hppa_elf32_linux_vec)       tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
     hppa_elf32_nbsd_vec)        tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
     i386_aout_mach3_vec)        tb="$tb i386mach3.lo aout32.lo" ;;
     i386_aout_nbsd_vec)                 tb="$tb i386netbsd.lo aout32.lo" ;;
     i386_aout_os9k_vec)                 tb="$tb i386os9k.lo aout32.lo" ;;
-    i386_coff_vec)              tb="$tb coff-i386.lo cofflink.lo" ;;
-    i386_coff_go32_vec)                 tb="$tb coff-go32.lo cofflink.lo" ;;
-    i386_coff_go32stubbed_vec)  tb="$tb coff-stgo32.lo cofflink.lo" ;;
-    i386_coff_lynx_vec)                 tb="$tb cf-i386lynx.lo cofflink.lo lynx-core.lo" ;;
+    i386_coff_vec)              tb="$tb coff-i386.lo $coff" ;;
+    i386_coff_go32_vec)                 tb="$tb coff-go32.lo $coff" ;;
+    i386_coff_go32stubbed_vec)  tb="$tb coff-stgo32.lo $coff" ;;
+    i386_coff_lynx_vec)                 tb="$tb cf-i386lynx.lo lynx-core.lo $coff" ;;
     i386_elf32_vec)             tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
     i386_elf32_fbsd_vec)        tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
     i386_elf32_nacl_vec)        tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
@@ -15381,9 +15385,9 @@ do
     i386_mach_o_vec)            tb="$tb mach-o-i386.lo" ;;
     i386_msdos_vec)             tb="$tb i386msdos.lo" ;;
     i386_nlm32_vec)             tb="$tb nlm32-i386.lo nlm32.lo nlm.lo" ;;
-    i386_pe_vec)                tb="$tb pe-i386.lo peigen.lo cofflink.lo" ;;
-    i386_pei_vec)               tb="$tb pei-i386.lo peigen.lo cofflink.lo" ;;
-    i860_coff_vec)              tb="$tb coff-i860.lo cofflink.lo" ;;
+    i386_pe_vec)                tb="$tb pe-i386.lo peigen.lo $coff" ;;
+    i386_pei_vec)               tb="$tb pei-i386.lo peigen.lo $coff" ;;
+    i860_coff_vec)              tb="$tb coff-i860.lo $coff" ;;
     i860_elf32_vec)             tb="$tb elf32-i860.lo elf32.lo $elf" ;;
     i860_elf32_le_vec)          tb="$tb elf32-i860.lo elf32.lo $elf" ;;
     i960_elf32_vec)             tb="$tb elf32-i960.lo elf32.lo $elf" ;;
@@ -15393,9 +15397,9 @@ do
     ia64_elf64_le_vec)          tb="$tb elf64-ia64.lo elfxx-ia64.lo elf64.lo $elf"; target_size=64 ;;
     ia64_elf64_hpux_be_vec)     tb="$tb elf64-ia64.lo elfxx-ia64.lo elf64.lo $elf"; target_size=64 ;;
     ia64_elf64_vms_vec)                 tb="$tb elf64-ia64-vms.lo elf64-ia64.lo elfxx-ia64.lo elf64.lo vms-lib.lo vms-misc.lo $elf"; target_size=64 ;;
-    ia64_pei_vec)               tb="$tb pei-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
-    icoff_be_vec)               tb="$tb coff-i960.lo cofflink.lo" ;;
-    icoff_le_vec)               tb="$tb coff-i960.lo cofflink.lo" ;;
+    ia64_pei_vec)               tb="$tb pei-ia64.lo pepigen.lo $coff"; target_size=64 ;;
+    icoff_be_vec)               tb="$tb coff-i960.lo $coff" ;;
+    icoff_le_vec)               tb="$tb coff-i960.lo $coff" ;;
     ieee_vec)                   tb="$tb ieee.lo" ;;
     ip2k_elf32_vec)             tb="$tb elf32-ip2k.lo elf32.lo $elf" ;;
     iq2000_elf32_vec)           tb="$tb elf32-iq2000.lo elf32.lo $elf" ;;
     m68k_aout_linux_vec)        tb="$tb m68klinux.lo aout32.lo" ;;
     m68k_aout_nbsd_vec)                 tb="$tb m68knetbsd.lo aout32.lo" ;;
     m68k_aout_newsos3_vec)      tb="$tb newsos3.lo aout32.lo" ;;
-    m68k_coff_vec)              tb="$tb coff-m68k.lo cofflink.lo" ;;
-    m68k_coff_apollo_vec)       tb="$tb coff-apollo.lo" ;;
-    m68k_coff_aux_vec)          tb="$tb coff-aux.lo coff-m68k.lo cofflink.lo" ;;
-    m68k_coff_sysv_vec)                 tb="$tb coff-svm68k.lo cofflink.lo" ;;
-    m68k_coff_un_vec)           tb="$tb coff-u68k.lo coff-m68k.lo cofflink.lo" ;;
+    m68k_coff_vec)              tb="$tb coff-m68k.lo $coff" ;;
+    m68k_coff_apollo_vec)       tb="$tb coff-apollo.lo $coffgen" ;;
+    m68k_coff_aux_vec)          tb="$tb coff-aux.lo coff-m68k.lo $coff" ;;
+    m68k_coff_sysv_vec)                 tb="$tb coff-svm68k.lo $coff" ;;
+    m68k_coff_un_vec)           tb="$tb coff-u68k.lo coff-m68k.lo $coff" ;;
     m68k_elf32_vec)             tb="$tb elf32-m68k.lo elf32.lo $elf" ;;
     m68k_versados_vec)          tb="$tb versados.lo" ;;
     m88k_aout_mach3_vec)        tb="$tb m88kmach3.lo aout32.lo" ;;
     m88k_aout_obsd_vec)                 tb="$tb m88kopenbsd.lo aout32.lo" ;;
-    m88k_coff_bcs_vec)          tb="$tb coff-m88k.lo" ;;
+    m88k_coff_bcs_vec)          tb="$tb coff-m88k.lo $coffgen" ;;
     m88k_elf32_vec)             tb="$tb elf32-m88k.lo elf32.lo $elf" ;;
-    mach_o_be_vec)              tb="$tb mach-o.lo" ;;
-    mach_o_le_vec)              tb="$tb mach-o.lo" ;;
-    mach_o_fat_vec)             tb="$tb mach-o.lo" ;;
+    mach_o_be_vec)              tb="$tb mach-o.lo dwarf2.lo" ;;
+    mach_o_le_vec)              tb="$tb mach-o.lo dwarf2.lo" ;;
+    mach_o_fat_vec)             tb="$tb mach-o.lo dwarf2.lo" ;;
     mcore_elf32_be_vec)                 tb="$tb elf32-mcore.lo elf32.lo $elf" ;;
     mcore_elf32_le_vec)                 tb="$tb elf32-mcore.lo elf32.lo $elf" ;;
-    mcore_pe_be_vec)            tb="$tb pe-mcore.lo peigen.lo cofflink.lo" ;;
-    mcore_pe_le_vec)            tb="$tb pe-mcore.lo peigen.lo cofflink.lo" ;;
-    mcore_pei_be_vec)           tb="$tb pei-mcore.lo peigen.lo cofflink.lo" ;;
-    mcore_pei_le_vec)           tb="$tb pei-mcore.lo peigen.lo cofflink.lo" ;;
+    mcore_pe_be_vec)            tb="$tb pe-mcore.lo peigen.lo $coff" ;;
+    mcore_pe_le_vec)            tb="$tb pe-mcore.lo peigen.lo $coff" ;;
+    mcore_pei_be_vec)           tb="$tb pei-mcore.lo peigen.lo $coff" ;;
+    mcore_pei_le_vec)           tb="$tb pei-mcore.lo peigen.lo $coff" ;;
     mep_elf32_vec)              tb="$tb elf32-mep.lo elf32.lo $elf" ;;
     mep_elf32_le_vec)           tb="$tb elf32-mep.lo elf32.lo $elf" ;;
     metag_elf32_vec)            tb="$tb elf32-metag.lo elf32.lo $elf" ;;
     microblaze_elf32_vec)       tb="$tb elf32-microblaze.lo elf32.lo $elf" ;;
     microblaze_elf32_le_vec)    tb="$tb elf32-microblaze.lo elf32.lo $elf" ;;
-    mips_ecoff_be_vec)          tb="$tb coff-mips.lo ecoff.lo ecofflink.lo" ;;
-    mips_ecoff_le_vec)          tb="$tb coff-mips.lo ecoff.lo ecofflink.lo" ;;
-    mips_ecoff_bele_vec)        tb="$tb coff-mips.lo ecoff.lo ecofflink.lo" ;;
-    mips_elf32_be_vec)          tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
-    mips_elf32_le_vec)          tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
-    mips_elf32_n_be_vec)        tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    mips_elf32_n_le_vec)        tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    mips_elf32_ntrad_be_vec)    tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    mips_elf32_ntrad_le_vec)    tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    mips_elf32_ntradfbsd_be_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    mips_elf32_ntradfbsd_le_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    mips_elf32_trad_be_vec)     tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
-    mips_elf32_trad_le_vec)     tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
-    mips_elf32_tradfbsd_be_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
-    mips_elf32_tradfbsd_le_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
-    mips_elf32_vxworks_be_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
-    mips_elf32_vxworks_le_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
-    mips_elf64_be_vec)          tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    mips_elf64_le_vec)          tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    mips_elf64_trad_be_vec)     tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    mips_elf64_trad_le_vec)     tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    mips_elf64_tradfbsd_be_vec)  tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    mips_elf64_tradfbsd_le_vec)  tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    mips_pe_le_vec)             tb="$tb pe-mips.lo peigen.lo cofflink.lo" ;;
-    mips_pei_le_vec)            tb="$tb pei-mips.lo peigen.lo cofflink.lo" ;;
+    mips_ecoff_be_vec)          tb="$tb coff-mips.lo ecoff.lo $ecoff" ;;
+    mips_ecoff_le_vec)          tb="$tb coff-mips.lo ecoff.lo $ecoff" ;;
+    mips_ecoff_bele_vec)        tb="$tb coff-mips.lo ecoff.lo $ecoff" ;;
+    mips_elf32_be_vec)          tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;;
+    mips_elf32_le_vec)          tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;;
+    mips_elf32_n_be_vec)        tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;;
+    mips_elf32_n_le_vec)        tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;;
+    mips_elf32_ntrad_be_vec)    tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;;
+    mips_elf32_ntrad_le_vec)    tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;;
+    mips_elf32_ntradfbsd_be_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;;
+    mips_elf32_ntradfbsd_le_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;;
+    mips_elf32_trad_be_vec)     tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;;
+    mips_elf32_trad_le_vec)     tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;;
+    mips_elf32_tradfbsd_be_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;;
+    mips_elf32_tradfbsd_le_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;;
+    mips_elf32_vxworks_be_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;;
+    mips_elf32_vxworks_le_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;;
+    mips_elf64_be_vec)          tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;;
+    mips_elf64_le_vec)          tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;;
+    mips_elf64_trad_be_vec)     tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;;
+    mips_elf64_trad_le_vec)     tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;;
+    mips_elf64_tradfbsd_be_vec)  tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;;
+    mips_elf64_tradfbsd_le_vec)  tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;;
+    mips_pe_le_vec)             tb="$tb pe-mips.lo peigen.lo $coff" ;;
+    mips_pei_le_vec)            tb="$tb pei-mips.lo peigen.lo $coff" ;;
     mmix_elf64_vec)             tb="$tb elf64-mmix.lo elf64.lo $elf" target_size=64 ;;
     mmix_mmo_vec)                       tb="$tb mmo.lo" target_size=64 ;;
     mn10200_elf32_vec)          tb="$tb elf-m10200.lo elf32.lo $elf" ;;
     powerpc_elf64_le_vec)       tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;;
     powerpc_elf64_fbsd_vec)     tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;;
     powerpc_nlm32_vec)          tb="$tb nlm32-ppc.lo nlm32.lo nlm.lo" ;;
-    powerpc_pe_vec)             tb="$tb pe-ppc.lo peigen.lo cofflink.lo" ;;
-    powerpc_pe_le_vec)          tb="$tb pe-ppc.lo peigen.lo cofflink.lo" ;;
-    powerpc_pei_vec)            tb="$tb pei-ppc.lo peigen.lo cofflink.lo" ;;
-    powerpc_pei_le_vec)                 tb="$tb pei-ppc.lo peigen.lo cofflink.lo" ;;
-    powerpc_xcoff_vec)          tb="$tb coff-rs6000.lo xcofflink.lo" ;;
+    powerpc_pe_vec)             tb="$tb pe-ppc.lo peigen.lo $coff" ;;
+    powerpc_pe_le_vec)          tb="$tb pe-ppc.lo peigen.lo $coff" ;;
+    powerpc_pei_vec)            tb="$tb pei-ppc.lo peigen.lo $coff" ;;
+    powerpc_pei_le_vec)                 tb="$tb pei-ppc.lo peigen.lo $coff" ;;
+    powerpc_xcoff_vec)          tb="$tb coff-rs6000.lo $xcoff" ;;
     rl78_elf32_vec)             tb="$tb elf32-rl78.lo elf32.lo $elf" ;;
-    rs6000_xcoff64_vec)                 tb="$tb coff64-rs6000.lo xcofflink.lo aix5ppc-core.lo"; target_size=64 ;;
-    rs6000_xcoff64_aix_vec)     tb="$tb coff64-rs6000.lo xcofflink.lo aix5ppc-core.lo"; target_size=64 ;;
-    rs6000_xcoff_vec)           tb="$tb coff-rs6000.lo xcofflink.lo" ;;
+    rs6000_xcoff64_vec)                 tb="$tb coff64-rs6000.lo aix5ppc-core.lo $xcoff"; target_size=64 ;;
+    rs6000_xcoff64_aix_vec)     tb="$tb coff64-rs6000.lo aix5ppc-core.lo $xcoff"; target_size=64 ;;
+    rs6000_xcoff_vec)           tb="$tb coff-rs6000.lo $xcoff" ;;
     rx_elf32_be_vec)            tb="$tb elf32-rx.lo elf32.lo $elf" ;;
     rx_elf32_be_ns_vec)                 tb="$tb elf32-rx.lo elf32.lo $elf" ;;
     rx_elf32_le_vec)            tb="$tb elf32-rx.lo elf32.lo $elf" ;;
     s390_elf64_vec)             tb="$tb elf64-s390.lo elf64.lo $elf"; target_size=64 ;;
     score_elf32_be_vec)                 tb="$tb elf32-score.lo elf32-score7.lo elf32.lo $elf"; want64=true; target_size=64 ;;
     score_elf32_le_vec)                 tb="$tb elf32-score.lo elf32-score7.lo elf32.lo $elf"; want64=true; target_size=64 ;;
-    # FIXME: We include cofflink.lo not because it's needed for
-    # sh64_elf32[_le]_vec, but because we include sh_elf32[_le]_vec
-    # which needs it but does not list it.  Should be fixed in right place.
-    sh64_elf32_vec)             tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf cofflink.lo" target_size=64 ;;
-    sh64_elf32_le_vec)          tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf cofflink.lo" target_size=64 ;;
-    sh64_elf32_linux_vec)       tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf cofflink.lo" target_size=64 ;;
-    sh64_elf32_linux_be_vec)    tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf cofflink.lo" target_size=64 ;;
-    sh64_elf32_nbsd_vec)        tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf cofflink.lo" ;;
-    sh64_elf32_nbsd_le_vec)     tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf cofflink.lo" ;;
+    sh64_elf32_vec)             tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf" target_size=64 ;;
+    sh64_elf32_le_vec)          tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf" target_size=64 ;;
+    sh64_elf32_linux_vec)       tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf" target_size=64 ;;
+    sh64_elf32_linux_be_vec)    tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf" target_size=64 ;;
+    sh64_elf32_nbsd_vec)        tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf" ;;
+    sh64_elf32_nbsd_le_vec)     tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf" ;;
     sh64_elf64_vec)             tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
     sh64_elf64_le_vec)          tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
     sh64_elf64_linux_vec)       tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
     sh64_elf64_linux_be_vec)    tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
     sh64_elf64_nbsd_vec)        tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
     sh64_elf64_nbsd_le_vec)     tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
-    sh_coff_vec)                tb="$tb coff-sh.lo cofflink.lo" ;;
-    sh_coff_le_vec)             tb="$tb coff-sh.lo cofflink.lo" ;;
-    sh_coff_small_vec)          tb="$tb coff-sh.lo cofflink.lo" ;;
-    sh_coff_small_le_vec)       tb="$tb coff-sh.lo cofflink.lo" ;;
-    sh_elf32_vec)               tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;;
-    sh_elf32_le_vec)            tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;;
-    sh_elf32_fdpic_be_vec)      tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
-    sh_elf32_fdpic_le_vec)      tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
-    sh_elf32_linux_vec)                 tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
-    sh_elf32_linux_be_vec)      tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
-    sh_elf32_nbsd_vec)          tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
-    sh_elf32_nbsd_le_vec)       tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
-    sh_elf32_symbian_le_vec)    tb="$tb elf32-sh-symbian.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;;
-    sh_elf32_vxworks_vec)       tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;;
-    sh_elf32_vxworks_le_vec)    tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;;
-    sh_pe_le_vec)               tb="$tb pe-sh.lo coff-sh.lo peigen.lo cofflink.lo" ;;
-    sh_pei_le_vec)              tb="$tb pei-sh.lo coff-sh.lo peigen.lo cofflink.lo" ;;
+    sh_coff_vec)                tb="$tb coff-sh.lo $coff" ;;
+    sh_coff_le_vec)             tb="$tb coff-sh.lo $coff" ;;
+    sh_coff_small_vec)          tb="$tb coff-sh.lo $coff" ;;
+    sh_coff_small_le_vec)       tb="$tb coff-sh.lo $coff" ;;
+    sh_elf32_vec)               tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo $coff" ;;
+    sh_elf32_le_vec)            tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo $coff" ;;
+    sh_elf32_fdpic_be_vec)      tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo $coff" ;;
+    sh_elf32_fdpic_le_vec)      tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo $coff" ;;
+    sh_elf32_linux_vec)                 tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo $coff" ;;
+    sh_elf32_linux_be_vec)      tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo $coff" ;;
+    sh_elf32_nbsd_vec)          tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo $coff" ;;
+    sh_elf32_nbsd_le_vec)       tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo $coff" ;;
+    sh_elf32_symbian_le_vec)    tb="$tb elf32-sh-symbian.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo $coff" ;;
+    sh_elf32_vxworks_vec)       tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo $coff" ;;
+    sh_elf32_vxworks_le_vec)    tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo $coff" ;;
+    sh_pe_le_vec)               tb="$tb pe-sh.lo coff-sh.lo peigen.lo $coff" ;;
+    sh_pei_le_vec)              tb="$tb pei-sh.lo coff-sh.lo peigen.lo $coff" ;;
     sparc_aout_le_vec)          tb="$tb aout-sparcle.lo aout32.lo" ;;
     sparc_aout_linux_vec)       tb="$tb sparclinux.lo aout32.lo" ;;
     sparc_aout_lynx_vec)        tb="$tb sparclynx.lo lynx-core.lo aout32.lo" ;;
     sparc_aout_nbsd_vec)        tb="$tb sparcnetbsd.lo aout32.lo" ;;
     sparc_aout_sunos_be_vec)    tb="$tb sunos.lo aout32.lo" ;;
-    sparc_coff_vec)             tb="$tb coff-sparc.lo" ;;
-    sparc_coff_lynx_vec)        tb="$tb cf-sparclynx.lo lynx-core.lo" ;;
+    sparc_coff_vec)             tb="$tb coff-sparc.lo $coffgen" ;;
+    sparc_coff_lynx_vec)        tb="$tb cf-sparclynx.lo lynx-core.lo $coffgen" ;;
     sparc_elf32_vec)            tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;;
     sparc_elf32_sol2_vec)       tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;;
     sparc_elf32_vxworks_vec)    tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;;
     spu_elf32_vec)              tb="$tb elf32-spu.lo elf32.lo $elf" ;;
     sym_vec)                    tb="$tb xsym.lo" ;;
     tic30_aout_vec)             tb="$tb aout-tic30.lo" ;;
-    tic30_coff_vec)             tb="$tb coff-tic30.lo" ;;
-    tic4x_coff0_vec)            tb="$tb coff-tic4x.lo" ;;
-    tic4x_coff0_beh_vec)        tb="$tb coff-tic4x.lo" ;;
-    tic4x_coff1_vec)            tb="$tb coff-tic4x.lo" ;;
-    tic4x_coff1_beh_vec)        tb="$tb coff-tic4x.lo" ;;
-    tic4x_coff2_vec)            tb="$tb coff-tic4x.lo" ;;
-    tic4x_coff2_beh_vec)        tb="$tb coff-tic4x.lo" ;;
-    tic54x_coff0_vec)           tb="$tb coff-tic54x.lo" ;;
-    tic54x_coff0_beh_vec)       tb="$tb coff-tic54x.lo" ;;
-    tic54x_coff1_vec)           tb="$tb coff-tic54x.lo" ;;
-    tic54x_coff1_beh_vec)       tb="$tb coff-tic54x.lo" ;;
-    tic54x_coff2_vec)           tb="$tb coff-tic54x.lo" ;;
-    tic54x_coff2_beh_vec)       tb="$tb coff-tic54x.lo" ;;
+    tic30_coff_vec)             tb="$tb coff-tic30.lo $coffgen" ;;
+    tic4x_coff0_vec)            tb="$tb coff-tic4x.lo $coffgen" ;;
+    tic4x_coff0_beh_vec)        tb="$tb coff-tic4x.lo $coffgen" ;;
+    tic4x_coff1_vec)            tb="$tb coff-tic4x.lo $coffgen" ;;
+    tic4x_coff1_beh_vec)        tb="$tb coff-tic4x.lo $coffgen" ;;
+    tic4x_coff2_vec)            tb="$tb coff-tic4x.lo $coffgen" ;;
+    tic4x_coff2_beh_vec)        tb="$tb coff-tic4x.lo $coffgen" ;;
+    tic54x_coff0_vec)           tb="$tb coff-tic54x.lo $coffgen" ;;
+    tic54x_coff0_beh_vec)       tb="$tb coff-tic54x.lo $coffgen" ;;
+    tic54x_coff1_vec)           tb="$tb coff-tic54x.lo $coffgen" ;;
+    tic54x_coff1_beh_vec)       tb="$tb coff-tic54x.lo $coffgen" ;;
+    tic54x_coff2_vec)           tb="$tb coff-tic54x.lo $coffgen" ;;
+    tic54x_coff2_beh_vec)       tb="$tb coff-tic54x.lo $coffgen" ;;
     tic6x_elf32_be_vec)                 tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
     tic6x_elf32_le_vec)                 tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
     tic6x_elf32_c6000_be_vec)   tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
     tic6x_elf32_c6000_le_vec)   tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
     tic6x_elf32_linux_be_vec)   tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
     tic6x_elf32_linux_le_vec)   tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
-    tic80_coff_vec)             tb="$tb coff-tic80.lo cofflink.lo" ;;
+    tic80_coff_vec)             tb="$tb coff-tic80.lo $coff" ;;
     tilegx_elf32_be_vec)        tb="$tb elf32-tilegx.lo elfxx-tilegx.lo elf32.lo $elf" ; target_size=32 ;;
     tilegx_elf32_le_vec)        tb="$tb elf32-tilegx.lo elfxx-tilegx.lo elf32.lo $elf" ; target_size=32 ;;
     tilegx_elf64_be_vec)        tb="$tb elf64-tilegx.lo elfxx-tilegx.lo elf64.lo $elf" ; target_size=64 ;;
@@ -15598,9 +15599,9 @@ do
     vax_aout_nbsd_vec)          tb="$tb vaxnetbsd.lo aout32.lo" ;;
     vax_elf32_vec)              tb="$tb elf32-vax.lo elf32.lo $elf" ;;
     visium_elf32_vec)           tb="$tb elf32-visium.lo elf32.lo $elf" ;;
-    w65_coff_vec)               tb="$tb coff-w65.lo reloc16.lo" ;;
-    we32k_coff_vec)             tb="$tb coff-we32k.lo" ;;
-    x86_64_coff_vec)            tb="$tb coff-x86_64.lo cofflink.lo"; target_size=64 ;;
+    w65_coff_vec)               tb="$tb coff-w65.lo reloc16.lo $coffgen" ;;
+    we32k_coff_vec)             tb="$tb coff-we32k.lo $coffgen" ;;
+    x86_64_coff_vec)            tb="$tb coff-x86_64.lo $coff"; target_size=64 ;;
     x86_64_elf32_vec)           tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo elf32.lo $elf"; target_size=64 ;;
     x86_64_elf32_nacl_vec)      tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo elf32.lo $elf"; target_size=64 ;;
     x86_64_elf64_vec)           tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
     x86_64_elf64_nacl_vec)      tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
     x86_64_elf64_sol2_vec)      tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
     x86_64_mach_o_vec)          tb="$tb mach-o-x86-64.lo" ;;
-    x86_64_pe_vec)              tb="$tb pe-x86_64.lo pex64igen.lo cofflink.lo"; target_size=64 ;;
-    x86_64_pe_be_vec)           tb="$tb pe-x86_64.lo pex64igen.lo cofflink.lo"; target_size=64 ;;
-    x86_64_pei_vec)             tb="$tb pei-x86_64.lo pex64igen.lo cofflink.lo"; target_size=64 ;;
+    x86_64_pe_vec)              tb="$tb pe-x86_64.lo pex64igen.lo $coff"; target_size=64 ;;
+    x86_64_pe_be_vec)           tb="$tb pe-x86_64.lo pex64igen.lo $coff"; target_size=64 ;;
+    x86_64_pei_vec)             tb="$tb pei-x86_64.lo pex64igen.lo $coff"; target_size=64 ;;
     xc16x_elf32_vec)            tb="$tb elf32-xc16x.lo elf32.lo $elf" ;;
     xgate_elf32_vec)            tb="$tb elf32-xgate.lo elf32.lo $elf" ;;
     xstormy16_elf32_vec)        tb="$tb elf32-xstormy16.lo elf32.lo $elf" ;;
     xtensa_elf32_be_vec)        tb="$tb xtensa-isa.lo xtensa-modules.lo elf32-xtensa.lo elf32.lo $elf" ;;
     xtensa_elf32_le_vec)        tb="$tb xtensa-isa.lo xtensa-modules.lo elf32-xtensa.lo elf32.lo $elf" ;;
-    z80_coff_vec)               tb="$tb coff-z80.lo reloc16.lo" ;;
-    z8k_coff_vec)               tb="$tb coff-z8k.lo reloc16.lo cofflink.lo" ;;
+    z80_coff_vec)               tb="$tb coff-z80.lo reloc16.lo $coffgen" ;;
+    z8k_coff_vec)               tb="$tb coff-z8k.lo reloc16.lo $coff" ;;
 
     # These appear out of order in targets.c
     srec_vec)                   tb="$tb srec.lo" ;;
index f9607401d2799ba234714844e1201fef69e4075b..1b709dcd28104ca123c836f468b5c2794fbc3b98 100644 (file)
@@ -677,7 +677,11 @@ selarchs="$f"
 tb=
 
 elf="elf.lo elflink.lo elf-attrs.lo elf-strtab.lo
-     elf-eh-frame.lo dwarf1.lo"
+     elf-eh-frame.lo dwarf1.lo dwarf2.lo"
+coffgen="coffgen.lo dwarf2.lo"
+coff="cofflink.lo $coffgen"
+ecoff="ecofflink.lo $coffgen"
+xcoff="xcofflink.lo $coffgen"
 
 for vec in $selvecs
 do
@@ -690,7 +694,7 @@ do
     aarch64_elf32_le_vec)       tb="$tb elf32-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf32.lo $elf"; target_size=64 ;;
     aarch64_elf64_be_vec)       tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
     aarch64_elf64_le_vec)       tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
-    alpha_ecoff_le_vec)                 tb="$tb coff-alpha.lo ecoff.lo ecofflink.lo"; target_size=64 ;;
+    alpha_ecoff_le_vec)                 tb="$tb coff-alpha.lo ecoff.lo $ecoff"; target_size=64 ;;
     alpha_elf64_vec)            tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
     alpha_elf64_fbsd_vec)       tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
     alpha_nlm32_vec)            tb="$tb nlm32-alpha.lo nlm32.lo nlm.lo"; target_size=64 ;;
@@ -707,8 +711,8 @@ do
     arm_aout_le_vec)            tb="$tb aout-arm.lo aout32.lo" ;;
     arm_aout_nbsd_vec)          tb="$tb armnetbsd.lo aout32.lo" ;;
     arm_aout_riscix_vec)        tb="$tb aout32.lo riscix.lo" ;;
-    arm_coff_be_vec)            tb="$tb coff-arm.lo cofflink.lo " ;;
-    arm_coff_le_vec)            tb="$tb coff-arm.lo cofflink.lo " ;;
+    arm_coff_be_vec)            tb="$tb coff-arm.lo $coff" ;;
+    arm_coff_le_vec)            tb="$tb coff-arm.lo $coff" ;;
     arm_elf32_be_vec)           tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
     arm_elf32_le_vec)           tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
     arm_elf32_nacl_be_vec)      tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
@@ -717,18 +721,18 @@ do
     arm_elf32_symbian_le_vec)   tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
     arm_elf32_vxworks_be_vec)   tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
     arm_elf32_vxworks_le_vec)   tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
-    arm_pe_be_vec)              tb="$tb pe-arm.lo peigen.lo cofflink.lo " ;;
-    arm_pe_le_vec)              tb="$tb pe-arm.lo peigen.lo cofflink.lo " ;;
-    arm_pe_epoc_be_vec)                 tb="$tb epoc-pe-arm.lo peigen.lo cofflink.lo " ;;
-    arm_pe_epoc_le_vec)                 tb="$tb epoc-pe-arm.lo peigen.lo cofflink.lo " ;;
-    arm_pe_wince_be_vec)        tb="$tb pe-arm-wince.lo pe-arm.lo peigen.lo cofflink.lo " ;;
-    arm_pe_wince_le_vec)        tb="$tb pe-arm-wince.lo pe-arm.lo peigen.lo cofflink.lo " ;;
-    arm_pei_be_vec)             tb="$tb pei-arm.lo peigen.lo cofflink.lo " ;;
-    arm_pei_le_vec)             tb="$tb pei-arm.lo peigen.lo cofflink.lo " ;;
-    arm_pei_epoc_be_vec)        tb="$tb epoc-pei-arm.lo peigen.lo cofflink.lo " ;;
-    arm_pei_epoc_le_vec)        tb="$tb epoc-pei-arm.lo peigen.lo cofflink.lo " ;;
-    arm_pei_wince_be_vec)       tb="$tb pei-arm-wince.lo pei-arm.lo peigen.lo cofflink.lo " ;;
-    arm_pei_wince_le_vec)       tb="$tb pei-arm-wince.lo pei-arm.lo peigen.lo cofflink.lo " ;;
+    arm_pe_be_vec)              tb="$tb pe-arm.lo peigen.lo $coff" ;;
+    arm_pe_le_vec)              tb="$tb pe-arm.lo peigen.lo $coff" ;;
+    arm_pe_epoc_be_vec)                 tb="$tb epoc-pe-arm.lo peigen.lo $coff" ;;
+    arm_pe_epoc_le_vec)                 tb="$tb epoc-pe-arm.lo peigen.lo $coff" ;;
+    arm_pe_wince_be_vec)        tb="$tb pe-arm-wince.lo pe-arm.lo peigen.lo $coff" ;;
+    arm_pe_wince_le_vec)        tb="$tb pe-arm-wince.lo pe-arm.lo peigen.lo $coff" ;;
+    arm_pei_be_vec)             tb="$tb pei-arm.lo peigen.lo $coff" ;;
+    arm_pei_le_vec)             tb="$tb pei-arm.lo peigen.lo $coff" ;;
+    arm_pei_epoc_be_vec)        tb="$tb epoc-pei-arm.lo peigen.lo $coff" ;;
+    arm_pei_epoc_le_vec)        tb="$tb epoc-pei-arm.lo peigen.lo $coff" ;;
+    arm_pei_wince_be_vec)       tb="$tb pei-arm-wince.lo pei-arm.lo peigen.lo $coff" ;;
+    arm_pei_wince_le_vec)       tb="$tb pei-arm-wince.lo pei-arm.lo peigen.lo $coff" ;;
     avr_elf32_vec)              tb="$tb elf32-avr.lo elf32.lo $elf" ;;
     bfin_elf32_vec)             tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
     bfin_elf32_fdpic_vec)       tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
@@ -751,9 +755,9 @@ do
     fr30_elf32_vec)             tb="$tb elf32-fr30.lo elf32.lo $elf" ;;
     frv_elf32_vec)              tb="$tb elf32-frv.lo elf32.lo $elf" ;;
     frv_elf32_fdpic_vec)        tb="$tb elf32-frv.lo elf32.lo $elf" ;;
-    h8300_coff_vec)             tb="$tb coff-h8300.lo reloc16.lo" ;;
+    h8300_coff_vec)             tb="$tb coff-h8300.lo reloc16.lo $coffgen" ;;
     h8300_elf32_vec)            tb="$tb elf32-h8300.lo elf32.lo $elf" ;;
-    h8500_coff_vec)             tb="$tb coff-h8500.lo reloc16.lo" ;;
+    h8500_coff_vec)             tb="$tb coff-h8500.lo reloc16.lo $coffgen" ;;
     hppa_elf32_vec)             tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
     hppa_elf32_linux_vec)       tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
     hppa_elf32_nbsd_vec)        tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
@@ -770,10 +774,10 @@ do
     i386_aout_mach3_vec)        tb="$tb i386mach3.lo aout32.lo" ;;
     i386_aout_nbsd_vec)                 tb="$tb i386netbsd.lo aout32.lo" ;;
     i386_aout_os9k_vec)                 tb="$tb i386os9k.lo aout32.lo" ;;
-    i386_coff_vec)              tb="$tb coff-i386.lo cofflink.lo" ;;
-    i386_coff_go32_vec)                 tb="$tb coff-go32.lo cofflink.lo" ;;
-    i386_coff_go32stubbed_vec)  tb="$tb coff-stgo32.lo cofflink.lo" ;;
-    i386_coff_lynx_vec)                 tb="$tb cf-i386lynx.lo cofflink.lo lynx-core.lo" ;;
+    i386_coff_vec)              tb="$tb coff-i386.lo $coff" ;;
+    i386_coff_go32_vec)                 tb="$tb coff-go32.lo $coff" ;;
+    i386_coff_go32stubbed_vec)  tb="$tb coff-stgo32.lo $coff" ;;
+    i386_coff_lynx_vec)                 tb="$tb cf-i386lynx.lo lynx-core.lo $coff" ;;
     i386_elf32_vec)             tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
     i386_elf32_fbsd_vec)        tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
     i386_elf32_nacl_vec)        tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
@@ -782,9 +786,9 @@ do
     i386_mach_o_vec)            tb="$tb mach-o-i386.lo" ;;
     i386_msdos_vec)             tb="$tb i386msdos.lo" ;;
     i386_nlm32_vec)             tb="$tb nlm32-i386.lo nlm32.lo nlm.lo" ;;
-    i386_pe_vec)                tb="$tb pe-i386.lo peigen.lo cofflink.lo" ;;
-    i386_pei_vec)               tb="$tb pei-i386.lo peigen.lo cofflink.lo" ;;
-    i860_coff_vec)              tb="$tb coff-i860.lo cofflink.lo" ;;
+    i386_pe_vec)                tb="$tb pe-i386.lo peigen.lo $coff" ;;
+    i386_pei_vec)               tb="$tb pei-i386.lo peigen.lo $coff" ;;
+    i860_coff_vec)              tb="$tb coff-i860.lo $coff" ;;
     i860_elf32_vec)             tb="$tb elf32-i860.lo elf32.lo $elf" ;;
     i860_elf32_le_vec)          tb="$tb elf32-i860.lo elf32.lo $elf" ;;
     i960_elf32_vec)             tb="$tb elf32-i960.lo elf32.lo $elf" ;;
@@ -794,9 +798,9 @@ do
     ia64_elf64_le_vec)          tb="$tb elf64-ia64.lo elfxx-ia64.lo elf64.lo $elf"; target_size=64 ;;
     ia64_elf64_hpux_be_vec)     tb="$tb elf64-ia64.lo elfxx-ia64.lo elf64.lo $elf"; target_size=64 ;;
     ia64_elf64_vms_vec)                 tb="$tb elf64-ia64-vms.lo elf64-ia64.lo elfxx-ia64.lo elf64.lo vms-lib.lo vms-misc.lo $elf"; target_size=64 ;;
-    ia64_pei_vec)               tb="$tb pei-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
-    icoff_be_vec)               tb="$tb coff-i960.lo cofflink.lo" ;;
-    icoff_le_vec)               tb="$tb coff-i960.lo cofflink.lo" ;;
+    ia64_pei_vec)               tb="$tb pei-ia64.lo pepigen.lo $coff"; target_size=64 ;;
+    icoff_be_vec)               tb="$tb coff-i960.lo $coff" ;;
+    icoff_le_vec)               tb="$tb coff-i960.lo $coff" ;;
     ieee_vec)                   tb="$tb ieee.lo" ;;
     ip2k_elf32_vec)             tb="$tb elf32-ip2k.lo elf32.lo $elf" ;;
     iq2000_elf32_vec)           tb="$tb elf32-iq2000.lo elf32.lo $elf" ;;
@@ -819,56 +823,56 @@ do
     m68k_aout_linux_vec)        tb="$tb m68klinux.lo aout32.lo" ;;
     m68k_aout_nbsd_vec)                 tb="$tb m68knetbsd.lo aout32.lo" ;;
     m68k_aout_newsos3_vec)      tb="$tb newsos3.lo aout32.lo" ;;
-    m68k_coff_vec)              tb="$tb coff-m68k.lo cofflink.lo" ;;
-    m68k_coff_apollo_vec)       tb="$tb coff-apollo.lo" ;;
-    m68k_coff_aux_vec)          tb="$tb coff-aux.lo coff-m68k.lo cofflink.lo" ;;
-    m68k_coff_sysv_vec)                 tb="$tb coff-svm68k.lo cofflink.lo" ;;
-    m68k_coff_un_vec)           tb="$tb coff-u68k.lo coff-m68k.lo cofflink.lo" ;;
+    m68k_coff_vec)              tb="$tb coff-m68k.lo $coff" ;;
+    m68k_coff_apollo_vec)       tb="$tb coff-apollo.lo $coffgen" ;;
+    m68k_coff_aux_vec)          tb="$tb coff-aux.lo coff-m68k.lo $coff" ;;
+    m68k_coff_sysv_vec)                 tb="$tb coff-svm68k.lo $coff" ;;
+    m68k_coff_un_vec)           tb="$tb coff-u68k.lo coff-m68k.lo $coff" ;;
     m68k_elf32_vec)             tb="$tb elf32-m68k.lo elf32.lo $elf" ;;
     m68k_versados_vec)          tb="$tb versados.lo" ;;
     m88k_aout_mach3_vec)        tb="$tb m88kmach3.lo aout32.lo" ;;
     m88k_aout_obsd_vec)                 tb="$tb m88kopenbsd.lo aout32.lo" ;;
-    m88k_coff_bcs_vec)          tb="$tb coff-m88k.lo" ;;
+    m88k_coff_bcs_vec)          tb="$tb coff-m88k.lo $coffgen" ;;
     m88k_elf32_vec)             tb="$tb elf32-m88k.lo elf32.lo $elf" ;;
-    mach_o_be_vec)              tb="$tb mach-o.lo" ;;
-    mach_o_le_vec)              tb="$tb mach-o.lo" ;;
-    mach_o_fat_vec)             tb="$tb mach-o.lo" ;;
+    mach_o_be_vec)              tb="$tb mach-o.lo dwarf2.lo" ;;
+    mach_o_le_vec)              tb="$tb mach-o.lo dwarf2.lo" ;;
+    mach_o_fat_vec)             tb="$tb mach-o.lo dwarf2.lo" ;;
     mcore_elf32_be_vec)                 tb="$tb elf32-mcore.lo elf32.lo $elf" ;;
     mcore_elf32_le_vec)                 tb="$tb elf32-mcore.lo elf32.lo $elf" ;;
-    mcore_pe_be_vec)            tb="$tb pe-mcore.lo peigen.lo cofflink.lo" ;;
-    mcore_pe_le_vec)            tb="$tb pe-mcore.lo peigen.lo cofflink.lo" ;;
-    mcore_pei_be_vec)           tb="$tb pei-mcore.lo peigen.lo cofflink.lo" ;;
-    mcore_pei_le_vec)           tb="$tb pei-mcore.lo peigen.lo cofflink.lo" ;;
+    mcore_pe_be_vec)            tb="$tb pe-mcore.lo peigen.lo $coff" ;;
+    mcore_pe_le_vec)            tb="$tb pe-mcore.lo peigen.lo $coff" ;;
+    mcore_pei_be_vec)           tb="$tb pei-mcore.lo peigen.lo $coff" ;;
+    mcore_pei_le_vec)           tb="$tb pei-mcore.lo peigen.lo $coff" ;;
     mep_elf32_vec)              tb="$tb elf32-mep.lo elf32.lo $elf" ;;
     mep_elf32_le_vec)           tb="$tb elf32-mep.lo elf32.lo $elf" ;;
     metag_elf32_vec)            tb="$tb elf32-metag.lo elf32.lo $elf" ;;
     microblaze_elf32_vec)       tb="$tb elf32-microblaze.lo elf32.lo $elf" ;;
     microblaze_elf32_le_vec)    tb="$tb elf32-microblaze.lo elf32.lo $elf" ;;
-    mips_ecoff_be_vec)          tb="$tb coff-mips.lo ecoff.lo ecofflink.lo" ;;
-    mips_ecoff_le_vec)          tb="$tb coff-mips.lo ecoff.lo ecofflink.lo" ;;
-    mips_ecoff_bele_vec)        tb="$tb coff-mips.lo ecoff.lo ecofflink.lo" ;;
-    mips_elf32_be_vec)          tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
-    mips_elf32_le_vec)          tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
-    mips_elf32_n_be_vec)        tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    mips_elf32_n_le_vec)        tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    mips_elf32_ntrad_be_vec)    tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    mips_elf32_ntrad_le_vec)    tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    mips_elf32_ntradfbsd_be_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    mips_elf32_ntradfbsd_le_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    mips_elf32_trad_be_vec)     tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
-    mips_elf32_trad_le_vec)     tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
-    mips_elf32_tradfbsd_be_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
-    mips_elf32_tradfbsd_le_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
-    mips_elf32_vxworks_be_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
-    mips_elf32_vxworks_le_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
-    mips_elf64_be_vec)          tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    mips_elf64_le_vec)          tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    mips_elf64_trad_be_vec)     tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    mips_elf64_trad_le_vec)     tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    mips_elf64_tradfbsd_be_vec)  tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    mips_elf64_tradfbsd_le_vec)  tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    mips_pe_le_vec)             tb="$tb pe-mips.lo peigen.lo cofflink.lo" ;;
-    mips_pei_le_vec)            tb="$tb pei-mips.lo peigen.lo cofflink.lo" ;;
+    mips_ecoff_be_vec)          tb="$tb coff-mips.lo ecoff.lo $ecoff" ;;
+    mips_ecoff_le_vec)          tb="$tb coff-mips.lo ecoff.lo $ecoff" ;;
+    mips_ecoff_bele_vec)        tb="$tb coff-mips.lo ecoff.lo $ecoff" ;;
+    mips_elf32_be_vec)          tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;;
+    mips_elf32_le_vec)          tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;;
+    mips_elf32_n_be_vec)        tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;;
+    mips_elf32_n_le_vec)        tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;;
+    mips_elf32_ntrad_be_vec)    tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;;
+    mips_elf32_ntrad_le_vec)    tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;;
+    mips_elf32_ntradfbsd_be_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;;
+    mips_elf32_ntradfbsd_le_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;;
+    mips_elf32_trad_be_vec)     tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;;
+    mips_elf32_trad_le_vec)     tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;;
+    mips_elf32_tradfbsd_be_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;;
+    mips_elf32_tradfbsd_le_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;;
+    mips_elf32_vxworks_be_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;;
+    mips_elf32_vxworks_le_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;;
+    mips_elf64_be_vec)          tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;;
+    mips_elf64_le_vec)          tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;;
+    mips_elf64_trad_be_vec)     tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;;
+    mips_elf64_trad_le_vec)     tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;;
+    mips_elf64_tradfbsd_be_vec)  tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;;
+    mips_elf64_tradfbsd_le_vec)  tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;;
+    mips_pe_le_vec)             tb="$tb pe-mips.lo peigen.lo $coff" ;;
+    mips_pei_le_vec)            tb="$tb pei-mips.lo peigen.lo $coff" ;;
     mmix_elf64_vec)             tb="$tb elf64-mmix.lo elf64.lo $elf" target_size=64 ;;
     mmix_mmo_vec)                       tb="$tb mmo.lo" target_size=64 ;;
     mn10200_elf32_vec)          tb="$tb elf-m10200.lo elf32.lo $elf" ;;
@@ -902,15 +906,15 @@ do
     powerpc_elf64_le_vec)       tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;;
     powerpc_elf64_fbsd_vec)     tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;;
     powerpc_nlm32_vec)          tb="$tb nlm32-ppc.lo nlm32.lo nlm.lo" ;;
-    powerpc_pe_vec)             tb="$tb pe-ppc.lo peigen.lo cofflink.lo" ;;
-    powerpc_pe_le_vec)          tb="$tb pe-ppc.lo peigen.lo cofflink.lo" ;;
-    powerpc_pei_vec)            tb="$tb pei-ppc.lo peigen.lo cofflink.lo" ;;
-    powerpc_pei_le_vec)                 tb="$tb pei-ppc.lo peigen.lo cofflink.lo" ;;
-    powerpc_xcoff_vec)          tb="$tb coff-rs6000.lo xcofflink.lo" ;;
+    powerpc_pe_vec)             tb="$tb pe-ppc.lo peigen.lo $coff" ;;
+    powerpc_pe_le_vec)          tb="$tb pe-ppc.lo peigen.lo $coff" ;;
+    powerpc_pei_vec)            tb="$tb pei-ppc.lo peigen.lo $coff" ;;
+    powerpc_pei_le_vec)                 tb="$tb pei-ppc.lo peigen.lo $coff" ;;
+    powerpc_xcoff_vec)          tb="$tb coff-rs6000.lo $xcoff" ;;
     rl78_elf32_vec)             tb="$tb elf32-rl78.lo elf32.lo $elf" ;;
-    rs6000_xcoff64_vec)                 tb="$tb coff64-rs6000.lo xcofflink.lo aix5ppc-core.lo"; target_size=64 ;;
-    rs6000_xcoff64_aix_vec)     tb="$tb coff64-rs6000.lo xcofflink.lo aix5ppc-core.lo"; target_size=64 ;;
-    rs6000_xcoff_vec)           tb="$tb coff-rs6000.lo xcofflink.lo" ;;
+    rs6000_xcoff64_vec)                 tb="$tb coff64-rs6000.lo aix5ppc-core.lo $xcoff"; target_size=64 ;;
+    rs6000_xcoff64_aix_vec)     tb="$tb coff64-rs6000.lo aix5ppc-core.lo $xcoff"; target_size=64 ;;
+    rs6000_xcoff_vec)           tb="$tb coff-rs6000.lo $xcoff" ;;
     rx_elf32_be_vec)            tb="$tb elf32-rx.lo elf32.lo $elf" ;;
     rx_elf32_be_ns_vec)                 tb="$tb elf32-rx.lo elf32.lo $elf" ;;
     rx_elf32_le_vec)            tb="$tb elf32-rx.lo elf32.lo $elf" ;;
@@ -918,45 +922,42 @@ do
     s390_elf64_vec)             tb="$tb elf64-s390.lo elf64.lo $elf"; target_size=64 ;;
     score_elf32_be_vec)                 tb="$tb elf32-score.lo elf32-score7.lo elf32.lo $elf"; want64=true; target_size=64 ;;
     score_elf32_le_vec)                 tb="$tb elf32-score.lo elf32-score7.lo elf32.lo $elf"; want64=true; target_size=64 ;;
-    # FIXME: We include cofflink.lo not because it's needed for
-    # sh64_elf32[_le]_vec, but because we include sh_elf32[_le]_vec
-    # which needs it but does not list it.  Should be fixed in right place.
-    sh64_elf32_vec)             tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf cofflink.lo" target_size=64 ;;
-    sh64_elf32_le_vec)          tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf cofflink.lo" target_size=64 ;;
-    sh64_elf32_linux_vec)       tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf cofflink.lo" target_size=64 ;;
-    sh64_elf32_linux_be_vec)    tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf cofflink.lo" target_size=64 ;;
-    sh64_elf32_nbsd_vec)        tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf cofflink.lo" ;;
-    sh64_elf32_nbsd_le_vec)     tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf cofflink.lo" ;;
+    sh64_elf32_vec)             tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf" target_size=64 ;;
+    sh64_elf32_le_vec)          tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf" target_size=64 ;;
+    sh64_elf32_linux_vec)       tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf" target_size=64 ;;
+    sh64_elf32_linux_be_vec)    tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf" target_size=64 ;;
+    sh64_elf32_nbsd_vec)        tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf" ;;
+    sh64_elf32_nbsd_le_vec)     tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf" ;;
     sh64_elf64_vec)             tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
     sh64_elf64_le_vec)          tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
     sh64_elf64_linux_vec)       tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
     sh64_elf64_linux_be_vec)    tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
     sh64_elf64_nbsd_vec)        tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
     sh64_elf64_nbsd_le_vec)     tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
-    sh_coff_vec)                tb="$tb coff-sh.lo cofflink.lo" ;;
-    sh_coff_le_vec)             tb="$tb coff-sh.lo cofflink.lo" ;;
-    sh_coff_small_vec)          tb="$tb coff-sh.lo cofflink.lo" ;;
-    sh_coff_small_le_vec)       tb="$tb coff-sh.lo cofflink.lo" ;;
-    sh_elf32_vec)               tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;;
-    sh_elf32_le_vec)            tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;;
-    sh_elf32_fdpic_be_vec)      tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
-    sh_elf32_fdpic_le_vec)      tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
-    sh_elf32_linux_vec)                 tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
-    sh_elf32_linux_be_vec)      tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
-    sh_elf32_nbsd_vec)          tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
-    sh_elf32_nbsd_le_vec)       tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
-    sh_elf32_symbian_le_vec)    tb="$tb elf32-sh-symbian.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;;
-    sh_elf32_vxworks_vec)       tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;;
-    sh_elf32_vxworks_le_vec)    tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;;
-    sh_pe_le_vec)               tb="$tb pe-sh.lo coff-sh.lo peigen.lo cofflink.lo" ;;
-    sh_pei_le_vec)              tb="$tb pei-sh.lo coff-sh.lo peigen.lo cofflink.lo" ;;
+    sh_coff_vec)                tb="$tb coff-sh.lo $coff" ;;
+    sh_coff_le_vec)             tb="$tb coff-sh.lo $coff" ;;
+    sh_coff_small_vec)          tb="$tb coff-sh.lo $coff" ;;
+    sh_coff_small_le_vec)       tb="$tb coff-sh.lo $coff" ;;
+    sh_elf32_vec)               tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo $coff" ;;
+    sh_elf32_le_vec)            tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo $coff" ;;
+    sh_elf32_fdpic_be_vec)      tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo $coff" ;;
+    sh_elf32_fdpic_le_vec)      tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo $coff" ;;
+    sh_elf32_linux_vec)                 tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo $coff" ;;
+    sh_elf32_linux_be_vec)      tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo $coff" ;;
+    sh_elf32_nbsd_vec)          tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo $coff" ;;
+    sh_elf32_nbsd_le_vec)       tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo $coff" ;;
+    sh_elf32_symbian_le_vec)    tb="$tb elf32-sh-symbian.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo $coff" ;;
+    sh_elf32_vxworks_vec)       tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo $coff" ;;
+    sh_elf32_vxworks_le_vec)    tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo $coff" ;;
+    sh_pe_le_vec)               tb="$tb pe-sh.lo coff-sh.lo peigen.lo $coff" ;;
+    sh_pei_le_vec)              tb="$tb pei-sh.lo coff-sh.lo peigen.lo $coff" ;;
     sparc_aout_le_vec)          tb="$tb aout-sparcle.lo aout32.lo" ;;
     sparc_aout_linux_vec)       tb="$tb sparclinux.lo aout32.lo" ;;
     sparc_aout_lynx_vec)        tb="$tb sparclynx.lo lynx-core.lo aout32.lo" ;;
     sparc_aout_nbsd_vec)        tb="$tb sparcnetbsd.lo aout32.lo" ;;
     sparc_aout_sunos_be_vec)    tb="$tb sunos.lo aout32.lo" ;;
-    sparc_coff_vec)             tb="$tb coff-sparc.lo" ;;
-    sparc_coff_lynx_vec)        tb="$tb cf-sparclynx.lo lynx-core.lo" ;;
+    sparc_coff_vec)             tb="$tb coff-sparc.lo $coffgen" ;;
+    sparc_coff_lynx_vec)        tb="$tb cf-sparclynx.lo lynx-core.lo $coffgen" ;;
     sparc_elf32_vec)            tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;;
     sparc_elf32_sol2_vec)       tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;;
     sparc_elf32_vxworks_vec)    tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;;
@@ -967,26 +968,26 @@ do
     spu_elf32_vec)              tb="$tb elf32-spu.lo elf32.lo $elf" ;;
     sym_vec)                    tb="$tb xsym.lo" ;;
     tic30_aout_vec)             tb="$tb aout-tic30.lo" ;;
-    tic30_coff_vec)             tb="$tb coff-tic30.lo" ;;
-    tic4x_coff0_vec)            tb="$tb coff-tic4x.lo" ;;
-    tic4x_coff0_beh_vec)        tb="$tb coff-tic4x.lo" ;;
-    tic4x_coff1_vec)            tb="$tb coff-tic4x.lo" ;;
-    tic4x_coff1_beh_vec)        tb="$tb coff-tic4x.lo" ;;
-    tic4x_coff2_vec)            tb="$tb coff-tic4x.lo" ;;
-    tic4x_coff2_beh_vec)        tb="$tb coff-tic4x.lo" ;;
-    tic54x_coff0_vec)           tb="$tb coff-tic54x.lo" ;;
-    tic54x_coff0_beh_vec)       tb="$tb coff-tic54x.lo" ;;
-    tic54x_coff1_vec)           tb="$tb coff-tic54x.lo" ;;
-    tic54x_coff1_beh_vec)       tb="$tb coff-tic54x.lo" ;;
-    tic54x_coff2_vec)           tb="$tb coff-tic54x.lo" ;;
-    tic54x_coff2_beh_vec)       tb="$tb coff-tic54x.lo" ;;
+    tic30_coff_vec)             tb="$tb coff-tic30.lo $coffgen" ;;
+    tic4x_coff0_vec)            tb="$tb coff-tic4x.lo $coffgen" ;;
+    tic4x_coff0_beh_vec)        tb="$tb coff-tic4x.lo $coffgen" ;;
+    tic4x_coff1_vec)            tb="$tb coff-tic4x.lo $coffgen" ;;
+    tic4x_coff1_beh_vec)        tb="$tb coff-tic4x.lo $coffgen" ;;
+    tic4x_coff2_vec)            tb="$tb coff-tic4x.lo $coffgen" ;;
+    tic4x_coff2_beh_vec)        tb="$tb coff-tic4x.lo $coffgen" ;;
+    tic54x_coff0_vec)           tb="$tb coff-tic54x.lo $coffgen" ;;
+    tic54x_coff0_beh_vec)       tb="$tb coff-tic54x.lo $coffgen" ;;
+    tic54x_coff1_vec)           tb="$tb coff-tic54x.lo $coffgen" ;;
+    tic54x_coff1_beh_vec)       tb="$tb coff-tic54x.lo $coffgen" ;;
+    tic54x_coff2_vec)           tb="$tb coff-tic54x.lo $coffgen" ;;
+    tic54x_coff2_beh_vec)       tb="$tb coff-tic54x.lo $coffgen" ;;
     tic6x_elf32_be_vec)                 tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
     tic6x_elf32_le_vec)                 tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
     tic6x_elf32_c6000_be_vec)   tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
     tic6x_elf32_c6000_le_vec)   tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
     tic6x_elf32_linux_be_vec)   tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
     tic6x_elf32_linux_le_vec)   tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
-    tic80_coff_vec)             tb="$tb coff-tic80.lo cofflink.lo" ;;
+    tic80_coff_vec)             tb="$tb coff-tic80.lo $coff" ;;
     tilegx_elf32_be_vec)        tb="$tb elf32-tilegx.lo elfxx-tilegx.lo elf32.lo $elf" ; target_size=32 ;;
     tilegx_elf32_le_vec)        tb="$tb elf32-tilegx.lo elfxx-tilegx.lo elf32.lo $elf" ; target_size=32 ;;
     tilegx_elf64_be_vec)        tb="$tb elf64-tilegx.lo elfxx-tilegx.lo elf64.lo $elf" ; target_size=64 ;;
@@ -999,9 +1000,9 @@ do
     vax_aout_nbsd_vec)          tb="$tb vaxnetbsd.lo aout32.lo" ;;
     vax_elf32_vec)              tb="$tb elf32-vax.lo elf32.lo $elf" ;;
     visium_elf32_vec)           tb="$tb elf32-visium.lo elf32.lo $elf" ;;
-    w65_coff_vec)               tb="$tb coff-w65.lo reloc16.lo" ;;
-    we32k_coff_vec)             tb="$tb coff-we32k.lo" ;;
-    x86_64_coff_vec)            tb="$tb coff-x86_64.lo cofflink.lo"; target_size=64 ;;
+    w65_coff_vec)               tb="$tb coff-w65.lo reloc16.lo $coffgen" ;;
+    we32k_coff_vec)             tb="$tb coff-we32k.lo $coffgen" ;;
+    x86_64_coff_vec)            tb="$tb coff-x86_64.lo $coff"; target_size=64 ;;
     x86_64_elf32_vec)           tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo elf32.lo $elf"; target_size=64 ;;
     x86_64_elf32_nacl_vec)      tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo elf32.lo $elf"; target_size=64 ;;
     x86_64_elf64_vec)           tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
@@ -1009,16 +1010,16 @@ do
     x86_64_elf64_nacl_vec)      tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
     x86_64_elf64_sol2_vec)      tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
     x86_64_mach_o_vec)          tb="$tb mach-o-x86-64.lo" ;;
-    x86_64_pe_vec)              tb="$tb pe-x86_64.lo pex64igen.lo cofflink.lo"; target_size=64 ;;
-    x86_64_pe_be_vec)           tb="$tb pe-x86_64.lo pex64igen.lo cofflink.lo"; target_size=64 ;;
-    x86_64_pei_vec)             tb="$tb pei-x86_64.lo pex64igen.lo cofflink.lo"; target_size=64 ;;
+    x86_64_pe_vec)              tb="$tb pe-x86_64.lo pex64igen.lo $coff"; target_size=64 ;;
+    x86_64_pe_be_vec)           tb="$tb pe-x86_64.lo pex64igen.lo $coff"; target_size=64 ;;
+    x86_64_pei_vec)             tb="$tb pei-x86_64.lo pex64igen.lo $coff"; target_size=64 ;;
     xc16x_elf32_vec)            tb="$tb elf32-xc16x.lo elf32.lo $elf" ;;
     xgate_elf32_vec)            tb="$tb elf32-xgate.lo elf32.lo $elf" ;;
     xstormy16_elf32_vec)        tb="$tb elf32-xstormy16.lo elf32.lo $elf" ;;
     xtensa_elf32_be_vec)        tb="$tb xtensa-isa.lo xtensa-modules.lo elf32-xtensa.lo elf32.lo $elf" ;;
     xtensa_elf32_le_vec)        tb="$tb xtensa-isa.lo xtensa-modules.lo elf32-xtensa.lo elf32.lo $elf" ;;
-    z80_coff_vec)               tb="$tb coff-z80.lo reloc16.lo" ;;
-    z8k_coff_vec)               tb="$tb coff-z8k.lo reloc16.lo cofflink.lo" ;;
+    z80_coff_vec)               tb="$tb coff-z80.lo reloc16.lo $coffgen" ;;
+    z8k_coff_vec)               tb="$tb coff-z8k.lo reloc16.lo $coff" ;;
 
     # These appear out of order in targets.c
     srec_vec)                   tb="$tb srec.lo" ;;
index dc7866d6a217e3b0318515301ebcf390b4116234..3b6b93dcd3beeb548d244506e135b532a5bf25e7 100644 (file)
@@ -20,6 +20,7 @@
    MA 02110-1301, USA.  */
 
 #include "bfdlink.h"
+#include "coff-bfd.h"
 
 /* Object file tdata; access macros.  */
 
@@ -187,36 +188,6 @@ struct xcoff_tdata
    macro is only ever applied to an asymbol.  */
 #define coffsymbol(asymbol) ((coff_symbol_type *)(&((asymbol)->the_bfd)))
 
-/* The used_by_bfd field of a section may be set to a pointer to this
-   structure.  */
-
-struct coff_section_tdata
-{
-  /* The relocs, swapped into COFF internal form.  This may be NULL.  */
-  struct internal_reloc *relocs;
-  /* If this is TRUE, the relocs entry may not be freed.  */
-  bfd_boolean keep_relocs;
-  /* The section contents.  This may be NULL.  */
-  bfd_byte *contents;
-  /* If this is TRUE, the contents entry may not be freed.  */
-  bfd_boolean keep_contents;
-  /* Information cached by coff_find_nearest_line.  */
-  bfd_vma offset;
-  unsigned int i;
-  const char *function;
-  /* Optional information about a COMDAT entry; NULL if not COMDAT. */
-  struct coff_comdat_info *comdat;
-  int line_base;
-  /* A pointer used for .stab linking optimizations.  */
-  void * stab_info;
-  /* Available for individual backends.  */
-  void * tdata;
-};
-
-/* An accessor macro for the coff_section_tdata structure.  */
-#define coff_section_data(abfd, sec) \
-  ((struct coff_section_tdata *) (sec)->used_by_bfd)
-
 /* Tdata for sections in XCOFF files.  This is used by the linker.  */
 
 struct xcoff_section_tdata
@@ -320,8 +291,6 @@ extern long coff_canonicalize_symtab
   (bfd *, asymbol **);
 extern int coff_count_linenumbers
   (bfd *);
-extern struct coff_symbol_struct *coff_symbol_from
-  (bfd *, asymbol *);
 extern bfd_boolean coff_renumber_symbols
   (bfd *, int *);
 extern void coff_mangle_symbols
index d1c466a6d61de0d15a5c0c142c5ed7d47fd80290..d2edbf86bc6cdcce86497707f5199e0232f11e61 100644 (file)
@@ -24,6 +24,7 @@
    MA 02110-1301, USA.  */
 
 #include "bfdlink.h"
+#include "coff-bfd.h"
 
 /* Object file tdata; access macros.  */
 
@@ -191,36 +192,6 @@ struct xcoff_tdata
    macro is only ever applied to an asymbol.  */
 #define coffsymbol(asymbol) ((coff_symbol_type *)(&((asymbol)->the_bfd)))
 
-/* The used_by_bfd field of a section may be set to a pointer to this
-   structure.  */
-
-struct coff_section_tdata
-{
-  /* The relocs, swapped into COFF internal form.  This may be NULL.  */
-  struct internal_reloc *relocs;
-  /* If this is TRUE, the relocs entry may not be freed.  */
-  bfd_boolean keep_relocs;
-  /* The section contents.  This may be NULL.  */
-  bfd_byte *contents;
-  /* If this is TRUE, the contents entry may not be freed.  */
-  bfd_boolean keep_contents;
-  /* Information cached by coff_find_nearest_line.  */
-  bfd_vma offset;
-  unsigned int i;
-  const char *function;
-  /* Optional information about a COMDAT entry; NULL if not COMDAT. */
-  struct coff_comdat_info *comdat;
-  int line_base;
-  /* A pointer used for .stab linking optimizations.  */
-  void * stab_info;
-  /* Available for individual backends.  */
-  void * tdata;
-};
-
-/* An accessor macro for the coff_section_tdata structure.  */
-#define coff_section_data(abfd, sec) \
-  ((struct coff_section_tdata *) (sec)->used_by_bfd)
-
 /* Tdata for sections in XCOFF files.  This is used by the linker.  */
 
 struct xcoff_section_tdata
@@ -324,8 +295,6 @@ extern long coff_canonicalize_symtab
   (bfd *, asymbol **);
 extern int coff_count_linenumbers
   (bfd *);
-extern struct coff_symbol_struct *coff_symbol_from
-  (bfd *, asymbol *);
 extern bfd_boolean coff_renumber_symbols
   (bfd *, int *);
 extern void coff_mangle_symbols
index d7edc2b6837edf9eae69360054f978723ec7d663..a24034f119ab6d7eab69741cc1b52dc428b09dbd 100644 (file)
@@ -375,7 +375,7 @@ static reloc_howto_type howto_table[] =
       coffsym = (obj_symbols (abfd)                            \
                 + (cache_ptr->sym_ptr_ptr - symbols));         \
     else if (ptr)                                              \
-      coffsym = coff_symbol_from (abfd, ptr);                  \
+      coffsym = coff_symbol_from (ptr);                                \
     if (coffsym != NULL                                                \
        && coffsym->native->u.syment.n_scnum == 0)              \
       cache_ptr->addend = - coffsym->native->u.syment.n_value; \
index 169412f6808f265ac01878563b358d5b1f8843be..83e393d46a8cd942fbfb4294fd664ecb5ec1db50 100644 (file)
@@ -29,6 +29,7 @@ coff-alpha.c
 coff-apollo.c
 coff-arm.c
 coff-aux.c
+coff-bfd.c
 coff-go32.c
 coff-h8300.c
 coff-h8500.c
index ceab9032f1a9f90cf85f741b5a5588b972e188d0..3428a29f41cf0d51d73e12a028a5413e5b81f260 100644 (file)
@@ -1,3 +1,7 @@
+2014-12-10  Alan Modra  <amodra@gmail.com>
+
+       * objdump.c: #include "coff-bfd.h".
+
 2014-12-09  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>
 
        * od-elf32_avr.c (elf32_avr_dump_mem_usage): Fix device initialization.
index ee3a0840f0ee5948a2915215e258dd407c71830a..4c00732cd5cc5b3ebd4dcb716a2a80f06c0521b0 100644 (file)
@@ -51,6 +51,7 @@
 #include "sysdep.h"
 #include "bfd.h"
 #include "elf-bfd.h"
+#include "coff-bfd.h"
 #include "progress.h"
 #include "bucomm.h"
 #include "elfcomm.h"
index 7607418e8781b591599055b31659df2d7e645804..ce90a67e334b92b991c59d75d0944971e5e1307a 100644 (file)
@@ -1,3 +1,7 @@
+2014-12-10  Alan Modra  <amodra@gmail.com>
+
+       * ldmisc.c: #include "coff-bfd.h"
+
 2014-12-06  Eric Botcazou  <ebotcazou@adacore.com>
 
        * configure.tgt: Add Visium support.
index 5e1801321ea38ad5931373b2796fc870cfef1a5e..af2a044f68bc0e44ba3b8c14434f4a2a96aa3bc9 100644 (file)
@@ -35,6 +35,7 @@
 #include "ldmain.h"
 #include "ldfile.h"
 #include "elf-bfd.h"
+#include "coff-bfd.h"
 
 /*
  %% literal %