From: Paul Koning <pkoning@equallogic.com>
To: jimb@redhat.com
Cc: gdb@sources.redhat.com
Subject: Re: psymtab/symtab error
Date: Fri, 15 Nov 2002 07:32:00 -0000 [thread overview]
Message-ID: <15829.5022.638510.254046@pkoning.dev.equallogic.com> (raw)
In-Reply-To: <vt2n0obo0r8.fsf@zenia.red-bean.com>
>>>>> "Jim" == Jim Blandy <jimb@redhat.com> writes:
Jim> Paul Koning <pkoning@equallogic.com> writes:
>> Gentlepeople,
>>
>> I've been wading all over the guts of gdb for most of today,
>> trying to track down the cause of this message:
>>
>> (gdb) info addr CFreeList<CVolume>::m_base Internal: global symbol
>> `_ZN9CFreeListI7CVolumeE6m_baseE' found in iSCSIInit.cpp psymtab
>> but not in symtab. _ZN9CFreeListI7CVolumeE6m_baseE may be an
>> inlined function, or may be a template function (if a template,
>> try specifying an instantiation:
>> _ZN9CFreeListI7CVolumeE6m_baseE<type>). (gdb) info addr
>> CFreeList<CVolume>::m_base Symbol
>> "_ZN9CFreeListI7CVolumeE6m_baseE" is static storage at address
>> 0x4000dcf4. (gdb)
>>
>> I get this simply by invoking gdb and loading the symbol table of
>> the image in question (a large RTOS application).
>>
>> I dove deep into the guts of symbol table processing without
>> getting particularly enlightened. As a guess, perhaps the problem
>> is that this symbol is entered into the symtab in its friendly
>> form?
>>
>> The curious part is that (as shown above) reissuing the offending
>> command makes it work right, i.e., the symbol is actually entered
>> in the various gdb tables correctly so it can be found on the
>> second attempt.
>>
>> I'm using gdb from the 5.3 branch, as of 9/30/02. Any hints?
Jim> Hmm. Your sources have this entry in gdb/ChangeLog, right?
Jim> 2002-08-29 Jim Blandy <jimb@redhat.com>
Jim> * symtab.c (lookup_symbol_aux): In the cases where we find a
Jim> minimal symbol of an appropriate name and use its address to
Jim> select a symtab to read and search, use `name' (as passed to us)
Jim> as the demangled name when searching the symtab's global and
Jim> static blocks, not the minsym's name.
Yes, it does.
All that text makes sense. I think the problem is that it isn't
what's being done in the specific case I was looking at.
When wading through the depths of symtab.c, I found that the specific
call where the error message pops up is the recursive call at line
902:
else if (MSYMBOL_TYPE (msymbol) != mst_text
&& MSYMBOL_TYPE (msymbol) != mst_file_text
&& !STREQ (name, SYMBOL_NAME (msymbol)))
{
/* This is a mangled variable, look it up by its
mangled name. */
return lookup_symbol_aux (SYMBOL_NAME (msymbol), mangled_name, block,
namespace, is_a_field_of_this, symtab);
}
There a lookup is being done on the name as it lives in the minsym
table, which is the mangled one, and sure enough, that one can be
found in psymtab but not in symtab...
paul
next prev parent reply other threads:[~2002-11-15 15:32 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-11-14 14:50 Paul Koning
2002-11-14 21:49 ` Jim Blandy
2002-11-15 7:32 ` Paul Koning [this message]
2002-12-16 11:41 ` David Carlton
2002-12-16 17:00 ` Paul Koning
2002-12-16 17:05 ` Daniel Jacobowitz
2002-12-16 17:09 ` David Carlton
2002-12-16 18:15 Michael Elizabeth Chastain
2002-12-16 18:26 ` Daniel Jacobowitz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=15829.5022.638510.254046@pkoning.dev.equallogic.com \
--to=pkoning@equallogic.com \
--cc=gdb@sources.redhat.com \
--cc=jimb@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox