From b0f50fbda65029fd8a9758a787aedadeaf660719 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sat, 2 Nov 2019 06:04:51 -0700 Subject: [PATCH] Handling new enum debug info --- IDEHelper/COFF.cpp | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/IDEHelper/COFF.cpp b/IDEHelper/COFF.cpp index c75e42fb..c6736c55 100644 --- a/IDEHelper/COFF.cpp +++ b/IDEHelper/COFF.cpp @@ -823,8 +823,15 @@ void COFF::CvParseMembers(DbgType* parentType, int tagIdx, bool ipi) data = (uint8*)&baseClassInfo.offset; baseTypeEntry->mThisOffset = (int)CvParseConstant(data); if (baseClassInfo.index != 0) - { + { baseTypeEntry->mBaseType = CvGetType(baseClassInfo.index); + +// if (parentType->mLanguage == DbgLanguage_Beef) +// { +// if (!parentType->mBaseTypes.IsEmpty()) +// parentType->mTypeParam = baseTypeEntry->mBaseType; +// } + parentType->mBaseTypes.PushBack(baseTypeEntry); parentType->mAlign = std::max(parentType->mAlign, baseTypeEntry->mBaseType->GetAlign()); @@ -980,14 +987,14 @@ void COFF::CvParseMembers(DbgType* parentType, int tagIdx, bool ipi) } char* fieldName = (char*)_ParseString(); - if ((fieldName != NULL) && (strcmp(fieldName, "$prim") == 0)) + if ((fieldName != NULL) && (parentType->mLanguage == DbgLanguage_Beef)) { - DbgType* fieldType = CvGetType(fieldTypeId); - DbgBaseTypeEntry* baseTypeEntry = mAlloc.Alloc(); - baseTypeEntry->mThisOffset = 0; - baseTypeEntry->mBaseType = fieldType; - parentType->mBaseTypes.PushFront(baseTypeEntry); - break; + if (strcmp(fieldName, "$prim") == 0) + { + parentType->mTypeParam = CvGetType(fieldTypeId); + if ((parentType->mBaseTypes.mHead != NULL) && (strcmp(parentType->mBaseTypes.mHead->mBaseType->mName, "System.Enum") == 0)) + parentType->mTypeCode = DbgType_Enum; + } } int64 constVal = 0;