* archive.c (bfd_generic_archive_p): Return target and keep
ardata on partial matches. * format.c (bfd_check_format_matches): Adjust for above change. Remove bfd_error_file_ambiguously_recognized dead code.
This commit is contained in:
parent
616e8b7163
commit
89d7b8aa6b
@ -1,3 +1,11 @@
|
||||
2013-01-28 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* archive.c (bfd_generic_archive_p): Return target and keep
|
||||
ardata on partial matches.
|
||||
* format.c (bfd_check_format_matches): Adjust for above
|
||||
change. Remove bfd_error_file_ambiguously_recognized dead
|
||||
code.
|
||||
|
||||
2013-01-26 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* bfd.c (struct bfd_preserve, bfd_preserve_save, bfd_preserve_restore,
|
||||
|
@ -852,11 +852,7 @@ bfd_generic_archive_p (bfd *abfd)
|
||||
first->target_defaulted = FALSE;
|
||||
if (bfd_check_format (first, bfd_object)
|
||||
&& first->xvec != abfd->xvec)
|
||||
{
|
||||
bfd_set_error (bfd_error_wrong_object_format);
|
||||
bfd_ardata (abfd) = tdata_hold;
|
||||
return NULL;
|
||||
}
|
||||
/* And we ought to close `first' here too. */
|
||||
}
|
||||
}
|
||||
|
29
bfd/format.c
29
bfd/format.c
@ -279,7 +279,6 @@ bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching)
|
||||
for (target = bfd_target_vector; *target != NULL; target++)
|
||||
{
|
||||
const bfd_target *temp;
|
||||
bfd_error_type err;
|
||||
|
||||
/* Don't check the default target twice. */
|
||||
if (*target == &binary_vec
|
||||
@ -310,16 +309,17 @@ bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching)
|
||||
match_targ = temp;
|
||||
if (preserve.marker != NULL)
|
||||
bfd_preserve_finish (abfd, &preserve);
|
||||
}
|
||||
|
||||
if (temp && (abfd->format != bfd_archive || bfd_has_map (abfd)))
|
||||
if (abfd->format != bfd_archive
|
||||
|| (bfd_has_map (abfd)
|
||||
&& bfd_get_error () != bfd_error_wrong_object_format))
|
||||
{
|
||||
/* This format checks out as ok! */
|
||||
right_targ = temp;
|
||||
|
||||
/* If this is the default target, accept it, even if other
|
||||
targets might match. People who want those other targets
|
||||
have to set the GNUTARGET variable. */
|
||||
/* If this is the default target, accept it, even if
|
||||
other targets might match. People who want those
|
||||
other targets have to set the GNUTARGET variable. */
|
||||
if (temp == bfd_default_vector[0])
|
||||
goto ok_ret;
|
||||
|
||||
@ -334,23 +334,22 @@ bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching)
|
||||
}
|
||||
best_count++;
|
||||
}
|
||||
else if (temp
|
||||
|| (err = bfd_get_error ()) == bfd_error_wrong_object_format
|
||||
|| err == bfd_error_file_ambiguously_recognized)
|
||||
else
|
||||
{
|
||||
/* 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. */
|
||||
/* An archive with no armap or objects of the wrong
|
||||
type. 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)
|
||||
matching_vector[ar_match_index] = *target;
|
||||
ar_match_index++;
|
||||
}
|
||||
else if (err != bfd_error_wrong_format)
|
||||
goto err_ret;
|
||||
|
||||
if (temp && !bfd_preserve_save (abfd, &preserve))
|
||||
if (!bfd_preserve_save (abfd, &preserve))
|
||||
goto err_ret;
|
||||
}
|
||||
else if (bfd_get_error () != bfd_error_wrong_format)
|
||||
goto err_ret;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user