summaryrefslogtreecommitdiffstats
path: root/libgcc
diff options
context:
space:
mode:
authorro <ro@138bc75d-0d04-0410-961f-82ee72b054a4>2010-03-31 09:03:29 +0000
committerro <ro@138bc75d-0d04-0410-961f-82ee72b054a4>2010-03-31 09:03:29 +0000
commit20be3c56b2a4652040486a5ea4885566ef1b53f2 (patch)
tree6d2203b80ded14c7c7c2d8548878e287d6cbd178 /libgcc
parent3fdcdf72f4ae75b6d7b07e41d31679848750791e (diff)
downloadppe42-gcc-20be3c56b2a4652040486a5ea4885566ef1b53f2.tar.gz
ppe42-gcc-20be3c56b2a4652040486a5ea4885566ef1b53f2.zip
gcc:
PR target/39048 * config.gcc (i[34567]86-*-solaris2*): Add i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file. * config/i386/sol2.h (LIBGCC2_HAS_TF_MODE): Redefine. (LIBGCC2_TF_CEXT): Define. (TF_SIZE): Define. libgcc: PR target/39048 * config.host (i[34567]86-*-solaris2): Handle 32-bit Solaris 2/x86 like other remaining 32-bit x86 OSes. * config/i386/32/sfp-machine.h (FP_HANDLE_EXCEPTIONS): Support Sun assembler syntax. * config/i386/libgcc-sol2.ver: New file. * config/i386/t-sol2 (SHLIB_MAPFILES): Add it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157854 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgcc')
-rw-r--r--libgcc/ChangeLog11
-rw-r--r--libgcc/config.host1
-rw-r--r--libgcc/config/i386/32/sfp-machine.h2
-rw-r--r--libgcc/config/i386/libgcc-sol2.ver96
-rw-r--r--libgcc/config/i386/t-sol23
5 files changed, 112 insertions, 1 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 677753efc07..b2fe53578be 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,14 @@
+2010-03-31 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+ Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/39048
+ * config.host (i[34567]86-*-solaris2): Handle 32-bit Solaris 2/x86
+ like other remaining 32-bit x86 OSes.
+ * config/i386/32/sfp-machine.h (FP_HANDLE_EXCEPTIONS): Support Sun
+ assembler syntax.
+ * config/i386/libgcc-sol2.ver: New file.
+ * config/i386/t-sol2 (SHLIB_MAPFILES): Add it.
+
2010-03-30 Jack Howarth <howarth@bromo.med.uc.edu>
PR c/43553
diff --git a/libgcc/config.host b/libgcc/config.host
index 706d01a8703..86159b77de6 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -600,6 +600,7 @@ case ${host} in
i[34567]86-*-darwin* | x86_64-*-darwin* | \
i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu | \
i[34567]86-*-linux* | x86_64-*-linux* | \
+ i[34567]86-*-solaris2* | \
i[34567]86-*-cygwin* | i[34567]86-*-mingw* | x86_64-*-mingw*)
if test "${host_address}" = 32; then
tmake_file="${tmake_file} t-softfp i386/${host_address}/t-fprules-softfp"
diff --git a/libgcc/config/i386/32/sfp-machine.h b/libgcc/config/i386/32/sfp-machine.h
index 85ddb74b643..ccff3145010 100644
--- a/libgcc/config/i386/32/sfp-machine.h
+++ b/libgcc/config/i386/32/sfp-machine.h
@@ -136,7 +136,7 @@ struct fenv
if (_fex & FP_EX_INVALID) \
{ \
float f = 0.0; \
- __asm__ __volatile__ ("fdiv %0" : "+t" (f)); \
+ __asm__ __volatile__ ("fdiv {%y0, %0|%0, %y0}" : "+t" (f)); \
__asm__ __volatile__ ("fwait"); \
} \
if (_fex & FP_EX_DIVZERO) \
diff --git a/libgcc/config/i386/libgcc-sol2.ver b/libgcc/config/i386/libgcc-sol2.ver
new file mode 100644
index 00000000000..8d94d3c6178
--- /dev/null
+++ b/libgcc/config/i386/libgcc-sol2.ver
@@ -0,0 +1,96 @@
+# Copyright (C) 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
+# <http://www.gnu.org/licenses/>.
+
+# 128 bit long double support was introduced with GCC 4.5.0 for Solaris 2.
+# These lines make the symbols to get a @@GCC_4.5.0.
+
+%exclude {
+ __addtf3
+ __copysigntf3
+ __divtc3
+ __divtf3
+ __eqtf2
+ __extenddftf2
+ __extendsftf2
+ __extendxftf2
+ __fabstf2
+ __fixtfdi
+ __fixtfsi
+ __fixtfti
+ __fixunstfdi
+ __fixunstfsi
+ __fixunstfti
+ __floatditf
+ __floatsitf
+ __floattitf
+ __floatunditf
+ __floatunsitf
+ __floatuntitf
+ __getf2
+ __gttf2
+ __letf2
+ __lttf2
+ __multc3
+ __multf3
+ __negtf2
+ __netf2
+ __powitf2
+ __subtf3
+ __trunctfdf2
+ __trunctfsf2
+ __trunctfxf2
+ __unordtf2
+}
+
+GCC_4.5.0 {
+ __addtf3
+ __copysigntf3
+ __divtc3
+ __divtf3
+ __eqtf2
+ __extenddftf2
+ __extendsftf2
+ __extendxftf2
+ __fabstf2
+ __fixtfdi
+ __fixtfsi
+ __fixtfti
+ __fixunstfdi
+ __fixunstfsi
+ __fixunstfti
+ __floatditf
+ __floatsitf
+ __floattitf
+ __floatunditf
+ __floatunsitf
+ __floatuntitf
+ __getf2
+ __gttf2
+ __letf2
+ __lttf2
+ __multc3
+ __multf3
+ __negtf2
+ __netf2
+ __powitf2
+ __subtf3
+ __trunctfdf2
+ __trunctfsf2
+ __trunctfxf2
+ __unordtf2
+}
diff --git a/libgcc/config/i386/t-sol2 b/libgcc/config/i386/t-sol2
index 351d7fb90e7..883b1a92acc 100644
--- a/libgcc/config/i386/t-sol2
+++ b/libgcc/config/i386/t-sol2
@@ -32,3 +32,6 @@ $(T)crtn.o: $(gcc_srcdir)/config/i386/sol2-cn.asm $(GCC_PASSES)
CRTSTUFF_T_CFLAGS = -fPIC -O2
TARGET_LIBGCC2_CFLAGS = -fPIC
+
+# Add support for the introduction of 128-bit long double.
+SHLIB_MAPFILES += $(srcdir)/config/i386/libgcc-sol2.ver
OpenPOWER on IntegriCloud