* targets.c (bfd_target): Make ar_max_namelen an unsigned char.
authorAlan Modra <amodra@gmail.com>
Mon, 6 Jun 2011 01:26:05 +0000 (01:26 +0000)
committerAlan Modra <amodra@gmail.com>
Mon, 6 Jun 2011 01:26:05 +0000 (01:26 +0000)
Add match_priority.
* configure.in: Bump bfd version.
* elfcode.h (elf_object_p): Delete hacks preventing match of
EM_NONE and ELFOSABI_NONE targets when a better match exists.
* elfxx-target.h (elf_match_priority): Define and use.
* format.c (bfd_check_format_matches): Use target match_priority
to choose best of multiple matching targets.  In cases with multiple
matches rerun _bfd_check_format if we don't choose the last match.
* aout-adobe.c, * aout-arm.c, * aout-target.h, * aout-tic30.c,
* binary.c, * bout.c, * coff-alpha.c, * coff-i386.c, * coff-i860.c,
* coff-i960.c, * coff-ia64.c, * coff-mips.c, * coff-or32.c,
* coff-ppc.c, * coff-rs6000.c, * coff-sh.c, * coff-tic30.c,
* coff-tic54x.c, * coff-x86_64.c, * coff64-rs6000.c, * coffcode.h,
* i386msdos.c, * i386os9k.c, * ieee.c, * ihex.c, * mach-o-target.c,
* mipsbsd.c, * mmo.c, * nlm-target.h, * oasys.c, * pdp11.c,
* pe-mips.c, * pef.c, * plugin.c, * ppcboot.c, * som.c, * srec.c,
* tekhex.c, * trad-core.c, * verilog.c, * versados.c, * vms-alpha.c,
* vms-lib.c, * xsym.c: Init match_priority field.
* configure: Regenerate.
* bfd-in2.h: Regenerate.

52 files changed:
bfd/ChangeLog
bfd/aout-adobe.c
bfd/aout-arm.c
bfd/aout-target.h
bfd/aout-tic30.c
bfd/bfd-in2.h
bfd/binary.c
bfd/bout.c
bfd/coff-alpha.c
bfd/coff-i386.c
bfd/coff-i860.c
bfd/coff-i960.c
bfd/coff-ia64.c
bfd/coff-mips.c
bfd/coff-or32.c
bfd/coff-ppc.c
bfd/coff-rs6000.c
bfd/coff-sh.c
bfd/coff-tic30.c
bfd/coff-tic54x.c
bfd/coff-x86_64.c
bfd/coff64-rs6000.c
bfd/coffcode.h
bfd/configure
bfd/configure.in
bfd/elfcode.h
bfd/elfxx-target.h
bfd/format.c
bfd/i386msdos.c
bfd/i386os9k.c
bfd/ieee.c
bfd/ihex.c
bfd/mach-o-target.c
bfd/mipsbsd.c
bfd/mmo.c
bfd/nlm-target.h
bfd/oasys.c
bfd/pdp11.c
bfd/pe-mips.c
bfd/pef.c
bfd/plugin.c
bfd/ppcboot.c
bfd/som.c
bfd/srec.c
bfd/targets.c
bfd/tekhex.c
bfd/trad-core.c
bfd/verilog.c
bfd/versados.c
bfd/vms-alpha.c
bfd/vms-lib.c
bfd/xsym.c

index e417b82..bd3895a 100644 (file)
@@ -1,3 +1,27 @@
+2011-06-06  Alan Modra  <amodra@gmail.com>
+
+       * targets.c (bfd_target): Make ar_max_namelen an unsigned char.
+       Add match_priority.
+       * configure.in: Bump bfd version.
+       * elfcode.h (elf_object_p): Delete hacks preventing match of
+       EM_NONE and ELFOSABI_NONE targets when a better match exists.
+       * elfxx-target.h (elf_match_priority): Define and use.
+       * format.c (bfd_check_format_matches): Use target match_priority
+       to choose best of multiple matching targets.  In cases with multiple
+       matches rerun _bfd_check_format if we don't choose the last match.
+       * aout-adobe.c, * aout-arm.c, * aout-target.h, * aout-tic30.c,
+       * binary.c, * bout.c, * coff-alpha.c, * coff-i386.c, * coff-i860.c,
+       * coff-i960.c, * coff-ia64.c, * coff-mips.c, * coff-or32.c,
+       * coff-ppc.c, * coff-rs6000.c, * coff-sh.c, * coff-tic30.c,
+       * coff-tic54x.c, * coff-x86_64.c, * coff64-rs6000.c, * coffcode.h,
+       * i386msdos.c, * i386os9k.c, * ieee.c, * ihex.c, * mach-o-target.c,
+       * mipsbsd.c, * mmo.c, * nlm-target.h, * oasys.c, * pdp11.c,
+       * pe-mips.c, * pef.c, * plugin.c, * ppcboot.c, * som.c, * srec.c,
+       * tekhex.c, * trad-core.c, * verilog.c, * versados.c, * vms-alpha.c,
+       * vms-lib.c, * xsym.c: Init match_priority field.
+       * configure: Regenerate.
+       * bfd-in2.h: Regenerate.
+
 2011-06-04  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR ld/12842
index ca0e003..bd38ea8 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD back-end for a.out.adobe binaries.
    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000,
-   2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
+   2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2011
    Free Software Foundation, Inc.
    Written by Cygnus Support.  Based on bout.c.
 
@@ -487,6 +487,7 @@ const bfd_target a_out_adobe_vec =
   '_',                         /* Symbol leading char.  */
   ' ',                         /* AR_pad_char.  */
   16,                          /* AR_max_namelen.  */
+  0,                           /* match priority.  */
 
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
index 9a5d155..fd93603 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD back-end for raw ARM a.out binaries.
    Copyright 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005,
