diff --git a/Source/Tests/ELFLoader.cpp b/Source/Tests/ELFLoader.cpp index a3e5f2130..1f03bdca0 100644 --- a/Source/Tests/ELFLoader.cpp +++ b/Source/Tests/ELFLoader.cpp @@ -234,6 +234,14 @@ int main(int argc, char **argv, char **const envp) { FEX::HarnessHelper::ELFCodeLoader Loader{Program, LDPath(), Args, ParsedArgs, envp, &Environment}; + uint32_t KernelVersion = FEX::HLE::SyscallHandler::CalculateHostKernelVersion(); + if (KernelVersion < FEX::HLE::SyscallHandler::KernelVersion(4, 17) && + !Loader.Is64BitMode()) { + // We require 4.17 minimum for MAP_FIXED_NOREPLACE on 32bit ELFs + LogMan::Msg::E("FEXLoader requires kernel 4.17 minimum"); + return -1; + } + FEXCore::Context::InitializeStaticTables(Loader.Is64BitMode() ? FEXCore::Context::MODE_64BIT : FEXCore::Context::MODE_32BIT); auto CTX = FEXCore::Context::CreateNewContext(); FEXCore::Context::InitializeContext(CTX); diff --git a/Source/Tests/HarnessHelpers.h b/Source/Tests/HarnessHelpers.h index 872a68daa..07b046912 100644 --- a/Source/Tests/HarnessHelpers.h +++ b/Source/Tests/HarnessHelpers.h @@ -361,8 +361,8 @@ namespace FEX::HarnessHelper { void MapMemoryRegion() override { bool LimitedSize = true; auto DoMMap = [](uint64_t Address, size_t Size) -> void* { - void *Result = mmap(reinterpret_cast(Address), Size, PROT_READ | PROT_WRITE, MAP_FIXED_NOREPLACE | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); - LogMan::Throw::A(Result != (void*)~0ULL, "mmap failed"); + void *Result = mmap(reinterpret_cast(Address), Size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + LogMan::Throw::A(Result == reinterpret_cast(Address), "mmap failed"); return Result; };