This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Stop objcopy from attempting to copy thin archives.


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=f5f20315116c43110c058ec9d787e20f901309f2

commit f5f20315116c43110c058ec9d787e20f901309f2
Author: Nick Clifton <nickc@redhat.com>
Date:   Mon Mar 4 13:11:08 2019 +0000

    Stop objcopy from attempting to copy thin archives.
    
    	PR 24281
    	* objcopy.c (copy_archive): Do not copy thin  archives.

Diff:
---
 binutils/ChangeLog |  5 +++++
 binutils/objcopy.c | 21 +++++++++++++++++++++
 2 files changed, 26 insertions(+)

diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 6bb4384..aa33e52 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -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>
 
 	* testsuite/lib/binutils-common.exp: Allow multiple "as" lines.
diff --git a/binutils/objcopy.c b/binutils/objcopy.c
index 0e17b86..330b93c 100644
--- a/binutils/objcopy.c
+++ b/binutils/objcopy.c
@@ -3276,6 +3276,27 @@ copy_archive (bfd *ibfd, bfd *obfd, const char *output_target,
   char *dir;
   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.  */
   dir = make_tempdir (bfd_get_filename (obfd));
   if (dir == NULL)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]