GDB (xrefs)

Classes | Macros | Typedefs | Functions | Variables
py-block.c File Reference
`#include "defs.h"`
`#include "block.h"`
`#include "dictionary.h"`
`#include "symtab.h"`
`#include "python-internal.h"`
`#include "objfiles.h"`

Go to the source code of this file.

## Classes
struct | blpy_block_object
struct | block_syms_iterator_object

## Macros
#define | BLPY_REQUIRE_VALID(block_obj, block)
#define | BLPY_ITER_REQUIRE_VALID(block_obj)

## Typedefs
typedef struct blpy_block_object | block_object

## Functions
PyTypeObject block_syms_iterator_object_type | CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("block_syms_iterator_object")
static PyObject * | blpy_iter (PyObject *self)
static PyObject * | blpy_get_start (PyObject *self, void *closure)
static PyObject * | blpy_get_end (PyObject *self, void *closure)
static PyObject * | blpy_get_function (PyObject *self, void *closure)
static PyObject * | blpy_get_superblock (PyObject *self, void *closure)
static PyObject * | blpy_get_global_block (PyObject *self, void *closure)
static PyObject * | blpy_get_static_block (PyObject *self, void *closure)
static PyObject * | blpy_is_global (PyObject *self, void *closure)
static PyObject * | blpy_is_static (PyObject *self, void *closure)
static void | blpy_dealloc (PyObject *obj)
static void | set_block (block_object *obj, const struct block *block, struct objfile *objfile)
PyObject * | block_to_block_object (const struct block *block, struct objfile *objfile)
const struct block * | block_object_to_block (PyObject *obj)
static PyObject * | blpy_block_syms_iter (PyObject *self)
static PyObject * | blpy_block_syms_iternext (PyObject *self)
static void | blpy_block_syms_dealloc (PyObject *obj)
static PyObject * | blpy_is_valid (PyObject *self, PyObject *args)
static PyObject * | blpy_iter_is_valid (PyObject *self, PyObject *args)
PyObject * | gdbpy_block_for_pc (PyObject *self, PyObject *args)
static void | del_objfile_blocks (struct objfile *objfile, void *datum)
int | gdbpy_initialize_blocks (void)

## Variables
static const struct objfile_data * | blpy_objfile_data_key
static PyMethodDef | block_object_methods []
static gdb_PyGetSetDef | block_object_getset []
PyTypeObject | block_object_type
static PyMethodDef | block_iterator_object_methods []
PyTypeObject | block_syms_iterator_object_type

## Macro Definition Documentation

## ◆ BLPY_ITER_REQUIRE_VALID

#define BLPY_ITER_REQUIRE_VALID | ( |  | block_obj | ) |

Value:
do { \
if (block_obj->block == NULL) \
{ \
PyErr_SetString (PyExc_RuntimeError, \
_("Source block for iterator is invalid.")); \
return NULL; \
} \
} while (0)
_
#define _(String)
Definition: gdb_locale.h:35

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

Referenced by blpy_block_syms_iter(), and blpy_block_syms_iternext().

## ◆ BLPY_REQUIRE_VALID

#define BLPY_REQUIRE_VALID | ( |  | block_obj,
|  |  | block
| ) |  |

Value:
do { \
block = block_object_to_block (block_obj); \
if (block == NULL) \
{ \
PyErr_SetString (PyExc_RuntimeError, \
_("Block is invalid.")); \
return NULL; \
} \
} while (0)
_
#define _(String)
Definition: gdb_locale.h:35
block_object_to_block
const struct block * block_object_to_block(PyObject *obj)
Definition: py-block.c:285
block
Definition: block.h:60

Definition at line 58 of file py-block.c.

Referenced by blpy_get_end(), blpy_get_function(), blpy_get_global_block(), blpy_get_start(), blpy_get_static_block(), blpy_get_superblock(), blpy_is_global(), blpy_is_static(), and blpy_iter().

## Typedef Documentation

## ◆ block_object

typedef struct blpy_block_object block_object

## Function Documentation

## ◆ block_object_to_block()

const struct block* block_object_to_block | ( | PyObject * | obj | ) |

Definition at line 285 of file py-block.c.

References block_object_type.

Referenced by blpy_is_valid(), frapy_read_var(), gdbpy_lookup_symbol(), gdbpy_lookup_type(), and typy_template_argument().

## ◆ block_to_block_object()

PyObject* block_to_block_object | ( | const struct block * | block,
|  | struct objfile * | objfile
| ) |  |

Definition at line 272 of file py-block.c.

References block_object_type, and set_block().

Referenced by blpy_get_global_block(), blpy_get_static_block(), blpy_get_superblock(), frapy_block(), gdbpy_block_for_pc(), stpy_global_block(), and stpy_static_block().

## ◆ blpy_block_syms_dealloc()

static void blpy_block_syms_dealloc | ( | PyObject * | obj | ) |
| static

Definition at line 332 of file py-block.c.

References block_syms_iterator_object::source.

## ◆ blpy_block_syms_iter()

static PyObject* blpy_block_syms_iter | ( | PyObject * | self | ) |
| static

Definition at line 294 of file py-block.c.

