diff options
Diffstat (limited to 'src/tools/box64stack.c')
| -rwxr-xr-x | src/tools/box64stack.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/tools/box64stack.c b/src/tools/box64stack.c index dab38474..94ca4dd3 100755 --- a/src/tools/box64stack.c +++ b/src/tools/box64stack.c @@ -2,6 +2,7 @@ #include <stdlib.h> #include <stdint.h> #include <string.h> +#include <sys/mman.h> #include "box64stack.h" #include "box64context.h" @@ -15,15 +16,17 @@ EXPORTDYN int CalcStackSize(box64context_t *context) { printf_log(LOG_DEBUG, "Calc stack size, based on %d elf(s)\n", context->elfsize); - context->stacksz = 8*1024*1024; context->stackalign=4; + context->stacksz = 8*1024*1024; context->stackalign=16; for (int i=0; i<context->elfsize; ++i) CalcStack(context->elfs[i], &context->stacksz, &context->stackalign); - if (posix_memalign((void**)&context->stack, context->stackalign, context->stacksz)) { +// if (posix_memalign((void**)&context->stack, context->stackalign, context->stacksz)) { + context->stack = mmap(NULL, context->stacksz, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_GROWSDOWN, -1, 0); + if (context->stack==(void*)-1) { printf_log(LOG_NONE, "Cannot allocate aligned memory (0x%x/0x%x) for stack\n", context->stacksz, context->stackalign); return 1; } - memset(context->stack, 0, context->stacksz); + //memset(context->stack, 0, context->stacksz); printf_log(LOG_DEBUG, "Stack is @%p size=0x%x align=0x%x\n", context->stack, context->stacksz, context->stackalign); return 0; |