Commit Graph
1707 Commits
Author SHA1 Message Date
Ryan Houdek f17ec1661c Removes -U option from POSIX unit test runner
Option no longer exists.
mlockall POSIX test now works since it doesn't try to make 64GB of
memory resident in RAM
2020-12-10 02:09:52 -08:00
Ryan Houdek 36b24ad141 Removes all uses of non-unified memory and SHM regions
Let's just delete the whole thing!
2020-12-10 02:09:52 -08:00
Ryan Houdek 899e24abd0 Removes non-unified memory path from Interpreter 2020-12-10 02:01:14 -08:00
Ryan Houdek dc8caeaf91 Removes non-unified memory path from x86_64 2020-12-10 02:01:14 -08:00
Ryan Houdek 8e3ac44e65 Removes non-unified memory path from ARM64 2020-12-10 02:01:14 -08:00
Ryan Houdek 3d9bdd3c83 Removes the broken TestSingleStepHardware runner 2020-12-10 02:01:14 -08:00
Stefanos Kornilios Mitsis Poiitidis 6d671166e4 Merge pull request #578 from Sonicadvance1/more_robust_interpreter_check
More robust FEXInterpreter checks
2020-12-10 11:37:21 +02:00
Stefanos Kornilios Mitsis Poiitidis bd01808633 Merge pull request #577 from Sonicadvance1/smarter_dfl
Makes us handle DFL smarter
2020-12-10 11:34:07 +02:00
Stefanos Kornilios Mitsis Poiitidis 0816866c08 Merge pull request #576 from Sonicadvance1/remove_args
Removes Main config loader from test runners
2020-12-10 11:33:01 +02:00
Ryan Houdek 20f11f25ca Fixes FEXInterpreter argument loading
If the guest application tried pushing arguments then optparse was still
capturing them as unknown and failing.

Just push the arguments directly in to our argument lists
2020-12-09 20:35:02 -08:00
Ryan Houdek 01831ec264 Check for binfmt_misc install and run directly only if installed
If we want to execve files directly we need to ensure that the
binfmt_misc interpreter path is installed.
If it isn't installed then we need to fall down the regular path of
pushing FEX to the front of the argument list.
2020-12-09 20:34:03 -08:00
Ryan Houdek ee88edaa6d Changes FEXInterpreter install to a hardlink
The only way to determine if we are running in the "interpreter" mode is
by determining filename.
if any application does an execve then we use /proc/self/exe to
determine which FEX we should execute. Sadly this resolved the softlink
to FEXLoader, breaking the chain.
Change it to a hardlink in order to ensure this doesn't happen.

This also moves the install target outside of aarch64 install target so
it can be tested on x86 hosts.
2020-12-09 20:27:30 -08:00
Ryan Houdek 20a93ba96c Makes us handle DFL smarter
For the ones that should be IGNORE we can safely ignore them at that
point.
For the ones that have a default behaviour of crashing, just go ahead
and crash.

This was having the fun problem space that if we received an ignore
event, we would remove the fault handler then if the guest registered a
handler it would have never been called.

SIGWINCH specifically is one that defaults to ignore and we need to care
about. If SIGWICH happened before the guest registered a handler then it
would never receive the signal.

