From 5ffcaa866f6442c3a1ad3daf95bff45d73835b25 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Mon, 15 Oct 2007 03:35:35 +0000 Subject: [PATCH] From Craig Silverstein: call unlink_if_ordinary. --- gold/output.cc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/gold/output.cc b/gold/output.cc index 60d94968ed3..6406c780e0a 100644 --- a/gold/output.cc +++ b/gold/output.cc @@ -29,6 +29,7 @@ #include #include #include +#include "libiberty.h" // for unlink_if_ordinary() #include "parameters.h" #include "object.h" @@ -1685,11 +1686,9 @@ Output_file::open(off_t file_size) // If we fail, continue; this command is merely a best-effort attempt // to improve the odds for open(). - // FIXME: unlink the file if it's a symlink, even a symlink to a dir. - // Or do we want to follow the symlink and unlink its target? struct stat s; - if (::stat(this->name_, &s) == 0 && s.st_size != 0 && S_ISREG(s.st_mode)) - ::unlink(this->name_); + if (::stat(this->name_, &s) == 0 && s.st_size != 0) + unlink_if_ordinary(this->name_); int mode = parameters->output_is_object() ? 0666 : 0777; int o = ::open(this->name_, O_RDWR | O_CREAT | O_TRUNC, mode); -- 2.30.2