From patchwork Sat Oct 2 00:24:26 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 66530 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 EB493B710B for ; Sat, 2 Oct 2010 10:24:42 +1000 (EST) Received: (qmail 17746 invoked by alias); 2 Oct 2010 00:24:35 -0000 Received: (qmail 17734 invoked by uid 22791); 2 Oct 2010 00:24:32 -0000 X-SWARE-Spam-Status: No, hits=-1.3 required=5.0 tests=AWL, BAYES_00, NO_DNS_FOR_FROM, T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mga11.intel.com (HELO mga11.intel.com) (192.55.52.93) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sat, 02 Oct 2010 00:24:28 +0000 Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga102.fm.intel.com with ESMTP; 01 Oct 2010 17:24:26 -0700 X-ExtLoop1: 1 Received: from gnu-6.sc.intel.com ([10.3.194.135]) by fmsmga002.fm.intel.com with ESMTP; 01 Oct 2010 17:24:26 -0700 Received: by gnu-6.sc.intel.com (Postfix, from userid 500) id 29544207F1; Fri, 1 Oct 2010 17:24:26 -0700 (PDT) Date: Fri, 1 Oct 2010 17:24:26 -0700 From: "H.J. Lu" To: gcc-patches@gcc.gnu.org Subject: PATCH: PR libstdc++/45863: [4.6 regression] FAIL: libstdc++-abi/abi_check Message-ID: <20101002002425.GA19510@intel.com> Reply-To: "H.J. Lu" MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.20 (2009-12-10) 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 Hi, The pvs change in scripts/extract_symvers breaks Linux. This patch reverts it. A different patch should be used instead. I am not familiar with Solaris to make a suggestion. OK for trunk? Thanks. H.J. --- 2010-10-01 H.J. Lu PR libstdc++/45863 * scripts/extract_symvers: Revert the pvs change. diff --git a/libstdc++-v3/scripts/extract_symvers b/libstdc++-v3/scripts/extract_symvers index a3e1584..f6d4231 100755 --- a/libstdc++-v3/scripts/extract_symvers +++ b/libstdc++-v3/scripts/extract_symvers @@ -26,14 +26,6 @@ fi lib=$1 output=$2 -# Sun ld doesn't record symbol versions in .dynsym entries and they cannot -# easily be extracted from readelf --versions output, so use pvs instead. -if type pvs 2>&1 | grep 'not found' > /dev/null; then - : -else - pvs="pvs -dsvo" -fi - # GNU binutils, somewhere after version 2.11.2, requires -W/--wide to avoid # default line truncation. -W is not supported and truncation did not occur # by default before that point. @@ -50,53 +42,15 @@ export LANG tmp=extract.$$ -# Prefer pvs if found. Need to use nawk on Solaris 2 since Solaris 8/9 awk -# (oawk) cannot handle sub. -if [ -n ${pvs} ]; then - ${pvs} ${lib} | \ - nawk '# Remove colon separator from version field, trailing semicolon. - { - sub (/:$/, "", $3); - sub (/;$/, ""); - } - # Record base version. The [BASE] field was only added in Solaris 11, - # so simply use the first record instead. - NR == 1 { - basever = $3; - next; - } - # Ignore version dependencies. - $4 ~ /\{.*\}/ { - next; - } - NF == 4 { - if ($3 == $4 || $3 == basever) - # Emit versions or symbols bound to base versions as objects. - printf "OBJECT:0:%s\n", $4; - else - # Everything else without a size field is a function. - printf "FUNC:%s@@%s\n", $4, $3; - next; - } - # Emit objects. - NF == 5 { - # Strip parens from object size. - sub (/^\(/, "", $5); - sub (/\)$/, "", $5); - printf "OBJECT:%s:%s@@%s\n", $5, $4, $3; - next; - }' | sort | uniq > $tmp 2>&1 -else - ${readelf} ${lib} |\ - sed -e 's/ \[: [A-Fa-f0-9]*\] //' -e '/\.dynsym/,/^$/p;d' |\ - egrep -v ' (LOCAL|UND) ' |\ - awk '{ if ($4 == "FUNC" || $4 == "NOTYPE") - printf "%s:%s\n", $4, $8; - else if ($4 == "OBJECT" || $4 == "TLS") - printf "%s:%s:%s\n", $4, $3, $8; - }' | sort | uniq > $tmp 2>&1 -# else printf "Huh? What is %s?\n", $8; -fi +${readelf} ${lib} |\ +sed -e 's/ \[: [A-Fa-f0-9]*\] //' -e '/\.dynsym/,/^$/p;d' |\ +egrep -v ' (LOCAL|UND) ' |\ +awk '{ if ($4 == "FUNC" || $4 == "NOTYPE") + printf "%s:%s\n", $4, $8; + else if ($4 == "OBJECT" || $4 == "TLS") + printf "%s:%s:%s\n", $4, $3, $8; + }' | sort | uniq > $tmp 2>&1 +# else printf "Huh? What is %s?\n", $8; # I think we'll be doing some more with this file, but for now, dump.