Subject: bug#18666: emacs-24.3.94: Debian GNU/kFreeBSD 7 (wheezy) build issue

From: Wolfgang Jenkner <[email-masked]>
Date: Wed, 08 Oct 2014 19:10:13 +0200

On Wed, Oct 08 2014, Nelson H. F. Beebe wrote:

> An emacs-24.3.94 build on Debian GNU/kFreeBSD 7 (wheezy) x86-64 with

So it runs a FreeBSD 9 kernel[1].

> CC=c99 fails with this error:
>
>     /usr/bin/c99 -c  -Demacs -I. -I. -I../lib -I./../lib \
>         -I/usr/include/freetype2 \
> 	-I/usr/include/freetype2 -MMD -MF deps/process.d -MP \
> 	-I/usr/uumath/include  process.c
>     process.c:177:1: error: static declaration of `accept4' follows
> 		     non-static declarationmake[1]: Leaving directory
> 		     `/local/build/c99/emacs-24.3.94/src'
>
> The problem is this code in the indicated system header file:
>
>     #ifdef __USE_GNU
>     /* Similar to 'accept' but takes an additional parameter to specify flags.
>
>        This function is a cancellation point and therefore not marked with
>        __THROW.  */
>     extern int accept4 (int __fd, __SOCKADDR_ARG __addr,
> 			socklen_t *__restrict __addr_len, int __flags);
>     #endif

On FreeBSD 10, accept(2) states[2] in HISTORY

     The accept4() system call appeared in FreeBSD 10.0.

So I guess the bug is that the declaration is nevertheless visible in
the glibc header file used on your Debian system.

The other possibility is that the Debian developers implemented it on
their own, but it somehow fails the configure test (you could check
config.log).

I found a short mailing list thread about this[3].

[1] https://wiki.debian.org/Debian_GNU/kFreeBSD_FAQ#Q._What_version_of_kFreeBSD_is_supported.3F

[2] https://www.freebsd.org/cgi/man.cgi?query=accept4&apropos=0&sektion=0&manpath=FreeBSD+10.0-RELEASE&arch=default&format=html

[3] https://lists.debian.org/debian-bsd/2013/09/msg00157.html