* 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 e417b8273d5e67cab151d71c305c880be346a19e..bd3895ad56831da766b348f03cf958d98f6ed135 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 ca0e0035d29ff05f88598505ad39caded53fcc44..bd38ea83902552e0289fd0147d69c5d7cafbf7b0 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 9a5d15599c8b4e0dc2bc9be540a03c4ef9a0db0b..fd936030c3dc3d0b703bb6e1f1c5a020eadd32e2 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 51624947856cfb81bf78b797956a8079e1c5a7db..5c0d2ae3551845a0fe2e16e24ec5caf3506e38c6 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 5d5c7e23b70c397663b6fd6b2e67950941dacc10..30900ba388b9f00252651a68d12afbbb23bd407d 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 4fd71e6ce2aaa7a187a16d700c294090844b9a84..368f820f200a73d5221ff9c4ea29cdf6e1c63558 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 2af0293ef4c4e6db52c1868491a0fe3d8d3bf276..ad93354016c04b11009c35fbdb8fcf8d4824db14 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 34c1a6bdc4efdb3ffeaaca08cdccd01fe97066ad..b76191b0484782ce5e93c44016b992073f834056 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 12b49ac1108af3e23947af2cb613620bf6b58065..c4dfd8f7fbd419e8b006377649aa0e1c5716d8b5 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 57c47d035489b059d4f5375b448a866bd4afba05..425a0c197676bec2db24548ee6ca74b4777de555 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 d50b070eff852b1fafa5fef0e707cc5c444f417b..9eb39a54ab3eff17a1eaac381f31075676d37a11 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 d0374d2789a0d12b34bc5f3a6092ebb5428ddcc0..928315f97517ad98b2ec784dc489775e91cf4f62 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 38d9ac64022e50a4cbf3b55f2c0096c61c86af87..86e7617333c20380d68d4258e678c9ed3582c7e8 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 34fda3ae32158d36f796f400a43f663838a1f9b6..cbc172f7c00b9d88df5f4330c276a2a3d64e1e36 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 30801fba68ec0c3f8650a39493d930ff48492777..a9683df717b6797d2d3f9eaa5a5d0653af6a530c 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 69e10d8c6671a5b3c230d11e7ee345777b742075..b866d482f7ba017e27887968e5051522148012ec 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 fa38321f49bf0daa162de9f38e13aec00bdfbb7f..c1b5c89cc809a67f2b3f68cdfe3555e6c4f99f65 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 b77af7c394aee6bf5b7151c90de7a134b504b93b..e707add2abb8c2ff825342d51201530e84469384 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 7670afe223181e5cb4bcd16b3dba6b3abf9154d6..497d340ae91215062a052b49d309fc0edd420c8a 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 672897d1d1173f23768db64236a063f1c7d8608d..3c353dae1701b3b94ebe62adecadd9fa77aff6a7 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 c739d69c7307373cc3223106ba8dcc6239f0e27e..d8a8a2e6c604dcb75d43e05130646188f2ab8844 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 1887bb97f280229983647b44b09af3364040454d..ef4dfbae582bfd152a0b242f3c0b53d80f42b8bd 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 b6deddd687a033af9c074190f68b7bfc318c0f2a..e71aadd30430bd903d652505e288b6a5555c68aa 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 2e8ece2d17a7bbe0dab0d9e584fbb8fb30c7c956..634e7174b93ef1271a7e9ddf9d07cf9c14788f2b 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 74576460c388548d633e182422123c388b7c7569..2fa24d890185f14fcc148cf9ffa5011d571ec114 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 d8833dfdcf3ca634327e645dd75467460ebc745d..b7e022614ca59648f0c8e941a9fc0a7789f53674 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 fab1b04ec3395f26bf4acc70c7939e5e908ff577..b92e2a635fc3c7f284ae78794f4343da759940c8 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 4d89a85e0aa4028419ed131dd3e998b06af889d7..66b9051efe55814c0e34d880d23a6e2bc83b7b61 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 95d9775cf7bc4ef4a53c7acb3aa33d3923d9ac57..9ff5fd379cea65b0f3533d5c8f50673f8e0a43a4 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 a5e89208df0acdca872aa61fb59c361fe5ae32ba..5cbf927103fdf536fad339f3ac4da02e72cd9161 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 bb986c4a9757bf64ffc3d5d07cf2850b84e40296..9494b35b66edc724ee73e97a8c4c9f995fdc9560 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 6a9816c0b5fd6f7e12132bb3d71c7aeda45d86ef..a92baafc7603fd99938496f68ee8470a430da396 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 64c7ddf5b65f16a63259cc1550eef2c5e61a3428..32dc335111ceca5e074afe5d7fbf6493ea0181ab 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 004ef6e754f28eb06b6438fef57d18b4d30e6cde..915e7bf86886b4a958a9a489c1b300b7c0bac86f 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 8c727880ef4a613842a9323ca5f4a9463365689b..c22790dec2e158aee5a2e61d6647c9b18e3f4cfc 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 add69372d2384ebc02320c20845179a146e0ee8c..f38b16ec8e8615d54363cc040d3ce243d83cc6cb 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 1f51449abc8980a34b53ddd5a6533a76f200ac02..e58f0d0d6ab7f537c9776f0f570a552078b54c4d 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 3821037827982642cc72dc7bfbaa2d6eb234c362..8cb87e4a72e551e6022aa5dc37e496faf660c999 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 42e4e83b004d3629299b3bab9bf92fad5572b73b..2025e7df901051a15ab2b71fcc5b11d79024378f 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 dcfda0595cc9d4c9e408778b1a57ed5f1cb42511..6db730132e998588acb852a67bc260afbb108564 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 dde61c883093cf43b8fda98994cdc0966c5b9dad..5d34f859b75f0e8eab12e80d3e12ea9ed425a7e3 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 853ee88fcf8d80ec5ace773d6a9e8726ca7ec83c..a97043695ee08be2ad3b398cebb480f9d4e83f7d 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 a18c8691a49420e23c9725c834259dbf1ea9c5eb..a642231a8f9e8c307b1330524bfd7aef6a506eee 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 1251a7e93c9c353382590203ec8315645c6fe2ea..6d4de1af7232d29a03e1a714de67747566fc3f43 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 47341afb5a9a349ad5c161cbc33355690ad15584..040042910f14c3f5264b93250a1adf9cf857ea25 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 2204ebba6e55d42fab155f173dc0563525ed1002..376569af84bd3a8f43201b1f3187a20fa947a4ad 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 e06b56151f4b6872ac561a7637507ea6f0ec0917..4b9d14d87127af161e13c68e7e4c37b9aba631db 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 551e5c42803f97b8f0c87dd68da7e265e07f5fde..a2d3ca7855ae6fa6eb6af147ed55d801004ce0e4 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 226f8a012b91cb606bce151249bd9a74c263e6f1..84a816b69db440bd704f7466bc305e9ba6b1b859 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 0f572475e9c0a5f2a355079ac2650b41ec4cd545..45828c752942fe09992d88a26c246626a4b2121e 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 813ea39eddc22ed65ee9caff8de6c6a63e09fabf..888982d89917ac5fff9b8960412d594095b58782 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 95446e3f58ca4f357a0fc8815a941ea284f9a968..a0900f1fda08176b7ace71b0a4325ce84dad6ba3 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.  */