Crashed here:
N_NIMCALL(void, initgc_11401)(void) {
nimfr("initGC", "gc.nim")
nimln(293, "gc.nim");
gch_50459.cyclethreshold = ((NI) 4194304);
nimln(294, "gc.nim");
gch_50459.stat.stackscans = ((NI) 0);
nimln(295, "gc.nim");
gch_50459.stat.cyclecollections = ((NI) 0);
nimln(296, "gc.nim");
gch_50459.stat.maxthreshold = ((NI) 0);
nimln(297, "gc.nim");
gch_50459.stat.maxstacksize = ((NI) 0);
nimln(298, "gc.nim");
gch_50459.stat.maxstackcells = ((NI) 0);
nimln(299, "gc.nim");
gch_50459.stat.cycletablesize = ((NI) 0);
nimln(301, "gc.nim");
init_48202((&gch_50459.zct), ((NI) 1024)); Crashed here
nimln(302, "gc.nim");
init_48202((&gch_50459.tempstack), ((NI) 1024));
nimln(303, "gc.nim");
init_48217((&gch_50459.cycleroots));
nimln(304, "gc.nim");
init_48202((&gch_50459.decstack), ((NI) 1024));
popFrame();
}
More info:
static N_INLINE(void*, osallocpages_30015)(NI size) {
void* result;
nimfr("osAllocPages", "alloc.nim")
result = 0;
nimln(103, "alloc.nim");
result = mmap(NIM_NIL, size, ((int) 3), ((NI32) 4098), ((int) -1), ((NI) 0));
/////
// here: size is 524288
// result is -1 ,errno = 9 #define EBADF 9
// "out of memory" will be raised.
/////
nimln(105, "alloc.nim");
{
NIM_BOOL LOC3;
LOC3 = 0;
LOC3 = (result == NIM_NIL);
if (LOC3) goto LA4;
LOC3 = (result == ((void*) -1));
LA4: ;
if (!LOC3) goto LA5;
nimln(106, "alloc.nim");
raiseoutofmem_28633();
}
LA5: ;
popFrame();
return result;
}
after created a main.nim.cfg :
nim
arm.linux.gcc.path = "/Users/kin/Documents/android_toolchains/Darwin-x86_64/arm-linux-androideabi-4.9/bin"
arm.linux.gcc.exe = "arm-linux-androideabi-gcc"
arm.linux.gcc.linkerexe = "arm-linux-androideabi-gcc"
arm64.linux.gcc.path = "/Users/kin/Documents/android_toolchains/Darwin-x86_64/aarch64-linux-androideabi-4.9/bin"
arm64.linux.gcc.exe = "aarch64-linux-androideabi-gcc"
arm64.linux.gcc.linkerexe = "aarch64-linux-androideabi-gcc"
build.sh
export SYSROOT=~/android_toolchains/Darwin-x86_64/arm-linux-androideabi-4.9/sysroot
#nim c --cpu:arm --os:linux --parallelBuild:1 --passC:--sysroot="$SYSROOT" --passL:--sysroot="$SYSROOT"
nim cc --verbosity:3 --cpu:arm --os:linux --passC:--sysroot="$SYSROOT" --passC:-pie --passL:--sysroot="$SYSROOT" --passL:-pie main.nim
It works.
btw,nim is really cool.