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