Module: wine Branch: master Commit: a575351b3019ad86628c8325af62920b75c5d2a4 URL: http://source.winehq.org/git/wine.git/?a=commit;h=a575351b3019ad86628c8325af...
Author: Eric Pouech eric.pouech@orange.fr Date: Tue Mar 8 21:31:20 2011 +0100
dbghelp: Add support for parsing methods (in C++ classes) for dwarf debug format.
---
dlls/dbghelp/dwarf.c | 13 +++++++++++-- 1 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c index 4e72a5c..343c54b 100644 --- a/dlls/dbghelp/dwarf.c +++ b/dlls/dbghelp/dwarf.c @@ -1377,6 +1377,9 @@ static void dwarf2_parse_udt_member(dwarf2_parse_context_t* ctx, if (dwarf2_get_di_children(ctx, di)) FIXME("Unsupported children\n"); }
+static struct symt* dwarf2_parse_subprogram(dwarf2_parse_context_t* ctx, + dwarf2_debug_info_t* di); + static struct symt* dwarf2_parse_udt_type(dwarf2_parse_context_t* ctx, dwarf2_debug_info_t* di, enum UdtKind udt) @@ -1411,13 +1414,15 @@ static struct symt* dwarf2_parse_udt_type(dwarf2_parse_context_t* ctx, case DW_TAG_enumeration_type: dwarf2_parse_enumeration_type(ctx, child); break; + case DW_TAG_subprogram: + dwarf2_parse_subprogram(ctx, child); + break; case DW_TAG_structure_type: case DW_TAG_class_type: case DW_TAG_union_type: case DW_TAG_typedef: /* FIXME: we need to handle nested udt definitions */ case DW_TAG_inheritance: - case DW_TAG_subprogram: case DW_TAG_template_type_param: case DW_TAG_template_value_param: case DW_TAG_variable: @@ -1860,7 +1865,11 @@ static struct symt* dwarf2_parse_subprogram(dwarf2_parse_context_t* ctx, &sig_type->symt); di->symt = &subpgm.func->symt; } - else subpgm.func = NULL; + else + { + WARN("no location for '%s::%s'\n", ctx->name_space, name.u.string); + subpgm.func = NULL; + }
subpgm.ctx = ctx; if (!dwarf2_compute_location_attr(ctx, di, DW_AT_frame_base,