[PATCH 3/3] fixincludes: Remove unnecessary OpenBSD fixes
Pietro Monteiro <[email protected]>
| Newsgroups | gmane.comp.gcc.patches |
|---|---|
| Message-ID | <[email protected]> |
These fixes break building GCC on OpenBSD. Specially stdio_va_list_clients, which creates a broken wchar.h and makes libstdc++ configure test for mbstate_t fail. Bypass the fixes by checking for <sys/_types.h>. fixincludes/ChangeLog: * fixincl.x: Regenerate. * inclhack.def (stdio_stdarg_h): Add bypass for OpenBSD. (stdio_va_list): Likewise. (stdio_va_list_clients): Likewise. Signed-off-by: Pietro Monteiro <[email protected]> --- fixincludes/fixincl.x | 10 +++++----- fixincludes/inclhack.def | 11 +++++++---- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/fixincludes/fixincl.x b/fixincludes/fixincl.x index 9db4d376a2e..8b2c5201f4f 100644 --- a/fixincludes/fixincl.x +++ b/fixincludes/fixincl.x @@ -2,11 +2,11 @@ * * DO NOT EDIT THIS FILE (fixincl.x) * - * It has been AutoGen-ed February 15, 2026 at 11:11:08 PM by AutoGen 5.18.12 + * It has been AutoGen-ed August 7, 2026 at 02:06:50 PM by AutoGen 5.18.16 * From the definitions inclhack.def * and the template file fixincl */ -/* DO NOT MERGE THIS FILE, EITHER Sun Feb 15 23:11:08 CET 2026 +/* DO NOT MERGE THIS FILE, EITHER Fri Aug 7 14:06:50 PDT 2026 * * You must regenerate it. Use the ./genfixes script. * @@ -8058,7 +8058,7 @@ tSCC* apzStdio_Stdarg_HMachs[] = { * content bypass pattern - skip fix if pattern found */ tSCC zStdio_Stdarg_HBypass0[] = - "include.*(stdarg.h|machine/ansi.h|_stdio.h)"; + "include.*(stdarg.h|machine/ansi.h|_stdio.h|sys/_types.h)"; #define STDIO_STDARG_H_TEST_CT 1 static tTestDesc aStdio_Stdarg_HTests[] = { @@ -8096,7 +8096,7 @@ tSCC* apzStdio_Va_ListMachs[] = { * content bypass pattern - skip fix if pattern found */ tSCC zStdio_Va_ListBypass0[] = - "__gnuc_va_list|_BSD_VA_LIST_|__DJ_va_list|_G_va_list|_stdio.h"; + "__gnuc_va_list|_BSD_VA_LIST_|__DJ_va_list|_G_va_list|_stdio.h|sys/_types.h"; #define STDIO_VA_LIST_TEST_CT 1 static tTestDesc aStdio_Va_ListTests[] = { @@ -8145,7 +8145,7 @@ tSCC* apzStdio_Va_List_ClientsMachs[] = { * content bypass pattern - skip fix if pattern found */ tSCC zStdio_Va_List_ClientsBypass0[] = - "__gnuc_va_list|_BSD_VA_LIST_|__DJ_va_list|_G_va_list"; + "__gnuc_va_list|_BSD_VA_LIST_|__DJ_va_list|_G_va_list|sys/_types.h\";"; tSCC zStdio_Va_List_ClientsBypass1[] = "include <stdarg\\.h>|#ifdef va_start"; diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def index 20a7e8ef977..6e391d2dbc0 100644 --- a/fixincludes/inclhack.def +++ b/fixincludes/inclhack.def @@ -4003,11 +4003,12 @@ 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. Modern macOS includes _stdio.h, and does not need the fix. + * OpenBSD includes machine/_types.h via sys/_types.h, which is fine. */ fix = { hackname = stdio_stdarg_h; files = stdio.h; - bypass = "include.*(stdarg\.h|machine/ansi\.h|_stdio\.h)"; + bypass = "include.*(stdarg\.h|machine/ansi\.h|_stdio\.h|sys/_types\.h)"; /* * On Solaris 10+, this fix is unnecessary; <stdio.h> includes * <iso/stdio_iso.h>, which includes <sys/va_list.h>. @@ -4029,11 +4030,12 @@ fix = { * indicate that the header knows what it's doing -- under SUSv2, * stdio.h is required to define va_list, and we shouldn't break * that. Modern macOS includes _stdio.h, and does not need the fix. + * OpenBSD includes machine/_types.h via sys/_types.h and is OK too. */ fix = { hackname = stdio_va_list; files = stdio.h; - bypass = '__gnuc_va_list|_BSD_VA_LIST_|__DJ_va_list|_G_va_list|_stdio.h'; + bypass = '__gnuc_va_list|_BSD_VA_LIST_|__DJ_va_list|_G_va_list|_stdio.h|sys/_types.h'; /* * On Solaris 10+, the definition in <stdio.h> is guarded appropriately * by the _XPG4 feature macro. @@ -4073,7 +4075,8 @@ fix = { * va_list from the stdio_va_list change. Note _BSD_VA_LIST_ is * dealt with elsewhere. The presence of __gnuc_va_list, * __DJ_va_list, or _G_va_list is taken to indicate that the header - * knows what it's doing. + * knows what it's doing. OpenBSD uses __va_list from machine/_types.h + * via sys/_types.h and doesn't need this fix. */ fix = { hackname = stdio_va_list_clients; @@ -4085,7 +4088,7 @@ fix = { files = pfmt.h; files = wchar.h; files = curses_colr/curses.h; - bypass = '__gnuc_va_list|_BSD_VA_LIST_|__DJ_va_list|_G_va_list'; + bypass = '__gnuc_va_list|_BSD_VA_LIST_|__DJ_va_list|_G_va_list|sys/_types.h";'; /* Don't fix, if we use va_list from stdarg.h, or if the use is otherwise protected. */ bypass = 'include <stdarg\.h>|#ifdef va_start'; -- 2.54.0