mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-22 02:50:08 +08:00
Stop objcopy from attempting to copy thin archives.
PR 24281 * objcopy.c (copy_archive): Do not copy thin archives.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2019-03-04 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
PR 24281
|
||||||
|
* objcopy.c (copy_archive): Do not copy thin archives.
|
||||||
|
|
||||||
2019-02-27 Matthew Malcomson <matthew.malcomson@arm.com>
|
2019-02-27 Matthew Malcomson <matthew.malcomson@arm.com>
|
||||||
|
|
||||||
* testsuite/lib/binutils-common.exp: Allow multiple "as" lines.
|
* testsuite/lib/binutils-common.exp: Allow multiple "as" lines.
|
||||||
|
@ -3276,6 +3276,27 @@ copy_archive (bfd *ibfd, bfd *obfd, const char *output_target,
|
|||||||
char *dir;
|
char *dir;
|
||||||
const char *filename;
|
const char *filename;
|
||||||
|
|
||||||
|
/* PR 24281: It is not clear what should happen when copying a thin archive.
|
||||||
|
One part is straight forward - if the output archive is in a different
|
||||||
|
directory from the input archive then any relative paths in the library
|
||||||
|
should be adjusted to the new location. But if any transformation
|
||||||
|
options are active (eg strip, rename, add, etc) then the implication is
|
||||||
|
that these should be applied to the files pointed to by the archive.
|
||||||
|
But since objcopy is not destructive, this means that new files must be
|
||||||
|
created, and there is no guidance for the names of the new files. (Plus
|
||||||
|
this conflicts with one of the goals of thin libraries - only taking up
|
||||||
|
a minimal amount of space in the file system).
|
||||||
|
|
||||||
|
So for now we fail if an attempt is made to copy such libraries. */
|
||||||
|
if (ibfd->is_thin_archive)
|
||||||
|
{
|
||||||
|
status = 1;
|
||||||
|
bfd_set_error (bfd_error_invalid_operation);
|
||||||
|
bfd_nonfatal_message (NULL, ibfd, NULL,
|
||||||
|
_("sorry: copying thin archives is not currently supported"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Make a temp directory to hold the contents. */
|
/* Make a temp directory to hold the contents. */
|
||||||
dir = make_tempdir (bfd_get_filename (obfd));
|
dir = make_tempdir (bfd_get_filename (obfd));
|
||||||
if (dir == NULL)
|
if (dir == NULL)
|
||||||
|
Reference in New Issue
Block a user