[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