Do not complain when copying a file format that does not support relocations.
authorNick Clifton <nickc@redhat.com>
Mon, 27 Oct 2003 12:45:38 +0000 (12:45 +0000)
committerNick Clifton <nickc@redhat.com>
Mon, 27 Oct 2003 12:45:38 +0000 (12:45 +0000)
binutils/ChangeLog
binutils/objcopy.c

index 02d6944b0b6d1f03f8a85e74d7af279ae5e0af95..6c2db14ec2b95aef9ef3ba8beb41ff9fa0f98c1e 100644 (file)
@@ -1,3 +1,9 @@
+2003-10-27  Nick Clifton  <nickc@redhat.com>
+
+       * objcopy.c (copy_section): Do not complain when a target does not
+       support relocations.
+       (mark_symbols_used_in_relocations): Likewise.
+
 2003-10-14  Anil Paranjpe  <anilp1@KPITCummins.com>
 
        * objcopy.c (copy_main): Reads machine flags from arch_info
index b48b84ff02d8be578efeeabf3b707533ebb73c47..8a1a67a74ef5e21976177f30e215ec722d140803 100644 (file)
@@ -1885,10 +1885,18 @@ copy_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
   if (bfd_get_format (obfd) == bfd_core)
     relsize = 0;
   else
-    relsize = bfd_get_reloc_upper_bound (ibfd, isection);
+    {
+      relsize = bfd_get_reloc_upper_bound (ibfd, isection);
 
-  if (relsize < 0)
-    RETURN_NONFATAL (bfd_get_filename (ibfd));
+      if (relsize < 0)
+       {
+         /* Do not complain if the target does not support relocations.  */
+         if (relsize == -1 && bfd_get_error () == bfd_error_invalid_operation)
+           relsize = 0;
+         else
+           RETURN_NONFATAL (bfd_get_filename (ibfd));
+       }
+    }
 
   if (relsize == 0)
     bfd_set_reloc (obfd, osection, NULL, 0);
@@ -2030,7 +2038,12 @@ mark_symbols_used_in_relocations (bfd *ibfd, sec_ptr isection, void *symbolsarg)
 
   relsize = bfd_get_reloc_upper_bound (ibfd, isection);
   if (relsize < 0)
-    bfd_fatal (bfd_get_filename (ibfd));
+    {
+      /* Do not complain if the target does not support relocations.  */
+      if (relsize == -1 && bfd_get_error () == bfd_error_invalid_operation)
+       return;
+      bfd_fatal (bfd_get_filename (ibfd));
+    }
 
   if (relsize == 0)
     return;