This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Could GDB get offset of a field in virtual base class through NULL pointer
- From: hex <heixia108 at gmail dot com>
- To: gdb at sourceware dot org
- Date: Sun, 29 Sep 2013 00:23:22 +0800
- Subject: Could GDB get offset of a field in virtual base class through NULL pointer
- Authentication-results: sourceware.org; auth=none
Hi All,
I defined two classes as following:
// test.cpp
class A{
public:
int a;
};
class B: public virtual A{
public:
int b;
};
GDB could print &(((B *)0)->a), but it could not print &(((B *)0)->a).
I debugged GDB, and found it try to visit the virtual table of (B *)0,
then it failed. It is reasonable. But I think whether GDB could
support this case, it could just regard the NULL pointer as a special
case: it could get offset using TYPE_BASECLASS_BITPOS(). But the
TYPE_BASECLASS_BITPOS() returns 0 now because we have not set a value
for virtual base class. Then problem is whether we could store an
offset for virtual base class to support above case. But I do not
know how to get this offset from sections of its binary. Could you
give some suggestions please? Thank you!