From patchwork Wed Feb 15 17:44:25 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rainer Orth X-Patchwork-Id: 141347 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 3BA591007D5 for ; Thu, 16 Feb 2012 04:44:57 +1100 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1329932698; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Received:Received:From:To:Cc:Subject:Date:Message-ID:User-Agent: MIME-Version:Content-Type:Mailing-List:Precedence:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:Sender: Delivered-To; bh=m5TINEQzrz54j8WVIUYD/MJ4PEM=; b=aEUMLYsLl48Kxi2 XwYyUijCRJd1D8CwsLXPH9FwJcKfZLba+UbrinzSJ010J8nx8yPUHxc3ZRgJYnzN ileI0EZvsmoyX8HgnZ94wj+yQzsbHLLfA3Qe9L3IX7B92Jo2xdqE9HFYv86prUmI wol/9VeJKv6f+mGQcKMYz8XLH+bQ= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:Received:Received:Received:From:To:Cc:Subject:Date:Message-ID:User-Agent:MIME-Version:Content-Type:X-IsSubscribed:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=DEl2djszCsEAIIxedlgal2c9VDNYb/8jAwyRNW1ltog7sF8c9rTICM0VSUUhP1 gxEHh2JaLIvrvz5+0A9nbKpVc3nm4/2wy7eGz3G51faiQTdJ73z83kuylzyqFYif j0Yn/fq0/SpwCw5Lq0B582bRzx+MKbAxguQVI/dilZaXk=; Received: (qmail 317 invoked by alias); 15 Feb 2012 17:44:47 -0000 Received: (qmail 32764 invoked by uid 22791); 15 Feb 2012 17:44:45 -0000 X-SWARE-Spam-Status: No, hits=0.2 required=5.0 tests=AWL, BAYES_00, TW_CX, TW_DC, T_RP_MATCHES_RCVD, T_TVD_MIME_NO_HEADERS, URIBL_BLACK X-Spam-Check-By: sourceware.org Received: from snape.CeBiTec.Uni-Bielefeld.DE (HELO smtp-relay.CeBiTec.Uni-Bielefeld.DE) (129.70.160.84) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 15 Feb 2012 17:44:31 +0000 Received: from localhost (localhost.CeBiTec.Uni-Bielefeld.DE [127.0.0.1]) by smtp-relay.CeBiTec.Uni-Bielefeld.DE (Postfix) with ESMTP id 4EB62390; Wed, 15 Feb 2012 18:44:30 +0100 (CET) Received: from smtp-relay.CeBiTec.Uni-Bielefeld.DE ([127.0.0.1]) by localhost (malfoy.CeBiTec.Uni-Bielefeld.DE [127.0.0.1]) (amavisd-new, port 10024) with LMTP id L04U-HSFo2Ti; Wed, 15 Feb 2012 18:44:27 +0100 (CET) Received: from manam.CeBiTec.Uni-Bielefeld.DE (manam.CeBiTec.Uni-Bielefeld.DE [129.70.161.120]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp-relay.CeBiTec.Uni-Bielefeld.DE (Postfix) with ESMTPS id E61FB38E; Wed, 15 Feb 2012 18:44:26 +0100 (CET) Received: (from ro@localhost) by manam.CeBiTec.Uni-Bielefeld.DE (8.14.5+Sun/8.14.5/Submit) id q1FHiPhp010475; Wed, 15 Feb 2012 18:44:25 +0100 (MET) From: Rainer Orth To: gcc-patches@gcc.gnu.org Cc: libstdc++@gcc.gnu.org, Paolo Bonzini Subject: [v3] Disable gthreads on Solaris 8/9 (PR libstdc++/52189) Date: Wed, 15 Feb 2012 18:44:25 +0100 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.3 (usg-unix-v) MIME-Version: 1.0 X-IsSubscribed: yes 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 As discussed the improved/relaxed test for gthreads support breaks symbol versioning on Solaris 8 and 9. The best solution seems to disable it by default on those targets, allowing users to reenable it if they don't care about compatibility. The following patch does just that, disabling only if symbol versioning is active, and warning if users choose to enable it nonetheless. I had to move the GLIBCXX_CHECK_GTHREADS down in configure.ac, adding a dependency in acinclude.m4 didnd't suffice. Bootstrapped without regressions on {sparc-sun,i386-pc}-solaris2.{8, 9, 10, 11} and x86_64-unknown-linux-gnu, verifying that there's no change on Linux/x86_64 and the gthr-related symbols are gone on Solaris 8 and 9 only. Ok for mainline? Btw., the ChangeLog lies at one point: I didn't include the configure.html update since I lack the required tools. I'd appreciate it if some of the libstdc++ maintainers could handle this for me after checking. Thanks. Rainer 2012-02-12 Rainer Orth PR libstdc++/52189 * acinclude.m4 (GLIBCXX_CHECK_GTHREADS): Handle --enable-gthreads. Disable on Solaris 8/9 with symbol versioning. * configure.ac (GLIBCXX_CHECK_GTHREADS): Move after GLIBCXX_ENABLE_SYMVERS. * configure: Regenerate. * doc/xml/manual/configure.xml (--enable-gthreads): Explain. * doc/html/manual/configure.html: Regenerate. # HG changeset patch # Parent c03709f1705410424658e4ee6f0f714ab4bbf69a Disable gthreads on Solaris 8/9 (PR libstdc++/52189) diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -3325,7 +3325,13 @@ dnl Check if gthread implementation defi dnl required by the c++0x thread library. Conforming gthread dnl implementations can define __GTHREADS_CXX0X to enable use with c++0x. dnl +dnl GLIBCXX_ENABLE_SYMVERS must be done before this. +dnl AC_DEFUN([GLIBCXX_CHECK_GTHREADS], [ + GLIBCXX_ENABLE(gthreads,auto,,[enable gthreads support]) + + if test x$enable_gthreads = xauto || test x$enable_gthreads = xyes; then + AC_LANG_SAVE AC_LANG_CPLUSPLUS @@ -3364,7 +3370,28 @@ AC_DEFUN([GLIBCXX_CHECK_GTHREADS], [ #ifndef __GTHREADS_CXX0X #error #endif - ], [ac_has_gthreads=yes], [ac_has_gthreads=no]) + ], [case $target_os in + # gthreads support breaks symbol versioning on Solaris 8/9 (PR + # libstdc++/52189). + solaris2.[[89]]*) + if test x$enable_symvers = xno; then + ac_has_gthreads=yes + elif test x$enable_gthreads = xyes; then + AC_MSG_WARN([You have requested gthreads support, but]) + AC_MSG_WARN([this breaks symbol versioning.]) + ac_has_gthreads=yes + else + ac_has_gthreads=no + fi + ;; + *) + ac_has_gthreads=yes + ;; + esac], + [ac_has_gthreads=no]) + else + ac_has_gthreads=no + fi AC_MSG_RESULT([$ac_has_gthreads]) diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac --- a/libstdc++-v3/configure.ac +++ b/libstdc++-v3/configure.ac @@ -164,9 +164,6 @@ GLIBCXX_CHECK_GETTIMEOFDAY # NB: The default is [no], because otherwise it requires linking. GLIBCXX_ENABLE_LIBSTDCXX_TIME([no]) -# For gthread support -GLIBCXX_CHECK_GTHREADS - AC_LC_MESSAGES # For hardware_concurrency @@ -335,6 +332,9 @@ GLIBCXX_CONDITIONAL(GLIBCXX_LDBL_COMPAT, # This depends on GLIBCXX_ENABLE_SYMVERS and GLIBCXX_IS_NATIVE. GLIBCXX_CONFIGURE_TESTSUITE +# For gthread support. Depends on GLIBCXX_ENABLE_SYMVERS. +GLIBCXX_CHECK_GTHREADS + # Define documentation rules conditionally. # See if makeinfo has been installed and is modern enough diff --git a/libstdc++-v3/doc/xml/manual/configure.xml b/libstdc++-v3/doc/xml/manual/configure.xml --- a/libstdc++-v3/doc/xml/manual/configure.xml +++ b/libstdc++-v3/doc/xml/manual/configure.xml @@ -161,6 +161,13 @@ + --enable-gthreads + Enable gthreads support. If not explicitly specified, the + configure process enables it if possible. It defaults to 'off' on + Solaris 8 and 9, where it would break symbol versioning. This + option can change the library ABI. + + --enable-libstdcxx-time This is an abbreviated form of