From: Ian Lance Taylor Date: Mon, 15 Oct 2007 03:35:35 +0000 (+0000) Subject: From Craig Silverstein: call unlink_if_ordinary. X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=125c017daff8147ce16fa1016c8640d7a90a2217;p=pf3gnuchains%2Fpf3gnuchains3x.git From Craig Silverstein: call unlink_if_ordinary. --- diff --git a/gold/output.cc b/gold/output.cc index 60d94968ed..6406c780e0 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);