References BLPY_ITER_REQUIRE_VALID, and block_syms_iterator_object::source.

## ◆ blpy_block_syms_iternext()

static PyObject* blpy_block_syms_iternext | ( | PyObject * | self | ) |
| static

Definition at line 307 of file py-block.c.

References _, block_syms_iterator_object::block, block_iterator_first(), block_iterator_next(), BLPY_ITER_REQUIRE_VALID, block_syms_iterator_object::initialized_p, block_syms_iterator_object::iter, block_syms_iterator_object::source, and symbol_to_symbol_object().

## ◆ blpy_dealloc()

static void blpy_dealloc | ( | PyObject * | obj | ) |
| static

Definition at line 229 of file py-block.c.

References blpy_objfile_data_key.

## ◆ blpy_get_end()

static PyObject* blpy_get_end | ( | PyObject * | self,
|  | void * | closure
| ) |  |
| static

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

References BLOCK_END, BLPY_REQUIRE_VALID, and gdb_py_object_from_ulongest().

## ◆ blpy_get_function()

static PyObject* blpy_get_function | ( | PyObject * | self,
|  | void * | closure
| ) |  |
| static

Definition at line 127 of file py-block.c.

References BLOCK_FUNCTION, BLPY_REQUIRE_VALID, and symbol_to_symbol_object().

## ◆ blpy_get_global_block()

static PyObject* blpy_get_global_block | ( | PyObject * | self,
|  | void * | closure
| ) |  |
| static

Definition at line 160 of file py-block.c.

References block_global_block(), block_to_block_object(), BLPY_REQUIRE_VALID, and blpy_block_object::objfile.

## ◆ blpy_get_start()

static PyObject* blpy_get_start | ( | PyObject * | self,
|  | void * | closure
| ) |  |
| static

Definition at line 107 of file py-block.c.

References BLOCK_START, BLPY_REQUIRE_VALID, and gdb_py_object_from_ulongest().

## ◆ blpy_get_static_block()

static PyObject* blpy_get_static_block | ( | PyObject * | self,
|  | void * | closure
| ) |  |
| static

Definition at line 179 of file py-block.c.

References block_static_block(), BLOCK_SUPERBLOCK, block_to_block_object(), BLPY_REQUIRE_VALID, and blpy_block_object::objfile.

## ◆ blpy_get_superblock()

static PyObject* blpy_get_superblock | ( | PyObject * | self,
|  | void * | closure
| ) |  |
| static

Definition at line 142 of file py-block.c.

References BLOCK_SUPERBLOCK, block_to_block_object(), BLPY_REQUIRE_VALID, and blpy_block_object::objfile.

## ◆ blpy_is_global()

static PyObject* blpy_is_global | ( | PyObject * | self,
|  | void * | closure
| ) |  |
| static

Definition at line 199 of file py-block.c.

References BLOCK_SUPERBLOCK, and BLPY_REQUIRE_VALID.

## ◆ blpy_is_static()

static PyObject* blpy_is_static | ( | PyObject * | self,
|  | void * | closure
| ) |  |
| static

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

References BLOCK_SUPERBLOCK, and BLPY_REQUIRE_VALID.

## ◆ blpy_is_valid()

static PyObject* blpy_is_valid | ( | PyObject * | self,
|  | PyObject * | args
| ) |  |
| static

Definition at line 343 of file py-block.c.

References block_object_to_block().

## ◆ blpy_iter()

static PyObject* blpy_iter | ( | PyObject * | self | ) |
| static

Definition at line 86 of file py-block.c.

References block_syms_iterator_object::block, block_syms_iterator_object_type, BLPY_REQUIRE_VALID, block_syms_iterator_object::initialized_p, and block_syms_iterator_object::source.

## ◆ blpy_iter_is_valid()

static PyObject* blpy_iter_is_valid | ( | PyObject * | self,
|  | PyObject * | args
| ) |  |
| static

Definition at line 358 of file py-block.c.

References blpy_block_object::block, and block_syms_iterator_object::source.

## ◆ CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF()

PyTypeObject block_syms_iterator_object_type CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF | ( | "block_syms_iterator_object" |  | ) |

## ◆ del_objfile_blocks()

static void del_objfile_blocks | ( | struct objfile * | objfile,
|  | void * | datum
| ) |  |
| static

Definition at line 413 of file py-block.c.

References blpy_block_object::block, blpy_block_object::next, compunit_symtab::next, blpy_block_object::objfile, and blpy_block_object::prev.

Referenced by gdbpy_initialize_blocks().

## ◆ gdbpy_block_for_pc()

PyObject* gdbpy_block_for_pc | ( | PyObject * | self,
|  | PyObject * | args
| ) |  |

Definition at line 372 of file py-block.c.

References _, block_for_pc(), block_to_block_object(), CATCH, COMPUNIT_OBJFILE, END_CATCH, find_pc_compunit_symtab(), GDB_PY_HANDLE_EXCEPTION, GDB_PY_LLU_ARG, RETURN_MASK_ALL, and TRY.

## ◆ gdbpy_initialize_blocks()