-   2007, 2009, 2010 Free Software Foundation, Inc.
+   2007, 2009, 2010, 2011 Free Software Foundation, Inc.
    Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org)
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -477,6 +477,7 @@ const bfd_target aout_arm_little_vec =
   MY_symbol_leading_char,
   AR_PAD_CHAR,                  /* AR_pad_char.  */
   15,                           /* AR_max_namelen.  */
+  0,                           /* match priority.  */
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
   bfd_getl32, bfd_getl_signed_32, bfd_putl32,
   bfd_getl16, bfd_getl_signed_16, bfd_putl16,  /* Data.  */
@@ -516,8 +517,9 @@ const bfd_target aout_arm_big_vec =
    HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT | D_PAGED),
   (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE | SEC_DATA),
   MY_symbol_leading_char,
-  AR_PAD_CHAR,                                 /* AR_pad_char.  */
-  15,                                          /* AR_max_namelen.  */
+  AR_PAD_CHAR,                 /* AR_pad_char.  */
+  15,                          /* AR_max_namelen.  */
+  0,                           /* match priority.  */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* Data.  */
index 5162494..5c0d2ae 100644 (file)
@@ -1,6 +1,6 @@
 /* Define a target vector and some small routines for a variant of a.out.
    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-   2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010
+   2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011
    Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -627,6 +627,7 @@ const bfd_target MY (vec) =
   MY_symbol_leading_char,
   AR_PAD_CHAR,                 /* AR_pad_char.  */
   15,                          /* AR_max_namelen.  */
+  0,                           /* match priority.  */
 #ifdef TARGET_IS_BIG_ENDIAN_P
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
      bfd_getb32, bfd_getb_signed_32, bfd_putb32,
index 5d5c7e2..30900ba 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD back-end for TMS320C30 a.out binaries.
    Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009,
-   2010
+   2010, 2011
    Free Software Foundation, Inc.
    Contributed by Steven Haworth (steve@pm.cse.rmit.edu.au)
 
@@ -1080,6 +1080,7 @@ const bfd_target tic30_aout_vec =
   MY_symbol_leading_char,
   AR_PAD_CHAR,                 /* AR_pad_char.  */
   15,                          /* AR_max_namelen.  */
+  0,                           /* match priority.  */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* Data.  */
index 4fd71e6..368f820 100644 (file)
@@ -5581,7 +5581,11 @@ typedef struct bfd_target
   char ar_pad_char;
 
   /* The maximum number of characters in an archive header.  */
-  unsigned short ar_max_namelen;
+  unsigned char ar_max_namelen;
+
+  /* How well this target matches, used to select between various
+     possible targets when more than one target matches.  */
+  unsigned char match_priority;
 
   /* Entries for byte swapping for data. These are different from the
      other entry points, since they don't take a BFD as the first argument.
index 2af0293..ad93354 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD back-end for binary objects.
    Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-   2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
+   2004, 2005, 2006, 2007, 2009, 2011 Free Software Foundation, Inc.
    Written by Ian Lance Taylor, Cygnus Support, <ian@cygnus.com>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -326,6 +326,7 @@ const bfd_target binary_vec =
   0,                           /* symbol_leading_char */
   ' ',                         /* ar_pad_char */
   16,                          /* ar_max_namelen */
+  255,                         /* match priority.  */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* data */
index 34c1a6b..b76191b 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD back-end for Intel 960 b.out binaries.
    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
    Free Software Foundation, Inc.
    Written by Cygnus Support.
 
@@ -1409,7 +1409,7 @@ const bfd_target b_out_vec_big_host =
   '_',                         /* Symbol leading char.  */
   ' ',                         /* AR_pad_char.  */
   16,                          /* AR_max_namelen.  */
-
+  0,                           /* match priority.  */
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getl32, bfd_getl_signed_32, bfd_putl32,
      bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* Data.  */
@@ -1451,6 +1451,7 @@ const bfd_target b_out_vec_little_host =
   '_',                         /* Symbol leading char.  */
   ' ',                         /* AR_pad_char.  */
   16,                          /* AR_max_namelen.  */
+  0,                           /* match priority.  */
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
      bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* Data.  */
index 12b49ac..c4dfd8f 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD back-end for ALPHA Extended-Coff files.
    Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-   2003, 2004, 2005, 2007, 2008, 2009, 2010
+   2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011
    Free Software Foundation, Inc.
    Modified from coff-mips.c by Steve Chamberlain <sac@cygnus.com> and
    Ian Lance Taylor <ian@cygnus.com>.
@@ -2418,6 +2418,7 @@ const bfd_target ecoffalpha_little_vec =
   0,                           /* leading underscore */
   ' ',                         /* ar_pad_char */
   15,                          /* ar_max_namelen */
+  0,                           /* match priority.  */
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getl32, bfd_getl_signed_32, bfd_putl32,
      bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
index 57c47d0..425a0c1 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD back-end for Intel 386 COFF files.
    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-   2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
+   2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011
    Free Software Foundation, Inc.
    Written by Cygnus Support.
 
@@ -661,6 +661,7 @@ const bfd_target
 #endif
   '/',                         /* ar_pad_char */
   15,                          /* ar_max_namelen */
+  0,                           /* match priority.  */
 
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getl32, bfd_getl_signed_32, bfd_putl32,
index d50b070..9eb39a5 100644 (file)
@@ -677,6 +677,7 @@ const bfd_target
   '_',                         /* leading underscore */
   '/',                         /* ar_pad_char */
   15,                          /* ar_max_namelen */
+  0,                           /* match priority.  */
 
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getl32, bfd_getl_signed_32, bfd_putl32,
index d0374d2..928315f 100644 (file)
@@ -1,6 +1,7 @@
 /* BFD back-end for Intel 960 COFF files.
    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1997, 1999, 2000, 2001,
-   2002, 2003, 2004, 2005, 2007, 2008  Free Software Foundation, Inc.
+   2002, 2003, 2004, 2005, 2007, 2008, 2009, 2011
+   Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -656,6 +657,7 @@ const bfd_target icoff_big_vec =
   '_',                         /* leading underscore */
   '/',                         /* ar_pad_char */
   15,                          /* ar_max_namelen */
