Subject: bug#22522: Commit b88e9cded7ae3756e3a2ec4a23e8df352a0239f9 breaks emacs dumping for me

From: Ken Brown <[email-masked]>
Date: Tue, 2 Feb 2016 17:08:25 -0500

On 2/2/2016 3:25 PM, Ken Brown wrote:
> On 2/2/2016 9:20 AM, Wolfgang Jenkner wrote:
>> On Mon, Feb 01 2016, Ken Brown wrote:
>>
>>> ../../master/src/alloc.c: In function ‘lisp_align_malloc’:
>>> ../../master/src/alloc.c:1247:7: warning: implicit declaration of
>>> function ‘hybrid_aligned_alloc’ [-Wimplicit-function-declaration]
>>
>> Before Paul's 7fdc3cf, src/alloc.c used to contain a declaration for
>> aligned_alloc(), which a preprocessor definition turned into
>> a declaration for hybrid_aligned_alloc().  The preprocessor definition
>> was redundant as it is contained in src/conf_post.h as well, but the
>> declaration has to be supplied by some other include file.
>>
>> (For FreeBSD, stdlib.h, which alloc.c includes, supplies the
>> declaration, guarded by #if __ISO_C_VISIBLE >= 2011 || __cplusplus >=
>> 201103L, which is true by default, at least on FreeBSD 10).
>
> Cygwin's stdlib.h also has the declaration with the same guard.  But for
> some reason, alloc.c is still not getting the declaration.  I'll have to
> figure out what's going on.

OK, here's what's happening.  config.h defines _GNU_SOURCE.  The 
following excerpt from /usr/include/sys/cdefs.h then causes 
__ISO_C_VISIBLE to be defined as 1999, thereby hiding the declaration of 
aligned_alloc:

#ifdef _GNU_SOURCE
[...]
#define	_XOPEN_SOURCE		700
[...]
#endif
[...]
#if _XOPEN_SOURCE - 0 >= 700
[...]
#define	_POSIX_C_SOURCE		200809
[...]
#endif
[...]
#if _POSIX_C_SOURCE >= 200809
[...]
#define	__ISO_C_VISIBLE		1999
[...]
#endif /* _POSIX_C_SOURCE */

Paul, I can ask on the Cygwin list whether this should be changed to be 
more in line with other platforms.  In the meantime, what's the best way 
to deal with this?

Ken