[PATCH 00/10] Beefing up tests for dbghelp (v2)

Eric Pouech eric.pouech at gmail.com
Thu Jul 15 02:38:51 CDT 2021

The following series beefs up the tests about dbghelp DLL and fixes a
couple of bugs in dbghelp.

The idea is to have a set of files to get debug info from (debuggee*.*).

This is supported in two different ways:
A) to be compiled directly inside dbghelp_test: the default tools and options
   used in Wine will be covered (now: cross compile + dwarf version 2 debug
B) but also the ability to run the same tests on an external process + image
   (made mainly out of the debuggee*.* only files). The idea is of course
   to use different compilers, debug format, options, 32/64bit targets...
   Those alternate images **ARE NOT** part (for now) of winetest.

Unfortunately, with Winetest Bot, the A) won't work under windows: debug
format of dbghelp_test.exe is dwarf2, while native dbghelp doesn't support
it. So the tests are skipped. Anyway, most of the Windows setup:s don't
have native dbghelp.dll installed <g>, so that shouldn't change much.

I locally test every patch with:
- A) on 32bit Wine (mingw + dwarf2)
- A) on 64bit Wine (mingw + dwarf2)
- A) on Windows10 as PE64 (msc + pdb)
- B) image: mingw + dwarf2 + target=PE64bit + option -O1 on 64bit Wine
- B) image: mingw + dwarf2 + target=PE32bit + option -O1 on 32bit Wine
- B) image: ms compiler + pdb + target=PE64bit + option /O1 on 64 bit Wine

This serie will be continued with:
1) more tests (and more fixes) (around 20+ patches to come)
2) support of dwarf3 and 4 (around 70+ patches to come)

I also plan to add more local tests (dwarf3 and dwarf4; WoW; PE32 + pdb on
Wine, cross 32/64 bit between tester and debuggee, other options O2).

Changes introduced in v2:
- make sure that dbghelp_test.exe embedded as resource inside winetest.exe
  isn't stripped, so that on can access its debug information.
    tools/makedep.c is fixed accordingly.
  This should fix all the TestBot failures.
- the existing tests (before this series) for dbghelp, could somehow work
  when no debug information is available. Make sure we don't change this
  behavior (v1 was skipping those tests when no debug info is avail)



Eric Pouech (10):
      tools/makedep: added support for not stripping some test modules
      dbghelp/tests: Added dedicated structure to control the debuggee
      dbghelp/tests: Added ability to launch an external process instead of debugging self
      dbghelp/tests: Now properly getting base of main module inside debuggee structure
      dbghelp/tests: Added two new compilation units (debuggee1.c and debuggee2.c)
      dbghelp/tests: now building inside each debuggee a manifest
      dbghelp/tests: StackWalk64 testing now support external process
      dbghelp/tests: Added tests about getting symbol information
      dbghelp: returns name of compiland in SymGetTypeInfo
      dbghelp: handling of complex location in dwarf

 dlls/dbghelp/dwarf.c           |   1 -
 dlls/dbghelp/tests/Makefile.in |   4 +-
 dlls/dbghelp/tests/dbghelp.c   | 547 +++++++++++++++++++++++++++++++--
 dlls/dbghelp/tests/debuggee.h  |  30 ++
 dlls/dbghelp/tests/debuggee1.c | 115 +++++++
 dlls/dbghelp/tests/debuggee2.c |   7 +
 dlls/dbghelp/type.c            |   3 +-
 tools/makedep.c                |  11 +-
 8 files changed, 673 insertions(+), 45 deletions(-)
 create mode 100644 dlls/dbghelp/tests/debuggee.h
 create mode 100644 dlls/dbghelp/tests/debuggee1.c
 create mode 100644 dlls/dbghelp/tests/debuggee2.c

More information about the wine-devel mailing list