+  0,                           /* match priority.  */
 
 bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getl32, bfd_getl_signed_32, bfd_putl32,
index 38d9ac6..86e7617 100644 (file)
@@ -1,5 +1,5 @@
 /* BFD back-end for HP/Intel IA-64 COFF files.
-   Copyright 1999, 2000, 2001, 2002, 2005, 2007, 2008, 2009
+   Copyright 1999, 2000, 2001, 2002, 2005, 2007, 2008, 2009, 2011
    Free Software Foundation, Inc.
    Contributed by David Mosberger <davidm@hpl.hp.com>
 
@@ -176,6 +176,7 @@ const bfd_target
 #endif
   '/',                         /* ar_pad_char */
   15,                          /* ar_max_namelen */
+  0,                           /* match priority.  */
 
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getl32, bfd_getl_signed_32, bfd_putl32,
index 34fda3a..cbc172f 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD back-end for MIPS Extended-Coff files.
    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-   2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
+   2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2011
    Free Software Foundation, Inc.
    Original version by Per Bothner.
    Full support added by Ian Lance Taylor, ian@cygnus.com.
@@ -1436,6 +1436,7 @@ const bfd_target ecoff_little_vec =
   0,                           /* leading underscore */
   ' ',                         /* ar_pad_char */
   15,                          /* ar_max_namelen */
+  0,                           /* match priority.  */
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getl32, bfd_getl_signed_32, bfd_putl32,
      bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
@@ -1480,6 +1481,7 @@ const bfd_target ecoff_big_vec =
   0,                           /* leading underscore */
   ' ',                         /* ar_pad_char */
   15,                          /* ar_max_namelen */
+  0,                           /* match priority.  */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
      bfd_getb32, bfd_getb_signed_32, bfd_putb32,
      bfd_getb16, bfd_getb_signed_16, bfd_putb16,
@@ -1523,6 +1525,7 @@ const bfd_target ecoff_biglittle_vec =
   0,                           /* leading underscore */
   ' ',                         /* ar_pad_char */
   15,                          /* ar_max_namelen */
+  0,                           /* match priority.  */
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getl32, bfd_getl_signed_32, bfd_putl32,
      bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
index 30801fb..a9683df 100644 (file)
@@ -1,5 +1,5 @@
 /* BFD back-end for OpenRISC 1000 COFF binaries.
-   Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008
+   Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2011
    Free Software Foundation, Inc.
    Contributed by Ivan Guzvinec  <ivang@opencores.org>
 
@@ -594,6 +594,7 @@ const bfd_target or32coff_big_vec =
   '_',        /* Leading underscore.  */
   '/',        /* ar_pad_char.  */
   15,         /* ar_max_namelen.  */
+  0,          /* match priority.  */
 
   /* Data.  */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
index 69e10d8..b866d48 100644 (file)
@@ -2582,6 +2582,7 @@ const bfd_target TARGET_LITTLE_SYM =
   0,                           /* leading char */
   '/',                         /* ar_pad_char */
   15,                          /* ar_max_namelen??? FIXMEmgo */
+  0,                           /* match priority.  */
 
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
   bfd_getl32, bfd_getl_signed_32, bfd_putl32,
@@ -2641,6 +2642,7 @@ const bfd_target TARGET_BIG_SYM =
   0,                           /* leading char */
   '/',                         /* ar_pad_char */
   15,                          /* ar_max_namelen??? FIXMEmgo */
+  0,                           /* match priority.  */
 
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
index fa38321..c1b5c89 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD back-end for IBM RS/6000 "XCOFF" files.
    Copyright 1990-1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-   2008, 2009, 2010
+   2008, 2009, 2010, 2011
    Free Software Foundation, Inc.
    Written by Metin G. Ozisik, Mimi Phuong-Thao Vo, and John Gilmore.
    Archive support from Damon A. Permezel.
@@ -3986,6 +3986,7 @@ const bfd_target rs6000coff_vec =
     0,                         /* leading char */
     '/',                       /* ar_pad_char */
     15,                                /* ar_max_namelen */
+    0,                         /* match priority.  */
 
     /* data */
     bfd_getb64,
@@ -4239,6 +4240,7 @@ const bfd_target pmac_xcoff_vec =
     0,                         /* leading char */
     '/',                       /* ar_pad_char */
     15,                                /* ar_max_namelen */
+    0,                         /* match priority.  */
 
     /* data */
     bfd_getb64,
index b77af7c..e707add 100644 (file)
@@ -3185,6 +3185,7 @@ const bfd_target shcoff_small_vec =
   '_',                         /* leading symbol underscore */
   '/',                         /* ar_pad_char */
   15,                          /* ar_max_namelen */
+  0,                           /* match priority.  */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
@@ -3229,6 +3230,7 @@ const bfd_target shlcoff_small_vec =
   '_',                         /* leading symbol underscore */
   '/',                         /* ar_pad_char */
   15,                          /* ar_max_namelen */
+  0,                           /* match priority.  */
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
   bfd_getl32, bfd_getl_signed_32, bfd_putl32,
   bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
index 7670afe..497d340 100644 (file)
@@ -1,5 +1,5 @@
 /* BFD back-end for TMS320C30 coff binaries.
-   Copyright 1998, 1999, 2000, 2001, 2002, 2005, 2007, 2008
+   Copyright 1998, 1999, 2000, 2001, 2002, 2005, 2007, 2008, 2011
    Free Software Foundation, Inc.
    Contributed by Steven Haworth (steve@pm.cse.rmit.edu.au)
 
@@ -203,6 +203,7 @@ const bfd_target tic30_coff_vec =
   '_',                         /* leading symbol underscore */
   '/',                         /* ar_pad_char */
   15,                          /* ar_max_namelen */
