Eric Pouech : dbghelp:: Add proper support for S_OBJNAME records.
Alexandre Julliard
julliard at winehq.org
Mon Aug 23 16:24:13 CDT 2021
Module: wine
Branch: master
Commit: 9adf73be7e6d2b9655f38dda421692994591c6c5
URL: https://source.winehq.org/git/wine.git/?a=commit;h=9adf73be7e6d2b9655f38dda421692994591c6c5
Author: Eric Pouech <eric.pouech at gmail.com>
Date: Sat Aug 21 10:23:00 2021 +0200
dbghelp:: Add proper support for S_OBJNAME records.
Signed-off-by: Eric Pouech <eric.pouech at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
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;
More information about the wine-cvs
mailing list