From patchwork Tue Aug 31 12:09:47 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Uros Bizjak X-Patchwork-Id: 63230 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 2BF12B713E for ; Tue, 31 Aug 2010 22:10:10 +1000 (EST) Received: (qmail 21358 invoked by alias); 31 Aug 2010 12:10:04 -0000 Received: (qmail 20957 invoked by uid 22791); 31 Aug 2010 12:10:00 -0000 X-SWARE-Spam-Status: No, hits=-0.2 required=5.0 tests=AWL, BAYES_50, 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-vw0-f47.google.com (HELO mail-vw0-f47.google.com) (209.85.212.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 31 Aug 2010 12:09:50 +0000 Received: by vws9 with SMTP id 9so2570704vws.20 for ; Tue, 31 Aug 2010 05:09:48 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.222.76 with SMTP id if12mr4120669qcb.17.1283256587867; Tue, 31 Aug 2010 05:09:47 -0700 (PDT) Received: by 10.229.28.200 with HTTP; Tue, 31 Aug 2010 05:09:47 -0700 (PDT) In-Reply-To: References: Date: Tue, 31 Aug 2010 14:09:47 +0200 Message-ID: Subject: Re: [PATCH, freebsd]: Build quad soft-fp library. From: Uros Bizjak To: "Joseph S. Myers" Cc: Steve Kargl , Jakub Jelinek , Richard Henderson , 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 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 { +}