[PATCH 00/18] Improves type management in WineDbg
Eric Pouech
eric.pouech at gmail.com
Wed Dec 8 07:43:37 CST 2021
The following series supercedes previous (v3) which has been partially
applied (contains non applied patches of (v3), plus a couple of
improvements)
This serie:
- improves WineDbg parsing (no more bison warnings)
- module scoping (in the form module!name) now allows wildcards in module
part
- get/set on integers is fully supported (even on bitfields, including
integral conversions)
- get/set on floats is fully supported (including float/double conversions)
- WineDbg now can access types from debuggee in its own expressions, as
well as pointer types to debuggee's type, even if the debuggee doesn't
provide them
- type definition can be explored (extending print command with type
eg. 'p HANDLE' gives 'typedef HANDLE => void*')
- implements DbgHelp.SymEnumTypeFromName(W)
- fixes a couple of bugs
A+
---
Eric Pouech (19):
programs/winedbg: let type_print_hex use dbg_lgint_t as its parameter type
programs/winedbg: rename print_longlong into print_sdecimal (to mimic print_hex)
programs/winedbg: revamp dbg_lvalue structure and add helpers for init
programs/winedbg: add bitfield capability to dbg_lvalue
programs/winedbg: move bitfield extraction to extract_lgint
dbghelp: in SymGetTypeInfo(), return the correct basetype for enums
programs/winedbg: add helper to compare types and use it to detect wrong assigments
programs/winedbg: add helper to transfer memory between lvalues
programs/winedbg: correctly store integers into a bitfield
programs/winedbg: remove fetch_float() method from CPU backends
programs/winedbg: implement proper assignements of floating point numbers
programs/winedbg: move C++ identifier detection in the lexer
programs/winedbg: move module scoping inside lexer
dbghelp: implement SymEnumTypesByName(W)
programs/winedbg: cache pointer type:s
programs/winedbg: move type lookup at parsing time for cast operation
programs/winedbg: added 'print type <TYPE>' command
programs/winedbg: only call HeapFree on rightfully obtained buffers
programs/winedbg: remove FORCE_DEREF expressions
dlls/dbghelp/dbghelp.spec | 4 +-
dlls/dbghelp/type.c | 119 ++++++++-
include/dbghelp.h | 2 +
programs/winedbg/be_arm.c | 18 --
programs/winedbg/be_arm64.c | 18 --
programs/winedbg/be_cpu.h | 3 -
programs/winedbg/be_i386.c | 18 --
programs/winedbg/be_x86_64.c | 18 --
programs/winedbg/break.c | 4 +-
programs/winedbg/dbg.y | 78 +++---
programs/winedbg/debug.l | 12 +-
programs/winedbg/debugger.h | 69 ++---
programs/winedbg/expr.c | 139 ++--------
programs/winedbg/expr.h | 1 -
programs/winedbg/memory.c | 161 +++++++++--
programs/winedbg/stack.c | 4 +-
programs/winedbg/symbol.c | 21 +-
programs/winedbg/types.c | 499 +++++++++++++++++++++++++----------
programs/winedbg/winedbg.c | 9 +-
19 files changed, 734 insertions(+), 463 deletions(-)
More information about the wine-devel
mailing list