diff --git a/include/wine/mscvpdb.h b/include/wine/mscvpdb.h index abbd539c506..1aa70a85f97 100644 --- a/include/wine/mscvpdb.h +++ b/include/wine/mscvpdb.h @@ -403,6 +403,21 @@ union codeview_reftype unsigned args[1]; } arglist_v2; + struct + { + unsigned short int len; + short int id; + unsigned short num; + unsigned short drvdcls[1]; + } derived_v1; + + struct + { + unsigned short int len; + short int id; + unsigned num; + unsigned drvdcls[1]; + } derived_v2; }; union codeview_fieldtype diff --git a/tools/winedump/msc.c b/tools/winedump/msc.c index 95de7d5e120..91ad8c14f5e 100644 --- a/tools/winedump/msc.c +++ b/tools/winedump/msc.c @@ -775,6 +775,24 @@ static void codeview_dump_one_type(unsigned curr_type, const union codeview_type } break; + case LF_DERIVED_V1: + printf("\t%x => Derived V1(#%u):", curr_type, reftype->derived_v1.num); + for (i = 0; i < reftype->derived_v1.num; i++) + { + printf(" %x", reftype->derived_v1.drvdcls[i]); + } + printf("\n"); + break; + + case LF_DERIVED_V2: + printf("\t%x => Derived V2(#%u):", curr_type, reftype->derived_v2.num); + for (i = 0; i < reftype->derived_v2.num; i++) + { + printf(" %x", reftype->derived_v2.drvdcls[i]); + } + printf("\n"); + break; + default: printf(">>> Unsupported type-id %x for %x\n", type->generic.id, curr_type); dump_data((const void*)type, type->generic.len + 2, "");