On x86_64 macOS (real Intel/not under Rosetta), a signal delivered to a thread inside a syscall will have CS in `sigcontext` set to the kernel's selector (0x07, `SYSCALL_CS` in xnu source) instead of the user selector (`cs64_sel`: 0x2b, `USER64_CS`).
This causes crashes when running a 32-bit CEF sample or Steam: those do lots of async I/O, SIGUSR1 is received often, and `CS_sig` is `0x07` if received while in `_thread_set_tsd_base`. `get_wow_context()` later compares `SegCs` to `cs64_sel`, sees that it's different, assumes that we are in 32-bit code, and the 32-bit context is used. The top 32-bits of `RIP` and every register are stripped off, and the thread crashes when it tries to return after handling the signal.
To fix this, set `CS_sig` to `cs64_sel` unless it's set to `cs32_sel`. As far as I know, these are the only `%cs` values that Wine is expecting to see.
It appears that macOS has always done this (I tested back to 10.12), but it wasn't an issue until 3a16aabbf55be5e0416c53b498ed1d085b8d410d/!6866 started doing `_thread_set_tsd_base()` outside of a Wine/NT syscall.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8659
These are the first steps towards code sharing, finally :)
Patch 4 is a bit big, but it's just copying code from various source files into a single source file. I can attempt to split if if that's preferable for review purposes.
--
v3: d3dx10: Use shared d3dx code in get_image_info when possible.
d3dx9: Don't include d3dx9 header in d3dx_helpers.
d3dx9: Get rid of ID3DXBuffer usage in d3dx_helpers.
d3dx9: Move functions intended for code sharing into a separate source file.
d3dx9: Introduce d3dx_image_file_format enumeration.
d3dx9: Introduce d3dx_resource_type enumeration.
d3dx9: Replace D3DFORMAT constants with enum d3dx_pixel_format_id constants.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8490
--
v8: winebth.sys: Set additional properties for remote Bluetooth devices.
bluetoothapis/tests: Implement tests for BluetoothGATTGetCharacteristics.
bluetoothapis: Implement BluetoothGATTGetCharacteristics.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8556
This MR adds a basic implementation for the BluetoothAdapter interface in Windows.Devices.Bluetooth, including winebth.sys support for getting properties associated with the radio's Low Energy capabilities.
--
v4: windows.devices.bluetooth: Implement BluetoothAdapter::get_BluetoothAddress.
windows.devices.bluetooth: Implement IBluetoothAdapterStatics::GetDefaultAsync().
windows.devices.bluetooth/tests: Add tests for IBluetoothAdapter.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7659
This MR mainly tackle the exit code generated from running
cmd.exe with /c command line option.
Things are a little bit torturous (as shown by tests) and
require a bit of refactoring.
The /k option is not covered as the tests trigger other bugs
that we'll need to tackle beforehand (mainly proper escaping
when rewriting builtin commands in pipe, that we'll need
also for real pipes implementation, and also some echo
features).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8655