mirror of
https://forge.sourceware.org/marek/gcc.git
synced 2026-02-22 03:47:02 -05:00
fixincludes: skip stdio_stdarg_h on modern darwin
All macOS SDK since at least macOS 10.9, and until macOS 10.12 (included), feature these lines in <stdio.h>: /* DO NOT REMOVE THIS COMMENT: fixincludes needs to see: * __gnuc_va_list and include <stdarg.h> */ The clear intent (and effect) was to bypass gcc’s stdio_stdarg_h fixinclude. However, since macOS 10.13, these lines have been moved to <_stdio.h>, which is itself included at the top of <stdio.h>. The unintended consequence is that the stdio_stdarg_h fixinclude is now applied to macOS <stdio.h>, where it is not needed. This useless fixinclude makes the compiler more fragile and less portable. A previous attempt to skip the stdio_stdarg_h fix entirely had to be reverted, since it broken some very old macOS versions. The new fix is to bypass the fix based on the detection of <_stdio.h> inclusion, which is more robust. fixincludes/ChangeLog: * fixincl.x: Regenerate. * inclhack.def (stdio_stdarg_h): Skip on darwin.
This commit is contained in:
@@ -2,11 +2,11 @@
|
||||
*
|
||||
* DO NOT EDIT THIS FILE (fixincl.x)
|
||||
*
|
||||
* It has been AutoGen-ed July 10, 2024 at 02:49:05 PM by AutoGen 5.18.16
|
||||
* It has been AutoGen-ed June 13, 2025 at 01:47:24 PM by AutoGen 5.18.16
|
||||
* From the definitions inclhack.def
|
||||
* and the template file fixincl
|
||||
*/
|
||||
/* DO NOT SVN-MERGE THIS FILE, EITHER Wed Jul 10 14:49:05 CEST 2024
|
||||
/* DO NOT SVN-MERGE THIS FILE, EITHER Fri Jun 13 13:47:24 CEST 2025
|
||||
*
|
||||
* You must regenerate it. Use the ./genfixes script.
|
||||
*
|
||||
@@ -8981,7 +8981,7 @@ tSCC* apzStdio_Stdarg_HMachs[] = {
|
||||
* content bypass pattern - skip fix if pattern found
|
||||
*/
|
||||
tSCC zStdio_Stdarg_HBypass0[] =
|
||||
"include.*(stdarg.h|machine/ansi.h)";
|
||||
"include.*(stdarg.h|machine/ansi.h|_stdio.h)";
|
||||
|
||||
#define STDIO_STDARG_H_TEST_CT 1
|
||||
static tTestDesc aStdio_Stdarg_HTests[] = {
|
||||
|
||||
@@ -4472,13 +4472,13 @@ fix = {
|
||||
|
||||
/*
|
||||
* Arrange for stdio.h to use stdarg.h to define __gnuc_va_list.
|
||||
* On 4BSD-derived systems, stdio.h defers to machine/ansi.h; that's
|
||||
* OK too.
|
||||
* On 4BSD-derived systems, stdio.h defers to machine/ansi.h, that's
|
||||
* OK too. modern macOS includes _stdio.h, and does not need the fix.
|
||||
*/
|
||||
fix = {
|
||||
hackname = stdio_stdarg_h;
|
||||
files = stdio.h;
|
||||
bypass = "include.*(stdarg\.h|machine/ansi\.h)";
|
||||
bypass = "include.*(stdarg\.h|machine/ansi\.h|_stdio\.h)";
|
||||
/*
|
||||
* On Solaris 10, this fix is unncessary; <stdio.h> includes
|
||||
* <iso/stdio_iso.h>, which includes <sys/va_list.h>.
|
||||
|
||||
Reference in New Issue
Block a user