@@ -7,32 +7,16 @@ if [ -e gcc-builtins.h ] ; then
77 exit 1
88fi
99
10- echo Downloading http://gcc.gnu.org/svn/gcc/trunk/gcc/builtin-types.def
11- svn export http://gcc.gnu.org/svn/gcc/trunk/gcc/builtin-types.def > /dev/null
10+ builtin_defs=" \
11+ builtin-types.def builtins.def sync-builtins.def \
12+ omp-builtins.def gtm-builtins.def cilk-builtins.def cilkplus.def \
13+ sanitizer.def chkp-builtins.def hsa-builtins.def"
1214
13- echo Downloading http://gcc.gnu.org/svn/gcc/trunk/gcc/builtins.def
14- svn export http://gcc.gnu.org/svn/gcc/trunk/gcc/builtins.def > /dev/null
15-
16- echo Downloading http://gcc.gnu.org/svn/gcc/trunk/gcc/sync-builtins.def
17- svn export http://gcc.gnu.org/svn/gcc/trunk/gcc/sync-builtins.def > /dev/null
18-
19- echo Downloading http://gcc.gnu.org/svn/gcc/trunk/gcc/omp-builtins.def
20- svn export http://gcc.gnu.org/svn/gcc/trunk/gcc/omp-builtins.def > /dev/null
21-
22- echo Downloading http://gcc.gnu.org/svn/gcc/trunk/gcc/gtm-builtins.def
23- svn export http://gcc.gnu.org/svn/gcc/trunk/gcc/gtm-builtins.def > /dev/null
24-
25- echo Downloading http://gcc.gnu.org/svn/gcc/trunk/gcc/cilk-builtins.def
26- svn export http://gcc.gnu.org/svn/gcc/trunk/gcc/cilk-builtins.def > /dev/null
27-
28- echo Downloading http://gcc.gnu.org/svn/gcc/trunk/gcc/cilkplus.def
29- svn export http://gcc.gnu.org/svn/gcc/trunk/gcc/cilkplus.def > /dev/null
30-
31- echo Downloading http://gcc.gnu.org/svn/gcc/trunk/gcc/sanitizer.def
32- svn export http://gcc.gnu.org/svn/gcc/trunk/gcc/sanitizer.def > /dev/null
33-
34- echo Downloading http://gcc.gnu.org/svn/gcc/trunk/gcc/chkp-builtins.def
35- svn export http://gcc.gnu.org/svn/gcc/trunk/gcc/chkp-builtins.def > /dev/null
15+ for f in $builtin_defs ; do
16+ [ ! -s $f ] || continue
17+ echo Downloading http://gcc.gnu.org/svn/gcc/trunk/gcc/$f
18+ svn export http://gcc.gnu.org/svn/gcc/trunk/gcc/$f > /dev/null
19+ done
3620
3721cat > gcc-builtins.h << EOF
3822#include <inttypes.h>
@@ -78,6 +62,7 @@ cat > builtins.h <<EOF
7862#define uint32_type_node uint32_t
7963#define uint64_type_node uint64_t
8064#define pid_type_node pid_t
65+ #define const_tm_ptr_type_node const struct tm*
8166
8267// some newer versions of GCC apparently support __floatXYZ
8368#define dfloat32_type_node __float32
@@ -87,6 +72,7 @@ cat > builtins.h <<EOF
8772#define build_qualified_type(t, q) q t
8873#define build_pointer_type(t) t*
8974#define TYPE_QUAL_VOLATILE volatile
75+ #define TYPE_QUAL_CONST const
9076
9177#define DEF_PRIMITIVE_TYPE(ENUM, TYPE) \
9278NEXTDEF ENUM TYPE
@@ -106,11 +92,17 @@ NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ARG4, ARG5)
10692NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ARG4, ARG5, ARG6)
10793#define DEF_FUNCTION_TYPE_7(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7) \
10894NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7)
109- #define DEF_FUNCTION_TYPE_8(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8)
95+ #define DEF_FUNCTION_TYPE_8(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8) \
11096NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8)
97+ #define DEF_FUNCTION_TYPE_9(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8, ARG9) \
98+ NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8, ARG9)
99+ #define DEF_FUNCTION_TYPE_10(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8, ARG9, ARG10) \
100+ NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8, ARG9, ARG10)
101+ #define DEF_FUNCTION_TYPE_11(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8, ARG9, ARG10, ARG11) \
102+ NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8, ARG9, ARG10, ARG11)
111103
112104#define DEF_FUNCTION_TYPE_VAR_0(ENUM, RETURN) \
113- NEXTDEF ENUM(name) /* RETURN name(...) -- this is a macro */
105+ NEXTDEF ENUM(name) RETURN name()
114106#define DEF_FUNCTION_TYPE_VAR_1(ENUM, RETURN, ARG1) \
115107NEXTDEF ENUM(name) RETURN name(ARG1, ...)
116108#define DEF_FUNCTION_TYPE_VAR_2(ENUM, RETURN, ARG1, ARG2) \
@@ -121,6 +113,10 @@ NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ...)
121113NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ARG4, ...)
122114#define DEF_FUNCTION_TYPE_VAR_5(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5) \
123115NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ARG4, ARG5, ...)
116+ #define DEF_FUNCTION_TYPE_VAR_6(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6) \
117+ NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ...)
118+ #define DEF_FUNCTION_TYPE_VAR_7(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7) \
119+ NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ...)
124120
125121#define DEF_POINTER_TYPE(ENUM, TYPE) \
126122NEXTDEF ENUM TYPE*
@@ -137,15 +133,25 @@ gcc -E builtins.h | sed 's/^NEXTDEF/#define/' | cat - builtins.def | \
137133 sed ' s/MANGLE("__builtin_" "\(.*\)")/__builtin_\1/' | \
138134 sed ' /^;$/d' >> gcc-builtins.h
139135
140- rm builtin-types.def builtins.def sync-builtins.def omp-builtins.def gtm-builtins.def cilk-builtins.def cilkplus.def sanitizer.def
141- rm builtins.h
136+ rm $builtin_defs builtins.h
142137
143138# for some we don't know how to handle them - removing symbols should be safe
144- sed -i ' /MANGLE/d' gcc-builtins.h
145- sed -i ' /builtin_type_for_size/d' gcc-builtins.h
146- sed -i ' /BT_FN/d' gcc-builtins.h
147- sed -i ' /lang_hooks.types.type_for_mode/d' gcc-builtins.h
148- sed -i ' /__float/d' gcc-builtins.h
139+ remove_line () {
140+ local pattern=" $1 "
141+ if sed --version > /dev/null 2>&1 ; then
142+ # GNU sed
143+ sed -i " /$pattern /d" gcc-builtins.h
144+ else
145+ sed -i ' ' " /$pattern /d" gcc-builtins.h
146+ fi
147+ }
148+
149+ remove_line MANGLE
150+ remove_line builtin_type_for_size
151+ remove_line BT_FN
152+ remove_line lang_hooks.types.type_for_mode
153+ remove_line __float
154+ remove_line pointer_bounds_type_node
149155
150156cat gcc-builtins.h | sed ' s/__builtin/XX__builtin/' | \
151157 gcc -c -fno-builtin -x c - -o gcc-builtins.o
0 commit comments