Eric Pouech : dbghelp: Proper support and definition for S_REGREL_V3.

Alexandre Julliard julliard at winehq.org
Mon Oct 11 13:15:11 CDT 2010


Module: wine
Branch: master
Commit: 8d981b87f18cb53de2639d0ca32e544d6c09d4fd
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=8d981b87f18cb53de2639d0ca32e544d6c09d4fd

Author: Eric Pouech <eric.pouech at orange.fr>
Date:   Sat Oct  9 08:51:47 2010 +0200

dbghelp: Proper support and definition for S_REGREL_V3.

---

 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-cvs mailing list