Skip to content

Commit a044ace

Browse files
authored
[cdac] Fix lookup map pointers in GetModuleData (#106437)
- Fix lookup map pointers in GetModuleData - Fix GetMethodTableData assert
1 parent a842025 commit a044ace

File tree

3 files changed

+14
-14
lines changed

3 files changed

+14
-14
lines changed

src/coreclr/debug/daccess/request.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2110,7 +2110,7 @@ ClrDataAccess::GetMethodTableData(CLRDATA_ADDRESS mt, struct DacpMethodTableData
21102110
_ASSERTE(MTData->wNumVtableSlots == mtDataLocal.wNumVtableSlots);
21112111
_ASSERTE(MTData->wNumVirtuals == mtDataLocal.wNumVirtuals);
21122112
_ASSERTE(MTData->cl == mtDataLocal.cl);
2113-
_ASSERTE(MTData->dwAttrClass = mtDataLocal.dwAttrClass);
2113+
_ASSERTE(MTData->dwAttrClass == mtDataLocal.dwAttrClass);
21142114
_ASSERTE(MTData->bContainsPointers == mtDataLocal.bContainsPointers);
21152115
_ASSERTE(MTData->bIsShared == mtDataLocal.bIsShared);
21162116
_ASSERTE(MTData->bIsDynamic == mtDataLocal.bIsDynamic);

src/native/managed/cdacreader/src/Data/Module.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ public Module(Target target, TargetPointer address)
2525
DynamicMetadata = target.ReadPointer(address + (ulong)type.Fields[nameof(DynamicMetadata)].Offset);
2626
Path = target.ReadPointer(address + (ulong)type.Fields[nameof(Path)].Offset);
2727

28-
FieldDefToDescMap = target.ReadPointer(address + (ulong)type.Fields[nameof(FieldDefToDescMap)].Offset);
29-
ManifestModuleReferencesMap = target.ReadPointer(address + (ulong)type.Fields[nameof(ManifestModuleReferencesMap)].Offset);
30-
MemberRefToDescMap = target.ReadPointer(address + (ulong)type.Fields[nameof(MemberRefToDescMap)].Offset);
31-
MethodDefToDescMap = target.ReadPointer(address + (ulong)type.Fields[nameof(MethodDefToDescMap)].Offset);
32-
TypeDefToMethodTableMap = target.ReadPointer(address + (ulong)type.Fields[nameof(TypeDefToMethodTableMap)].Offset);
33-
TypeRefToMethodTableMap = target.ReadPointer(address + (ulong)type.Fields[nameof(TypeRefToMethodTableMap)].Offset);
34-
MethodDefToILCodeVersioningStateMap = target.ReadPointer(address + (ulong)type.Fields[nameof(MethodDefToILCodeVersioningStateMap)].Offset);
28+
FieldDefToDescMap = address + (ulong)type.Fields[nameof(FieldDefToDescMap)].Offset;
29+
ManifestModuleReferencesMap = address + (ulong)type.Fields[nameof(ManifestModuleReferencesMap)].Offset;
30+
MemberRefToDescMap = address + (ulong)type.Fields[nameof(MemberRefToDescMap)].Offset;
31+
MethodDefToDescMap = address + (ulong)type.Fields[nameof(MethodDefToDescMap)].Offset;
32+
TypeDefToMethodTableMap = address + (ulong)type.Fields[nameof(TypeDefToMethodTableMap)].Offset;
33+
TypeRefToMethodTableMap = address + (ulong)type.Fields[nameof(TypeRefToMethodTableMap)].Offset;
34+
MethodDefToILCodeVersioningStateMap = address + (ulong)type.Fields[nameof(MethodDefToILCodeVersioningStateMap)].Offset;
3535
}
3636

3737
public TargetPointer Assembly { get; init; }

src/native/managed/cdacreader/src/Legacy/SOSDacImpl.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -352,12 +352,12 @@ public unsafe int GetModuleData(ulong moduleAddr, DacpModuleData* data)
352352
ulong tableDataOffset = (ulong)lookupMapTypeInfo.Fields[nameof(Data.ModuleLookupMap.TableData)].Offset;
353353

354354
Contracts.ModuleLookupTables tables = contract.GetLookupTables(handle);
355-
data->FieldDefToDescMap = tables.FieldDefToDesc + tableDataOffset;
356-
data->ManifestModuleReferencesMap = tables.ManifestModuleReferences + tableDataOffset;
357-
data->MemberRefToDescMap = tables.MemberRefToDesc + tableDataOffset;
358-
data->MethodDefToDescMap = tables.MethodDefToDesc + tableDataOffset;
359-
data->TypeDefToMethodTableMap = tables.TypeDefToMethodTable + tableDataOffset;
360-
data->TypeRefToMethodTableMap = tables.TypeRefToMethodTable + tableDataOffset;
355+
data->FieldDefToDescMap = _target.ReadPointer(tables.FieldDefToDesc + tableDataOffset);
356+
data->ManifestModuleReferencesMap = _target.ReadPointer(tables.ManifestModuleReferences + tableDataOffset);
357+
data->MemberRefToDescMap = _target.ReadPointer(tables.MemberRefToDesc + tableDataOffset);
358+
data->MethodDefToDescMap = _target.ReadPointer(tables.MethodDefToDesc + tableDataOffset);
359+
data->TypeDefToMethodTableMap = _target.ReadPointer(tables.TypeDefToMethodTable + tableDataOffset);
360+
data->TypeRefToMethodTableMap = _target.ReadPointer(tables.TypeRefToMethodTable + tableDataOffset);
361361

362362
// Always 0 - .NET no longer has these concepts
363363
data->dwModuleID = 0;

0 commit comments

Comments
 (0)