diff options
Diffstat (limited to 'gdb/cli')
-rw-r--r-- | gdb/cli/cli-cmds.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c index 0b55a12..c2ba3a4 100644 --- a/gdb/cli/cli-cmds.c +++ b/gdb/cli/cli-cmds.c @@ -800,6 +800,18 @@ exit_status_set_internal_vars (int exit_status) clear_internalvar (var_signal); if (WIFEXITED (exit_status)) set_internalvar_integer (var_code, WEXITSTATUS (exit_status)); +#ifdef __MINGW32__ + else if (WIFSIGNALED (exit_status) && WTERMSIG (exit_status) == -1) + { + /* The -1 condition can happen on MinGW, if we don't recognize + the fatal exception code encoded in the exit status; see + gdbsupport/gdb_wait.c. We don't want to lose information in + the exit status in that case. Record it as a normal exit + with the full exit status, including the higher 0xC0000000 + bits. */ + set_internalvar_integer (var_code, exit_status); + } +#endif else if (WIFSIGNALED (exit_status)) set_internalvar_integer (var_signal, WTERMSIG (exit_status)); else |