GDB (xrefs)
Classes | Macros | Functions | Variables
py-inferior.c File Reference
#include "defs.h"
#include "gdbcore.h"
#include "gdbthread.h"
#include "inferior.h"
#include "objfiles.h"
#include "observer.h"
#include "python-internal.h"
#include "arch-utils.h"
#include "language.h"
#include "gdb_signals.h"
#include "py-event.h"
#include "py-stopevent.h"

Go to the source code of this file.

Classes

struct  threadlist_entry
 
struct  inferior_object
 
struct  membuf_object
 

Macros

#define INFPY_REQUIRE_VALID(Inferior)
 
#define CHARBUFFERPROC_NAME   charbufferproc
 

Functions

PyTypeObject inferior_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("inferior_object")
 
PyTypeObject membuf_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("membuf_object")
 
static void python_on_normal_stop (struct bpstats *bs, int print_frame)
 
static void python_on_resume (ptid_t ptid)
 
static void python_on_inferior_call_pre (ptid_t thread, CORE_ADDR address)
 
static void python_on_inferior_call_post (ptid_t thread, CORE_ADDR address)
 
static void python_on_memory_change (struct inferior *inferior, CORE_ADDR addr, ssize_t len, const bfd_byte *data)
 
static void python_on_register_change (struct frame_info *frame, int regnum)
 
static void python_inferior_exit (struct inferior *inf)
 
static void python_new_objfile (struct objfile *objfile)
 
PyObject * inferior_to_inferior_object (struct inferior *inferior)
 
PyObject * find_inferior_object (int pid)
 
thread_objectfind_thread_object (ptid_t ptid)
 
static void add_thread_object (struct thread_info *tp)
 
static void delete_thread_object (struct thread_info *tp, int ignore)
 
static PyObject * infpy_threads (PyObject *self, PyObject *args)
 
static PyObject * infpy_get_num (PyObject *self, void *closure)
 
static PyObject * infpy_get_pid (PyObject *self, void *closure)
 
static PyObject * infpy_get_was_attached (PyObject *self, void *closure)
 
static int build_inferior_list (struct inferior *inf, void *arg)
 
PyObject * gdbpy_inferiors (PyObject *unused, PyObject *unused2)
 
static PyObject * infpy_read_memory (PyObject *self, PyObject *args, PyObject *kw)
 
static PyObject * infpy_write_memory (PyObject *self, PyObject *args, PyObject *kw)
 
static void mbpy_dealloc (PyObject *self)
 
static PyObject * mbpy_str (PyObject *self)
 
static Py_ssize_t get_read_buffer (PyObject *self, Py_ssize_t segment, void **ptrptr)
 
static Py_ssize_t get_write_buffer (PyObject *self, Py_ssize_t segment, void **ptrptr)
 
static Py_ssize_t get_seg_count (PyObject *self, Py_ssize_t *lenp)
 
static Py_ssize_t get_char_buffer (PyObject *self, Py_ssize_t segment, char **ptrptr)
 
static PyObject * infpy_search_memory (PyObject *self, PyObject *args, PyObject *kw)
 
static PyObject * infpy_is_valid (PyObject *self, PyObject *args)
 
static void infpy_dealloc (PyObject *obj)
 
static void py_free_inferior (struct inferior *inf, void *datum)
 
PyObject * gdbpy_selected_inferior (PyObject *self, PyObject *args)
 
int gdbpy_initialize_inferior (void)
 

Variables

static const struct inferior_data * infpy_inf_data_key
 
static PyGetSetDef inferior_object_getset []
 
static PyMethodDef inferior_object_methods []
 
PyTypeObject inferior_object_type
 
static PyBufferProcs buffer_procs
 
PyTypeObject membuf_object_type
 

Macro Definition Documentation

#define CHARBUFFERPROC_NAME   charbufferproc

Definition at line 989 of file py-inferior.c.

#define INFPY_REQUIRE_VALID (   Inferior)
Value:
do { \
if (!Inferior->inferior) \
{ \
PyErr_SetString (PyExc_RuntimeError, \
_("Inferior no longer exists.")); \
return NULL; \
} \
} while (0)
#define _(String)
Definition: gdb_locale.h:40
return
Definition: gnu-nat.c:1865

