2000-04-03 H.J. Lu <hjl@gnu.org>
* cache.c (bfd_open_file): Unlink the output file only if it has none zero size.
This commit is contained in:
parent
d61e6540a1
commit
9e422a2e27
2 changed files with 24 additions and 4 deletions
|
@ -1,3 +1,8 @@
|
|||
2000-04-03 H.J. Lu <hjl@gnu.org>
|
||||
|
||||
* cache.c (bfd_open_file): Unlink the output file only if
|
||||
it has none zero size.
|
||||
|
||||
2000-04-01 Ken Block USG <block@zk3.dec.com>
|
||||
|
||||
* elf64-alpha.c (elf64_alpha_relocate_section): Don't emit
|
||||
|
|
23
bfd/cache.c
23
bfd/cache.c
|
@ -285,10 +285,25 @@ bfd_open_file (abfd)
|
|||
}
|
||||
else
|
||||
{
|
||||
/* Create the file. Unlink it first, for the convenience of
|
||||
operating systems which worry about overwriting running
|
||||
binaries. */
|
||||
unlink (abfd->filename);
|
||||
/* Create the file.
|
||||
|
||||
Some operating systems won't let us overwrite a running
|
||||
binary. For them, we want to unlink the file first.
|
||||
|
||||
However, gcc 2.95 will create temporary files using
|
||||
O_EXCL and tight permissions to prevent other users from
|
||||
substituting other .o files during the compilation. gcc
|
||||
will then tell the assembler to use the newly created
|
||||
file as an output file. If we unlink the file here, we
|
||||
open a brief window when another user could still
|
||||
substitute a file.
|
||||
|
||||
So we unlink the output file if and only if it has
|
||||
non-zero size. */
|
||||
struct stat s;
|
||||
|
||||
if (stat (abfd->filename, &s) == 0 && s.st_size != 0)
|
||||
unlink (abfd->filename);
|
||||
abfd->iostream = (PTR) fopen (abfd->filename, FOPEN_WB);
|
||||
abfd->opened_once = true;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue