diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-02-08 07:19:43 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-02-08 07:19:43 +0000 |
commit | 0d6c33ead962cfd497c1a65bd3fe0984f5c09eac (patch) | |
tree | a41bb4f1cec14e074b92e413221535071e94078e /gcc/config | |
parent | 532468197e7b09fe4d5abb03c4ad1e8803136df1 (diff) | |
download | ppe42-gcc-0d6c33ead962cfd497c1a65bd3fe0984f5c09eac.tar.gz ppe42-gcc-0d6c33ead962cfd497c1a65bd3fe0984f5c09eac.zip |
* config.gcc (sparc-*-linux*): Add sparc/t-linux to tmake_file.
(sparc64-*-linux*): Likewise.
* config/sparc/t-linux64 (SHLIB_MAPFILES): Removed.
* config/sparc/t-linux: New file.
* config/sparc/libgcc-sparc-glibc.ver (__fixtfdi, __fixunstfdi,
__floatditf): Export at GCC_LDBL_3.0 if -m32 -mlong-double-128.
(__divtc3, __multc3, __powitf2): Export at GCC_LDBL_4.0.0 if
-m32 -mlong-double-128.
* config.gcc (alpha*-*-linux*): Add alpha/t-linux to tmake_file.
* config/alpha/t-linux: New file.
* config/alpha/libgcc-alpha-ldbl.ver: New file.
* config/sparc/linux.h (TARGET_OS_CPP_BUILTINS): Define
__LONG_DOUBLE_128__ if TARGET_LONG_DOUBLE_128.
(CPP_SUBTARGET_SPEC): Don't add -D__LONG_DOUBLE_128__ here.
* config/sparc/linux64.h (TARGET_OS_CPP_BUILTINS): Define
__LONG_DOUBLE_128__ if TARGET_LONG_DOUBLE_128 and TARGET_ARCH32.
(CPP_ARCH32_SPEC): Remove.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@110741 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/alpha/libgcc-alpha-ldbl.ver | 32 | ||||
-rw-r--r-- | gcc/config/alpha/t-linux | 1 | ||||
-rw-r--r-- | gcc/config/sparc/libgcc-sparc-glibc.ver | 33 | ||||
-rw-r--r-- | gcc/config/sparc/linux.h | 17 | ||||
-rw-r--r-- | gcc/config/sparc/linux64.h | 31 | ||||
-rw-r--r-- | gcc/config/sparc/t-linux | 5 | ||||
-rw-r--r-- | gcc/config/sparc/t-linux64 | 6 |
7 files changed, 93 insertions, 32 deletions
diff --git a/gcc/config/alpha/libgcc-alpha-ldbl.ver b/gcc/config/alpha/libgcc-alpha-ldbl.ver new file mode 100644 index 00000000000..f8fc4a9fa77 --- /dev/null +++ b/gcc/config/alpha/libgcc-alpha-ldbl.ver @@ -0,0 +1,32 @@ +%ifdef __LONG_DOUBLE_128__ + +# long double 128 bit support in libgcc_s.so.1 is only available +# when configured with --with-long-double-128. Make sure all the +# symbols are available at @@GCC_LDBL_* versions to make it clear +# there is a configurable symbol set. + +%exclude { + __fixtfdi + __fixunstfdi + __floatditf + + __divtc3 + __multc3 + __powitf2 +} + +%inherit GCC_LDBL_3.0 GCC_3.0 +GCC_LDBL_3.0 { + __fixtfdi + __fixunstfdi + __floatditf +} + +%inherit GCC_LDBL_4.0.0 GCC_4.0.0 +GCC_LDBL_4.0.0 { + __divtc3 + __multc3 + __powitf2 +} + +%endif diff --git a/gcc/config/alpha/t-linux b/gcc/config/alpha/t-linux new file mode 100644 index 00000000000..fabf38f9cce --- /dev/null +++ b/gcc/config/alpha/t-linux @@ -0,0 +1 @@ +SHLIB_MAPFILES += $(srcdir)/config/alpha/libgcc-alpha-ldbl.ver diff --git a/gcc/config/sparc/libgcc-sparc-glibc.ver b/gcc/config/sparc/libgcc-sparc-glibc.ver index e3ba0bbdb65..ed280fe05a7 100644 --- a/gcc/config/sparc/libgcc-sparc-glibc.ver +++ b/gcc/config/sparc/libgcc-sparc-glibc.ver @@ -26,3 +26,36 @@ GLIBC_VER { __frame_state_for __register_frame_info_table } + +%if !defined (__arch64__) && defined (__LONG_DOUBLE_128__) + +# long double 128 bit support from 32-bit libgcc_s.so.1 is only available +# when configured with --with-long-double-128. Make sure all the +# symbols are available at @@GCC_LDBL_* versions to make it clear +# there is a configurable symbol set. + +%exclude { + __fixtfdi + __fixunstfdi + __floatditf + + __divtc3 + __multc3 + __powitf2 +} + +%inherit GCC_LDBL_3.0 GCC_3.0 +GCC_LDBL_3.0 { + __fixtfdi + __fixunstfdi + __floatditf +} + +%inherit GCC_LDBL_4.0.0 GCC_4.0.0 +GCC_LDBL_4.0.0 { + __divtc3 + __multc3 + __powitf2 +} + +%endif diff --git a/gcc/config/sparc/linux.h b/gcc/config/sparc/linux.h index df0fe58bc73..524c720ae63 100644 --- a/gcc/config/sparc/linux.h +++ b/gcc/config/sparc/linux.h @@ -23,12 +23,14 @@ Boston, MA 02110-1301, USA. */ #define TARGET_OS_CPP_BUILTINS() \ do \ { \ - builtin_define_std ("unix"); \ - builtin_define_std ("linux"); \ - builtin_define ("__gnu_linux__"); \ - builtin_assert ("system=linux"); \ - builtin_assert ("system=unix"); \ - builtin_assert ("system=posix"); \ + builtin_define_std ("unix"); \ + builtin_define_std ("linux"); \ + builtin_define ("__gnu_linux__"); \ + builtin_assert ("system=linux"); \ + builtin_assert ("system=unix"); \ + builtin_assert ("system=posix"); \ + if (TARGET_LONG_DOUBLE_128) \ + builtin_define ("__LONG_DOUBLE_128__"); \ } \ while (0) @@ -95,8 +97,7 @@ Boston, MA 02110-1301, USA. */ #undef CPP_SUBTARGET_SPEC #define CPP_SUBTARGET_SPEC \ -"%{posix:-D_POSIX_SOURCE} \ -%{pthread:-D_REENTRANT} %{mlong-double-128:-D__LONG_DOUBLE_128__}" +"%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}" #undef LIB_SPEC #define LIB_SPEC \ diff --git a/gcc/config/sparc/linux64.h b/gcc/config/sparc/linux64.h index f997fee37f7..a190c1654b1 100644 --- a/gcc/config/sparc/linux64.h +++ b/gcc/config/sparc/linux64.h @@ -20,17 +20,19 @@ along with GCC; see the file COPYING. If not, write to the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#define TARGET_OS_CPP_BUILTINS() \ - do \ - { \ - builtin_define_std ("unix"); \ - builtin_define_std ("linux"); \ - builtin_define ("_LONGLONG"); \ - builtin_define ("__gnu_linux__"); \ - builtin_assert ("system=linux"); \ - builtin_assert ("system=unix"); \ - builtin_assert ("system=posix"); \ - } \ +#define TARGET_OS_CPP_BUILTINS() \ + do \ + { \ + builtin_define_std ("unix"); \ + builtin_define_std ("linux"); \ + builtin_define ("_LONGLONG"); \ + builtin_define ("__gnu_linux__"); \ + builtin_assert ("system=linux"); \ + builtin_assert ("system=unix"); \ + builtin_assert ("system=posix"); \ + if (TARGET_ARCH32 && TARGET_LONG_DOUBLE_128) \ + builtin_define ("__LONG_DOUBLE_128__"); \ + } \ while (0) /* Don't assume anything about the header files. */ @@ -54,13 +56,6 @@ Boston, MA 02110-1301, USA. */ #undef ASM_CPU_DEFAULT_SPEC #define ASM_CPU_DEFAULT_SPEC "-Av9a" -#ifdef SPARC_BI_ARCH - -#undef CPP_ARCH32_SPEC -#define CPP_ARCH32_SPEC "%{mlong-double-128:-D__LONG_DOUBLE_128__}" - -#endif - /* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add the GNU/Linux magical crtbegin.o file (see crtstuff.c) which provides part of the support for getting C++ file-scope static diff --git a/gcc/config/sparc/t-linux b/gcc/config/sparc/t-linux new file mode 100644 index 00000000000..a3e513087f5 --- /dev/null +++ b/gcc/config/sparc/t-linux @@ -0,0 +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 \ + $(srcdir)/config/sparc/libgcc-sparc-glibc.ver diff --git a/gcc/config/sparc/t-linux64 b/gcc/config/sparc/t-linux64 index 3e3fa4cae7e..7a1d5b1e145 100644 --- a/gcc/config/sparc/t-linux64 +++ b/gcc/config/sparc/t-linux64 @@ -8,12 +8,6 @@ INSTALL_LIBGCC = install-multilib EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o \ crtfastmath.o -# 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 \ - $(srcdir)/config/sparc/libgcc-sparc-glibc.ver - CRTSTUFF_T_CFLAGS = `if test x$$($(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) \ -print-multi-os-directory) \ = x../lib64; then echo -mcmodel=medany; fi` |