Ryan Houdek
bb85f90f78
FEXConfig: Have it create AppConfig folder on save
...
Otherwise it will claim that the AppConfig was saved and won't actually be
2021-06-25 04:03:16 -07:00
Ryan Houdek
35157c1251
Merge pull request #1118 from lioncash/utimes
...
x32/Time: Implement utimes
2021-06-24 17:02:02 -07:00
Lioncash
17d836a178
x32/Time: Fix edge case in utimensat
...
utimensat allows passing null to signify that timestamps should be set
to the current time.
Check for this to avoid dereferencing null.
2021-06-24 18:49:55 -04:00
Lioncash
28d754b466
x32/Time: Implement utimes
2021-06-24 18:45:03 -04:00
Ryan Houdek
01667bdfb2
Merge pull request #1117 from lioncash/fsuid
...
x32/Thread: Implement setfsuid32/setfsgid32
2021-06-24 09:36:00 -07:00
Lioncash
2ddcaef525
x32/Thread: Implement setfsuid32/setfsgid32
...
Fairly straightforward to implement.
2021-06-24 12:22:48 -04:00
Ryan Houdek
c7cd2241c8
Merge pull request #1116 from lioncash/groups
...
x32/Thread: Implement getgroups32/setgroups32
2021-06-24 09:11:39 -07:00
Lioncash
f67f3fe4de
x32/Thread: Implement getgroups32/setgroups32
...
Implements two other straightforward syscalls for the 32-bit side of
things.
2021-06-24 08:15:11 -04:00
Ryan Houdek
5d7822c987
Merge pull request #1115 from lioncash/chown
...
x32: Implement chown32/fchown32/lchown32
2021-06-24 04:47:25 -07:00
Lioncash
738354a52d
x32/FD: Implement chown32/fchown32/lchown32
...
Implements three basic hooks for the chown32 family of syscalls.
2021-06-24 07:08:46 -04:00
Stefanos Kornilios Mitsis Poiitidis
26531e9b96
Merge pull request #1111 from Sonicadvance1/32bit_sigpending
...
Implements 32-bit sigpending
2021-06-24 13:24:38 +03:00
Stefanos Kornilios Mitsis Poiitidis
282402a80c
Merge pull request #1110 from Sonicadvance1/cpack_setup
...
Implements support for cpack debian package building
2021-06-24 13:24:23 +03:00
Stefanos Kornilios Mitsis Poiitidis
28254a3163
Merge pull request #1105 from Sonicadvance1/fix_32bit_syscall_checks
...
Fixes a couple of 32-bit checks
2021-06-24 13:24:00 +03:00
Ryan Houdek
12adc5bc6e
Implements 32-bit sigpending
...
This is a early version of the syscall that only returns the lower 32 signals.
Easy enough to support
2021-06-24 00:35:23 -07:00
Ryan Houdek
6ac942266f
Implements support for cpack debian package building
...
This doesn't currently install thunks which can come a bit later.
We require a postinst and prerm step for importing and unimporting the binfmt_misc files.
Easy enough
2021-06-23 18:47:04 -07:00
Ryan Houdek
24a2a0c4eb
Switches binfmt_misc install step to use registration files
...
This is easier to represent than the raw files. Once we do a debian file install then
this becomes more important
2021-06-22 20:22:09 -07:00
Stefanos Kornilios Mitsis Poiitidis
910c624a8b
Merge pull request #1104 from Sonicadvance1/implement_32bit_iret
...
Implements 32-bit iret instruction
2021-06-22 09:22:00 +03:00
Stefanos Kornilios Mitsis Poiitidis
767ea0fc9e
Merge pull request #1103 from Sonicadvance1/deprioritize_aot
...
Lower priority of AOT compilation threads.
2021-06-22 09:20:23 +03:00
Stefanos Kornilios Mitsis Poiitidis
087e5a9576
Merge pull request #1102 from Sonicadvance1/implement_truncate64
...
Implements 32-bit truncate64 syscall
2021-06-22 09:20:04 +03:00
Stefanos Kornilios Mitsis Poiitidis
67e6ffbc93
Merge pull request #1101 from Sonicadvance1/fixed_stack_fix
...
Fixes fixed stack offset for 32-bit applications
2021-06-22 09:19:36 +03:00
Stefanos Kornilios Mitsis Poiitidis
6734d745c6
Merge pull request #1099 from Sonicadvance1/fix_strace_32
...
Fixes debug strace output
2021-06-22 09:17:14 +03:00
Stefanos Kornilios Mitsis Poiitidis
332123a38c
Merge pull request #1098 from Sonicadvance1/fix_more_gdt
...
Fixes a 32-bit processes wanting another TLS space
2021-06-22 09:16:40 +03:00
Stefanos Kornilios Mitsis Poiitidis
24fdbe4e6d
Merge pull request #1096 from Sonicadvance1/fix_kotor2
...
Fix Star Wars Knights of the Old Republic 2
2021-06-22 09:14:02 +03:00
Ryan Houdek
ea48f36511
Fixes a couple of 32-bit checks
...
The allocator functions don't return -1 on error, instead return the actual error.
This was setup to match the syscall behaviour rather than the glibc/errno behaviour
2021-06-21 00:25:01 -07:00
Ryan Houdek
d587485383
Implements 32-bit iret instruction
...
This is necessary for wine and some wine-like emulation layers.
With this implemented then some Saint's Row games start running.
Fixes #1100
2021-06-21 00:20:44 -07:00
Ryan Houdek
c9211ae77a
Lower priority of AOT compilation threads.
...
Set these threads to minimum priority to not complete starve the system if there are other tasks running.
Fixes #1075
2021-06-20 17:24:36 -07:00
Ryan Houdek
7cbe9579ba
Fixes 32-bit allocator returning 64-bit pointers on old kernels
...
In the case of a kernel older than 4.17 then MAP_FIXED_NOREPLACE doesn't exist.
This adds a check in to see if the pointer returned was valid but not what we asked for
2021-06-20 17:22:26 -07:00
Ryan Houdek
ca482e3e96
Implements 32-bit truncate64 syscall
...
A 32-bit game was using this syscall and now it gets farther in game
2021-06-20 01:10:19 -07:00
Ryan Houdek
eaa3df9cba
Fixes fixed stack offset for 32-bit applications
...
Instead of forcing a fixed offset for the stack. Allow it to get placed automatically.
64-bit was already doing this; Now we can also do it in 32-bit.
This is possible because the mapper that is mapping the code will always map in the 32-bit space
for a 32-bit guest.
2021-06-20 01:07:58 -07:00
Ryan Houdek
c252dc99fc
Fixes debug strace output
...
This custom definition was missing
2021-06-19 22:01:47 -07:00
Ryan Houdek
70dc5217ec
Fixes a 32-bit processes wanting another TLS space
...
Currently our 32-bit code only gave one TLS slot and crashed
if you needed more.
First switch over to the same initial slot as the Linux kernel.
Then allow searching the slots for a free spot.
This allows us to more closely match the behaviour of the Linux kernel just in case
anything has hardcoded the TLS slots
This makes it so Saints Row: The Third stops crashing at boot, plays a few intro videos, then hangs instead.
2021-06-19 21:58:49 -07:00
Ryan Houdek
1745bcceb6
Fixes 32bit statfs and fstatfs
...
These 32bit syscalls use a compat statfs which is only 64bytes in size.
This was overwriting data on the guest stack and causing crashes.
Describe a 32-bit statfs struct and ensure with struct verifier that it matches.
Fixes a crash in KOTOR2 that would happen just before the main menu.
2021-06-19 07:26:41 -07:00
Ryan Houdek
cc8fa9d934
Fixes 32bit sysinfo syscall
...
This was altered in kernel 2.3.23 to include a mem_unit variable.
mem_unit states what each of the memory units is scaled by.
The kernel will always have this be 1 or page size on x86, so follow that behaviour.
Instead of maxing out the values to what uint32_t can handle, scale all of these by page size instead.
This fixes a crash in KOTOR2's boot sequence where it would divide by zero if everything was maxed out.
2021-06-19 07:23:25 -07:00
Ryan Houdek
424b93b5f8
Merge pull request #1095 from Sonicadvance1/disable_flake2
...
Disable flaky posix test
2021-06-17 15:12:59 -07:00
Ryan Houdek
5fccf5f741
Disable flaky posix test
...
Test sleeps for 1 second and expects to come back within 10ms of the time.
When the CPU is doing other things then it can end up missing that timeframe. Thus flake.
Just disable it
2021-06-17 07:51:37 -07:00
Ryan Houdek
42f1dfeede
Merge pull request #1094 from Sonicadvance1/fix_fexbash_squashfs
...
Fixes FEXBash with squashfs
2021-06-17 07:47:04 -07:00
Ryan Houdek
21fa93f3b3
Fixes FEXBash with squashfs
...
FEXBash wasn't setting up a squashfs on its end. This meant that it couldn't find any
x86-64 libraries and would fail
2021-06-17 06:41:07 -07:00
Ryan Houdek
f088d97060
Merge pull request #1093 from lioncash/cast
...
General: Resolve -Wcast-qual warnings
2021-06-16 23:28:52 -07:00
Lioncash
e369626929
BitUtils: Add BitCast
...
libc++ doesn't implement std::bit_cast, so we can provide our own for
the time being.
2021-06-17 01:30:07 -04:00
Lioncash
cba4ca7d01
General: Resolve -Wcast-qual warnings
...
Ensures that qualifiers are preserved on references and pointers to
prevent undefined behavior.
2021-06-17 01:25:39 -04:00
Ryan Houdek
fb7964e6b1
Merge pull request #1092 from lioncash/ignored-qual
...
General: Resolve -Wignored-qualifiers warnings
2021-06-16 19:52:39 -07:00
Lioncash
ef7aff796f
General: Resolve -Wignored-qualifiers warnings
...
Removes const qualifiers that don't do anything to the interface.
2021-06-16 21:51:45 -04:00
Ryan Houdek
d2771669e6
Merge pull request #1091 from lioncash/unused
...
Core: Remove unused DefaultFallbackCore
2021-06-16 17:32:56 -07:00
Lioncash
e6e170805e
Core: Remove unused DefaultFallbackCore
...
This doesn't seem to be hooked up to anything.
2021-06-16 19:58:05 -04:00
Ryan Houdek
1f89ca7218
Merge pull request #1090 from lioncash/array
...
Frontend: Make lookup tables static in MapModRMToReg
2021-06-16 14:44:35 -07:00
Ryan Houdek
adcee99625
Merge pull request #1089 from lioncash/gprsize
...
Context: Move GPR size retrieval to its own function
2021-06-16 14:03:20 -07:00
Lioncash
a9623f0e2a
Frontend: Shrink MapModRMToReg array size from uint64_t to uint32_t
...
This function only returns a 32-bit value, so we can save some space by
using uint32_t instead.
2021-06-16 16:59:56 -04:00
Lioncash
c40ca14b5b
Frontend: Make lookup tables static in MapModRMToReg
...
Allows clang to emit better code, since it doesn't need to push all the
values onto the stack and off again for every invocation.
2021-06-16 16:47:12 -04:00
Lioncash
100bc4c833
Context: Move GPR size retrieval to its own function
...
This is repeated in quite a few spots, so we can place it in a utility
function and just call it instead.
2021-06-16 16:14:26 -04:00
Ryan Houdek
a8855a330a
Merge pull request #1088 from lioncash/table
...
OpcodeDispatcher: Make GPR indices in SyscallOp constexpr
2021-06-16 12:17:18 -07:00