[PATCH v3 00/17] WineDbg enhance set/get operations on integers & floats

Eric Pouech eric.pouech at gmail.com
Tue Dec 7 11:45:14 CST 2021


With this series:
- all expression computations inside WineDbg are done with largest
  available integer (64bit currently)
- improved reading / writing integers (esp. on bit fields or different
  sizes)
- implemented writing floats & doubles (including conversion when needed)
- improved detection of incompatible types in assigment
- code simplification (removed methods for managing floats and integers)

v2 -> v3:
- renamed where bit field in struct dbg_lvalue into in_debuggee (and
  removed associated helper)
- removed unused dbg_print_udecimal

v1 -> v2:
- no change to basic types (esp. long) (new internal type int64 has been
  added)
- removed console related patch (some more testing required)

there will be another serie after this one that will better integrate
debuggee's generated types (but requires a bit of reworking in WineDbg
parser that would be too large here)

A+

---

Eric Pouech (17):
      programs/winedbg: don't pretend all dbg_internal_var instances will hold DWORD_PTR
      programs/winedbg: let savable variables' size be a DWORD
      programs/winedbg: set pid and tid internal variables' type to be a DWORD
      programs/winedbg: introduce dbg_lg(u)int_t and migrate all integral computations on this type
      programs/winedbg: remove methods for fetching/storing integers in CPU backends
      programs/winedbg: renamed extract_longlong() into extract_lgint() for clarity
      programs/winedbg: split print_longlong into print_(s|u)decimal (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: don't hard code sizes


 dlls/dbghelp/type.c           |   3 +-
 programs/winedbg/be_arm.c     |  82 +++--------
 programs/winedbg/be_arm64.c   | 118 +++++----------
 programs/winedbg/be_cpu.h     |   7 -
 programs/winedbg/be_i386.c    | 150 +++++++------------
 programs/winedbg/be_x86_64.c  | 196 ++++++++++---------------
 programs/winedbg/break.c      |   4 +-
 programs/winedbg/dbg.y        |   6 +-
 programs/winedbg/debug.l      |   8 +-
 programs/winedbg/debugger.h   |  75 +++++++---
 programs/winedbg/expr.c       |  82 ++++-------
 programs/winedbg/memory.c     | 192 ++++++++++++++++++++----
 programs/winedbg/stack.c      |   6 +-
 programs/winedbg/symbol.c     |  21 +--
 programs/winedbg/tgt_active.c |   6 +-
 programs/winedbg/types.c      | 268 ++++++++++++++++++++++++++--------
 programs/winedbg/winedbg.c    |  14 +-
 17 files changed, 663 insertions(+), 575 deletions(-)




More information about the wine-devel mailing list