/* Return the innermost lexical block containing the specified pc value, or 0 if there is none. */ PyObject * gdbpy_block_for_pc (PyObject *self, PyObject *args) { unsigned PY_LONG_LONG pc; struct block *block; struct obj_section *section; struct symtab *symtab; if (!PyArg_ParseTuple (args, "K", &pc)) return NULL; section = find_pc_mapped_section (pc); symtab = find_pc_sect_symtab (pc, section); if (!symtab || symtab->objfile == NULL) { PyErr_SetString (PyExc_RuntimeError, _("Cannot locate object file for block.")); return NULL; } block = block_for_pc (pc); if (block) return block_to_block_object (block, symtab->objfile); Py_RETURN_NONE; }
static PyObject * stpy_static_block (PyObject *self, PyObject *args) { struct symtab *symtab = NULL; struct block *block = NULL; const struct blockvector *blockvector; STPY_REQUIRE_VALID (self, symtab); blockvector = SYMTAB_BLOCKVECTOR (symtab); block = BLOCKVECTOR_BLOCK (blockvector, STATIC_BLOCK); return block_to_block_object (block, SYMTAB_OBJFILE (symtab)); }
static PyObject * stpy_static_block (PyObject *self, PyObject *args) { struct symtab *symtab = NULL; struct block *block = NULL; struct blockvector *blockvector; STPY_REQUIRE_VALID (self, symtab); blockvector = BLOCKVECTOR (symtab); block = BLOCKVECTOR_BLOCK (blockvector, STATIC_BLOCK); return block_to_block_object (block, symtab->objfile); }
static PyObject * blpy_get_superblock (PyObject *self, void *closure) { struct block *block = NULL; struct block *super_block = NULL; block_object *self_obj = (block_object *) self; BLPY_REQUIRE_VALID (self, block); super_block = BLOCK_SUPERBLOCK (block); if (super_block) return block_to_block_object (super_block, self_obj->objfile); Py_RETURN_NONE; }
static PyObject * blpy_get_global_block (PyObject *self, void *closure) { const struct block *block; const struct block *global_block; block_object *self_obj = (block_object *) self; BLPY_REQUIRE_VALID (self, block); global_block = block_global_block (block); return block_to_block_object (global_block, self_obj->objfile); }
static PyObject * blpy_get_static_block (PyObject *self, void *closure) { const struct block *block; const struct block *static_block; block_object *self_obj = (block_object *) self; BLPY_REQUIRE_VALID (self, block); if (BLOCK_SUPERBLOCK (block) == NULL) Py_RETURN_NONE; static_block = block_static_block (block); return block_to_block_object (static_block, self_obj->objfile); }