GDB (xrefs)
Loading...
Searching...
No Matches
Classes | Macros | Functions | Variables
py-linetable.c File Reference
#include "defs.h"
#include "python-internal.h"

Go to the source code of this file.

Classes

struct  linetable_entry_object
 
struct  linetable_object
 
struct  ltpy_iterator_object
 

Macros

#define LTPY_REQUIRE_VALID(lt_obj, symtab)
 

Functions

PyTypeObject linetable_entry_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("linetable_entry_object")
 
PyTypeObject linetable_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("linetable_object")
 
PyTypeObject ltpy_iterator_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("ltpy_iterator_object")
 
static PyObjectget_symtab (PyObject *linetable)
 
PyObjectsymtab_to_linetable_object (PyObject *symtab)
 
static PyObjectbuild_linetable_entry (int line, CORE_ADDR address)
 
static PyObjectbuild_line_table_tuple_from_pcs (int line, const std::vector< CORE_ADDR > &pcs)
 
static PyObjectltpy_get_pcs_for_line (PyObject *self, PyObject *args)
 
static PyObjectltpy_has_line (PyObject *self, PyObject *args)
 
static PyObjectltpy_get_all_source_lines (PyObject *self, PyObject *args)
 
static PyObjectltpy_is_valid (PyObject *self, PyObject *args)
 
static void ltpy_dealloc (PyObject *self)
 
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION gdbpy_initialize_linetable (void)
 
static PyObjectltpy_entry_get_line (PyObject *self, void *closure)
 
static PyObjectltpy_entry_get_pc (PyObject *self, void *closure)
 
static PyObjectltpy_iter (PyObject *self)
 
static void ltpy_iterator_dealloc (PyObject *obj)
 
static PyObjectltpy_iterator (PyObject *self)
 
static PyObjectltpy_iternext (PyObject *self)
 
static PyObjectltpy_iter_is_valid (PyObject *self, PyObject *args)
 
 GDBPY_INITIALIZE_FILE (gdbpy_initialize_linetable)
 

Variables

static PyMethodDef linetable_object_methods []
 
PyTypeObject linetable_object_type
 
static PyMethodDef ltpy_iterator_methods []
 
PyTypeObject ltpy_iterator_object_type
 
static gdb_PyGetSetDef linetable_entry_object_getset []
 
PyTypeObject linetable_entry_object_type
 

Macro Definition Documentation

◆ LTPY_REQUIRE_VALID

#define LTPY_REQUIRE_VALID ( lt_obj,
symtab )
Value:
do { \
if (symtab == NULL) \
{ \
PyErr_SetString (PyExc_RuntimeError, \
_("Symbol Table in line table is invalid."));\
return NULL; \
} \
} while (0)
static PyObject * get_symtab(PyObject *linetable)
struct symtab * symtab_object_to_symtab(PyObject *obj)
Definition py-symtab.c:505

Definition at line 69 of file py-linetable.c.

Referenced by ltpy_get_all_source_lines(), ltpy_get_pcs_for_line(), ltpy_has_line(), ltpy_iter(), ltpy_iterator(), and ltpy_iternext().

Function Documentation

◆ build_line_table_tuple_from_pcs()

static PyObject * build_line_table_tuple_from_pcs ( int line,
const std::vector< CORE_ADDR > & pcs )
static

Definition at line 124 of file py-linetable.c.

References build_linetable_entry().

Referenced by ltpy_get_pcs_for_line().

◆ build_linetable_entry()

static PyObject * build_linetable_entry ( int line,
CORE_ADDR address )
static

◆ CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF() [1/3]

PyTypeObject linetable_entry_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ( "linetable_entry_object" )
extern

◆ CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF() [2/3]

PyTypeObject linetable_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ( "linetable_object" )
extern

◆ CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF() [3/3]

PyTypeObject ltpy_iterator_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ( "ltpy_iterator_object" )
extern

◆ GDBPY_INITIALIZE_FILE()

GDBPY_INITIALIZE_FILE ( gdbpy_initialize_linetable )

◆ gdbpy_initialize_linetable()

static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION gdbpy_initialize_linetable ( void )
static

◆ get_symtab()

static PyObject * get_symtab ( PyObject * linetable)
static

Definition at line 62 of file py-linetable.c.

References lt.

Referenced by ltpy_is_valid(), and ltpy_iter_is_valid().

◆ ltpy_dealloc()

static void ltpy_dealloc ( PyObject * self)
static

Definition at line 277 of file py-linetable.c.

References linetable_object::symtab.

◆ ltpy_entry_get_line()

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

Definition at line 323 of file py-linetable.c.

References gdb_py_object_from_longest(), and linetable_entry_object::line.

◆ ltpy_entry_get_pc()

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

Definition at line 334 of file py-linetable.c.

References gdb_py_object_from_ulongest(), and linetable_entry_object::pc.

