forked from Imagelibrary/binutils-gdb
ar P support
This patch extends "ar P" to allow creation of normal (as distinct from thin) archives with full path names. PR 452 PR 25104 bfd/ * archive.c (normalize): Return file unchanged when BFD_ARCHIVE_FULL_PATH. (_bfd_construct_extended_name_table): Pass abfd, the output bfd, to normalize. (_bfd_archive_bsd44_construct_extended_name_table): Likewise. * bfd.c (struct bfd): Make flags a full flagword. (BFD_ARCHIVE_FULL_PATH): Define. * bfd-in2.h: Regenerate. binutils/ * ar.c (write_archive): Set BFD_ARCHIVE_FULL_PATH. * doc/binutils.texi (extract from archive): Mention restrictions when extracting from archives with full paths. (ar P): Update to current P support. (ar -X32_64): Fix spelling.
This commit is contained in:
@@ -1299,6 +1299,9 @@ normalize (bfd *abfd, const char *file)
|
||||
const char *last;
|
||||
char *copy;
|
||||
|
||||
if (abfd->flags & BFD_ARCHIVE_FULL_PATH)
|
||||
return file;
|
||||
|
||||
first = file + strlen (file) - 1;
|
||||
last = first + 1;
|
||||
|
||||
@@ -1326,8 +1329,10 @@ normalize (bfd *abfd, const char *file)
|
||||
|
||||
#else
|
||||
static const char *
|
||||
normalize (bfd *abfd ATTRIBUTE_UNUSED, const char *file)
|
||||
normalize (bfd *abfd, const char *file)
|
||||
{
|
||||
if (abfd->flags & BFD_ARCHIVE_FULL_PATH)
|
||||
return file;
|
||||
return lbasename (file);
|
||||
}
|
||||
#endif
|
||||
@@ -1562,7 +1567,7 @@ _bfd_construct_extended_name_table (bfd *abfd,
|
||||
continue;
|
||||
}
|
||||
|
||||
normal = normalize (current, current->filename);
|
||||
normal = normalize (abfd, current->filename);
|
||||
if (normal == NULL)
|
||||
return FALSE;
|
||||
|
||||
@@ -1643,7 +1648,7 @@ _bfd_construct_extended_name_table (bfd *abfd,
|
||||
}
|
||||
else
|
||||
{
|
||||
normal = normalize (current, filename);
|
||||
normal = normalize (abfd, filename);
|
||||
if (normal == NULL)
|
||||
return FALSE;
|
||||
}
|
||||
@@ -1714,7 +1719,7 @@ _bfd_archive_bsd44_construct_extended_name_table (bfd *abfd,
|
||||
current != NULL;
|
||||
current = current->archive_next)
|
||||
{
|
||||
const char *normal = normalize (current, current->filename);
|
||||
const char *normal = normalize (abfd, current->filename);
|
||||
int has_space = 0;
|
||||
unsigned int len;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user