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:
|
rtverifyn-singeli:
|
||||||
@${MAKE} singeli=1 t=rtverifyn_si f="-O3 -DRT_VERIFY -DEEQUAL_NEGZERO -march=native" c
|
@${MAKE} singeli=1 t=rtverifyn_si f="-O3 -DRT_VERIFY -DEEQUAL_NEGZERO -march=native" c
|
||||||
wasi-o3:
|
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:
|
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
|
@${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();
|
if (mm_heapAlloc+sz >= mm_heapMax) thrOOM();
|
||||||
mm_heapAlloc+= sz;
|
mm_heapAlloc+= sz;
|
||||||
// gc_maybeGC();
|
// gc_maybeGC();
|
||||||
#if WASI
|
#if NO_MMAP
|
||||||
EmptyValue* c = calloc(sz+getPageSize(), 1);
|
EmptyValue* c = calloc(sz+getPageSize(), 1);
|
||||||
#else
|
#else
|
||||||
EmptyValue* c = MMAP(sz);
|
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();
|
usz ps = getPageSize();
|
||||||
u64 sz = (elSize*count + ps-1)/ps * ps;
|
u64 sz = (elSize*count + ps-1)/ps * ps;
|
||||||
assert(sz%elSize == 0);
|
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;
|
*end = ((char*)*start)+sz;
|
||||||
#if !WASM
|
#if !WASM
|
||||||
mprotect(*end, ps, PROT_NONE); // idk first way i found to force erroring on overflow
|
mprotect(*end, ps, PROT_NONE); // idk first way i found to force erroring on overflow
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user