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
This makes one able to see what is being built as PE and UNIX code and shows 'LINK' for linking in silent configuration `--enable-silent-rules`.
For example:
```
make: Entering directory '/home/bernhard/Documents/programming/builds/wine/x64'
UNIX dlls/windows.media.speech/unixlib.o
PE dlls/windows.media.speech/x86_64-windows/async.o
PE dlls/windows.media.speech/x86_64-windows/main.o
PE dlls/windows.media.speech/x86_64-windows/recognizer.o
PE dlls/windows.media.speech/x86_64-windows/event_handlers.o
PE dlls/windows.media.speech/x86_64-windows/listconstraint.o
PE dlls/windows.media.speech/x86_64-windows/synthesizer.o
PE dlls/windows.media.speech/x86_64-windows/vector.o
WIDL dlls/windows.media.speech/x86_64-windows/classes_r.res
LINK dlls/windows.media.speech/x86_64-windows/windows.media.speech.dll
LINK dlls/windows.media.speech/windows.media.speech.so
Wine build complete.
```
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2241
The tests shows that, for sink writer created by MFCreateSinkWriterFromURL,
we are not able to grab the media sink object immediately after the creation,
unless the media sink object can be created without setting media type(MP3, ASF).
--
v5: mfreadwrite/tests: Test GetService for MP4 sink writer.
mfreadwrite/tests: Add more tests for MFCreateSinkWriterFromURL.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2690
--
v2: vkd3d-shader/hlsl: Map the colour output for ps_1_* to r0.
vkd3d-shader/hlsl: Rewrite the register allocator to allow allocating in multiple passes.
vkd3d-shader/hlsl: Avoid leaking the allocator register map in allocate_const_registers().
vkd3d-shader/hlsl: Rename struct liveness to struct register_allocator.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/168