The ones that their default behaviour is faulting are fine to uninstall
and then immediately crash, since it is a real crash at that point.
2020-12-09 20:07:03 -08:00
Ryan Houdek 6dc532e90e Removes Main config loader from test runners
This was accidental and can cause test failures.
Make sure to not load arguments from Main config for these
2020-12-09 20:04:58 -08:00
Ryan Houdek d42caac423 Merge pull request #569 from Sonicadvance1/interpreter_check
binfmt_misc interpreter and execve improvements
2020-12-08 07:34:30 -08:00
Ryan Houdek 92dc46c8bd Adds x86 binfmt_misc support
Allows launching 32bit applications directly now
2020-12-08 07:28:51 -08:00
Ryan Houdek 61641dcc92 Adds interpreter handling to the x86 execve path
Will fix the same bugs as the 64bit path
2020-12-08 07:28:50 -08:00
Ryan Houdek 9882447ed5 Adds interpreter handling to the x64 execve path
Will fix some application launching problems
2020-12-08 07:28:50 -08:00
Ryan Houdek 3d21aaf617 Adds config option to syscall handler for determining if we're
interpreter
2020-12-08 07:28:50 -08:00
Ryan Houdek db49ab4149 Changes the frontend FEXLoader argument loading path
If the interpreter was executed then don't even try handling arguments.
They will all get passed to the guest application
2020-12-08 07:28:50 -08:00
Ryan Houdek 1b4dc23c13 Adds an argument loader without FEX arguments
Will be necessary when the interpreter path is enabled, we can't accept
arguments there
2020-12-08 07:28:50 -08:00
Ryan Houdek 4603b92b9f Adds an option for determining if we were interpreter executed
Will be necessary soon
2020-12-08 07:28:50 -08:00
Ryan Houdek a23c045c23 Adds a ELFLoader helper to determine supported ELF file
We will need to check if an application can be executed through the
interpreter by checking program getting executed
2020-12-08 07:28:50 -08:00
Ryan Houdek d7c4999355 Adds a symlink install target
Symlinks FEXLoader to FEXInterpreter and switches binfmt_misc to use it
It's the only safe way to determine if we are the interpreter or just
someone executing through FEXLoader directly.
2020-12-08 07:28:50 -08:00
Ryan Houdek 7a9b953d71 Merge pull request #568 from Sonicadvance1/config_ui
Adds a new UI application for setting config options
2020-12-08 07:28:26 -08:00
Ryan Houdek 7e2ddc6fb6 Adds a new UI application for setting config options 2020-12-08 07:24:52 -08:00
Stefanos Kornilios Mitsis Poiitidis 3ebc080bd4 Merge pull request #566 from Sonicadvance1/overlay_config
Switches over to having a correctly layered configuration system
2020-12-08 11:14:16 +02:00
Ryan Houdek f14cd54791 Switches over to having a correctly layered configuration system
Instead of having the configuration being loaded and stored in to a
frontend system. First moves the backing store of the configuration in
to FEXCore.

Each layer that is constructed then loads its particular configuration.
After the layers are loaded, then a meta layer is constructed that
merges the layers flat.

This means we will no longer hit the problem where a configuration is
stored in the "main" configuration file, then environment and arguments
passed manage to overwrite it.

The order of the layers going from inner most layer to outer most, with
outermost overwriting previous layer configurations is as follows:

Main < Global application < Local application < Arguments < Environment

One step that needs to be changed in the future is that FEXCore can then
just load its configuration from the layers directly since the data is
in FEXCore now. This will be reserved for a future change so we are less
disruptive.
2020-12-07 11:15:48 -08:00
Ryan Houdek 48e675e9de Removes the lockstep runner
This has long been broken and will block configuration changes
2020-12-05 21:17:52 -08:00
Ryan Houdek 1b1edda72d Adds an environment variable for installation directly
This will allow us to look for a global application profile in our
install location.
Once we have things to install there.
2020-12-05 21:17:52 -08:00
Stefanos Kornilios Mitsis Poiitidis 7ddf520480 Merge pull request #563 from Sonicadvance1/more_32bit_fixes2
More 32bit syscall fixes
2020-12-04 22:21:46 +02:00
Ryan Houdek f091878100 More 32bit syscall fixes
fstatfs64 and statfs64 was wrong, the syscall doesn't quite match the
glibc definition

Fixes recvmsg. Specifically the aux data was failing, thus SCM_RIGHTS
wasn't getting passed correctly.

