mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-23 04:04:59 -07:00
added missing LF_ENDPRECOMP type, fixed case for S_OBJNAME symbol,
merged leaf id kinds into main leaf enum, renamed public flags enum, removed type dependency on PDB string table and PDB coff section array
This commit is contained in:
+15
-5
@@ -80,6 +80,13 @@ cv_numeric_from_data_range(U8 *first, U8 *opl)
|
||||
return result;
|
||||
}
|
||||
|
||||
internal U64
|
||||
cv_read_numeric(String8 data, U64 offset, CV_NumericParsed *out)
|
||||
{
|
||||
*out = cv_numeric_from_data_range(data.str + offset, data.str + data.size);
|
||||
return out->encoded_size;
|
||||
}
|
||||
|
||||
internal B32
|
||||
cv_numeric_fits_in_u64(CV_NumericParsed *num)
|
||||
{
|
||||
@@ -411,7 +418,7 @@ cv_leaf_from_data(Arena *arena, String8 leaf_data, CV_TypeId itype_first)
|
||||
//~ CodeView C13 Parser Functions
|
||||
|
||||
internal CV_C13Parsed *
|
||||
cv_c13_parsed_from_data(Arena *arena, String8 c13_data, PDB_Strtbl *strtbl, PDB_CoffSectionArray *sections)
|
||||
cv_c13_parsed_from_data(Arena *arena, String8 c13_data, String8 strtbl, COFF_SectionHeaderArray sections)
|
||||
{
|
||||
ProfBeginFunction();
|
||||
|
||||
@@ -488,10 +495,10 @@ cv_c13_parsed_from_data(Arena *arena, String8 c13_data, PDB_Strtbl *strtbl, PDB_
|
||||
B32 has_cols = !!(hdr->flags & CV_C13SubSecLinesFlag_HasColumns);
|
||||
U64 secrel_off = hdr->sec_off;
|
||||
U64 secrel_opl = secrel_off + hdr->len;
|
||||
U64 sec_base_off = sections->sections[sec_idx - 1].voff;
|
||||
U64 sec_base_off = sections.v[sec_idx - 1].voff;
|
||||
|
||||
// rjf: bad section index -> skip
|
||||
if(sec_idx < 1 || sections->count < sec_idx)
|
||||
if(sec_idx < 1 || sections.count < sec_idx)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -511,7 +518,8 @@ cv_c13_parsed_from_data(Arena *arena, String8 c13_data, PDB_Strtbl *strtbl, PDB_
|
||||
{
|
||||
CV_C13Checksum *checksum = (CV_C13Checksum*)(c13_data.str + file_chksms->off + file_off);
|
||||
U32 name_off = checksum->name_off;
|
||||
file_name = pdb_strtbl_string_from_off(strtbl, name_off);
|
||||
file_name = str8_cstring_capped((char*)(strtbl.str + name_off),
|
||||
(char*)(strtbl.str + strtbl.size));
|
||||
}
|
||||
|
||||
// array layouts
|
||||
@@ -587,7 +595,8 @@ cv_c13_parsed_from_data(Arena *arena, String8 c13_data, PDB_Strtbl *strtbl, PDB_
|
||||
{
|
||||
CV_C13Checksum *checksum = (CV_C13Checksum*)(c13_data.str + file_chksms->off + hdr->file_off);
|
||||
U32 name_off = checksum->name_off;
|
||||
file_name = pdb_strtbl_string_from_off(strtbl, name_off);
|
||||
file_name = str8_cstring_capped((char*)(strtbl.str + name_off),
|
||||
(char*)(strtbl.str + strtbl.size));
|
||||
}
|
||||
|
||||
// rjf: parse extra files
|
||||
@@ -608,6 +617,7 @@ cv_c13_parsed_from_data(Arena *arena, String8 c13_data, PDB_Strtbl *strtbl, PDB_
|
||||
SLLQueuePush(node->inlinee_lines_first, node->inlinee_lines_last, n);
|
||||
n->v.inlinee = hdr->inlinee;
|
||||
n->v.file_name = file_name;
|
||||
n->v.file_off = hdr->file_off;
|
||||
n->v.first_source_ln = hdr->first_source_ln;
|
||||
n->v.extra_file_count = extra_file_count;
|
||||
n->v.extra_files = extra_files;
|
||||
|
||||
+48
-32
@@ -9,9 +9,15 @@
|
||||
////////////////////////////////
|
||||
//~ rjf: CodeView Format Shared Types
|
||||
|
||||
typedef U32 CV_TypeId;
|
||||
typedef U32 CV_ItemId;
|
||||
#define CV_TypeIndex_Max max_U32
|
||||
typedef U32 CV_TypeIndex;
|
||||
typedef CV_TypeIndex CV_TypeId;
|
||||
typedef CV_TypeIndex CV_ItemId;
|
||||
|
||||
#define CV_ModIndex_Max max_U16
|
||||
#define CV_ModIndex_Invalid CV_ModIndex_Max
|
||||
typedef U16 CV_ModIndex;
|
||||
|
||||
typedef U16 CV_SectionIndex;
|
||||
typedef U16 CV_Reg;
|
||||
|
||||
@@ -1252,8 +1258,8 @@ struct CV_SymAnnotation
|
||||
|
||||
//- (SymKind: OBJNAME)
|
||||
|
||||
typedef struct CV_SymObjname CV_SymObjname;
|
||||
struct CV_SymObjname
|
||||
typedef struct CV_SymObjName CV_SymObjName;
|
||||
struct CV_SymObjName
|
||||
{
|
||||
U32 sig;
|
||||
// U8[] name (null terminated)
|
||||
@@ -1374,19 +1380,19 @@ struct CV_SymData32
|
||||
|
||||
//- (SymKind: PUB32)
|
||||
|
||||
typedef U32 CV_PubFlags;
|
||||
typedef U32 CV_Pub32Flags;
|
||||
enum
|
||||
{
|
||||
CV_PubFlag_Code = (1 << 0),
|
||||
CV_PubFlag_Function = (1 << 1),
|
||||
CV_PubFlag_ManagedCode = (1 << 2),
|
||||
CV_PubFlag_MSIL = (1 << 3),
|
||||
CV_Pub32Flag_Code = (1 << 0),
|
||||
CV_Pub32Flag_Function = (1 << 1),
|
||||
CV_Pub32Flag_ManagedCode = (1 << 2),
|
||||
CV_Pub32Flag_MSIL = (1 << 3),
|
||||
};
|
||||
|
||||
typedef struct CV_SymPub32 CV_SymPub32;
|
||||
struct CV_SymPub32
|
||||
{
|
||||
CV_PubFlags flags;
|
||||
CV_Pub32Flags flags;
|
||||
U32 off;
|
||||
CV_SectionIndex sec;
|
||||
// U8[] name (null terminated)
|
||||
@@ -1695,6 +1701,24 @@ struct CV_SymDiscarded
|
||||
};
|
||||
|
||||
//- (SymKind: COMPILE3)
|
||||
typedef U32 CV_Compile3Flags;
|
||||
enum
|
||||
{
|
||||
CV_Compile3Flag_EC = (1 << 8),
|
||||
CV_Compile3Flag_NoDbgInfo = (1 << 9),
|
||||
CV_Compile3Flag_LTCG = (1 << 10),
|
||||
CV_Compile3Flag_NoDataAlign = (1 << 11),
|
||||
CV_Compile3Flag_ManagedPresent = (1 << 12),
|
||||
CV_Compile3Flag_SecurityChecks = (1 << 13),
|
||||
CV_Compile3Flag_HotPatch = (1 << 14),
|
||||
CV_Compile3Flag_CVTCIL = (1 << 15),
|
||||
CV_Compile3Flag_MSILModule = (1 << 16),
|
||||
CV_Compile3Flag_SDL = (1 << 17),
|
||||
CV_Compile3Flag_PGO = (1 << 18),
|
||||
CV_Compile3Flag_EXP = (1 << 19),
|
||||
|
||||
CV_Compile3Flag_Language_Shift = 0, CV_Compile3Flag_Language_Mask = 0xff,
|
||||
};
|
||||
|
||||
typedef U32 CV_Compile3Flags;
|
||||
#define CV_Compile3Flags_ExtractLanguage(f) (((f) )&0xFF)
|
||||
@@ -1803,6 +1827,8 @@ struct CV_SymDefrangeFramepointerRel
|
||||
|
||||
//- (SymKind: DEFRANGE_SUBFIELD_REGISTER)
|
||||
|
||||
#define CV_DefrangeSubfieldRegister_ExtractParentOffset(x) ((x) & 0x1FFF)
|
||||
|
||||
typedef struct CV_SymDefrangeSubfieldRegister CV_SymDefrangeSubfieldRegister;
|
||||
struct CV_SymDefrangeSubfieldRegister
|
||||
{
|
||||
@@ -2056,24 +2082,6 @@ struct CV_SymInlinees
|
||||
// (type info)
|
||||
//
|
||||
|
||||
#define CV_LeafIDKindXList(X) \
|
||||
X(FUNC_ID, 0x1601)\
|
||||
X(MFUNC_ID, 0x1602)\
|
||||
X(BUILDINFO, 0x1603)\
|
||||
X(SUBSTR_LIST, 0x1604)\
|
||||
X(STRING_ID, 0x1605)\
|
||||
X(UDT_SRC_LINE, 0x1606)\
|
||||
X(UDT_MOD_SRC_LINE, 0x1607)
|
||||
|
||||
typedef U16 CV_LeafIDKind;
|
||||
typedef enum CV_LeafIDKindEnum
|
||||
{
|
||||
#define X(N,c) CV_LeafIDKind_##N = c,
|
||||
CV_LeafIDKindXList(X)
|
||||
#undef X
|
||||
}
|
||||
CV_LeafIDKindEnum;
|
||||
|
||||
#define CV_TypeId_Variadic 0
|
||||
|
||||
#define CV_BasicPointerKindXList(X) \
|
||||
@@ -2285,10 +2293,18 @@ struct CV_LeafPreComp
|
||||
{
|
||||
U32 start_index;
|
||||
U32 count;
|
||||
U32 signature;
|
||||
U32 sig;
|
||||
// U8[] name (null terminated)
|
||||
};
|
||||
|
||||
//- (LeafKind; END_PRECOMP)
|
||||
|
||||
typedef struct CV_LeafEndPreComp CV_LeafEndPreComp;
|
||||
struct CV_LeafEndPreComp
|
||||
{
|
||||
U32 sig;
|
||||
};
|
||||
|
||||
//- (LeafKind: TYPESERVER)
|
||||
|
||||
typedef struct CV_LeafTypeServer CV_LeafTypeServer;
|
||||
@@ -3004,6 +3020,7 @@ typedef struct CV_C13InlineeLinesParsed CV_C13InlineeLinesParsed;
|
||||
struct CV_C13InlineeLinesParsed
|
||||
{
|
||||
CV_ItemId inlinee;
|
||||
U32 file_off;
|
||||
String8 file_name;
|
||||
U32 first_source_ln;
|
||||
U32 extra_file_count;
|
||||
@@ -3067,6 +3084,7 @@ internal U64 cv_hash_from_string(String8 string);
|
||||
internal U64 cv_hash_from_item_id(CV_ItemId item_id);
|
||||
|
||||
internal CV_NumericParsed cv_numeric_from_data_range(U8 *first, U8 *opl);
|
||||
internal U64 cv_read_numeric(String8 data, U64 offset, CV_NumericParsed *out);
|
||||
|
||||
internal B32 cv_numeric_fits_in_u64(CV_NumericParsed *num);
|
||||
internal B32 cv_numeric_fits_in_s64(CV_NumericParsed *num);
|
||||
@@ -3098,8 +3116,6 @@ internal CV_LeafParsed *cv_leaf_from_data(Arena *arena, String8 leaf_data, CV_Ty
|
||||
////////////////////////////////
|
||||
//~ CodeView C13 Parser Functions
|
||||
|
||||
typedef struct PDB_Strtbl PDB_Strtbl;
|
||||
typedef struct PDB_CoffSectionArray PDB_CoffSectionArray;
|
||||
internal CV_C13Parsed *cv_c13_parsed_from_data(Arena *arena, String8 c13_data, struct PDB_Strtbl *strtbl, struct PDB_CoffSectionArray *sections);
|
||||
internal CV_C13Parsed *cv_c13_parsed_from_data(Arena *arena, String8 c13_data, String8 strtbl, COFF_SectionHeaderArray sections);
|
||||
|
||||
#endif // CODEVIEW_H
|
||||
|
||||
@@ -246,7 +246,7 @@ cv_string_from_arch:
|
||||
{MANTYPREF - 0x1028}
|
||||
{UNAMESPACE_ST - 0x1029}
|
||||
{ST_MAX - 0x1100}
|
||||
{OBJNAME Objname 0x1101}
|
||||
{OBJNAME ObjName 0x1101}
|
||||
{THUNK32 Thunk32 0x1102}
|
||||
{BLOCK32 Block32 0x1103}
|
||||
{WITH32 - 0x1104}
|
||||
@@ -462,6 +462,7 @@ CV_BasicTypeTable:
|
||||
@table(name header_type_name val)
|
||||
CV_LeafKindTable:
|
||||
{
|
||||
{NOTYPE - 0x0000}
|
||||
{MODIFIER_16t - 0x0001}
|
||||
{POINTER_16t - 0x0002}
|
||||
{ARRAY_16t - 0x0003}
|
||||
@@ -586,6 +587,13 @@ CV_LeafKindTable:
|
||||
{VECTOR - 0x151b}
|
||||
{MATRIX - 0x151c}
|
||||
{VFTABLE - 0x151d}
|
||||
{FUNC_ID FuncId 0x1601}
|
||||
{MFUNC_ID MFuncId 0x1602}
|
||||
{BUILDINFO BuildInfo 0x1603}
|
||||
{SUBSTR_LIST SubstrList 0x1604}
|
||||
{STRING_ID StringId 0x1605}
|
||||
{UDT_SRC_LINE UDTSrcLine 0x1606}
|
||||
{UDT_MOD_SRC_LINE UDTModSrcLine 0x1607}
|
||||
{CLASS2 Struct2 0x1608}
|
||||
{STRUCT2 Struct2 0x1609}
|
||||
}
|
||||
|
||||
@@ -408,11 +408,11 @@ cv_stringize_sym_range(Arena *arena, String8List *out,
|
||||
|
||||
case CV_SymKind_OBJNAME:
|
||||
{
|
||||
if (sizeof(CV_SymObjname) > cap){
|
||||
if (sizeof(CV_SymObjName) > cap){
|
||||
str8_list_push(arena, out, str8_lit(" bad symbol range\n"));
|
||||
}
|
||||
else{
|
||||
CV_SymObjname *objname = (CV_SymObjname*)first;
|
||||
CV_SymObjName *objname = (CV_SymObjName*)first;
|
||||
|
||||
// sig
|
||||
str8_list_pushf(arena, out, " sig=%u\n", objname->sig);
|
||||
@@ -568,22 +568,22 @@ cv_stringize_sym_range(Arena *arena, String8List *out,
|
||||
CV_SymPub32 *pub32 = (CV_SymPub32*)first;
|
||||
|
||||
// flags
|
||||
CV_PubFlags flags = pub32->flags;
|
||||
CV_Pub32Flags flags = pub32->flags;
|
||||
str8_list_push(arena, out, str8_lit(" flags="));
|
||||
if (flags == 0){
|
||||
str8_list_push(arena, out, str8_lit("0|"));
|
||||
}
|
||||
else{
|
||||
if (flags&CV_PubFlag_Code){
|
||||
if (flags&CV_Pub32Flag_Code){
|
||||
str8_list_push(arena, out, str8_lit("Code|"));
|
||||
}
|
||||
if (flags&CV_PubFlag_Function){
|
||||
if (flags&CV_Pub32Flag_Function){
|
||||
str8_list_push(arena, out, str8_lit("Function|"));
|
||||
}
|
||||
if (flags&CV_PubFlag_ManagedCode){
|
||||
if (flags&CV_Pub32Flag_ManagedCode){
|
||||
str8_list_push(arena, out, str8_lit("ManagedCode|"));
|
||||
}
|
||||
if (flags&CV_PubFlag_MSIL){
|
||||
if (flags&CV_Pub32Flag_MSIL){
|
||||
str8_list_push(arena, out, str8_lit("MSIL|"));
|
||||
}
|
||||
}
|
||||
@@ -2004,7 +2004,7 @@ cv_stringize_leaf_range(Arena *arena, String8List *out,
|
||||
}
|
||||
}break;
|
||||
|
||||
case CV_LeafIDKind_FUNC_ID:
|
||||
case CV_LeafKind_FUNC_ID:
|
||||
{
|
||||
if (sizeof(CV_LeafFuncId) > cap){
|
||||
str8_list_push(arena, out, str8_lit(" bad leaf range\n"));
|
||||
@@ -2020,7 +2020,7 @@ cv_stringize_leaf_range(Arena *arena, String8List *out,
|
||||
}
|
||||
}break;
|
||||
|
||||
case CV_LeafIDKind_MFUNC_ID:
|
||||
case CV_LeafKind_MFUNC_ID:
|
||||
{
|
||||
if (sizeof(CV_LeafMFuncId) > cap){
|
||||
str8_list_push(arena, out, str8_lit(" bad leaf range\n"));
|
||||
@@ -2036,7 +2036,7 @@ cv_stringize_leaf_range(Arena *arena, String8List *out,
|
||||
}
|
||||
}break;
|
||||
|
||||
case CV_LeafIDKind_BUILDINFO:
|
||||
case CV_LeafKind_BUILDINFO:
|
||||
{
|
||||
if (sizeof(CV_LeafBuildInfo) > cap){
|
||||
str8_list_push(arena, out, str8_lit(" bad leaf range\n"));
|
||||
@@ -2057,7 +2057,7 @@ cv_stringize_leaf_range(Arena *arena, String8List *out,
|
||||
}
|
||||
}break;
|
||||
|
||||
case CV_LeafIDKind_SUBSTR_LIST:
|
||||
case CV_LeafKind_SUBSTR_LIST:
|
||||
{
|
||||
if (sizeof(CV_LeafSubstrList) > cap){
|
||||
str8_list_push(arena, out, str8_lit(" bad leaf range\n"));
|
||||
@@ -2078,7 +2078,7 @@ cv_stringize_leaf_range(Arena *arena, String8List *out,
|
||||
}
|
||||
}break;
|
||||
|
||||
case CV_LeafIDKind_STRING_ID:
|
||||
case CV_LeafKind_STRING_ID:
|
||||
{
|
||||
if (sizeof(CV_LeafStringId) > cap){
|
||||
str8_list_push(arena, out, str8_lit(" bad leaf range\n"));
|
||||
@@ -2093,7 +2093,7 @@ cv_stringize_leaf_range(Arena *arena, String8List *out,
|
||||
}
|
||||
}break;
|
||||
|
||||
case CV_LeafIDKind_UDT_SRC_LINE:
|
||||
case CV_LeafKind_UDT_SRC_LINE:
|
||||
{
|
||||
if (sizeof(CV_LeafUDTSrcLine) > cap){
|
||||
str8_list_push(arena, out, str8_lit(" bad leaf range\n"));
|
||||
@@ -2243,7 +2243,7 @@ cv_stringize_leaf_range(Arena *arena, String8List *out,
|
||||
//case CV_LeafIDKind_SUBSTR_LIST:
|
||||
//case CV_LeafIDKind_STRING_ID:
|
||||
//case CV_LeafIDKind_UDT_SRC_LINE:
|
||||
case CV_LeafIDKind_UDT_MOD_SRC_LINE:
|
||||
case CV_LeafKind_UDT_MOD_SRC_LINE:
|
||||
|
||||
{
|
||||
str8_list_push(arena, out, str8_lit(" no stringizer path\n"));
|
||||
|
||||
@@ -447,6 +447,7 @@ String8 result = str8_lit("<Unknown CV_LeafKind>");
|
||||
switch(v)
|
||||
{
|
||||
default:{}break;
|
||||
case CV_LeafKind_NOTYPE:{result = str8_lit("NOTYPE");}break;
|
||||
case CV_LeafKind_MODIFIER_16t:{result = str8_lit("MODIFIER_16t");}break;
|
||||
case CV_LeafKind_POINTER_16t:{result = str8_lit("POINTER_16t");}break;
|
||||
case CV_LeafKind_ARRAY_16t:{result = str8_lit("ARRAY_16t");}break;
|
||||
@@ -571,6 +572,13 @@ case CV_LeafKind_BINTERFACE:{result = str8_lit("BINTERFACE");}break;
|
||||
case CV_LeafKind_VECTOR:{result = str8_lit("VECTOR");}break;
|
||||
case CV_LeafKind_MATRIX:{result = str8_lit("MATRIX");}break;
|
||||
case CV_LeafKind_VFTABLE:{result = str8_lit("VFTABLE");}break;
|
||||
case CV_LeafKind_FUNC_ID:{result = str8_lit("FUNC_ID");}break;
|
||||
case CV_LeafKind_MFUNC_ID:{result = str8_lit("MFUNC_ID");}break;
|
||||
case CV_LeafKind_BUILDINFO:{result = str8_lit("BUILDINFO");}break;
|
||||
case CV_LeafKind_SUBSTR_LIST:{result = str8_lit("SUBSTR_LIST");}break;
|
||||
case CV_LeafKind_STRING_ID:{result = str8_lit("STRING_ID");}break;
|
||||
case CV_LeafKind_UDT_SRC_LINE:{result = str8_lit("UDT_SRC_LINE");}break;
|
||||
case CV_LeafKind_UDT_MOD_SRC_LINE:{result = str8_lit("UDT_MOD_SRC_LINE");}break;
|
||||
case CV_LeafKind_CLASS2:{result = str8_lit("CLASS2");}break;
|
||||
case CV_LeafKind_STRUCT2:{result = str8_lit("STRUCT2");}break;
|
||||
}
|
||||
@@ -592,7 +600,7 @@ case CV_SymKind_OEM:{result = sizeof(CV_SymOEM);}break;
|
||||
case CV_SymKind_VFTABLE32:{result = sizeof(CV_SymVPath32);}break;
|
||||
case CV_SymKind_FRAMEPROC:{result = sizeof(CV_SymFrameproc);}break;
|
||||
case CV_SymKind_ANNOTATION:{result = sizeof(CV_SymAnnotation);}break;
|
||||
case CV_SymKind_OBJNAME:{result = sizeof(CV_SymObjname);}break;
|
||||
case CV_SymKind_OBJNAME:{result = sizeof(CV_SymObjName);}break;
|
||||
case CV_SymKind_THUNK32:{result = sizeof(CV_SymThunk32);}break;
|
||||
case CV_SymKind_BLOCK32:{result = sizeof(CV_SymBlock32);}break;
|
||||
case CV_SymKind_LABEL32:{result = sizeof(CV_SymLabel32);}break;
|
||||
@@ -696,6 +704,13 @@ case CV_LeafKind_ONEMETHOD:{result = sizeof(CV_LeafOneMethod);}break;
|
||||
case CV_LeafKind_NESTTYPEEX:{result = sizeof(CV_LeafNestTypeEx);}break;
|
||||
case CV_LeafKind_TYPESERVER2:{result = sizeof(CV_LeafTypeServer2);}break;
|
||||
case CV_LeafKind_INTERFACE:{result = sizeof(CV_LeafStruct);}break;
|
||||
case CV_LeafKind_FUNC_ID:{result = sizeof(CV_LeafFuncId);}break;
|
||||
case CV_LeafKind_MFUNC_ID:{result = sizeof(CV_LeafMFuncId);}break;
|
||||
case CV_LeafKind_BUILDINFO:{result = sizeof(CV_LeafBuildInfo);}break;
|
||||
case CV_LeafKind_SUBSTR_LIST:{result = sizeof(CV_LeafSubstrList);}break;
|
||||
case CV_LeafKind_STRING_ID:{result = sizeof(CV_LeafStringId);}break;
|
||||
case CV_LeafKind_UDT_SRC_LINE:{result = sizeof(CV_LeafUDTSrcLine);}break;
|
||||
case CV_LeafKind_UDT_MOD_SRC_LINE:{result = sizeof(CV_LeafUDTModSrcLine);}break;
|
||||
case CV_LeafKind_CLASS2:{result = sizeof(CV_LeafStruct2);}break;
|
||||
case CV_LeafKind_STRUCT2:{result = sizeof(CV_LeafStruct2);}break;
|
||||
}
|
||||
|
||||
@@ -381,6 +381,7 @@ CV_BasicType_PTR = 0xf0,
|
||||
typedef U16 CV_LeafKind;
|
||||
typedef enum CV_LeafKindEnum
|
||||
{
|
||||
CV_LeafKind_NOTYPE = 0x0000,
|
||||
CV_LeafKind_MODIFIER_16t = 0x0001,
|
||||
CV_LeafKind_POINTER_16t = 0x0002,
|
||||
CV_LeafKind_ARRAY_16t = 0x0003,
|
||||
@@ -505,6 +506,13 @@ CV_LeafKind_BINTERFACE = 0x151a,
|
||||
CV_LeafKind_VECTOR = 0x151b,
|
||||
CV_LeafKind_MATRIX = 0x151c,
|
||||
CV_LeafKind_VFTABLE = 0x151d,
|
||||
CV_LeafKind_FUNC_ID = 0x1601,
|
||||
CV_LeafKind_MFUNC_ID = 0x1602,
|
||||
CV_LeafKind_BUILDINFO = 0x1603,
|
||||
CV_LeafKind_SUBSTR_LIST = 0x1604,
|
||||
CV_LeafKind_STRING_ID = 0x1605,
|
||||
CV_LeafKind_UDT_SRC_LINE = 0x1606,
|
||||
CV_LeafKind_UDT_MOD_SRC_LINE = 0x1607,
|
||||
CV_LeafKind_CLASS2 = 0x1608,
|
||||
CV_LeafKind_STRUCT2 = 0x1609,
|
||||
} CV_LeafKindEnum;
|
||||
|
||||
Reference in New Issue
Block a user