From 2d8a7f23ee9cbb193bbe2afb82288f2943df87d2 Mon Sep 17 00:00:00 2001 From: Danny Smith Date: Wed, 30 Mar 2005 09:58:48 +0000 Subject: [PATCH] backport: tlink.c (recompile_files): Do not assume that "rename" can overwrite an existing file. Merge from csl-arm-branch. 2004-02-12 Mark Mitchell * tlink.c (recompile_files): Do not assume that "rename" can overwrite an existing file. From-SVN: r97252 --- gcc/ChangeLog | 8 ++++++++ gcc/tlink.c | 8 +++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 915ec58c693..00025a8002b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2005-03-31 Danny Smith + + Merge from csl-arm-branch. + 2004-02-12 Mark Mitchell + + * tlink.c (recompile_files): Do not assume that "rename" can + overwrite an existing file. + 2005-03-31 Paolo Bonzini * gcc/configure.ac (TL_AC_GNU_MAKE_GCC_LIB_PATH): Remove. diff --git a/gcc/tlink.c b/gcc/tlink.c index bf4e1d757b0..3fe531af9e7 100644 --- a/gcc/tlink.c +++ b/gcc/tlink.c @@ -470,7 +470,13 @@ recompile_files (void) } fclose (stream); fclose (output); - rename (outname, f->key); + /* On Windows "rename" returns -1 and sets ERRNO to EACCESS if + the new file name already exists. Therefore, we explicitly + remove the old file first. */ + if (remove (f->key) == -1) + fatal_perror ("removing .rpo file"); + if (rename (outname, f->key) == -1) + fatal_perror ("renaming .rpo file"); if (!f->args) {