Definition at line 71 of file py-inferior.c.

Referenced by infpy_get_num(), infpy_get_pid(), infpy_get_was_attached(), and infpy_threads().

Function Documentation

static void add_thread_object ( struct thread_info tp)
static
static int build_inferior_list ( struct inferior inf,
void *  arg 
)
static

Definition at line 457 of file py-inferior.c.

References inferior_to_inferior_object(), and Py_DECREF.

Referenced by gdbpy_inferiors().

PyTypeObject inferior_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ( "inferior_object"  )
PyTypeObject membuf_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ( "membuf_object"  )
static void delete_thread_object ( struct thread_info tp,
int  ignore 
)
static
PyObject* find_inferior_object ( int  pid)
thread_object* find_thread_object ( ptid_t  ptid)
PyObject* gdbpy_inferiors ( PyObject *  unused,
PyObject *  unused2 
)

Definition at line 478 of file py-inferior.c.

References build_inferior_list(), iterate_over_inferiors(), and Py_DECREF.

int gdbpy_initialize_inferior ( void  )
PyObject* gdbpy_selected_inferior ( PyObject *  self,
PyObject *  args 
)

Definition at line 866 of file py-inferior.c.

References current_inferior(), and inferior_to_inferior_object().

static Py_ssize_t get_char_buffer ( PyObject *  self,
Py_ssize_t  segment,
char **  ptrptr 
)
static

Definition at line 691 of file py-inferior.c.

References get_read_buffer().

static Py_ssize_t get_read_buffer ( PyObject *  self,
Py_ssize_t  segment,
void **  ptrptr 
)
static

Definition at line 659 of file py-inferior.c.

References _, membuf_object::buffer, and membuf_object::length.

Referenced by get_char_buffer(), and get_write_buffer().

static Py_ssize_t get_seg_count ( PyObject *  self,
Py_ssize_t *  lenp 
)
static

Definition at line 682 of file py-inferior.c.

static Py_ssize_t get_write_buffer ( PyObject *  self,
Py_ssize_t  segment,
void **  ptrptr 
)
static

Definition at line 676 of file py-inferior.c.

References get_read_buffer().

PyObject* inferior_to_inferior_object ( struct inferior inferior)
static void infpy_dealloc ( PyObject *  obj)
static

Definition at line 818 of file py-inferior.c.

References inferior_object::inferior, and infpy_inf_data_key.

static PyObject* infpy_get_num ( PyObject *  self,
void *  closure 
)
static

Definition at line 426 of file py-inferior.c.

References inferior_object::inferior, INFPY_REQUIRE_VALID, and inferior::num.

static PyObject* infpy_get_pid ( PyObject *  self,
void *  closure 
)
static

Definition at line 436 of file py-inferior.c.

References inferior_object::inferior, INFPY_REQUIRE_VALID, and inferior::pid.

static PyObject* infpy_get_was_attached ( PyObject *  self,
void *  closure 
)
static
static PyObject* infpy_is_valid ( PyObject *  self,
PyObject *  args 
)
static

Definition at line 807 of file py-inferior.c.

References inferior_object::inferior.

static PyObject* infpy_read_memory ( PyObject *  self,
PyObject *  args,
PyObject *  kw 
)
static
static PyObject* infpy_search_memory ( PyObject *  self,
PyObject *  args,
PyObject *  kw 
)
static
static PyObject* infpy_threads ( PyObject *  self,
PyObject *  args 
)
static
static PyObject* infpy_write_memory ( PyObject *  self,
PyObject *  args,
PyObject *  kw 
)
static
static void mbpy_dealloc ( PyObject *  self)
static

Definition at line 622 of file py-inferior.c.

References Py_TYPE, and xfree().

