From 1ee20a4186d01454f5cf61a3049160c174568305 Mon Sep 17 00:00:00 2001 From: Stas Boukarev Date: Sun, 1 Dec 2013 00:53:13 +0400 Subject: [PATCH] Better printing of out of range --dynamic-space-size arguments. Stop printing unsigned values of dynamic-space-size as signed, %lu, not %ld. Instead of "argument 4000 is too large, max 4143972351", print "argument 4000 [MB] is too large, max 4046847 KB". --- src/runtime/runtime.c | 16 ++++++++++++---- src/runtime/validate.c | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/runtime/runtime.c b/src/runtime/runtime.c index b95ed51..e49d7d1 100644 --- a/src/runtime/runtime.c +++ b/src/runtime/runtime.c @@ -519,14 +519,22 @@ main(int argc, char *argv[], char *envp[]) ++argi; if (argi >= argc) lose("missing argument for --dynamic-space-size"); - dynamic_space_size = parse_size_arg(argv[argi++], "--dynamic-space-size"); + dynamic_space_size = parse_size_arg(argv[argi++], + "--dynamic-space-size"); # ifdef MAX_DYNAMIC_SPACE_END if (!((DYNAMIC_SPACE_START < DYNAMIC_SPACE_START+dynamic_space_size) && (DYNAMIC_SPACE_START+dynamic_space_size <= - MAX_DYNAMIC_SPACE_END))) - lose("--dynamic-space-size argument %s is too large, max %lu", - argv[argi-1], MAX_DYNAMIC_SPACE_END-DYNAMIC_SPACE_START); + MAX_DYNAMIC_SPACE_END))) { + char* suffix = ""; + char* size = argv[argi-1]; + if (!strchr(size, 'B') && !strchr(size, 'b')) { + suffix = " [MB]"; + } + lose("--dynamic-space-size argument %s%s is too large, max %lu KB", + size, suffix, + (MAX_DYNAMIC_SPACE_END-DYNAMIC_SPACE_START) / 1024); + } # endif } else if (0 == strcmp(arg, "--control-stack-size")) { ++argi; diff --git a/src/runtime/validate.c b/src/runtime/validate.c index 2b9fc69..f7acb74 100644 --- a/src/runtime/validate.c +++ b/src/runtime/validate.c @@ -30,7 +30,7 @@ ensure_space(lispobj *start, uword_t size) { if (os_validate((os_vm_address_t)start,(os_vm_size_t)size)==NULL) { fprintf(stderr, - "ensure_space: failed to validate %ld bytes at 0x%08lx\n", + "ensure_space: failed to validate %lu bytes at 0x%08lx\n", size, (uword_t)start); fprintf(stderr, -- 1.7.10.4