From patchwork Tue Aug 31 07:03:44 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Uros Bizjak X-Patchwork-Id: 63200 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id D6FCAB7107 for ; Tue, 31 Aug 2010 17:03:58 +1000 (EST) Received: (qmail 12823 invoked by alias); 31 Aug 2010 07:03:54 -0000 Received: (qmail 12683 invoked by uid 22791); 31 Aug 2010 07:03:52 -0000 X-SWARE-Spam-Status: No, hits=-0.9 required=5.0 tests=AWL, BAYES_05, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, TW_EQ, TW_FX, TW_GT, TW_QT, TW_VT, TW_XF, TW_ZJ X-Spam-Check-By: sourceware.org Received: from mail-qy0-f175.google.com (HELO mail-qy0-f175.google.com) (209.85.216.175) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 31 Aug 2010 07:03:46 +0000 Received: by qyk31 with SMTP id 31so555520qyk.20 for ; Tue, 31 Aug 2010 00:03:44 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.175.167 with SMTP id ba39mr3909898qcb.181.1283238224165; Tue, 31 Aug 2010 00:03:44 -0700 (PDT) Received: by 10.229.28.200 with HTTP; Tue, 31 Aug 2010 00:03:44 -0700 (PDT) Date: Tue, 31 Aug 2010 09:03:44 +0200 Message-ID: Subject: [PATCH, freebsd]: Build quad soft-fp library. From: Uros Bizjak To: Steve Kargl Cc: Jakub Jelinek , Richard Henderson , "Joseph S. Myers" , Gerald Pfeifer , Fortran List , FX , gcc-patches@gcc.gnu.org Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org On Tue, Aug 31, 2010 at 6:31 AM, Steve Kargl wrote: >> I tested your patch on x86_64-*-freebsd.  My ppl and cloog >> libraries were built with FreeBSD's system gcc (4.2.1).  All >> tests failed due to missing symbols that are marked GCC_3.0. >> >> > Index: gcc/config/i386/t-freebsd >> > =================================================================== >> > --- gcc/config/i386/t-freebsd       (revision 0) >> > +++ gcc/config/i386/t-freebsd       (revision 0) >> > @@ -0,0 +1 @@ >> > +SHLIB_MAPFILES = $(srcdir)/config/i386/libgcc-bsd.ver >> >> Changing the = to += seems to fix the problem.  My >> regression testing is still running, so I can't >> report stats. >> > > With my change to +=, on x86_64-*-freebsd I get > >                === gcc Summary === > > # of expected passes            72950 > # of unexpected failures        74 > # of unexpected successes       3 > # of expected failures          215 > # of unresolved testcases       3 > # of unsupported tests          1081 > /usr/home/sgk/gcc/obj4x/gcc/xgcc  version 4.6.0 20100830 (experimental) (GCC) > > >                === gfortran Summary === > > # of expected passes            36155 > # of unexpected failures        4 > # of unexpected successes       7 > # of expected failures          59 > # of unsupported tests          53 > /usr/home/sgk/gcc/obj4x/gcc/testsuite/gfortran/../../gfortran  version 4.6.0 20100830 (experimental) (GCC) > > > I quickly looked through the gcc.log file and noticed > a couple of ICE's but I believe those are unrelated to > the TFmode patch. > > Note, I believe that I do not have the authority to > approve this patch. Attached is the final (but untested) patch. The difference is, that .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). 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/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. Gerald, can you please test this patch? Uros. Index: gcc/config.gcc =================================================================== --- gcc/config.gcc (revision 163630) +++ gcc/config.gcc (working copy) @@ -3485,6 +3485,9 @@ i[34567]86-*-cygwin* | i[34567]86-*-mingw* | x86_64-*-mingw*) tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp" ;; + i[34567]86-*-freebsd* | x86_64-*-freebsd*) + tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp" + ;; ia64*-*-linux*) tmake_file="${tmake_file} ia64/t-fprules-softfp soft-fp/t-softfp" ;; 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