PR 4453
* format.c (bfd_check_format_matches): Don't accept archives as fully matching unless they have a map.
This commit is contained in:
parent
297d8443d0
commit
fbb3bb987c
|
@ -1,3 +1,9 @@
|
|||
2008-01-21 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
PR 4453
|
||||
* format.c (bfd_check_format_matches): Don't accept archives as
|
||||
fully matching unless they have a map.
|
||||
|
||||
2008-01-21 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* elflink.c (_bfd_elf_link_output_relocs): Correct error return.
|
||||
|
|
13
bfd/format.c
13
bfd/format.c
|
@ -1,6 +1,6 @@
|
|||
/* Generic BFD support for file formats.
|
||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1999, 2000, 2001, 2002,
|
||||
2003, 2005, 2007 Free Software Foundation, Inc.
|
||||
2003, 2005, 2007, 2008 Free Software Foundation, Inc.
|
||||
Written by Cygnus Support.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
@ -210,7 +210,7 @@ bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching)
|
|||
|
||||
temp = BFD_SEND_FMT (abfd, _bfd_check_format, (abfd));
|
||||
|
||||
if (temp)
|
||||
if (temp && (abfd->format != bfd_archive || bfd_has_map (abfd)))
|
||||
{
|
||||
/* This format checks out as ok! */
|
||||
right_targ = temp;
|
||||
|
@ -228,12 +228,13 @@ bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching)
|
|||
matching_vector[match_count] = temp;
|
||||
match_count++;
|
||||
}
|
||||
else if ((err = bfd_get_error ()) == bfd_error_wrong_object_format
|
||||
else if (temp
|
||||
|| (err = bfd_get_error ()) == bfd_error_wrong_object_format
|
||||
|| err == bfd_error_file_ambiguously_recognized)
|
||||
{
|
||||
/* An archive with objects of the wrong type, or an
|
||||
ambiguous match. We want this target to match if we get
|
||||
no better matches. */
|
||||
/* An archive with no armap or objects of the wrong type,
|
||||
or an ambiguous match. We want this target to match
|
||||
if we get no better matches. */
|
||||
if (ar_right_targ != bfd_default_vector[0])
|
||||
ar_right_targ = *target;
|
||||
if (matching_vector)
|
||||
|
|
Loading…
Reference in New Issue