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. thanks -- PMM