/* Everything about signal catchpoints, for GDB.
- Copyright (C) 2011-2016 Free Software Foundation, Inc.
+ Copyright (C) 2011-2017 Free Software Foundation, Inc.
This file is part of GDB.
#include "valprint.h"
#include "cli/cli-utils.h"
#include "completer.h"
-#include "gdb_obstack.h"
+
+#include <string>
#define INTERNAL_SIGNAL(x) ((x) == GDB_SIGNAL_TRAP || (x) == GDB_SIGNAL_INT)
catchpoints. */
static int
-signal_catchpoint_remove_location (struct bp_location *bl)
+signal_catchpoint_remove_location (struct bp_location *bl,
+ enum remove_bp_reason reason)
{
struct signal_catchpoint *c = (struct signal_catchpoint *) bl->owner;
int i;
not line up too nicely with the headers, but the effect
is relatively readable). */
if (opts.addressprint)
- ui_out_field_skip (uiout, "addr");
+ uiout->field_skip ("addr");
annotate_field (5);
if (c->signals_to_be_caught
&& VEC_length (gdb_signal_type, c->signals_to_be_caught) > 1)
- ui_out_text (uiout, "signals \"");
+ uiout->text ("signals \"");
else
- ui_out_text (uiout, "signal \"");
+ uiout->text ("signal \"");
if (c->signals_to_be_caught)
{
int i;
gdb_signal_type iter;
- struct obstack text;
- struct cleanup *cleanup;
-
- obstack_init (&text);
- cleanup = make_cleanup_obstack_free (&text);
+ std::string text;
for (i = 0;
VEC_iterate (gdb_signal_type, c->signals_to_be_caught, i, iter);
const char *name = signal_to_name_or_int (iter);
if (i > 0)
- obstack_grow (&text, " ", 1);
- obstack_grow (&text, name, strlen (name));
+ text += " ";
+ text += name;
}
- obstack_grow (&text, "", 1);
- ui_out_field_string (uiout, "what", (const char *) obstack_base (&text));
- do_cleanups (cleanup);
+ uiout->field_string ("what", text.c_str ());
}
else
- ui_out_field_string (uiout, "what",
+ uiout->field_string ("what",
c->catch_all ? "<any signal>" : "<standard signals>");
- ui_out_text (uiout, "\" ");
+ uiout->text ("\" ");
- if (ui_out_is_mi_like_p (uiout))
- ui_out_field_string (uiout, "catch-type", "signal");
+ if (uiout->is_mi_like_p ())
+ uiout->field_string ("catch-type", "signal");
}
/* Implement the "print_mention" breakpoint_ops method for signal
struct signal_catchpoint *c;
struct gdbarch *gdbarch = get_current_arch ();
- c = XNEW (struct signal_catchpoint);
+ c = new signal_catchpoint ();
init_catchpoint (&c->base, gdbarch, tempflag, NULL, &signal_catchpoint_ops);
c->signals_to_be_caught = filter;
c->catch_all = catch_all;