From: Eric Pouech epouech@codeweavers.com
Signed-off-by: Eric Pouech epouech@codeweavers.com --- include/minidumpapiset.h | 7 +++++++ tools/winedump/minidump.c | 20 +++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/include/minidumpapiset.h b/include/minidumpapiset.h index 2d13c6f6a67..c3cd43310ae 100644 --- a/include/minidumpapiset.h +++ b/include/minidumpapiset.h @@ -392,6 +392,13 @@ typedef struct _MINIDUMP_HANDLE_DESCRIPTOR ULONG32 PointerCount; } MINIDUMP_HANDLE_DESCRIPTOR, *PMINIDUMP_HANDLE_DESCRIPTOR;
+typedef struct _MINIDUMP_HANDLE_OBJECT_INFORMATION +{ + RVA NextInfoRva; + ULONG32 InfoType; + ULONG32 SizeOfInfo; +} MINIDUMP_HANDLE_OBJECT_INFORMATION; + typedef struct _MINIDUMP_HANDLE_DESCRIPTOR_2 { ULONG64 Handle; diff --git a/tools/winedump/minidump.c b/tools/winedump/minidump.c index 80900e3eb33..0a5ee15412b 100644 --- a/tools/winedump/minidump.c +++ b/tools/winedump/minidump.c @@ -499,8 +499,26 @@ void mdmp_dump(void)
if (mhd->SizeOfDescriptor >= sizeof(MINIDUMP_HANDLE_DESCRIPTOR_2)) { - printf(" ObjectInfo: %s\n", get_mdmp_str(hd->ObjectInfoRva)); + MINIDUMP_HANDLE_OBJECT_INFORMATION *obj_info; + unsigned link_count = 0; + + printf(" ObjectInfo: %#x\n", (UINT)hd->ObjectInfoRva); printf(" Reserved0: %#x\n", hd->Reserved0); + + if (hd->ObjectInfoRva) + { + for (obj_info = (void*)PRD(hd->ObjectInfoRva, sizeof(*obj_info)); + obj_info; + obj_info = obj_info->NextInfoRva ? (void*)PRD(obj_info->NextInfoRva, sizeof(*obj_info)) : NULL) + { + printf(" Information[%u]\n", link_count++); + printf(" NextInfoRva: %#x\n", (UINT)obj_info->NextInfoRva); + printf(" InfoType: %u\n", obj_info->InfoType); + printf(" SizeOfInfo: %u\n", obj_info->SizeOfInfo); + if (globals_dump_sect("content")) + dump_data((const BYTE*)(obj_info + 1), obj_info->SizeOfInfo, " "); + } + } }
ptr += mhd->SizeOfDescriptor;
From: Eric Pouech epouech@codeweavers.com
Signed-off-by: Eric Pouech epouech@codeweavers.com --- tools/winedump/minidump.c | 1 - 1 file changed, 1 deletion(-)
diff --git a/tools/winedump/minidump.c b/tools/winedump/minidump.c index 0a5ee15412b..df7885bc86b 100644 --- a/tools/winedump/minidump.c +++ b/tools/winedump/minidump.c @@ -226,7 +226,6 @@ void mdmp_dump(void) for (i = 0; i < mml->NumberOfMemoryRanges; i++, mmd++) { printf(" Memory Range #%d:\n", i); - dump_mdmp_data(&mmd->Memory, " "); printf(" Range: %s +%#x\n", get_hexint64_str(mmd->StartOfMemoryRange), mmd->Memory.DataSize); if (globals_dump_sect("content")) dump_mdmp_data(&mmd->Memory, " ");
From: Eric Pouech epouech@codeweavers.com
Signed-off-by: Eric Pouech epouech@codeweavers.com --- tools/winedump/minidump.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
diff --git a/tools/winedump/minidump.c b/tools/winedump/minidump.c index df7885bc86b..80057a21829 100644 --- a/tools/winedump/minidump.c +++ b/tools/winedump/minidump.c @@ -232,6 +232,25 @@ void mdmp_dump(void) } } break; + case Memory64ListStream: + if (globals_dump_sect("memory")) + { + const MINIDUMP_MEMORY64_LIST *mml = stream; + const MINIDUMP_MEMORY_DESCRIPTOR64 *mmd = mml->MemoryRanges; + ULONG64 i64, base_rva; + printf("Stream [%u]: Memory64 Ranges:\n", idx); + printf(" NumberOfMemoryRanges: %s\n", get_uint64_str(mml->NumberOfMemoryRanges)); + base_rva = mml->BaseRva; + for (i64 = 0; i64 < mml->NumberOfMemoryRanges; i64++, mmd++) + { + printf(" Memory Range #%s:\n", get_uint64_str(i64)); + printf(" Range: %s +%s\n", get_hexint64_str(mmd->StartOfMemoryRange), get_hexint64_str(mmd->DataSize)); + if (globals_dump_sect("content")) + dump_data(PRD(base_rva, mmd->DataSize), mmd->DataSize, " "); + base_rva += mmd->DataSize; + } + } + break; case SystemInfoStream: if (globals_dump_sect("info")) {