The aim of this series is to re-implement dbghelp.EnumerateLoadedModules*
in order to match Windows' behavior (especially in wow64 environments).
The serie includes:
- a bunch of tests to compare 3 different sets of loaded modules:
+ the load DLL debug events (generated by kernel)
+ the output of dbghelp.EnumerateLoadedModules(), which is a
wrapper around kernel32.EnumProcesModulesEx (yet modifying some
information)
+ the actual list of loaded modules in dbghelp (SymEnumerateModules).
=> the later list can be populated automatically from the second if
requested to dbghelp (this is what is tested).
=> for the record, winedbg uses the first set to populate the third
set. We just test the content of first set, not the population to
the third.
- the reimplementation of EnumerateLoadedModules to match Window's behavior
(especially regarding paths information)
Despite the three sets look similar, they have quite a few differences
to be taken care of (especially in wow64 setup).
Note: having the correct paths (esp. in wow64) is important as dbghelp
sometimes tries some wild guesses based on the path (like bitness <g>)
or (in some other places) don't rely on path information and retries
things on its own.
The long target is to simplify the module lookup by relying on more
solid information.
@julliard: the paths for wow64 modules returned from kernel32 don't
match windows behavior: wine returns 32bit system modules from
c:\windows\syswow64 whereas windows returns them from c:\windows\system32
(except a couple of exceptions: 32bit ntdll and exe main module).
Implementation in dbghelp includes the correction of this.
(I opted not to change ntdll at once: testing on windows show that
kernel32.EnumProcesModulesEx returns exactly the ldr_data list, and
I didn't feel like adding this burden to this patch ;-).
Let me know if you want ntdll to be fixed before this patch.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2497
The serie intent is to fix unexpected paths in module's list:
This happens:
- when running under old / (new) wow64
- when main module is located under the syswow64 directory
- the 32 bit modules are stored in LdrData (and then exposed through
a couple of ways) under syswow64 (they are normally stored under
system32, letting the redirection come into play when needed)
This triggers a couple of errors in winetest (as we're using
c:\windows\syswow64\msinfo32.exe in many tests to trigger a wow64
process from a winetest program).
This is the fix awaited in MR!2497.
@julliard: I'm not 100% happy with the fix itself by reintroducting
ref to the redirected DLLs in ntdll/PE but couldn't find a better idea.
--
v3: ntdll,wow64: Unredirect DLLs filename before storing them into LdrData.
kernel32: Harden some wow64 module tests.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2578
--
v7: winemac: Use the default IME implementation for ImeToAsciiEx.
winemac: Process IME input through the driver interface.
win32u: Introduce a new ImeProcessKey call through NtUserMessageCall.
winemac: Send IME key input from ImeProcessKey.
winemac: Wait for IME input result on the unix side.
winemac: Delay ime_set_text until ImeToAsciiEx requests it.
winex11: Use IMN_WINE_SET_COMP_STRING / ImeToAsciiEx instead of callbacks.
win32u: Introduce a new ImeToAsciiEx call through NtUserMessageCall.
winex11: Send an internal WM_IME_NOTIFY wparam on composition updates.
winex11: Use ime_comp_buf != NULL instead of ximInComposeMode.
winex11: Use an internal WM_IME_NOTIFY wparam to get cursor pos.
winex11: Use an internal WM_IME_NOTIFY wparam to set open status.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2637
The current size set to these buttons is too small when in HiDPI. And toolbar doesn't resize buttons for HiDPI, so we will need to reset it with TB_SETBUTTONSIZE manually.
On Windows with a 250% scale:

vs

--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2802
For example, on x86_64, value of sp on begin of callee must be 16n-8, because sp was 16n before instruction "call" on caller. But initilize value of sp on signal stack is 16n instead of 16n-8. It may cause error when store and load xmm register.
add "force_align_arg_pointer" to hanlder of signal can avoid potential risks
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2794