Commit fd4d81dd04b4e606ce40a41d66368ba77c77c753
Committed by
Riku Voipio
1 parent
e8d2a887
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 <path> <path>/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 <arnaud.patard@rtp-net.org> Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
Showing
2 changed files
with
6 additions
and
4 deletions
linux-user/main.c
@@ -2372,6 +2372,7 @@ int main(int argc, char **argv, char **envp) | @@ -2372,6 +2372,7 @@ int main(int argc, char **argv, char **envp) | ||
2372 | envlist_t *envlist = NULL; | 2372 | envlist_t *envlist = NULL; |
2373 | const char *argv0 = NULL; | 2373 | const char *argv0 = NULL; |
2374 | int i; | 2374 | int i; |
2375 | + int ret; | ||
2375 | 2376 | ||
2376 | if (argc <= 1) | 2377 | if (argc <= 1) |
2377 | usage(); | 2378 | usage(); |
@@ -2576,9 +2577,10 @@ int main(int argc, char **argv, char **envp) | @@ -2576,9 +2577,10 @@ int main(int argc, char **argv, char **envp) | ||
2576 | env->opaque = ts; | 2577 | env->opaque = ts; |
2577 | task_settid(ts); | 2578 | task_settid(ts); |
2578 | 2579 | ||
2579 | - if (loader_exec(filename, target_argv, target_environ, regs, | ||
2580 | - info, &bprm) != 0) { | ||
2581 | - printf("Error loading %s\n", filename); | 2580 | + ret = loader_exec(filename, target_argv, target_environ, regs, |
2581 | + info, &bprm); | ||
2582 | + if (ret != 0) { | ||
2583 | + printf("Error %d while loading %s\n", ret, filename); | ||
2582 | _exit(1); | 2584 | _exit(1); |
2583 | } | 2585 | } |
2584 | 2586 |
linux-user/qemu.h
@@ -140,7 +140,7 @@ extern const char *qemu_uname_release; | @@ -140,7 +140,7 @@ extern const char *qemu_uname_release; | ||
140 | * and envelope for the new program. 32 should suffice, this gives | 140 | * and envelope for the new program. 32 should suffice, this gives |
141 | * a maximum env+arg of 128kB w/4KB pages! | 141 | * a maximum env+arg of 128kB w/4KB pages! |
142 | */ | 142 | */ |
143 | -#define MAX_ARG_PAGES 32 | 143 | +#define MAX_ARG_PAGES 33 |
144 | 144 | ||
145 | /* | 145 | /* |
146 | * This structure is used to hold the arguments that are | 146 | * This structure is used to hold the arguments that are |