aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fixincludes/README4
-rw-r--r--fixincludes/fixincl.x65
-rw-r--r--fixincludes/inclhack.def39
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, <math.h> 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.