Better printing of out of range --dynamic-space-size arguments.
authorStas Boukarev <stassats@gmail.com>
Sat, 30 Nov 2013 20:53:13 +0000 (00:53 +0400)
committerStas Boukarev <stassats@gmail.com>
Sat, 30 Nov 2013 20:53:13 +0000 (00:53 +0400)
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
src/runtime/validate.c

index b95ed51..e49d7d1 100644 (file)
@@ -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;
index 2b9fc69..f7acb74 100644 (file)
@@ -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,