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];
|
char name[1];
|
||||||
} compiland_v3;
|
} 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
|
struct
|
||||||
{
|
{
|
||||||
short int len;
|
short int len;
|
||||||
|
@ -1646,6 +1676,8 @@ union codeview_symbol
|
||||||
#define S_LPROC_V3 0x110F
|
#define S_LPROC_V3 0x110F
|
||||||
#define S_GPROC_V3 0x1110
|
#define S_GPROC_V3 0x1110
|
||||||
#define S_REGREL_V3 0x1111
|
#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_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_FUNC1_V3 0x1125 /* didn't get the difference between the two */
|
||||||
#define S_PUB_FUNC2_V3 0x1127
|
#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);
|
*(const unsigned*)((const char*)sym + 4), (const char*)sym + 8);
|
||||||
break;
|
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:
|
default:
|
||||||
printf(">>> Unsupported symbol-id %x sz=%d\n", sym->generic.id, sym->generic.len + 2);
|
printf(">>> Unsupported symbol-id %x sz=%d\n", sym->generic.id, sym->generic.len + 2);
|
||||||
dump_data((const void*)sym, sym->generic.len + 2, " ");
|
dump_data((const void*)sym, sym->generic.len + 2, " ");
|
||||||
|
|
Loading…
Reference in New Issue