public inbox for archer@sourceware.org
 help / color / mirror / Atom feed
From: Chris Moller <cmoller@redhat.com>
To: Tom Tromey <tromey@redhat.com>
Cc: Project Archer <archer@sourceware.org>
Subject: Re: vtable?
Date: Tue, 19 Jan 2010 16:15:00 -0000	[thread overview]
Message-ID: <4B55DA8A.30307@redhat.com> (raw)
In-Reply-To: <m38wc0fnvw.fsf@fleche.redhat.com>

On 01/14/10 15:10, Tom Tromey wrote:
> Chris>  One of my guesses of the moment is that under the circumstances of the
> Chris>  bug, the "vtable" is either being built wrong or is somehow being
> Chris>  corrupted--does anyone have a clue where the "vtable" is built?
>
>  From what I understand, gdb doesn't actually use the dwarf stuff to
> build the class' vtable.  There is a bug report or two in gcc bugzilla
> about this; I gather that gcc doesn't emit all the needed info.
>
> So, rather than rely on the dwarf, gdb encodes knowledge of the ABI.
>    

What appears to be happening is that when you try to print the base 
class [p *(D*)e], build_gdb_vtable_type in gnu-v3-abi.c gets called to 
set up a top-level type struct containing, among other stuff, a field 
tagged "vcall_and_vbase_offsets" that, so far as I can tell, contains 
nothing useful--i.e., it's empty.  Later, in gnuv3_baseclass_offset, 
when the vtable is accessed for that field, it still appears to be 
empty.  In fact, it hasn't been touched at all--the numeric values of 
the pointers, and all the other fields, are the same as they where when 
initialised.  If gdb is supposed to be using knowledge of the ABI to 
build that field, it isn't.

So the question is whether the right thing to do is fix the gdb a priori 
information hack, or to fix gcc (if necessary--a DWARF dump of the 
testcase shows a lot of information concerning all of the relevant 
classes, but whether it's right or sufficient I don't know) and fix gdb 
properly to use the DWARF info.

Chris

  parent reply	other threads:[~2010-01-19 16:15 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-14 18:01 vtable? Chris Moller
2010-01-14 20:11 ` vtable? Tom Tromey
2010-01-14 20:30   ` vtable? Chris Moller
2010-01-19 16:15   ` Chris Moller [this message]
2010-01-19 22:33     ` vtable? Tom Tromey
2010-01-20  8:44       ` vtable? Chris Moller

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=4B55DA8A.30307@redhat.com \
    --to=cmoller@redhat.com \
    --cc=archer@sourceware.org \
    --cc=tromey@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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).