mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-06 16:45:48 +00:00
mscvpdb.h: Use official names for CodeView constants.
Signed-off-by: Mark Harmstone <mark@harmstone.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
0a366f7e4a
commit
e5c289f29d
|
@ -1609,57 +1609,57 @@ static BOOL codeview_snarf(const struct msc_debug_info* msc_dbg, const BYTE* roo
|
|||
* Global and local data symbols. We don't associate these
|
||||
* with any given source file.
|
||||
*/
|
||||
case S_GDATA_V1:
|
||||
case S_LDATA_V1:
|
||||
case S_GDATA32_16t:
|
||||
case S_LDATA32_16t:
|
||||
if (do_globals)
|
||||
codeview_add_variable(msc_dbg, compiland, terminate_string(&sym->data_v1.p_name),
|
||||
sym->data_v1.segment, sym->data_v1.offset, sym->data_v1.symtype,
|
||||
sym->generic.id == S_LDATA_V1, FALSE, TRUE);
|
||||
sym->generic.id == S_LDATA32_16t, FALSE, TRUE);
|
||||
break;
|
||||
case S_GDATA_V2:
|
||||
case S_LDATA_V2:
|
||||
case S_GDATA32_ST:
|
||||
case S_LDATA32_ST:
|
||||
if (do_globals)
|
||||
codeview_add_variable(msc_dbg, compiland, terminate_string(&sym->data_v2.p_name),
|
||||
sym->data_v2.segment, sym->data_v2.offset, sym->data_v2.symtype,
|
||||
sym->generic.id == S_LDATA_V2, FALSE, TRUE);
|
||||
sym->generic.id == S_LDATA32_ST, FALSE, TRUE);
|
||||
break;
|
||||
case S_GDATA_V3:
|
||||
case S_LDATA_V3:
|
||||
case S_GDATA32:
|
||||
case S_LDATA32:
|
||||
if (do_globals)
|
||||
codeview_add_variable(msc_dbg, compiland, sym->data_v3.name,
|
||||
sym->data_v3.segment, sym->data_v3.offset, sym->data_v3.symtype,
|
||||
sym->generic.id == S_LDATA_V3, FALSE, TRUE);
|
||||
sym->generic.id == S_LDATA32, FALSE, TRUE);
|
||||
break;
|
||||
|
||||
/* variables with thread storage */
|
||||
case S_GTHREAD_V1:
|
||||
case S_LTHREAD_V1:
|
||||
case S_GTHREAD32_16t:
|
||||
case S_LTHREAD32_16t:
|
||||
if (do_globals)
|
||||
codeview_add_variable(msc_dbg, compiland, terminate_string(&sym->thread_v1.p_name),
|
||||
sym->thread_v1.segment, sym->thread_v1.offset, sym->thread_v1.symtype,
|
||||
sym->generic.id == S_LTHREAD_V1, TRUE, TRUE);
|
||||
sym->generic.id == S_LTHREAD32_16t, TRUE, TRUE);
|
||||
break;
|
||||
case S_GTHREAD_V2:
|
||||
case S_LTHREAD_V2:
|
||||
case S_GTHREAD32_ST:
|
||||
case S_LTHREAD32_ST:
|
||||
if (do_globals)
|
||||
codeview_add_variable(msc_dbg, compiland, terminate_string(&sym->thread_v2.p_name),
|
||||
sym->thread_v2.segment, sym->thread_v2.offset, sym->thread_v2.symtype,
|
||||
sym->generic.id == S_LTHREAD_V2, TRUE, TRUE);
|
||||
sym->generic.id == S_LTHREAD32_ST, TRUE, TRUE);
|
||||
break;
|
||||
case S_GTHREAD_V3:
|
||||
case S_LTHREAD_V3:
|
||||
case S_GTHREAD32:
|
||||
case S_LTHREAD32:
|
||||
if (do_globals)
|
||||
codeview_add_variable(msc_dbg, compiland, sym->thread_v3.name,
|
||||
sym->thread_v3.segment, sym->thread_v3.offset, sym->thread_v3.symtype,
|
||||
sym->generic.id == S_LTHREAD_V3, TRUE, TRUE);
|
||||
sym->generic.id == S_LTHREAD32, TRUE, TRUE);
|
||||
break;
|
||||
|
||||
/* Public symbols */
|
||||
case S_PUB_V1:
|
||||
case S_PUB_V2:
|
||||
case S_PUB_V3:
|
||||
case S_PUB_FUNC1_V3:
|
||||
case S_PUB_FUNC2_V3:
|
||||
case S_PUB32_16t:
|
||||
case S_PUB32_ST:
|
||||
case S_PUB32:
|
||||
case S_PROCREF:
|
||||
case S_LPROCREF:
|
||||
/* will be handled later on in codeview_snarf_public */
|
||||
break;
|
||||
|
||||
|
@ -1668,13 +1668,13 @@ static BOOL codeview_snarf(const struct msc_debug_info* msc_dbg, const BYTE* roo
|
|||
* to a thunk, which is a stupid name for what amounts to
|
||||
* a PLT slot in the normal jargon that everyone else uses.
|
||||
*/
|
||||
case S_THUNK_V1:
|
||||
case S_THUNK32_ST:
|
||||
symt_new_thunk(msc_dbg->module, compiland,
|
||||
terminate_string(&sym->thunk_v1.p_name), sym->thunk_v1.thtype,
|
||||
codeview_get_address(msc_dbg, sym->thunk_v1.segment, sym->thunk_v1.offset),
|
||||
sym->thunk_v1.thunk_len);
|
||||
break;
|
||||
case S_THUNK_V3:
|
||||
case S_THUNK32:
|
||||
symt_new_thunk(msc_dbg->module, compiland,
|
||||
sym->thunk_v3.name, sym->thunk_v3.thtype,
|
||||
codeview_get_address(msc_dbg, sym->thunk_v3.segment, sym->thunk_v3.offset),
|
||||
|
@ -1684,8 +1684,8 @@ static BOOL codeview_snarf(const struct msc_debug_info* msc_dbg, const BYTE* roo
|
|||
/*
|
||||
* Global and static functions.
|
||||
*/
|
||||
case S_GPROC_V1:
|
||||
case S_LPROC_V1:
|
||||
case S_GPROC32_16t:
|
||||
case S_LPROC32_16t:
|
||||
if (curr_func) FIXME("nested function\n");
|
||||
curr_func = symt_new_function(msc_dbg->module, compiland,
|
||||
terminate_string(&sym->proc_v1.p_name),
|
||||
|
@ -1698,8 +1698,8 @@ static BOOL codeview_snarf(const struct msc_debug_info* msc_dbg, const BYTE* roo
|
|||
loc.offset = sym->proc_v1.debug_end;
|
||||
symt_add_function_point(msc_dbg->module, curr_func, SymTagFuncDebugEnd, &loc, NULL);
|
||||
break;
|
||||
case S_GPROC_V2:
|
||||
case S_LPROC_V2:
|
||||
case S_GPROC32_ST:
|
||||
case S_LPROC32_ST:
|
||||
if (curr_func) FIXME("nested function\n");
|
||||
curr_func = symt_new_function(msc_dbg->module, compiland,
|
||||
terminate_string(&sym->proc_v2.p_name),
|
||||
|
@ -1712,8 +1712,8 @@ static BOOL codeview_snarf(const struct msc_debug_info* msc_dbg, const BYTE* roo
|
|||
loc.offset = sym->proc_v2.debug_end;
|
||||
symt_add_function_point(msc_dbg->module, curr_func, SymTagFuncDebugEnd, &loc, NULL);
|
||||
break;
|
||||
case S_GPROC_V3:
|
||||
case S_LPROC_V3:
|
||||
case S_GPROC32:
|
||||
case S_LPROC32:
|
||||
if (curr_func) FIXME("nested function\n");
|
||||
curr_func = symt_new_function(msc_dbg->module, compiland,
|
||||
sym->proc_v3.name,
|
||||
|
@ -1729,40 +1729,40 @@ static BOOL codeview_snarf(const struct msc_debug_info* msc_dbg, const BYTE* roo
|
|||
/*
|
||||
* Function parameters and stack variables.
|
||||
*/
|
||||
case S_BPREL_V1:
|
||||
case S_BPREL32_16t:
|
||||
loc.kind = loc_regrel;
|
||||
/* Yes, it's i386 dependent, but that's the symbol purpose. S_REGREL is used on other CPUs */
|
||||
loc.reg = CV_REG_EBP;
|
||||
loc.offset = sym->stack_v1.offset;
|
||||
symt_add_func_local(msc_dbg->module, curr_func,
|
||||
sym->stack_v1.offset > 0 ? DataIsParam : DataIsLocal,
|
||||
symt_add_func_local(msc_dbg->module, curr_func,
|
||||
sym->stack_v1.offset > 0 ? DataIsParam : DataIsLocal,
|
||||
&loc, block,
|
||||
codeview_get_type(sym->stack_v1.symtype, FALSE),
|
||||
terminate_string(&sym->stack_v1.p_name));
|
||||
break;
|
||||
case S_BPREL_V2:
|
||||
case S_BPREL32_ST:
|
||||
loc.kind = loc_regrel;
|
||||
/* Yes, it's i386 dependent, but that's the symbol purpose. S_REGREL is used on other CPUs */
|
||||
loc.reg = CV_REG_EBP;
|
||||
loc.offset = sym->stack_v2.offset;
|
||||
symt_add_func_local(msc_dbg->module, curr_func,
|
||||
sym->stack_v2.offset > 0 ? DataIsParam : DataIsLocal,
|
||||
symt_add_func_local(msc_dbg->module, curr_func,
|
||||
sym->stack_v2.offset > 0 ? DataIsParam : DataIsLocal,
|
||||
&loc, block,
|
||||
codeview_get_type(sym->stack_v2.symtype, FALSE),
|
||||
terminate_string(&sym->stack_v2.p_name));
|
||||
break;
|
||||
case S_BPREL_V3:
|
||||
case S_BPREL32:
|
||||
loc.kind = loc_regrel;
|
||||
/* Yes, it's i386 dependent, but that's the symbol purpose. S_REGREL is used on other CPUs */
|
||||
loc.reg = CV_REG_EBP;
|
||||
loc.offset = sym->stack_v3.offset;
|
||||
symt_add_func_local(msc_dbg->module, curr_func,
|
||||
sym->stack_v3.offset > 0 ? DataIsParam : DataIsLocal,
|
||||
symt_add_func_local(msc_dbg->module, curr_func,
|
||||
sym->stack_v3.offset > 0 ? DataIsParam : DataIsLocal,
|
||||
&loc, block,
|
||||
codeview_get_type(sym->stack_v3.symtype, FALSE),
|
||||
sym->stack_v3.name);
|
||||
break;
|
||||
case S_REGREL_V3:
|
||||
case S_REGREL32:
|
||||
loc.kind = loc_regrel;
|
||||
loc.reg = sym->regrel_v3.reg;
|
||||
loc.offset = sym->regrel_v3.offset;
|
||||
|
@ -1774,25 +1774,25 @@ static BOOL codeview_snarf(const struct msc_debug_info* msc_dbg, const BYTE* roo
|
|||
sym->regrel_v3.name);
|
||||
break;
|
||||
|
||||
case S_REGISTER_V1:
|
||||
case S_REGISTER_16t:
|
||||
loc.kind = loc_register;
|
||||
loc.reg = sym->register_v1.reg;
|
||||
loc.offset = 0;
|
||||
symt_add_func_local(msc_dbg->module, curr_func,
|
||||
symt_add_func_local(msc_dbg->module, curr_func,
|
||||
DataIsLocal, &loc,
|
||||
block, codeview_get_type(sym->register_v1.type, FALSE),
|
||||
terminate_string(&sym->register_v1.p_name));
|
||||
break;
|
||||
case S_REGISTER_V2:
|
||||
case S_REGISTER_ST:
|
||||
loc.kind = loc_register;
|
||||
loc.reg = sym->register_v2.reg;
|
||||
loc.offset = 0;
|
||||
symt_add_func_local(msc_dbg->module, curr_func,
|
||||
symt_add_func_local(msc_dbg->module, curr_func,
|
||||
DataIsLocal, &loc,
|
||||
block, codeview_get_type(sym->register_v2.type, FALSE),
|
||||
terminate_string(&sym->register_v2.p_name));
|
||||
break;
|
||||
case S_REGISTER_V3:
|
||||
case S_REGISTER:
|
||||
loc.kind = loc_register;
|
||||
loc.reg = sym->register_v3.reg;
|
||||
loc.offset = 0;
|
||||
|
@ -1802,18 +1802,18 @@ static BOOL codeview_snarf(const struct msc_debug_info* msc_dbg, const BYTE* roo
|
|||
sym->register_v3.name);
|
||||
break;
|
||||
|
||||
case S_BLOCK_V1:
|
||||
block = symt_open_func_block(msc_dbg->module, curr_func, block,
|
||||
case S_BLOCK32_ST:
|
||||
block = symt_open_func_block(msc_dbg->module, curr_func, block,
|
||||
codeview_get_address(msc_dbg, sym->block_v1.segment, sym->block_v1.offset),
|
||||
sym->block_v1.length);
|
||||
break;
|
||||
case S_BLOCK_V3:
|
||||
block = symt_open_func_block(msc_dbg->module, curr_func, block,
|
||||
case S_BLOCK32:
|
||||
block = symt_open_func_block(msc_dbg->module, curr_func, block,
|
||||
codeview_get_address(msc_dbg, sym->block_v3.segment, sym->block_v3.offset),
|
||||
sym->block_v3.length);
|
||||
break;
|
||||
|
||||
case S_END_V1:
|
||||
case S_END:
|
||||
if (block)
|
||||
{
|
||||
block = symt_close_func_block(msc_dbg->module, curr_func, block, 0);
|
||||
|
@ -1825,12 +1825,12 @@ static BOOL codeview_snarf(const struct msc_debug_info* msc_dbg, const BYTE* roo
|
|||
}
|
||||
break;
|
||||
|
||||
case S_COMPILAND_V1:
|
||||
case S_COMPILE:
|
||||
TRACE("S-Compiland-V1 %x %s\n",
|
||||
sym->compiland_v1.unknown, terminate_string(&sym->compiland_v1.p_name));
|
||||
break;
|
||||
|
||||
case S_COMPILAND_V2:
|
||||
case S_COMPILE2_ST:
|
||||
TRACE("S-Compiland-V2 %s\n", terminate_string(&sym->compiland_v2.p_name));
|
||||
if (TRACE_ON(dbghelp_msc))
|
||||
{
|
||||
|
@ -1844,7 +1844,7 @@ static BOOL codeview_snarf(const struct msc_debug_info* msc_dbg, const BYTE* roo
|
|||
}
|
||||
}
|
||||
break;
|
||||
case S_COMPILAND_V3:
|
||||
case S_OBJNAME:
|
||||
TRACE("S-Compiland-V3 %s\n", sym->compiland_v3.name);
|
||||
if (TRACE_ON(dbghelp_msc))
|
||||
{
|
||||
|
@ -1859,14 +1859,14 @@ static BOOL codeview_snarf(const struct msc_debug_info* msc_dbg, const BYTE* roo
|
|||
}
|
||||
break;
|
||||
|
||||
case S_OBJNAME_V1:
|
||||
case S_OBJNAME_ST:
|
||||
TRACE("S-ObjName %s\n", terminate_string(&sym->objname_v1.p_name));
|
||||
compiland = symt_new_compiland(msc_dbg->module, 0 /* FIXME */,
|
||||
source_new(msc_dbg->module, NULL,
|
||||
terminate_string(&sym->objname_v1.p_name)));
|
||||
break;
|
||||
|
||||
case S_LABEL_V1:
|
||||
case S_LABEL32_ST:
|
||||
if (curr_func)
|
||||
{
|
||||
loc.kind = loc_absolute;
|
||||
|
@ -1878,19 +1878,19 @@ static BOOL codeview_snarf(const struct msc_debug_info* msc_dbg, const BYTE* roo
|
|||
terminate_string(&sym->label_v1.p_name),
|
||||
codeview_get_address(msc_dbg, sym->label_v1.segment, sym->label_v1.offset));
|
||||
break;
|
||||
case S_LABEL_V3:
|
||||
case S_LABEL32:
|
||||
if (curr_func)
|
||||
{
|
||||
loc.kind = loc_absolute;
|
||||
loc.offset = codeview_get_address(msc_dbg, sym->label_v3.segment, sym->label_v3.offset) - curr_func->address;
|
||||
symt_add_function_point(msc_dbg->module, curr_func, SymTagLabel,
|
||||
symt_add_function_point(msc_dbg->module, curr_func, SymTagLabel,
|
||||
&loc, sym->label_v3.name);
|
||||
}
|
||||
else symt_new_label(msc_dbg->module, compiland, sym->label_v3.name,
|
||||
codeview_get_address(msc_dbg, sym->label_v3.segment, sym->label_v3.offset));
|
||||
break;
|
||||
|
||||
case S_CONSTANT_V1:
|
||||
case S_CONSTANT_16t:
|
||||
{
|
||||
int vlen;
|
||||
const struct p_string* name;
|
||||
|
@ -1907,7 +1907,7 @@ static BOOL codeview_snarf(const struct msc_debug_info* msc_dbg, const BYTE* roo
|
|||
se, &v);
|
||||
}
|
||||
break;
|
||||
case S_CONSTANT_V2:
|
||||
case S_CONSTANT_ST:
|
||||
{
|
||||
int vlen;
|
||||
const struct p_string* name;
|
||||
|
@ -1924,7 +1924,7 @@ static BOOL codeview_snarf(const struct msc_debug_info* msc_dbg, const BYTE* roo
|
|||
se, &v);
|
||||
}
|
||||
break;
|
||||
case S_CONSTANT_V3:
|
||||
case S_CONSTANT:
|
||||
{
|
||||
int vlen;
|
||||
const char* name;
|
||||
|
@ -1942,35 +1942,35 @@ static BOOL codeview_snarf(const struct msc_debug_info* msc_dbg, const BYTE* roo
|
|||
}
|
||||
break;
|
||||
|
||||
case S_UDT_V1:
|
||||
case S_UDT_16t:
|
||||
if (sym->udt_v1.type)
|
||||
{
|
||||
if ((symt = codeview_get_type(sym->udt_v1.type, FALSE)))
|
||||
symt_new_typedef(msc_dbg->module, symt,
|
||||
symt_new_typedef(msc_dbg->module, symt,
|
||||
terminate_string(&sym->udt_v1.p_name));
|
||||
else
|
||||
FIXME("S-Udt %s: couldn't find type 0x%x\n",
|
||||
FIXME("S-Udt %s: couldn't find type 0x%x\n",
|
||||
terminate_string(&sym->udt_v1.p_name), sym->udt_v1.type);
|
||||
}
|
||||
break;
|
||||
case S_UDT_V2:
|
||||
case S_UDT_ST:
|
||||
if (sym->udt_v2.type)
|
||||
{
|
||||
if ((symt = codeview_get_type(sym->udt_v2.type, FALSE)))
|
||||
symt_new_typedef(msc_dbg->module, symt,
|
||||
symt_new_typedef(msc_dbg->module, symt,
|
||||
terminate_string(&sym->udt_v2.p_name));
|
||||
else
|
||||
FIXME("S-Udt %s: couldn't find type 0x%x\n",
|
||||
FIXME("S-Udt %s: couldn't find type 0x%x\n",
|
||||
terminate_string(&sym->udt_v2.p_name), sym->udt_v2.type);
|
||||
}
|
||||
break;
|
||||
case S_UDT_V3:
|
||||
case S_UDT:
|
||||
if (sym->udt_v3.type)
|
||||
{
|
||||
if ((symt = codeview_get_type(sym->udt_v3.type, FALSE)))
|
||||
symt_new_typedef(msc_dbg->module, symt, sym->udt_v3.name);
|
||||
else
|
||||
FIXME("S-Udt %s: couldn't find type 0x%x\n",
|
||||
FIXME("S-Udt %s: couldn't find type 0x%x\n",
|
||||
sym->udt_v3.name, sym->udt_v3.type);
|
||||
}
|
||||
break;
|
||||
|
@ -1980,9 +1980,9 @@ static BOOL codeview_snarf(const struct msc_debug_info* msc_dbg, const BYTE* roo
|
|||
* additional length-prefixed string which is *not* included
|
||||
* into the symbol length count. We need to skip it.
|
||||
*/
|
||||
case S_PROCREF_V1:
|
||||
case S_DATAREF_V1:
|
||||
case S_LPROCREF_V1:
|
||||
case S_PROCREF_ST:
|
||||
case S_DATAREF_ST:
|
||||
case S_LPROCREF_ST:
|
||||
{
|
||||
const char* name;
|
||||
|
||||
|
@ -1991,17 +1991,17 @@ static BOOL codeview_snarf(const struct msc_debug_info* msc_dbg, const BYTE* roo
|
|||
break;
|
||||
}
|
||||
|
||||
case S_MSTOOL_V3: /* just to silence a few warnings */
|
||||
case S_MSTOOLINFO_V3:
|
||||
case S_MSTOOLENV_V3:
|
||||
case S_COMPILE2: /* just to silence a few warnings */
|
||||
case S_COMPILE3:
|
||||
case S_ENVBLOCK:
|
||||
break;
|
||||
|
||||
case S_SSEARCH_V1:
|
||||
case S_SSEARCH:
|
||||
TRACE("Start search: seg=0x%x at offset 0x%08x\n",
|
||||
sym->ssearch_v1.segment, sym->ssearch_v1.offset);
|
||||
break;
|
||||
|
||||
case S_ALIGN_V1:
|
||||
case S_ALIGN:
|
||||
TRACE("S-Align V1\n");
|
||||
break;
|
||||
case S_HEAPALLOCSITE:
|
||||
|
@ -2012,17 +2012,17 @@ static BOOL codeview_snarf(const struct msc_debug_info* msc_dbg, const BYTE* roo
|
|||
|
||||
/* the symbols we can safely ignore for now */
|
||||
case S_TRAMPOLINE:
|
||||
case S_FRAMEINFO_V2:
|
||||
case S_SECUCOOKIE_V3:
|
||||
case S_SECTINFO_V3:
|
||||
case S_SUBSECTINFO_V3:
|
||||
case S_ENTRYPOINT_V3:
|
||||
case S_LOCAL_VS2013:
|
||||
case S_FRAMEPROC:
|
||||
case S_FRAMECOOKIE:
|
||||
case S_SECTION:
|
||||
case S_COFFGROUP:
|
||||
case S_EXPORT:
|
||||
case S_LOCAL:
|
||||
case S_CALLSITEINFO:
|
||||
case S_DEFRANGE_REGISTER:
|
||||
case S_DEFRANGE_FRAMEPOINTER_REL:
|
||||
case S_DEFRANGE_SUBFIELD_REGISTER:
|
||||
case S_FPOFF_VS2013:
|
||||
case S_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE:
|
||||
case S_DEFRANGE_REGISTER_REL:
|
||||
case S_BUILDINFO:
|
||||
case S_INLINESITE:
|
||||
|
@ -2065,7 +2065,7 @@ static BOOL codeview_snarf_public(const struct msc_debug_info* msc_dbg, const BY
|
|||
|
||||
switch (sym->generic.id)
|
||||
{
|
||||
case S_PUB_V1:
|
||||
case S_PUB32_16t:
|
||||
if (!(dbghelp_options & SYMOPT_NO_PUBLICS))
|
||||
{
|
||||
symt_new_public(msc_dbg->module, compiland,
|
||||
|
@ -2074,7 +2074,7 @@ static BOOL codeview_snarf_public(const struct msc_debug_info* msc_dbg, const BY
|
|||
codeview_get_address(msc_dbg, sym->public_v1.segment, sym->public_v1.offset), 1);
|
||||
}
|
||||
break;
|
||||
case S_PUB_V2:
|
||||
case S_PUB32_ST:
|
||||
if (!(dbghelp_options & SYMOPT_NO_PUBLICS))
|
||||
{
|
||||
symt_new_public(msc_dbg->module, compiland,
|
||||
|
@ -2084,7 +2084,7 @@ static BOOL codeview_snarf_public(const struct msc_debug_info* msc_dbg, const BY
|
|||
}
|
||||
break;
|
||||
|
||||
case S_PUB_V3:
|
||||
case S_PUB32:
|
||||
if (!(dbghelp_options & SYMOPT_NO_PUBLICS))
|
||||
{
|
||||
symt_new_public(msc_dbg->module, compiland,
|
||||
|
@ -2093,8 +2093,8 @@ static BOOL codeview_snarf_public(const struct msc_debug_info* msc_dbg, const BY
|
|||
codeview_get_address(msc_dbg, sym->public_v3.segment, sym->public_v3.offset), 1);
|
||||
}
|
||||
break;
|
||||
case S_PUB_FUNC1_V3:
|
||||
case S_PUB_FUNC2_V3: /* using a data_v3 isn't what we'd expect */
|
||||
case S_PROCREF:
|
||||
case S_LPROCREF: /* using a data_v3 isn't what we'd expect */
|
||||
#if 0
|
||||
/* FIXME: this is plain wrong (from a simple test) */
|
||||
if (!(dbghelp_options & SYMOPT_NO_PUBLICS))
|
||||
|
@ -2109,43 +2109,43 @@ static BOOL codeview_snarf_public(const struct msc_debug_info* msc_dbg, const BY
|
|||
* Global and local data symbols. We don't associate these
|
||||
* with any given source file.
|
||||
*/
|
||||
case S_GDATA_V1:
|
||||
case S_LDATA_V1:
|
||||
case S_GDATA32_16t:
|
||||
case S_LDATA32_16t:
|
||||
codeview_add_variable(msc_dbg, compiland, terminate_string(&sym->data_v1.p_name),
|
||||
sym->data_v1.segment, sym->data_v1.offset, sym->data_v1.symtype,
|
||||
sym->generic.id == S_LDATA_V1, FALSE, FALSE);
|
||||
sym->generic.id == S_LDATA32_16t, FALSE, FALSE);
|
||||
break;
|
||||
case S_GDATA_V2:
|
||||
case S_LDATA_V2:
|
||||
case S_GDATA32_ST:
|
||||
case S_LDATA32_ST:
|
||||
codeview_add_variable(msc_dbg, compiland, terminate_string(&sym->data_v2.p_name),
|
||||
sym->data_v2.segment, sym->data_v2.offset, sym->data_v2.symtype,
|
||||
sym->generic.id == S_LDATA_V2, FALSE, FALSE);
|
||||
sym->generic.id == S_LDATA32_ST, FALSE, FALSE);
|
||||
break;
|
||||
case S_GDATA_V3:
|
||||
case S_LDATA_V3:
|
||||
case S_GDATA32:
|
||||
case S_LDATA32:
|
||||
codeview_add_variable(msc_dbg, compiland, sym->data_v3.name,
|
||||
sym->data_v3.segment, sym->data_v3.offset, sym->data_v3.symtype,
|
||||
sym->generic.id == S_LDATA_V3, FALSE, FALSE);
|
||||
sym->generic.id == S_LDATA32, FALSE, FALSE);
|
||||
break;
|
||||
|
||||
/* variables with thread storage */
|
||||
case S_GTHREAD_V1:
|
||||
case S_LTHREAD_V1:
|
||||
case S_GTHREAD32_16t:
|
||||
case S_LTHREAD32_16t:
|
||||
codeview_add_variable(msc_dbg, compiland, terminate_string(&sym->thread_v1.p_name),
|
||||
sym->thread_v1.segment, sym->thread_v1.offset, sym->thread_v1.symtype,
|
||||
sym->generic.id == S_LTHREAD_V1, TRUE, FALSE);
|
||||
sym->generic.id == S_LTHREAD32_16t, TRUE, FALSE);
|
||||
break;
|
||||
case S_GTHREAD_V2:
|
||||
case S_LTHREAD_V2:
|
||||
case S_GTHREAD32_ST:
|
||||
case S_LTHREAD32_ST:
|
||||
codeview_add_variable(msc_dbg, compiland, terminate_string(&sym->thread_v2.p_name),
|
||||
sym->thread_v2.segment, sym->thread_v2.offset, sym->thread_v2.symtype,
|
||||
sym->generic.id == S_LTHREAD_V2, TRUE, FALSE);
|
||||
sym->generic.id == S_LTHREAD32_ST, TRUE, FALSE);
|
||||
break;
|
||||
case S_GTHREAD_V3:
|
||||
case S_LTHREAD_V3:
|
||||
case S_GTHREAD32:
|
||||
case S_LTHREAD32:
|
||||
codeview_add_variable(msc_dbg, compiland, sym->thread_v3.name,
|
||||
sym->thread_v3.segment, sym->thread_v3.offset, sym->thread_v3.symtype,
|
||||
sym->generic.id == S_LTHREAD_V3, TRUE, FALSE);
|
||||
sym->generic.id == S_LTHREAD32, TRUE, FALSE);
|
||||
break;
|
||||
|
||||
/*
|
||||
|
@ -2153,9 +2153,9 @@ static BOOL codeview_snarf_public(const struct msc_debug_info* msc_dbg, const BY
|
|||
* additional length-prefixed string which is *not* included
|
||||
* into the symbol length count. We need to skip it.
|
||||
*/
|
||||
case S_PROCREF_V1:
|
||||
case S_DATAREF_V1:
|
||||
case S_LPROCREF_V1:
|
||||
case S_PROCREF_ST:
|
||||
case S_DATAREF_ST:
|
||||
case S_LPROCREF_ST:
|
||||
length += (((const char*)sym)[length] + 1 + 3) & ~3;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -1388,7 +1388,7 @@ union codeview_symbol
|
|||
struct
|
||||
{
|
||||
short int len; /* Total length of this entry */
|
||||
short int id; /* Always S_BPREL_V1 */
|
||||
short int id; /* Always S_BPREL32_16t */
|
||||
unsigned int offset; /* Stack offset relative to BP */
|
||||
unsigned short symtype;
|
||||
struct p_string p_name;
|
||||
|
@ -1397,7 +1397,7 @@ union codeview_symbol
|
|||
struct
|
||||
{
|
||||
short int len; /* Total length of this entry */
|
||||
short int id; /* Always S_BPREL_V2 */
|
||||
short int id; /* Always S_BPREL32_ST */
|
||||
unsigned int offset; /* Stack offset relative to EBP */
|
||||
unsigned int symtype;
|
||||
struct p_string p_name;
|
||||
|
@ -1406,7 +1406,7 @@ union codeview_symbol
|
|||
struct
|
||||
{
|
||||
short int len; /* Total length of this entry */
|
||||
short int id; /* Always S_BPREL_V3 */
|
||||
short int id; /* Always S_BPREL32 */
|
||||
int offset; /* Stack offset relative to BP */
|
||||
unsigned int symtype;
|
||||
char name[1];
|
||||
|
@ -1415,7 +1415,7 @@ union codeview_symbol
|
|||
struct
|
||||
{
|
||||
short int len; /* Total length of this entry */
|
||||
short int id; /* Always S_BPREL_V3 */
|
||||
short int id; /* Always S_BPREL32 */
|
||||
int offset; /* Stack offset relative to BP */
|
||||
unsigned int symtype;
|
||||
unsigned short reg;
|
||||
|
@ -1435,7 +1435,7 @@ union codeview_symbol
|
|||
struct
|
||||
{
|
||||
short int len; /* Total length of this entry */
|
||||
short int id; /* Always S_REGISTER_V2 */
|
||||
short int id; /* Always S_REGISTER_ST */
|
||||
unsigned int type; /* check whether type & reg are correct */
|
||||
unsigned short reg;
|
||||
struct p_string p_name;
|
||||
|
@ -1445,7 +1445,7 @@ union codeview_symbol
|
|||
struct
|
||||
{
|
||||
short int len; /* Total length of this entry */
|
||||
short int id; /* Always S_REGISTER_V3 */
|
||||
short int id; /* Always S_REGISTER */
|
||||
unsigned int type; /* check whether type & reg are correct */
|
||||
unsigned short reg;
|
||||
char name[1];
|
||||
|
@ -1656,82 +1656,82 @@ union codeview_symbol
|
|||
} heap_alloc_site;
|
||||
};
|
||||
|
||||
#define S_COMPILAND_V1 0x0001
|
||||
#define S_REGISTER_V1 0x0002
|
||||
#define S_CONSTANT_V1 0x0003
|
||||
#define S_UDT_V1 0x0004
|
||||
#define S_SSEARCH_V1 0x0005
|
||||
#define S_END_V1 0x0006
|
||||
#define S_SKIP_V1 0x0007
|
||||
#define S_CVRESERVE_V1 0x0008
|
||||
#define S_OBJNAME_V1 0x0009
|
||||
#define S_ENDARG_V1 0x000a
|
||||
#define S_COBOLUDT_V1 0x000b
|
||||
#define S_MANYREG_V1 0x000c
|
||||
#define S_RETURN_V1 0x000d
|
||||
#define S_ENTRYTHIS_V1 0x000e
|
||||
#define S_COMPILE 0x0001
|
||||
#define S_REGISTER_16t 0x0002
|
||||
#define S_CONSTANT_16t 0x0003
|
||||
#define S_UDT_16t 0x0004
|
||||
#define S_SSEARCH 0x0005
|
||||
#define S_END 0x0006
|
||||
#define S_SKIP 0x0007
|
||||
#define S_CVRESERVE 0x0008
|
||||
#define S_OBJNAME_ST 0x0009
|
||||
#define S_ENDARG 0x000a
|
||||
#define S_COBOLUDT_16t 0x000b
|
||||
#define S_MANYREG_16t 0x000c
|
||||
#define S_RETURN 0x000d
|
||||
#define S_ENTRYTHIS 0x000e
|
||||
|
||||
#define S_BPREL_V1 0x0200
|
||||
#define S_LDATA_V1 0x0201
|
||||
#define S_GDATA_V1 0x0202
|
||||
#define S_PUB_V1 0x0203
|
||||
#define S_LPROC_V1 0x0204
|
||||
#define S_GPROC_V1 0x0205
|
||||
#define S_THUNK_V1 0x0206
|
||||
#define S_BLOCK_V1 0x0207
|
||||
#define S_WITH_V1 0x0208
|
||||
#define S_LABEL_V1 0x0209
|
||||
#define S_CEXMODEL_V1 0x020a
|
||||
#define S_VFTPATH_V1 0x020b
|
||||
#define S_REGREL_V1 0x020c
|
||||
#define S_LTHREAD_V1 0x020d
|
||||
#define S_GTHREAD_V1 0x020e
|
||||
#define S_BPREL32_16t 0x0200
|
||||
#define S_LDATA32_16t 0x0201
|
||||
#define S_GDATA32_16t 0x0202
|
||||
#define S_PUB32_16t 0x0203
|
||||
#define S_LPROC32_16t 0x0204
|
||||
#define S_GPROC32_16t 0x0205
|
||||
#define S_THUNK32_ST 0x0206
|
||||
#define S_BLOCK32_ST 0x0207
|
||||
#define S_WITH32_ST 0x0208
|
||||
#define S_LABEL32_ST 0x0209
|
||||
#define S_CEXMODEL32 0x020a
|
||||
#define S_VFTABLE32_16t 0x020b
|
||||
#define S_REGREL32_16t 0x020c
|
||||
#define S_LTHREAD32_16t 0x020d
|
||||
#define S_GTHREAD32_16t 0x020e
|
||||
|
||||
#define S_PROCREF_V1 0x0400
|
||||
#define S_DATAREF_V1 0x0401
|
||||
#define S_ALIGN_V1 0x0402
|
||||
#define S_LPROCREF_V1 0x0403
|
||||
#define S_PROCREF_ST 0x0400
|
||||
#define S_DATAREF_ST 0x0401
|
||||
#define S_ALIGN 0x0402
|
||||
#define S_LPROCREF_ST 0x0403
|
||||
|
||||
#define S_REGISTER_V2 0x1001 /* Variants with new 32-bit type indices */
|
||||
#define S_CONSTANT_V2 0x1002
|
||||
#define S_UDT_V2 0x1003
|
||||
#define S_COBOLUDT_V2 0x1004
|
||||
#define S_MANYREG_V2 0x1005
|
||||
#define S_BPREL_V2 0x1006
|
||||
#define S_LDATA_V2 0x1007
|
||||
#define S_GDATA_V2 0x1008
|
||||
#define S_PUB_V2 0x1009
|
||||
#define S_LPROC_V2 0x100a
|
||||
#define S_GPROC_V2 0x100b
|
||||
#define S_VFTTABLE_V2 0x100c
|
||||
#define S_REGREL_V2 0x100d
|
||||
#define S_LTHREAD_V2 0x100e
|
||||
#define S_GTHREAD_V2 0x100f
|
||||
#define S_FRAMEINFO_V2 0x1012
|
||||
#define S_COMPILAND_V2 0x1013
|
||||
#define S_REGISTER_ST 0x1001 /* Variants with new 32-bit type indices */
|
||||
#define S_CONSTANT_ST 0x1002
|
||||
#define S_UDT_ST 0x1003
|
||||
#define S_COBOLUDT_ST 0x1004
|
||||
#define S_MANYREG_ST 0x1005
|
||||
#define S_BPREL32_ST 0x1006
|
||||
#define S_LDATA32_ST 0x1007
|
||||
#define S_GDATA32_ST 0x1008
|
||||
#define S_PUB32_ST 0x1009
|
||||
#define S_LPROC32_ST 0x100a
|
||||
#define S_GPROC32_ST 0x100b
|
||||
#define S_VFTABLE32 0x100c
|
||||
#define S_REGREL32_ST 0x100d
|
||||
#define S_LTHREAD32_ST 0x100e
|
||||
#define S_GTHREAD32_ST 0x100f
|
||||
#define S_FRAMEPROC 0x1012
|
||||
#define S_COMPILE2_ST 0x1013
|
||||
|
||||
#define S_COMPILAND_V3 0x1101
|
||||
#define S_THUNK_V3 0x1102
|
||||
#define S_BLOCK_V3 0x1103
|
||||
#define S_WITH_V3 0x1104
|
||||
#define S_LABEL_V3 0x1105
|
||||
#define S_REGISTER_V3 0x1106
|
||||
#define S_CONSTANT_V3 0x1107
|
||||
#define S_UDT_V3 0x1108
|
||||
#define S_COBOLUDT_V3 0x1109
|
||||
#define S_MANYREG_V3 0x110A
|
||||
#define S_BPREL_V3 0x110B
|
||||
#define S_LDATA_V3 0x110C
|
||||
#define S_GDATA_V3 0x110D
|
||||
#define S_PUB_V3 0x110E
|
||||
#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_OBJNAME 0x1101
|
||||
#define S_THUNK32 0x1102
|
||||
#define S_BLOCK32 0x1103
|
||||
#define S_WITH32 0x1104
|
||||
#define S_LABEL32 0x1105
|
||||
#define S_REGISTER 0x1106
|
||||
#define S_CONSTANT 0x1107
|
||||
#define S_UDT 0x1108
|
||||
#define S_COBOLUDT 0x1109
|
||||
#define S_MANYREG 0x110A
|
||||
#define S_BPREL32 0x110B
|
||||
#define S_LDATA32 0x110C
|
||||
#define S_GDATA32 0x110D
|
||||
#define S_PUB32 0x110E
|
||||
#define S_LPROC32 0x110F
|
||||
#define S_GPROC32 0x1110
|
||||
#define S_REGREL32 0x1111
|
||||
#define S_LTHREAD32 0x1112
|
||||
#define S_GTHREAD32 0x1113
|
||||
#define S_LPROCMIPS 0x1114
|
||||
#define S_GPROCMIPS 0x1115
|
||||
#define S_MSTOOL_V3 0x1116 /* compiler command line options and build information */
|
||||
#define S_COMPILE2 0x1116 /* compiler command line options and build information */
|
||||
#define S_MANYREG2 0x1117
|
||||
#define S_LPROCIA64 0x1118
|
||||
#define S_GPROCIA64 0x1119
|
||||
|
@ -1746,9 +1746,9 @@ union codeview_symbol
|
|||
#define S_MANREGREL 0x1122
|
||||
#define S_MANMANYREG2 0x1123
|
||||
#define S_UNAMESPACE 0x1124
|
||||
#define S_PUB_FUNC1_V3 0x1125 /* didn't get the difference between the two */
|
||||
#define S_DATAREF_V3 0x1126
|
||||
#define S_PUB_FUNC2_V3 0x1127
|
||||
#define S_PROCREF 0x1125 /* didn't get the difference between the two */
|
||||
#define S_DATAREF 0x1126
|
||||
#define S_LPROCREF 0x1127
|
||||
#define S_ANNOTATIONREF 0x1128
|
||||
#define S_TOKENREF 0x1129
|
||||
#define S_GMANPROC 0x112A
|
||||
|
@ -1763,25 +1763,25 @@ union codeview_symbol
|
|||
#define S_LOCAL_2005 0x1133
|
||||
#define S_DEFRANGE_2005 0x1134
|
||||
#define S_DEFRANGE2_2005 0x1135
|
||||
#define S_SECTINFO_V3 0x1136
|
||||
#define S_SUBSECTINFO_V3 0x1137
|
||||
#define S_ENTRYPOINT_V3 0x1138
|
||||
#define S_SECTION 0x1136
|
||||
#define S_COFFGROUP 0x1137
|
||||
#define S_EXPORT 0x1138
|
||||
#define S_CALLSITEINFO 0x1139
|
||||
#define S_SECUCOOKIE_V3 0x113A
|
||||
#define S_FRAMECOOKIE 0x113A
|
||||
#define S_DISCARDED 0x113B
|
||||
#define S_MSTOOLINFO_V3 0x113C
|
||||
#define S_MSTOOLENV_V3 0x113D
|
||||
#define S_COMPILE3 0x113C
|
||||
#define S_ENVBLOCK 0x113D
|
||||
|
||||
#define S_LOCAL_VS2013 0x113E
|
||||
#define S_DEFRANGE_VS2013 0x113F
|
||||
#define S_LOCAL 0x113E
|
||||
#define S_DEFRANGE 0x113F
|
||||
#define S_DEFRANGE_SUBFIELD 0x1140
|
||||
#define S_DEFRANGE_REGISTER 0x1141
|
||||
#define S_DEFRANGE_FRAMEPOINTER_REL 0x1142
|
||||
#define S_DEFRANGE_SUBFIELD_REGISTER 0x1143
|
||||
#define S_FPOFF_VS2013 0x1144
|
||||
#define S_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE 0x1144
|
||||
#define S_DEFRANGE_REGISTER_REL 0x1145
|
||||
#define S_LPROC32_VS2013 0x1146
|
||||
#define S_GPROC32_VS2013 0x1147
|
||||
#define S_LPROC32_ID 0x1146
|
||||
#define S_GPROC32_ID 0x1147
|
||||
#define S_LPROCMIPS_ID 0x1148
|
||||
#define S_GPROCMIPS_ID 0x1149
|
||||
#define S_LPROCIA64_ID 0x114A
|
||||
|
|
|
@ -917,38 +917,38 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
|
|||
* Global and local data symbols. We don't associate these
|
||||
* with any given source file.
|
||||
*/
|
||||
case S_GDATA_V2:
|
||||
case S_LDATA_V2:
|
||||
case S_GDATA32_ST:
|
||||
case S_LDATA32_ST:
|
||||
printf("\tS-%s-Data V2 '%s' %04x:%08x type:%08x\n",
|
||||
sym->generic.id == S_GDATA_V2 ? "Global" : "Local",
|
||||
sym->generic.id == S_GDATA32_ST ? "Global" : "Local",
|
||||
get_symbol_str(p_string(&sym->data_v2.p_name)),
|
||||
sym->data_v2.segment, sym->data_v2.offset, sym->data_v2.symtype);
|
||||
break;
|
||||
|
||||
case S_LDATA_V3:
|
||||
case S_GDATA_V3:
|
||||
/* EPP case S_DATA_V3: */
|
||||
case S_LDATA32:
|
||||
case S_GDATA32:
|
||||
/* EPP case S_DATA32: */
|
||||
printf("\tS-%s-Data V3 '%s' (%04x:%08x) type:%08x\n",
|
||||
sym->generic.id == S_GDATA_V3 ? "Global" : "Local",
|
||||
sym->generic.id == S_GDATA32 ? "Global" : "Local",
|
||||
get_symbol_str(sym->data_v3.name),
|
||||
sym->data_v3.segment, sym->data_v3.offset,
|
||||
sym->data_v3.symtype);
|
||||
break;
|
||||
|
||||
case S_PUB_V2:
|
||||
case S_PUB32_ST:
|
||||
printf("\tS-Public V2 '%s' %04x:%08x type:%08x\n",
|
||||
get_symbol_str(p_string(&sym->public_v2.p_name)),
|
||||
sym->public_v2.segment, sym->public_v2.offset,
|
||||
sym->public_v2.symtype);
|
||||
break;
|
||||
|
||||
case S_PUB_V3:
|
||||
case S_PUB32:
|
||||
/* not completely sure of those two anyway */
|
||||
case S_PUB_FUNC1_V3:
|
||||
case S_PUB_FUNC2_V3:
|
||||
case S_PROCREF:
|
||||
case S_LPROCREF:
|
||||
printf("\tS-Public%s V3 '%s' %04x:%08x type:%08x\n",
|
||||
sym->generic.id == S_PUB_V3 ? "" :
|
||||
(sym->generic.id == S_PUB_FUNC1_V3 ? "<subkind1" : "<subkind2"),
|
||||
sym->generic.id == S_PUB32 ? "" :
|
||||
(sym->generic.id == S_PROCREF ? "<subkind1" : "<subkind2"),
|
||||
get_symbol_str(sym->public_v3.name),
|
||||
sym->public_v3.segment,
|
||||
sym->public_v3.offset, sym->public_v3.symtype);
|
||||
|
@ -959,16 +959,16 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
|
|||
* to a thunk, which is a stupid name for what amounts to
|
||||
* a PLT slot in the normal jargon that everyone else uses.
|
||||
*/
|
||||
case S_THUNK_V1:
|
||||
printf("\tS-Thunk V1 '%s' (%04x:%08x#%x) type:%x\n",
|
||||
case S_THUNK32_ST:
|
||||
printf("\tS-Thunk V1 '%s' (%04x:%08x#%x) type:%x\n",
|
||||
p_string(&sym->thunk_v1.p_name),
|
||||
sym->thunk_v1.segment, sym->thunk_v1.offset,
|
||||
sym->thunk_v1.thunk_len, sym->thunk_v1.thtype);
|
||||
curr_func = strdup(p_string(&sym->thunk_v1.p_name));
|
||||
break;
|
||||
|
||||
case S_THUNK_V3:
|
||||
printf("\tS-Thunk V3 '%s' (%04x:%08x#%x) type:%x\n",
|
||||
case S_THUNK32:
|
||||
printf("\tS-Thunk V3 '%s' (%04x:%08x#%x) type:%x\n",
|
||||
sym->thunk_v3.name,
|
||||
sym->thunk_v3.segment, sym->thunk_v3.offset,
|
||||
sym->thunk_v3.thunk_len, sym->thunk_v3.thtype);
|
||||
|
@ -976,10 +976,10 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
|
|||
break;
|
||||
|
||||
/* Global and static functions */
|
||||
case S_GPROC_V1:
|
||||
case S_LPROC_V1:
|
||||
case S_GPROC32_16t:
|
||||
case S_LPROC32_16t:
|
||||
printf("\tS-%s-Proc V1: '%s' (%04x:%08x#%x) type:%x attr:%x\n",
|
||||
sym->generic.id == S_GPROC_V1 ? "Global" : "-Local",
|
||||
sym->generic.id == S_GPROC32_16t ? "Global" : "-Local",
|
||||
p_string(&sym->proc_v1.p_name),
|
||||
sym->proc_v1.segment, sym->proc_v1.offset,
|
||||
sym->proc_v1.proc_len, sym->proc_v1.proctype,
|
||||
|
@ -997,10 +997,10 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
|
|||
/* EPP unsigned int next; */
|
||||
break;
|
||||
|
||||
case S_GPROC_V2:
|
||||
case S_LPROC_V2:
|
||||
case S_GPROC32_ST:
|
||||
case S_LPROC32_ST:
|
||||
printf("\tS-%s-Proc V2: '%s' (%04x:%08x#%x) type:%x attr:%x\n",
|
||||
sym->generic.id == S_GPROC_V2 ? "Global" : "-Local",
|
||||
sym->generic.id == S_GPROC32_ST ? "Global" : "-Local",
|
||||
p_string(&sym->proc_v2.p_name),
|
||||
sym->proc_v2.segment, sym->proc_v2.offset,
|
||||
sym->proc_v2.proc_len, sym->proc_v2.proctype,
|
||||
|
@ -1018,10 +1018,10 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
|
|||
/* EPP unsigned int next; */
|
||||
break;
|
||||
|
||||
case S_LPROC_V3:
|
||||
case S_GPROC_V3:
|
||||
case S_LPROC32:
|
||||
case S_GPROC32:
|
||||
printf("\tS-%s-Procedure V3 '%s' (%04x:%08x#%x) type:%x attr:%x\n",
|
||||
sym->generic.id == S_GPROC_V3 ? "Global" : "Local",
|
||||
sym->generic.id == S_GPROC32 ? "Global" : "Local",
|
||||
sym->proc_v3.name,
|
||||
sym->proc_v3.segment, sym->proc_v3.offset,
|
||||
sym->proc_v3.proc_len, sym->proc_v3.proctype,
|
||||
|
@ -1040,67 +1040,67 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
|
|||
break;
|
||||
|
||||
/* Function parameters and stack variables */
|
||||
case S_BPREL_V1:
|
||||
printf("\tS-BP-relative V1: '%s' @%d type:%x (%s)\n",
|
||||
case S_BPREL32_16t:
|
||||
printf("\tS-BP-relative V1: '%s' @%d type:%x (%s)\n",
|
||||
p_string(&sym->stack_v1.p_name),
|
||||
sym->stack_v1.offset, sym->stack_v1.symtype, curr_func);
|
||||
break;
|
||||
|
||||
case S_BPREL_V2:
|
||||
printf("\tS-BP-relative V2: '%s' @%d type:%x (%s)\n",
|
||||
case S_BPREL32_ST:
|
||||
printf("\tS-BP-relative V2: '%s' @%d type:%x (%s)\n",
|
||||
p_string(&sym->stack_v2.p_name),
|
||||
sym->stack_v2.offset, sym->stack_v2.symtype, curr_func);
|
||||
break;
|
||||
|
||||
case S_BPREL_V3:
|
||||
printf("\tS-BP-relative V3: '%s' @%d type:%x (in %s)\n",
|
||||
case S_BPREL32:
|
||||
printf("\tS-BP-relative V3: '%s' @%d type:%x (in %s)\n",
|
||||
sym->stack_v3.name, sym->stack_v3.offset,
|
||||
sym->stack_v3.symtype, curr_func);
|
||||
break;
|
||||
|
||||
case S_REGREL_V3:
|
||||
case S_REGREL32:
|
||||
printf("\tS-Reg-relative V3: '%s' @%d type:%x reg:%x (in %s)\n",
|
||||
sym->regrel_v3.name, sym->regrel_v3.offset,
|
||||
sym->regrel_v3.symtype, sym->regrel_v3.reg, curr_func);
|
||||
break;
|
||||
|
||||
case S_REGISTER_V1:
|
||||
case S_REGISTER_16t:
|
||||
printf("\tS-Register V1 '%s' in %s type:%x register:%x\n",
|
||||
p_string(&sym->register_v1.p_name),
|
||||
curr_func, sym->register_v1.reg, sym->register_v1.type);
|
||||
break;
|
||||
|
||||
case S_REGISTER_V2:
|
||||
case S_REGISTER_ST:
|
||||
printf("\tS-Register V2 '%s' in %s type:%x register:%x\n",
|
||||
p_string(&sym->register_v2.p_name),
|
||||
curr_func, sym->register_v2.reg, sym->register_v2.type);
|
||||
break;
|
||||
|
||||
case S_REGISTER_V3:
|
||||
case S_REGISTER:
|
||||
printf("\tS-Register V3 '%s' in %s type:%x register:%x\n",
|
||||
sym->register_v3.name,
|
||||
curr_func, sym->register_v3.reg, sym->register_v3.type);
|
||||
break;
|
||||
|
||||
case S_BLOCK_V1:
|
||||
case S_BLOCK32_ST:
|
||||
printf("\tS-Block V1 '%s' in '%s' (%04x:%08x#%08x)\n",
|
||||
p_string(&sym->block_v1.p_name),
|
||||
curr_func,
|
||||
curr_func,
|
||||
sym->block_v1.segment, sym->block_v1.offset,
|
||||
sym->block_v1.length);
|
||||
nest_block++;
|
||||
break;
|
||||
|
||||
case S_BLOCK_V3:
|
||||
case S_BLOCK32:
|
||||
printf("\tS-Block V3 '%s' in '%s' (%04x:%08x#%08x) parent:%u end:%x\n",
|
||||
sym->block_v3.name, curr_func,
|
||||
sym->block_v3.name, curr_func,
|
||||
sym->block_v3.segment, sym->block_v3.offset, sym->block_v3.length,
|
||||
sym->block_v3.parent, sym->block_v3.end);
|
||||
nest_block++;
|
||||
break;
|
||||
|
||||
/* Additional function information */
|
||||
case S_FRAMEINFO_V2:
|
||||
case S_FRAMEPROC:
|
||||
printf("\tS-Frame-Info V2: frame-size:%x unk2:%x unk3:%x saved-regs-sz:%x eh(%04x:%08x) flags:%08x\n",
|
||||
sym->frame_info_v2.sz_frame,
|
||||
sym->frame_info_v2.unknown2,
|
||||
|
@ -1111,12 +1111,12 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
|
|||
sym->frame_info_v2.flags);
|
||||
break;
|
||||
|
||||
case S_SECUCOOKIE_V3:
|
||||
case S_FRAMECOOKIE:
|
||||
printf("\tSecurity Cookie V3 @%d unk:%x\n",
|
||||
sym->security_cookie_v3.offset, sym->security_cookie_v3.unknown);
|
||||
break;
|
||||
|
||||
case S_END_V1:
|
||||
case S_END:
|
||||
if (nest_block)
|
||||
{
|
||||
nest_block--;
|
||||
|
@ -1130,7 +1130,7 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
|
|||
}
|
||||
break;
|
||||
|
||||
case S_COMPILAND_V1:
|
||||
case S_COMPILE:
|
||||
{
|
||||
const char* machine;
|
||||
const char* lang;
|
||||
|
@ -1176,7 +1176,7 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
|
|||
}
|
||||
break;
|
||||
|
||||
case S_COMPILAND_V2:
|
||||
case S_COMPILE2_ST:
|
||||
printf("\tS-Compiland V2 '%s'\n",
|
||||
p_string(&sym->compiland_v2.p_name));
|
||||
dump_data((const void*)sym, sym->generic.len + 2, " ");
|
||||
|
@ -1190,29 +1190,29 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
|
|||
}
|
||||
break;
|
||||
|
||||
case S_COMPILAND_V3:
|
||||
case S_OBJNAME:
|
||||
printf("\tS-Compiland V3 '%s' unknown:%x\n",
|
||||
sym->compiland_v3.name, sym->compiland_v3.unknown);
|
||||
break;
|
||||
|
||||
case S_OBJNAME_V1:
|
||||
case S_OBJNAME_ST:
|
||||
printf("\tS-ObjName V1 sig:%.4s '%s'\n",
|
||||
sym->objname_v1.signature, p_string(&sym->objname_v1.p_name));
|
||||
break;
|
||||
|
||||
case S_LABEL_V1:
|
||||
printf("\tS-Label V1 '%s' in '%s' (%04x:%08x)\n",
|
||||
p_string(&sym->label_v1.p_name),
|
||||
case S_LABEL32_ST:
|
||||
printf("\tS-Label V1 '%s' in '%s' (%04x:%08x)\n",
|
||||
p_string(&sym->label_v1.p_name),
|
||||
curr_func, sym->label_v1.segment, sym->label_v1.offset);
|
||||
break;
|
||||
|
||||
case S_LABEL_V3:
|
||||
printf("\tS-Label V3 '%s' in '%s' (%04x:%08x) flag:%x\n",
|
||||
case S_LABEL32:
|
||||
printf("\tS-Label V3 '%s' in '%s' (%04x:%08x) flag:%x\n",
|
||||
sym->label_v3.name, curr_func, sym->label_v3.segment,
|
||||
sym->label_v3.offset, sym->label_v3.flags);
|
||||
break;
|
||||
|
||||
case S_CONSTANT_V2:
|
||||
case S_CONSTANT_ST:
|
||||
{
|
||||
int vlen;
|
||||
struct full_value fv;
|
||||
|
@ -1224,7 +1224,7 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
|
|||
}
|
||||
break;
|
||||
|
||||
case S_CONSTANT_V3:
|
||||
case S_CONSTANT:
|
||||
{
|
||||
int vlen;
|
||||
struct full_value fv;
|
||||
|
@ -1236,17 +1236,17 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
|
|||
}
|
||||
break;
|
||||
|
||||
case S_UDT_V1:
|
||||
printf("\tS-Udt V1 '%s': type:0x%x\n",
|
||||
case S_UDT_16t:
|
||||
printf("\tS-Udt V1 '%s': type:0x%x\n",
|
||||
p_string(&sym->udt_v1.p_name), sym->udt_v1.type);
|
||||
break;
|
||||
|
||||
case S_UDT_V2:
|
||||
printf("\tS-Udt V2 '%s': type:0x%x\n",
|
||||
case S_UDT_ST:
|
||||
printf("\tS-Udt V2 '%s': type:0x%x\n",
|
||||
p_string(&sym->udt_v2.p_name), sym->udt_v2.type);
|
||||
break;
|
||||
|
||||
case S_UDT_V3:
|
||||
case S_UDT:
|
||||
printf("\tS-Udt V3 '%s': type:0x%x\n",
|
||||
sym->udt_v3.name, sym->udt_v3.type);
|
||||
break;
|
||||
|
@ -1255,11 +1255,11 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
|
|||
* additional length-prefixed string which is *not* included
|
||||
* into the symbol length count. We need to skip it.
|
||||
*/
|
||||
case S_PROCREF_V1:
|
||||
case S_PROCREF_ST:
|
||||
printf("\tS-Procref V1 "); goto doaref;
|
||||
case S_DATAREF_V1:
|
||||
case S_DATAREF_ST:
|
||||
printf("\tS-Dataref V1 "); goto doaref;
|
||||
case S_LPROCREF_V1:
|
||||
case S_LPROCREF_ST:
|
||||
printf("\tS-L-Procref V1 "); goto doaref;
|
||||
doaref:
|
||||
{
|
||||
|
@ -1272,7 +1272,7 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
|
|||
p_string(pname));
|
||||
}
|
||||
break;
|
||||
case S_MSTOOL_V3: /* info about tool used to create CU */
|
||||
case S_COMPILE2: /* info about tool used to create CU */
|
||||
{
|
||||
const unsigned short* ptr = ((const unsigned short*)sym) + 2;
|
||||
const char* x1;
|
||||
|
@ -1290,7 +1290,7 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
|
|||
}
|
||||
break;
|
||||
|
||||
case S_MSTOOLINFO_V3:
|
||||
case S_COMPILE3:
|
||||
{
|
||||
const unsigned short* ptr = ((const unsigned short*)sym) + 2;
|
||||
|
||||
|
@ -1302,7 +1302,7 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
|
|||
}
|
||||
break;
|
||||
|
||||
case S_MSTOOLENV_V3:
|
||||
case S_ENVBLOCK:
|
||||
{
|
||||
const char* x1 = (const char*)sym + 4 + 1;
|
||||
const char* x2;
|
||||
|
@ -1318,16 +1318,16 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
|
|||
}
|
||||
break;
|
||||
|
||||
case S_ALIGN_V1:
|
||||
case S_ALIGN:
|
||||
/* simply skip it */
|
||||
break;
|
||||
|
||||
case S_SSEARCH_V1:
|
||||
case S_SSEARCH:
|
||||
printf("\tSSearch V1: (%04x:%08x)\n",
|
||||
sym->ssearch_v1.segment, sym->ssearch_v1.offset);
|
||||
break;
|
||||
|
||||
case S_SECTINFO_V3:
|
||||
case S_SECTION:
|
||||
printf("\tSSection Info: seg=%04x ?=%04x rva=%08x size=%08x attr=%08x %s\n",
|
||||
*(const unsigned short*)((const char*)sym + 4),
|
||||
*(const unsigned short*)((const char*)sym + 6),
|
||||
|
@ -1337,7 +1337,7 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
|
|||
(const char*)sym + 20);
|
||||
break;
|
||||
|
||||
case S_SUBSECTINFO_V3:
|
||||
case S_COFFGROUP:
|
||||
printf("\tSSubSection Info: addr=%04x:%08x size=%08x attr=%08x %s\n",
|
||||
*(const unsigned short*)((const char*)sym + 16),
|
||||
*(const unsigned*)((const char*)sym + 12),
|
||||
|
@ -1346,31 +1346,31 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
|
|||
(const char*)sym + 18);
|
||||
break;
|
||||
|
||||
case S_ENTRYPOINT_V3:
|
||||
case S_EXPORT:
|
||||
printf("\tSEntryPoint: id=%x '%s'\n",
|
||||
*(const unsigned*)((const char*)sym + 4), (const char*)sym + 8);
|
||||
break;
|
||||
|
||||
case S_LTHREAD_V1:
|
||||
case S_GTHREAD_V1:
|
||||
case S_LTHREAD32_16t:
|
||||
case S_GTHREAD32_16t:
|
||||
printf("\tS-Thread %s Var V1 '%s' seg=%04x offset=%08x type=%x\n",
|
||||
sym->generic.id == S_LTHREAD_V1 ? "global" : "local",
|
||||
sym->generic.id == S_LTHREAD32_16t ? "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:
|
||||
case S_LTHREAD32_ST:
|
||||
case S_GTHREAD32_ST:
|
||||
printf("\tS-Thread %s Var V2 '%s' seg=%04x offset=%08x type=%x\n",
|
||||
sym->generic.id == S_LTHREAD_V2 ? "global" : "local",
|
||||
sym->generic.id == S_LTHREAD32_ST ? "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:
|
||||
case S_LTHREAD32:
|
||||
case S_GTHREAD32:
|
||||
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->generic.id == S_LTHREAD32 ? "global" : "local", sym->thread_v3.name,
|
||||
sym->thread_v3.segment, sym->thread_v3.offset, sym->thread_v3.symtype);
|
||||
break;
|
||||
|
||||
|
|
Loading…
Reference in a new issue