1 /* Target waitstatus implementations. 2 3 Copyright (C) 1990-2020 Free Software Foundation, Inc. 4 5 This file is part of GDB. 6 7 This program is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation; either version 3 of the License, or 10 (at your option) any later version. 11 12 This program is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 19 20 #include "gdbsupport/common-defs.h" 21 #include "waitstatus.h" 22 23 /* Return a pretty printed form of target_waitstatus. */ 24 25 std::string 26 target_waitstatus_to_string (const struct target_waitstatus *ws) 27 { 28 const char *kind_str = "status->kind = "; 29 30 switch (ws->kind) 31 { 32 case TARGET_WAITKIND_EXITED: 33 return string_printf ("%sexited, status = %d", 34 kind_str, ws->value.integer); 35 case TARGET_WAITKIND_STOPPED: 36 return string_printf ("%sstopped, signal = %s", 37 kind_str, 38 gdb_signal_to_symbol_string (ws->value.sig)); 39 case TARGET_WAITKIND_SIGNALLED: 40 return string_printf ("%ssignalled, signal = %s", 41 kind_str, 42 gdb_signal_to_symbol_string (ws->value.sig)); 43 case TARGET_WAITKIND_LOADED: 44 return string_printf ("%sloaded", kind_str); 45 case TARGET_WAITKIND_FORKED: 46 return string_printf ("%sforked", kind_str); 47 case TARGET_WAITKIND_VFORKED: 48 return string_printf ("%svforked", kind_str); 49 case TARGET_WAITKIND_EXECD: 50 return string_printf ("%sexecd", kind_str); 51 case TARGET_WAITKIND_VFORK_DONE: 52 return string_printf ("%svfork-done", kind_str); 53 case TARGET_WAITKIND_SYSCALL_ENTRY: 54 return string_printf ("%sentered syscall", kind_str); 55 case TARGET_WAITKIND_SYSCALL_RETURN: 56 return string_printf ("%sexited syscall", kind_str); 57 case TARGET_WAITKIND_SPURIOUS: 58 return string_printf ("%sspurious", kind_str); 59 case TARGET_WAITKIND_IGNORE: 60 return string_printf ("%signore", kind_str); 61 case TARGET_WAITKIND_NO_HISTORY: 62 return string_printf ("%sno-history", kind_str); 63 case TARGET_WAITKIND_NO_RESUMED: 64 return string_printf ("%sno-resumed", kind_str); 65 case TARGET_WAITKIND_THREAD_CREATED: 66 return string_printf ("%sthread created", kind_str); 67 case TARGET_WAITKIND_THREAD_EXITED: 68 return string_printf ("%sthread exited, status = %d", 69 kind_str, ws->value.integer); 70 default: 71 return string_printf ("%sunknown???", kind_str); 72 } 73 } 74