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

Go to the source code of this file.

Classes

struct  symtab_object
 
struct  stpy_deleter
 
struct  sal_object
 
struct  salpy_deleter
 

Macros

#define STPY_REQUIRE_VALID(symtab_obj, symtab)
 
#define SALPY_REQUIRE_VALID(sal_obj, sal)
 

Functions

PyTypeObject symtab_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("symtab_object")
 
PyTypeObject sal_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("sal_object")
 
static PyObjectstpy_str (PyObject *self)
 
static PyObjectstpy_get_filename (PyObject *self, void *closure)
 
static PyObjectstpy_get_objfile (PyObject *self, void *closure)
 
static PyObjectstpy_get_producer (PyObject *self, void *closure)
 
static PyObjectstpy_fullname (PyObject *self, PyObject *args)
 
static PyObjectstpy_is_valid (PyObject *self, PyObject *args)
 
static PyObjectstpy_global_block (PyObject *self, PyObject *args)
 
static PyObjectstpy_static_block (PyObject *self, PyObject *args)
 
static PyObjectstpy_get_linetable (PyObject *self, PyObject *args)
 
static PyObjectsalpy_str (PyObject *self)
 
static void stpy_dealloc (PyObject *obj)
 
static PyObjectsalpy_get_pc (PyObject *self, void *closure)
 
static PyObjectsalpy_get_last (PyObject *self, void *closure)
 
static PyObjectsalpy_get_line (PyObject *self, void *closure)
 
static PyObjectsalpy_get_symtab (PyObject *self, void *closure)
 
static PyObjectsalpy_is_valid (PyObject *self, PyObject *args)
 
static void salpy_dealloc (PyObject *self)
 
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION set_sal (sal_object *sal_obj, struct symtab_and_line sal)
 
static void set_symtab (symtab_object *obj, struct symtab *symtab)
 
PyObjectsymtab_to_symtab_object (struct symtab *symtab)
 
PyObjectsymtab_and_line_to_sal_object (struct symtab_and_line sal)
 
struct symtab_and_linesal_object_to_symtab_and_line (PyObject *obj)
 
struct symtabsymtab_object_to_symtab (PyObject *obj)
 
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION gdbpy_initialize_symtabs (void)
 
 GDBPY_INITIALIZE_FILE (gdbpy_initialize_symtabs)
 

Variables

static const registry< objfile >::key< symtab_object, stpy_deleterstpy_objfile_data_key
 
static const registry< objfile >::key< sal_object, salpy_deletersalpy_objfile_data_key
 
static gdb_PyGetSetDef symtab_object_getset []
 
static PyMethodDef symtab_object_methods []
 
PyTypeObject symtab_object_type
 
static gdb_PyGetSetDef sal_object_getset []
 
static PyMethodDef sal_object_methods []
 
PyTypeObject sal_object_type
 

Macro Definition Documentation

◆ SALPY_REQUIRE_VALID

#define SALPY_REQUIRE_VALID ( sal_obj,
sal )
Value:
do { \
sal = sal_object_to_symtab_and_line (sal_obj); \
if (sal == NULL) \
{ \
PyErr_SetString (PyExc_RuntimeError, \
_("Symbol Table and Line is invalid.")); \
return NULL; \
} \
} while (0)
struct symtab_and_line * sal_object_to_symtab_and_line(PyObject *obj)
Definition py-symtab.c:496

Definition at line 129 of file py-symtab.c.

Referenced by salpy_get_last(), salpy_get_line(), salpy_get_pc(), salpy_get_symtab(), and salpy_str().

◆ STPY_REQUIRE_VALID

#define STPY_REQUIRE_VALID ( symtab_obj,
symtab )
Value:
do { \
symtab = symtab_object_to_symtab (symtab_obj); \
if (symtab == NULL) \
{ \
PyErr_SetString (PyExc_RuntimeError, \
_("Symbol Table is invalid.")); \
return NULL; \
} \
} while (0)
struct symtab * symtab_object_to_symtab(PyObject *obj)
Definition py-symtab.c:505

Definition at line 68 of file py-symtab.c.

Referenced by stpy_fullname(), stpy_get_filename(), stpy_get_linetable(), stpy_get_objfile(), stpy_get_producer(), stpy_global_block(), stpy_static_block(), and stpy_str().

Function Documentation

◆ CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF() [1/2]

PyTypeObject sal_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ( "sal_object" )
extern

◆ CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF() [2/2]

PyTypeObject symtab_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ( "symtab_object" )
extern

◆ GDBPY_INITIALIZE_FILE()

GDBPY_INITIALIZE_FILE ( gdbpy_initialize_symtabs )

◆ gdbpy_initialize_symtabs()

static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION gdbpy_initialize_symtabs ( void )
static

Definition at line 513 of file py-symtab.c.

References gdb_module, gdb_pymodule_addobject(), sal_object_type, and symtab_object_type.

◆ sal_object_to_symtab_and_line()

struct symtab_and_line * sal_object_to_symtab_and_line ( PyObject * obj)

Definition at line 496 of file py-symtab.c.

References sal_object_type.

Referenced by salpy_is_valid().

◆ salpy_dealloc()

static void salpy_dealloc ( PyObject * self)
static

◆ salpy_get_last()

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

◆ salpy_get_line()

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

◆ salpy_get_pc()

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

◆ salpy_get_symtab()

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

Definition at line 347 of file py-symtab.c.

References SALPY_REQUIRE_VALID, and sal_object::symtab.

◆ salpy_is_valid()

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

Definition at line 363 of file py-symtab.c.

References sal_object_to_symtab_and_line().

◆ salpy_str()

static PyObject * salpy_str ( PyObject * self)
static

◆ set_sal()

