steam web browsing on OS X
jacek at codeweavers.com
Mon Nov 2 04:12:06 CST 2015
On 11/02/15 04:10, Sebastian Lackner wrote:
> On 02.11.2015 01:28, Jacek Caban 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?
>>> 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.
> Can you provide more details what your alternative plan is? We have investigated
> many more attempts (including patching winebuild and/or automatic code
> generation), not just the version in our repository, however they have all
> disadvantages and/or technical difficulties. To avoid duplicate work or an
> attempt in the wrong direction, feel free to explain your idea before spending
> too much time on it.
Sure. The idea is to pass relative addresses instead to
call_syscall_func and let it handle that. Calling call_syscall_func
itself may use a constant address if we let it live in user shared data.
Did you try that? That's one of those things that one has to try to see
if it works in practice.
Also I believe that using winebuild for that is the right way.
> BTW: I am not sure if there is actually ANY way to fix it properly, because as
> soon as a user has a WOW64 prefix, the steamwebhelper process expects 64-bit
> thunks. Those contain a SYSCALL instruction, so we cannot really make the
> sandboxing code happy.
Yeah, that sounds worrying. I didn't look at 64-bit variant at all.
More information about the wine-devel