45741a9c32
Move infrun.c declarations out of inferior.h to a new infrun.h file. Tested by building on: i686-w64-mingw32, enable-targets=all x86_64-linux, enable-targets=all i586-pc-msdosdjgpp And also grepped the whole tree for each symbol moved to find where infrun.h might be necessary. gdb/ 2014-05-22 Pedro Alves <palves@redhat.com> * inferior.h (debug_infrun, debug_displaced, stop_on_solib_events) (sync_execution, sched_multi, step_stop_if_no_debug, non_stop) (disable_randomization, enum exec_direction_kind) (execution_direction, stop_registers, start_remote) (clear_proceed_status, proceed, resume, user_visible_resume_ptid) (wait_for_inferior, normal_stop, get_last_target_status) (prepare_for_detach, fetch_inferior_event, init_wait_for_inferior) (insert_step_resume_breakpoint_at_sal) (follow_inferior_reset_breakpoints, stepping_past_instruction_at) (set_step_info, print_stop_event, signal_stop_state) (signal_print_state, signal_pass_state, signal_stop_update) (signal_print_update, signal_pass_update) (update_signals_program_target, clear_exit_convenience_vars) (displaced_step_dump_bytes, update_observer_mode) (signal_catch_update, gdb_signal_from_command): Move declarations ... * infrun.h: ... to this new file. * amd64-tdep.c: Include infrun.h. * annotate.c: Include infrun.h. * arch-utils.c: Include infrun.h. * arm-linux-tdep.c: Include infrun.h. * arm-tdep.c: Include infrun.h. * break-catch-sig.c: Include infrun.h. * breakpoint.c: Include infrun.h. * common/agent.c: Include infrun.h instead of inferior.h. * corelow.c: Include infrun.h. * event-top.c: Include infrun.h. * go32-nat.c: Include infrun.h. * i386-tdep.c: Include infrun.h. * inf-loop.c: Include infrun.h. * infcall.c: Include infrun.h. * infcmd.c: Include infrun.h. * infrun.c: Include infrun.h. * linux-fork.c: Include infrun.h. * linux-nat.c: Include infrun.h. * linux-thread-db.c: Include infrun.h. * monitor.c: Include infrun.h. * nto-tdep.c: Include infrun.h. * procfs.c: Include infrun.h. * record-btrace.c: Include infrun.h. * record-full.c: Include infrun.h. * remote-m32r-sdi.c: Include infrun.h. * remote-mips.c: Include infrun.h. * remote-notif.c: Include infrun.h. * remote-sim.c: Include infrun.h. * remote.c: Include infrun.h. * reverse.c: Include infrun.h. * rs6000-tdep.c: Include infrun.h. * s390-linux-tdep.c: Include infrun.h. * solib-irix.c: Include infrun.h. * solib-osf.c: Include infrun.h. * solib-svr4.c: Include infrun.h. * target.c: Include infrun.h. * top.c: Include infrun.h. * windows-nat.c: Include infrun.h. * mi/mi-interp.c: Include infrun.h. * mi/mi-main.c: Include infrun.h. * python/py-threadevent.c: Include infrun.h.
81 lines
2.2 KiB
C
81 lines
2.2 KiB
C
/* Copyright (C) 2009-2014 Free Software Foundation, Inc.
|
|
|
|
This file is part of GDB.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
#include "defs.h"
|
|
#include "py-event.h"
|
|
#include "infrun.h"
|
|
|
|
/* thread events can either be thread specific or process wide. If gdb is
|
|
running in non-stop mode then the event is thread specific, otherwise
|
|
it is process wide.
|
|
This function returns the currently stopped thread in non-stop mode and
|
|
Py_None otherwise. In each case it returns a borrowed reference. */
|
|
|
|
static PyObject *get_event_thread (void)
|
|
CPYCHECKER_RETURNS_BORROWED_REF;
|
|
|
|
static PyObject *
|
|
get_event_thread (void)
|
|
{
|
|
PyObject *thread = NULL;
|
|
|
|
if (non_stop)
|
|
thread = (PyObject *) find_thread_object (inferior_ptid);
|
|
else
|
|
thread = Py_None;
|
|
|
|
if (!thread)
|
|
{
|
|
PyErr_SetString (PyExc_RuntimeError, "Could not find event thread");
|
|
return NULL;
|
|
}
|
|
|
|
return thread;
|
|
}
|
|
|
|
PyObject *
|
|
create_thread_event_object (PyTypeObject *py_type)
|
|
{
|
|
PyObject *thread = NULL;
|
|
PyObject *thread_event_obj = NULL;
|
|
|
|
thread_event_obj = create_event_object (py_type);
|
|
if (!thread_event_obj)
|
|
goto fail;
|
|
|
|
thread = get_event_thread ();
|
|
if (!thread)
|
|
goto fail;
|
|
|
|
if (evpy_add_attribute (thread_event_obj,
|
|
"inferior_thread",
|
|
thread) < 0)
|
|
goto fail;
|
|
|
|
return thread_event_obj;
|
|
|
|
fail:
|
|
Py_XDECREF (thread_event_obj);
|
|
return NULL;
|
|
}
|
|
|
|
GDBPY_NEW_EVENT_TYPE (thread,
|
|
"gdb.ThreadEvent",
|
|
"ThreadEvent",
|
|
"GDB thread event object",
|
|
event_object_type,
|
|
/*no qual*/);
|