[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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.