Tony Wasserka
99bf02f27f
Thunks/gen: Add support for libraries with "-" in the filename
2021-12-10 11:24:59 +01:00
Tony Wasserka
a2c02ae51e
Thunks: Use libclang-based code generation for libxcb
...
Notably, xcb_take_socket uses the callback_guest annotation, since the
given callback is never called on the host (instead it's manually forwarded
back to a helper guest thread for calling).
2021-12-10 11:24:59 +01:00
Tony Wasserka
c7b59143c6
Thunks/gen: Add custom guest entrypoint annotation
2021-12-10 11:24:59 +01:00
Tony Wasserka
1e23e61572
Thunks: Use libclang-based code generation for libEGL
2021-12-10 11:24:59 +01:00
Tony Wasserka
f4dd1a895e
Thunks: Use libclang-based code generation for libGL
2021-12-10 11:24:58 +01:00
Tony Wasserka
3a2f9a4d46
Thunks/gen: Support guest-side symbol tables and custom host symbol loaders
2021-12-10 11:24:58 +01:00
Tony Wasserka
4a848d7202
Thunks: Use libclang-based code generation for libX11
2021-12-10 11:24:58 +01:00
Tony Wasserka
1b58ed9f57
Thunks/X11: Fix incorrect library version
2021-12-10 11:24:58 +01:00
Tony Wasserka
1c86f7ed36
Thunks/gen: Support annotating guest-exclusive function pointers
...
Function pointer arguments given to the guest thunk library aren't
callable on the host, so they need special handling on a case-by-case
basis. Similar problems arise when the guest-side tries to consume a
pointer returned from a native host library. To automate some common
scenarios, this change adds two new annotations:
"callback_guest" indicates the callback parameter is never called on the
host and hence can be marshalled like any other argument. Accidental host
calls to the function pointer are prevented by wrapping it in an opaque
type alias.
"returns_guest_pointer" indicates that the host function returns a pointer
usable in the guest context. This applies e.g. to functions that derive
the returned pointer from input guest pointer arguments.
2021-12-10 11:24:58 +01:00
Tony Wasserka
2733b2ee1e
Thunks/gen: Add annotation for custom host implementations
2021-12-10 11:24:58 +01:00
Tony Wasserka
4ceb2dfdf2
Thunks: Use libclang-based code generation for libXext
2021-12-10 11:24:58 +01:00
Tony Wasserka
bd380e0f15
Thunks: Use libclang-based code generation for libXrender
2021-12-10 11:24:58 +01:00
Tony Wasserka
73ec786c60
Thunks: Use libclang-based code generation for libasound
2021-12-10 11:24:57 +01:00
Tony Wasserka
e3a2c8dc80
Thunks: Use libclang-based code generation for libXfixes
2021-12-10 11:24:57 +01:00
Tony Wasserka
d3b14df840
Thunks/gen: Add versioning support
2021-12-10 11:24:57 +01:00
Tony Wasserka
a12ab8f98a
Thunks/gen: Add support for "callback_stub" annotations
...
Some applications set callbacks that never get called in practice (such as
error handlers). It's sensible to just not implement these instead of
cluttering the code with effectively unused callback wrappers.
2021-12-10 11:24:57 +01:00
Tony Wasserka
966b9a69d8
Thunks/gen: Add support for function pointer parameters ("callbacks")
2021-12-10 11:24:57 +01:00
Tony Wasserka
927d3d00e2
Thunks/gen: Add support for thunking variadic functions
2021-12-10 11:24:57 +01:00
Tony Wasserka
bfb9cabeb8
Thunks/gen: Add support for generation of host library functions
2021-12-10 11:24:57 +01:00
Tony Wasserka
22466a973c
Thunks/gen: Add unit tests
2021-12-10 11:24:57 +01:00
Tony Wasserka
c05e1c9797
Thunks: Add a new code generator based on libclang
2021-12-10 11:24:56 +01:00
Ryan Houdek
c65be9f55d
Merge pull request #1438 from Sonicadvance1/remove_jemalloc_from_fexconfig
...
FEXConfig: Removes jemalloc usage
2021-12-09 18:10:32 -08:00
Ryan Houdek
edc31fe0a3
FEXConfig: Removes jemalloc usage
...
Splits out the few required dependencies to a FEXCore_Base static
library.
FEXCore then links to this directly.
Then make it so the FEX Common code links to FEXCore_Base so the
jemalloc dependency doesn't get pulled in.
2021-12-09 17:54:53 -08:00
Ryan Houdek
d4655fbb17
Merge pull request #1424 from Sonicadvance1/aot_code_movement
...
FEXCore: Reorganizes some AOT related code
2021-12-09 13:55:50 -08:00
Ryan Houdek
5f0dfcd715
Merge pull request #1422 from Sonicadvance1/implement_clzero
...
Implements CLZero instruction
2021-12-09 13:55:31 -08:00
Ryan Houdek
e62cb417c2
Merge pull request #1437 from Sonicadvance1/disable_flake_gvisor
...
gvisor: Disables flaky test
2021-12-09 12:58:29 -08:00
Ryan Houdek
df486c0786
gvisor: Disables flaky test
2021-12-09 12:37:58 -08:00
Ryan Houdek
9d43904792
Merge pull request #1436 from lioncash/context-const
...
Context: Take some arguments as pointer-to-const
2021-12-09 12:23:34 -08:00
Ryan Houdek
5654f9a030
Merge pull request #1435 from Sonicadvance1/fix_vixl_assertions
...
Arm64: Fixes vixl assertions around ubfm usage
2021-12-09 11:54:41 -08:00
Ryan Houdek
84905d2856
unittests: Adds 32-bit inline syscall test
...
Triggers the ubfm bug on AArch64.
Uses a fairly benign syscall that gets inlined
2021-12-09 11:34:35 -08:00
Ryan Houdek
92cb9d477e
Arm64: Fixes vixl assertions around ubfm usage
...
vixl has an assert check to ensure the register sizes are the same for
ubfm.
32-bit Inline syscalls hit this for both arguments and return value.
VCastFromGPR would have hit this but there aren't any x86 instructions
that move 8-bit and 16-bit values in to a vector register.
2021-12-09 11:34:20 -08:00
lioncash
7ed6007252
Context: std::move functions in signal registration functions
...
Prevents potential reallocations, given we're using std::function here.
2021-12-09 14:31:47 -05:00
Ryan Houdek
b6499ac724
Merge pull request #1434 from lioncash/syscallthread
...
{x32, x64}/Thread: Make use of .data() instead of .at(0)
2021-12-09 11:28:39 -08:00
lioncash
c73991f467
Context: Take some arguments as pointer-to-const
...
Several API functions act as state querying functions. These can take
some parameters by const to communicate that we don't intend to modify
the respective passed in instance.
2021-12-09 14:26:35 -05:00
lioncash
0bf0fe4779
{x32, x64}/Thread: Make use of .data() instead of .at(0)
...
Follows the previous PRs of using .data() instead of .at(0) to retrieve
the buffer pointers.
2021-12-09 14:14:40 -05:00
Ryan Houdek
097f48f3ff
Merge pull request #1433 from lioncash/syscallmsg
...
x32/Socket: Resolve sign comparison mismatch cases
2021-12-09 11:09:07 -08:00
Ryan Houdek
75e5df545a
Merge pull request #1432 from lioncash/syscall-warn
...
LinuxSyscalls: Enable warnings
2021-12-09 10:51:21 -08:00
lioncash
171d5f7263
x32/Socket: Use .data() instead of .at(0) for pointer retrieval
...
.at(0) can blow up in the case we receive a message from user code with msg_iovlen=0
.data() will simply return a pointer to the empty buffer and we can
proceed with forwarding the call to the syscall.
2021-12-09 13:49:15 -05:00
lioncash
970067d19b
x32/Socket: Resolve sign comparison mismatch cases
2021-12-09 13:43:26 -05:00
lioncash
c26ff60949
LinuxSyscalls: Enable warnings
...
Enables some basic warnings that we have enabled for FEXCore in order to
prevent some small things from slipping through.
2021-12-09 12:58:54 -05:00
lioncash
04d830ed39
LinuxSyscalls: Minor tidy up of CMakeLists
2021-12-09 12:46:39 -05:00
Ryan Houdek
b9c49027c7
Merge pull request #1409 from Sonicadvance1/reentrantmutex
...
Adds a new ReentrantMutex to use for FEXCore
2021-12-08 14:00:12 -08:00
Ryan Houdek
9860e8b71b
Merge pull request #1430 from lioncash/net
...
NetStream: Move NetBuf definition into cpp file
2021-12-08 13:10:06 -08:00
lioncash
a1e94a9863
NetStream: Move NetBuf definition into cpp file
...
Keeps the NetBuf class completely internal and also lessens the header
dependencies for NetStream.
2021-12-08 10:41:55 -05:00
lioncash
2945c13dcb
NetStream: Mark virtual functions as override
...
Makes it explicit that we're overriding the interface of the class being
derived from.
2021-12-08 10:33:18 -05:00
lioncash
4f68821aef
NetStream: Mark constructors as explicit
...
Prevents implicit conversion of ints to NetStreams.
2021-12-08 10:30:38 -05:00
Ryan Houdek
13087f8425
Merge pull request #1426 from Sonicadvance1/fcmp_unittests
...
Arm64: Fixes MapSelectCC FGT flag
2021-12-08 05:26:15 -08:00
Ryan Houdek
fd0424768b
Merge pull request #1427 from Sonicadvance1/enable_unaligned_atomic_tests
...
unittests: Enables remaining unaligned atomic tests on ARMv8.0
2021-12-08 05:26:03 -08:00
Ryan Houdek
5c4112f103
Merge pull request #1428 from Sonicadvance1/fix_known_failures
...
unittests: Fixes known failures
2021-12-08 05:25:50 -08:00
Ryan Houdek
e8670bbab2
Merge pull request #1425 from Sonicadvance1/x86tables_unknown
...
X86Tables: Build Unknown op definition tables at compile time
2021-12-08 00:22:57 -08:00