From: Hannes Domani <ssbssa@yahoo.de>
To: Gdb-patches <gdb-patches@sourceware.org>
Subject: Re: [PATCH v2] Fix WOW64 process system DLL paths
Date: Wed, 25 Mar 2020 00:44:35 +0000 (UTC) [thread overview]
Message-ID: <1797770823.3136966.1585097075167@mail.yahoo.com> (raw)
In-Reply-To: <ae27233d-a352-6b5d-1a59-b69e1239fd3a@dronecode.org.uk>
Am Mittwoch, 25. März 2020, 00:56:09 MEZ hat Jon Turney <jon.turney@dronecode.org.uk> Folgendes geschrieben:
> On 24/03/2020 19:23, 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.
> >
> [...]
> > #else
> > name = dll_name;
> > #endif
> > +#ifdef __x86_64__
> > + /* Convert the DLL path of WOW64 processes returned by
> > + GetModuleFileNameEx from the 64bit system directory to the
> > + 32bit syswow64 directory if necessary. */
> > + std::string syswow_dll_path;
> > + if (wow64_process
> > + && strncasecmp (name, system_dir, system_dir_len) == 0
> > + && strchr (name + system_dir_len, '\\') == nullptr)
> > + {
> > + syswow_dll_path = syswow_dir;
> > + syswow_dll_path += name + system_dir_len;
> > + name = syswow_dll_path.c_str();
> > + }
> > +#endif
>
> >
>
> DLLs we become aware of via handle_load_dll() don't get this treatment.
>
> Can you share your reasoning about that?
Because I get these wrong paths only with GetModuleFileNameEx, and
LOAD_DLL_DEBUG_EVENT reports for the same dlls the correct path.
next prev parent reply other threads:[~2020-03-25 0:44 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20200324192351.3904-1-ssbssa.ref@yahoo.de>
2020-03-24 19:23 ` Hannes Domani
2020-03-24 22:10 ` Simon Marchi
2020-03-24 23:56 ` Jon Turney
2020-03-25 0:44 ` Hannes Domani [this message]
2020-03-25 14:04 ` Simon Marchi
2020-03-25 14:22 ` Hannes Domani
2020-03-25 14:23 ` Simon Marchi
2020-03-25 14:35 ` Hannes Domani
2020-03-26 19:08 ` Eli Zaretskii
2020-03-26 20:35 ` Hannes Domani
2020-03-26 20:38 ` Christian Biesinger
2020-03-26 20:48 ` Hannes Domani
2020-03-26 20:56 ` Simon Marchi
2020-03-26 21:01 ` Hannes Domani
2020-03-26 22:10 ` Simon Marchi
2020-03-27 7:00 ` Eli Zaretskii
2020-03-27 6:57 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1797770823.3136966.1585097075167@mail.yahoo.com \
--to=ssbssa@yahoo.de \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox