/* Exception (throw catch) mechanism, for GDB, the GNU debugger.
- Copyright (C) 1986-2019 Free Software Foundation, Inc.
+ Copyright (C) 1986-2020 Free Software Foundation, Inc.
This file is part of GDB.
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "defs.h"
-
-/* Local non-gdb includes. */
-#include "annotate.h"
-#include "breakpoint.h"
-#include "common/gdb_optional.h"
#include "exceptions.h"
-#include "gdbthread.h"
+#include "breakpoint.h"
+#include "target.h"
#include "inferior.h"
+#include "annotate.h"
+#include "ui-out.h"
#include "serial.h"
-#include "target.h"
+#include "gdbthread.h"
#include "top.h"
-#include "ui-out.h"
+#include "gdbsupport/gdb_optional.h"
static void
print_flush (void)
deprecated_error_begin_hook ();
gdb::optional<target_terminal::scoped_restore_terminal_state> term_state;
- /* While normally there's always something pushed on the target
- stack, the NULL check is needed here because we can get here very
- early during startup, before the target stack is first
- initialized. */
- if (current_top_target () != NULL && target_supports_terminal_ours ())
+ if (target_supports_terminal_ours ())
{
term_state.emplace ();
target_terminal::ours_for_output ();
}
static void
-print_exception (struct ui_file *file, struct gdb_exception e)
+print_exception (struct ui_file *file, const struct gdb_exception &e)
{
- /* KLUGE: cagney/2005-01-13: Write the string out one line at a time
+ /* KLUDGE: cagney/2005-01-13: Write the string out one line at a time
as that way the MI's behavior is preserved. */
const char *start;
const char *end;
- for (start = e.message; start != NULL; start = end)
+ for (start = e.what (); start != NULL; start = end)
{
end = strchr (start, '\n');
if (end == NULL)
}
void
-exception_print (struct ui_file *file, struct gdb_exception e)
+exception_print (struct ui_file *file, const struct gdb_exception &e)
{
if (e.reason < 0 && e.message != NULL)
{
}
void
-exception_fprintf (struct ui_file *file, struct gdb_exception e,
+exception_fprintf (struct ui_file *file, const struct gdb_exception &e,
const char *prefix, ...)
{
if (e.reason < 0 && e.message != NULL)
/* See exceptions.h. */
int
-exception_print_same (struct gdb_exception e1, struct gdb_exception e2)
+exception_print_same (const struct gdb_exception &e1,
+ const struct gdb_exception &e2)
{
- const char *msg1 = e1.message;
- const char *msg2 = e2.message;
-
- if (msg1 == NULL)
- msg1 = "";
- if (msg2 == NULL)
- msg2 = "";
+ const char *msg1 = e1.message == nullptr ? "" : e1.what ();
+ const char *msg2 = e2.message == nullptr ? "" : e2.what ();
return (e1.reason == e2.reason
&& e1.error == e2.error