oaknut: code_block: Add NetBSD and OpenBSD support

This commit is contained in:
Merry 2023-10-28 17:31:07 +01:00
parent 18b86a3ecf
commit 19cd42204e

View file

@ -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
}