https://bugs.winehq.org/show_bug.cgi?id=48171
Rémi Bernon rbernon@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |rbernon@codeweavers.com
--- Comment #12 from Rémi Bernon rbernon@codeweavers.com --- Created attachment 67520 --> https://bugs.winehq.org/attachment.cgi?id=67520 gdi32 GdiDllinitialize stub
It's probably doing the same thing as Black Ops 3 which I was working with. The game tries to call GdiDllInitialize, but it fails for several reasons.
First, it calls it by loading gdi32.dll from disk, so using the fake dll, and computing the offset of the function from the procedure address in memory. This is not working with Wine Staging fake dlls patch series because the code sections are generated separately and the fake dlls only contain thunks at different position from the real functions.
The first part of the series that I sent to the mailing list should fix that by extracting fake dll modules directly from the builtin so files, keeping the correct symbol positions.
Then, because the function is stubbed, the call is still probably going to fail, so it also has to be implemented, doing nothing for instance, like in the attached patch.
Last, if the implementation does anything that requires external symbols, such as the FIXME message in the attached patch, then the call from the file image will also fail unless the last part of the patch series is used, with the implementation of thunks and jump table for every DLL entry point, but that last part can be heavy and is also mostly untested.