GNU bug report logs -
#70889
29.3; GCC14.1 MinGW compilation error
Previous Next
Full log
Message #10 received at 70889 <at> debbugs.gnu.org (full text, mbox):
> Date: Sun, 12 May 2024 09:29:02 +0200
> From: Cyril Arnould <2006parcy <at> gmail.com>
>
> I wanted to check how the MinGW related issues #63365 and #63752 behave
> under GCC 14.1, however I did not get that far. Running the following:
>
>
> git clone https://git.savannah.gnu.org/git/emacs.git
> cd emacs
> ./autogen.sh
> ./configure
> make
>
>
> I get the error:
>
>
> sysdep.c: In function 'get_child_status':
> sysdep.c:479:13: error: implicit declaration of function 'waitpid'
> [-Wimplicit-function-declaration]
> 479 | pid = waitpid (child, status, options);
> | ^~~~~~~
> sysdep.c:479:13: warning: nested extern declaration of 'waitpid'
> [-Wnested-externs]
I don't understand how this happens. sysdep.c includes syswait.h:
#include "syswait.h"
syswait.h does this:
#ifdef HAVE_SYS_WAIT_H /* We have sys/wait.h with POSIXish definitions. */
#include <sys/wait.h>
#endif /* !HAVE_SYS_WAIT_H */
The MS-Windows build does define HAVE_SYS_WAIT_H:
/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
#define HAVE_SYS_WAIT_H 1
because we have the emulation of that header in nt/inc/sys/wait.h, and
the compiler flags include that directory, see src/Makefile:
CPPFLAGS = -mtune=pentium4 -DUSE_CRT_DLL=1 -I ${abs_top_srcdir}/nt/inc
So why doesn't this work in your case? which of the above parts of the
puzzle doesn't work?
> sysdep.c: In function 'child_status_changed':
> sysdep.c:525:43: error: 'WNOHANG' undeclared (first use in this function)
> 525 | return get_child_status (child, status, WNOHANG | options, 0);
> | ^~~~~~~
> sysdep.c:525:43: note: each undeclared identifier is reported only once
> for each function it appears in
> sysdep.c:526:1: warning: control reaches end of non-void function
> [-Wreturn-type]
Same here: WNOHANG is defined in nt/inc/sys/wait.h.
> Currently I'm on commit 67b1da215c9. According to the GCC 14 porting
> page "It is no longer possible to call a function that has not been
> declared", so I guess that's the issue here. I've noticed that in
> src/syswait.c, <sys/wait.h> is only included if HAVE_SYS_WAIT_H is
> defined, which it isn't.
So please try to figure out how come HAVE_SYS_WAIT_H is not defined in
your case. It should be. The first place to look is in config.log.
In my case I have
configure:14468: checking for sys/wait.h that is POSIX.1 compatible
configure:14501: result: yes
> For the record, I run into an internal compiler issue in thread.c
> after that, but that's not on emacs to solve I guess.
Internal compiler errors are GCC bugs, yes.
This bug report was last modified 1 year and 60 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.