Eric Pouech : dbghelp/dwarf: In DW_AT_ranges, the values are relative to the start of the CU.
Module: wine Branch: master Commit: ab8fdb191c7fc3868decfa7d442898612bf9b4b3 URL: https://source.winehq.org/git/wine.git/?a=commit;h=ab8fdb191c7fc3868decfa7d4... Author: Eric Pouech <eric.pouech(a)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(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)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; }
participants (1)
-
Alexandre Julliard