static PyObject* mbpy_str ( PyObject *  self)
static
static void py_free_inferior ( struct inferior inf,
void *  datum 
)
static
static void python_inferior_exit ( struct inferior inf)
static
static void python_new_objfile ( struct objfile objfile)
static
static void python_on_inferior_call_post ( ptid_t  thread,
CORE_ADDR  address 
)
static
static void python_on_inferior_call_pre ( ptid_t  thread,
CORE_ADDR  address 
)
static
static void python_on_memory_change ( struct inferior inferior,
CORE_ADDR  addr,
ssize_t  len,
const bfd_byte *  data 
)
static
static void python_on_normal_stop ( struct bpstats bs,
int  print_frame 
)
static
static void python_on_register_change ( struct frame_info frame,
int  regnum 
)
static
static void python_on_resume ( ptid_t  ptid)
static

Variable Documentation

PyBufferProcs buffer_procs
static
Initial value:
= {
}
#define CHARBUFFERPROC_NAME
Definition: py-inferior.c:989
static Py_ssize_t get_read_buffer(PyObject *self, Py_ssize_t segment, void **ptrptr)
Definition: py-inferior.c:659
static Py_ssize_t get_seg_count(PyObject *self, Py_ssize_t *lenp)
Definition: py-inferior.c:682
static Py_ssize_t get_char_buffer(PyObject *self, Py_ssize_t segment, char **ptrptr)
Definition: py-inferior.c:691
static Py_ssize_t get_write_buffer(PyObject *self, Py_ssize_t segment, void **ptrptr)
Definition: py-inferior.c:676

Definition at line 992 of file py-inferior.c.

PyGetSetDef inferior_object_getset[]
static
Initial value:
=
{
{ "num", infpy_get_num, NULL, "ID of inferior, as assigned by GDB.", NULL },
{ "pid", infpy_get_pid, NULL, "PID of inferior, as assigned by the OS.",
NULL },
{ "was_attached", infpy_get_was_attached, NULL,
"True if the inferior was created using 'attach'.", NULL },
{ NULL }
}
static PyObject * infpy_get_was_attached(PyObject *self, void *closure)
Definition: py-inferior.c:446
static PyObject * infpy_get_pid(PyObject *self, void *closure)
Definition: py-inferior.c:436
static PyObject * infpy_get_num(PyObject *self, void *closure)
Definition: py-inferior.c:426

Definition at line 903 of file py-inferior.c.

PyMethodDef inferior_object_methods[]
static
Initial value:
=
{
{ "is_valid", infpy_is_valid, METH_NOARGS,
"is_valid () -> Boolean.\n\
Return true if this inferior is valid, false if not." },
{ "threads", infpy_threads, METH_NOARGS,
"Return all the threads of this inferior." },
{ "read_memory", (PyCFunction) infpy_read_memory,
METH_VARARGS | METH_KEYWORDS,
"read_memory (address, length) -> buffer\n\
Return a buffer object for reading from the inferior's memory." },
{ "write_memory", (PyCFunction) infpy_write_memory,
METH_VARARGS | METH_KEYWORDS,
"write_memory (address, buffer [, length])\n\
Write the given buffer object to the inferior's memory." },
{ "search_memory", (PyCFunction) infpy_search_memory,
METH_VARARGS | METH_KEYWORDS,
"search_memory (address, length, pattern) -> long\n\
Return a long with the address of a match, or None." },
{ NULL }
}
static PyObject * infpy_is_valid(PyObject *self, PyObject *args)
Definition: py-inferior.c:807
static PyObject * infpy_threads(PyObject *self, PyObject *args)
Definition: py-inferior.c:392
static PyObject * infpy_read_memory(PyObject *self, PyObject *args, PyObject *kw)
Definition: py-inferior.c:505
static PyObject * infpy_search_memory(PyObject *self, PyObject *args, PyObject *kw)
Definition: py-inferior.c:713
static PyObject * infpy_write_memory(PyObject *self, PyObject *args, PyObject *kw)
Definition: py-inferior.c:563

Definition at line 913 of file py-inferior.c.

PyTypeObject inferior_object_type

Definition at line 935 of file py-inferior.c.

Referenced by gdbpy_initialize_inferior(), and inferior_to_inferior_object().

const struct inferior_data* infpy_inf_data_key
static
PyTypeObject membuf_object_type

Definition at line 1002 of file py-inferior.c.

Referenced by gdbpy_initialize_inferior(), and infpy_read_memory().