From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5795 invoked by alias); 26 May 2012 05:06:06 -0000 Received: (qmail 5783 invoked by uid 22791); 26 May 2012 05:06:04 -0000 X-SWARE-Spam-Status: No, hits=-5.0 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE X-Spam-Check-By: sourceware.org Received: from mail-qa0-f50.google.com (HELO mail-qa0-f50.google.com) (209.85.216.50) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sat, 26 May 2012 05:05:47 +0000 Received: by qafl39 with SMTP id l39so95873qaf.9 for ; Fri, 25 May 2012 22:05:46 -0700 (PDT) MIME-Version: 1.0 Received: by 10.224.212.5 with SMTP id gq5mr1499603qab.1.1338008746476; Fri, 25 May 2012 22:05:46 -0700 (PDT) Received: by 10.229.169.130 with HTTP; Fri, 25 May 2012 22:05:46 -0700 (PDT) In-Reply-To: References: <20120307004630.A503DB21B6@azwildcat.mtv.corp.google.com> Date: Sat, 26 May 2012 05:06:00 -0000 Message-ID: Subject: Re: User directed Function Multiversioning via Function Overloading (issue5752064) From: "H.J. Lu" To: Sriraman Tallam Cc: Xinliang David Li , Richard Guenther , Jan Hubicka , Uros Bizjak , reply@codereview.appspotmail.com, gcc-patches@gcc.gnu.org Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2012-05/txt/msg01792.txt.bz2 On Fri, May 25, 2012 at 8:38 PM, Sriraman Tallam wrot= e: > > On May 25, 2012 7:15 PM, "H.J. Lu" wrote: >> >> >> On May 25, 2012 6:54 PM, "Sriraman Tallam" wrote: >> > >> > >> > >> >> > >> On Fri, May 25, 2012 at 5:0 > > BTW, I noticed: >> >> > > >> > > [hjl@gnu-6 pr14170]$ readelf -sW libgcc.a | grep __cpu_model >> > > =A0 =A020: 0000000000000010 =A0 =A016 OBJECT =A0GLOBAL HIDDEN =A0 CO= M __cpu_model >> > > [hjl@gnu-6 pr14170]$ readelf -sW libgcc_s.so | grep __cpu_model >> > > =A0 =A082: 0000000000214ff0 =A0 =A016 OBJECT =A0GLOBAL DEFAULT =A0 24 >> > > __cpu_model@@GCC_4.8.0 >> > > =A0 310: 0000000000214ff0 =A0 =A016 OBJECT =A0GLOBAL DEFAULT =A0 24 = __cpu_model >> > > [hjl@gnu-6 pr14170]$ >> > > >> > > Why is __cpu_model in both libgcc.a and libgcc_s.o? >> > >> > How do I disallow this in libgcc_s.so? Looks like t-cpuinfo file is >> > wrong but I cannot figure out the fix. >> > >> Why don't you want it in libgcc_s.so? > > I thought libgcc.a is always linked in for static and dynamic builds. So > having it in libgcc_s.so is redundant. > [hjl@gnu-6 pr14170]$ readelf -sW libgcc.a | grep _cpu_ 20: 0000000000000010 16 OBJECT GLOBAL HIDDEN COM __cpu_model 21: 0000000000000110 612 FUNC GLOBAL HIDDEN 4 __cpu_indicator_= init [hjl@gnu-6 pr14170]$ readelf -sW libgcc_s.so.1 | grep _cpu_ 82: 0000000000214ff0 16 OBJECT GLOBAL DEFAULT 24 __cpu_model@@GCC_4.8.0 223: 0000000000002b60 560 FUNC LOCAL DEFAULT 11 __cpu_indicator_= init 310: 0000000000214ff0 16 OBJECT GLOBAL DEFAULT 24 __cpu_model [hjl@gnu-6 pr14170]$ I think there should be only one copy of __cpu_model in the process. It should be in libgcc_s.so. Why isn't __cpu_indicator_init exported from libgcc_s.so? --=20 H.J.