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) {