From fd4d81dd04b4e606ce40a41d66368ba77c77c753 Mon Sep 17 00:00:00 2001 From: Arnaud Patard Date: Fri, 19 Jun 2009 10:39:36 +0300 Subject: [PATCH] linux-user: increment MAX_ARG_PAGES There's a error When doing something like that : find / -type f -print0 | xargs -0 echo [ done in a arm chroot with qemu-arm and linux binfmt stuff or with find / -type f -print0 | qemu-arm -L /usr/bin/xargs -0 echo ] Doing this outsite qemu is fine. The problem was the huge number of parameters. Increasing MAX_ARG_PAGES is fixing that. While I was at it, I've modified linux-user/main.c to report error code of loader_exec. It helps to debug/know what's wrong. Signed-off-by: Arnaud Patard Signed-off-by: Riku Voipio --- linux-user/main.c | 8 +++++--- linux-user/qemu.h | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/linux-user/main.c b/linux-user/main.c index 7eabd0c22f..345d338a1e 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -2372,6 +2372,7 @@ int main(int argc, char **argv, char **envp) envlist_t *envlist = NULL; const char *argv0 = NULL; int i; + int ret; if (argc <= 1) usage(); @@ -2576,9 +2577,10 @@ int main(int argc, char **argv, char **envp) env->opaque = ts; task_settid(ts); - if (loader_exec(filename, target_argv, target_environ, regs, - info, &bprm) != 0) { - printf("Error loading %s\n", filename); + ret = loader_exec(filename, target_argv, target_environ, regs, + info, &bprm); + if (ret != 0) { + printf("Error %d while loading %s\n", ret, filename); _exit(1); } diff --git a/linux-user/qemu.h b/linux-user/qemu.h index e04a31c69c..83ad443c23 100644 --- a/linux-user/qemu.h +++ b/linux-user/qemu.h @@ -140,7 +140,7 @@ extern const char *qemu_uname_release; * and envelope for the new program. 32 should suffice, this gives * a maximum env+arg of 128kB w/4KB pages! */ -#define MAX_ARG_PAGES 32 +#define MAX_ARG_PAGES 33 /* * This structure is used to hold the arguments that are