[PATCH] [WineDbg]: in 'info locals' command, show the full register/stack layout for parameters & locals

Eric Pouech eric.pouech at orange.fr
Sun Jun 24 06:03:09 CDT 2012




A+
---

 programs/winedbg/symbol.c |   11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)


diff --git a/programs/winedbg/symbol.c b/programs/winedbg/symbol.c
index 8d7af5d..99b382d 100644
--- a/programs/winedbg/symbol.c
+++ b/programs/winedbg/symbol.c
@@ -81,11 +81,20 @@ static BOOL fill_sym_lvalue(const SYMBOL_INFO* sym, ULONG_PTR base,
     else if (sym->Flags & SYMFLAG_REGREL)
     {
         DWORD_PTR* pval;
+        size_t  l;
 
+        *buffer++ = '['; sz--;
         if (!memory_get_register(sym->Register, &pval, buffer, sz))
             return FALSE;
+        l = strlen(buffer);
+        sz -= l;
+        buffer += l;
         lvalue->cookie = DLV_TARGET;
         lvalue->addr.Offset = (ULONG64)*pval + sym->Address;
+        if ((LONG_PTR)sym->Address >= 0)
+            snprintf(buffer, sz, "+%ld]", (ULONG_PTR)sym->Address);
+        else
+            snprintf(buffer, sz, "-%ld]", -(LONG_PTR)sym->Address);
     }
     else if (sym->Flags & SYMFLAG_VALUEPRESENT)
     {
@@ -711,7 +720,7 @@ void symbol_print_local(const SYMBOL_INFO* sym, DWORD_PTR base, BOOL detailed)
     {
         print_value(&lvalue, 0, 1);
         if (detailed)
-            dbg_printf(" (%s%s)",
+            dbg_printf(" (%s %s)",
                        (sym->Flags & SYMFLAG_PARAMETER) ? "parameter" : "local",
                        buffer);
     }




More information about the wine-patches mailing list