summaryrefslogtreecommitdiff
path: root/meta/packages/binutils/binutils-2.18/binutils-2.16.91.0.6-objcopy-rename-errorcode.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/packages/binutils/binutils-2.18/binutils-2.16.91.0.6-objcopy-rename-errorcode.patch')
-rw-r--r--meta/packages/binutils/binutils-2.18/binutils-2.16.91.0.6-objcopy-rename-errorcode.patch32
1 files changed, 32 insertions, 0 deletions
diff --git a/meta/packages/binutils/binutils-2.18/binutils-2.16.91.0.6-objcopy-rename-errorcode.patch b/meta/packages/binutils/binutils-2.18/binutils-2.16.91.0.6-objcopy-rename-errorcode.patch
new file mode 100644
index 000000000..768f556ad
--- /dev/null
+++ b/meta/packages/binutils/binutils-2.18/binutils-2.16.91.0.6-objcopy-rename-errorcode.patch
@@ -0,0 +1,32 @@
+# 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.
+#
+# modification by bero: Ported to 2.16.91.0.6
+#
+#Signed-off-by: John Bowler <jbowler@acm.org>
+#Signed-off-by: Bernhard Rosenkraenzer <bero@arklinux.org>
+--- binutils-2.18.orig/binutils/objcopy.c
++++ binutils-2.18/binutils/objcopy.c
+@@ -2787,8 +2787,8 @@
+ if (preserve_dates)
+ set_times (tmpname, &statbuf);
+ if (output_file != tmpname)
+- smart_rename (tmpname, output_file ? output_file : argv[i],
+- preserve_dates);
++ if(smart_rename (tmpname, argv[i], preserve_dates))
++ hold_status = 1;
+ status = hold_status;
+ }
+ else
+@@ -3411,7 +3411,8 @@
+ if (preserve_dates)
+ set_times (tmpname, &statbuf);
+ if (tmpname != output_filename)
+- smart_rename (tmpname, input_filename, preserve_dates);
++ if (smart_rename (tmpname, input_filename, preserve_dates))
++ status = 1;
+ }
+ else
+ unlink_if_ordinary (tmpname);