winedump: Added definition and dumping of thread local variables.
This commit is contained in:
parent
321e4c0eec
commit
5b4e192aca
|
@ -1548,6 +1548,36 @@ union codeview_symbol
|
|||
char name[1];
|
||||
} compiland_v3;
|
||||
|
||||
struct
|
||||
{
|
||||
short int len;
|
||||
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;
|
||||
|
@ -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
|
||||
|
|
|
@ -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, " ");
|
||||
|
|
Loading…
Reference in New Issue