From ca599254955344e554fe67644cc7e7929fd1d0d5 Mon Sep 17 00:00:00 2001 From: tevador Date: Sun, 23 Dec 2018 14:09:09 +0100 Subject: [PATCH] JitCompilerX86: use mmap to allocate an executable buffer compile as c++11 --- makefile | 2 +- src/JitCompilerX86.cpp | 20 +++++--------------- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/makefile b/makefile index 4ff31b9..4b51084 100644 --- a/makefile +++ b/makefile @@ -1,7 +1,7 @@ #CXX=g++-8 #CC=gcc-8 PLATFORM=$(shell uname -i) -CXXFLAGS=-std=c++17 +CXXFLAGS=-std=c++11 CCFLAGS= ifeq ($(PLATFORM),x86_64) CXXFLAGS += -maes diff --git a/src/JitCompilerX86.cpp b/src/JitCompilerX86.cpp index 7212a57..9fb106a 100644 --- a/src/JitCompilerX86.cpp +++ b/src/JitCompilerX86.cpp @@ -24,12 +24,9 @@ along with RandomX. If not, see. #ifdef _WIN32 #include -#elif defined(__linux__) -#include -#include -#include #else -#error "Unsupported operating system" +#include +#include #endif namespace RandomX { @@ -204,16 +201,9 @@ namespace RandomX { if (code == nullptr) throw std::runtime_error("VirtualAlloc failed"); #else - auto pagesize = sysconf(_SC_PAGE_SIZE); - if (pagesize == -1) - throw std::runtime_error("sysconf failed"); - - code = (uint8_t*)memalign(pagesize, CodeSize); - if (code == nullptr) - throw std::runtime_error("memalign failed"); - - if (mprotect(code, CodeSize, PROT_READ | PROT_WRITE | PROT_EXEC) == -1) - throw std::runtime_error("mprotect failed"); + code = (uint8_t*)mmap(nullptr, CodeSize, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); + if (code == (uint8_t*)-1) + throw std::runtime_error("mmap failed"); #endif memcpy(code, prologue, sizeof(prologue)); if (startOffsetAligned - sizeof(prologue) > 4) {