don't use mmap in allocStack for WASI

This commit is contained in:
dzaima 2022-04-07 00:04:12 +03:00
parent 15cf311425
commit 267a62d292
3 changed files with 9 additions and 3 deletions

View File

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

View File

@ -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);

View File

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