diff options
-rw-r--r-- | linux-user/elfload.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/linux-user/elfload.c b/linux-user/elfload.c index d3274ed..fc23a6d 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -2783,11 +2783,17 @@ static void load_elf_image(const char *image_name, int image_fd, * and the stack, lest they be placed immediately after * the data segment and block allocation from the brk. * - * 16MB is chosen as "large enough" without being so large - * as to allow the result to not fit with a 32-bit guest on - * a 32-bit host. + * 16MB is chosen as "large enough" without being so large as + * to allow the result to not fit with a 32-bit guest on a + * 32-bit host. However some 64 bit guests (e.g. s390x) + * attempt to place their heap further ahead and currently + * nothing stops them smashing into QEMUs address space. */ +#if TARGET_LONG_BITS == 64 + info->reserve_brk = 32 * MiB; +#else info->reserve_brk = 16 * MiB; +#endif hiaddr += info->reserve_brk; if (ehdr->e_type == ET_EXEC) { |