+  0,                           /* match priority.  */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* data */
index 672897d..3c353da 100644 (file)
@@ -1,5 +1,5 @@
 /* BFD back-end for TMS320C54X coff binaries.
-   Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008
+   Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2011
    Free Software Foundation, Inc.
    Contributed by Timothy Wall (twall@cygnus.com)
 
@@ -446,6 +446,7 @@ const bfd_target tic54x_coff0_vec =
     '_',                               /* leading symbol underscore */
     '/',                               /* ar_pad_char */
     15,                                /* ar_max_namelen */
+    0,                         /* match priority.  */
     bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,
     bfd_getl16, bfd_getl_signed_16, bfd_putl16,        /* data */
@@ -490,6 +491,7 @@ const bfd_target tic54x_coff0_beh_vec =
     '_',                               /* leading symbol underscore */
     '/',                               /* ar_pad_char */
     15,                                /* ar_max_namelen */
+    0,                         /* match priority.  */
     bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,
     bfd_getl16, bfd_getl_signed_16, bfd_putl16,        /* data */
@@ -535,6 +537,7 @@ const bfd_target tic54x_coff1_vec =
     '_',                               /* leading symbol underscore */
     '/',                               /* ar_pad_char */
     15,                                /* ar_max_namelen */
+    0,                         /* match priority.  */
     bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,
     bfd_getl16, bfd_getl_signed_16, bfd_putl16,        /* data */
@@ -580,6 +583,7 @@ const bfd_target tic54x_coff1_beh_vec =
     '_',                               /* leading symbol underscore */
     '/',                               /* ar_pad_char */
     15,                                /* ar_max_namelen */
+    0,                         /* match priority.  */
     bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,
     bfd_getl16, bfd_getl_signed_16, bfd_putl16,        /* data */
@@ -625,6 +629,7 @@ const bfd_target tic54x_coff2_vec =
     '_',                               /* leading symbol underscore */
     '/',                               /* ar_pad_char */
     15,                                /* ar_max_namelen */
+    0,                         /* match priority.  */
     bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,
     bfd_getl16, bfd_getl_signed_16, bfd_putl16,        /* data */
@@ -670,6 +675,7 @@ const bfd_target tic54x_coff2_beh_vec =
     '_',                               /* leading symbol underscore */
     '/',                               /* ar_pad_char */
     15,                                /* ar_max_namelen */
+    0,                         /* match priority.  */
     bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,
     bfd_getl16, bfd_getl_signed_16, bfd_putl16,        /* data */
index c739d69..d8a8a2e 100644 (file)
@@ -1,5 +1,6 @@
 /* BFD back-end for AMD 64 COFF files.
-   Copyright 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+   Copyright 2006, 2007, 2008, 2009, 2010, 2011
+   Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -762,6 +763,7 @@ const bfd_target
 #endif
   '/',                         /* Ar_pad_char.  */
   15,                          /* Ar_max_namelen.  */
+  0,                           /* match priority.  */
 
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getl32, bfd_getl_signed_32, bfd_putl32,
index 1887bb9..ef4dfba 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD back-end for IBM RS/6000 "XCOFF64" files.
    Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-   2010
+   2010, 2011
    Free Software Foundation, Inc.
    Written Clinton Popetz.
    Contributed by Cygnus Support.
@@ -2622,6 +2622,7 @@ const bfd_target rs6000coff64_vec =
     0,                         /* leading char */
     '/',                       /* ar_pad_char */
     15,                                /* ar_max_namelen */
+    0,                         /* match priority.  */
 
     /* data */
     bfd_getb64,
@@ -2877,6 +2878,7 @@ const bfd_target aix5coff64_vec =
     0,                         /* leading char */
     '/',                       /* ar_pad_char */
     15,                                /* ar_max_namelen */
+    0,                         /* match priority.  */
 
     /* data */
     bfd_getb64,
index b6deddd..e71aadd 100644 (file)
@@ -1,6 +1,6 @@
 /* Support for the generic parts of most COFF variants, for BFD.
    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
    Free Software Foundation, Inc.
    Written by Cygnus Support.
 
@@ -5688,6 +5688,7 @@ const bfd_target VAR =                                                    \
   UNDER,                       /* Leading symbol underscore.  */       \
   '/',                         /* AR_pad_char.  */                     \
   15,                          /* AR_max_namelen.  */                  \
+  0,                           /* match priority.  */                  \
                                                                        \
   /* Data conversion functions.  */                                    \
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,                          \
@@ -5738,6 +5739,7 @@ const bfd_target VAR =                                                    \
   UNDER,                       /* Leading symbol underscore.  */       \
   '/',                         /* AR_pad_char.  */                     \
   15,                          /* AR_max_namelen.  */                  \
+  0,                           /* match priority.  */                  \
                                                                        \
   /* Data conversion functions.  */                                    \
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,                          \
@@ -5788,6 +5790,7 @@ const bfd_target VAR =                                                    \
   UNDER,                       /* Leading symbol underscore.  */       \
   '/',                         /* AR_pad_char.  */                     \
   15,                          /* AR_max_namelen.  */                  \
+  0,                           /* match priority.  */                  \
                                                                        \
   /* Data conversion functions.  */                                    \
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,                          \
index 2e8ece2..634e717 100755 (executable)
@@ -3988,7 +3988,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE=bfd
- VERSION=2.21.51
+ VERSION=2.21.52
 
 
 cat >>confdefs.h <<_ACEOF
index 7457646..2fa24d8 100644 (file)
@@ -8,7 +8,7 @@ AC_CONFIG_SRCDIR([libbfd.c])
 AC_CANONICAL_TARGET
 AC_ISC_POSIX
 
