don't use mmap in allocStack for WASI
This commit is contained in:
parent
15cf311425
commit
267a62d292
2
makefile
2
makefile
@ -29,7 +29,7 @@ heapverifyn-singeli:
|
||||
rtverifyn-singeli:
|
||||
@${MAKE} singeli=1 t=rtverifyn_si f="-O3 -DRT_VERIFY -DEEQUAL_NEGZERO -march=native" c
|
||||
wasi-o3:
|
||||
@${MAKE} singeli=0 t=wasi_o3 f="-DWASM -DWASI -O3 -DCATCH_ERRORS=0 -D_WASI_EMULATED_MMAN --target=wasm32-wasi" LDFLAGS="-lwasi-emulated-mman --target=wasm32-wasi" LD_LIBS= PIE= c
|
||||
@${MAKE} singeli=0 t=wasi_o3 f="-DWASM -DWASI -DNO_MMAP -O3 -DCATCH_ERRORS=0 -D_WASI_EMULATED_MMAN --target=wasm32-wasi" LDFLAGS="-lwasi-emulated-mman --target=wasm32-wasi" LD_LIBS= PIE= c
|
||||
emcc-o3:
|
||||
@${MAKE} singeli=0 t=emcc_o3 f='-DWASM -DEMCC -O3' LDFLAGS='-s EXPORTED_FUNCTIONS=_main,_cbqn_runLine -s EXPORTED_RUNTIME_METHODS=ccall,cwrap -s ALLOW_MEMORY_GROWTH=1' CC=emcc c
|
||||
|
||||
|
||||
@ -39,7 +39,7 @@ static NOINLINE void* BN(allocateMore)(i64 bucket, u8 type, i64 from, i64 to) {
|
||||
if (mm_heapAlloc+sz >= mm_heapMax) thrOOM();
|
||||
mm_heapAlloc+= sz;
|
||||
// gc_maybeGC();
|
||||
#if WASI
|
||||
#if NO_MMAP
|
||||
EmptyValue* c = calloc(sz+getPageSize(), 1);
|
||||
#else
|
||||
EmptyValue* c = MMAP(sz);
|
||||
|
||||
8
src/vm.c
8
src/vm.c
@ -976,7 +976,13 @@ static void allocStack(void** curr, void** start, void** end, i32 elSize, i32 co
|
||||
usz ps = getPageSize();
|
||||
u64 sz = (elSize*count + ps-1)/ps * ps;
|
||||
assert(sz%elSize == 0);
|
||||
*curr = *start = mmap(NULL, sz+ps, PROT_READ|PROT_WRITE, MAP_NORESERVE|MAP_PRIVATE|MAP_ANON, -1, 0);
|
||||
#if NO_MMAP
|
||||
void* mem = malloc(sz+ps);
|
||||
#else
|
||||
void* mem = mmap(NULL, sz+ps, PROT_READ|PROT_WRITE, MAP_NORESERVE|MAP_PRIVATE|MAP_ANON, -1, 0);
|
||||
if (*curr == MAP_FAILED) err("Failed to allocate stack");
|
||||
#endif
|
||||
*curr = *start = mem;
|
||||
*end = ((char*)*start)+sz;
|
||||
#if !WASM
|
||||
mprotect(*end, ps, PROT_NONE); // idk first way i found to force erroring on overflow
|
||||
|
||||
Loading…
Reference in New Issue
Block a user