From patchwork Tue Aug 31 12:09:47 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [freebsd] : Build quad soft-fp library. Date: Tue, 31 Aug 2010 02:09:47 -0000 From: Uros Bizjak X-Patchwork-Id: 63230 Message-Id: To: "Joseph S. Myers" Cc: Steve Kargl , Jakub Jelinek , Richard Henderson , Gerald Pfeifer , Fortran List , FX , gcc-patches@gcc.gnu.org On Tue, Aug 31, 2010 at 1:50 PM, Joseph S. Myers wrote: >> Attached is the final (but untested) patch. The difference is, that > > This patch does not add the %inherit and empty GCC_4.6.0 version to > libgcc-std.ver that should be there. > >> .ver file (and corresponding t-freebsd file) have been moved to >> libgcc. I modified existing solaris .ver file (as suggested by Joseph) >> and sprinkled it with %if[n]defs (IMO, solaris .ver file also needs >> these). > > They are not needed as symbols not present on a given target are quietly > ignored there - although having them - very carefully reviewed as being > exactly right - may avoid some problems arising accidentally in future if > symbols are added to more targets (e.g. if TImode support is added for > 32-bit x86 - which would require care to ensure no TImode symbols are > accidentally added to old versions for any affected target). Thanks for the review! Attached is a patch that adds missing %inherit. gcc/ChangeLog: 2010-08-31 Uros Bizjak * config.gcc (i[34567]86-*-freebsd*, x86_64-*-freebsd*): Add i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file. * libgcc-std.ver (GCC_4.6.0): Define version. libgcc/ChangeLog: 2010-08-31 Uros Bizjak * config.host (i[34567]86-*-freebsd*, x86_64-*-freebsd*): Add i386/t-freebsd to tmake_file. * config/i386/t-freebsd: New file. * config/i386/libgcc-bsd.ver: New file. OK for mainline? Uros. Index: libgcc/config.host =================================================================== --- libgcc/config.host (revision 163630) +++ libgcc/config.host (working copy) @@ -279,8 +279,10 @@ x86_64-*-elf*) ;; i[34567]86-*-freebsd*) + tmake_file="${tmake_file} i386/t-freebsd" ;; x86_64-*-freebsd*) + tmake_file="${tmake_file} i386/t-freebsd" ;; i[34567]86-*-netbsdelf*) ;; @@ -608,7 +610,8 @@ i[34567]86-*-linux* | x86_64-*-linux* | \ i[34567]86-*-gnu* | \ i[34567]86-*-solaris2* | \ - i[34567]86-*-cygwin* | i[34567]86-*-mingw* | x86_64-*-mingw*) + i[34567]86-*-cygwin* | i[34567]86-*-mingw* | x86_64-*-mingw* | \ + i[34567]86-*-freebsd* | x86_64-*-freebsd*) if test "${host_address}" = 32; then tmake_file="${tmake_file} t-softfp i386/${host_address}/t-fprules-softfp" fi Index: libgcc/config/i386/libgcc-bsd.ver =================================================================== --- libgcc/config/i386/libgcc-bsd.ver (revision 0) +++ libgcc/config/i386/libgcc-bsd.ver (revision 0) @@ -0,0 +1,106 @@ +# 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 +# . + +# 128 bit long double support was introduced with GCC 4.6.0 for FreeBSD. +# These lines make the symbols to get a @@GCC_4.6.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.6.0 { + __addtf3 +%ifndef __x86_64__ + __copysigntf3 +%endif + __divtc3 + __divtf3 + __eqtf2 + __extenddftf2 + __extendsftf2 + __extendxftf2 +%ifndef __x86_64__ + __fabstf2 +%endif + __fixtfdi + __fixtfsi +%ifdef __x86_64__ + __fixtfti +%endif + __fixunstfdi + __fixunstfsi +%ifdef __x86_64__ + __fixunstfti +%endif + __floatditf + __floatsitf + __floattitf + __floatunditf + __floatunsitf +%ifdef __x86_64__ + __floatuntitf +%endif + __getf2 + __gttf2 + __letf2 + __lttf2 + __multc3 + __multf3 + __negtf2 + __netf2 + __powitf2 + __subtf3 + __trunctfdf2 + __trunctfsf2 + __trunctfxf2 + __unordtf2 +} Index: libgcc/config/i386/t-freebsd =================================================================== --- libgcc/config/i386/t-freebsd (revision 0) +++ libgcc/config/i386/t-freebsd (revision 0) @@ -0,0 +1,2 @@ +# Add support for the introduction of 128-bit long double. +SHLIB_MAPFILES += $(srcdir)/config/i386/libgcc-bsd.ver Index: gcc/libgcc-std.ver =================================================================== --- gcc/libgcc-std.ver (revision 163630) +++ gcc/libgcc-std.ver (working copy) @@ -1910,3 +1910,7 @@ __unordxf2 __unordtf2 } + +%inherit GCC_4.6.0 GCC_4.5.0 +GCC_4.6.0 { +}