Eric Pouech : winedump: Added definition and dumping of thread local variables.
Alexandre Julliard
julliard at winehq.org
Mon Jan 31 11:26:16 CST 2011
Module: wine
Branch: master
Commit: 5b4e192aca75d338181e6f262a0f39e1731e142a
URL: http://source.winehq.org/git/wine.git/?a=commit;h=5b4e192aca75d338181e6f262a0f39e1731e142a
Author: Eric Pouech <eric.pouech at orange.fr>
Date: Sat Jan 29 20:37:58 2011 +0100
winedump: Added definition and dumping of thread local variables.
---
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-cvs
mailing list