[Qemu-devel] [PATCH] pass semihosting exit code back to system
Signed-off-by: Liviu Ionescu --- target-arm/arm-semi.c | 12 ++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/target-arm/arm-semi.c b/target-arm/arm-semi.c index ebb5235..4b982ad 100644 --- a/target-arm/arm-semi.c +++ b/target-arm/arm-semi.c @@ -58,6 +58,11 @@ #define TARGET_SYS_HEAPINFO0x16 #define TARGET_SYS_EXIT0x18 +/* ADP_Stopped_ApplicationExit is used for exit(0), + * anything else is implemented as exit(1) */ +#define ADP_Stopped_ApplicationExit ((2 << 16) + 38) +#define ADP_Stopped_RunTimeError((2 << 16) + 35) + #ifndef O_BINARY #define O_BINARY 0 #endif @@ -551,8 +556,11 @@ uint32_t do_arm_semihosting(CPUARMState *env) return 0; } case TARGET_SYS_EXIT: -gdb_exit(env, 0); -exit(0); +/* ARM specifies only Stopped_ApplicationExit as normal + * exit, everything else is considered an error */ +ret = (args == ADP_Stopped_ApplicationExit) ? 0 : 1; +gdb_exit(env, ret); +exit(ret); default: fprintf(stderr, "qemu: Unsupported SemiHosting SWI 0x%02x\n", nr); cpu_dump_state(cs, stderr, fprintf, 0); -- 1.9.3 (Apple Git-50)
Re: [Qemu-devel] [PATCH] pass semihosting exit code back to system
On 18 November 2014 19:29, Liviu Ionescu wrote: > Signed-off-by: Liviu Ionescu > --- > target-arm/arm-semi.c | 12 ++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > > diff --git a/target-arm/arm-semi.c b/target-arm/arm-semi.c > index ebb5235..4b982ad 100644 > --- a/target-arm/arm-semi.c > +++ b/target-arm/arm-semi.c > @@ -58,6 +58,11 @@ > #define TARGET_SYS_HEAPINFO0x16 > #define TARGET_SYS_EXIT0x18 > > +/* ADP_Stopped_ApplicationExit is used for exit(0), > + * anything else is implemented as exit(1) */ > +#define ADP_Stopped_ApplicationExit ((2 << 16) + 38) > +#define ADP_Stopped_RunTimeError((2 << 16) + 35) The ARM documentation seems to define this value as 0x20026 rather than with a shift-and-decimal-value, so I'd rather follow that. Otherwise this patch looks good. Again, I can take the patch into my queue and fix this nit as I do so, or you can reroll if you'd rather do it yourself. thanks -- PMM
Re: [Qemu-devel] [PATCH] pass semihosting exit code back to system
On 18 Nov 2014, at 21:48, Peter Maydell wrote: > The ARM documentation seems to define this value as > 0x20026 rather than with a shift-and-decimal-value, so > I'd rather follow that. right, I changed it and resent. regards, Liviu