36#define INTERNAL_SIGNAL(x) ((x) == GDB_SIGNAL_TRAP || (x) == GDB_SIGNAL_INT)
44 std::vector<gdb_signal> &&sigs,
91 const char *result = gdb_signal_to_name (sig);
93 if (strcmp (result,
"?") == 0)
94 result = plongest (sig);
107 = gdb::checked_static_cast<signal_catchpoint *> (bl->
owner);
116 for (
int i = 0; i < GDB_SIGNAL_LAST; ++i)
135 = gdb::checked_static_cast<signal_catchpoint *> (bl->
owner);
147 for (
int i = 0; i < GDB_SIGNAL_LAST; ++i)
171 = gdb::checked_static_cast<const signal_catchpoint *> (bl->
owner);
172 gdb_signal signal_number;
177 signal_number = ws.
sig ();
185 if (signal_number == iter)
200 const char *signal_name;
228 if (opts.addressprint)
233 uiout->
text (
"signals \"");
235 uiout->
text (
"signal \"");
256 catch_all ?
"<any signal>" :
"<standard signals>",
330 std::unique_ptr<signal_catchpoint> c
340static std::vector<gdb_signal>
343 std::vector<gdb_signal> result;
349 gdb_signal signal_number;
353 if (one_arg.empty ())
357 if (one_arg ==
"all")
359 arg = skip_spaces (arg);
360 if (*arg !=
'\0' || !first)
361 error (_(
"'all' cannot be caught with other signals"));
363 gdb_assert (result.empty ());
370 num = (int) strtol (one_arg.c_str (), &endptr, 0);
375 signal_number = gdb_signal_from_name (one_arg.c_str ());
376 if (signal_number == GDB_SIGNAL_UNKNOWN)
377 error (_(
"Unknown signal name '%s'."), one_arg.c_str ());
380 result.push_back (signal_number);
383 result.shrink_to_fit ();
394 bool catch_all =
false;
395 std::vector<gdb_signal> filter;
399 arg = skip_spaces (arg);
418Catch signals by their names and/or numbers.\n\
419Usage: catch signal [[NAME|NUMBER] [NAME|NUMBER]...|all]\n\
420Arguments say which signals to catch. If no arguments\n\
421are given, every \"normal\" signal will be caught.\n\
422The argument \"all\" means to also catch signals used by GDB.\n\
423Arguments, if given, should be one or more signal names\n\
424(if your system supports that), or signal numbers."),
void annotate_field(int num)
void annotate_catchpoint(int num)
struct gdbarch * get_current_arch(void)
static void create_signal_catchpoint(int tempflag, std::vector< gdb_signal > &&filter, bool catch_all)
static void catch_signal_command(const char *arg, int from_tty, struct cmd_list_element *command)
static std::vector< gdb_signal > catch_signal_split_args(const char *arg, bool *catch_all)
static unsigned int signal_catch_counts[GDB_SIGNAL_LAST]
#define INTERNAL_SIGNAL(x)
static const char * signal_to_name_or_int(enum gdb_signal sig)
void _initialize_break_catch_sig()
void add_catch_command(const char *name, const char *docstring, cmd_func_ftype *func, completer_ftype *completer, void *user_data_catch, void *user_data_tcatch)
breakpoint * install_breakpoint(int internal, std::unique_ptr< breakpoint > &&arg, int update_gll)
void maybe_print_thread_hit_breakpoint(struct ui_out *uiout)
ui_file_style style() const
void field_string(const char *fldname, const char *string, const ui_file_style &style=ui_file_style())
void field_skip(const char *fldname)
void text(const char *string)
bool is_mi_like_p() const
cli_style_option metadata_style
std::string extract_arg(const char **arg)
void signal_completer(struct cmd_list_element *ignore, completion_tracker &tracker, const char *text, const char *word)
enum gdb_signal gdb_signal_from_command(int num)
void get_last_target_status(process_stratum_target **target, ptid_t *ptid, target_waitstatus *status)
void signal_catch_update(const unsigned int *info)
int breakpoint_hit(const struct bp_location *bl, const address_space *aspace, CORE_ADDR bp_addr, const target_waitstatus &ws) override
bool print_one(const bp_location **) const override
int remove_location(struct bp_location *, enum remove_bp_reason reason) override
enum print_stop_action print_it(const bpstat *bs) const override
int insert_location(struct bp_location *) override
void print_mention() const override
signal_catchpoint(struct gdbarch *gdbarch, bool temp, std::vector< gdb_signal > &&sigs, bool catch_all_)
std::vector< gdb_signal > signals_to_be_caught
void print_recreate(struct ui_file *fp) const override
bool explains_signal(enum gdb_signal) override
target_waitkind kind() const
void gdb_printf(struct ui_file *stream, const char *format,...)
void get_user_print_options(struct value_print_options *opts)
@ TARGET_WAITKIND_STOPPED