/* Exception (throw catch) mechanism, for GDB, the GNU debugger.
- Copyright (C) 1986-2019 Free Software Foundation, Inc.
+ Copyright (C) 1986-2022 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)
else
{
end++;
- ui_file_write (file, start, end - start);
+ file->write (start, end - start);
}
}
fprintf_filtered (file, "\n");
}
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)
print_exception (file, e);
}
}
-
-/* See exceptions.h. */
-
-int
-exception_print_same (struct gdb_exception e1, struct gdb_exception e2)
-{
- const char *msg1 = e1.message;
- const char *msg2 = e2.message;
-
- if (msg1 == NULL)
- msg1 = "";
- if (msg2 == NULL)
- msg2 = "";
-
- return (e1.reason == e2.reason
- && e1.error == e2.error
- && strcmp (msg1, msg2) == 0);
-}