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

Alexandre Julliard julliard at wine.codeweavers.com
Thu Aug 3 15:58:27 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: 820acf0901da4be07d5e347d9633de857f6534da
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=820acf0901da4be07d5e347d9633de857f6534da

Author: Eric Pouech <eric.pouech at wanadoo.fr>
Date:   Thu Aug  3 19:36:10 2006 +0200

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

---

 dlls/dbghelp/dwarf.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c
index 01250a5..a618986 100644
--- a/dlls/dbghelp/dwarf.c
+++ b/dlls/dbghelp/dwarf.c
@@ -1050,20 +1050,20 @@ static void dwarf2_parse_variable(dwarf2
                                   dwarf2_debug_info_t* di)
 {
     struct symt* param_type;
-    union attribute loc;
+    union attribute name, loc, value;
     BOOL is_pmt = di->abbrev->tag == DW_TAG_formal_parameter;
 
     TRACE("%s, for %s\n", dwarf2_debug_ctx(subpgm->ctx), dwarf2_debug_di(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 ext;
         long offset;
         int in_reg;
 
-        dwarf2_find_name(subpgm->ctx, di, &name, "parameter");
         offset = dwarf2_compute_location(subpgm->ctx, loc.block, &in_reg);
 	TRACE("found parameter %s/%ld (reg=%d) at %s\n",
               name.string, offset, in_reg, dwarf2_debug_ctx(subpgm->ctx));
@@ -1094,6 +1094,10 @@ static void dwarf2_parse_variable(dwarf2
             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)
         symt_add_function_signature_parameter(subpgm->ctx->module,
                                               (struct symt_function_signature*)subpgm->func->type,




More information about the wine-cvs mailing list