[PATCH v2] Fix WOW64 process system DLL paths

Simon Marchi simark@simark.ca
Tue Mar 24 22:10:27 GMT 2020


On 2020-03-24 3:23 p.m., Hannes Domani via Gdb-patches wrote:
> GetModuleFileNameEx returns for some DLLs of WOW64 processes
> the path inside the 64bit system directory instead of the 32bit
> syswow64 directory.
> 
> Problem happens e.g. with dbghelp.dll:
> 
> (gdb) start
> Temporary breakpoint 1 at 0x415a00: file fiber.cpp, line 430.
> Starting program: C:\src\tests\fiber.exe
> warning: `C:\Windows\system32\dbghelp.dll': Shared library architecture i386:x86-64 is not compatible with target architecture i386.
> 
> Temporary breakpoint 1, main () at fiber.cpp:430
> 430     {
> (gdb) info sharedlibrary
> From        To          Syms Read   Shared Object Library
> 0x77070000  0x771d4d20  Yes (*)     C:\Windows\SysWOW64\ntdll.dll
> 0x74dc0000  0x74ebad9c  Yes (*)     C:\Windows\syswow64\kernel32.dll
> 0x75341000  0x75386a18  Yes (*)     C:\Windows\syswow64\KernelBase.dll
> 0x6f6a1000  0x6f7c48fc  Yes (*)     C:\Windows\system32\dbghelp.dll
> 0x74d01000  0x74dab2c4  Yes (*)     C:\Windows\syswow64\msvcrt.dll
> (*): Shared library is missing debugging information.
> 
> This detects this situation and converts the DLL path to the
> syswow64 equivalent.
> 
> gdb/ChangeLog:
> 
> 2020-03-24  Hannes Domani  <ssbssa@yahoo.de>
> 
> 	* windows-nat.c (windows_add_all_dlls): Fix system dll paths.
> ---
> v2:
> - added error check with gdb_assert's
> - use std::string for newly assembled dll path

Thanks, this is ok.

Simon



More information about the Gdb-patches mailing list