diff options
author | Liviu Ionescu <ilg@livius.net> | 2015-06-26 14:22:36 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2015-06-26 14:22:36 +0100 |
commit | f3c2bda216a00676e40301b5843ac3d6c3b2537a (patch) | |
tree | 8b4537aa8ddfe775d6a3f157734d2b75576619c5 /target-arm/arm-semi.c | |
parent | ca7937365305d144cf0c97b907dac6f70ea152ef (diff) |
target-arm: default empty semihosting cmdline
If neither explicit semihosting args nor -kernel are used,
make SYS_GET_CMDLINE return an empty string.
Signed-off-by: Liviu Ionescu <ilg@livius.net>
Message-id: AC7B5AFC-06AE-4FAD-9852-B65708E80E09@livius.net
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'target-arm/arm-semi.c')
-rw-r--r-- | target-arm/arm-semi.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/target-arm/arm-semi.c b/target-arm/arm-semi.c index 74a67e9fdd..a2a7369567 100644 --- a/target-arm/arm-semi.c +++ b/target-arm/arm-semi.c @@ -436,12 +436,19 @@ uint32_t do_arm_semihosting(CPUARMState *env) size_t input_size; size_t output_size; int status = 0; +#if !defined(CONFIG_USER_ONLY) + const char *cmdline; +#endif GET_ARG(0); GET_ARG(1); input_size = arg1; /* Compute the size of the output string. */ #if !defined(CONFIG_USER_ONLY) - output_size = strlen(semihosting_get_cmdline()) + 1; + cmdline = semihosting_get_cmdline(); + if (cmdline == NULL) { + cmdline = ""; /* Default to an empty line. */ + } + output_size = strlen(cmdline) + 1; /* Count terminating 0. */ #else unsigned int i; @@ -472,7 +479,7 @@ uint32_t do_arm_semihosting(CPUARMState *env) /* Copy the command-line arguments. */ #if !defined(CONFIG_USER_ONLY) - pstrcpy(output_buffer, output_size, semihosting_get_cmdline()); + pstrcpy(output_buffer, output_size, cmdline); #else if (output_size == 1) { /* Empty command-line. */ |