1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-12 05:14:10 +02:00

Handling new enum debug info

This commit is contained in:
Brian Fiete 2019-11-02 06:04:51 -07:00
parent f10551e6f8
commit b0f50fbda6

View file

@ -823,8 +823,15 @@ void COFF::CvParseMembers(DbgType* parentType, int tagIdx, bool ipi)
data = (uint8*)&baseClassInfo.offset; data = (uint8*)&baseClassInfo.offset;
baseTypeEntry->mThisOffset = (int)CvParseConstant(data); baseTypeEntry->mThisOffset = (int)CvParseConstant(data);
if (baseClassInfo.index != 0) if (baseClassInfo.index != 0)
{ {
baseTypeEntry->mBaseType = CvGetType(baseClassInfo.index); baseTypeEntry->mBaseType = CvGetType(baseClassInfo.index);
// if (parentType->mLanguage == DbgLanguage_Beef)
// {
// if (!parentType->mBaseTypes.IsEmpty())
// parentType->mTypeParam = baseTypeEntry->mBaseType;
// }
parentType->mBaseTypes.PushBack(baseTypeEntry); parentType->mBaseTypes.PushBack(baseTypeEntry);
parentType->mAlign = std::max(parentType->mAlign, baseTypeEntry->mBaseType->GetAlign()); 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(); char* fieldName = (char*)_ParseString();
if ((fieldName != NULL) && (strcmp(fieldName, "$prim") == 0)) if ((fieldName != NULL) && (parentType->mLanguage == DbgLanguage_Beef))
{ {
DbgType* fieldType = CvGetType(fieldTypeId); if (strcmp(fieldName, "$prim") == 0)
DbgBaseTypeEntry* baseTypeEntry = mAlloc.Alloc<DbgBaseTypeEntry>(); {
baseTypeEntry->mThisOffset = 0; parentType->mTypeParam = CvGetType(fieldTypeId);
baseTypeEntry->mBaseType = fieldType; if ((parentType->mBaseTypes.mHead != NULL) && (strcmp(parentType->mBaseTypes.mHead->mBaseType->mName, "System.Enum") == 0))
parentType->mBaseTypes.PushFront(baseTypeEntry); parentType->mTypeCode = DbgType_Enum;
break; }
} }
int64 constVal = 0; int64 constVal = 0;