Eric Pouech : dbghelp/dwarf: In DW_AT_ranges, the values are relative to the start of the CU.

Alexandre Julliard julliard at winehq.org
Tue Sep 21 15:59:03 CDT 2021


Module: wine
Branch: master
Commit: ab8fdb191c7fc3868decfa7d442898612bf9b4b3
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=ab8fdb191c7fc3868decfa7d442898612bf9b4b3

Author: Eric Pouech <eric.pouech at gmail.com>
Date:   Tue Sep 21 07:59:48 2021 +0200

dbghelp/dwarf: In DW_AT_ranges, the values are relative to the start of the CU.

And not the module, as most of the other addresses.

Signed-off-by: Eric Pouech <eric.pouech at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/dbghelp/dwarf.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c
index f67efc43993..3009dead905 100644
--- a/dlls/dbghelp/dwarf.c
+++ b/dlls/dbghelp/dwarf.c
@@ -1222,6 +1222,9 @@ static BOOL dwarf2_read_range(dwarf2_parse_context_t* ctx, const dwarf2_debug_in
             high = dwarf2_parse_addr_head(&traverse, &ctx->head);
             if (low == 0 && high == 0) break;
             if (low == ULONG_MAX) FIXME("unsupported yet (base address selection)\n");
+            /* range values are relative to start of compilation unit */
+            low += ctx->compiland->address - ctx->module_ctx->load_offset;
+            high += ctx->compiland->address - ctx->module_ctx->load_offset;
             if (low  < *plow)  *plow = low;
             if (high > *phigh) *phigh = high;
         }




More information about the wine-cvs mailing list