Files
FEX-Emu--FEX/unittests
Ryan Houdek 6f846db863 unittests/ASM: Test 32-bit displacement encoding
I noticed that we weren't actually testing 32-bit displacement on
64-bit. This is an edge case on 64-bit where you can have 32-bit
displacement WITHOUT it being RIP relative. This is very uncommonly used
but is technically a possibility where 64-bit code can access an
absolute address in the lower 2GB.

With negative addresses you could technically access canonical kernel
addresses in the lower 2GB if they were mapped in userspace, but since
they aren't this is untestable (FEX also doesn't handle canonical kernel
addresses correctly anyway).

`MemoryData.asm` accidentally tested this but it didn't test both load
and store sides. So let's be a bit more stringent on this.
2025-12-15 16:21:33 -08:00
..
2025-12-04 01:45:32 -08:00
2025-09-15 13:06:48 -07:00
2024-04-15 09:40:00 +02:00
2020-08-21 01:29:37 +12:00
2025-09-15 13:06:48 -07:00

FEX Unit tests

FEX has its own test suite for x86-64 emulation, and we also use gcc's target tests, posixtest, and gvisor's tests. We use a combination of CMake/CTest and python runner scripts.

We also regularly run and pass qemu's and valgrind's tests for validation, but those aren't in CI right now.

x86/64 testing

  • A lot of handwritten assembly unit tests in 32Bit_ASM and ASM folders, run via our TestHarnessHelper
  • A few handwritten IR tests in IR, run via our IRLoader
  • gcc-target-tests-32 and gcc-target-tests-64, run via FEX. The tests binaries are in External/fex-gcc-target-tests-bins

Syscall testing