From bbf92edb2c9b2fd960b10d921f166fb4b05f3cbd Mon Sep 17 00:00:00 2001 From: Bruce Korb Date: Fri, 12 Mar 2010 03:49:08 +0000 Subject: [PATCH] the fixinc directory is now "fixincludes" From-SVN: r157398 --- fixincludes/README | 4 +-- fixincludes/fixincl.x | 65 ++++++++++++++++++++++++++++++++++++++++ fixincludes/inclhack.def | 39 ++++++++++++++++++++++++ 3 files changed, 106 insertions(+), 2 deletions(-) diff --git a/fixincludes/README b/fixincludes/README index 5536a34ec98..bd39a0c0469 100644 --- a/fixincludes/README +++ b/fixincludes/README @@ -45,7 +45,7 @@ To make your fix, you will need to do several things: "test_text" entry(ies) that validate your fix. This will help ensure that future fixes won't negate your work. -5. Go into the fixinc build directory and type, "make check". +5. Go into the fixincludes build directory and type, "make check". You are guaranteed to have issues printed out as a result. Look at the diffs produced. Make sure you have not clobbered the proper functioning of a different fix. Make sure your @@ -319,7 +319,7 @@ EXAMPLES OF FIXES: I would really recommend, however: - cd ${top_builddir}/gcc/fixinc + cd ${top_builddir}/fixincludes make check To do this, you *must* have autogen installed on your system. diff --git a/fixincludes/fixincl.x b/fixincludes/fixincl.x index fa05d88eedf..572637e8454 100644 --- a/fixincludes/fixincl.x +++ b/fixincludes/fixincl.x @@ -2,11 +2,19 @@ * * DO NOT EDIT THIS FILE (fixincl.x) * +<<<<<<< .mine + * It has been AutoGen-ed September 5, 2009 at 01:31:09 PM by AutoGen 5.9.9 +======= * It has been AutoGen-ed Friday January 29, 2010 at 04:49:43 PM MET +>>>>>>> .r157397 * From the definitions inclhack.def * and the template file fixincl */ +<<<<<<< .mine +/* DO NOT SVN-MERGE THIS FILE, EITHER Sat Sep 5 13:31:09 PDT 2009 +======= /* DO NOT SVN-MERGE THIS FILE, EITHER Fri Jan 29 16:49:43 MET 2010 +>>>>>>> .r157397 * * You must regenerate it. Use the ./genfixes script. * @@ -6114,6 +6122,63 @@ static const char* apzRs6000_ParamPatch[] = { /* * * * * * * * * * * * * * * * * * * * * * * * * * * +<<<<<<< .mine + * Description of Sco_Math fix + */ +tSCC zSco_MathName[] = + "sco_math"; + +/* + * File name selection pattern + */ +tSCC zSco_MathList[] = + "math.h\0*/math.h\0"; +/* + * Machine/OS name selection pattern + */ +#define apzSco_MathMachs (const char**)NULL + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zSco_MathSelect0[] = + "inline double abs"; + +/* + * content bypass pattern - skip fix if pattern found + */ +tSCC zSco_MathBypass0[] = + "__GNUG__"; + +#define SCO_MATH_TEST_CT 2 +static tTestDesc aSco_MathTests[] = { + { TT_NEGREP, zSco_MathBypass0, (regex_t*)NULL }, + { TT_EGREP, zSco_MathSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Sco_Math + */ +static const char* apzSco_MathPatch[] = { sed_cmd_z, + "-e", "/#define.*__fp_class(a) \\\\/i\\\n\ +#ifndef __GNUC__\n", + "-e", "/.*__builtin_generic/a\\\n\ +#else\\\n\ +#define __fp_class(a) \\\\\\\n\ +\\ __builtin_choose_expr(__builtin_types_compatible_p(typeof(a),long double),\\\\\\\n\ +\\ __fpclassifyl(a), \\\\\\\n\ +\\ __builtin_choose_expr(__builtin_types_compatible_p(typeof(a), float), \\\\\\\n\ +\\ __fpclassifyf(a),__fpclassify(a)))\\\n\ +#endif\n", + "-e", "/extern \"C++\"/N;/inline double abs/i\\\n\ +#ifndef __GNUC__\n", + "-e", "/inline long double trunc/N;/inline long double trunc.*}.*extern \"C++\"/a\\\n\ +#endif /* ! __GNUC__ */\n", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * +======= +>>>>>>> .r157397 * Description of Solaris_Complex fix */ tSCC zSolaris_ComplexName[] = diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def index 8240b7dcf2b..79295e6ecc8 100644 --- a/fixincludes/inclhack.def +++ b/fixincludes/inclhack.def @@ -3248,6 +3248,45 @@ fix = { /* +<<<<<<< .mine + * On OpenServer and on UnixWare 7, uses the native compiler + * __builtin_generic. We fix that usage to use the GCC equivalent. + * It also has a plethora of inline functions that conflict with libstdc++. + */ +fix = { + hackname = sco_math; + files = math.h, '*/math.h'; + select = "inline double abs"; + bypass = "__GNUG__"; + sed = "/#define.*__fp_class(a) \\\\/i\\\n" + "#ifndef __GNUC__\n"; + sed = +"/.*__builtin_generic/a\\\n" +"#else\\\n" +"#define __fp_class(a) \\\\\\\n" +"\\ __builtin_choose_expr(__builtin_types_compatible_p(typeof(a),long double),\\\\\\\n" +"\\ __fpclassifyl(a), \\\\\\\n" +"\\ __builtin_choose_expr(__builtin_types_compatible_p(typeof(a), float), \\\\\\\n" +"\\ __fpclassifyf(a),__fpclassify(a)))\\\n" +"#endif\n"; + + sed = "/extern \"C++\"/N;" + "/inline double abs/i\\\n" + "#ifndef __GNUC__\n"; + sed = "/inline long double trunc/N;" + "/inline long double trunc.*}.*extern \"C++\"/a\\\n" + "#endif /* ! __GNUC__ */\n"; + + test_text = + "#define __fp_class(a) \\\\\n" + " __builtin_generic(a,\"ld:__fplcassifyl;f:__fpclassifyf;:__fpclassify\")\n"; + +}; + + +/* +======= +>>>>>>> .r157397 * Solaris 10+ complex.h defines _Complex_I and _Imaginary_I in terms of * themselves, which are Sun Studio compiler intrinsics. Remove _Imaginary_I * and imaginary definitions which are not supported by GCC.