Ken Thomases ken@codeweavers.com writes:
On Jan 9, 2015, at 6:01 AM, Maarten Lankhorst maarten@mblankhorst.nl wrote:
On 09-01-15 06:11, Ken Thomases wrote:
The Mac driver crashes in a 64-bit build for reasons I haven't investigated, so you have to use the X11 driver. You can do this using WINEDLLOVERRIDES="winemac.drv=d" or by setting this in the registry after the prefix is created:
Doesn't win64 and mac64 both use the %gs register for TLS?
Yes, but this incarnation of Wine64 does not attempt to directly manipulate %gs. My understanding is that it can't without a syscall, anyway.
Could that be related to the crash?
It could be, but I don't think it is in this case.
There is an incompatibility between the Win64 and OS X ABIs. Win64 apps are free to use %gs for their own purposes while OS X does not guarantee to leave it alone. We're hoping that few actually do use %gs and, so, that they won't break. We can't fix the problem but maybe it won't actually matter much in the real world. That's the purpose of this experiment: to find out if that's so.
Actually, apps can't use it freely, it's always pointing to the TEB. Any app that attempts direct TEB access will fail more or less mysteriously, depending on what's at the same address in the OS X thread data.
Since 64-bit apps don't need the TEB exception chain, direct TEB access should be less frequent than on 32-bit. Things like thread local storage would presumably still use it though.