From 9adf73be7e6d2b9655f38dda421692994591c6c5 Mon Sep 17 00:00:00 2001 From: Eric Pouech Date: Sat, 21 Aug 2021 10:23:00 +0200 Subject: [PATCH] dbghelp:: Add proper support for S_OBJNAME records. Signed-off-by: Eric Pouech Signed-off-by: Alexandre Julliard --- dlls/dbghelp/msc.c | 20 ++++++-------------- include/wine/mscvpdb.h | 10 +++++++++- tools/winedump/msc.c | 6 +++--- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/dlls/dbghelp/msc.c b/dlls/dbghelp/msc.c index 25300aa6f90..2712d352a17 100644 --- a/dlls/dbghelp/msc.c +++ b/dlls/dbghelp/msc.c @@ -1844,23 +1844,15 @@ static BOOL codeview_snarf(const struct msc_debug_info* msc_dbg, const BYTE* roo } } break; + case S_OBJNAME: - TRACE("S-Compiland-V3 %s\n", sym->compiland_v3.name); - if (TRACE_ON(dbghelp_msc)) - { - const char* ptr1 = sym->compiland_v3.name + strlen(sym->compiland_v3.name); - const char* ptr2; - while (*ptr1) - { - ptr2 = ptr1 + strlen(ptr1) + 1; - TRACE("\t%s => %s\n", ptr1, debugstr_a(ptr2)); - ptr1 = ptr2 + strlen(ptr2) + 1; - } - } - break; + TRACE("S-ObjName-V3 %s\n", sym->objname_v3.name); + compiland = symt_new_compiland(msc_dbg->module, 0 /* FIXME */, + source_new(msc_dbg->module, NULL, + sym->objname_v3.name)); case S_OBJNAME_ST: - TRACE("S-ObjName %s\n", terminate_string(&sym->objname_v1.p_name)); + TRACE("S-ObjName-V1 %s\n", terminate_string(&sym->objname_v1.p_name)); compiland = symt_new_compiland(msc_dbg->module, 0 /* FIXME */, source_new(msc_dbg->module, NULL, terminate_string(&sym->objname_v1.p_name))); diff --git a/include/wine/mscvpdb.h b/include/wine/mscvpdb.h index 036c65df0c1..a66334dbc90 100644 --- a/include/wine/mscvpdb.h +++ b/include/wine/mscvpdb.h @@ -1557,10 +1557,18 @@ union codeview_symbol { short int len; short int id; - char signature[4]; + unsigned signature; struct p_string p_name; } objname_v1; + struct + { + short int len; + short int id; + unsigned signature; + char name[1]; + } objname_v3; + struct { short int len; diff --git a/tools/winedump/msc.c b/tools/winedump/msc.c index 8053c79e450..5def00df8ed 100644 --- a/tools/winedump/msc.c +++ b/tools/winedump/msc.c @@ -1352,12 +1352,12 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size) break; case S_OBJNAME: - printf("\tS-Compiland V3 '%s' unknown:%x\n", - sym->compiland_v3.name, sym->compiland_v3.unknown); + printf("\tS-ObjName V3 sig:%x '%s'\n", + sym->objname_v3.signature, sym->objname_v3.name); break; case S_OBJNAME_ST: - printf("\tS-ObjName V1 sig:%.4s '%s'\n", + printf("\tS-ObjName V1 sig:%x '%s'\n", sym->objname_v1.signature, p_string(&sym->objname_v1.p_name)); break;