/* Python interface to finish breakpoints
- Copyright (C) 2011-2017 Free Software Foundation, Inc.
+ Copyright (C) 2011-2018 Free Software Foundation, Inc.
This file is part of GDB.
#include "gdbthread.h"
#include "arch-utils.h"
#include "language.h"
-#include "observer.h"
+#include "observable.h"
#include "inferior.h"
#include "block.h"
#include "location.h"
#include "py-ref.h"
/* Function that is called when a Python finish bp is found out of scope. */
-static char * const outofscope_func = "out_of_scope";
+static const char outofscope_func[] = "out_of_scope";
/* struct implementing the gdb.FinishBreakpoint object by extending
the gdb.Breakpoint class. */
if (PyErr_Occurred ())
return -1;
- thread = ptid_to_global_thread_id (inferior_ptid);
- if (thread == 0)
+ if (inferior_ptid == null_ptid)
{
PyErr_SetString (PyExc_ValueError,
_("No thread currently selected."));
return -1;
}
+ thread = inferior_thread ()->global_num;
+
if (internal)
{
internal_bp = PyObject_IsTrue (internal);
TRY
{
- struct event_location *location;
- struct cleanup *back_to;
-
/* Set a breakpoint on the return address. */
- location = new_address_location (get_frame_pc (prev_frame), NULL, 0);
- back_to = make_cleanup_delete_event_location (location);
+ event_location_up location
+ = new_address_location (get_frame_pc (prev_frame), NULL, 0);
create_breakpoint (python_gdbarch,
- location, NULL, thread, NULL,
+ location.get (), NULL, thread, NULL,
0,
1 /*temp_flag*/,
bp_breakpoint,
AUTO_BOOLEAN_TRUE,
&bkpt_breakpoint_ops,
0, 1, internal_bp, 0);
- do_cleanups (back_to);
}
CATCH (except, RETURN_MASK_ALL)
{
(PyObject *) &finish_breakpoint_object_type) < 0)
return -1;
- observer_attach_normal_stop (bpfinishpy_handle_stop);
- observer_attach_inferior_exit (bpfinishpy_handle_exit);
+ gdb::observers::normal_stop.attach (bpfinishpy_handle_stop);
+ gdb::observers::inferior_exit.attach (bpfinishpy_handle_exit);
return 0;
}