From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20429 invoked by alias); 20 Jul 2005 15:38:03 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 18591 invoked by uid 22791); 20 Jul 2005 15:36:57 -0000 Received: from sadr.equallogic.com (HELO sadr.equallogic.com) (66.155.203.134) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Wed, 20 Jul 2005 15:36:57 +0000 Received: from sadr.equallogic.com (localhost.localdomain [127.0.0.1]) by sadr.equallogic.com (8.12.8/8.12.8) with ESMTP id j6KFaqZb004490 for ; Wed, 20 Jul 2005 11:36:53 -0400 Received: from M31.equallogic.com (M31.equallogic.com [172.16.1.31]) by sadr.equallogic.com (8.12.8/8.12.8) with SMTP id j6KFanNd004467; Wed, 20 Jul 2005 11:36:49 -0400 Received: from pkoning.equallogic.com ([172.16.1.163]) by M31.equallogic.com with Microsoft SMTPSVC(6.0.3790.211); Wed, 20 Jul 2005 11:36:46 -0400 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <17118.28560.210105.359439@gargle.gargle.HOWL> Date: Wed, 20 Jul 2005 15:38:00 -0000 From: Paul Koning To: drow@false.org Cc: gdb@sources.redhat.com Subject: Re: find_pc_partial_function may produce the wrong answer References: <17118.24446.528000.56862@gargle.gargle.HOWL> <20050720143326.GA31003@nevyn.them.org> X-SW-Source: 2005-07/txt/msg00209.txt.bz2 >>>>> "Daniel" == Daniel Jacobowitz writes: Daniel> On Wed, Jul 20, 2005 at 10:28:14AM -0400, Paul Koning wrote: >> I was tracking down a problem in my (modified) gdb, which showed >> up when doing callstack tracing by reading the prologue. >> (mips-tdep can do that, and in my version it does it most of the >> time.) >> >> The problem is that find_pc_partial_function is used to find the >> start of the function, and it was producing the wrong answer. >> Specifically, it produces the wrong answer when the function is in >> a shared library. >> >> The cause of the problem is that find_pc_partial_function looks up >> the symbol in the msymtab, and that contains only external >> symbols, not static symbols. The comments in the source code >> explicitly claim that it DOES contain static symbols, but "maint >> print msymtab" clearly shows that it doesn't. At least not for >> MIPS shared libraries... Daniel> Is the shared library stripped? I am absolutely positive Daniel> that the minimal symbol table will include the static symtab Daniel> - as long as there is one. Daniel> If for some reason in your modified GDB this is not the case, Daniel> figure out why not. It isn't related to the modified gdb; the stock gdb from CVS sources does the same. It looks instead like there is something bizarre going on in the compile. I looked in the build directory and found that the offending file (malloc.o) has no static syms in its symbol table according to readelf. But when I repeat the compile by hand I get a rather different looking symbol table that does have them. Need to track this down. Thanks. paul