+ // Those base names are used by GCC and clang for virtual table pointers
+ // respectively ("__vptr$ClassName", "__vptr.ClassName"):
+ if (boost::algorithm::starts_with(member.name, "__vptr$") ||
+ boost::algorithm::starts_with(member.name, "__vptr."))
+ member.flags |= simgrid::mc::Member::VIRTUAL_POINTER_FLAG;
+ // A cleaner stolution would be to check against the type:
+ // ---
+ // tag: DW_TAG_member
+ // name: "_vptr$Foo"
+ // type:
+ // # Type for a pointer to a vtable
+ // tag: DW_TAG_pointer_type
+ // type:
+ // # Type for a vtable:
+ // tag: DW_TAG_pointer_type
+ // name: "__vtbl_ptr_type"
+ // type:
+ // tag: DW_TAG_subroutine_type
+ // type:
+ // tag: DW_TAG_base_type
+ // name: "int"
+ // ---
+