-AM_INIT_AUTOMAKE(bfd, 2.21.51)
+AM_INIT_AUTOMAKE(bfd, 2.21.52)
 
 dnl These must be called before LT_INIT, because it may want
 dnl to call AC_CHECK_PROG.
index d8833df..b7e0226 100644 (file)
@@ -499,7 +499,6 @@ elf_object_p (bfd *abfd)
   asection *s;
   bfd_size_type amt;
   const bfd_target *target;
-  const bfd_target * const *target_ptr;
 
   preserve.marker = NULL;
 
@@ -588,34 +587,9 @@ elf_object_p (bfd *abfd)
       && (ebd->elf_machine_alt1 == 0
          || i_ehdrp->e_machine != ebd->elf_machine_alt1)
       && (ebd->elf_machine_alt2 == 0
-         || i_ehdrp->e_machine != ebd->elf_machine_alt2))
-    {
-      if (ebd->elf_machine_code != EM_NONE)
-       goto got_wrong_format_error;
-
-      /* This is the generic ELF target.  Let it match any ELF target
-        for which we do not have a specific backend.  */
-      for (target_ptr = bfd_target_vector; *target_ptr != NULL; target_ptr++)
-       {
-         const struct elf_backend_data *back;
-
-         if ((*target_ptr)->flavour != bfd_target_elf_flavour)
-           continue;
-         back = xvec_get_elf_backend_data (*target_ptr);
-         if (back->s->arch_size != ARCH_SIZE)
-           continue;
-         if (back->elf_machine_code == i_ehdrp->e_machine
-             || (back->elf_machine_alt1 != 0
-                 && back->elf_machine_alt1 == i_ehdrp->e_machine)
-             || (back->elf_machine_alt2 != 0
-                 && back->elf_machine_alt2 == i_ehdrp->e_machine))
-           {
-             /* target_ptr is an ELF backend which matches this
-                object file, so reject the generic ELF target.  */
-             goto got_wrong_format_error;
-           }
-       }
-    }
+         || i_ehdrp->e_machine != ebd->elf_machine_alt2)
+      && ebd->elf_machine_code != EM_NONE)
+    goto got_wrong_format_error;
 
   if (i_ehdrp->e_type == ET_EXEC)
     abfd->flags |= EXEC_P;
@@ -633,43 +607,9 @@ elf_object_p (bfd *abfd)
     }
 
   if (ebd->elf_machine_code != EM_NONE
-      && i_ehdrp->e_ident[EI_OSABI] != ebd->elf_osabi)
-    {
-      if (ebd->elf_osabi != ELFOSABI_NONE)
-       goto got_wrong_format_error;
-
-      /* This is an ELFOSABI_NONE ELF target.  Let it match any ELF
-        target of the compatible machine for which we do not have a
-        backend with matching ELFOSABI.  */
-      for (target_ptr = bfd_target_vector;
-          *target_ptr != NULL;
-          target_ptr++)
-       {
-         const struct elf_backend_data *back;
-
-         /* Skip this target and targets with incompatible byte
-            order.  */
-         if (*target_ptr == target
-             || (*target_ptr)->flavour != bfd_target_elf_flavour
-             || (*target_ptr)->byteorder != target->byteorder
-             || ((*target_ptr)->header_byteorder
-                 != target->header_byteorder))
-           continue;
-
-         back = xvec_get_elf_backend_data (*target_ptr);
-         if (back->elf_osabi == i_ehdrp->e_ident[EI_OSABI]
-             && (back->elf_machine_code == i_ehdrp->e_machine
-                 || (back->elf_machine_alt1 != 0
-                     && back->elf_machine_alt1 == i_ehdrp->e_machine)
-                 || (back->elf_machine_alt2 != 0
-                     && back->elf_machine_alt2 == i_ehdrp->e_machine)))
-           {
-             /* target_ptr is an ELF backend which matches this
-                object file, so reject the ELFOSABI_NONE ELF target.  */
-             goto got_wrong_format_error;
-           }
-       }
-    }
+      && i_ehdrp->e_ident[EI_OSABI] != ebd->elf_osabi
+      && ebd->elf_osabi != ELFOSABI_NONE)
+    goto got_wrong_format_error;
 
   if (i_ehdrp->e_shoff != 0)
     {
index fab1b04..b92e2a6 100644 (file)
@@ -1,6 +1,7 @@
 /* Target definitions for NN-bit ELF
    Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-   2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+   2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+   Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
 #define elf_backend_is_function_type _bfd_elf_is_function_type
 #endif
 
+#ifndef elf_match_priority
+#define elf_match_priority \
+  (ELF_ARCH == bfd_arch_unknown ? 2 : ELF_OSABI == ELFOSABI_NONE ? 1 : 0)
+#endif
+
 extern const struct elf_size_info _bfd_elfNN_size_info;
 
 static struct elf_backend_data elfNN_bed =
@@ -811,6 +817,8 @@ const bfd_target TARGET_BIG_SYM =
      Chapter 7 (Formats & Protocols), Archive section sets this as 15.  */
   15,
 
+  elf_match_priority,
+
   /* Routines to byte-swap various sized integers from the data sections */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
     bfd_getb32, bfd_getb_signed_32, bfd_putb32,
@@ -907,6 +915,8 @@ const bfd_target TARGET_LITTLE_SYM =
      Chapter 7 (Formats & Protocols), Archive section sets this as 15.  */
   15,
 
+  elf_match_priority,
+
   /* Routines to byte-swap various sized integers from the data sections */
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
index 4d89a85..66b9051 100644 (file)
@@ -121,8 +121,8 @@ bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching)
   extern const bfd_target binary_vec;
   const bfd_target * const *target;
   const bfd_target **matching_vector = NULL;
-  const bfd_target *save_targ, *right_targ, *ar_right_targ;
-  int match_count;
+  const bfd_target *save_targ, *right_targ, *ar_right_targ, *match_targ;
+  int match_count, best_count, best_match;
   int ar_match_index;
 
   if (matching != NULL)
