Improve process exit status macros on MinGW
authorEli Zaretskii <eliz@gnu.org>
Mon, 6 Jan 2020 11:51:54 +0000 (11:51 +0000)
committerPedro Alves <palves@redhat.com>
Mon, 6 Jan 2020 11:51:54 +0000 (11:51 +0000)
commit559e7e5056e0671f2f248e1f9c2af849bfe3e64b
tree72cbb9abc638d724015998beb33c2341e31ebff8
parent49078ece048d0871508218203744f95e68ba5b4a
Improve process exit status macros on MinGW

When a Windows program is terminated by a fatal exception, its exit
code is the value of that exception, as defined by the various
EXCEPTION_* symbols in the Windows API headers.  This commit emulates
WTERMSIG etc. by translating the fatal exception codes to more-or-less
equivalent Posix signals.

gdb/ChangeLog:
2020-01-06  Eli Zaretskii  <eliz@gnu.org>
    Pedro Alves  <palves@redhat.com>

* Makefile.in (COMMON_SFILES): Add gdbsupport/gdb_wait.c.
* windows-tdep.c: New enumeration of WINDOWS_SIG* signals.
(windows_gdb_signal_to_target): New function, uses the above
enumeration to convert GDB internal signal codes to equivalent
Windows codes.
(windows_init_abi): Call set_gdbarch_gdb_signal_to_target.
* windows-nat.c: Include "gdb_wait.h".
(get_windows_debug_event): Extract the fatal exception from the
exit status and convert to the equivalent Posix signal number.
* cli/cli-cmds.c (exit_status_set_internal_vars): Account for the
possibility that WTERMSIG returns GDB_SIGNAL_UNKNOWN.
* gdbsupport/gdb_wait.c: New file, implements
windows_status_to_termsig.
* gdbsupport/gdb_wait.h (WIFEXITED, WIFSIGNALED, WEXITSTATUS)
(WTERMSIG) [__MINGW32__]: Separate definitions for MinGW.

gdb/gdbserver/ChangeLog:
2020-01-06  Eli Zaretskii  <eliz@gnu.org>
    Pedro Alves  <palves@redhat.com>

* win32-low.c (get_child_debug_event): Extract the fatal exception
from the exit status and convert to the equivalent Posix signal
number.
(win32_wait): Allow TARGET_WAITKIND_SIGNALLED status as well.
* Makefile.in (OBS, SFILES): Add gdb_wait.[co].
gdb/ChangeLog
gdb/Makefile.in
gdb/cli/cli-cmds.c
gdb/gdbserver/ChangeLog
gdb/gdbserver/Makefile.in
gdb/gdbserver/win32-low.c
gdb/gdbsupport/gdb_wait.c [new file with mode: 0644]
gdb/gdbsupport/gdb_wait.h
gdb/windows-nat.c
gdb/windows-tdep.c