Hi FX,

> On 10 Jul 2024, at 16:25, FX Coudert <fxcoud...@gmail.com> wrote:
> 
> I found another useless fixincludes on darwin, but this one was a bit harder 
> to diagnose. GCC trunk applies a fix to <stdio.h> on modern Darwin: it is 
> stdio_stdarg_h. That fix is actually part of a pair, along with 
> stdio_va_list, and they appear to work around issues with some old Unix (or 
> BSD?) headers and the definition of va_list. It is not entirely clear to me 
> what they fix, but they have been here forever.
> 
> They use various bypass mechanisms, but those are fragile. I have no idea if 
> the fix is actually needed on any still-supported system, and maybe some 
> global reviewer might want to remove it. But for now, I only want to bypass 
> the fix on Darwin: it is useless there, and applying it makes our builds more 
> fragile (and sensitive to the SDK version). Solaris has already opted out 
> years ago, and now we do the same.
> 
> To show the madness of this fix, the macOS headers actually contain a comment 
> that is supposed to trigger the bypass:
> 
> /* DO NOT REMOVE THIS COMMENT: fixincludes needs to see:
> * __gnuc_va_list and include <stdarg.h> */
> 
> This kludge was added to the Apple headers in Libc-391 released around 2004. 
> But it recently became ineffective, due to the majority of the content of 
> <stdio.h> being moved into <_stdio.h> (which is not covered by fixincludes).
> 
> Anyway, the only sane thing to do is to disarm this fix on darwin, as the 
> attached patch does.

Right, if the comment was added in 2004, we have no still-supported OS versions 
that are relevant,

> Tested on aarch64-apple-darwin24, OK to push?

Yes, OK for trunk, and backports after some bake time,
thanks for the patch,
Iain

> 
> FX
> 
> 
> 
> PS: With that patch, only two fixincludes remain active for latest darwin:
> - handling of __FLT_EVAL_METHOD__ == 16 in math.h (I have reported this as a 
> bug)
> - handling of Apple’s “deprecated” functions: gets, sprintf, tmpnam, 
> vsprintf, tempnam
> 
> <0001-fixincludes-skip-stdio_stdarg_h-on-darwin.patch>

Reply via email to