static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION set_sal ( sal_object * sal_obj,
struct symtab_and_line sal )
static

◆ set_symtab()

static void set_symtab ( symtab_object * obj,
struct symtab * symtab )
static

◆ stpy_dealloc()

static void stpy_dealloc ( PyObject * obj)
static

◆ stpy_fullname()

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

◆ stpy_get_filename()

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

◆ stpy_get_linetable()

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

Definition at line 262 of file py-symtab.c.

References STPY_REQUIRE_VALID, and symtab_to_linetable_object().

◆ stpy_get_objfile()

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

◆ stpy_get_producer()

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

◆ stpy_global_block()

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

◆ stpy_is_valid()

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

Definition at line 214 of file py-symtab.c.

References symtab_object_to_symtab().

◆ stpy_static_block()

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

◆ stpy_str()

static PyObject * stpy_str ( PyObject * self)
static

Definition at line 141 of file py-symtab.c.

References STPY_REQUIRE_VALID, and symtab_to_filename_for_display().

◆ symtab_and_line_to_sal_object()

PyObject * symtab_and_line_to_sal_object ( struct symtab_and_line sal)

◆ symtab_object_to_symtab()

struct symtab * symtab_object_to_symtab ( PyObject * obj)

◆ symtab_to_symtab_object()

PyObject * symtab_to_symtab_object ( struct symtab * symtab)

Definition at line 467 of file py-symtab.c.

References set_symtab(), and symtab_object_type.

Referenced by set_sal(), and sympy_get_symtab().

Variable Documentation

◆ sal_object_getset

gdb_PyGetSetDef sal_object_getset[]
static
Initial value:
= {
{ "symtab", salpy_get_symtab, NULL, "Symtab object.", NULL },
{ "pc", salpy_get_pc, NULL, "Return the symtab_and_line's pc.", NULL },
{ "last", salpy_get_last, NULL,
"Return the symtab_and_line's last address.", NULL },
{ "line", salpy_get_line, NULL,
"Return the symtab_and_line's line.", NULL },
{NULL}
}
static PyObject * salpy_get_last(PyObject *self, void *closure)
Definition py-symtab.c:324
static PyObject * salpy_get_symtab(PyObject *self, void *closure)
Definition py-symtab.c:347
static PyObject * salpy_get_line(PyObject *self, void *closure)
Definition py-symtab.c:337
static PyObject * salpy_get_pc(PyObject *self, void *closure)
Definition py-symtab.c:311

Definition at line 597 of file py-symtab.c.

◆ sal_object_methods

PyMethodDef sal_object_methods[]
static
Initial value:
= {
{ "is_valid", salpy_is_valid, METH_NOARGS,
"is_valid () -> Boolean.\n\
Return true if this symbol table and line is valid, false if not." },
{NULL}
}
static PyObject * salpy_is_valid(PyObject *self, PyObject *args)
Definition py-symtab.c:363

Definition at line 607 of file py-symtab.c.

◆ sal_object_type

PyTypeObject sal_object_type

◆ salpy_objfile_data_key

const registry<objfile>::key<sal_object, salpy_deleter> salpy_objfile_data_key
static

Definition at line 125 of file py-symtab.c.

Referenced by salpy_dealloc(), and set_sal().

◆ stpy_objfile_data_key

const registry<objfile>::key<symtab_object, stpy_deleter> stpy_objfile_data_key
static

Definition at line 64 of file py-symtab.c.

Referenced by set_symtab(), and stpy_dealloc().

◆ symtab_object_getset

gdb_PyGetSetDef symtab_object_getset[]
static
Initial value:
= {
{ "filename", stpy_get_filename, NULL,
"The symbol table's source filename.", NULL },
{ "objfile", stpy_get_objfile, NULL, "The symtab's objfile.",
NULL },
{ "producer", stpy_get_producer, NULL,
"The name/version of the program that compiled this symtab.", NULL },
{NULL}
}
static PyObject * stpy_get_producer(PyObject *self, void *closure)
Definition py-symtab.c:180
static PyObject * stpy_get_objfile(PyObject *self, void *closure)
Definition py-symtab.c:168
static PyObject * stpy_get_filename(PyObject *self, void *closure)
Definition py-symtab.c:154

Definition at line 535 of file py-symtab.c.

◆ symtab_object_methods

PyMethodDef symtab_object_methods[]
static
Initial value:
= {
{ "is_valid", stpy_is_valid, METH_NOARGS,
"is_valid () -> Boolean.\n\
Return true if this symbol table is valid, false if not." },
{ "fullname", stpy_fullname, METH_NOARGS,
"fullname () -> String.\n\
Return the symtab's full source filename." },
{ "global_block", stpy_global_block, METH_NOARGS,
"global_block () -> gdb.Block.\n\
Return the global block of the symbol table." },
{ "static_block", stpy_static_block, METH_NOARGS,
"static_block () -> gdb.Block.\n\
Return the static block of the symbol table." },
{ "linetable", stpy_get_linetable, METH_NOARGS,
"linetable () -> gdb.LineTable.\n\
Return the LineTable associated with this symbol table" },
{NULL}
}
static PyObject * stpy_fullname(PyObject *self, PyObject *args)
Definition py-symtab.c:198
static PyObject * stpy_global_block(PyObject *self, PyObject *args)
Definition py-symtab.c:228
static PyObject * stpy_is_valid(PyObject *self, PyObject *args)
Definition py-symtab.c:214
static PyObject * stpy_get_linetable(PyObject *self, PyObject *args)
Definition py-symtab.c:262
static PyObject * stpy_static_block(PyObject *self, PyObject *args)
Definition py-symtab.c:244

Definition at line 545 of file py-symtab.c.

◆ symtab_object_type

PyTypeObject symtab_object_type