This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Removing TYPE_VPTR_FIELDNO uses (was: Re: [patch ping] SetTYPE_VPTR_BASETYPE/TYPE_VPTR_FIELDNO of XL C++ virtual class)


Hi Daniel,

I have one more question about the offset of vptr.

On Sun, 2 Oct 2005, Daniel Jacobowitz wrote:
> > - gnu-v3-abi.c: VPTRs is used for rtti, virtual function and virtual base 
> > class offset.
> 
> In this file, I think we can skip all the rigamarole with debug
> information to find the vptr.  It's very easy: it's the size of a
> pointer, and it's at offset 0.  Always.

By saying above, do you means that the pointer to the vtable is always at 
the beginning of the fields, so we can calculate the vtable_address using 
the following code?

  vtable_address
    = value_as_address (value_field (value, 0 /* TYPE_VPTR_FIELDNO (values_type) */));

But I found that in some testcase (such as class A in gdb.cp/virtfunc.cc), 
the offset is 1.  Did I misunderstand something?  If so, please help me 
point out.  Thanks a bunch!

Best Regards
- Wu Zhou


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]