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:
parent
44f3886761
commit
0e135a02da
2 changed files with 24 additions and 0 deletions
|
@ -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>
|
2013-08-23 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* doc/binutils.texi: Remove the extra space.
|
* doc/binutils.texi: Remove the extra space.
|
||||||
|
|
|
@ -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
|
mapping over each file each time -- we want to hack multiple
|
||||||
references. */
|
references. */
|
||||||
|
|
||||||
|
for (head = arch->archive_next; head; head = head->archive_next)
|
||||||
|
head->archive_pass = 0;
|
||||||
|
|
||||||
for (; count > 0; files++, count--)
|
for (; count > 0; files++, count--)
|
||||||
{
|
{
|
||||||
bfd_boolean found = FALSE;
|
bfd_boolean found = FALSE;
|
||||||
|
@ -199,6 +202,14 @@ map_over_members (bfd *arch, void (*function)(bfd *), char **files, int count)
|
||||||
const char * filename;
|
const char * filename;
|
||||||
|
|
||||||
PROGRESS (1);
|
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;
|
filename = head->filename;
|
||||||
if (filename == NULL)
|
if (filename == NULL)
|
||||||
{
|
{
|
||||||
|
@ -227,6 +238,13 @@ map_over_members (bfd *arch, void (*function)(bfd *), char **files, int count)
|
||||||
|
|
||||||
found = TRUE;
|
found = TRUE;
|
||||||
function (head);
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue