inclhack.def (aix_stdio_inline): New fix.
authorDavid Edelsohn <dje.gcc@gmail.com>
Fri, 14 Aug 2015 11:17:29 +0000 (11:17 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Fri, 14 Aug 2015 11:17:29 +0000 (07:17 -0400)
        * inclhack.def (aix_stdio_inline): New fix.
        (aix_strtof_const): Limit to *-*-aix*.
        (aix_sysmachine): Same.
        (aix_syswait_2): Same.
        (aix_volatile): Same.
        * fixincl.x: Regenerated.
        * test/base/stdio.h [AIX_STDIO_INLINE]: New test.

From-SVN: r226891

fixincludes/ChangeLog
fixincludes/fixincl.x
fixincludes/inclhack.def
fixincludes/tests/base/stdio.h

index e22e7c62c76e7fa9749778690c252a520e4c052d..26f697ad1896204cfdf12f6425dcc4be2baf8fac 100644 (file)
@@ -1,3 +1,13 @@
+2015-08-14  David Edelsohn  <dje.gcc@gmail.com>
+
+       * inclhack.def (aix_stdio_inline): New fix.
+       (aix_strtof_const): Limit to *-*-aix*.
+       (aix_sysmachine): Same.
+       (aix_syswait_2): Same.
+       (aix_volatile): Same.
+       * fixincl.x: Regenerated.
+       * test/base/stdio.h [AIX_STDIO_INLINE]: New test.
+
 2015-07-28  Eric Gallager  <egall@gwmail.gwu.edu>
 
        * check.tpl: Ignore .DS_Store directories.
index d796014275e6d423c9c346bb8f155ed851636500..79af6d10f55c88867d73d78e66ae555b511d98b8 100644 (file)
@@ -1,12 +1,12 @@
 /*  -*- buffer-read-only: t -*- vi: set ro:
- * 
- * DO NOT EDIT THIS FILE   (fixincl.x)
- * 
- * It has been AutoGen-ed  May 21, 2015 at 02:48:12 AM by AutoGen 5.18.3
- * From the definitions    inclhack.def
- * and the template file   fixincl
+ *
+ *DO NOT EDIT THIS FILE   (fixincl.x)
+ *
+ *It has been AutoGen-ed  August 13, 2015 at 05:25:50 PM by AutoGen 5.18.3
+ *From the definitions    inclhack.def
+ *and the template file   fixincl
  */
-/* DO NOT SVN-MERGE THIS FILE, EITHER Thu May 21 02:48:12 UTC 2015
+/* DO NOT SVN-MERGE THIS FILE, EITHER Thu Aug 13 17:25:50 UTC 2015
  *
  * You must regenerate it.  Use the ./genfixes script.
  *
@@ -15,7 +15,7 @@
  * certain ANSI-incompatible system header files which are fixed to work
  * correctly with ANSI C and placed in a directory that GNU C will search.
  *
- * This file contains 229 fixup descriptions.
+ * This file contains 230 fixup descriptions.
  *
  * See README for more information.
  *
@@ -1501,6 +1501,50 @@ static const char* apzAix_Stdint_5Patch[] = {
 #define UINT16_C(c)\tc",
     (char*)NULL };
 
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ *  Description of Aix_Stdio_Inline fix
+ */
+tSCC zAix_Stdio_InlineName[] =
+     "aix_stdio_inline";
+
+/*
+ *  File name selection pattern
+ */
+tSCC zAix_Stdio_InlineList[] =
+  "stdio.h\0";
+/*
+ *  Machine/OS name selection pattern
+ */
+tSCC* apzAix_Stdio_InlineMachs[] = {
+        "*-*-aix*",
+        (const char*)NULL };
+
+/*
+ *  content selection pattern - do fix if pattern found
+ */
+tSCC zAix_Stdio_InlineSelect0[] =
+       "#ifdef __cplusplus\\\n\
+}\\\n\
+\\\n\
+#ifdef ferror\\\n";
+
+#define    AIX_STDIO_INLINE_TEST_CT  1
+static tTestDesc aAix_Stdio_InlineTests[] = {
+  { TT_EGREP,    zAix_Stdio_InlineSelect0, (regex_t*)NULL }, };
+
+/*
+ *  Fix Command Arguments for Aix_Stdio_Inline
+ */
+static const char* apzAix_Stdio_InlinePatch[] = {
+    "format",
+    "#ifdef __cplusplus\n\
+}\n\
+#endif\n\n\
+#if (defined(__cplusplus) && defined(__IBMCPP__))\n\
+#ifdef ferror\n",
+    (char*)NULL };
+
 /* * * * * * * * * * * * * * * * * * * * * * * * * *
  *
  *  Description of Aix_Strtof_Const fix
@@ -1516,7 +1560,9 @@ tSCC zAix_Strtof_ConstList[] =
 /*
  *  Machine/OS name selection pattern
  */
-#define apzAix_Strtof_ConstMachs (const char**)NULL
+tSCC* apzAix_Strtof_ConstMachs[] = {
+        "*-*-aix*",
+        (const char*)NULL };
 
 /*
  *  content selection pattern - do fix if pattern found
@@ -1551,7 +1597,9 @@ tSCC zAix_SysmachineList[] =
 /*
  *  Machine/OS name selection pattern
  */
-#define apzAix_SysmachineMachs (const char**)NULL
+tSCC* apzAix_SysmachineMachs[] = {
+        "*-*-aix*",
+        (const char*)NULL };
 
 /*
  *  content selection pattern - do fix if pattern found
@@ -1586,7 +1634,9 @@ tSCC zAix_Syswait_2List[] =
 /*
  *  Machine/OS name selection pattern
  */
-#define apzAix_Syswait_2Machs (const char**)NULL
+tSCC* apzAix_Syswait_2Machs[] = {
+        "*-*-aix*",
+        (const char*)NULL };
 
 /*
  *  content selection pattern - do fix if pattern found
@@ -1621,7 +1671,9 @@ tSCC zAix_VolatileList[] =
 /*
  *  Machine/OS name selection pattern
  */
-#define apzAix_VolatileMachs (const char**)NULL
+tSCC* apzAix_VolatileMachs[] = {
+        "*-*-aix*",
+        (const char*)NULL };
 
 /*
  *  content selection pattern - do fix if pattern found
@@ -9396,9 +9448,9 @@ static const char* apzX11_SprintfPatch[] = {
  *
  *  List of all fixes
  */
-#define REGEX_COUNT          266
+#define REGEX_COUNT          267
 #define MACH_LIST_SIZE_LIMIT 187
-#define FIX_COUNT            229
+#define FIX_COUNT            230
 
 /*
  *  Enumerate the fixes
@@ -9435,6 +9487,7 @@ typedef enum {
     AIX_STDINT_3_FIXIDX,
     AIX_STDINT_4_FIXIDX,
     AIX_STDINT_5_FIXIDX,
+    AIX_STDIO_INLINE_FIXIDX,
     AIX_STRTOF_CONST_FIXIDX,
     AIX_SYSMACHINE_FIXIDX,
     AIX_SYSWAIT_2_FIXIDX,
@@ -9791,6 +9844,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
      AIX_STDINT_5_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
      aAix_Stdint_5Tests,   apzAix_Stdint_5Patch, 0 },
 
+  {  zAix_Stdio_InlineName,    zAix_Stdio_InlineList,
+     apzAix_Stdio_InlineMachs,
+     AIX_STDIO_INLINE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+     aAix_Stdio_InlineTests,   apzAix_Stdio_InlinePatch, 0 },
+
   {  zAix_Strtof_ConstName,    zAix_Strtof_ConstList,
      apzAix_Strtof_ConstMachs,
      AIX_STRTOF_CONST_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
index 89c7aa8d93879ecaa92930587448df1423b34a02..fc72add35dc70f9404c8e777f8f430912c14fe9e 100644 (file)
@@ -891,11 +891,33 @@ fix = {
                "#define UINT16_C(c)    __CONCAT__(c,U)";
 };
 
+/*
+ * stdio.h on AIX defines ferror, clearerr and feof as C++ inline, which
+   produces wrong code with G++.
+ */
+fix = {
+    hackname  = aix_stdio_inline;
+    mach      = "*-*-aix*";
+    files     = stdio.h;
+    select    = "#ifdef __cplusplus\\\n"
+                "}\\\n\\\n"
+                "#ifdef ferror\\\n";
+    c_fix     = format;
+    c_fix_arg = "#ifdef __cplusplus\n"
+                "}\n"
+                "#endif\n\n"
+                "#if (defined(__cplusplus) && defined(__IBMCPP__))\n"
+                "#ifdef ferror\n";
+    test_text = "#ifdef __cplusplus\n}\n\n#ifdef ferror";
+};
+
+
 /*
  * stdlib.h on AIX 4.3 declares strtof() with a non-const first argument.
  */
 fix = {
     hackname  = aix_strtof_const;
+    mach      = "*-*-aix*";
     files     = stdlib.h;
     select    = "((extern[ \t]+)?float[ \t]+strtof)\\(char \\*, char \\*\\*\\);";
     c_fix     = format;
@@ -909,6 +931,7 @@ fix = {
  */
 fix = {
     hackname  = aix_sysmachine;
+    mach      = "*-*-aix*";
     files     = sys/machine.h;
     select    = "\\\\ +\n";
     c_fix     = format;
@@ -923,6 +946,7 @@ fix = {
  */
 fix = {
     hackname  = aix_syswait_2;
+    mach      = "*-*-aix*";
     files     = sys/wait.h;
     select    = '\? (\(\(\(\(unsigned[^)]*\)[^)]*\) >> [^)]*\) \& 0xff\) : -1)';
     c_fix     = format;
@@ -939,6 +963,7 @@ fix = {
  */
 fix = {
     hackname  = aix_volatile;
+    mach      = "*-*-aix*";
     files     = sys/signal.h;
     select    = "typedef volatile int sig_atomic_t";
     c_fix     = format;
index 975d0a52168d2d02243c20824c9ab4837fb733ef..275931c52ccdf1dafc75f70454f6ed7ac0184ded 100644 (file)
 #endif  /* AAB_AIX_STDIO_CHECK */
 
 
+#if defined( AIX_STDIO_INLINE_CHECK )
+#ifdef __cplusplus
+}
+#endif
+
+#if (defined(__cplusplus) && defined(__IBMCPP__))
+#ifdef ferror
+#endif  /* AIX_STDIO_INLINE_CHECK */
+
+
 #if defined( ALPHA_GETOPT_CHECK )
 extern int getopt(int, char *const[], const char *);
 #endif  /* ALPHA_GETOPT_CHECK */