Ryan Houdek
87b3d50899
Linux: Fixes open syscall emulated path handling
...
open is rarely used compared to openat and openat2, so this has been
just missed but nothing really got upset about it.
Fixes Proton Experimental while running under pressure-vessel.
2022-06-07 17:27:25 -07:00
Stefanos Kornilios Misis Poiitidis
6a428043f6
TSO: Add auto migration optimisation for applications that don't need TSO
2022-06-06 16:51:32 +03:00
Stefanos Kornilios Mitsis Poiitidis
c6153d6a52
Merge pull request #1747 from Sonicadvance1/struct_verifier_fixes
...
Struct verifier fixes and reenable
2022-06-04 13:46:30 +03:00
Ryan Houdek
015200f511
StructVerifier: Reenable DRM testing
2022-06-03 19:12:33 -07:00
Ryan Houdek
92f48819b6
IoctlEmulation: Fix DRM includes
...
These were being overridden by system includes.
2022-06-03 19:12:33 -07:00
Stefanos Kornilios Misis Poiitidis
33845a3112
Mtrack: Remove race conditions around concurrent invalidation and compilation
2022-06-03 12:41:38 +03:00
Stefanos Kornilios Misis Poiitidis
096ed29b5e
Mtrack/x86: Track shmat, shmdt via ipc syscall as well
2022-06-03 12:41:32 +03:00
Ryan Houdek
46919979ce
StructVerifier: Ensure drm include is in place
...
drm testing disabled while investigations occur
2022-06-02 04:46:00 -07:00
Ryan Houdek
a2d0b7d7c4
Linux: Expose v5.18 host to guest
2022-05-23 11:00:16 -07:00
Ryan Houdek
97a8fa77bc
Ioctl: Update drm msm for v5.18
...
Fixes #1602
2022-05-23 10:59:29 -07:00
Ryan Houdek
0ed96544e1
Merge pull request #1721 from Sonicadvance1/fix_clone3_stack
...
Syscalls: Fixes clone3 stack pointer
2022-05-20 02:46:05 -07:00
Ryan Houdek
d28ccc59ac
Syscalls: Fixes clone3 stack pointer
...
clone2 stack pointer passed in points to the highest address for the
stack.
clone3 switches this around and gives us a base pointer and a size.
glibc started using clone3 for its thread cloning which finally caught
this bug. Necessary to run any application under the Ubuntu 22.04 rootfs
since that uses a new enough glibc to encounter this.
2022-05-19 22:51:17 -07:00
Stefanos Kornilios Misis Poiitidis
a284adcd19
SMC: Add mprotect based tracking, --smc=mtrack, make default
2022-05-16 15:51:09 +03:00
Stefanos Kornilios Misis Poiitidis
a6a816fb38
CMake: C/C++ flags for defined singed overflow warping
2022-05-10 17:14:17 +03:00
Stefanos Kornilios Mitsis Poiitidis
b9d878b1f4
Merge pull request #1672 from FEX-Emu/skmp/add-guest-mmap-munmap
...
Syscalls/Linux: Add guest[Mmap/Munmap]
2022-05-09 12:55:40 +03:00
Stefanos Kornilios Misis Poiitidis
e92f51e415
Syscalls/Linux: Add GuestMmap & GuestMunmap, update code to use it
2022-05-09 11:57:08 +03:00
Ryan Houdek
d1ac406895
EmulatedFiles: Fixes temporary file flags
...
mode and flags were being combined incorrectly.
2022-05-05 21:50:34 -07:00
Stefanos Kornilios Misis Poiitidis
efb42c1ad1
Syscalls/Linux: Refactor guest mman tracking
2022-05-03 15:26:32 +03:00
Stefanos Kornilios Mitsis Poiitidis
d8109880f4
Merge pull request #1670 from FEX-Emu/skmp/processwide-code-invalidations
...
Core: context-wide guest code invalidations
2022-05-03 15:23:10 +03:00
Stefanos Kornilios Misis Poiitidis
b5a4e5920d
Core: Rename FlushCodeRange to InvalidateGuestCodeRange
2022-05-02 01:49:54 +03:00
Stefanos Kornilios Misis Poiitidis
94d2ed85a7
Core: Add support for process-wide code invalidation, rename IR invalidate op to do thread specific invalidation
2022-05-02 01:49:49 +03:00
Stefanos Kornilios Misis Poiitidis
a888da436b
Linux/MemAllocator32Bit: Add missing lock to shmdt, fix error returns
2022-05-02 01:00:53 +03:00
Ryan Houdek
72e82d0304
Linux: Fixes 32-bit mmap
...
This went unnoticed for so long since most applications are new enough
to use mmap2 instead of mmap.
This was just completely broken.
Fixes #1630
2022-04-24 10:56:56 -07:00
Ryan Houdek
128a24d699
Linux: Updates supported guest Linux version to v5.17
2022-04-23 11:59:18 -07:00
Ryan Houdek
cd94a8f0ac
Linux: Adds support for new v5.17 virtio IOCTL
2022-04-23 11:58:56 -07:00
Ryan Houdek
df5e0e5df9
Linux: Adds support for new v5.17 syscall
2022-04-23 11:58:38 -07:00
Ryan Houdek
458bbf4ef7
Linux: Updates syscalls for v5.17
2022-04-23 11:57:37 -07:00
Ryan Houdek
2aa77e85de
LinuxSyscalls: Expose CodeLoader through syscall interface
2022-03-09 19:07:45 -08:00
Ryan Houdek
91665fdf0e
Merge pull request #1610 from wannacu/main
...
FileManager: Fix realpath failed on debian buster
2022-03-09 18:58:52 -08:00
wannacu
898873e9e3
FileManager: Fix realpath failed on debian buster
...
This happend on debian buster when run realpath(i386) on arm64 host.
2022-03-08 16:42:05 +08:00
Ryan Houdek
52292e5f7e
Linux: Fixes MAP_32BIT supported range
...
I accidentally committed a 32-bit range that was significantly smaller
than what it should be.
While the minimal range worked for simple cases, it didn't work for
anything complex.
Give it the full range it needs.
Fixes #1600
2022-03-06 17:46:17 -08:00
Ryan Houdek
4cb6918506
Change page define usages over to self-defined
...
In the case of an AArch64 builder is using 16kb or 64kb pages like is
common on servers then it would fail to compile, even if the resulting
application would only ever run on 4k page hosts.
Resolve this by removing the build check and hardcoding 4kb pages for
each of our uses. We still require 4kb pages to run, so this mostly just
removes the weirdness where it is 16kb builder + 4k runner. Would have
broken some of our assumptions when running.
2022-03-06 07:33:10 -08:00
Ryan Houdek
847b6e5026
LinuxSyscalls: Fixes struct verifier on Ubuntu 20.04
...
The `linux/types.h` header needs to be included before the rest
otherwise we are missing types.
2022-03-04 17:44:26 -08:00
Mai M
08938ecb11
Merge pull request #1596 from Sonicadvance1/fix_old_kernel_bug
...
LinuxAllocator: Fixes bug with old kernels and hint allocation
2022-03-02 00:26:51 -05:00
Ryan Houdek
5137af5bae
Fixes epoxy include in FEXConfig and FEXLogServer
2022-03-01 03:55:19 -08:00
Ryan Houdek
3418cc8054
LinuxSyscalls: More type fixes
2022-03-01 03:55:15 -08:00
Ryan Houdek
1f835ea1f4
LinuxSyscalls: Fixes semid and ipc types
...
Newer headers redefine semid_ds and ipc_perm as semid64_ds and
ipc64_perm silently.
Use the new types directly since we are a 64-bit only application.
2022-03-01 03:55:12 -08:00
Ryan Houdek
09010e1292
LinuxSyscalls: Remove unused headers now
...
These don't even exist on termux.
2022-03-01 03:54:01 -08:00
Ryan Houdek
bddf3871ba
LinuxSyscalls/x32/Types: Fixes stat type definitions
...
The time argument definitions are defines in termux.
Rename our definition name of these so we don't get caught by define.
2022-03-01 03:50:18 -08:00
Ryan Houdek
1ca9e56502
LinuxSyscalls/x64/Types: Fix guest_stat definition
...
kernel types don't exist in termux. Use uint64_t and int64_t directly.
Also using reserved `__` causes compile failure.
2022-03-01 03:50:17 -08:00
Ryan Houdek
fe58a9ae2c
LinuxSyscalls/Thread: Don't use set_robust_list on Termux
...
Would get caught by seccomp and crash FEX
2022-03-01 03:50:15 -08:00
Ryan Houdek
bc7c4dfa74
LinuxSyscalls/x32/Types: Don't redefine SIGEV defines
2022-03-01 03:50:12 -08:00
Ryan Houdek
7af7b1309d
Msg: Switch msqd_t to FEX defined type
2022-03-01 03:50:10 -08:00
Ryan Houdek
dd4630750f
LinuxSyscalls/Types: Adds missing types for Termux
2022-03-01 03:50:07 -08:00
Ryan Houdek
3cc59bc68e
LinuxSyscalls: Switches to a bunch of raw syscalls
...
For older and Termux build environments these helper libc functions
don't exist.
2022-03-01 03:49:31 -08:00
Ryan Houdek
9b29ff61e9
Adds some missing headers
2022-03-01 03:30:45 -08:00
Ryan Houdek
91f780223b
Stop self-defining PAGE_SIZE
...
We only work on targets with 4096 byte page sizes.
Adds a cmake compile test to ensure this is adhered to.
2022-03-01 03:30:43 -08:00
Ryan Houdek
a0efd2b01f
Resolve comments.
2022-02-28 21:04:03 -08:00
Ryan Houdek
3e9dbda146
Classify syscalls
2022-02-28 21:04:03 -08:00
Ryan Houdek
6501715a3c
Allow classifying syscalls with flags
...
In some cases we can generate more optimal code if we have more
information about a syscall which number gets const-propagated.
In particular optimizing through syscalls, not synchronizing state, and
never returning.
- Noreturn is used by a syscall that never returns, like exit.
This means that it never needs to try and synchronize state coming back
- Not synchronizing state and optimizing through syscalls
Useful for syscalls that don't read the state past arguments and only
returns a value.
2022-02-28 21:03:54 -08:00