aboutsummaryrefslogtreecommitdiff
path: root/target-arm/arm-semi.c
diff options
context:
space:
mode:
authorLiviu Ionescu <ilg@livius.net>2015-06-26 14:22:36 +0100
committerPeter Maydell <peter.maydell@linaro.org>2015-06-26 14:22:36 +0100
commitf3c2bda216a00676e40301b5843ac3d6c3b2537a (patch)
tree8b4537aa8ddfe775d6a3f157734d2b75576619c5 /target-arm/arm-semi.c
parentca7937365305d144cf0c97b907dac6f70ea152ef (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.c11
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. */