Fix file descriptor existence of MinGW.

2019-08-08  Martin Liska  <mliska@suse.cz>

	PR bootstrap/91352
	* gcc.c (driver::detect_jobserver): Use is_valid_fd.
	* lto-wrapper.c (jobserver_active_p): Likewise.
2019-08-08  Martin Liska  <mliska@suse.cz>

	PR bootstrap/91352
	* libiberty.h (is_valid_fd): New function.
2019-08-08  Martin Liska  <mliska@suse.cz>

	PR bootstrap/91352
	* lrealpath.c (is_valid_fd): New function.

From-SVN: r274208
This commit is contained in:
Martin Liska 2019-08-08 09:50:28 +02:00 committed by Martin Liska
parent fe8e21fd73
commit 0fddb18470
7 changed files with 40 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2019-08-08 Martin Liska <mliska@suse.cz>
PR bootstrap/91352
* gcc.c (driver::detect_jobserver): Use is_valid_fd.
* lto-wrapper.c (jobserver_active_p): Likewise.
2019-08-08 Martin Liska <mliska@suse.cz> 2019-08-08 Martin Liska <mliska@suse.cz>
* cgraphclones.c (set_new_clone_decl_and_node_flags): Drop * cgraphclones.c (set_new_clone_decl_and_node_flags): Drop

View File

@ -8380,8 +8380,8 @@ driver::detect_jobserver () const
= (sscanf (n + strlen (needle), "%d,%d", &rfd, &wfd) == 2 = (sscanf (n + strlen (needle), "%d,%d", &rfd, &wfd) == 2
&& rfd > 0 && rfd > 0
&& wfd > 0 && wfd > 0
&& fcntl (rfd, F_GETFD) >= 0 && is_valid_fd (rfd)
&& fcntl (wfd, F_GETFD) >= 0); && is_valid_fd (wfd));
/* Drop the jobserver if it's not working now. */ /* Drop the jobserver if it's not working now. */
if (!jobserver) if (!jobserver)

View File

@ -1237,8 +1237,8 @@ jobserver_active_p (void)
return (sscanf (n + strlen (needle), "%d,%d", &rfd, &wfd) == 2 return (sscanf (n + strlen (needle), "%d,%d", &rfd, &wfd) == 2
&& rfd > 0 && rfd > 0
&& wfd > 0 && wfd > 0
&& fcntl (rfd, F_GETFD) >= 0 && is_valid_fd (rfd)
&& fcntl (wfd, F_GETFD) >= 0); && is_valid_fd (wfd));
} }
/* Execute gcc. ARGC is the number of arguments. ARGV contains the arguments. */ /* Execute gcc. ARGC is the number of arguments. ARGV contains the arguments. */

View File

@ -1,3 +1,8 @@
2019-08-08 Martin Liska <mliska@suse.cz>
PR bootstrap/91352
* libiberty.h (is_valid_fd): New function.
2019-07-18 Eduard-Mihai Burtescu <eddyb@lyken.rs> 2019-07-18 Eduard-Mihai Burtescu <eddyb@lyken.rs>
* demangle.h (rust_is_mangled): Move to libiberty/rust-demangle.h. * demangle.h (rust_is_mangled): Move to libiberty/rust-demangle.h.

View File

@ -137,6 +137,10 @@ extern const char *unix_lbasename (const char *) ATTRIBUTE_RETURNS_NONNULL ATTRI
extern char *lrealpath (const char *); extern char *lrealpath (const char *);
/* Return true when FD file descriptor exists. */
extern int is_valid_fd (int fd);
/* Concatenate an arbitrary number of strings. You must pass NULL as /* Concatenate an arbitrary number of strings. You must pass NULL as
the last argument of this function, to terminate the list of the last argument of this function, to terminate the list of
strings. Allocates memory using xmalloc. */ strings. Allocates memory using xmalloc. */

View File

@ -1,3 +1,8 @@
2019-08-08 Martin Liska <mliska@suse.cz>
PR bootstrap/91352
* lrealpath.c (is_valid_fd): New function.
2019-07-24 Martin Liska <mliska@suse.cz> 2019-07-24 Martin Liska <mliska@suse.cz>
PR lto/91228 PR lto/91228

View File

@ -49,6 +49,9 @@ components will be simplified. The returned value will be allocated using
#ifdef HAVE_STRING_H #ifdef HAVE_STRING_H
#include <string.h> #include <string.h>
#endif #endif
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif
/* On GNU libc systems the declaration is only visible with _GNU_SOURCE. */ /* On GNU libc systems the declaration is only visible with _GNU_SOURCE. */
#if defined(HAVE_CANONICALIZE_FILE_NAME) \ #if defined(HAVE_CANONICALIZE_FILE_NAME) \
@ -155,3 +158,16 @@ lrealpath (const char *filename)
/* This system is a lost cause, just duplicate the filename. */ /* This system is a lost cause, just duplicate the filename. */
return strdup (filename); return strdup (filename);
} }
/* Return true when FD file descriptor exists. */
int
is_valid_fd (int fd)
{
#if defined(_WIN32)
HANDLE h = (HANDLE) _get_osfhandle (fd);
return h != (HANDLE) -1;
#else
return fcntl (fd, F_GETFD) >= 0;
#endif
}