[PATCH 1/4] [WineDump]: added definition and dumping of thread local variables

Eric Pouech eric.pouech at orange.fr
Sat Jan 29 13:37:58 CST 2011




A+
---

 include/wine/mscvpdb.h |   32 ++++++++++++++++++++++++++++++++
 tools/winedump/msc.c   |   23 +++++++++++++++++++++++
 2 files changed, 55 insertions(+), 0 deletions(-)


diff --git a/include/wine/mscvpdb.h b/include/wine/mscvpdb.h
index e72bee5..4755c5a 100644
--- a/include/wine/mscvpdb.h
+++ b/include/wine/mscvpdb.h
@@ -1554,6 +1554,36 @@ union codeview_symbol
         short int               id;
         unsigned int            offset;
         unsigned short          segment;
+        unsigned short          symtype;
+        struct p_string         p_name;
+    } thread_v1;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned int            symtype;
+        unsigned int            offset;
+        unsigned short          segment;
+        struct p_string         p_name;
+    } thread_v2;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned int            symtype;
+        unsigned int            offset;
+        unsigned short          segment;
+        char                    name[1];
+    } thread_v3;
+
+    struct
+    {
+        short int               len;
+        short int               id;
+        unsigned int            offset;
+        unsigned short          segment;
     } ssearch_v1;
 
     struct
@@ -1646,6 +1676,8 @@ union codeview_symbol
 #define S_LPROC_V3      0x110F
 #define S_GPROC_V3      0x1110
 #define S_REGREL_V3     0x1111
+#define S_LTHREAD_V3    0x1112
+#define S_GTHREAD_V3    0x1113
 #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 5b276fb..950eb59 100644
--- a/tools/winedump/msc.c
+++ b/tools/winedump/msc.c
@@ -1352,6 +1352,29 @@ int codeview_dump_symbols(const void* root, unsigned long size)
                    *(const unsigned*)((const char*)sym + 4), (const char*)sym + 8);
             break;
 
+        case S_LTHREAD_V1:
+        case S_GTHREAD_V1:
+            printf("\tS-Thread %s Var V1 '%s' seg=%04x offset=%08x type=%x\n",
+                   sym->generic.id == S_LTHREAD_V1 ? "global" : "local",
+                   p_string(&sym->thread_v1.p_name),
+                   sym->thread_v1.segment, sym->thread_v1.offset, sym->thread_v1.symtype);
+            break;
+
+        case S_LTHREAD_V2:
+        case S_GTHREAD_V2:
+            printf("\tS-Thread %s Var V2 '%s' seg=%04x offset=%08x type=%x\n",
+                   sym->generic.id == S_LTHREAD_V2 ? "global" : "local",
+                   p_string(&sym->thread_v2.p_name),
+                   sym->thread_v2.segment, sym->thread_v2.offset, sym->thread_v2.symtype);
+            break;
+
+        case S_LTHREAD_V3:
+        case S_GTHREAD_V3:
+            printf("\tS-Thread %s Var V3 '%s' seg=%04x offset=%08x type=%x\n",
+                   sym->generic.id == S_LTHREAD_V3 ? "global" : "local", sym->thread_v3.name,
+                   sym->thread_v3.segment, sym->thread_v3.offset, sym->thread_v3.symtype);
+            break;
+
         default:
             printf(">>> Unsupported symbol-id %x sz=%d\n", sym->generic.id, sym->generic.len + 2);
             dump_data((const void*)sym, sym->generic.len + 2, "  ");




More information about the wine-patches mailing list