◆ ltpy_get_all_source_lines()

static PyObject * ltpy_get_all_source_lines ( PyObject * self,
PyObject * args )
static

◆ ltpy_get_pcs_for_line()

static PyObject * ltpy_get_pcs_for_line ( PyObject * self,
PyObject * args )
static

◆ ltpy_has_line()

static PyObject * ltpy_has_line ( PyObject * self,
PyObject * args )
static

◆ ltpy_is_valid()

static PyObject * ltpy_is_valid ( PyObject * self,
PyObject * args )
static

Definition at line 261 of file py-linetable.c.

References get_symtab(), and symtab_object_to_symtab().

◆ ltpy_iter()

static PyObject * ltpy_iter ( PyObject * self)
static

◆ ltpy_iter_is_valid()

static PyObject * ltpy_iter_is_valid ( PyObject * self,
PyObject * args )
static

◆ ltpy_iterator()

static PyObject * ltpy_iterator ( PyObject * self)
static

Definition at line 377 of file py-linetable.c.

References LTPY_REQUIRE_VALID, and ltpy_iterator_object::source.

◆ ltpy_iterator_dealloc()

static void ltpy_iterator_dealloc ( PyObject * obj)
static

Definition at line 366 of file py-linetable.c.

References ltpy_iterator_object::source.

◆ ltpy_iternext()

static PyObject * ltpy_iternext ( PyObject * self)
static

◆ symtab_to_linetable_object()

PyObject * symtab_to_linetable_object ( PyObject * symtab)

Definition at line 85 of file py-linetable.c.

References linetable_object_type, and linetable_object::symtab.

Referenced by stpy_get_linetable().

Variable Documentation

◆ linetable_entry_object_getset

gdb_PyGetSetDef linetable_entry_object_getset[]
static
Initial value:
= {
{ "line", ltpy_entry_get_line, NULL,
"The line number in the source file.", NULL },
{ "pc", ltpy_entry_get_pc, NULL,
"The memory address for this line number.", NULL },
{ NULL }
}
static PyObject * ltpy_entry_get_pc(PyObject *self, void *closure)
static PyObject * ltpy_entry_get_line(PyObject *self, void *closure)

Definition at line 548 of file py-linetable.c.

◆ linetable_entry_object_type

PyTypeObject linetable_entry_object_type

Definition at line 556 of file py-linetable.c.

Referenced by build_linetable_entry(), and gdbpy_initialize_linetable().

◆ linetable_object_methods

PyMethodDef linetable_object_methods[]
static
Initial value:
= {
{ "line", ltpy_get_pcs_for_line, METH_VARARGS,
"line (lineno) -> Tuple\n\
Return executable locations for a given source line." },
{ "has_line", ltpy_has_line, METH_VARARGS,
"has_line (lineno) -> Boolean\n\
Return TRUE if this line has executable information, FALSE if not." },
{ "source_lines", ltpy_get_all_source_lines, METH_NOARGS,
"source_lines () -> List\n\
Return a list of all executable source lines." },
{ "is_valid", ltpy_is_valid, METH_NOARGS,
"is_valid () -> Boolean.\n\
Return True if this LineTable is valid, False if not." },
{NULL}
}
static PyObject * ltpy_get_all_source_lines(PyObject *self, PyObject *args)
static PyObject * ltpy_get_pcs_for_line(PyObject *self, PyObject *args)
static PyObject * ltpy_is_valid(PyObject *self, PyObject *args)
static PyObject * ltpy_has_line(PyObject *self, PyObject *args)

Definition at line 453 of file py-linetable.c.

◆ linetable_object_type

PyTypeObject linetable_object_type

Definition at line 469 of file py-linetable.c.

Referenced by gdbpy_initialize_linetable(), and symtab_to_linetable_object().

◆ ltpy_iterator_methods

PyMethodDef ltpy_iterator_methods[]
static
Initial value:
= {
{ "is_valid", ltpy_iter_is_valid, METH_NOARGS,
"is_valid () -> Boolean.\n\
Return True if this LineTable iterator is valid, False if not." },
{NULL}
}
static PyObject * ltpy_iter_is_valid(PyObject *self, PyObject *args)

Definition at line 509 of file py-linetable.c.

◆ ltpy_iterator_object_type

PyTypeObject ltpy_iterator_object_type
Initial value:
= {
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.LineTableIterator",
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
Py_TPFLAGS_DEFAULT,
"GDB line table iterator object",
0,
0,
0,
0,
}
static PyObject * ltpy_iterator(PyObject *self)
static void ltpy_iterator_dealloc(PyObject *obj)
static PyMethodDef ltpy_iterator_methods[]
static PyObject * ltpy_iternext(PyObject *self)

Definition at line 516 of file py-linetable.c.

Referenced by gdbpy_initialize_linetable(), and ltpy_iter().