CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("symtab_object");
static const struct objfile_data *stpy_objfile_data_key;
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("symtab_object");
static const struct objfile_data *stpy_objfile_data_key;
/* The GDB Symbol table and line structure. */
struct symtab_and_line *sal;
/* A Symtab and line object is associated with an objfile, so keep
/* The GDB Symbol table and line structure. */
struct symtab_and_line *sal;
/* A Symtab and line object is associated with an objfile, so keep
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("sal_object");
static const struct objfile_data *salpy_objfile_data_key;
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("sal_object");
static const struct objfile_data *salpy_objfile_data_key;
STPY_REQUIRE_VALID (self, symtab);
filename = symtab_to_filename_for_display (symtab);
STPY_REQUIRE_VALID (self, symtab);
filename = symtab_to_filename_for_display (symtab);
- str_obj = PyString_Decode (filename, strlen (filename),
- host_charset (), NULL);
+ str_obj = host_string_to_python_string (filename).release ();
stpy_get_objfile (PyObject *self, void *closure)
{
struct symtab *symtab = NULL;
stpy_get_objfile (PyObject *self, void *closure)
{
struct symtab *symtab = NULL;
stpy_get_producer (PyObject *self, void *closure)
{
struct symtab *symtab = NULL;
stpy_get_producer (PyObject *self, void *closure)
{
struct symtab *symtab = NULL;
- return PyString_Decode (producer, strlen (producer),
- host_charset (), NULL);
+ return host_string_to_python_string (producer).release ();
stpy_global_block (PyObject *self, PyObject *args)
{
struct symtab *symtab = NULL;
stpy_global_block (PyObject *self, PyObject *args)
{
struct symtab *symtab = NULL;
const struct blockvector *blockvector;
STPY_REQUIRE_VALID (self, symtab);
const struct blockvector *blockvector;
STPY_REQUIRE_VALID (self, symtab);
stpy_static_block (PyObject *self, PyObject *args)
{
struct symtab *symtab = NULL;
stpy_static_block (PyObject *self, PyObject *args)
{
struct symtab *symtab = NULL;
const struct blockvector *blockvector;
STPY_REQUIRE_VALID (self, symtab);
const struct blockvector *blockvector;
STPY_REQUIRE_VALID (self, symtab);
-/* Implementation of gdb.Symtab.linetable (self) -> gdb.Linetable.
- Returns a gdb.Linetable object corresponding to this symbol
+/* Implementation of gdb.Symtab.linetable (self) -> gdb.LineTable.
+ Returns a gdb.LineTable object corresponding to this symbol
struct symtab_and_line *sal = NULL;
SALPY_REQUIRE_VALID (self, sal);
sal_obj = (sal_object *) self;
struct symtab_and_line *sal = NULL;
SALPY_REQUIRE_VALID (self, sal);
sal_obj = (sal_object *) self;
- filename = (sal_obj->symtab == (symtab_object *) Py_None)
- ? "<unknown>" : symtab_to_filename_for_display (sal_obj->symtab->symtab);
-
- s = xstrprintf ("symbol and line for %s, line %d", filename,
- sal->line);
-
- result = PyString_FromString (s);
- xfree (s);
+ if (sal_obj->symtab == Py_None)
+ filename = "<unknown>";
+ else
+ {
+ symtab *symtab = symtab_object_to_symtab (sal_obj->symtab);
+ filename = symtab_to_filename_for_display (symtab);
+ }
- else if (self_sal->symtab != (symtab_object * ) Py_None)
- set_objfile_data (SYMTAB_OBJFILE (self_sal->symtab->symtab),
- salpy_objfile_data_key, self_sal->next);
+ else if (self_sal->symtab != Py_None)
+ set_objfile_data
+ (SYMTAB_OBJFILE (symtab_object_to_symtab (self_sal->symtab)),
+ salpy_objfile_data_key, self_sal->next);
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
set_sal (sal_object *sal_obj, struct symtab_and_line sal)
{
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
set_sal (sal_object *sal_obj, struct symtab_and_line sal)
{
- sal_obj->sal = xmemdup (&sal, sizeof (struct symtab_and_line),
- sizeof (struct symtab_and_line));
+ sal_obj->sal = ((struct symtab_and_line *)
+ xmemdup (&sal, sizeof (struct symtab_and_line),
+ sizeof (struct symtab_and_line)));
sal_obj->symtab = symtab_obj;
sal_obj->prev = NULL;
/* If the SAL does not have a symtab, we do not add it to the
objfile cleanup observer linked list. */
sal_obj->symtab = symtab_obj;
sal_obj->prev = NULL;
/* If the SAL does not have a symtab, we do not add it to the
objfile cleanup observer linked list. */
- sal_obj->next = objfile_data (SYMTAB_OBJFILE (sal_obj->symtab->symtab),
- salpy_objfile_data_key);
+ symtab *symtab = symtab_object_to_symtab (sal_obj->symtab);
+
+ sal_obj->next
+ = ((struct salpy_sal_object *) objfile_data (SYMTAB_OBJFILE (symtab),
+ salpy_objfile_data_key));
- obj->next = objfile_data (SYMTAB_OBJFILE (symtab),
- stpy_objfile_data_key);
+ obj->next
+ = ((struct stpy_symtab_object *)
+ objfile_data (SYMTAB_OBJFILE (symtab), stpy_objfile_data_key));
{ "filename", stpy_get_filename, NULL,
"The symbol table's source filename.", NULL },
{ "objfile", stpy_get_objfile, NULL, "The symtab's objfile.",
{ "filename", stpy_get_filename, NULL,
"The symbol table's source filename.", NULL },
{ "objfile", stpy_get_objfile, NULL, "The symtab's objfile.",
"static_block () -> gdb.Block.\n\
Return the static block of the symbol table." },
{ "linetable", stpy_get_linetable, 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" },
+ "linetable () -> gdb.LineTable.\n\
+Return the LineTable associated with this symbol table" },
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.Symtab", /*tp_name*/
sizeof (symtab_object), /*tp_basicsize*/
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.Symtab", /*tp_name*/
sizeof (symtab_object), /*tp_basicsize*/
{ "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,
{ "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,
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.Symtab_and_line", /*tp_name*/
sizeof (sal_object), /*tp_basicsize*/
PyVarObject_HEAD_INIT (NULL, 0)
"gdb.Symtab_and_line", /*tp_name*/
sizeof (sal_object), /*tp_basicsize*/