@@ -156,6 +156,9 @@ bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching)
 
   right_targ = 0;
   ar_right_targ = 0;
+  match_targ = 0;
+  best_match = 256;
+  best_count = 0;
 
   /* Presume the answer is yes.  */
   abfd->format = format;
@@ -194,7 +197,8 @@ bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching)
 
       /* Don't check the default target twice.  */
       if (*target == &binary_vec
-         || (!abfd->target_defaulted && *target == save_targ))
+         || (!abfd->target_defaulted && *target == save_targ)
+         || (*target)->match_priority > best_match)
        continue;
 
       abfd->xvec = *target;    /* Change BFD's target temporarily.  */
@@ -209,6 +213,8 @@ bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching)
       bfd_set_error (bfd_error_wrong_format);
 
       temp = BFD_SEND_FMT (abfd, _bfd_check_format, (abfd));
+      if (temp)
+       match_targ = temp;
 
       if (temp && (abfd->format != bfd_archive || bfd_has_map (abfd)))
        {
@@ -219,14 +225,18 @@ bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching)
             targets might match.  People who want those other targets
             have to set the GNUTARGET variable.  */
          if (temp == bfd_default_vector[0])
-           {
-             match_count = 1;
-             break;
-           }
+           goto ok_ret;
 
          if (matching_vector)
            matching_vector[match_count] = temp;
          match_count++;
+
+         if (temp->match_priority < best_match)
+           {
+             best_match = temp->match_priority;
+             best_count = 0;
+           }
+         best_count++;
        }
       else if (temp
               || (err = bfd_get_error ()) == bfd_error_wrong_object_format
@@ -245,6 +255,9 @@ bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching)
        goto err_ret;
     }
 
