From d6aff64ccf6bb15c065b3442f2de0c010198472d Mon Sep 17 00:00:00 2001 From: Eric Pouech Date: Tue, 24 Aug 2021 11:12:14 +0200 Subject: [PATCH] winedump: Add support for dumping heap_alloc_site CodeView records. Signed-off-by: Eric Pouech Signed-off-by: Alexandre Julliard --- dlls/dbghelp/msc.c | 6 +++--- include/wine/mscvpdb.h | 4 ++-- tools/winedump/msc.c | 9 +++++++++ 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/dlls/dbghelp/msc.c b/dlls/dbghelp/msc.c index f77592664ef..6d623f336ed 100644 --- a/dlls/dbghelp/msc.c +++ b/dlls/dbghelp/msc.c @@ -1993,9 +1993,9 @@ static BOOL codeview_snarf(const struct msc_debug_info* msc_dbg, const BYTE* roo TRACE("S-Align V1\n"); break; case S_HEAPALLOCSITE: - TRACE("heap site: offset=0x%08x at sect_idx 0x%04x, inst_len 0x%08x, index 0x%08x\n", - sym->heap_alloc_site.offset, sym->heap_alloc_site.sect_idx, - sym->heap_alloc_site.inst_len, sym->heap_alloc_site.index); + TRACE("S-heap site V3: offset=0x%08x at sect_idx 0x%04x, inst_len 0x%08x, index 0x%08x\n", + sym->heap_alloc_site_v3.offset, sym->heap_alloc_site_v3.sect_idx, + sym->heap_alloc_site_v3.inst_len, sym->heap_alloc_site_v3.index); break; /* the symbols we can safely ignore for now */ diff --git a/include/wine/mscvpdb.h b/include/wine/mscvpdb.h index 42455cbd0fe..766f20d2732 100644 --- a/include/wine/mscvpdb.h +++ b/include/wine/mscvpdb.h @@ -1751,8 +1751,8 @@ union codeview_symbol unsigned int offset; unsigned short sect_idx; unsigned short inst_len; - unsigned int index; - } heap_alloc_site; + cv_typ_t index; + } heap_alloc_site_v3; struct { diff --git a/tools/winedump/msc.c b/tools/winedump/msc.c index f5d2d15774d..62152ed6ea0 100644 --- a/tools/winedump/msc.c +++ b/tools/winedump/msc.c @@ -1791,6 +1791,15 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size) printf("\t\tfunc:%x invoc:%u\n", sym->function_list_v3.funcs[i], i < ninvoc ? invoc[i] : 0); } break; + + case S_HEAPALLOCSITE: + printf("Heap-alloc-site V3 %04x:%08x#%x type:%04x\n", + sym->heap_alloc_site_v3.sect_idx, + sym->heap_alloc_site_v3.offset, + sym->heap_alloc_site_v3.inst_len, + sym->heap_alloc_site_v3.index); + break; + default: printf("\n\t\t>>> Unsupported symbol-id %x sz=%d\n", sym->generic.id, sym->generic.len + 2); dump_data((const void*)sym, sym->generic.len + 2, " ");