Fixes a couple of time syscalls where their arguments are optional.
2020-12-04 09:30:33 -08:00
Stefanos Kornilios Mitsis Poiitidis 7f11d6ba44 Merge pull request #562 from Sonicadvance1/last_small_mul
Removes the last usage of 8bit and 16bit multiply
2020-12-04 19:17:50 +02:00
Ryan Houdek 30dc9128ca Removes the last usage of 8bit and 16bit multiply
This was causing issues in 32bit xeyes.
A couple of the multiply ops were still using 8bit and 16bit multiply
while the other one was already sexting or zexting the source.
2020-12-04 08:59:52 -08:00
Ryan Houdek 3baab043b8 Merge pull request #549 from FEX-Emu/skmp/fcmp-bypass
FCMP: Add frontend bypass, backend float support in OP_CONDJUMP & OP_SELECT
2020-12-04 07:52:43 -08:00
Stefanos Kornilios Mitsis Poiitidis b2b0d9318a arm64: Fix OP_SELECT & OP_CONDJUMP gpr/fpr detection 2020-12-04 16:04:27 +02:00
Stefanos Kornilios Mitsis Poiitidis 1363be8239 x64: Add support for floats in OP_SELECT & OP_CONDJUMP 2020-12-04 15:30:55 +02:00
Stefanos Kornilios Mitsis Poiitidis b32ed1db8c x64: Refactor CC logic, add float compares 2020-12-04 15:30:55 +02:00
Stefanos Kornilios Mitsis Poiitidis b044413952 OpDisp, IR, Backends: Add Float compares to Select, CondJump, COND_F* 2020-12-04 15:30:55 +02:00
Stefanos Kornilios Mitsis Poiitidis e024667c7e Merge pull request #548 from FEX-Emu/skmp/faster-fcmp-op
IR: Change FCMP to return x86-style flags
2020-12-04 09:08:40 +02:00
Stefanos Kornilios Mitsis Poiitidis cfdf6ebf6b IR: Change FCMP to return x86-style flags 2020-12-04 08:55:19 +02:00
Stefanos Kornilios Mitsis Poiitidis 3bc13581a8 Merge pull request #557 from FEX-Emu/skmp/memops-imm-pooling
ConstProp: LoadMem/StoreMem imm pooling
2020-12-04 08:54:13 +02:00
Stefanos Kornilios Mitsis Poiitidis 9b6f0df657 Merge pull request #545 from FEX-Emu/skmp/add-dfprse
IR: Add a rather ineffective DeadFPRStoreElim Pass
2020-12-04 08:52:47 +02:00
Stefanos Kornilios Mitsis Poiitidis 8e62a6891b Merge pull request #544 from FEX-Emu/skmp/lse-remove-partial-writes
LSE: Also optimize away partial writes
2020-12-04 08:52:21 +02:00
Stefanos Kornilios Mitsis Poiitidis b9f1bfe362 Merge pull request #540 from Sonicadvance1/32bit_fixes_rebase
A wackload of new 32bit syscall support
2020-12-04 08:51:47 +02:00
Stefanos Kornilios Mitsis Poiitidis 003991e495 Merge pull request #503 from Sonicadvance1/remove_duplicate_compaction
Remove duplicated compaction pass
2020-12-04 08:44:21 +02:00
Stefanos Kornilios Mitsis Poiitidis c29f890d7a IR: Add a rather ineffective DeadFPRStoreElim Pass 2020-12-04 08:08:23 +02:00
Stefanos Kornilios Mitsis Poiitidis 2f12fd6ee4 ConstProp: LoadMem/StoreMem imm pooling
If imms used in memops are close enough, generate them with address gen instead
of allocating a new const
2020-12-04 08:04:44 +02:00
Stefanos Kornilios Mitsis Poiitidis d622e7b557 LSE: Also optimize away partial writes 2020-12-04 07:53:33 +02:00
Ryan Houdek c116a20e13 Merge pull request #542 from FEX-Emu/skmp/frontend-improve-reps
OpDisp: Read DF outside REP loops as it won't change
2020-12-03 20:23:40 -08:00