dbghelp: Properly handle variable with const value (ie without location) in dwarf code.

This commit is contained in:
Eric Pouech 2006-08-03 19:36:10 +02:00 committed by Alexandre Julliard
parent 2f4072740e
commit 820acf0901
1 changed files with 7 additions and 3 deletions

View File

@ -1050,20 +1050,20 @@ static void dwarf2_parse_variable(dwarf2_subprogram_t* subpgm,
dwarf2_debug_info_t* di) dwarf2_debug_info_t* di)
{ {
struct symt* param_type; struct symt* param_type;
union attribute loc; union attribute name, loc, value;
BOOL is_pmt = di->abbrev->tag == DW_TAG_formal_parameter; BOOL is_pmt = di->abbrev->tag == DW_TAG_formal_parameter;
TRACE("%s, for %s\n", dwarf2_debug_ctx(subpgm->ctx), dwarf2_debug_di(di)); TRACE("%s, for %s\n", dwarf2_debug_ctx(subpgm->ctx), dwarf2_debug_di(di));
param_type = dwarf2_lookup_type(subpgm->ctx, di); param_type = dwarf2_lookup_type(subpgm->ctx, di);
if (dwarf2_find_attribute(di, DW_AT_location, &loc)) dwarf2_find_name(subpgm->ctx, di, &name, "parameter");
if (dwarf2_find_attribute(di, DW_AT_location, &loc) && loc.block)
{ {
union attribute name; union attribute name;
union attribute ext; union attribute ext;
long offset; long offset;
int in_reg; int in_reg;
dwarf2_find_name(subpgm->ctx, di, &name, "parameter");
offset = dwarf2_compute_location(subpgm->ctx, loc.block, &in_reg); offset = dwarf2_compute_location(subpgm->ctx, loc.block, &in_reg);
TRACE("found parameter %s/%ld (reg=%d) at %s\n", TRACE("found parameter %s/%ld (reg=%d) at %s\n",
name.string, offset, in_reg, dwarf2_debug_ctx(subpgm->ctx)); name.string, offset, in_reg, dwarf2_debug_ctx(subpgm->ctx));
@ -1094,6 +1094,10 @@ static void dwarf2_parse_variable(dwarf2_subprogram_t* subpgm,
break; break;
} }
} }
if (dwarf2_find_attribute(di, DW_AT_const_value, &value))
{
FIXME("NIY (const value %08lx for %s\n", value.uvalue, name.string);
}
if (is_pmt && subpgm->func && subpgm->func->type) if (is_pmt && subpgm->func && subpgm->func->type)
symt_add_function_signature_parameter(subpgm->ctx->module, symt_add_function_signature_parameter(subpgm->ctx->module,
(struct symt_function_signature*)subpgm->func->type, (struct symt_function_signature*)subpgm->func->type,