PR binutils/15796

* ar.c (map_over_members): Correctly handle multiple same-name
	entries on the command line and in the archive.
This commit is contained in:
Nick Clifton 2013-08-27 16:22:48 +00:00
parent 44f3886761
commit 0e135a02da
2 changed files with 24 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2013-08-27 Nick Clifton <nickc@redhat.com>
PR binutils/15796
* ar.c (map_over_members): Correctly handle multiple same-name
entries on the command line and in the archive.
2013-08-23 H.J. Lu <hongjiu.lu@intel.com>
* doc/binutils.texi: Remove the extra space.

View File

@ -189,6 +189,9 @@ map_over_members (bfd *arch, void (*function)(bfd *), char **files, int count)
mapping over each file each time -- we want to hack multiple
references. */
for (head = arch->archive_next; head; head = head->archive_next)
head->archive_pass = 0;
for (; count > 0; files++, count--)
{
bfd_boolean found = FALSE;
@ -199,6 +202,14 @@ map_over_members (bfd *arch, void (*function)(bfd *), char **files, int count)
const char * filename;
PROGRESS (1);
/* PR binutils/15796: Once an archive element has been matched
do not match it again. If the user provides multiple same-named
parameters on the command line their intent is to match multiple
same-named entries in the archive, not the same entry multiple
times. */
if (head->archive_pass)
continue;
filename = head->filename;
if (filename == NULL)
{
@ -227,6 +238,13 @@ map_over_members (bfd *arch, void (*function)(bfd *), char **files, int count)
found = TRUE;
function (head);
head->archive_pass = 1;
/* PR binutils/15796: Once a file has been matched, do not
match any more same-named files in the archive. If the
user does want to match multiple same-name files in an
archive they should provide multiple same-name parameters
to the ar command. */
break;
}
}