Module: wine Branch: refs/heads/master Commit: 633ab584c1e5e3e3e2c077f9d2cdb2bc612055ce URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=633ab584c1e5e3e3e2c077f9...
Author: Eric Pouech eric.pouech@wanadoo.fr Date: Sat Mar 18 13:32:44 2006 +0100
dbghelp: MSC types.
- enforce the type records that can be accessed by symbols (these are anyway the high level ones)
---
dlls/dbghelp/msc.c | 26 +++++++++++++++++--------- 1 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/dlls/dbghelp/msc.c b/dlls/dbghelp/msc.c index 559d325..8e269c7 100644 --- a/dlls/dbghelp/msc.c +++ b/dlls/dbghelp/msc.c @@ -752,6 +752,23 @@ static int codeview_parse_type_table(str retv = TRUE; 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) { case LF_MODIFIER_V1: @@ -943,15 +960,6 @@ static int codeview_parse_type_table(str type->mfunction_v2.call); 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: FIXME("Unsupported type-id leaf %x\n", type->generic.id); dump(type, 2 + type->generic.len);