diff options
author | Eli Zaretskii <eliz@gnu.org> | 2021-01-28 13:32:05 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2021-01-28 13:32:05 +0000 |
commit | a7ad3cb1fff75e8e11df40128adda66a42a06239 (patch) | |
tree | 79ec91b923fa0e19fb42ab012e7b6b79b12972a6 /binutils/elfedit.c | |
parent | 0318cca4934fc5d85e83351842985ad2a3475146 (diff) | |
download | gdb-a7ad3cb1fff75e8e11df40128adda66a42a06239.zip gdb-a7ad3cb1fff75e8e11df40128adda66a42a06239.tar.gz gdb-a7ad3cb1fff75e8e11df40128adda66a42a06239.tar.bz2 |
Fix binutils tools so that they can cope with the special /dev/null file when run on Windows systems.
PR 27252
* bucomm.c (get_file_size): Add code to handle /dev/null on
Windows systems.
* elfedit.c (check_file): Likewise.
Diffstat (limited to 'binutils/elfedit.c')
-rw-r--r-- | binutils/elfedit.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/binutils/elfedit.c b/binutils/elfedit.c index d90cbaf..260abe0 100644 --- a/binutils/elfedit.c +++ b/binutils/elfedit.c @@ -721,6 +721,20 @@ check_file (const char *file_name, struct stat *statbuf_p) return 1; } +#if defined (_WIN32) && !defined (__CYGWIN__) + else if (statbuf_p->st_size == 0) + { + /* MS-Windows 'stat' doesn't reports the null device as a + regular file; fix that. */ + int fd = open (file_name, O_RDONLY | O_BINARY); + if (isatty (fd)) + { + statbuf_p->st_mode &= ~S_IFREG; + statbuf_p->st_mode |= S_IFCHR; + } + } +#endif + if (! S_ISREG (statbuf_p->st_mode)) { error (_("'%s' is not an ordinary file\n"), file_name); |