From d8082c18c88227ba1747ce06833858cc1ea16aa0 Mon Sep 17 00:00:00 2001 From: David Edelsohn Date: Fri, 14 Aug 2015 11:17:29 +0000 Subject: inclhack.def (aix_stdio_inline): New fix. * 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 | 10 +++++ fixincludes/fixincl.x | 86 +++++++++++++++++++++++++++++++++++------- fixincludes/inclhack.def | 25 ++++++++++++ fixincludes/tests/base/stdio.h | 10 +++++ 4 files changed, 117 insertions(+), 14 deletions(-) (limited to 'fixincludes') diff --git a/fixincludes/ChangeLog b/fixincludes/ChangeLog index e22e7c62c76..26f697ad189 100644 --- a/fixincludes/ChangeLog +++ b/fixincludes/ChangeLog @@ -1,3 +1,13 @@ +2015-08-14 David Edelsohn + + * 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 * check.tpl: Ignore .DS_Store directories. diff --git a/fixincludes/fixincl.x b/fixincludes/fixincl.x index d796014275e..79af6d10f55 100644 --- a/fixincludes/fixincl.x +++ b/fixincludes/fixincl.x @@ -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, diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def index 89c7aa8d938..fc72add35dc 100644 --- a/fixincludes/inclhack.def +++ b/fixincludes/inclhack.def @@ -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; diff --git a/fixincludes/tests/base/stdio.h b/fixincludes/tests/base/stdio.h index 975d0a52168..275931c52cc 100644 --- a/fixincludes/tests/base/stdio.h +++ b/fixincludes/tests/base/stdio.h @@ -19,6 +19,16 @@ #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 */ -- cgit v1.2.3