summaryrefslogtreecommitdiffstats
path: root/gcc/config
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2006-02-08 07:19:43 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2006-02-08 07:19:43 +0000
commit0d6c33ead962cfd497c1a65bd3fe0984f5c09eac (patch)
treea41bb4f1cec14e074b92e413221535071e94078e /gcc/config
parent532468197e7b09fe4d5abb03c4ad1e8803136df1 (diff)
downloadppe42-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.ver32
-rw-r--r--gcc/config/alpha/t-linux1
-rw-r--r--gcc/config/sparc/libgcc-sparc-glibc.ver33
-rw-r--r--gcc/config/sparc/linux.h17
-rw-r--r--gcc/config/sparc/linux64.h31
-rw-r--r--gcc/config/sparc/t-linux5
-rw-r--r--gcc/config/sparc/t-linux646
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`
OpenPOWER on IntegriCloud