From: Daniel Jacobowitz <drow@false.org>
To: Frederic RISS <frederic.riss@st.com>
Cc: Michael Veksler <mveksler@techunix.technion.ac.il>, gdb@sourceware.org
Subject: Re: Get versioned minsyms from dynamic symtab (Was: Re: How to call operator<< functions?)
Date: Thu, 31 Aug 2006 16:57:00 -0000 [thread overview]
Message-ID: <20060831165738.GA6529@nevyn.them.org> (raw)
In-Reply-To: <1157042884.3429.344.camel@crx549.cro.st.com>
On Thu, Aug 31, 2006 at 06:48:04PM +0200, Frederic RISS wrote:
> What happens is that you get 2 definitions of std::cout in the debug
> information of your example. One definition for each file. The gotcha is
> that neither of these definitions are complete. They're just empty
> shells specifying that the symbol is of type
> ``typedef basic_ostream<char,std::char_traits<char> > std::ostream''
> without giving a clue to the debugger what this type is made of.
> I think GCC should emit a complete type because you use std::ostream in
> each of your files.
This is a deliberate choice on GCC's part, to reduce overly excessive
debug information. There've been arguments about it in the past. My
feeling is that we will end up with something like a -gfull argument
to force the extra information to be emitted. GDB needs to work as
well as possible anyway.
> The first 'p x.Print(std::cout)' works because at this point, the
> debugger has only read the full debug information of the first file.
> This file contains a definition of std::cout and the definition of
> B::Print which both point to the same instance of the std::ostream type.
> Being the same instance, even if the type is incomplete GDB resolves the
> overload correctly.
> After you've referenced 'myCout' which is defined in the second file,
> the debug info of the latter has been read, bringing a second definition
> of std::cout in the global scope. This second definition is found by
> further lookups of this symbol, and this time, the symbol type isn't the
> same instance as before. GDB tries to compare to incomplete types and of
> course it fails...
This is a problem with GDB, that I've always been amazed we didn't
hit more often. It's a very difficult problem and I don't really know
what we should be doing about it. I don't know if there's a standard
term for this, but I've called it type unification in the past.
We need some way to figure out that these are the same type, to the
best of our knowledge.
--
Daniel Jacobowitz
CodeSourcery
next prev parent reply other threads:[~2006-08-31 16:57 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-30 10:11 How to call operator<< functions? Michael Veksler
2006-08-30 11:13 ` Frederic RISS
2006-08-30 13:30 ` Frederic RISS
2006-08-30 13:40 ` Breakpoint Handling in GDB Veenu Verma (AS/EAB)
2006-08-30 13:43 ` Daniel Jacobowitz
2006-08-30 20:30 ` Michael Snyder
2006-08-31 11:34 ` Get versioned minsyms from dynamic symtab (Was: Re: How to call operator<< functions?) Frederic RISS
2006-08-31 12:09 ` Michael Veksler
2006-08-31 12:26 ` Frederic RISS
2006-08-31 13:02 ` Michael Veksler
2006-08-31 13:23 ` Frederic RISS
2006-08-31 16:48 ` Frederic RISS
2006-08-31 16:57 ` Daniel Jacobowitz [this message]
2006-08-31 17:41 ` Frédéric Riss
2006-08-31 17:45 ` Daniel Jacobowitz
2006-08-31 19:48 ` Michael Veksler
2006-08-31 19:52 ` Daniel Jacobowitz
2006-08-30 12:46 ` How to call operator<< functions? Daniel Jacobowitz
2006-08-30 20:05 ` Michael Veksler
2006-08-30 20:24 ` Daniel Jacobowitz
2006-08-30 20:45 ` Michael Veksler
2006-08-30 20:54 ` Daniel Jacobowitz
2006-08-31 12:05 ` Michael Veksler
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=20060831165738.GA6529@nevyn.them.org \
--to=drow@false.org \
--cc=frederic.riss@st.com \
--cc=gdb@sourceware.org \
--cc=mveksler@techunix.technion.ac.il \
/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