From: Daniel Berlin <dan@cgsoftware.com>
To: Jim Blandy <jimb@zwingli.cygnus.com>
Cc: Benjamin Kosnik <bkoz@redhat.com>, gdb@sources.redhat.com
Subject: Re: can't find class named `foo', as given by C++ RTTI
Date: Fri, 29 Jun 2001 11:38:00 -0000 [thread overview]
Message-ID: <87lmmbi122.fsf@cgsoftware.com> (raw)
In-Reply-To: <npr8w3rw10.fsf@zwingli.cygnus.com>
Jim Blandy <jimb@zwingli.cygnus.com> writes:
> Benjamin Kosnik <bkoz@redhat.com> writes:
>> This is a new class of errors that I've started seeing recently. I'm
>> getting this from debugging efforts on x86/linux with current CVS
>> 'src' and 'gcc' modules. For what it's worth, both --with-dwarf2 and
>> default toolchains have the same error.
>>
>>
>> (gdb) p *__fp
>> can't find class named `std::numpunct<char>', as given by C++ RTTI
>
> This means is that GDB wanted to find the run-time type of some object
> (probably *__fp), and failed. Here's how GDB tries to find an
> object's run-time type:
> - GDB extracts the object's vtable.
> - it looks up the linker symbol naming the vtable (which was
> _ZTVSt8numpunct, or something like that).
> - it demangles that name (and got "vtable for std::numpunct")
> - it pulls off the "vtable for " part
> - it tries to look up the type name (in this case, "std::numpunct") in
> its full symbol table
>
> In this case, GDB wasn't able to find the name std::numpunct.
>
> Probably GDB should have been able to find std::numpunct. But does
> the rest of the process look reasonable? That is, was the run-time
> type of *__fp indeed `std::numpunct'? The output from `ptype'
> suggests that its compile-time type is `class facet'. Perhaps
> something went wrong well before we ever tried to look up the type
> name.
Oh, and just in case you were wondering why this suddenly came to a
front with the v3 abi.
1. value_rtti_type never worked well in v2.
2. in gcc 2.95.2/gcc 2.95.3, std was a hack implementation instead of
a real namespace.
So the name in the typeinfo would have been numpunct then. It's now
correct, and thus, breaks gdb, as it used to when you dealt with RTTI
and real namespaces.
--Dan
--
"One night I walked home very late and fell asleep in somebody's
satellite dish. My dreams showed up on TVs all over the world.
"-Steven Wright
prev parent reply other threads:[~2001-06-29 11:38 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-06-27 21:55 Benjamin Kosnik
2001-06-27 22:25 ` Daniel Berlin
2001-06-27 22:51 ` Benjamin Kosnik
2001-06-27 23:26 ` Daniel Berlin
2001-06-28 1:37 ` Benjamin Kosnik
2001-06-27 23:06 ` Daniel Berlin
2001-06-28 1:32 ` Benjamin Kosnik
2001-06-28 16:02 ` Daniel Berlin
2001-06-28 16:14 ` Benjamin Kosnik
2001-06-29 15:14 ` Jim Blandy
2001-06-29 23:43 ` Daniel Berlin
2001-06-30 10:14 ` Jim Blandy
2001-06-29 11:15 ` Jim Blandy
2001-06-29 11:20 ` Daniel Berlin
2001-06-29 11:34 ` Benjamin Kosnik
2001-06-29 11:38 ` Daniel Berlin [this message]
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=87lmmbi122.fsf@cgsoftware.com \
--to=dan@cgsoftware.com \
--cc=bkoz@redhat.com \
--cc=gdb@sources.redhat.com \
--cc=jimb@zwingli.cygnus.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