From 19cd42204e940541c5a1d904d2dccb391a4ea3f2 Mon Sep 17 00:00:00 2001 From: Merry Date: Sat, 28 Oct 2023 17:31:07 +0100 Subject: [PATCH] oaknut: code_block: Add NetBSD and OpenBSD support --- include/oaknut/code_block.hpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/include/oaknut/code_block.hpp b/include/oaknut/code_block.hpp index 1c29ad0..bfa87d9 100644 --- a/include/oaknut/code_block.hpp +++ b/include/oaknut/code_block.hpp @@ -36,6 +36,10 @@ public: # else m_memory = (std::uint32_t*)mmap(nullptr, size, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_ANON | MAP_PRIVATE | MAP_JIT, -1, 0); # endif +#elif defined(__NetBSD__) + m_memory = (std::uint32_t*)mmap(nullptr, size, PROT_MPROTECT(PROT_READ | PROT_WRITE | PROT_EXEC), MAP_ANON | MAP_PRIVATE, -1, 0); +#elif defined(__OpenBSD__) + m_memory = (std::uint32_t*)mmap(nullptr, size, PROT_READ | PROT_EXEC, MAP_ANON | MAP_PRIVATE, -1, 0); #else m_memory = (std::uint32_t*)mmap(nullptr, size, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_ANON | MAP_PRIVATE, -1, 0); #endif @@ -68,23 +72,19 @@ public: void protect() { -#if defined(__APPLE__) -# if TARGET_OS_IPHONE - mprotect(m_memory, m_size, PROT_READ | PROT_EXEC); -# else +#if defined(__APPLE__) && !TARGET_OS_IPHONE pthread_jit_write_protect_np(1); -# endif +#elif defined(__APPLE__) || defined(__NetBSD__) || defined(__OpenBSD__) + mprotect(m_memory, m_size, PROT_READ | PROT_EXEC); #endif } void unprotect() { -#if defined(__APPLE__) -# if TARGET_OS_IPHONE - mprotect(m_memory, m_size, PROT_READ | PROT_WRITE); -# else +#if defined(__APPLE__) && !TARGET_OS_IPHONE pthread_jit_write_protect_np(0); -# endif +#elif defined(__APPLE__) || defined(__NetBSD__) || defined(__OpenBSD__) + mprotect(m_memory, m_size, PROT_READ | PROT_WRITE); #endif }