GDB (xrefs)
Classes | Macros | Typedefs | 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  stpy_symtab_object
 
struct  salpy_sal_object
 

Macros

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

Typedefs

typedef struct stpy_symtab_object symtab_object
 
typedef struct salpy_sal_object sal_object
 

Functions

PyTypeObject symtab_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("symtab_object")
 
PyTypeObject sal_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("sal_object")
 
static PyObject * stpy_str (PyObject *self)
 
static PyObject * stpy_get_filename (PyObject *self, void *closure)
 
static PyObject * stpy_get_objfile (PyObject *self, void *closure)
 
static PyObject * stpy_get_producer (PyObject *self, void *closure)
 
static PyObject * stpy_fullname (PyObject *self, PyObject *args)
 
static PyObject * stpy_is_valid (PyObject *self, PyObject *args)
 
static PyObject * stpy_global_block (PyObject *self, PyObject *args)
 
static PyObject * stpy_static_block (PyObject *self, PyObject *args)
 
static PyObject * stpy_get_linetable (PyObject *self, PyObject *args)
 
static PyObject * salpy_str (PyObject *self)
 
static void stpy_dealloc (PyObject *obj)
 
static PyObject * salpy_get_pc (PyObject *self, void *closure)
 
static PyObject * salpy_get_last (PyObject *self, void *closure)
 
static PyObject * salpy_get_line (PyObject *self, void *closure)
 
static PyObject * salpy_get_symtab (PyObject *self, void *closure)
 
static PyObject * salpy_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)
 
PyObject * symtab_to_symtab_object (struct symtab *symtab)
 
PyObject * symtab_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 void del_objfile_symtab (struct objfile *objfile, void *datum)
 
static void del_objfile_sal (struct objfile *objfile, void *datum)
 
int gdbpy_initialize_symtabs (void)
 

Variables

static const struct objfile_data * stpy_objfile_data_key
 
static const struct objfile_data * salpy_objfile_data_key
 
static PyGetSetDef symtab_object_getset []
 
static PyMethodDef symtab_object_methods []
 
PyTypeObject symtab_object_type
 
static PyGetSetDef sal_object_getset []
 
static PyMethodDef sal_object_methods []
 
PyTypeObject sal_object_type
 

Macro Definition Documentation

#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)
#define _(String)
Definition: gdb_locale.h:40
struct symtab_and_line * sal_object_to_symtab_and_line(PyObject *obj)
Definition: py-symtab.c:456

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

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

#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)
#define _(String)
Definition: gdb_locale.h:40
struct symtab * symtab_object_to_symtab(PyObject *obj)
Definition: py-symtab.c:465
Definition: symtab.h:925
return
Definition: gnu-nat.c:1865

Definition at line 46 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().

Typedef Documentation

typedef struct salpy_sal_object sal_object

Function Documentation

PyTypeObject symtab_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ( "symtab_object"  )
PyTypeObject sal_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ( "sal_object"  )
static void del_objfile_sal ( struct objfile objfile,
void *  datum 
)
static
static void del_objfile_symtab ( struct objfile objfile,
void *  datum 
)
static
int gdbpy_initialize_symtabs ( void  )
struct symtab_and_line* sal_object_to_symtab_and_line ( PyObject *  obj)

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

References sal_object_type.

Referenced by salpy_is_valid().

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

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

References symtab_and_line::end, gdb_py_long_from_ulongest, and SALPY_REQUIRE_VALID.

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

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

References symtab_and_line::line, and SALPY_REQUIRE_VALID.

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

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

References gdb_py_long_from_ulongest, symtab_and_line::pc, and SALPY_REQUIRE_VALID.

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

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

References SALPY_REQUIRE_VALID, and salpy_sal_object::symtab.

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

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

References sal_object_to_symtab_and_line().

static PyObject* salpy_str ( PyObject *  self)
static
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION set_sal ( sal_object sal_obj,
struct symtab_and_line  sal 
)
static
static void set_symtab ( symtab_object obj,
struct symtab symtab 
)
static
static void stpy_dealloc ( PyObject *  obj)
static
static PyObject* stpy_fullname ( PyObject *  self,
PyObject *  args 
)
static

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

References host_charset(), STPY_REQUIRE_VALID, and symtab_to_fullname().

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

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

References STPY_REQUIRE_VALID, and symtab_to_linetable_object().

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

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

References objfile_to_objfile_object(), STPY_REQUIRE_VALID, and SYMTAB_OBJFILE.

static PyObject* stpy_get_producer ( PyObject *  self,
void *  closure 
)
static
static PyObject* stpy_global_block ( PyObject *  self,
PyObject *  args 
)
static
static PyObject* stpy_is_valid ( PyObject *  self,
PyObject *  args 
)
static

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

References symtab_object_to_symtab().

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

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

References STPY_REQUIRE_VALID, and symtab_to_filename_for_display().

PyObject* symtab_and_line_to_sal_object ( struct symtab_and_line  sal)

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

References Py_DECREF, sal_object_type, and set_sal().

Referenced by frapy_find_sal(), gdbpy_decode_line(), and gdbpy_find_pc_line().

struct symtab* symtab_object_to_symtab ( PyObject *  obj)

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

References symtab_object_type.

Referenced by ltpy_is_valid(), ltpy_iter_is_valid(), and stpy_is_valid().

PyObject* symtab_to_symtab_object ( struct symtab symtab)

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

References set_symtab(), and symtab_object_type.

Referenced by set_sal(), and sympy_get_symtab().

Variable Documentation

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_pc(PyObject *self, void *closure)
Definition: py-symtab.c:267
static PyObject * salpy_get_last(PyObject *self, void *closure)
Definition: py-symtab.c:280
static PyObject * salpy_get_line(PyObject *self, void *closure)
Definition: py-symtab.c:293
static PyObject * salpy_get_symtab(PyObject *self, void *closure)
Definition: py-symtab.c:303

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

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:319

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

PyTypeObject sal_object_type
const struct objfile_data* salpy_objfile_data_key
static

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

Referenced by gdbpy_initialize_symtabs(), salpy_dealloc(), and set_sal().

const struct objfile_data* stpy_objfile_data_key
static

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

Referenced by gdbpy_initialize_symtabs(), set_symtab(), and stpy_dealloc().

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_filename(PyObject *self, void *closure)
Definition: py-symtab.c:102
static PyObject * stpy_get_objfile(PyObject *self, void *closure)
Definition: py-symtab.c:117
static PyObject * stpy_get_producer(PyObject *self, void *closure)
Definition: py-symtab.c:132

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

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:151
static PyObject * stpy_static_block(PyObject *self, PyObject *args)
Definition: py-symtab.c:197
static PyObject * stpy_get_linetable(PyObject *self, PyObject *args)
Definition: py-symtab.c:215
static PyObject * stpy_is_valid(PyObject *self, PyObject *args)
Definition: py-symtab.c:167
static PyObject * stpy_global_block(PyObject *self, PyObject *args)
Definition: py-symtab.c:181

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

PyTypeObject symtab_object_type