From cdbf45414aecd8ec143a0f2634ba7c53b11053ca Mon Sep 17 00:00:00 2001 From: Bernd Schmidt Date: Wed, 25 May 2011 12:11:42 +0000 Subject: [PATCH] libgcc2.h (__NW, __NDW): Define using a __gnu_ prefix if LIBGCC2_GNU_PREFIX is defined. gcc/ * libgcc2.h (__NW, __NDW): Define using a __gnu_ prefix if LIBGCC2_GNU_PREFIX is defined. (__N): New macro. (__powisf2, __powidf2, __powitf2, __powixf2, __bswapsi2, __bswapdi2, __mulsc3, __muldc3, __mulxc3, __multc3, __divsc3, __divdc3, __divxc3, __divtc3, __udiv_w_sdiv, __clear_cache, __enable_execute_stack, __clz_tab): Define using __N. (__absvsi2, __negvsi2, __addvsi3, __subvsi3, __mulvsi3): Likewise if COMPAT_SIMODE_TRAPPING_ARITHMETIC. * target.def (libfunc_gnu_prefix): New hook. * doc/tm.texi.in (LIBGCC2_GNU_PREFIX): Document. (TARGET_LIBFUNC_GNU_PREFIX): Add hook. * doc/tm.texi: Regenerate. * system.h (LIBGCC2_GNU_PREFIX): Poison. * optabs.c (gen_libfunc): Take the libfunc_gnu_prefix hook into account. (gen_interclass_conv_libfunc, gen_intraclass_conv_libfunc): Likewise. (init_optabs): Likewise for the bswap libfuncs. * tree.c (build_common_builtin_nodes): Likewise for complex multiply and divide. * config/t-slibgcc-elf-ver (SHLIB_MAPFILES): Use $$(libgcc_objdir). * config/t-slibgcc-sld (SHLIB_MAPFILES): Likewise. * libgcc-std.ver: Remove. * Makefile.in (srcdirify): Handle $$(libgcc_objdir). * config/frv/t-linux (SHLIB_MAPFILES): Use $$(libgcc_objdir) for libgcc-std.ver. * config/i386/t-linux (SHLIB_MAPFILES): Likewise. * config/mips/t-slibgcc-irix (SHLIB_MAPFILES): Likewise. * config/rs6000/t-aix43 (SHLIB_MAPFILES): Likewise. * config/rs6000/t-aix52 (SHLIB_MAPFILES): Likewise. * config/sparc/t-linux (SHLIB_MAPFILES): Likewise. * config/i386/t-linux (SHLIB_MAPFILES): Likewise. * config/i386/t-linux (SHLIB_MAPFILES): Likewise. * config/fixed-bit.h (FIXED_OP): Define differently depending on LIBGCC2_GNU_PREFIX. All uses changed not to pass leading underscores. (FIXED_CONVERT_OP, FIXED_CONVERT_OP2): Likewise. libgcc/ * libgcc-std.ver.in: New file. * Makefile.in (LIBGCC_VER_GNU_PREFIX, LIBGCC_VER_SYMBOLS_PREFIX): New variables. (libgcc-std.ver): New rule. * config/t-gnu-prefix: New file. From-SVN: r174187 --- gcc/ChangeLog | 39 + gcc/Makefile.in | 5 +- gcc/config/fixed-bit.h | 83 +- gcc/config/frv/t-linux | 2 +- gcc/config/i386/t-cygming | 2 +- gcc/config/i386/t-linux | 2 +- gcc/config/mips/t-slibgcc-irix | 2 +- gcc/config/rs6000/t-aix43 | 2 +- gcc/config/rs6000/t-aix52 | 2 +- gcc/config/sparc/t-linux | 2 +- gcc/config/t-slibgcc-elf-ver | 2 +- gcc/config/t-slibgcc-sld | 2 +- gcc/doc/tm.texi | 18 + gcc/doc/tm.texi.in | 11 + gcc/libgcc2.h | 50 + gcc/optabs.c | 50 +- gcc/system.h | 4 +- gcc/target.def | 11 + gcc/tree.c | 16 +- libgcc/ChangeLog | 8 + libgcc/Makefile.in | 7 + libgcc/config/t-gnu-prefix | 1 + libgcc/libgcc-std.ver.in | 1922 ++++++++++++++++++++++++++++++++ 23 files changed, 2182 insertions(+), 61 deletions(-) create mode 100644 libgcc/config/t-gnu-prefix create mode 100644 libgcc/libgcc-std.ver.in diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1143fae8a9d..03f6792099c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,42 @@ +2011-05-25 Bernd Schmidt + + * libgcc2.h (__NW, __NDW): Define using a __gnu_ prefix if + LIBGCC2_GNU_PREFIX is defined. + (__N): New macro. + (__powisf2, __powidf2, __powitf2, __powixf2, __bswapsi2, __bswapdi2, + __mulsc3, __muldc3, __mulxc3, __multc3, __divsc3, __divdc3, __divxc3, + __divtc3, __udiv_w_sdiv, __clear_cache, __enable_execute_stack, + __clz_tab): Define using __N. + (__absvsi2, __negvsi2, __addvsi3, __subvsi3, __mulvsi3): Likewise if + COMPAT_SIMODE_TRAPPING_ARITHMETIC. + * target.def (libfunc_gnu_prefix): New hook. + * doc/tm.texi.in (LIBGCC2_GNU_PREFIX): Document. + (TARGET_LIBFUNC_GNU_PREFIX): Add hook. + * doc/tm.texi: Regenerate. + * system.h (LIBGCC2_GNU_PREFIX): Poison. + * optabs.c (gen_libfunc): Take the libfunc_gnu_prefix hook into + account. + (gen_interclass_conv_libfunc, gen_intraclass_conv_libfunc): Likewise. + (init_optabs): Likewise for the bswap libfuncs. + * tree.c (build_common_builtin_nodes): Likewise for complex multiply + and divide. + * config/t-slibgcc-elf-ver (SHLIB_MAPFILES): Use $$(libgcc_objdir). + * config/t-slibgcc-sld (SHLIB_MAPFILES): Likewise. + * libgcc-std.ver: Remove. + * Makefile.in (srcdirify): Handle $$(libgcc_objdir). + * config/frv/t-linux (SHLIB_MAPFILES): Use $$(libgcc_objdir) for + libgcc-std.ver. + * config/i386/t-linux (SHLIB_MAPFILES): Likewise. + * config/mips/t-slibgcc-irix (SHLIB_MAPFILES): Likewise. + * config/rs6000/t-aix43 (SHLIB_MAPFILES): Likewise. + * config/rs6000/t-aix52 (SHLIB_MAPFILES): Likewise. + * config/sparc/t-linux (SHLIB_MAPFILES): Likewise. + * config/i386/t-linux (SHLIB_MAPFILES): Likewise. + * config/i386/t-linux (SHLIB_MAPFILES): Likewise. + * config/fixed-bit.h (FIXED_OP): Define differently depending on + LIBGCC2_GNU_PREFIX. All uses changed not to pass leading underscores. + (FIXED_CONVERT_OP, FIXED_CONVERT_OP2): Likewise. + 2011-05-25 Jan Hubicka * lto-streamer-out.c (output_record_start): Use lto_output_enum diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 2aee9483997..06a4ebce576 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -1898,7 +1898,10 @@ LIB2ADD_ST = $(LIB2FUNCS_STATIC_EXTRA) # which case they will start with $(srcdir)), or generated into the build # directory (in which case they will be relative paths). srcdirify = $(patsubst $(srcdir)%,$$(gcc_srcdir)%,$(filter $(srcdir)%,$(1))) \ - $(patsubst %,$$(gcc_objdir)/%,$(filter-out $(srcdir)%,$(1))) + $(patsubst $$(libgcc_objdir)/%,%, \ + $(filter $$(libgcc_objdir)%,$(1))) \ + $(patsubst %,$$(gcc_objdir)/%, \ + $(filter-out $(srcdir)% $$(libgcc_objdir)%,$(1))) # The distinction between these two variables is no longer relevant, # so we combine them. Sort removes duplicates. diff --git a/gcc/config/fixed-bit.h b/gcc/config/fixed-bit.h index 562772d71cf..620742c34b6 100644 --- a/gcc/config/fixed-bit.h +++ b/gcc/config/fixed-bit.h @@ -445,35 +445,39 @@ typedef union #define IBITS IBITS2(MODE_NAME) #define I_F_BITS (FBITS + IBITS) -#define FIXED_OP(OP,MODE,NUM) OP ## MODE ## NUM - -#define FIXED_SATURATE1_TEMP(NAME) FIXED_OP(__saturate1,NAME,) -#define FIXED_SATURATE2_TEMP(NAME) FIXED_OP(__saturate2,NAME,) -#define FIXED_MULHELPER_TEMP(NAME) FIXED_OP(__mulhelper,NAME,) -#define FIXED_DIVHELPER_TEMP(NAME) FIXED_OP(__divhelper,NAME,) -#define FIXED_ASHLHELPER_TEMP(NAME) FIXED_OP(__ashlhelper,NAME,) -#define FIXED_ADD_TEMP(NAME) FIXED_OP(__add,NAME,3) -#define FIXED_SSADD_TEMP(NAME) FIXED_OP(__ssadd,NAME,3) -#define FIXED_USADD_TEMP(NAME) FIXED_OP(__usadd,NAME,3) -#define FIXED_SUB_TEMP(NAME) FIXED_OP(__sub,NAME,3) -#define FIXED_SSSUB_TEMP(NAME) FIXED_OP(__sssub,NAME,3) -#define FIXED_USSUB_TEMP(NAME) FIXED_OP(__ussub,NAME,3) -#define FIXED_MUL_TEMP(NAME) FIXED_OP(__mul,NAME,3) -#define FIXED_SSMUL_TEMP(NAME) FIXED_OP(__ssmul,NAME,3) -#define FIXED_USMUL_TEMP(NAME) FIXED_OP(__usmul,NAME,3) -#define FIXED_DIV_TEMP(NAME) FIXED_OP(__div,NAME,3) -#define FIXED_UDIV_TEMP(NAME) FIXED_OP(__udiv,NAME,3) -#define FIXED_SSDIV_TEMP(NAME) FIXED_OP(__ssdiv,NAME,3) -#define FIXED_USDIV_TEMP(NAME) FIXED_OP(__usdiv,NAME,3) -#define FIXED_NEG_TEMP(NAME) FIXED_OP(__neg,NAME,2) -#define FIXED_SSNEG_TEMP(NAME) FIXED_OP(__ssneg,NAME,2) -#define FIXED_USNEG_TEMP(NAME) FIXED_OP(__usneg,NAME,2) -#define FIXED_ASHL_TEMP(NAME) FIXED_OP(__ashl,NAME,3) -#define FIXED_ASHR_TEMP(NAME) FIXED_OP(__ashr,NAME,3) -#define FIXED_LSHR_TEMP(NAME) FIXED_OP(__lshr,NAME,3) -#define FIXED_SSASHL_TEMP(NAME) FIXED_OP(__ssashl,NAME,3) -#define FIXED_USASHL_TEMP(NAME) FIXED_OP(__usashl,NAME,3) -#define FIXED_CMP_TEMP(NAME) FIXED_OP(__cmp,NAME,2) +#ifdef LIBGCC2_GNU_PREFIX +#define FIXED_OP(OP,MODE,NUM) __gnu_ ## OP ## MODE ## NUM +#else +#define FIXED_OP(OP,MODE,NUM) __ ## OP ## MODE ## NUM +#endif + +#define FIXED_SATURATE1_TEMP(NAME) FIXED_OP(saturate1,NAME,) +#define FIXED_SATURATE2_TEMP(NAME) FIXED_OP(saturate2,NAME,) +#define FIXED_MULHELPER_TEMP(NAME) FIXED_OP(mulhelper,NAME,) +#define FIXED_DIVHELPER_TEMP(NAME) FIXED_OP(divhelper,NAME,) +#define FIXED_ASHLHELPER_TEMP(NAME) FIXED_OP(ashlhelper,NAME,) +#define FIXED_ADD_TEMP(NAME) FIXED_OP(add,NAME,3) +#define FIXED_SSADD_TEMP(NAME) FIXED_OP(ssadd,NAME,3) +#define FIXED_USADD_TEMP(NAME) FIXED_OP(usadd,NAME,3) +#define FIXED_SUB_TEMP(NAME) FIXED_OP(sub,NAME,3) +#define FIXED_SSSUB_TEMP(NAME) FIXED_OP(sssub,NAME,3) +#define FIXED_USSUB_TEMP(NAME) FIXED_OP(ussub,NAME,3) +#define FIXED_MUL_TEMP(NAME) FIXED_OP(mul,NAME,3) +#define FIXED_SSMUL_TEMP(NAME) FIXED_OP(ssmul,NAME,3) +#define FIXED_USMUL_TEMP(NAME) FIXED_OP(usmul,NAME,3) +#define FIXED_DIV_TEMP(NAME) FIXED_OP(div,NAME,3) +#define FIXED_UDIV_TEMP(NAME) FIXED_OP(udiv,NAME,3) +#define FIXED_SSDIV_TEMP(NAME) FIXED_OP(ssdiv,NAME,3) +#define FIXED_USDIV_TEMP(NAME) FIXED_OP(usdiv,NAME,3) +#define FIXED_NEG_TEMP(NAME) FIXED_OP(neg,NAME,2) +#define FIXED_SSNEG_TEMP(NAME) FIXED_OP(ssneg,NAME,2) +#define FIXED_USNEG_TEMP(NAME) FIXED_OP(usneg,NAME,2) +#define FIXED_ASHL_TEMP(NAME) FIXED_OP(ashl,NAME,3) +#define FIXED_ASHR_TEMP(NAME) FIXED_OP(ashr,NAME,3) +#define FIXED_LSHR_TEMP(NAME) FIXED_OP(lshr,NAME,3) +#define FIXED_SSASHL_TEMP(NAME) FIXED_OP(ssashl,NAME,3) +#define FIXED_USASHL_TEMP(NAME) FIXED_OP(usashl,NAME,3) +#define FIXED_CMP_TEMP(NAME) FIXED_OP(cmp,NAME,2) #if defined (MODE_NAME) #if defined (DINT_C_TYPE) @@ -1146,14 +1150,19 @@ extern FIXED_C_TYPE FIXED_USASHL (FIXED_C_TYPE, word_type); #define TO_HAVE_PADDING_BITS (TO_PADDING_BITS > 0) #endif /* TO_TYPE == 4 */ -#define FIXED_CONVERT_OP(OP,FROM,TO) OP ## FROM ## TO -#define FIXED_CONVERT_OP2(OP,FROM,TO) OP ## FROM ## TO ## 2 -#define FRACT_TEMP(N1,N2) FIXED_CONVERT_OP(__fract,N1,N2) -#define FRACT2_TEMP(N1,N2) FIXED_CONVERT_OP2(__fract,N1,N2) -#define SATFRACT_TEMP(N1,N2) FIXED_CONVERT_OP(__satfract,N1,N2) -#define SATFRACT2_TEMP(N1,N2) FIXED_CONVERT_OP2(__satfract,N1,N2) -#define FRACTUNS_TEMP(N1,N2) FIXED_CONVERT_OP(__fractuns,N1,N2) -#define SATFRACTUNS_TEMP(N1,N2) FIXED_CONVERT_OP(__satfractuns,N1,N2) +#ifdef LIBGCC2_GNU_PREFIX +#define FIXED_CONVERT_OP(OP,FROM,TO) __gnu_ ## OP ## FROM ## TO +#define FIXED_CONVERT_OP2(OP,FROM,TO) __gnu_ ## OP ## FROM ## TO ## 2 +#else +#define FIXED_CONVERT_OP(OP,FROM,TO) __ ## OP ## FROM ## TO +#define FIXED_CONVERT_OP2(OP,FROM,TO) __ ## OP ## FROM ## TO ## 2 +#endif +#define FRACT_TEMP(N1,N2) FIXED_CONVERT_OP(fract,N1,N2) +#define FRACT2_TEMP(N1,N2) FIXED_CONVERT_OP2(fract,N1,N2) +#define SATFRACT_TEMP(N1,N2) FIXED_CONVERT_OP(satfract,N1,N2) +#define SATFRACT2_TEMP(N1,N2) FIXED_CONVERT_OP2(satfract,N1,N2) +#define FRACTUNS_TEMP(N1,N2) FIXED_CONVERT_OP(fractuns,N1,N2) +#define SATFRACTUNS_TEMP(N1,N2) FIXED_CONVERT_OP(satfractuns,N1,N2) /* Define conversions from fixed-point to fixed-point. */ #if FROM_TYPE == 4 && TO_TYPE == 4 diff --git a/gcc/config/frv/t-linux b/gcc/config/frv/t-linux index 13eb5369ed3..5b094518a1d 100644 --- a/gcc/config/frv/t-linux +++ b/gcc/config/frv/t-linux @@ -29,5 +29,5 @@ EXTRA_MULTILIB_PARTS = CRTSTUFF_T_CFLAGS = -fPIC TARGET_LIBGCC2_CFLAGS = -fPIC -SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver \ +SHLIB_MAPFILES = $$(libgcc_objdir)/libgcc-std.ver \ $(srcdir)/config/frv/libgcc-frv.ver diff --git a/gcc/config/i386/t-cygming b/gcc/config/i386/t-cygming index c4807a0a97b..af2c9e41c4d 100644 --- a/gcc/config/i386/t-cygming +++ b/gcc/config/i386/t-cygming @@ -113,4 +113,4 @@ SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk # We'd like to use SHLIB_SONAME here too, but shlib_base_name # does not get substituted before mkmap-flat.awk is run. SHLIB_MKMAP_OPTS = -v pe_dll=libgcc_s_$(EH_MODEL)-$(SHLIB_SOVERSION)$(SHLIB_EXT) -SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver +SHLIB_MAPFILES = $$(libgcc_objdir)/libgcc-std.ver diff --git a/gcc/config/i386/t-linux b/gcc/config/i386/t-linux index 4c6bb51e3b8..500d932fec8 100644 --- a/gcc/config/i386/t-linux +++ b/gcc/config/i386/t-linux @@ -1,5 +1,5 @@ # On 64bit we do not need any exports for glibc for 64-bit libgcc_s. # Need to support TImode for x86. Override the settings from # t-slibgcc-elf-ver and t-linux -SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver \ +SHLIB_MAPFILES = $$(libgcc_objdir)/libgcc-std.ver \ $(srcdir)/config/i386/libgcc-glibc.ver diff --git a/gcc/config/mips/t-slibgcc-irix b/gcc/config/mips/t-slibgcc-irix index 6227ccef3fa..e9f168e49d2 100644 --- a/gcc/config/mips/t-slibgcc-irix +++ b/gcc/config/mips/t-slibgcc-irix @@ -49,4 +49,4 @@ SHLIB_INSTALL = \ $(LN_S) $(SHLIB_SONAME) \ $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK) SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk -SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver +SHLIB_MAPFILES = $$(libgcc_objdir)/libgcc-std.ver diff --git a/gcc/config/rs6000/t-aix43 b/gcc/config/rs6000/t-aix43 index 3cac73bd923..705e053122d 100644 --- a/gcc/config/rs6000/t-aix43 +++ b/gcc/config/rs6000/t-aix43 @@ -82,7 +82,7 @@ SHLIB_INSTALL = \ $$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@/ SHLIB_LIBS = -lc `case @multilib_dir@ in *pthread*) echo -lpthread ;; esac` SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk -SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver $(srcdir)/config/rs6000/libgcc-ppc64.ver +SHLIB_MAPFILES = $$(libgcc_objdir)/libgcc-std.ver $(srcdir)/config/rs6000/libgcc-ppc64.ver SHLIB_NM_FLAGS = -Bpg -X32_64 # GCC 128-bit long double support routines. diff --git a/gcc/config/rs6000/t-aix52 b/gcc/config/rs6000/t-aix52 index 0b4540278ce..e918a2e13a1 100644 --- a/gcc/config/rs6000/t-aix52 +++ b/gcc/config/rs6000/t-aix52 @@ -63,7 +63,7 @@ SHLIB_INSTALL = \ $$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@/ SHLIB_LIBS = -lc `case @multilib_dir@ in *pthread*) echo -lpthread ;; esac` SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk -SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver $(srcdir)/config/rs6000/libgcc-ppc64.ver +SHLIB_MAPFILES = $$(libgcc_objdir)/libgcc-std.ver $(srcdir)/config/rs6000/libgcc-ppc64.ver SHLIB_NM_FLAGS = -Bpg -X32_64 # GCC 128-bit long double support routines. diff --git a/gcc/config/sparc/t-linux b/gcc/config/sparc/t-linux index a3e513087f5..30daa376614 100644 --- a/gcc/config/sparc/t-linux +++ b/gcc/config/sparc/t-linux @@ -1,5 +1,5 @@ # Override t-slibgcc-elf-ver to export some libgcc symbols with # the symbol versions that glibc used. # Avoid the t-linux version file. -SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver \ +SHLIB_MAPFILES = $$(libgcc_objdir)/libgcc-std.ver \ $(srcdir)/config/sparc/libgcc-sparc-glibc.ver diff --git a/gcc/config/t-slibgcc-elf-ver b/gcc/config/t-slibgcc-elf-ver index d5ef9ca163f..b90f4fcf3a3 100644 --- a/gcc/config/t-slibgcc-elf-ver +++ b/gcc/config/t-slibgcc-elf-ver @@ -53,4 +53,4 @@ SHLIB_INSTALL = \ rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \ $(SHLIB_INSTALL_SOLINK) SHLIB_MKMAP = $(srcdir)/mkmap-symver.awk -SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver +SHLIB_MAPFILES = $$(libgcc_objdir)/libgcc-std.ver diff --git a/gcc/config/t-slibgcc-sld b/gcc/config/t-slibgcc-sld index 3a343f5b9ee..013a0d70e9e 100644 --- a/gcc/config/t-slibgcc-sld +++ b/gcc/config/t-slibgcc-sld @@ -47,4 +47,4 @@ SHLIB_INSTALL = \ $(LN_S) $(SHLIB_SONAME) \ $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK) SHLIB_MKMAP = $(srcdir)/mkmap-symver.awk -SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver +SHLIB_MAPFILES = $$(libgcc_objdir)/libgcc-std.ver diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 68d1bb0b4d8..c2aa216dbb5 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -1581,6 +1581,15 @@ anyway. If you don't define this and @code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE} is 128 then the default is 1, otherwise it is 0. @end defmac +@defmac LIBGCC2_GNU_PREFIX +This macro corresponds to the @code{TARGET_LIBFUNC_GNU_PREFIX} target +hook and should be defined if that hook is overriden to be true. It +causes function names in libgcc to be changed to use a @code{__gnu_} +prefix for their name rather than the default @code{__}. A port which +uses this macro should also arrange to use @file{t-gnu-prefix} in +the libgcc @file{config.host}. +@end defmac + @defmac SF_SIZE @defmacx DF_SIZE @defmacx XF_SIZE @@ -5245,6 +5254,15 @@ library routines. The default is to do nothing. Most ports don't need to define this hook. @end deftypefn +@deftypevr {Target Hook} bool TARGET_LIBFUNC_GNU_PREFIX +If false (the default), internal library routines start with two +underscores. If set to true, these routines start with @code{__gnu_} +instead. E.g., @code{__muldi3} changes to @code{__gnu_muldi3}. This +currently only affects functions defined in @file{libgcc2.c}. If this +is set to true, the @file{tm.h} file must also +@code{#define LIBGCC2_GNU_PREFIX}. +@end deftypevr + @defmac FLOAT_LIB_COMPARE_RETURNS_BOOL (@var{mode}, @var{comparison}) This macro should return @code{true} if the library routine that implements the floating point comparison operator @var{comparison} in diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in index d31e5e305bb..ab0b39b2d2b 100644 --- a/gcc/doc/tm.texi.in +++ b/gcc/doc/tm.texi.in @@ -1571,6 +1571,15 @@ anyway. If you don't define this and @code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE} is 128 then the default is 1, otherwise it is 0. @end defmac +@defmac LIBGCC2_GNU_PREFIX +This macro corresponds to the @code{TARGET_LIBFUNC_GNU_PREFIX} target +hook and should be defined if that hook is overriden to be true. It +causes function names in libgcc to be changed to use a @code{__gnu_} +prefix for their name rather than the default @code{__}. A port which +uses this macro should also arrange to use @file{t-gnu-prefix} in +the libgcc @file{config.host}. +@end defmac + @defmac SF_SIZE @defmacx DF_SIZE @defmacx XF_SIZE @@ -5197,6 +5206,8 @@ library routines. The default is to do nothing. Most ports don't need to define this hook. @end deftypefn +@hook TARGET_LIBFUNC_GNU_PREFIX + @defmac FLOAT_LIB_COMPARE_RETURNS_BOOL (@var{mode}, @var{comparison}) This macro should return @code{true} if the library routine that implements the floating point comparison operator @var{comparison} in diff --git a/gcc/libgcc2.h b/gcc/libgcc2.h index 4e6fd235988..aee6d19c3ea 100644 --- a/gcc/libgcc2.h +++ b/gcc/libgcc2.h @@ -193,8 +193,13 @@ typedef int shift_count_type __attribute__((mode (__libgcc_shift_count__))); #define UHWtype UDItype #define DWtype TItype #define UDWtype UTItype +#ifdef LIBGCC2_GNU_PREFIX +#define __NW(a,b) __gnu_ ## a ## di ## b +#define __NDW(a,b) __gnu_ ## a ## ti ## b +#else #define __NW(a,b) __ ## a ## di ## b #define __NDW(a,b) __ ## a ## ti ## b +#endif #define COMPAT_SIMODE_TRAPPING_ARITHMETIC #elif LIBGCC2_UNITS_PER_WORD == 4 #define W_TYPE_SIZE (4 * BITS_PER_UNIT) @@ -204,8 +209,13 @@ typedef int shift_count_type __attribute__((mode (__libgcc_shift_count__))); #define UHWtype USItype #define DWtype DItype #define UDWtype UDItype +#ifdef LIBGCC2_GNU_PREFIX +#define __NW(a,b) __gnu_ ## a ## si ## b +#define __NDW(a,b) __gnu_ ## a ## di ## b +#else #define __NW(a,b) __ ## a ## si ## b #define __NDW(a,b) __ ## a ## di ## b +#endif #elif LIBGCC2_UNITS_PER_WORD == 2 #define W_TYPE_SIZE (2 * BITS_PER_UNIT) #define Wtype HItype @@ -214,8 +224,13 @@ typedef int shift_count_type __attribute__((mode (__libgcc_shift_count__))); #define UHWtype UHItype #define DWtype SItype #define UDWtype USItype +#ifdef LIBGCC2_GNU_PREFIX +#define __NW(a,b) __gnu_ ## a ## hi ## b +#define __NDW(a,b) __gnu_ ## a ## si ## b +#else #define __NW(a,b) __ ## a ## hi ## b #define __NDW(a,b) __ ## a ## si ## b +#endif #else #define W_TYPE_SIZE BITS_PER_UNIT #define Wtype QItype @@ -224,10 +239,20 @@ typedef int shift_count_type __attribute__((mode (__libgcc_shift_count__))); #define UHWtype UQItype #define DWtype HItype #define UDWtype UHItype +#ifdef LIBGCC2_GNU_PREFIX +#define __NW(a,b) __gnu_ ## a ## qi ## b +#define __NDW(a,b) __gnu_ ## a ## hi ## b +#else #define __NW(a,b) __ ## a ## qi ## b #define __NDW(a,b) __ ## a ## hi ## b #endif +#endif +#ifdef LIBGCC2_GNU_PREFIX +#define __N(a) __gnu_ ## a +#else +#define __N(a) __ ## a +#endif #define Wtype_MAX ((Wtype)(((UWtype)1 << (W_TYPE_SIZE - 1)) - 1)) #define Wtype_MIN (- Wtype_MAX - 1) @@ -298,6 +323,25 @@ typedef int shift_count_type __attribute__((mode (__libgcc_shift_count__))); #define __popcountDI2 __NDW(popcount,2) #define __parityDI2 __NDW(parity,2) +#define __clz_tab __N(clz_tab) +#define __powisf2 __N(powisf2) +#define __powidf2 __N(powidf2) +#define __powitf2 __N(powitf2) +#define __powixf2 __N(powixf2) +#define __bswapsi2 __N(bswapsi2) +#define __bswapdi2 __N(bswapdi2) +#define __mulsc3 __N(mulsc3) +#define __muldc3 __N(muldc3) +#define __mulxc3 __N(mulxc3) +#define __multc3 __N(multc3) +#define __divsc3 __N(divsc3) +#define __divdc3 __N(divdc3) +#define __divxc3 __N(divxc3) +#define __divtc3 __N(divtc3) +#define __udiv_w_sdiv __N(udiv_w_sdiv) +#define __clear_cache __N(clear_cache) +#define __enable_execute_stack __N(enable_execute_stack) + extern DWtype __muldi3 (DWtype, DWtype); extern DWtype __divdi3 (DWtype, DWtype); extern UDWtype __udivdi3 (UDWtype, UDWtype); @@ -347,6 +391,12 @@ extern DWtype __mulvDI3 (DWtype, DWtype); extern DWtype __negvDI2 (DWtype); #ifdef COMPAT_SIMODE_TRAPPING_ARITHMETIC +#define __absvsi2 __N(absvsi2) +#define __negvsi2 __N(negvsi2) +#define __addvsi3 __N(addvsi3) +#define __subvsi3 __N(subvsi3) +#define __mulvsi3 __N(mulvsi3) + extern SItype __absvsi2 (SItype); extern SItype __addvsi3 (SItype, SItype); extern SItype __subvsi3 (SItype, SItype); diff --git a/gcc/optabs.c b/gcc/optabs.c index 62e123ba514..1473b0f13af 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -5152,13 +5152,22 @@ gen_libfunc (optab optable, const char *opname, int suffix, enum machine_mode mo unsigned opname_len = strlen (opname); const char *mname = GET_MODE_NAME (mode); unsigned mname_len = strlen (mname); - char *libfunc_name = XALLOCAVEC (char, 2 + opname_len + mname_len + 1 + 1); + int prefix_len = targetm.libfunc_gnu_prefix ? 6 : 2; + int len = prefix_len + opname_len + mname_len + 1 + 1; + char *libfunc_name = XALLOCAVEC (char, len); char *p; const char *q; p = libfunc_name; *p++ = '_'; *p++ = '_'; + if (targetm.libfunc_gnu_prefix) + { + *p++ = 'g'; + *p++ = 'n'; + *p++ = 'u'; + *p++ = '_'; + } for (q = opname; *q; ) *p++ = *q++; for (q = mname; *q; q++) @@ -5362,6 +5371,7 @@ gen_interclass_conv_libfunc (convert_optab tab, const char *fname, *tname; const char *q; + int prefix_len = targetm.libfunc_gnu_prefix ? 6 : 2; char *libfunc_name, *suffix; char *nondec_name, *dec_name, *nondec_suffix, *dec_suffix; char *p; @@ -5372,11 +5382,19 @@ gen_interclass_conv_libfunc (convert_optab tab, mname_len = strlen (GET_MODE_NAME (tmode)) + strlen (GET_MODE_NAME (fmode)); - nondec_name = XALLOCAVEC (char, 2 + opname_len + mname_len + 1 + 1); + nondec_name = XALLOCAVEC (char, prefix_len + opname_len + mname_len + 1 + 1); nondec_name[0] = '_'; nondec_name[1] = '_'; - memcpy (&nondec_name[2], opname, opname_len); - nondec_suffix = nondec_name + opname_len + 2; + if (targetm.libfunc_gnu_prefix) + { + nondec_name[2] = 'g'; + nondec_name[3] = 'n'; + nondec_name[4] = 'u'; + nondec_name[5] = '_'; + } + + memcpy (&nondec_name[prefix_len], opname, opname_len); + nondec_suffix = nondec_name + opname_len + prefix_len; dec_name = XALLOCAVEC (char, 2 + dec_len + opname_len + mname_len + 1 + 1); dec_name[0] = '_'; @@ -5487,6 +5505,7 @@ gen_intraclass_conv_libfunc (convert_optab tab, const char *opname, const char *fname, *tname; const char *q; + int prefix_len = targetm.libfunc_gnu_prefix ? 6 : 2; char *nondec_name, *dec_name, *nondec_suffix, *dec_suffix; char *libfunc_name, *suffix; char *p; @@ -5500,8 +5519,15 @@ gen_intraclass_conv_libfunc (convert_optab tab, const char *opname, nondec_name = XALLOCAVEC (char, 2 + opname_len + mname_len + 1 + 1); nondec_name[0] = '_'; nondec_name[1] = '_'; - memcpy (&nondec_name[2], opname, opname_len); - nondec_suffix = nondec_name + opname_len + 2; + if (targetm.libfunc_gnu_prefix) + { + nondec_name[2] = 'g'; + nondec_name[3] = 'n'; + nondec_name[4] = 'u'; + nondec_name[5] = '_'; + } + memcpy (&nondec_name[prefix_len], opname, opname_len); + nondec_suffix = nondec_name + opname_len + prefix_len; dec_name = XALLOCAVEC (char, 2 + dec_len + opname_len + mname_len + 1 + 1); dec_name[0] = '_'; @@ -6231,8 +6257,16 @@ init_optabs (void) /* Explicitly initialize the bswap libfuncs since we need them to be valid for things other than word_mode. */ - set_optab_libfunc (bswap_optab, SImode, "__bswapsi2"); - set_optab_libfunc (bswap_optab, DImode, "__bswapdi2"); + if (targetm.libfunc_gnu_prefix) + { + set_optab_libfunc (bswap_optab, SImode, "__gnu_bswapsi2"); + set_optab_libfunc (bswap_optab, DImode, "__gnu_bswapdi2"); + } + else + { + set_optab_libfunc (bswap_optab, SImode, "__bswapsi2"); + set_optab_libfunc (bswap_optab, DImode, "__bswapdi2"); + } /* Use cabs for double complex abs, since systems generally have cabs. Don't define any libcall for float complex, so that cabs will be used. */ diff --git a/gcc/system.h b/gcc/system.h index a57df7ce753..e39a6f928e9 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -762,8 +762,8 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN; HOT_TEXT_SECTION_NAME LEGITIMATE_CONSTANT_P /* Target macros only used for code built for the target, that have - moved to libgcc-tm.h. */ - #pragma GCC poison DECLARE_LIBRARY_RENAMES + moved to libgcc-tm.h or have never been present elsewhere. */ + #pragma GCC poison DECLARE_LIBRARY_RENAMES LIBGCC2_GNU_PREFIX /* Other obsolete target macros, or macros that used to be in target headers and were not used, and may be obsolete or may never have diff --git a/gcc/target.def b/gcc/target.def index 754713fe493..6137e976619 100644 --- a/gcc/target.def +++ b/gcc/target.def @@ -1242,6 +1242,17 @@ DEFHOOK void, (void), hook_void_void) + /* Add a __gnu_ prefix to library functions rather than just __. */ +DEFHOOKPOD +(libfunc_gnu_prefix, + "If false (the default), internal library routines start with two\n\ +underscores. If set to true, these routines start with @code{__gnu_}\n\ +instead. E.g., @code{__muldi3} changes to @code{__gnu_muldi3}. This\n\ +currently only affects functions defined in @file{libgcc2.c}. If this\n\ +is set to true, the @file{tm.h} file must also\n\ +@code{#define LIBGCC2_GNU_PREFIX}.", + bool, false) + /* Given a decl, a section name, and whether the decl initializer has relocs, choose attributes for the section. */ /* ??? Should be merged with SELECT_SECTION and UNIQUE_SECTION. */ diff --git a/gcc/tree.c b/gcc/tree.c index 3357d84666b..63f50b0ad41 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -9525,6 +9525,10 @@ build_common_builtin_nodes (void) const char *p; enum built_in_function mcode, dcode; tree type, inner_type; + const char *prefix = "__"; + + if (targetm.libfunc_gnu_prefix) + prefix = "__gnu_"; type = lang_hooks.types.type_for_mode ((enum machine_mode) mode, 0); if (type == NULL) @@ -9543,13 +9547,17 @@ build_common_builtin_nodes (void) *q = TOLOWER (*p); *q = '\0'; - built_in_names[mcode] = concat ("__mul", mode_name_buf, "3", NULL); + built_in_names[mcode] = concat (prefix, "mul", mode_name_buf, "3", + NULL); local_define_builtin (built_in_names[mcode], ftype, mcode, - built_in_names[mcode], ECF_CONST | ECF_NOTHROW | ECF_LEAF); + built_in_names[mcode], + ECF_CONST | ECF_NOTHROW | ECF_LEAF); - built_in_names[dcode] = concat ("__div", mode_name_buf, "3", NULL); + built_in_names[dcode] = concat (prefix, "div", mode_name_buf, "3", + NULL); local_define_builtin (built_in_names[dcode], ftype, dcode, - built_in_names[dcode], ECF_CONST | ECF_NOTHROW | ECF_LEAF); + built_in_names[dcode], + ECF_CONST | ECF_NOTHROW | ECF_LEAF); } } } diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index c0bf9551ae3..6dd2636d1a5 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,11 @@ +2011-05-25 Bernd Schmidt + + * libgcc-std.ver.in: New file. + * Makefile.in (LIBGCC_VER_GNU_PREFIX, LIBGCC_VER_SYMBOLS_PREFIX): New + variables. + (libgcc-std.ver): New rule. + * config/t-gnu-prefix: New file. + 2011-05-23 Rainer Orth * config/s390/t-tpf (LIB2ADDEH): Remove $(gcc_srcdir)/gthr-gnat.c. diff --git a/libgcc/Makefile.in b/libgcc/Makefile.in index 7e2ab93fc42..557fab36e48 100644 --- a/libgcc/Makefile.in +++ b/libgcc/Makefile.in @@ -250,6 +250,10 @@ gcc_s_compile = $(gcc_compile) -DSHARED objects = $(filter %$(objext),$^) # Collect any host-specific information from Makefile fragments. + +LIBGCC_VER_GNU_PREFIX = __ +LIBGCC_VER_SYMBOLS_PREFIX = + tmake_file = @tmake_file@ include $(srcdir)/empty.mk $(tmake_file) @@ -795,6 +799,9 @@ libgcc_s$(SHLIB_EXT): libgcc.map mapfile = libgcc.map endif +libgcc-std.ver: $(srcdir)/libgcc-std.ver.in + sed -e 's/__PFX__/$(LIBGCC_VER_GNU_PREFIX)/g' < $< > $@ + libgcc_s$(SHLIB_EXT): $(libgcc-s-objects) $(extra-parts) # @multilib_flags@ is still needed because this may use # $(GCC_FOR_TARGET) and $(LIBGCC2_CFLAGS) directly. diff --git a/libgcc/config/t-gnu-prefix b/libgcc/config/t-gnu-prefix new file mode 100644 index 00000000000..b04b23f09f3 --- /dev/null +++ b/libgcc/config/t-gnu-prefix @@ -0,0 +1 @@ +LIBGCC_VER_GNU_PREFIX = __gnu_ diff --git a/libgcc/libgcc-std.ver.in b/libgcc/libgcc-std.ver.in new file mode 100644 index 00000000000..e468ec589ba --- /dev/null +++ b/libgcc/libgcc-std.ver.in @@ -0,0 +1,1922 @@ +# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, +# 2008, 2010 Free Software Foundation, Inc. +# +# This file is part of GCC. +# +# GCC 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, or (at your option) +# any later version. +# +# GCC 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 GCC; see the file COPYING3. If not see +# . + +GCC_3.0 { + # libgcc1 integer symbols + __PFX__absvsi2 + __PFX__addvsi3 + __PFX__ashlsi3 + __PFX__ashrsi3 + __PFX__divsi3 + __PFX__lshrsi3 + __PFX__modsi3 + __PFX__mulsi3 + __PFX__mulvsi3 + __PFX__negvsi2 + __PFX__subvsi3 + __PFX__udivsi3 + __PFX__umodsi3 + + # libgcc1 floating point symbols + __PFX__addsf3 + __PFX__adddf3 + __PFX__addxf3 + __PFX__addtf3 + __PFX__divsf3 + __PFX__divdf3 + __PFX__divxf3 + __PFX__divtf3 + __PFX__eqsf2 + __PFX__eqdf2 + __PFX__eqxf2 + __PFX__eqtf2 + __PFX__extenddfxf2 + __PFX__extenddftf2 + __PFX__extendsfdf2 + __PFX__extendsfxf2 + __PFX__extendsftf2 + __PFX__fixsfsi + __PFX__fixdfsi + __PFX__fixxfsi + __PFX__fixtfsi + __PFX__floatsisf + __PFX__floatsidf + __PFX__floatsixf + __PFX__floatsitf + __PFX__gesf2 + __PFX__gedf2 + __PFX__gexf2 + __PFX__getf2 + __PFX__gtsf2 + __PFX__gtdf2 + __PFX__gtxf2 + __PFX__gttf2 + __PFX__lesf2 + __PFX__ledf2 + __PFX__lexf2 + __PFX__letf2 + __PFX__ltsf2 + __PFX__ltdf2 + __PFX__ltxf2 + __PFX__lttf2 + __PFX__mulsf3 + __PFX__muldf3 + __PFX__mulxf3 + __PFX__multf3 + __PFX__negsf2 + __PFX__negdf2 + __PFX__negxf2 + __PFX__negtf2 + __PFX__nesf2 + __PFX__nedf2 + __PFX__nexf2 + __PFX__netf2 + __PFX__subsf3 + __PFX__subdf3 + __PFX__subxf3 + __PFX__subtf3 + __PFX__truncdfsf2 + __PFX__truncxfsf2 + __PFX__trunctfsf2 + __PFX__truncxfdf2 + __PFX__trunctfdf2 + + # libgcc2 DImode arithmetic (for 32-bit targets). + __PFX__absvdi2 + __PFX__addvdi3 + __PFX__ashldi3 + __PFX__ashrdi3 + __PFX__cmpdi2 + __PFX__divdi3 + __PFX__ffsdi2 + __PFX__fixdfdi + __PFX__fixsfdi + __PFX__fixtfdi + __PFX__fixxfdi + __PFX__fixunsdfdi + __PFX__fixunsdfsi + __PFX__fixunssfsi + __PFX__fixunssfdi + __PFX__fixunstfdi + __PFX__fixunstfsi + __PFX__fixunsxfdi + __PFX__fixunsxfsi + __PFX__floatdidf + __PFX__floatdisf + __PFX__floatdixf + __PFX__floatditf + __PFX__lshrdi3 + __PFX__moddi3 + __PFX__muldi3 + __PFX__mulvdi3 + __PFX__negdi2 + __PFX__negvdi2 + __PFX__subvdi3 + __PFX__ucmpdi2 + __PFX__udivdi3 + __PFX__udivmoddi4 + __PFX__umoddi3 + + # libgcc2 TImode arithmetic (for 64-bit targets). + __PFX__ashlti3 + __PFX__ashrti3 + __PFX__cmpti2 + __PFX__divti3 + __PFX__ffsti2 + __PFX__fixdfti + __PFX__fixsfti + __PFX__fixtfti + __PFX__fixxfti + __PFX__lshrti3 + __PFX__modti3 + __PFX__multi3 + __PFX__negti2 + __PFX__ucmpti2 + __PFX__udivmodti4 + __PFX__udivti3 + __PFX__umodti3 + __PFX__fixunsdfti + __PFX__fixunssfti + __PFX__fixunstfti + __PFX__fixunsxfti + __PFX__floattidf + __PFX__floattisf + __PFX__floattixf + __PFX__floattitf + + # Used to deal with trampoline initialization on some platforms + __PFX__clear_cache + + # EH symbols + _Unwind_DeleteException + _Unwind_Find_FDE + _Unwind_ForcedUnwind + _Unwind_GetGR + _Unwind_GetIP + _Unwind_GetLanguageSpecificData + _Unwind_GetRegionStart + _Unwind_GetTextRelBase + _Unwind_GetDataRelBase + _Unwind_RaiseException + _Unwind_Resume + _Unwind_SetGR + _Unwind_SetIP + __deregister_frame + __deregister_frame_info + __deregister_frame_info_bases + __register_frame + __register_frame_info + __register_frame_info_bases + __register_frame_info_table + __register_frame_info_table_bases + __register_frame_table + + # SjLj EH symbols + _Unwind_SjLj_Register + _Unwind_SjLj_Unregister + _Unwind_SjLj_RaiseException + _Unwind_SjLj_ForcedUnwind + _Unwind_SjLj_Resume +} + +%inherit GCC_3.3 GCC_3.0 +GCC_3.3 { + _Unwind_FindEnclosingFunction + _Unwind_GetCFA + _Unwind_Backtrace + _Unwind_Resume_or_Rethrow + _Unwind_SjLj_Resume_or_Rethrow +} + +%inherit GCC_3.3.1 GCC_3.3 +GCC_3.3.1 { + __gcc_personality_sj0 + __gcc_personality_v0 +} + +%inherit GCC_3.3.2 GCC_3.3.1 +GCC_3.3.2 { +} + +%inherit GCC_3.3.4 GCC_3.3.2 +GCC_3.3.4 { + __PFX__unorddf2 + __PFX__unordsf2 +} + +%inherit GCC_3.4 GCC_3.3.4 +GCC_3.4 { + # bit scanning and counting built-ins + __PFX__clzsi2 + __PFX__clzdi2 + __PFX__clzti2 + __PFX__ctzsi2 + __PFX__ctzdi2 + __PFX__ctzti2 + __PFX__popcountsi2 + __PFX__popcountdi2 + __PFX__popcountti2 + __PFX__paritysi2 + __PFX__paritydi2 + __PFX__parityti2 +} + +%inherit GCC_3.4.2 GCC_3.4 +GCC_3.4.2 { + # Used to deal with trampoline initialization on some platforms + __PFX__enable_execute_stack + __trampoline_setup +} + +%inherit GCC_3.4.4 GCC_3.4.2 +GCC_3.4.4 { + # libgcc2 TImode arithmetic (for 64-bit targets). + __PFX__absvti2 + __PFX__addvti3 + __PFX__mulvti3 + __PFX__negvti2 + __PFX__subvti3 +} + +%inherit GCC_4.0.0 GCC_3.4.4 +GCC_4.0.0 { + # libgcc2 __builtin_powi helpers. + __PFX__powisf2 + __PFX__powidf2 + __PFX__powixf2 + __PFX__powitf2 + + # c99 compliant complex arithmetic + __PFX__divsc3 + __PFX__divdc3 + __PFX__divxc3 + __PFX__divtc3 + __PFX__mulsc3 + __PFX__muldc3 + __PFX__mulxc3 + __PFX__multc3 +} + +%inherit GCC_4.1.0 GCC_4.0.0 +GCC_4.1.0 { +} + +%inherit GCC_4.2.0 GCC_4.1.0 +GCC_4.2.0 { + # unsigned-to-floating conversions + __PFX__floatunsisf + __PFX__floatunsidf + __PFX__floatunsixf + __PFX__floatunsitf + __PFX__floatundidf + __PFX__floatundisf + __PFX__floatundixf + __PFX__floatunditf + __PFX__floatuntidf + __PFX__floatuntisf + __PFX__floatuntixf + __PFX__floatuntitf + _Unwind_GetIPInfo +} + +%inherit GCC_4.3.0 GCC_4.2.0 +GCC_4.3.0 { + # byte swapping routines + __PFX__bswapsi2 + __PFX__bswapdi2 + + __emutls_get_address + __emutls_register_common + __PFX__ffssi2 + __PFX__extendxftf2 + __PFX__trunctfxf2 + + # fixed-point routines + __PFX__addqq3 + __PFX__addhq3 + __PFX__addsq3 + __PFX__adddq3 + __PFX__addtq3 + __PFX__adduqq3 + __PFX__adduhq3 + __PFX__addusq3 + __PFX__addudq3 + __PFX__addutq3 + __PFX__addha3 + __PFX__addsa3 + __PFX__addda3 + __PFX__addta3 + __PFX__adduha3 + __PFX__addusa3 + __PFX__adduda3 + __PFX__adduta3 + __PFX__ssaddqq3 + __PFX__ssaddhq3 + __PFX__ssaddsq3 + __PFX__ssadddq3 + __PFX__ssaddtq3 + __PFX__ssaddha3 + __PFX__ssaddsa3 + __PFX__ssaddda3 + __PFX__ssaddta3 + __PFX__usadduqq3 + __PFX__usadduhq3 + __PFX__usaddusq3 + __PFX__usaddudq3 + __PFX__usaddutq3 + __PFX__usadduha3 + __PFX__usaddusa3 + __PFX__usadduda3 + __PFX__usadduta3 + __PFX__subqq3 + __PFX__subhq3 + __PFX__subsq3 + __PFX__subdq3 + __PFX__subtq3 + __PFX__subuqq3 + __PFX__subuhq3 + __PFX__subusq3 + __PFX__subudq3 + __PFX__subutq3 + __PFX__subha3 + __PFX__subsa3 + __PFX__subda3 + __PFX__subta3 + __PFX__subuha3 + __PFX__subusa3 + __PFX__subuda3 + __PFX__subuta3 + __PFX__sssubqq3 + __PFX__sssubhq3 + __PFX__sssubsq3 + __PFX__sssubdq3 + __PFX__sssubtq3 + __PFX__sssubha3 + __PFX__sssubsa3 + __PFX__sssubda3 + __PFX__sssubta3 + __PFX__ussubuqq3 + __PFX__ussubuhq3 + __PFX__ussubusq3 + __PFX__ussubudq3 + __PFX__ussubutq3 + __PFX__ussubuha3 + __PFX__ussubusa3 + __PFX__ussubuda3 + __PFX__ussubuta3 + __PFX__mulqq3 + __PFX__mulhq3 + __PFX__mulsq3 + __PFX__muldq3 + __PFX__multq3 + __PFX__muluqq3 + __PFX__muluhq3 + __PFX__mulusq3 + __PFX__muludq3 + __PFX__mulutq3 + __PFX__mulha3 + __PFX__mulsa3 + __PFX__mulda3 + __PFX__multa3 + __PFX__muluha3 + __PFX__mulusa3 + __PFX__muluda3 + __PFX__muluta3 + __PFX__ssmulqq3 + __PFX__ssmulhq3 + __PFX__ssmulsq3 + __PFX__ssmuldq3 + __PFX__ssmultq3 + __PFX__ssmulha3 + __PFX__ssmulsa3 + __PFX__ssmulda3 + __PFX__ssmulta3 + __PFX__usmuluqq3 + __PFX__usmuluhq3 + __PFX__usmulusq3 + __PFX__usmuludq3 + __PFX__usmulutq3 + __PFX__usmuluha3 + __PFX__usmulusa3 + __PFX__usmuluda3 + __PFX__usmuluta3 + __PFX__divqq3 + __PFX__divhq3 + __PFX__divsq3 + __PFX__divdq3 + __PFX__divtq3 + __PFX__divha3 + __PFX__divsa3 + __PFX__divda3 + __PFX__divta3 + __PFX__udivuqq3 + __PFX__udivuhq3 + __PFX__udivusq3 + __PFX__udivudq3 + __PFX__udivutq3 + __PFX__udivuha3 + __PFX__udivusa3 + __PFX__udivuda3 + __PFX__udivuta3 + __PFX__ssdivqq3 + __PFX__ssdivhq3 + __PFX__ssdivsq3 + __PFX__ssdivdq3 + __PFX__ssdivtq3 + __PFX__ssdivha3 + __PFX__ssdivsa3 + __PFX__ssdivda3 + __PFX__ssdivta3 + __PFX__usdivuqq3 + __PFX__usdivuhq3 + __PFX__usdivusq3 + __PFX__usdivudq3 + __PFX__usdivutq3 + __PFX__usdivuha3 + __PFX__usdivusa3 + __PFX__usdivuda3 + __PFX__usdivuta3 + __PFX__negqq2 + __PFX__neghq2 + __PFX__negsq2 + __PFX__negdq2 + __PFX__negtq2 + __PFX__neguqq2 + __PFX__neguhq2 + __PFX__negusq2 + __PFX__negudq2 + __PFX__negutq2 + __PFX__negha2 + __PFX__negsa2 + __PFX__negda2 + __PFX__negta2 + __PFX__neguha2 + __PFX__negusa2 + __PFX__neguda2 + __PFX__neguta2 + __PFX__ssnegqq2 + __PFX__ssneghq2 + __PFX__ssnegsq2 + __PFX__ssnegdq2 + __PFX__ssnegtq2 + __PFX__ssnegha2 + __PFX__ssnegsa2 + __PFX__ssnegda2 + __PFX__ssnegta2 + __PFX__usneguqq2 + __PFX__usneguhq2 + __PFX__usnegusq2 + __PFX__usnegudq2 + __PFX__usnegutq2 + __PFX__usneguha2 + __PFX__usnegusa2 + __PFX__usneguda2 + __PFX__usneguta2 + __PFX__ashlqq3 + __PFX__ashlhq3 + __PFX__ashlsq3 + __PFX__ashldq3 + __PFX__ashltq3 + __PFX__ashluqq3 + __PFX__ashluhq3 + __PFX__ashlusq3 + __PFX__ashludq3 + __PFX__ashlutq3 + __PFX__ashlha3 + __PFX__ashlsa3 + __PFX__ashlda3 + __PFX__ashlta3 + __PFX__ashluha3 + __PFX__ashlusa3 + __PFX__ashluda3 + __PFX__ashluta3 + __PFX__ashrqq3 + __PFX__ashrhq3 + __PFX__ashrsq3 + __PFX__ashrdq3 + __PFX__ashrtq3 + __PFX__ashrha3 + __PFX__ashrsa3 + __PFX__ashrda3 + __PFX__ashrta3 + __PFX__lshruqq3 + __PFX__lshruhq3 + __PFX__lshrusq3 + __PFX__lshrudq3 + __PFX__lshrutq3 + __PFX__lshruha3 + __PFX__lshrusa3 + __PFX__lshruda3 + __PFX__lshruta3 + __PFX__ssashlqq3 + __PFX__ssashlhq3 + __PFX__ssashlsq3 + __PFX__ssashldq3 + __PFX__ssashltq3 + __PFX__ssashlha3 + __PFX__ssashlsa3 + __PFX__ssashlda3 + __PFX__ssashlta3 + __PFX__usashluqq3 + __PFX__usashluhq3 + __PFX__usashlusq3 + __PFX__usashludq3 + __PFX__usashlutq3 + __PFX__usashluha3 + __PFX__usashlusa3 + __PFX__usashluda3 + __PFX__usashluta3 + __PFX__cmpqq2 + __PFX__cmphq2 + __PFX__cmpsq2 + __PFX__cmpdq2 + __PFX__cmptq2 + __PFX__cmpuqq2 + __PFX__cmpuhq2 + __PFX__cmpusq2 + __PFX__cmpudq2 + __PFX__cmputq2 + __PFX__cmpha2 + __PFX__cmpsa2 + __PFX__cmpda2 + __PFX__cmpta2 + __PFX__cmpuha2 + __PFX__cmpusa2 + __PFX__cmpuda2 + __PFX__cmputa2 + __PFX__fractqqhq2 + __PFX__fractqqsq2 + __PFX__fractqqdq2 + __PFX__fractqqtq2 + __PFX__fractqqha + __PFX__fractqqsa + __PFX__fractqqda + __PFX__fractqqta + __PFX__fractqquqq + __PFX__fractqquhq + __PFX__fractqqusq + __PFX__fractqqudq + __PFX__fractqqutq + __PFX__fractqquha + __PFX__fractqqusa + __PFX__fractqquda + __PFX__fractqquta + __PFX__fractqqqi + __PFX__fractqqhi + __PFX__fractqqsi + __PFX__fractqqdi + __PFX__fractqqti + __PFX__fractqqsf + __PFX__fractqqdf + __PFX__fracthqqq2 + __PFX__fracthqsq2 + __PFX__fracthqdq2 + __PFX__fracthqtq2 + __PFX__fracthqha + __PFX__fracthqsa + __PFX__fracthqda + __PFX__fracthqta + __PFX__fracthquqq + __PFX__fracthquhq + __PFX__fracthqusq + __PFX__fracthqudq + __PFX__fracthqutq + __PFX__fracthquha + __PFX__fracthqusa + __PFX__fracthquda + __PFX__fracthquta + __PFX__fracthqqi + __PFX__fracthqhi + __PFX__fracthqsi + __PFX__fracthqdi + __PFX__fracthqti + __PFX__fracthqsf + __PFX__fracthqdf + __PFX__fractsqqq2 + __PFX__fractsqhq2 + __PFX__fractsqdq2 + __PFX__fractsqtq2 + __PFX__fractsqha + __PFX__fractsqsa + __PFX__fractsqda + __PFX__fractsqta + __PFX__fractsquqq + __PFX__fractsquhq + __PFX__fractsqusq + __PFX__fractsqudq + __PFX__fractsqutq + __PFX__fractsquha + __PFX__fractsqusa + __PFX__fractsquda + __PFX__fractsquta + __PFX__fractsqqi + __PFX__fractsqhi + __PFX__fractsqsi + __PFX__fractsqdi + __PFX__fractsqti + __PFX__fractsqsf + __PFX__fractsqdf + __PFX__fractdqqq2 + __PFX__fractdqhq2 + __PFX__fractdqsq2 + __PFX__fractdqtq2 + __PFX__fractdqha + __PFX__fractdqsa + __PFX__fractdqda + __PFX__fractdqta + __PFX__fractdquqq + __PFX__fractdquhq + __PFX__fractdqusq + __PFX__fractdqudq + __PFX__fractdqutq + __PFX__fractdquha + __PFX__fractdqusa + __PFX__fractdquda + __PFX__fractdquta + __PFX__fractdqqi + __PFX__fractdqhi + __PFX__fractdqsi + __PFX__fractdqdi + __PFX__fractdqti + __PFX__fractdqsf + __PFX__fractdqdf + __PFX__fracttqqq2 + __PFX__fracttqhq2 + __PFX__fracttqsq2 + __PFX__fracttqdq2 + __PFX__fracttqha + __PFX__fracttqsa + __PFX__fracttqda + __PFX__fracttqta + __PFX__fracttquqq + __PFX__fracttquhq + __PFX__fracttqusq + __PFX__fracttqudq + __PFX__fracttqutq + __PFX__fracttquha + __PFX__fracttqusa + __PFX__fracttquda + __PFX__fracttquta + __PFX__fracttqqi + __PFX__fracttqhi + __PFX__fracttqsi + __PFX__fracttqdi + __PFX__fracttqti + __PFX__fracttqsf + __PFX__fracttqdf + __PFX__fracthaqq + __PFX__fracthahq + __PFX__fracthasq + __PFX__fracthadq + __PFX__fracthatq + __PFX__fracthasa2 + __PFX__fracthada2 + __PFX__fracthata2 + __PFX__fracthauqq + __PFX__fracthauhq + __PFX__fracthausq + __PFX__fracthaudq + __PFX__fracthautq + __PFX__fracthauha + __PFX__fracthausa + __PFX__fracthauda + __PFX__fracthauta + __PFX__fracthaqi + __PFX__fracthahi + __PFX__fracthasi + __PFX__fracthadi + __PFX__fracthati + __PFX__fracthasf + __PFX__fracthadf + __PFX__fractsaqq + __PFX__fractsahq + __PFX__fractsasq + __PFX__fractsadq + __PFX__fractsatq + __PFX__fractsaha2 + __PFX__fractsada2 + __PFX__fractsata2 + __PFX__fractsauqq + __PFX__fractsauhq + __PFX__fractsausq + __PFX__fractsaudq + __PFX__fractsautq + __PFX__fractsauha + __PFX__fractsausa + __PFX__fractsauda + __PFX__fractsauta + __PFX__fractsaqi + __PFX__fractsahi + __PFX__fractsasi + __PFX__fractsadi + __PFX__fractsati + __PFX__fractsasf + __PFX__fractsadf + __PFX__fractdaqq + __PFX__fractdahq + __PFX__fractdasq + __PFX__fractdadq + __PFX__fractdatq + __PFX__fractdaha2 + __PFX__fractdasa2 + __PFX__fractdata2 + __PFX__fractdauqq + __PFX__fractdauhq + __PFX__fractdausq + __PFX__fractdaudq + __PFX__fractdautq + __PFX__fractdauha + __PFX__fractdausa + __PFX__fractdauda + __PFX__fractdauta + __PFX__fractdaqi + __PFX__fractdahi + __PFX__fractdasi + __PFX__fractdadi + __PFX__fractdati + __PFX__fractdasf + __PFX__fractdadf + __PFX__fracttaqq + __PFX__fracttahq + __PFX__fracttasq + __PFX__fracttadq + __PFX__fracttatq + __PFX__fracttaha2 + __PFX__fracttasa2 + __PFX__fracttada2 + __PFX__fracttauqq + __PFX__fracttauhq + __PFX__fracttausq + __PFX__fracttaudq + __PFX__fracttautq + __PFX__fracttauha + __PFX__fracttausa + __PFX__fracttauda + __PFX__fracttauta + __PFX__fracttaqi + __PFX__fracttahi + __PFX__fracttasi + __PFX__fracttadi + __PFX__fracttati + __PFX__fracttasf + __PFX__fracttadf + __PFX__fractuqqqq + __PFX__fractuqqhq + __PFX__fractuqqsq + __PFX__fractuqqdq + __PFX__fractuqqtq + __PFX__fractuqqha + __PFX__fractuqqsa + __PFX__fractuqqda + __PFX__fractuqqta + __PFX__fractuqquhq2 + __PFX__fractuqqusq2 + __PFX__fractuqqudq2 + __PFX__fractuqqutq2 + __PFX__fractuqquha + __PFX__fractuqqusa + __PFX__fractuqquda + __PFX__fractuqquta + __PFX__fractuqqqi + __PFX__fractuqqhi + __PFX__fractuqqsi + __PFX__fractuqqdi + __PFX__fractuqqti + __PFX__fractuqqsf + __PFX__fractuqqdf + __PFX__fractuhqqq + __PFX__fractuhqhq + __PFX__fractuhqsq + __PFX__fractuhqdq + __PFX__fractuhqtq + __PFX__fractuhqha + __PFX__fractuhqsa + __PFX__fractuhqda + __PFX__fractuhqta + __PFX__fractuhquqq2 + __PFX__fractuhqusq2 + __PFX__fractuhqudq2 + __PFX__fractuhqutq2 + __PFX__fractuhquha + __PFX__fractuhqusa + __PFX__fractuhquda + __PFX__fractuhquta + __PFX__fractuhqqi + __PFX__fractuhqhi + __PFX__fractuhqsi + __PFX__fractuhqdi + __PFX__fractuhqti + __PFX__fractuhqsf + __PFX__fractuhqdf + __PFX__fractusqqq + __PFX__fractusqhq + __PFX__fractusqsq + __PFX__fractusqdq + __PFX__fractusqtq + __PFX__fractusqha + __PFX__fractusqsa + __PFX__fractusqda + __PFX__fractusqta + __PFX__fractusquqq2 + __PFX__fractusquhq2 + __PFX__fractusqudq2 + __PFX__fractusqutq2 + __PFX__fractusquha + __PFX__fractusqusa + __PFX__fractusquda + __PFX__fractusquta + __PFX__fractusqqi + __PFX__fractusqhi + __PFX__fractusqsi + __PFX__fractusqdi + __PFX__fractusqti + __PFX__fractusqsf + __PFX__fractusqdf + __PFX__fractudqqq + __PFX__fractudqhq + __PFX__fractudqsq + __PFX__fractudqdq + __PFX__fractudqtq + __PFX__fractudqha + __PFX__fractudqsa + __PFX__fractudqda + __PFX__fractudqta + __PFX__fractudquqq2 + __PFX__fractudquhq2 + __PFX__fractudqusq2 + __PFX__fractudqutq2 + __PFX__fractudquha + __PFX__fractudqusa + __PFX__fractudquda + __PFX__fractudquta + __PFX__fractudqqi + __PFX__fractudqhi + __PFX__fractudqsi + __PFX__fractudqdi + __PFX__fractudqti + __PFX__fractudqsf + __PFX__fractudqdf + __PFX__fractutqqq + __PFX__fractutqhq + __PFX__fractutqsq + __PFX__fractutqdq + __PFX__fractutqtq + __PFX__fractutqha + __PFX__fractutqsa + __PFX__fractutqda + __PFX__fractutqta + __PFX__fractutquqq2 + __PFX__fractutquhq2 + __PFX__fractutqusq2 + __PFX__fractutqudq2 + __PFX__fractutquha + __PFX__fractutqusa + __PFX__fractutquda + __PFX__fractutquta + __PFX__fractutqqi + __PFX__fractutqhi + __PFX__fractutqsi + __PFX__fractutqdi + __PFX__fractutqti + __PFX__fractutqsf + __PFX__fractutqdf + __PFX__fractuhaqq + __PFX__fractuhahq + __PFX__fractuhasq + __PFX__fractuhadq + __PFX__fractuhatq + __PFX__fractuhaha + __PFX__fractuhasa + __PFX__fractuhada + __PFX__fractuhata + __PFX__fractuhauqq + __PFX__fractuhauhq + __PFX__fractuhausq + __PFX__fractuhaudq + __PFX__fractuhautq + __PFX__fractuhausa2 + __PFX__fractuhauda2 + __PFX__fractuhauta2 + __PFX__fractuhaqi + __PFX__fractuhahi + __PFX__fractuhasi + __PFX__fractuhadi + __PFX__fractuhati + __PFX__fractuhasf + __PFX__fractuhadf + __PFX__fractusaqq + __PFX__fractusahq + __PFX__fractusasq + __PFX__fractusadq + __PFX__fractusatq + __PFX__fractusaha + __PFX__fractusasa + __PFX__fractusada + __PFX__fractusata + __PFX__fractusauqq + __PFX__fractusauhq + __PFX__fractusausq + __PFX__fractusaudq + __PFX__fractusautq + __PFX__fractusauha2 + __PFX__fractusauda2 + __PFX__fractusauta2 + __PFX__fractusaqi + __PFX__fractusahi + __PFX__fractusasi + __PFX__fractusadi + __PFX__fractusati + __PFX__fractusasf + __PFX__fractusadf + __PFX__fractudaqq + __PFX__fractudahq + __PFX__fractudasq + __PFX__fractudadq + __PFX__fractudatq + __PFX__fractudaha + __PFX__fractudasa + __PFX__fractudada + __PFX__fractudata + __PFX__fractudauqq + __PFX__fractudauhq + __PFX__fractudausq + __PFX__fractudaudq + __PFX__fractudautq + __PFX__fractudauha2 + __PFX__fractudausa2 + __PFX__fractudauta2 + __PFX__fractudaqi + __PFX__fractudahi + __PFX__fractudasi + __PFX__fractudadi + __PFX__fractudati + __PFX__fractudasf + __PFX__fractudadf + __PFX__fractutaqq + __PFX__fractutahq + __PFX__fractutasq + __PFX__fractutadq + __PFX__fractutatq + __PFX__fractutaha + __PFX__fractutasa + __PFX__fractutada + __PFX__fractutata + __PFX__fractutauqq + __PFX__fractutauhq + __PFX__fractutausq + __PFX__fractutaudq + __PFX__fractutautq + __PFX__fractutauha2 + __PFX__fractutausa2 + __PFX__fractutauda2 + __PFX__fractutaqi + __PFX__fractutahi + __PFX__fractutasi + __PFX__fractutadi + __PFX__fractutati + __PFX__fractutasf + __PFX__fractutadf + __PFX__fractqiqq + __PFX__fractqihq + __PFX__fractqisq + __PFX__fractqidq + __PFX__fractqitq + __PFX__fractqiha + __PFX__fractqisa + __PFX__fractqida + __PFX__fractqita + __PFX__fractqiuqq + __PFX__fractqiuhq + __PFX__fractqiusq + __PFX__fractqiudq + __PFX__fractqiutq + __PFX__fractqiuha + __PFX__fractqiusa + __PFX__fractqiuda + __PFX__fractqiuta + __PFX__fracthiqq + __PFX__fracthihq + __PFX__fracthisq + __PFX__fracthidq + __PFX__fracthitq + __PFX__fracthiha + __PFX__fracthisa + __PFX__fracthida + __PFX__fracthita + __PFX__fracthiuqq + __PFX__fracthiuhq + __PFX__fracthiusq + __PFX__fracthiudq + __PFX__fracthiutq + __PFX__fracthiuha + __PFX__fracthiusa + __PFX__fracthiuda + __PFX__fracthiuta + __PFX__fractsiqq + __PFX__fractsihq + __PFX__fractsisq + __PFX__fractsidq + __PFX__fractsitq + __PFX__fractsiha + __PFX__fractsisa + __PFX__fractsida + __PFX__fractsita + __PFX__fractsiuqq + __PFX__fractsiuhq + __PFX__fractsiusq + __PFX__fractsiudq + __PFX__fractsiutq + __PFX__fractsiuha + __PFX__fractsiusa + __PFX__fractsiuda + __PFX__fractsiuta + __PFX__fractdiqq + __PFX__fractdihq + __PFX__fractdisq + __PFX__fractdidq + __PFX__fractditq + __PFX__fractdiha + __PFX__fractdisa + __PFX__fractdida + __PFX__fractdita + __PFX__fractdiuqq + __PFX__fractdiuhq + __PFX__fractdiusq + __PFX__fractdiudq + __PFX__fractdiutq + __PFX__fractdiuha + __PFX__fractdiusa + __PFX__fractdiuda + __PFX__fractdiuta + __PFX__fracttiqq + __PFX__fracttihq + __PFX__fracttisq + __PFX__fracttidq + __PFX__fracttitq + __PFX__fracttiha + __PFX__fracttisa + __PFX__fracttida + __PFX__fracttita + __PFX__fracttiuqq + __PFX__fracttiuhq + __PFX__fracttiusq + __PFX__fracttiudq + __PFX__fracttiutq + __PFX__fracttiuha + __PFX__fracttiusa + __PFX__fracttiuda + __PFX__fracttiuta + __PFX__fractsfqq + __PFX__fractsfhq + __PFX__fractsfsq + __PFX__fractsfdq + __PFX__fractsftq + __PFX__fractsfha + __PFX__fractsfsa + __PFX__fractsfda + __PFX__fractsfta + __PFX__fractsfuqq + __PFX__fractsfuhq + __PFX__fractsfusq + __PFX__fractsfudq + __PFX__fractsfutq + __PFX__fractsfuha + __PFX__fractsfusa + __PFX__fractsfuda + __PFX__fractsfuta + __PFX__fractdfqq + __PFX__fractdfhq + __PFX__fractdfsq + __PFX__fractdfdq + __PFX__fractdftq + __PFX__fractdfha + __PFX__fractdfsa + __PFX__fractdfda + __PFX__fractdfta + __PFX__fractdfuqq + __PFX__fractdfuhq + __PFX__fractdfusq + __PFX__fractdfudq + __PFX__fractdfutq + __PFX__fractdfuha + __PFX__fractdfusa + __PFX__fractdfuda + __PFX__fractdfuta + __PFX__satfractqqhq2 + __PFX__satfractqqsq2 + __PFX__satfractqqdq2 + __PFX__satfractqqtq2 + __PFX__satfractqqha + __PFX__satfractqqsa + __PFX__satfractqqda + __PFX__satfractqqta + __PFX__satfractqquqq + __PFX__satfractqquhq + __PFX__satfractqqusq + __PFX__satfractqqudq + __PFX__satfractqqutq + __PFX__satfractqquha + __PFX__satfractqqusa + __PFX__satfractqquda + __PFX__satfractqquta + __PFX__satfracthqqq2 + __PFX__satfracthqsq2 + __PFX__satfracthqdq2 + __PFX__satfracthqtq2 + __PFX__satfracthqha + __PFX__satfracthqsa + __PFX__satfracthqda + __PFX__satfracthqta + __PFX__satfracthquqq + __PFX__satfracthquhq + __PFX__satfracthqusq + __PFX__satfracthqudq + __PFX__satfracthqutq + __PFX__satfracthquha + __PFX__satfracthqusa + __PFX__satfracthquda + __PFX__satfracthquta + __PFX__satfractsqqq2 + __PFX__satfractsqhq2 + __PFX__satfractsqdq2 + __PFX__satfractsqtq2 + __PFX__satfractsqha + __PFX__satfractsqsa + __PFX__satfractsqda + __PFX__satfractsqta + __PFX__satfractsquqq + __PFX__satfractsquhq + __PFX__satfractsqusq + __PFX__satfractsqudq + __PFX__satfractsqutq + __PFX__satfractsquha + __PFX__satfractsqusa + __PFX__satfractsquda + __PFX__satfractsquta + __PFX__satfractdqqq2 + __PFX__satfractdqhq2 + __PFX__satfractdqsq2 + __PFX__satfractdqtq2 + __PFX__satfractdqha + __PFX__satfractdqsa + __PFX__satfractdqda + __PFX__satfractdqta + __PFX__satfractdquqq + __PFX__satfractdquhq + __PFX__satfractdqusq + __PFX__satfractdqudq + __PFX__satfractdqutq + __PFX__satfractdquha + __PFX__satfractdqusa + __PFX__satfractdquda + __PFX__satfractdquta + __PFX__satfracttqqq2 + __PFX__satfracttqhq2 + __PFX__satfracttqsq2 + __PFX__satfracttqdq2 + __PFX__satfracttqha + __PFX__satfracttqsa + __PFX__satfracttqda + __PFX__satfracttqta + __PFX__satfracttquqq + __PFX__satfracttquhq + __PFX__satfracttqusq + __PFX__satfracttqudq + __PFX__satfracttqutq + __PFX__satfracttquha + __PFX__satfracttqusa + __PFX__satfracttquda + __PFX__satfracttquta + __PFX__satfracthaqq + __PFX__satfracthahq + __PFX__satfracthasq + __PFX__satfracthadq + __PFX__satfracthatq + __PFX__satfracthasa2 + __PFX__satfracthada2 + __PFX__satfracthata2 + __PFX__satfracthauqq + __PFX__satfracthauhq + __PFX__satfracthausq + __PFX__satfracthaudq + __PFX__satfracthautq + __PFX__satfracthauha + __PFX__satfracthausa + __PFX__satfracthauda + __PFX__satfracthauta + __PFX__satfractsaqq + __PFX__satfractsahq + __PFX__satfractsasq + __PFX__satfractsadq + __PFX__satfractsatq + __PFX__satfractsaha2 + __PFX__satfractsada2 + __PFX__satfractsata2 + __PFX__satfractsauqq + __PFX__satfractsauhq + __PFX__satfractsausq + __PFX__satfractsaudq + __PFX__satfractsautq + __PFX__satfractsauha + __PFX__satfractsausa + __PFX__satfractsauda + __PFX__satfractsauta + __PFX__satfractdaqq + __PFX__satfractdahq + __PFX__satfractdasq + __PFX__satfractdadq + __PFX__satfractdatq + __PFX__satfractdaha2 + __PFX__satfractdasa2 + __PFX__satfractdata2 + __PFX__satfractdauqq + __PFX__satfractdauhq + __PFX__satfractdausq + __PFX__satfractdaudq + __PFX__satfractdautq + __PFX__satfractdauha + __PFX__satfractdausa + __PFX__satfractdauda + __PFX__satfractdauta + __PFX__satfracttaqq + __PFX__satfracttahq + __PFX__satfracttasq + __PFX__satfracttadq + __PFX__satfracttatq + __PFX__satfracttaha2 + __PFX__satfracttasa2 + __PFX__satfracttada2 + __PFX__satfracttauqq + __PFX__satfracttauhq + __PFX__satfracttausq + __PFX__satfracttaudq + __PFX__satfracttautq + __PFX__satfracttauha + __PFX__satfracttausa + __PFX__satfracttauda + __PFX__satfracttauta + __PFX__satfractuqqqq + __PFX__satfractuqqhq + __PFX__satfractuqqsq + __PFX__satfractuqqdq + __PFX__satfractuqqtq + __PFX__satfractuqqha + __PFX__satfractuqqsa + __PFX__satfractuqqda + __PFX__satfractuqqta + __PFX__satfractuqquhq2 + __PFX__satfractuqqusq2 + __PFX__satfractuqqudq2 + __PFX__satfractuqqutq2 + __PFX__satfractuqquha + __PFX__satfractuqqusa + __PFX__satfractuqquda + __PFX__satfractuqquta + __PFX__satfractuhqqq + __PFX__satfractuhqhq + __PFX__satfractuhqsq + __PFX__satfractuhqdq + __PFX__satfractuhqtq + __PFX__satfractuhqha + __PFX__satfractuhqsa + __PFX__satfractuhqda + __PFX__satfractuhqta + __PFX__satfractuhquqq2 + __PFX__satfractuhqusq2 + __PFX__satfractuhqudq2 + __PFX__satfractuhqutq2 + __PFX__satfractuhquha + __PFX__satfractuhqusa + __PFX__satfractuhquda + __PFX__satfractuhquta + __PFX__satfractusqqq + __PFX__satfractusqhq + __PFX__satfractusqsq + __PFX__satfractusqdq + __PFX__satfractusqtq + __PFX__satfractusqha + __PFX__satfractusqsa + __PFX__satfractusqda + __PFX__satfractusqta + __PFX__satfractusquqq2 + __PFX__satfractusquhq2 + __PFX__satfractusqudq2 + __PFX__satfractusqutq2 + __PFX__satfractusquha + __PFX__satfractusqusa + __PFX__satfractusquda + __PFX__satfractusquta + __PFX__satfractudqqq + __PFX__satfractudqhq + __PFX__satfractudqsq + __PFX__satfractudqdq + __PFX__satfractudqtq + __PFX__satfractudqha + __PFX__satfractudqsa + __PFX__satfractudqda + __PFX__satfractudqta + __PFX__satfractudquqq2 + __PFX__satfractudquhq2 + __PFX__satfractudqusq2 + __PFX__satfractudqutq2 + __PFX__satfractudquha + __PFX__satfractudqusa + __PFX__satfractudquda + __PFX__satfractudquta + __PFX__satfractutqqq + __PFX__satfractutqhq + __PFX__satfractutqsq + __PFX__satfractutqdq + __PFX__satfractutqtq + __PFX__satfractutqha + __PFX__satfractutqsa + __PFX__satfractutqda + __PFX__satfractutqta + __PFX__satfractutquqq2 + __PFX__satfractutquhq2 + __PFX__satfractutqusq2 + __PFX__satfractutqudq2 + __PFX__satfractutquha + __PFX__satfractutqusa + __PFX__satfractutquda + __PFX__satfractutquta + __PFX__satfractuhaqq + __PFX__satfractuhahq + __PFX__satfractuhasq + __PFX__satfractuhadq + __PFX__satfractuhatq + __PFX__satfractuhaha + __PFX__satfractuhasa + __PFX__satfractuhada + __PFX__satfractuhata + __PFX__satfractuhauqq + __PFX__satfractuhauhq + __PFX__satfractuhausq + __PFX__satfractuhaudq + __PFX__satfractuhautq + __PFX__satfractuhausa2 + __PFX__satfractuhauda2 + __PFX__satfractuhauta2 + __PFX__satfractusaqq + __PFX__satfractusahq + __PFX__satfractusasq + __PFX__satfractusadq + __PFX__satfractusatq + __PFX__satfractusaha + __PFX__satfractusasa + __PFX__satfractusada + __PFX__satfractusata + __PFX__satfractusauqq + __PFX__satfractusauhq + __PFX__satfractusausq + __PFX__satfractusaudq + __PFX__satfractusautq + __PFX__satfractusauha2 + __PFX__satfractusauda2 + __PFX__satfractusauta2 + __PFX__satfractudaqq + __PFX__satfractudahq + __PFX__satfractudasq + __PFX__satfractudadq + __PFX__satfractudatq + __PFX__satfractudaha + __PFX__satfractudasa + __PFX__satfractudada + __PFX__satfractudata + __PFX__satfractudauqq + __PFX__satfractudauhq + __PFX__satfractudausq + __PFX__satfractudaudq + __PFX__satfractudautq + __PFX__satfractudauha2 + __PFX__satfractudausa2 + __PFX__satfractudauta2 + __PFX__satfractutaqq + __PFX__satfractutahq + __PFX__satfractutasq + __PFX__satfractutadq + __PFX__satfractutatq + __PFX__satfractutaha + __PFX__satfractutasa + __PFX__satfractutada + __PFX__satfractutata + __PFX__satfractutauqq + __PFX__satfractutauhq + __PFX__satfractutausq + __PFX__satfractutaudq + __PFX__satfractutautq + __PFX__satfractutauha2 + __PFX__satfractutausa2 + __PFX__satfractutauda2 + __PFX__satfractqiqq + __PFX__satfractqihq + __PFX__satfractqisq + __PFX__satfractqidq + __PFX__satfractqitq + __PFX__satfractqiha + __PFX__satfractqisa + __PFX__satfractqida + __PFX__satfractqita + __PFX__satfractqiuqq + __PFX__satfractqiuhq + __PFX__satfractqiusq + __PFX__satfractqiudq + __PFX__satfractqiutq + __PFX__satfractqiuha + __PFX__satfractqiusa + __PFX__satfractqiuda + __PFX__satfractqiuta + __PFX__satfracthiqq + __PFX__satfracthihq + __PFX__satfracthisq + __PFX__satfracthidq + __PFX__satfracthitq + __PFX__satfracthiha + __PFX__satfracthisa + __PFX__satfracthida + __PFX__satfracthita + __PFX__satfracthiuqq + __PFX__satfracthiuhq + __PFX__satfracthiusq + __PFX__satfracthiudq + __PFX__satfracthiutq + __PFX__satfracthiuha + __PFX__satfracthiusa + __PFX__satfracthiuda + __PFX__satfracthiuta + __PFX__satfractsiqq + __PFX__satfractsihq + __PFX__satfractsisq + __PFX__satfractsidq + __PFX__satfractsitq + __PFX__satfractsiha + __PFX__satfractsisa + __PFX__satfractsida + __PFX__satfractsita + __PFX__satfractsiuqq + __PFX__satfractsiuhq + __PFX__satfractsiusq + __PFX__satfractsiudq + __PFX__satfractsiutq + __PFX__satfractsiuha + __PFX__satfractsiusa + __PFX__satfractsiuda + __PFX__satfractsiuta + __PFX__satfractdiqq + __PFX__satfractdihq + __PFX__satfractdisq + __PFX__satfractdidq + __PFX__satfractditq + __PFX__satfractdiha + __PFX__satfractdisa + __PFX__satfractdida + __PFX__satfractdita + __PFX__satfractdiuqq + __PFX__satfractdiuhq + __PFX__satfractdiusq + __PFX__satfractdiudq + __PFX__satfractdiutq + __PFX__satfractdiuha + __PFX__satfractdiusa + __PFX__satfractdiuda + __PFX__satfractdiuta + __PFX__satfracttiqq + __PFX__satfracttihq + __PFX__satfracttisq + __PFX__satfracttidq + __PFX__satfracttitq + __PFX__satfracttiha + __PFX__satfracttisa + __PFX__satfracttida + __PFX__satfracttita + __PFX__satfracttiuqq + __PFX__satfracttiuhq + __PFX__satfracttiusq + __PFX__satfracttiudq + __PFX__satfracttiutq + __PFX__satfracttiuha + __PFX__satfracttiusa + __PFX__satfracttiuda + __PFX__satfracttiuta + __PFX__satfractsfqq + __PFX__satfractsfhq + __PFX__satfractsfsq + __PFX__satfractsfdq + __PFX__satfractsftq + __PFX__satfractsfha + __PFX__satfractsfsa + __PFX__satfractsfda + __PFX__satfractsfta + __PFX__satfractsfuqq + __PFX__satfractsfuhq + __PFX__satfractsfusq + __PFX__satfractsfudq + __PFX__satfractsfutq + __PFX__satfractsfuha + __PFX__satfractsfusa + __PFX__satfractsfuda + __PFX__satfractsfuta + __PFX__satfractdfqq + __PFX__satfractdfhq + __PFX__satfractdfsq + __PFX__satfractdfdq + __PFX__satfractdftq + __PFX__satfractdfha + __PFX__satfractdfsa + __PFX__satfractdfda + __PFX__satfractdfta + __PFX__satfractdfuqq + __PFX__satfractdfuhq + __PFX__satfractdfusq + __PFX__satfractdfudq + __PFX__satfractdfutq + __PFX__satfractdfuha + __PFX__satfractdfusa + __PFX__satfractdfuda + __PFX__satfractdfuta + __PFX__fractunsqqqi + __PFX__fractunsqqhi + __PFX__fractunsqqsi + __PFX__fractunsqqdi + __PFX__fractunsqqti + __PFX__fractunshqqi + __PFX__fractunshqhi + __PFX__fractunshqsi + __PFX__fractunshqdi + __PFX__fractunshqti + __PFX__fractunssqqi + __PFX__fractunssqhi + __PFX__fractunssqsi + __PFX__fractunssqdi + __PFX__fractunssqti + __PFX__fractunsdqqi + __PFX__fractunsdqhi + __PFX__fractunsdqsi + __PFX__fractunsdqdi + __PFX__fractunsdqti + __PFX__fractunstqqi + __PFX__fractunstqhi + __PFX__fractunstqsi + __PFX__fractunstqdi + __PFX__fractunstqti + __PFX__fractunshaqi + __PFX__fractunshahi + __PFX__fractunshasi + __PFX__fractunshadi + __PFX__fractunshati + __PFX__fractunssaqi + __PFX__fractunssahi + __PFX__fractunssasi + __PFX__fractunssadi + __PFX__fractunssati + __PFX__fractunsdaqi + __PFX__fractunsdahi + __PFX__fractunsdasi + __PFX__fractunsdadi + __PFX__fractunsdati + __PFX__fractunstaqi + __PFX__fractunstahi + __PFX__fractunstasi + __PFX__fractunstadi + __PFX__fractunstati + __PFX__fractunsuqqqi + __PFX__fractunsuqqhi + __PFX__fractunsuqqsi + __PFX__fractunsuqqdi + __PFX__fractunsuqqti + __PFX__fractunsuhqqi + __PFX__fractunsuhqhi + __PFX__fractunsuhqsi + __PFX__fractunsuhqdi + __PFX__fractunsuhqti + __PFX__fractunsusqqi + __PFX__fractunsusqhi + __PFX__fractunsusqsi + __PFX__fractunsusqdi + __PFX__fractunsusqti + __PFX__fractunsudqqi + __PFX__fractunsudqhi + __PFX__fractunsudqsi + __PFX__fractunsudqdi + __PFX__fractunsudqti + __PFX__fractunsutqqi + __PFX__fractunsutqhi + __PFX__fractunsutqsi + __PFX__fractunsutqdi + __PFX__fractunsutqti + __PFX__fractunsuhaqi + __PFX__fractunsuhahi + __PFX__fractunsuhasi + __PFX__fractunsuhadi + __PFX__fractunsuhati + __PFX__fractunsusaqi + __PFX__fractunsusahi + __PFX__fractunsusasi + __PFX__fractunsusadi + __PFX__fractunsusati + __PFX__fractunsudaqi + __PFX__fractunsudahi + __PFX__fractunsudasi + __PFX__fractunsudadi + __PFX__fractunsudati + __PFX__fractunsutaqi + __PFX__fractunsutahi + __PFX__fractunsutasi + __PFX__fractunsutadi + __PFX__fractunsutati + __PFX__fractunsqiqq + __PFX__fractunsqihq + __PFX__fractunsqisq + __PFX__fractunsqidq + __PFX__fractunsqitq + __PFX__fractunsqiha + __PFX__fractunsqisa + __PFX__fractunsqida + __PFX__fractunsqita + __PFX__fractunsqiuqq + __PFX__fractunsqiuhq + __PFX__fractunsqiusq + __PFX__fractunsqiudq + __PFX__fractunsqiutq + __PFX__fractunsqiuha + __PFX__fractunsqiusa + __PFX__fractunsqiuda + __PFX__fractunsqiuta + __PFX__fractunshiqq + __PFX__fractunshihq + __PFX__fractunshisq + __PFX__fractunshidq + __PFX__fractunshitq + __PFX__fractunshiha + __PFX__fractunshisa + __PFX__fractunshida + __PFX__fractunshita + __PFX__fractunshiuqq + __PFX__fractunshiuhq + __PFX__fractunshiusq + __PFX__fractunshiudq + __PFX__fractunshiutq + __PFX__fractunshiuha + __PFX__fractunshiusa + __PFX__fractunshiuda + __PFX__fractunshiuta + __PFX__fractunssiqq + __PFX__fractunssihq + __PFX__fractunssisq + __PFX__fractunssidq + __PFX__fractunssitq + __PFX__fractunssiha + __PFX__fractunssisa + __PFX__fractunssida + __PFX__fractunssita + __PFX__fractunssiuqq + __PFX__fractunssiuhq + __PFX__fractunssiusq + __PFX__fractunssiudq + __PFX__fractunssiutq + __PFX__fractunssiuha + __PFX__fractunssiusa + __PFX__fractunssiuda + __PFX__fractunssiuta + __PFX__fractunsdiqq + __PFX__fractunsdihq + __PFX__fractunsdisq + __PFX__fractunsdidq + __PFX__fractunsditq + __PFX__fractunsdiha + __PFX__fractunsdisa + __PFX__fractunsdida + __PFX__fractunsdita + __PFX__fractunsdiuqq + __PFX__fractunsdiuhq + __PFX__fractunsdiusq + __PFX__fractunsdiudq + __PFX__fractunsdiutq + __PFX__fractunsdiuha + __PFX__fractunsdiusa + __PFX__fractunsdiuda + __PFX__fractunsdiuta + __PFX__fractunstiqq + __PFX__fractunstihq + __PFX__fractunstisq + __PFX__fractunstidq + __PFX__fractunstitq + __PFX__fractunstiha + __PFX__fractunstisa + __PFX__fractunstida + __PFX__fractunstita + __PFX__fractunstiuqq + __PFX__fractunstiuhq + __PFX__fractunstiusq + __PFX__fractunstiudq + __PFX__fractunstiutq + __PFX__fractunstiuha + __PFX__fractunstiusa + __PFX__fractunstiuda + __PFX__fractunstiuta + __PFX__satfractunsqiqq + __PFX__satfractunsqihq + __PFX__satfractunsqisq + __PFX__satfractunsqidq + __PFX__satfractunsqitq + __PFX__satfractunsqiha + __PFX__satfractunsqisa + __PFX__satfractunsqida + __PFX__satfractunsqita + __PFX__satfractunsqiuqq + __PFX__satfractunsqiuhq + __PFX__satfractunsqiusq + __PFX__satfractunsqiudq + __PFX__satfractunsqiutq + __PFX__satfractunsqiuha + __PFX__satfractunsqiusa + __PFX__satfractunsqiuda + __PFX__satfractunsqiuta + __PFX__satfractunshiqq + __PFX__satfractunshihq + __PFX__satfractunshisq + __PFX__satfractunshidq + __PFX__satfractunshitq + __PFX__satfractunshiha + __PFX__satfractunshisa + __PFX__satfractunshida + __PFX__satfractunshita + __PFX__satfractunshiuqq + __PFX__satfractunshiuhq + __PFX__satfractunshiusq + __PFX__satfractunshiudq + __PFX__satfractunshiutq + __PFX__satfractunshiuha + __PFX__satfractunshiusa + __PFX__satfractunshiuda + __PFX__satfractunshiuta + __PFX__satfractunssiqq + __PFX__satfractunssihq + __PFX__satfractunssisq + __PFX__satfractunssidq + __PFX__satfractunssitq + __PFX__satfractunssiha + __PFX__satfractunssisa + __PFX__satfractunssida + __PFX__satfractunssita + __PFX__satfractunssiuqq + __PFX__satfractunssiuhq + __PFX__satfractunssiusq + __PFX__satfractunssiudq + __PFX__satfractunssiutq + __PFX__satfractunssiuha + __PFX__satfractunssiusa + __PFX__satfractunssiuda + __PFX__satfractunssiuta + __PFX__satfractunsdiqq + __PFX__satfractunsdihq + __PFX__satfractunsdisq + __PFX__satfractunsdidq + __PFX__satfractunsditq + __PFX__satfractunsdiha + __PFX__satfractunsdisa + __PFX__satfractunsdida + __PFX__satfractunsdita + __PFX__satfractunsdiuqq + __PFX__satfractunsdiuhq + __PFX__satfractunsdiusq + __PFX__satfractunsdiudq + __PFX__satfractunsdiutq + __PFX__satfractunsdiuha + __PFX__satfractunsdiusa + __PFX__satfractunsdiuda + __PFX__satfractunsdiuta + __PFX__satfractunstiqq + __PFX__satfractunstihq + __PFX__satfractunstisq + __PFX__satfractunstidq + __PFX__satfractunstitq + __PFX__satfractunstiha + __PFX__satfractunstisa + __PFX__satfractunstida + __PFX__satfractunstita + __PFX__satfractunstiuqq + __PFX__satfractunstiuhq + __PFX__satfractunstiusq + __PFX__satfractunstiudq + __PFX__satfractunstiutq + __PFX__satfractunstiuha + __PFX__satfractunstiusa + __PFX__satfractunstiuda + __PFX__satfractunstiuta +} + +%inherit GCC_4.4.0 GCC_4.3.0 +GCC_4.4.0 { + __sync_fetch_and_add_1 + __sync_fetch_and_sub_1 + __sync_fetch_and_or_1 + __sync_fetch_and_and_1 + __sync_fetch_and_xor_1 + __sync_fetch_and_nand_1 + __sync_add_and_fetch_1 + __sync_sub_and_fetch_1 + __sync_or_and_fetch_1 + __sync_and_and_fetch_1 + __sync_xor_and_fetch_1 + __sync_nand_and_fetch_1 + __sync_bool_compare_and_swap_1 + __sync_val_compare_and_swap_1 + __sync_lock_test_and_set_1 + + __sync_fetch_and_add_2 + __sync_fetch_and_sub_2 + __sync_fetch_and_or_2 + __sync_fetch_and_and_2 + __sync_fetch_and_xor_2 + __sync_fetch_and_nand_2 + __sync_add_and_fetch_2 + __sync_sub_and_fetch_2 + __sync_or_and_fetch_2 + __sync_and_and_fetch_2 + __sync_xor_and_fetch_2 + __sync_nand_and_fetch_2 + __sync_bool_compare_and_swap_2 + __sync_val_compare_and_swap_2 + __sync_lock_test_and_set_2 + + __sync_fetch_and_add_4 + __sync_fetch_and_sub_4 + __sync_fetch_and_or_4 + __sync_fetch_and_and_4 + __sync_fetch_and_xor_4 + __sync_fetch_and_nand_4 + __sync_add_and_fetch_4 + __sync_sub_and_fetch_4 + __sync_or_and_fetch_4 + __sync_and_and_fetch_4 + __sync_xor_and_fetch_4 + __sync_nand_and_fetch_4 + __sync_bool_compare_and_swap_4 + __sync_val_compare_and_swap_4 + __sync_lock_test_and_set_4 + + __sync_fetch_and_add_8 + __sync_fetch_and_sub_8 + __sync_fetch_and_or_8 + __sync_fetch_and_and_8 + __sync_fetch_and_xor_8 + __sync_fetch_and_nand_8 + __sync_add_and_fetch_8 + __sync_sub_and_fetch_8 + __sync_or_and_fetch_8 + __sync_and_and_fetch_8 + __sync_xor_and_fetch_8 + __sync_nand_and_fetch_8 + __sync_bool_compare_and_swap_8 + __sync_val_compare_and_swap_8 + __sync_lock_test_and_set_8 + + __sync_fetch_and_add_16 + __sync_fetch_and_sub_16 + __sync_fetch_and_or_16 + __sync_fetch_and_and_16 + __sync_fetch_and_xor_16 + __sync_fetch_and_nand_16 + __sync_add_and_fetch_16 + __sync_sub_and_fetch_16 + __sync_or_and_fetch_16 + __sync_and_and_fetch_16 + __sync_xor_and_fetch_16 + __sync_nand_and_fetch_16 + __sync_bool_compare_and_swap_16 + __sync_val_compare_and_swap_16 + __sync_lock_test_and_set_16 + + __sync_synchronize +} + +%inherit GCC_4.5.0 GCC_4.4.0 +GCC_4.5.0 { + __unordxf2 + __unordtf2 +} + +%inherit GCC_4.6.0 GCC_4.5.0 +GCC_4.6.0 { + __morestack_segments + __morestack_current_segment + __morestack_initial_sp + __splitstack_find +} -- 2.30.2