diff options
author | ro <ro@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-03-31 09:03:29 +0000 |
---|---|---|
committer | ro <ro@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-03-31 09:03:29 +0000 |
commit | 20be3c56b2a4652040486a5ea4885566ef1b53f2 (patch) | |
tree | 6d2203b80ded14c7c7c2d8548878e287d6cbd178 | |
parent | 3fdcdf72f4ae75b6d7b07e41d31679848750791e (diff) | |
download | gcc-20be3c56b2a4652040486a5ea4885566ef1b53f2.tar.gz |
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
-rw-r--r-- | gcc/config.gcc | 3 | ||||
-rw-r--r-- | gcc/config/i386/sol2.h | 6 | ||||
-rw-r--r-- | libgcc/ChangeLog | 11 | ||||
-rw-r--r-- | libgcc/config.host | 1 | ||||
-rw-r--r-- | libgcc/config/i386/32/sfp-machine.h | 2 | ||||
-rw-r--r-- | libgcc/config/i386/libgcc-sol2.ver | 96 | ||||
-rw-r--r-- | libgcc/config/i386/t-sol2 | 3 |
7 files changed, 121 insertions, 1 deletions
diff --git a/gcc/config.gcc b/gcc/config.gcc index e6b2e5f8891..b0ed0128ed1 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -3402,6 +3402,9 @@ case ${target} in i[34567]86-*-linux* | x86_64-*-linux* | i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu) tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp i386/t-linux" ;; + i[34567]86-*-solaris2*) + tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp" + ;; i[34567]86-*-cygwin* | i[34567]86-*-mingw* | x86_64-*-mingw*) tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp" ;; diff --git a/gcc/config/i386/sol2.h b/gcc/config/i386/sol2.h index 70c8a8f6744..777fc2cf129 100644 --- a/gcc/config/i386/sol2.h +++ b/gcc/config/i386/sol2.h @@ -165,4 +165,10 @@ along with GCC; see the file COPYING3. If not see #define USE_HIDDEN_LINKONCE 0 #endif +/* Put all *tf routines in libgcc. */ +#undef LIBGCC2_HAS_TF_MODE +#define LIBGCC2_HAS_TF_MODE 1 +#define LIBGCC2_TF_CEXT q +#define TF_SIZE 113 + #define MD_UNWIND_SUPPORT "config/i386/sol2-unwind.h" 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 |