+  if (best_count == 1)
+    match_count = 1;
+
   if (match_count == 0)
     {
       /* Try partial matches.  */
@@ -287,9 +300,18 @@ bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching)
 
   if (match_count == 1)
     {
-    ok_ret:
-      abfd->xvec = right_targ;         /* Change BFD's target permanently.  */
+      abfd->xvec = right_targ;
+      /* If we come out of the loop knowing that the last target that
+        matched is the one we want, then ABFD should still be in a usable
+        state (except possibly for XVEC).  */
+      if (match_targ != right_targ)
+       {
+         if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
+           goto err_ret;
+         match_targ = BFD_SEND_FMT (abfd, _bfd_check_format, (abfd));
+       }
 
+    ok_ret:
       /* If the file was opened for update, then `output_has_begun'
         some time ago when the file was created.  Do not recompute
         sections sizes or alignments in _bfd_set_section_contents.
index 95d9775..9ff5fd3 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD back-end for MS-DOS executables.
    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2001, 2002,
-   2003, 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
+   2003, 2004, 2005, 2006, 2007, 2009, 2011 Free Software Foundation, Inc.
    Written by Bryan Ford of the University of Utah.
 
    Contributed by the Center for Software Science at the
@@ -188,6 +188,7 @@ const bfd_target i386msdos_vec =
     0,                         /* leading underscore */
     ' ',                               /* ar_pad_char */
     16,                                /* ar_max_namelen */
+    0,                         /* match priority.  */
     bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
     bfd_getl16, bfd_getl_signed_16, bfd_putl16,        /* data */
index a5e8920..5cbf927 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD back-end for os9000 i386 binaries.
    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001, 2002,
-   2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
+   2004, 2005, 2006, 2007, 2009, 2011 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -193,6 +193,7 @@ const bfd_target i386os9k_vec =
     0,                         /* symbol leading char */
     ' ',                               /* ar_pad_char */
     16,                                /* ar_max_namelen */
+    0,                         /* match priority.  */
 
     bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
index bb986c4..9494b35 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD back-end for ieee-695 objects.
    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011
    Free Software Foundation, Inc.
 
    Written by Steve Chamberlain of Cygnus Support.
@@ -3801,6 +3801,7 @@ const bfd_target ieee_vec =
   '_',                         /* Leading underscore.  */
   ' ',                         /* AR_pad_char.  */
   16,                          /* AR_max_namelen.  */
+  0,                           /* match priority.  */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* Data.  */
index 6a9816c..a92baaf 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD back-end for Intel Hex objects.
    Copyright 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-   2006, 2007, 2009 Free Software Foundation, Inc.
+   2006, 2007, 2009, 2011 Free Software Foundation, Inc.
    Written by Ian Lance Taylor of Cygnus Support <ian@cygnus.com>.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -957,6 +957,7 @@ const bfd_target ihex_vec =
   0,                           /* Leading underscore.  */
   ' ',                         /* AR_pad_char.  */
   16,                          /* AR_max_namelen.  */
+  0,                           /* match priority.  */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* Data.  */
index 64c7ddf..32dc335 100644 (file)
@@ -1,5 +1,5 @@
 /* Mach-O support for BFD.
-   Copyright 1999, 2000, 2001, 2002, 2005, 2007, 2008, 2009, 2010
+   Copyright 1999, 2000, 2001, 2002, 2005, 2007, 2008, 2009, 2010, 2011
    Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -118,6 +118,7 @@ const bfd_target TARGET_NAME =
   '_',                         /* symbol_leading_char.  */
   ' ',                         /* ar_pad_char.  */
   16,                          /* ar_max_namelen.  */
+  0,                           /* match priority.  */
 
 #if TARGET_BIG_ENDIAN
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
index 004ef6e..915e7bf 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD backend for MIPS BSD (a.out) binaries.
    Copyright 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-   2005, 2007, 2009 Free Software Foundation, Inc.
+   2005, 2007, 2009, 2011 Free Software Foundation, Inc.
    Written by Ralph Campbell.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -426,6 +426,7 @@ const bfd_target aout_mips_little_vec =
     MY_symbol_leading_char,
     ' ',                               /* ar_pad_char */
     15,                                /* ar_max_namelen */
+    0,                         /* match priority.  */
     bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
     bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
@@ -467,6 +468,7 @@ const bfd_target aout_mips_big_vec =
     MY_symbol_leading_char,
     ' ',                               /* ar_pad_char */
     15,                                /* ar_max_namelen */
+    0,                         /* match priority.  */
     bfd_getb64, bfd_getb_signed_64, bfd_putb64,
     bfd_getb32, bfd_getb_signed_32, bfd_putb32,
     bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
index 8c72788..c22790d 100644 (file)
--- a/bfd/mmo.c
+++ b/bfd/mmo.c
@@ -1,5 +1,5 @@
 /* BFD back-end for mmo objects (MMIX-specific object-format).
-   Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+   Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011
    Free Software Foundation, Inc.
    Written by Hans-Peter Nilsson (hp@bitrange.com).
    Infrastructure and other bits originally copied from srec.c and
@@ -3238,6 +3238,7 @@ const bfd_target bfd_mmo_vec =
   0,                           /* leading underscore */
   ' ',                         /* ar_pad_char */
   16,                          /* ar_max_namelen */
+  0,                           /* match priority.  */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* data */
index add6937..f38b16e 100644 (file)
@@ -1,6 +1,6 @@
 /* Target definitions for 32/64-bit NLM (NetWare Loadable Module)
    Copyright 1993, 1994, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-   2005, 2007, 2009 Free Software Foundation, Inc.
+   2005, 2007, 2009, 2011 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -109,6 +109,7 @@ const bfd_target TARGET_BIG_SYM =
      of the archiver and should be independently tunable.  This value is
      a WAG (wild a** guess).  */
   15,
+  0,                           /* match priority.  */
 
   /* Routines to byte-swap various sized integers from the data sections.  */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
@@ -202,6 +203,7 @@ const bfd_target TARGET_LITTLE_SYM =
      of the archiver and should be independently tunable.  This value is
      a WAG (wild a** guess).  */
   15,
+  0,                           /* match priority.  */
 
   /* Routines to byte-swap various sized integers from the data sections.  */
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
index 1f51449..e58f0d0 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD back-end for oasys objects.
    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2001,
-   2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+   2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011
    Free Software Foundation, Inc.
    Written by Steve Chamberlain of Cygnus Support, <sac@cygnus.com>.
 
@@ -1224,6 +1224,7 @@ const bfd_target oasys_vec =
   0,                           /* Leading underscore.  */
   ' ',                         /* AR_pad_char.  */
   16,                          /* AR_max_namelen.  */
+  0,                           /* match priority.  */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* Data.  */
index 3821037..8cb87e4 100644 (file)
@@ -1,5 +1,5 @@
 /* BFD back-end for PDP-11 a.out binaries.
-   Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+   Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011
    Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -4511,6 +4511,7 @@ const bfd_target MY (vec) =
   MY_symbol_leading_char,
   AR_PAD_CHAR,                 /* AR_pad_char.  */
   15,                          /* AR_max_namelen.  */
+  0,                           /* match priority.  */
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getp32, bfd_getp_signed_32, bfd_putp32,
      bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* Data.  */
index 42e4e83..2025e7d 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD back-end for MIPS PE COFF files.
    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-   2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
+   2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011
    Free Software Foundation, Inc.
    Modified from coff-i386.c by DJ Delorie, dj@cygnus.com
 
@@ -890,6 +890,7 @@ const bfd_target
 #endif
   '/',                         /* AR_pad_char.  */
   15,                          /* AR_max_namelen.  */
+  0,                           /* match priority.  */
 
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getl32, bfd_getl_signed_32, bfd_putl32,
index dcfda05..6db7301 100644 (file)
--- a/bfd/pef.c
+++ b/bfd/pef.c
@@ -1015,6 +1015,7 @@ const bfd_target pef_vec =
   0,                           /* Symbol_leading_char.  */
   ' ',                         /* AR_pad_char.  */
   16,                          /* AR_max_namelen.  */
+  0,                           /* match priority.  */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* Data.  */
@@ -1167,6 +1168,7 @@ const bfd_target pef_xlib_vec =
   0,                           /* Symbol_leading_char.  */
   ' ',                         /* AR_pad_char.  */
   16,                          /* AR_max_namelen.  */
+  0,                           /* match priority.  */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* Data.  */
index dde61c8..5d34f85 100644 (file)
@@ -1,5 +1,5 @@
 /* Plugin support for BFD.
-   Copyright 2009
+   Copyright 2009, 2010, 2011
    Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -478,6 +478,7 @@ const bfd_target plugin_vec =
   0,                           /* symbol_leading_char.  */
   '/',                         /* ar_pad_char.  */
   15,                          /* ar_max_namelen.  */
+  0,                           /* match priority.  */
 
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
   bfd_getl32, bfd_getl_signed_32, bfd_putl32,
index 853ee88..a970436 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD back-end for PPCbug boot records.
    Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-   2007, 2008, 2009 Free Software Foundation, Inc.
+   2007, 2008, 2009, 2011 Free Software Foundation, Inc.
    Written by Michael Meissner, Cygnus Support, <meissner@cygnus.com>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -507,6 +507,7 @@ const bfd_target ppcboot_vec =
   0,                           /* symbol_leading_char */
   ' ',                         /* ar_pad_char */
   16,                          /* ar_max_namelen */
+  0,                           /* match priority.  */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* data */
index a18c869..a642231 100644 (file)
--- a/bfd/som.c
+++ b/bfd/som.c
@@ -6768,6 +6768,7 @@ const bfd_target som_vec =
   0,
   '/',                         /* AR_pad_char.  */
   14,                          /* AR_max_namelen.  */
+  0,                           /* match priority.  */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* Data.  */
index 1251a7e..6d4de1a 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD back-end for s-record objects.
    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2011
    Free Software Foundation, Inc.
    Written by Steve Chamberlain of Cygnus Support <sac@cygnus.com>.
 
@@ -1280,6 +1280,7 @@ const bfd_target srec_vec =
   0,                           /* Leading underscore.  */
   ' ',                         /* AR_pad_char.  */
   16,                          /* AR_max_namelen.  */
+  0,                           /* match priority.  */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* Data.  */
@@ -1335,6 +1336,7 @@ const bfd_target symbolsrec_vec =
   0,                           /* Leading underscore.  */
   ' ',                         /* AR_pad_char.  */
   16,                          /* AR_max_namelen.  */
+  0,                           /* match priority.  */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* Data.  */
index 47341af..0400429 100644 (file)
@@ -208,7 +208,11 @@ DESCRIPTION
 .  char ar_pad_char;
 .
 .  {* The maximum number of characters in an archive header.  *}
-.  unsigned short ar_max_namelen;
+.  unsigned char ar_max_namelen;
+.
+.  {* How well this target matches, used to select between various
+.     possible targets when more than one target matches.  *}
+.  unsigned char match_priority;
 .
 .  {* Entries for byte swapping for data. These are different from the
 .     other entry points, since they don't take a BFD as the first argument.
index 2204ebb..376569a 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD backend for Extended Tektronix Hex Format  objects.
    Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002,
-   2003, 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
+   2003, 2004, 2005, 2006, 2007, 2009, 2011 Free Software Foundation, Inc.
    Written by Steve Chamberlain of Cygnus Support <sac@cygnus.com>.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -972,6 +972,7 @@ const bfd_target tekhex_vec =
   0,                           /* Leading underscore.  */
   ' ',                         /* AR_pad_char.  */
   16,                          /* AR_max_namelen.  */
+  0,                           /* match priority.  */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* Data.  */
index e06b561..4b9d14d 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD back end for traditional Unix core files (U-area and raw sections)
    Copyright 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999,
-   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2011
    Free Software Foundation, Inc.
    Written by John Gilmore of Cygnus Support.
 
@@ -284,9 +284,10 @@ const bfd_target trad_core_vec =
      HAS_LINENO | HAS_DEBUG |
      HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
     (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
-    0,                                                    /* symbol prefix */
-    ' ',                                                  /* ar_pad_char */
-    16,                                                           /* ar_max_namelen */
+    0,                         /* symbol prefix */
+    ' ',                       /* ar_pad_char */
+    16,                                /* ar_max_namelen */
+    0,                         /* match priority.  */
     NO_GET64, NO_GETS64, NO_PUT64,     /* 64 bit data */
     NO_GET, NO_GETS, NO_PUT,           /* 32 bit data */
     NO_GET, NO_GETS, NO_PUT,           /* 16 bit data */
index 551e5c4..a2d3ca7 100644 (file)
@@ -1,5 +1,5 @@
 /* BFD back-end for verilog hex memory dump files.
-   Copyright 2009, 2010
+   Copyright 2009, 2010, 2011
    Free Software Foundation, Inc.
    Written by Anthony Green <green@moxielogic.com>
 
@@ -332,6 +332,7 @@ const bfd_target verilog_vec =
   0,                           /* Leading underscore.  */
   ' ',                         /* AR_pad_char.  */
   16,                          /* AR_max_namelen.  */
+  0,                           /* match priority.  */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* Data.  */
index 226f8a0..84a816b 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD back-end for VERSAdos-E objects.
    Copyright 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-   2006, 2007, 2009, 2010 Free Software Foundation, Inc.
+   2006, 2007, 2009, 2010, 2011 Free Software Foundation, Inc.
    Written by Steve Chamberlain of Cygnus Support <sac@cygnus.com>.
 
    Versados is a Motorola trademark.
@@ -834,6 +834,7 @@ const bfd_target versados_vec =
   0,                           /* Leading underscore.  */
   ' ',                         /* AR_pad_char.  */
   16,                          /* AR_max_namelen.  */
+  0,                           /* match priority.  */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* Data.  */
index 0f57247..45828c7 100644 (file)
@@ -9362,6 +9362,7 @@ const bfd_target vms_alpha_vec =
   0,                           /* symbol_leading_char.  */
   ' ',                         /* ar_pad_char.  */
   15,                          /* ar_max_namelen.  */
+  0,                           /* match priority.  */
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
   bfd_getl32, bfd_getl_signed_32, bfd_putl32,
   bfd_getl16, bfd_getl_signed_16, bfd_putl16,
index 813ea39..888982d 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD back-end for VMS archive files.
 
-   Copyright 2010 Free Software Foundation, Inc.
+   Copyright 2010, 2011 Free Software Foundation, Inc.
    Written by Tristan Gingold <gingold@adacore.com>, AdaCore.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -2268,6 +2268,7 @@ const bfd_target vms_lib_txt_vec =
   0,                           /* symbol_leading_char.  */
   ' ',                         /* ar_pad_char.  */
   15,                          /* ar_max_namelen.  */
+  0,                           /* match priority.  */
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
   bfd_getl32, bfd_getl_signed_32, bfd_putl32,
   bfd_getl16, bfd_getl_signed_16, bfd_putl16,
index 95446e3..a0900f1 100644 (file)
@@ -1,6 +1,6 @@
 /* xSYM symbol-file support for BFD.
    Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-   2009, 2010 Free Software Foundation, Inc.
+   2009, 2010, 2011 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -2316,6 +2316,7 @@ const bfd_target sym_vec =
   0,                           /* Symbol_leading_char.  */
   ' ',                         /* AR_pad_char.  */
   16,                          /* AR_max_namelen.  */
+  0,                           /* match priority.  */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
   bfd_getb32, bfd_getb_signed_32, bfd_putb32,
   bfd_getb16, bfd_getb_signed_16, bfd_putb16,  /* Data.  */