Adds kernel version check to FEXLoader

We require kernel 4.17 minimum on the host to run correctly
This commit is contained in:
Ryan Houdek committed 2021-01-15 13:55:04 -08:00
1 parent 80dfa76d48
commit 0e11dea46f
2 files changed
+10 -2

No files matched your search

+8
View File
@@ -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);
+2 -2
View File
@@ -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<void*>(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<void*>(Address), Size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
LogMan::Throw::A(Result == reinterpret_cast<void*>(Address), "mmap failed");
return Result;
};