aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/fixincludes/fixincl.tpl
diff options
context:
space:
mode:
authorBen Cheng <bccheng@google.com>2014-03-26 05:37:19 (GMT)
committerBen Cheng <bccheng@google.com>2014-03-26 05:37:19 (GMT)
commit1bc5aee63eb72b341f506ad058502cd0361f0d10 (patch)
treec607e8252f3405424ff15bc2d00aa38dadbb2518 /gcc-4.9/fixincludes/fixincl.tpl
parent283a0bf58fcf333c58a2a92c3ebbc41fb9eb1fdb (diff)
downloadtoolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.zip
toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.gz
toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.bz2
Initial checkin of GCC 4.9.0 from trunk (r208799).
Change-Id: I48a3c08bb98542aa215912a75f03c0890e497dba
Diffstat (limited to 'gcc-4.9/fixincludes/fixincl.tpl')
-rw-r--r--gcc-4.9/fixincludes/fixincl.tpl237
1 files changed, 237 insertions, 0 deletions
diff --git a/gcc-4.9/fixincludes/fixincl.tpl b/gcc-4.9/fixincludes/fixincl.tpl
new file mode 100644
index 0000000..c8d4b2c
--- /dev/null
+++ b/gcc-4.9/fixincludes/fixincl.tpl
@@ -0,0 +1,237 @@
+[= AutoGen5 Template -*- Mode: C -*-
+x=fixincl.x =]
+[= (dne " * " "/* ")=]
+ */
+/* DO NOT SVN-MERGE THIS FILE, EITHER [=
+ (define re-ct 0) (define max-mach 0) (define ct 0)
+ (define HACK "") (define Hack "") (define tmp "")
+ (shell "date") =]
+ *
+ * You must regenerate it. Use the ./genfixes script.
+ *
+ *
+ * This is part of the fixincl program used to install modified versions of
+ * 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 [=(count "fix")=] fixup descriptions.
+ *
+ * See README for more information.
+ *
+ * inclhack copyright (c) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+ * 2006, 2007, 2008
+ * The Free Software Foundation, Inc.
+ *
+ * inclhack is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * inclhack is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef SED_PROGRAM
+#define SED_PROGRAM "/usr/bin/sed"
+#endif
+static char const sed_cmd_z[] = SED_PROGRAM;
+[=
+
+FOR fix =]
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of [=
+ (set! Hack (string-capitalize! (get "hackname")))
+ (set! HACK (string-upcase! (get "hackname")))
+ (if (and (not (exist? "test_text")) (not (exist? "replace")))
+ (error (sprintf "include fix '%s' has no test text" Hack )) )
+ (. Hack)=] fix
+ */[=
+
+# Note that this is not just for debugging purposes, but in case
+ some C fix wishes to refer to the regexps it is paired with.
+ See commentary at the top of fixfixes.c.
+=]
+tSCC z[=(. Hack)=]Name[] =
+ "[=hackname=]";
+
+/*
+ * File name selection pattern
+ */[=
+
+ IF (exist? "files")=]
+tSCC z[=(. Hack)=]List[] =
+ "[= (join "\\0" (stack "files")) =]\0";[=
+
+ ELSE =]
+#define z[=(. Hack)=]List (char*)NULL[=
+ ENDIF (exist? "files") =]
+/*
+ * Machine/OS name selection pattern
+ */[=
+
+ IF (exist? "mach")=]
+tSCC* apz[=(. Hack)=]Machs[] = {[=
+ (set! ct 0) =][=
+
+ FOR mach =]
+ [=
+ (set! tmp (get "mach"))
+ (set! ct (+ ct (string-length tmp) 5))
+ (kr-string tmp)=],[=
+ ENDFOR=]
+ (const char*)NULL };[=
+
+ (if (> ct max-mach) (set! max-mach ct)) =][=
+
+ ELSE =]
+#define apz[=(. Hack)=]Machs (const char**)NULL[=
+ ENDIF (exist? "mach") =][=
+
+ IF (exist? "select")=]
+
+/*
+ * content selection pattern - do fix if pattern found
+ */[=
+ FOR select =]
+tSCC z[=(. Hack)=]Select[=(for-index)=][] =
+ [=(kr-string (get "select"))=];[=
+ ENDFOR select =][=
+ ENDIF =][=
+
+ IF (exist? "bypass")=]
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */[=
+ FOR bypass =]
+tSCC z[=(. Hack)=]Bypass[=(for-index)=][] =
+ [=(kr-string (get "bypass"))=];[=
+ ENDFOR bypass =][=
+ ENDIF =][=
+
+ IF (exist? "test")=]
+
+/*
+ * perform the 'test' shell command - do fix on success
+ */[=
+ FOR test =]
+tSCC z[=(. Hack)=]Test[=(for-index)=][] =
+ [=(kr-string (get "test"))=];[=
+ ENDFOR =][=
+ ENDIF =][=
+
+ IF (exist? "c_test")=]
+
+/*
+ * perform the C function call test
+ */[=
+ FOR c_test =]
+tSCC z[=(. Hack)=]FTst[=(for-index)=][] = "[=c_test=]";[=
+ ENDFOR c_test =][=
+ ENDIF =][=
+
+ IF (set! ct (+ (count "select") (count "bypass")
+ (count "test") (count "c_test")))
+
+ (= ct 0)
+=]
+#define [=(. HACK)=]_TEST_CT 0
+#define a[=(. Hack)=]Tests (tTestDesc*)NULL[=
+ ELSE =]
+
+#define [=(. HACK)=]_TEST_CT [=(. ct)=][=
+ (set! re-ct (+ re-ct (count "select") (count "bypass"))) =]
+static tTestDesc a[=(. Hack)=]Tests[] = {[=
+
+ FOR test =]
+ { TT_TEST, z[=(. Hack)=]Test[=(for-index)=], 0 /* unused */ },[=
+ ENDFOR test =][=
+
+ FOR c_test =]
+ { TT_FUNCTION, z[=(. Hack)=]FTst[=(for-index)=], 0 /* unused */ },[=
+ ENDFOR c_test =][=
+
+ FOR bypass =]
+ { TT_NEGREP, z[=(. Hack)=]Bypass[=(for-index)=], (regex_t*)NULL },[=
+ ENDFOR bypass =][=
+
+ FOR select =]
+ { TT_EGREP, z[=(. Hack)=]Select[=(for-index)=], (regex_t*)NULL },[=
+ ENDFOR select =] };[=
+ ENDIF =]
+
+/*
+ * Fix Command Arguments for [=(. Hack)=]
+ */
+static const char* apz[=(. Hack)=]Patch[] = {[=
+ IF (exist? "sed")=] sed_cmd_z[=
+ FOR sed=],
+ "-e", [=(kr-string (get "sed"))=][=
+ ENDFOR sed=],[=
+
+ ELIF (exist? "shell")=] "sh", "-c",
+ [=(kr-string (get "shell"))=],[=
+
+ ELIF (exist? "c_fix")=]
+ [=(kr-string (get "c_fix"))=],[=
+
+ FOR c_fix_arg =]
+ [=(kr-string (get "c_fix_arg"))=],[=
+ ENDFOR c_fix_arg =][=
+
+ ELIF (> (len "replace") 0) =]
+[=(kr-string (get "replace"))=],[=
+
+ ENDIF=]
+ (char*)NULL };
+[=ENDFOR fix=]
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * List of all fixes
+ */[=
+# as of this writing, 49 bytes are needed by the case statement format.
+ We also must allow for the size of the target machine machine name.
+ This allows for a 79 byte machine name. Better be enough.
+=]
+#define REGEX_COUNT [= (. re-ct) =]
+#define MACH_LIST_SIZE_LIMIT [= (+ 128 max-mach) =]
+#define FIX_COUNT [= (count "fix") =]
+
+/*
+ * Enumerate the fixes[= # in a way that minimizes diffs :-) =]
+ */
+typedef enum {[=
+
+FOR fix "," =]
+ [=(string-upcase! (get "hackname"))=]_FIXIDX[=
+ENDFOR
+
+=]
+} t_fixinc_idx;
+
+tFixDesc fixDescList[ FIX_COUNT ] = {[=
+
+
+FOR fix ",\n" =][=
+ (set! Hack (string-capitalize! (get "hackname")))
+ (set! HACK (string-upcase! (get "hackname"))) =]
+ { z[=(. Hack)=]Name, z[=(. Hack)=]List,
+ apz[=(. Hack)=]Machs,
+ [=(. HACK)=]_TEST_CT, [=
+ IF (exist? "not_machine") =]FD_MACH_IFNOT[=
+ ELSE =]FD_MACH_ONLY[=
+ ENDIF =][=
+ IF (exist? "shell") =] | FD_SHELL_SCRIPT[=
+ ELIF (exist? "c_fix") =] | FD_SUBROUTINE[=
+ ELIF (exist? "replace") =] | FD_REPLACEMENT[=
+ ENDIF =],
+ a[=(. Hack)=]Tests, apz[=(. Hack)=]Patch, 0 }[=
+
+ENDFOR =]
+};