NetBSD: Use PROT_MPROTECT() and disable getentropy().

Note: this is not an officially supported target.
Contributed by David Carlier.
This commit is contained in:
Mike Pall
2021-03-29 10:41:52 +02:00
parent 9442226825
commit 3217240b47
3 changed files with 14 additions and 4 deletions

View File

@@ -256,6 +256,11 @@ static void *callback_mcode_init(global_State *g, uint32_t *page)
#ifndef MAP_ANONYMOUS
#define MAP_ANONYMOUS MAP_ANON
#endif
#ifdef PROT_MPROTECT
#define CCPROT_CREATE (PROT_MPROTECT(PROT_EXEC))
#else
#define CCPROT_CREATE 0
#endif
#endif
@@ -271,7 +276,7 @@ static void callback_mcode_new(CTState *cts)
if (!p)
lj_err_caller(cts->L, LJ_ERR_FFI_CBACKOV);
#elif LJ_TARGET_POSIX
p = mmap(NULL, sz, (PROT_READ|PROT_WRITE), MAP_PRIVATE|MAP_ANONYMOUS,
p = mmap(NULL, sz, (PROT_READ|PROT_WRITE|CCPROT_CREATE), MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0);
if (p == MAP_FAILED)
lj_err_caller(cts->L, LJ_ERR_FFI_CBACKOV);