# 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/objcopy.c |    8 +++++---
# 1 file changed, 5 insertions(+), 3 deletions(-)
#
Index: src/binutils/objcopy.c
===================================================================
--- src.orig/binutils/objcopy.c	2007-08-09 13:26:03.000000000 +0100
+++ src/binutils/objcopy.c	2007-08-09 16:36:12.000000000 +0100
@@ -2787,8 +2787,9 @@ strip_main (int argc, char *argv[])
 	  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, output_file ? output_file : argv[i],
+			  preserve_dates))
+	      hold_status = 1;
 	  status = hold_status;
 	}
       else
@@ -3411,7 +3412,8 @@ copy_main (int argc, char *argv[])
       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);