aboutsummaryrefslogtreecommitdiff
path: root/semihosting
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2022-04-26 19:51:29 -0700
committerLaurent Vivier <laurent@vivier.eu>2022-05-23 08:15:19 +0200
commit60f1c8017a2b137013a8ae83911d74700f692425 (patch)
treed463d93eeaf5b40c38b275a9940d0bb618900e35 /semihosting
parent3757b0d08b399c609954cf57f273b1167e5d7a8d (diff)
linux-user: Clean up arg_start/arg_end confusion
We had two sets of variables: arg_start/arg_end, and arg_strings/env_strings. In linuxload.c, we set the first pair to the bounds of the argv strings, but in elfload.c, we set the first pair to the bounds of the argv pointers and the second pair to the bounds of the argv strings. Remove arg_start/arg_end, replacing them with the standard argc/argv/envc/envp values. Retain arg_strings/env_strings with the meaning we were using in elfload.c. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/714 Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20220427025129.160184-1-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Diffstat (limited to 'semihosting')
-rw-r--r--semihosting/arm-compat-semi.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/semihosting/arm-compat-semi.c b/semihosting/arm-compat-semi.c
index 7a51fd0737..b6ddaf863a 100644
--- a/semihosting/arm-compat-semi.c
+++ b/semihosting/arm-compat-semi.c
@@ -1106,7 +1106,7 @@ target_ulong do_common_semihosting(CPUState *cs)
#else
unsigned int i;
- output_size = ts->info->arg_end - ts->info->arg_start;
+ output_size = ts->info->env_strings - ts->info->arg_strings;
if (!output_size) {
/*
* We special-case the "empty command line" case (argc==0).
@@ -1146,7 +1146,7 @@ target_ulong do_common_semihosting(CPUState *cs)
goto out;
}
- if (copy_from_user(output_buffer, ts->info->arg_start,
+ if (copy_from_user(output_buffer, ts->info->arg_strings,
output_size)) {
errno = EFAULT;
status = set_swi_errno(cs, -1);