Eric Pouech : dbghelp: MSC types.
Alexandre Julliard
julliard at wine.codeweavers.com
Sat Mar 18 12:51:15 CST 2006
Module: wine
Branch: refs/heads/master
Commit: 633ab584c1e5e3e3e2c077f9d2cdb2bc612055ce
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=633ab584c1e5e3e3e2c077f9d2cdb2bc612055ce
Author: Eric Pouech <eric.pouech at 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);
More information about the wine-cvs
mailing list