Report an error on objcopy/strip of sectionless binaries
authorAlan Modra <amodra@gmail.com>
Mon, 7 Apr 2014 04:14:50 +0000 (13:44 +0930)
committerAlan Modra <amodra@gmail.com>
Mon, 7 Apr 2014 04:29:31 +0000 (13:59 +0930)
All strip operations require section headers to be present, as do most
objcopy operations.  BFD is seriously confused by objects without
section info.  The error message added here is similar to the error
on attempting to strip/objcopy a zero length object.

PR binutils/16811
* objcopy.c (copy_object): Error if no sections.

binutils/ChangeLog
binutils/objcopy.c

index 931d9d080dcc1485fc13bc39cb270cbffd6fdd20..56df68f03c1b5ab273c6712b8edaf45f6d2443d9 100644 (file)
@@ -1,3 +1,8 @@
+2014-04-07  Alan Modra  <amodra@gmail.com>
+
+       PR binutils/16811
+       * objcopy.c (copy_object): Error if no sections.
+
 2014-04-03  Markus Trippelsdorf  <markus@trippelsdorf.de>
 
        PR binutils/14698
index 6215919bb7cc7efab67afeb0bc45b29bc841c6f4..873908c688d3d6b450dfe6f6e4faf147b3d45848 100644 (file)
@@ -1598,6 +1598,13 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
       return FALSE;
     }
 
+  if (ibfd->sections == NULL)
+    {
+      non_fatal (_("error: the input file '%s' has no sections"),
+                bfd_get_archive_filename (ibfd));
+      return FALSE;
+    }
+
   if (verbose)
     printf (_("copy from `%s' [%s] to `%s' [%s]\n"),
            bfd_get_archive_filename (ibfd), bfd_get_target (ibfd),