Avoid "Invalid parameter passed to C runtime function" warning

This warning was displayed by OutputDebugString on MinGW when
GDB was being debugged natively.

gdb/ChangeLog:

	* common/filestuff.c (gdb_fopen_cloexec): Disable use of "e" mode
	with 'fopen' also if O_CLOEXEC is equal to O_NOINHERIT, to cater
	to MinGW fixed by Gnulib.
This commit is contained in:
Eli Zaretskii 2018-11-20 18:49:43 +02:00
parent f92f9e8780
commit 970d89d8fd
2 changed files with 10 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2018-11-20 Eli Zaretskii <eliz@gnu.org>
* common/filestuff.c (gdb_fopen_cloexec): Disable use of "e" mode
with 'fopen' also if O_CLOEXEC is equal to O_NOINHERIT, to cater
to MinGW fixed by Gnulib.
2018-11-19 John Darrington <john@darrington.wattle.id.au>
*s12z-tdep.c (s12z_frame_cache): Add an assertion.

View File

@ -300,8 +300,10 @@ gdb_fopen_cloexec (const char *filename, const char *opentype)
skip it. E.g., the Windows runtime issues an "Invalid parameter
passed to C runtime function" OutputDebugString warning for
unknown modes. Assume that if O_CLOEXEC is zero, then "e" isn't
supported. */
static int fopen_e_ever_failed_einval = O_CLOEXEC == 0;
supported. On MinGW, O_CLOEXEC is an alias of O_NOINHERIT, and
"e" isn't supported. */
static int fopen_e_ever_failed_einval =
O_CLOEXEC == 0 || O_CLOEXEC == O_NOINHERIT;
if (!fopen_e_ever_failed_einval)
{