aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--binutils/ChangeLog6
-rw-r--r--binutils/objcopy.c7
2 files changed, 10 insertions, 3 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 7819fb8..10dbaaf 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,9 @@
+2003-05-13 Michael Eager <eager@mvista.com>
+
+ * objcopy.c: Treat identical src/dst file names as if only one
+ entered. One Windows creating an output file of the same name as
+ the input file will delete the input file before it is read.
+
2003-05-12 Salvador Eduardo Tropea <salvador@inti.gov.ar>
* debug.c (debug_get_real_type): Extend test for circular debug
diff --git a/binutils/objcopy.c b/binutils/objcopy.c
index 4507249..27c844f 100644
--- a/binutils/objcopy.c
+++ b/binutils/objcopy.c
@@ -2733,9 +2733,10 @@ copy_main (argc, argv)
if (stat (input_filename, & statbuf) < 0)
fatal (_("Cannot stat: %s: %s"), input_filename, strerror (errno));
- /* If there is no destination file then create a temp and rename
- the result into the input. */
- if (output_filename == (char *) NULL)
+ /* If there is no destination file, or the source and destination files
+ are the same, then create a temp and rename the result into the input. */
+ if ((output_filename == (char *) NULL) ||
+ (strcmp (input_filename, output_filename) == 0))
{
char *tmpname = make_tempname (input_filename);