On 20:09 Wed 22 Jun , Peter Maydell wrote: > On Tue, 21 Jun 2022 at 13:59, Luc Michel <lmic...@kalray.eu> wrote: > > > > Add the semihosting_exit_request function to be used by targets when > > handling an `exit' semihosted syscall. This function calls gdb_exit to > > close existing GDB connections, and qemu_system_shutdown_request with > > the new `guest-semi-exit' exit reason. It sets the QEMU exit status > > given by the exit syscall parameter. Finally it stops the CPU to prevent > > further execution, and exit the CPU loop as the syscall caller expects > > this syscall to not return. > > > > This function is meant to be used in place of a raw exit() call when > > handling semihosted `exit' syscalls. Such a call is not safe because > > it does not allow other CPU threads to exit properly, leading to e.g. > > at_exit callbacks being called while other CPUs still run. This can lead > > to strange bugs, especially in plugins with a registered at_exit function. > > This is mixing up two things: > (1) fixing bugs with the plugin code when code (semihosting or > otherwise) calls exit() > (2) reporting to the monitor when the guest exits because it > asked to via semihosting > > I remain unconvinced that this series is actually fixing (1), > I think it's just working around the most common cause of it. > For (2), maybe we want it, but that should I think be a > separate patchset with justification of why it's useful to > tell the monitor about it. I think on balance it probably > is a good idea, but I disagree about (1) and would like to > see these two things not tangled up in the same series.
OK. I'll rework this once Richard's semihosting cleanup series is merged. thanks. Luc > > thanks > -- PMM > > > To declare a filtering error, please use the following link : > https://www.security-mail.net/reporter.php?mid=11a39.62b36915.466b.0&r=lmichel%40kalray.eu&s=peter.maydell%40linaro.org&o=Re%3A+%5BPATCH+v2+2%2F7%5D+semihosting%3A+add+the+semihosting_exit_request+function&verdict=C&c=b75eec0eae9b68db747812558b665a75218eca91 > --