[PATCH 08/10] [mscvpdb.h]: updates

Eric Pouech eric.pouech at wanadoo.fr
Wed Nov 29 14:40:43 CST 2006


- updates some definitions (constants, structures) with
  latest information we have

A+
---

 dlls/dbghelp/msc.c     |   20 ++++-----
 include/wine/mscvpdb.h |  108 +++++++++++++++++++++++++++++++++++++++++-------
 2 files changed, 102 insertions(+), 26 deletions(-)

diff --git a/dlls/dbghelp/msc.c b/dlls/dbghelp/msc.c
index d2c50ec..4c51ec3 100644
--- a/dlls/dbghelp/msc.c
+++ b/dlls/dbghelp/msc.c
@@ -1460,16 +1460,16 @@ static int codeview_snarf(const struct m
             }
             break;
 
-        case S_COMPILE_V1:
-            TRACE("S-Compile-V1 %x %s\n", 
-                  sym->compile_v1.unknown, terminate_string(&sym->compile_v1.p_name));
+        case S_COMPILAND_V1:
+            TRACE("S-Compiland-V1 %x %s\n", 
+                  sym->compiland_v1.unknown, terminate_string(&sym->compiland_v1.p_name));
             break;
 
-        case S_COMPILE_V2:
-            TRACE("S-Compile-V2 %s\n", terminate_string(&sym->compile_v2.p_name));
+        case S_COMPILAND_V2:
+            TRACE("S-Compiland-V2 %s\n", terminate_string(&sym->compiland_v2.p_name));
             if (TRACE_ON(dbghelp_msc))
             {
-                const char* ptr1 = sym->compile_v2.p_name.name + sym->compile_v2.p_name.namelen;
+                const char* ptr1 = sym->compiland_v2.p_name.name + sym->compiland_v2.p_name.namelen;
                 const char* ptr2;
                 while (*ptr1)
                 {
@@ -1479,11 +1479,11 @@ static int codeview_snarf(const struct m
                 }
             }
             break;
-        case S_COMPILE_V3:
-            TRACE("S-Compile-V3 %s\n", sym->compile_v3.name);
+        case S_COMPILAND_V3:
+            TRACE("S-Compiland-V3 %s\n", sym->compiland_v3.name);
             if (TRACE_ON(dbghelp_msc))
             {
-                const char* ptr1 = sym->compile_v3.name + strlen(sym->compile_v3.name);
+                const char* ptr1 = sym->compiland_v3.name + strlen(sym->compiland_v3.name);
                 const char* ptr2;
                 while (*ptr1)
                 {
@@ -1624,7 +1624,7 @@ static int codeview_snarf(const struct m
             length += (*name + 1 + 3) & ~3;
             break;
 
-        case S_PUB_DATA_V3:
+        case S_PUB_V3:
             if (!(dbghelp_options & SYMOPT_NO_PUBLICS))
             {
                 symt_new_public(msc_dbg->module, compiland,
diff --git a/include/wine/mscvpdb.h b/include/wine/mscvpdb.h
index 1bc2b7b..b37711c 100644
--- a/include/wine/mscvpdb.h
+++ b/include/wine/mscvpdb.h
@@ -343,7 +343,7 @@ #endif
     {
         unsigned short int      len;
         short int               id;
-        unsigned                unknown1; /* could be this_type ??? */
+        unsigned                this_type;
         unsigned int            class_type;
         unsigned int            rvtype;
         unsigned char           call;
@@ -540,6 +540,14 @@ #endif
     struct
     {
         short int		id;
+        short int		attribute;
+        unsigned int	        type;
+        char                    name[1];
+    } stmember_v3;
+
+    struct
+    {
+        short int		id;
         short int		count;
         short int		mlist;
         struct p_string         p_name;
@@ -556,7 +564,15 @@ #endif
     struct
     {
         short int		id;
-        short int		index;
+        short int		count;
+        unsigned int	        mlist;
+        char                    name[1];
+    } method_v3;
+
+    struct
+    {
+        short int		id;
+        short int		type;
         struct p_string         p_name;
     } nesttype_v1;
 
@@ -564,13 +580,21 @@ #endif
     {
         short int		id;
         short int		_pad0;
-        unsigned int	        index;
+        unsigned int	        type;
         struct p_string         p_name;
     } nesttype_v2;
 
     struct
     {
         short int		id;
+        short int		_pad0;
+        unsigned int	        type;
+        char                    name[1];
+    } nesttype_v3;
+
+    struct
+    {
+        short int		id;
         short int		type;
     } vfunctab_v1;
 
@@ -606,18 +630,26 @@ #endif
     {
         short int		id;
         short int		attribute;
-        short int		type;
-        unsigned int	        vtab_offset;
+        unsigned int 	        type;
         struct p_string         p_name;
-    } onemethod_virt_v1;
+    } onemethod_v2;
 
     struct
     {
         short int		id;
         short int		attribute;
         unsigned int 	        type;
+        char                    name[1];
+    } onemethod_v3;
+
+    struct
+    {
+        short int		id;
+        short int		attribute;
+        short int		type;
+        unsigned int	        vtab_offset;
         struct p_string         p_name;
-    } onemethod_v2;
+    } onemethod_virt_v1;
 
     struct
     {
@@ -631,6 +663,15 @@ #endif
     struct
     {
         short int		id;
+        short int		attribute;
+        unsigned int	        type;
+        unsigned int	        vtab_offset;
+        char                    name[1];
+    } onemethod_virt_v3;
+
+    struct
+    {
+        short int		id;
         short int		type;
         unsigned int	        offset;
     } vfuncoff_v1;
@@ -647,7 +688,7 @@ #endif
     {
         short int		id;
         short int		attribute;
-        short int		index;
+        short int		type;
         struct p_string         p_name;
     } nesttypeex_v1;
 
@@ -655,7 +696,7 @@ #endif
     {
         short int		id;
         short int		attribute;
-        unsigned int	        index;
+        unsigned int	        type;
         struct p_string         p_name;
     } nesttypeex_v2;
 
@@ -817,6 +858,10 @@ #define LF_STRUCTURE_V3         0x1505
 #define LF_UNION_V3             0x1506
 #define LF_ENUM_V3              0x1507
 #define LF_MEMBER_V3            0x150d
+#define LF_STMEMBER_V3          0x150e
+#define LF_METHOD_V3            0x150f
+#define LF_NESTTYPE_V3          0x1510
+#define LF_ONEMETHOD_V3         0x1511
 
 #define LF_NUMERIC              0x8000    /* numeric leaf types */
 #define LF_CHAR                 0x8000
@@ -960,6 +1005,26 @@ union codeview_symbol
 
     struct
     {
+        short int               len;
+        short int               id;
+        unsigned int            symtype;
+        unsigned int            offset;
+        unsigned short          segment;
+        struct p_string         p_name;
+    } public_v2;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned int            symtype;
+        unsigned int            offset;
+        unsigned short          segment;
+        char                    name[1];
+    } public_v3;
+
+    struct
+    {
 	short int	        len;	        /* Total length of this entry */
 	short int	        id;		/* Always S_BPREL_V1 */
 	unsigned int	        offset;	        /* Stack offset relative to BP */
@@ -1007,6 +1072,16 @@ union codeview_symbol
 
     struct
     {
+	short int	        len;	        /* Total length of this entry */
+	short int	        id;		/* Always S_REGISTER_V3 */
+        unsigned int            type;           /* check whether type & reg are correct */
+        unsigned short          reg;
+        char                    name[1];
+        /* don't handle register tracking */
+    } register_v3;
+
+    struct
+    {
         short int               len;
         short int               id;
         unsigned int            parent;
@@ -1120,7 +1195,7 @@ #endif
         short int               id;
         unsigned int            unknown;
         struct p_string         p_name;
-    } compile_v1;
+    } compiland_v1;
 
     struct
     {
@@ -1129,7 +1204,7 @@ #endif
         unsigned                unknown1[4];
         unsigned short          unknown2;
         struct p_string         p_name;
-    } compile_v2;
+    } compiland_v2;
 
     struct
     {
@@ -1137,7 +1212,7 @@ #endif
         short int               id;
         unsigned int            unknown;
         char                    name[1];
-    } compile_v3;
+    } compiland_v3;
 
     struct
     {
@@ -1148,7 +1223,7 @@ #endif
     } ssearch_v1;
 };
 
-#define S_COMPILE_V1    0x0001
+#define S_COMPILAND_V1  0x0001
 #define S_REGISTER_V1   0x0002
 #define S_CONSTANT_V1   0x0003
 #define S_UDT_V1        0x0004
@@ -1202,18 +1277,19 @@ #define S_GTHREAD_V2    0x100f
 #if 0
 #define S_XXXXXXXXX_32  0x1012  /* seems linked to a function, content unknown */
 #endif
-#define S_COMPILE_V2    0x1013
+#define S_COMPILAND_V2  0x1013
 
-#define S_COMPILE_V3    0x1101
+#define S_COMPILAND_V3  0x1101
 #define S_THUNK_V3      0x1102
 #define S_BLOCK_V3      0x1103
 #define S_LABEL_V3      0x1105
+#define S_REGISTER_V3   0x1106
 #define S_CONSTANT_V3   0x1107
 #define S_UDT_V3        0x1108
 #define S_BPREL_V3      0x110B
 #define S_LDATA_V3      0x110C
 #define S_GDATA_V3      0x110D
-#define S_PUB_DATA_V3   0x110E
+#define S_PUB_V3        0x110E
 #define S_LPROC_V3      0x110F
 #define S_GPROC_V3      0x1110
 #define S_MSTOOL_V3     0x1116  /* not really understood */



More information about the wine-patches mailing list