[PATCH 10/10] [DbgHelp]: proper support and definition for S_REGREL_V3

Eric Pouech eric.pouech at orange.fr
Sat Oct 9 01:51:47 CDT 2010




A+
---

 dlls/dbghelp/msc.c     |   14 +++++++-------
 include/wine/mscvpdb.h |    6 +++---
 tools/winedump/msc.c   |    8 ++++----
 3 files changed, 14 insertions(+), 14 deletions(-)


diff --git a/dlls/dbghelp/msc.c b/dlls/dbghelp/msc.c
index baab45d..90e832c 100644
--- a/dlls/dbghelp/msc.c
+++ b/dlls/dbghelp/msc.c
@@ -1669,16 +1669,16 @@ static int codeview_snarf(const struct msc_debug_info* msc_dbg, const BYTE* root
                                 codeview_get_type(sym->stack_v3.symtype, FALSE),
                                 sym->stack_v3.name);
             break;
-	case S_BPREL_XXXX_V3:
+	case S_REGREL_V3:
             loc.kind = loc_regrel;
-            loc.reg = 0; /* FIXME */
-            loc.offset = sym->stack_xxxx_v3.offset;
-            WARN("Supposed stack variable %s (%d)\n", sym->stack_xxxx_v3.name, sym->stack_xxxx_v3.unknown);
+            loc.reg = sym->regrel_v3.reg;
+            loc.offset = sym->regrel_v3.offset;
             symt_add_func_local(msc_dbg->module, curr_func,
-                                sym->stack_xxxx_v3.offset > 0 ? DataIsParam : DataIsLocal,
+                                /* FIXME this is wrong !!! */
+                                sym->regrel_v3.offset > 0 ? DataIsParam : DataIsLocal,
                                 &loc, block,
-                                codeview_get_type(sym->stack_xxxx_v3.symtype, FALSE),
-                                sym->stack_xxxx_v3.name);
+                                codeview_get_type(sym->regrel_v3.symtype, FALSE),
+                                sym->regrel_v3.name);
             break;
 
         case S_REGISTER_V1:
diff --git a/include/wine/mscvpdb.h b/include/wine/mscvpdb.h
index c9bdb4f..2d5b9c9 100644
--- a/include/wine/mscvpdb.h
+++ b/include/wine/mscvpdb.h
@@ -1380,9 +1380,9 @@ union codeview_symbol
         short int               id;             /* Always S_BPREL_V3 */
         int                     offset;         /* Stack offset relative to BP */
         unsigned int            symtype;
-        unsigned short          unknown;
+        unsigned short          reg;
         char                    name[1];
-    } stack_xxxx_v3;
+    } regrel_v3;
 
     struct
     {
@@ -1646,7 +1646,7 @@ union codeview_symbol
 #define S_PUB_V3        0x110E
 #define S_LPROC_V3      0x110F
 #define S_GPROC_V3      0x1110
-#define S_BPREL_XXXX_V3 0x1111  /* not really understood, but looks like bprel... */
+#define S_REGREL_V3     0x1111
 #define S_MSTOOL_V3     0x1116  /* compiler command line options and build information */
 #define S_PUB_FUNC1_V3  0x1125  /* didn't get the difference between the two */
 #define S_PUB_FUNC2_V3  0x1127
diff --git a/tools/winedump/msc.c b/tools/winedump/msc.c
index ccd4664..c917309 100644
--- a/tools/winedump/msc.c
+++ b/tools/winedump/msc.c
@@ -1059,10 +1059,10 @@ int codeview_dump_symbols(const void* root, unsigned long size)
                    sym->stack_v3.symtype, curr_func);
             break;
 
-        case S_BPREL_XXXX_V3:
-            printf("\tS-BP-relative XXXX V3: '%s' @%d type:%x unkn:%x (in %s)\n",
-                   sym->stack_xxxx_v3.name, sym->stack_xxxx_v3.offset,
-                   sym->stack_xxxx_v3.symtype, sym->stack_xxxx_v3.unknown, curr_func);
+        case S_REGREL_V3:
+            printf("\tS-Reg-relative V3: '%s' @%d type:%x reg:%x (in %s)\n",
+                   sym->regrel_v3.name, sym->regrel_v3.offset,
+                   sym->regrel_v3.symtype, sym->regrel_v3.reg, curr_func);
             break;
 
         case S_REGISTER_V1:






More information about the wine-patches mailing list