Subject: Re: [PATCH RFC] CYGWIN: avoid implicit declaration warning

From: Ramsay Jones <[email-masked]>
Date: Mon, 24 Nov 2014 21:41:22 +0000

On 24/11/14 17:59, Jonathan Nieder wrote:
> Torsten Bögershausen wrote:
> 
>> gcc under cygwin reports several warnings like this:
>>
>>  warning: implicit declaration of function 'memmem'
>>   [-Wimplicit-function-declaration]
>>
>> This has been observed under CYGWIN-32 with GCC 4.7.3 as well
>> as CYGWIN-64 with gcc v4.8.3-5 x86-64
>>
>> Do not #define _XOPEN_SOURCE 600 for CYGWIN.
>>
>> Reported-by: Ramsay Jones <[email-masked]>
>> Signed-off-by: Torsten Bögershausen <[email-masked]>
>> ---
>> This may be a start for a patch, tested under CYGWIN-32,
>> both Windows7 and XP
> 
> The "tested under" part would also be a good addition to the commit
> message.
> 
>>  git-compat-util.h | 3 ++-
>>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> Patch looks good to me.  Do you know if this has been reported to the
> Cygwin maintainers?

As I said in an earlier email, I have searched the cygwin mailing list
(a few days ago now), but this issue had not been mentioned (modulo my
poor list searching fu!).

However, since I don't want to subscribe to (yet another) busy mailing
list, I won't be reporting this issue there. (If someone on this list
is already subscribed to that list, then ... ;-) ).

>                       The behavior seems counterintuitive --- I would
> expect _GNU_SOURCE to override everything else (since I thought that
> was the point of _GNU_SOURCE).

I had that impression too, but I need to read some more first.

Also, my theory about the cause of the problem has changed slightly
this evening, after booting up my old laptop and looking at an old
32-bit cygwin installation.

Rather than a change to '..../sys/cdefs.h' which changed the priority
of _XOPEN_SOURCE, it seems that it was the <string.h> header that
changed; those functions used to be declared unconditionally, whereas
the new headers have them within preprocessor conditionals.

ATB,
Ramsay Jones