[PATCH 10/10] dbghelp: handling of complex location in dwarf

Eric Pouech eric.pouech at gmail.com
Thu Jul 15 02:40:39 CDT 2021


Don't recompute the location when we need to store a location block for
later recomputation.

It had also the bad side effect of letting the location to be absolute,
which wasn't expected at all.

Signed-off-by: Eric Pouech <eric.pouech at gmail.com>

---
 dlls/dbghelp/dwarf.c         |    1 -
 dlls/dbghelp/tests/dbghelp.c |    2 --
 2 files changed, 3 deletions(-)

diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c
index 53274c4f597..a4f426ca6a0 100644
--- a/dlls/dbghelp/dwarf.c
+++ b/dlls/dbghelp/dwarf.c
@@ -930,7 +930,6 @@ static BOOL dwarf2_compute_location_attr(dwarf2_parse_context_t* ctx,
             *ptr = xloc.u.block.size;
             memcpy(ptr + 1, xloc.u.block.ptr, xloc.u.block.size);
             loc->offset = (ULONG_PTR)ptr;
-            compute_location(ctx->module, &lctx, loc, NULL, frame);
         }
     }
     return TRUE;
diff --git a/dlls/dbghelp/tests/dbghelp.c b/dlls/dbghelp/tests/dbghelp.c
index 13b19ef8b9d..4f2ecfb0281 100644
--- a/dlls/dbghelp/tests/dbghelp.c
+++ b/dlls/dbghelp/tests/dbghelp.c
@@ -354,7 +354,6 @@ static void test_symbols(const struct debuggee* dbg)
         BOOL labelfound = FALSE;
 
         /* 4 made of: 2 parameters, one local, one label */
-        todo_wine_if(sizeof(void*)==4)
         ok(tfp->Count >= 4, "Wrong number of parameters+local variables' type %u\n", tfp->Count);
 
         /* there are other children than parameters / local variables, so need to lookup */
@@ -407,7 +406,6 @@ static void test_symbols(const struct debuggee* dbg)
                     break;
                 }
             }
-            if (!found) todo_wine
             ok(found, "Couldn't find local variable/parameter %ls\n", locpmts[j].name);
         }
         ok(labelfound, "Couldn't find the label scaramouche\n");




More information about the wine-devel mailing list