dbghelp: MSC types.
- enforce the type records that can be accessed by symbols (these are anyway the high level ones)
This commit is contained in:
parent
68a0ca7418
commit
633ab584c1
|
@ -752,6 +752,23 @@ static int codeview_parse_type_table(struct module* module, const BYTE* table,
|
||||||
retv = TRUE;
|
retv = TRUE;
|
||||||
type = (const union codeview_type*)(table + offset[curr_type - 0x1000]);
|
type = (const union codeview_type*)(table + offset[curr_type - 0x1000]);
|
||||||
|
|
||||||
|
/* type records we're interested in are the ones referenced by symbols
|
||||||
|
* The known ranges are (X mark the ones we want):
|
||||||
|
* X 0000-0016 for V1 types
|
||||||
|
* 0200-020c for V1 types referenced by other types
|
||||||
|
* 0400-040f for V1 types (complex lists & sets)
|
||||||
|
* X 1000-100f for V2 types
|
||||||
|
* 1200-120c for V2 types referenced by other types
|
||||||
|
* 1400-140f for V1 types (complex lists & sets)
|
||||||
|
* X 1500-150d for V3 types
|
||||||
|
* 8000-8010 for numeric leafes
|
||||||
|
*/
|
||||||
|
if ((type->generic.id & 0x8600) &&
|
||||||
|
type->generic.id != LF_BITFIELD_V1 && /* still some cases to fix */
|
||||||
|
type->generic.id != LF_BITFIELD_V2 &&
|
||||||
|
type->generic.id != LF_FIELDLIST_V1 &&
|
||||||
|
type->generic.id != LF_FIELDLIST_V2)
|
||||||
|
continue;
|
||||||
switch (type->generic.id)
|
switch (type->generic.id)
|
||||||
{
|
{
|
||||||
case LF_MODIFIER_V1:
|
case LF_MODIFIER_V1:
|
||||||
|
@ -943,15 +960,6 @@ static int codeview_parse_type_table(struct module* module, const BYTE* table,
|
||||||
type->mfunction_v2.call);
|
type->mfunction_v2.call);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LF_ARGLIST_V1:
|
|
||||||
case LF_ARGLIST_V2:
|
|
||||||
{
|
|
||||||
static int once;
|
|
||||||
if (!once++)
|
|
||||||
FIXME("Not adding parameters' types to function signature\n");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
FIXME("Unsupported type-id leaf %x\n", type->generic.id);
|
FIXME("Unsupported type-id leaf %x\n", type->generic.id);
|
||||||
dump(type, 2 + type->generic.len);
|
dump(type, 2 + type->generic.len);
|
||||||
|
|
Loading…
Reference in New Issue