int gdbpy_initialize_blocks | ( | void |  | ) |

Definition at line 431 of file py-block.c.

References block_object_type, block_syms_iterator_object_type, blpy_objfile_data_key, del_objfile_blocks(), gdb_module, and gdb_pymodule_addobject().

Referenced by do_start_initialization().

## ◆ set_block()

static void set_block | ( | block_object * | obj,
|  | const struct block * | block,
|  | struct objfile * | objfile
| ) |  |
| static

Definition at line 251 of file py-block.c.

References blpy_block_object::block, blpy_objfile_data_key, blpy_block_object::next, blpy_block_object::objfile, and blpy_block_object::prev.

Referenced by block_to_block_object().

## Variable Documentation

## ◆ block_iterator_object_methods

PyMethodDef block_iterator_object_methods[]
| static

Initial value:
= {
{ "is_valid", blpy_iter_is_valid, METH_NOARGS,
"is_valid () -> Boolean.\n\
Return true if this block iterator is valid, false if not." },
{NULL}
}
blpy_iter_is_valid
static PyObject * blpy_iter_is_valid(PyObject *self, PyObject *args)
Definition: py-block.c:358

Definition at line 515 of file py-block.c.

## ◆ block_object_getset

gdb_PyGetSetDef block_object_getset[]
| static

Initial value:
= {
{ "start", blpy_get_start, NULL, "Start address of the block.", NULL },
{ "end", blpy_get_end, NULL, "End address of the block.", NULL },
{ "function", blpy_get_function, NULL,
"Symbol that names the block, or None.", NULL },
{ "superblock", blpy_get_superblock, NULL,
"Block containing the block, or None.", NULL },
{ "global_block", blpy_get_global_block, NULL,
"Block containing the global block.", NULL },
{ "static_block", blpy_get_static_block, NULL,
"Block containing the static block.", NULL },
{ "is_static", blpy_is_static, NULL,
"Whether this block is a static block.", NULL },
{ "is_global", blpy_is_global, NULL,
"Whether this block is a global block.", NULL },
{ NULL }
}
blpy_get_global_block
static PyObject * blpy_get_global_block(PyObject *self, void *closure)
Definition: py-block.c:160
blpy_get_end
static PyObject * blpy_get_end(PyObject *self, void *closure)
Definition: py-block.c:117
blpy_is_static
static PyObject * blpy_is_static(PyObject *self, void *closure)
Definition: py-block.c:215
blpy_get_function
static PyObject * blpy_get_function(PyObject *self, void *closure)
Definition: py-block.c:127
blpy_get_superblock
static PyObject * blpy_get_superblock(PyObject *self, void *closure)
Definition: py-block.c:142
blpy_get_static_block
static PyObject * blpy_get_static_block(PyObject *self, void *closure)
Definition: py-block.c:179
blpy_get_start
static PyObject * blpy_get_start(PyObject *self, void *closure)
Definition: py-block.c:107
blpy_is_global
static PyObject * blpy_is_global(PyObject *self, void *closure)
Definition: py-block.c:199

Definition at line 464 of file py-block.c.

## ◆ block_object_methods

PyMethodDef block_object_methods[]
| static

Initial value:
= {
{ "is_valid", blpy_is_valid, METH_NOARGS,
"is_valid () -> Boolean.\n\
Return true if this block is valid, false if not." },
{NULL}
}
blpy_is_valid
static PyObject * blpy_is_valid(PyObject *self, PyObject *args)
Definition: py-block.c:343

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

## ◆ block_object_type

PyTypeObject block_object_type

Definition at line 482 of file py-block.c.

Referenced by block_object_to_block(), block_to_block_object(), gdbpy_initialize_blocks(), and gdbpy_lookup_symbol().

## ◆ block_syms_iterator_object_type

PyTypeObject block_syms_iterator_object_type

Initial value:
= {
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.BlockIterator",
sizeof (block_syms_iterator_object),
0,
blpy_block_syms_dealloc,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_ITER,
"GDB block syms iterator object",
0,
0,
0,
0,
blpy_block_syms_iter,
blpy_block_syms_iternext,
block_iterator_object_methods
}
blpy_block_syms_iter
static PyObject * blpy_block_syms_iter(PyObject *self)
Definition: py-block.c:294
block_iterator_object_methods
static PyMethodDef block_iterator_object_methods[]
Definition: py-block.c:515
PyVarObject_HEAD_INIT
#define PyVarObject_HEAD_INIT(type, size)
Definition: python-internal.h:133
block_syms_iterator_object
Definition: py-block.c:42
blpy_block_syms_iternext
static PyObject * blpy_block_syms_iternext(PyObject *self)
Definition: py-block.c:307
blpy_block_syms_dealloc
static void blpy_block_syms_dealloc(PyObject *obj)
Definition: py-block.c:332

Definition at line 522 of file py-block.c.

Referenced by blpy_iter(), and gdbpy_initialize_blocks().

## ◆ blpy_objfile_data_key

const struct objfile_data* blpy_objfile_data_key
| static

Definition at line 83 of file py-block.c.

Referenced by blpy_dealloc(), gdbpy_initialize_blocks(), and set_block().