Darn! Forgot to cc the list.
Can someone explain exactly why absolute addresses are needed here? I'm new to wine, but eager to learn.
~Theodore
On Nov 01, 2015, at 04:29 PM, Jacek Caban jacek@codeweavers.com wrote:
Hi Sebastian,
On 10/30/15 5:57 PM, Sebastian Lackner wrote: On 30.10.2015 17:42, Theodore Dubois wrote: Wine Staging includes some patches to fix Steam web browsing, but they are deactivated on Mac because they apparently require special build flags. Does anyone know what this refers to?
~Theodore
The staged patchset adds thunk wrappers for ntdll functions, but to be compatible with Windows, they have to contain absolute addresses. This requires text relocations, which are not allowed by default on OSX. Since this issue was discovered shortly before the last release, disabling the patchset on OSX was easier than the necessary configure.ac changes, but I'm working on a solution. Unless we hit some impossible to solve problems Wine Staging 1.7.54 will make the Steam fix also available on OSX. ;)
I took a look at this problem and the patchset and I think we should be able to avoid text relocation in this case. I should have a proof of concept patch soon.
Thanks, Jacek
On 02.11.2015 04:09, Theodore Dubois wrote:
Darn! Forgot to cc the list.
Can someone explain exactly why absolute addresses are needed here? I'm new to wine, but eager to learn.
The main reasons are:
- The code still has to work after Chromium has moved it to a different memory location. A relative jump would not be suitable for that. Also, in our proof of concept patch, we want to avoid huge syscall tables, and instead pass a pointer in %eax. - DRM applications might complain when a function entry point looks too unusual. - In "non-relaxed" mode Chromium refuses to accept the entry point, if it doesn't match exactly the function signature on Windows. I don't think this is used for Steam yet, but its just a matter of time.
Regards, Sebastian