[PATCH 18/22] [DbgHelp]: dwarf & blocks

Eric Pouech eric.pouech at wanadoo.fr
Fri Nov 24 15:18:35 CST 2006


- correctly store the addresses of blocks (they are stored
  internally as offsets to the start of the function which
  embeds the block)

A+
---

 dlls/dbghelp/dwarf.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c
index 5fdf038..7dabc95 100644
--- a/dlls/dbghelp/dwarf.c
+++ b/dlls/dbghelp/dwarf.c
@@ -1354,7 +1354,8 @@ static void dwarf2_parse_inlined_subrout
     if (!dwarf2_find_attribute(subpgm->ctx, di, DW_AT_high_pc, &high_pc)) high_pc.u.uvalue = 0;
 
     block = symt_open_func_block(subpgm->ctx->module, subpgm->func, parent_block,
-                                 low_pc.u.uvalue, high_pc.u.uvalue - low_pc.u.uvalue);
+                                 subpgm->ctx->module->module.BaseOfImage + low_pc.u.uvalue - subpgm->func->address,
+                                 high_pc.u.uvalue - low_pc.u.uvalue);
 
     if (di->abbrev->have_child) /** any interest to not have child ? */
     {
@@ -1406,7 +1407,8 @@ static void dwarf2_parse_subprogram_bloc
         high_pc.u.uvalue = 0;
 
     block = symt_open_func_block(subpgm->ctx->module, subpgm->func, parent_block,
-                                 low_pc.u.uvalue, high_pc.u.uvalue - low_pc.u.uvalue);
+                                 subpgm->ctx->module->module.BaseOfImage + low_pc.u.uvalue - subpgm->func->address,
+                                 high_pc.u.uvalue - low_pc.u.uvalue);
 
     if (di->abbrev->have_child) /** any interest to not have child ? */
     {



More information about the wine-patches mailing list