Key differences in compiled Virtual Method Tables when reversing MSVC vs Clang:
- Multiple Inheritance: MSVC creates separate VTable thunks (
[thunk]:MyClass::Funcwithsub rcx, delta) to adjust thethispointer for secondary base classes. - RTTI Descriptors: MSVC places
CompleteObjectLocatorpointer at offset-0x8above the VTable. Clang/GCC Itanium ABI places TypeInfo pointer at-0x8and offset-to-top at-0x10. - Destructors: MSVC generates both a scalar deleting destructor and non-deleting destructor in the VTable slots.