Getting a pointer to a vtable

Ian Lance Taylor iant@google.com
Mon Mar 26 21:22:00 GMT 2012


Mike Hommey <mh@glandium.org> writes:

> On Mon, Mar 26, 2012 at 01:48:45PM -0700, Ian Lance Taylor wrote:
>> Mike Hommey <mh@glandium.org> writes:
>> 
>> > Essentially, I would like to do something like:
>> >
>> > void *bar = (void *)_ZTV3foo;
>> >
>> > Except I only know "foo", and it may be namespaced. So is there some way
>> > to have g++ do the mangling with a macro or something else?
>> 
>> There is no macro that does mangling, no.
>> 
>> Why not simply
>> 
>> void *bar = &foo;
>
> I want a pointer to the vtable.

Oh, right, missed that.  If you have an instance of the type, you could
use pointer manipulation and the C++ ABI
(http://codesourcery.com/cxx-abi/).  But there isn't any direct way to
get that pointer, or the name of the vtable.

Ian



More information about the Gcc-help mailing list