binutils: make strip and objcopy return 0 if asked to write ro files in 2.16
authorJohn Bowler <jbowler@nslu2-linux.org>
Wed, 1 Feb 2006 02:05:17 +0000 (02:05 +0000)
committerOpenEmbedded Project <openembedded-devel@lists.openembedded.org>
Wed, 1 Feb 2006 02:05:17 +0000 (02:05 +0000)
 - the same bug exists in earlier versions and is probably fixed by the
   same patch, objcopy (==strip) would identify an ro file and abort the
   overwrite (smart_rename), but the caller in objcopy fails to check the
   error code and so the error is not reported

packages/binutils/binutils-2.16/binutils-2.16-objcopy-rename-errorcode.patch [new file with mode: 0644]
packages/binutils/binutils_2.16.bb

diff --git a/packages/binutils/binutils-2.16/binutils-2.16-objcopy-rename-errorcode.patch b/packages/binutils/binutils-2.16/binutils-2.16-objcopy-rename-errorcode.patch
new file mode 100644 (file)
index 0000000..e4372de
--- /dev/null
@@ -0,0 +1,29 @@
+# strip (and objcopy) fail to set the error code if there is no
+# output file name and the rename of the stripped (or copied) file
+# fails, yet the command fails to do anything.  This fixes both
+# objcopy and strip.
+#
+#Signed-off-by: John Bowler <jbowler@acm.org>
+
+--- binutils-2.16/binutils/objcopy.c.orig      2006-01-31 11:15:38.797318519 -0800
++++ binutils-2.16/binutils/objcopy.c   2006-01-31 11:15:40.463318516 -0800
+@@ -2434,7 +2434,8 @@ strip_main (int argc, char *argv[])
+         if (preserve_dates)
+           set_times (tmpname, &statbuf);
+         if (output_file == NULL)
+-          smart_rename (tmpname, argv[i], preserve_dates);
++          if (smart_rename (tmpname, argv[i], preserve_dates))
++            hold_status = 1;
+         status = hold_status;
+       }
+       else
+@@ -3013,7 +3014,8 @@ copy_main (int argc, char *argv[])
+       {
+         if (preserve_dates)
+           set_times (tmpname, &statbuf);
+-        smart_rename (tmpname, input_filename, preserve_dates);
++        if (smart_rename (tmpname, input_filename, preserve_dates))
++          status = 1;
+       }
+       else
+       unlink (tmpname);
index 994c2d4..9cca585 100644 (file)
@@ -3,13 +3,14 @@ HOMEPAGE = "http://www.gnu.org/software/binutils/"
 SECTION = "devel"
 LICENSE = "GPL"
 MAINTAINER = "Gerald Britton <gbritton@doomcom.org>"
-PR = "r5"
+PR = "r6"
 
 SRC_URI = \
     "http://ftp.gnu.org/gnu/binutils/binutils-${PV}.tar.bz2 \
      file://ld_makefile.patch;patch=1 \
      file://better_file_error.patch;patch=1 \
      file://signed_char_fix.patch;patch=1 \
+     file://binutils-2.16-objcopy-rename-errorcode.patch;patch=1 \
      file://binutils-100_cflags_for_build.patch;patch=1"
 
 # uclibc patches