Example #1
0
int
gdbpy_initialize_symtabs (void)
{
  symtab_object_type.tp_new = PyType_GenericNew;
  if (PyType_Ready (&symtab_object_type) < 0)
    return -1;

  sal_object_type.tp_new = PyType_GenericNew;
  if (PyType_Ready (&sal_object_type) < 0)
    return -1;

  /* Register an objfile "free" callback so we can properly
     invalidate symbol tables, and symbol table and line data
     structures when an object file that is about to be
     deleted.  */
  stpy_objfile_data_key
    = register_objfile_data_with_cleanup (NULL, del_objfile_symtab);
  salpy_objfile_data_key
    = register_objfile_data_with_cleanup (NULL, del_objfile_sal);

  if (gdb_pymodule_addobject (gdb_module, "Symtab",
			      (PyObject *) &symtab_object_type) < 0)
    return -1;

  return gdb_pymodule_addobject (gdb_module, "Symtab_and_line",
				 (PyObject *) &sal_object_type);
}
Example #2
0
int
gdbpy_initialize_py_events (void)
{
#ifdef IS_PY3K
  gdb_py_events.module = PyModule_Create (&EventModuleDef);
#else
  gdb_py_events.module = Py_InitModule ("events", NULL);
#endif

  if (!gdb_py_events.module)
    return -1;

#define GDB_PY_DEFINE_EVENT(name)				\
  if (add_new_registry (&gdb_py_events.name, #name) < 0)	\
    return -1;
#include "py-all-events.def"
#undef GDB_PY_DEFINE_EVENT

  if (gdb_pymodule_addobject (gdb_module,
			      "events",
			      (PyObject *) gdb_py_events.module) < 0)
    return -1;

  return 0;
}
Example #3
0
int
gdbpy_initialize_eventregistry (void)
{
  if (PyType_Ready (&eventregistry_object_type) < 0)
    return -1;

  return gdb_pymodule_addobject (gdb_module, "EventRegistry",
				 (PyObject *) &eventregistry_object_type);
}
Example #4
0
int
gdbpy_initialize_event_generic (PyTypeObject *type,
                                char *name)
{
  if (PyType_Ready (type) < 0)
    return -1;

  return gdb_pymodule_addobject (gdb_module, name, (PyObject *) type);
}
Example #5
0
int
gdbpy_initialize_functions (void)
{
  fnpy_object_type.tp_new = PyType_GenericNew;
  if (PyType_Ready (&fnpy_object_type) < 0)
    return -1;

  return gdb_pymodule_addobject (gdb_module, "Function",
				 (PyObject *) &fnpy_object_type);
}
Example #6
0
int
gdbpy_initialize_objfile (void)
{
    objfpy_objfile_data_key
        = register_objfile_data_with_cleanup (NULL, py_free_objfile);

    if (PyType_Ready (&objfile_object_type) < 0)
        return -1;

    return gdb_pymodule_addobject (gdb_module, "Objfile",
                                   (PyObject *) &objfile_object_type);
}
Example #7
0
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
add_new_registry (eventregistry_object **registryp, const char *name)
{
  *registryp = create_eventregistry_object ();

  if (*registryp == NULL)
    return -1;

  return gdb_pymodule_addobject (gdb_py_events.module,
				 name,
				 (PyObject *)(*registryp));
}
Example #8
0
int
gdbpy_initialize_pspace (void)
{
  pspy_pspace_data_key
    = register_program_space_data_with_cleanup (NULL, py_free_pspace);

  if (PyType_Ready (&pspace_object_type) < 0)
    return -1;

  return gdb_pymodule_addobject (gdb_module, "Progspace",
				 (PyObject *) &pspace_object_type);
}
Example #9
0
int
gdbpy_initialize_py_events (void)
{
#ifdef IS_PY3K
  gdb_py_events.module = PyModule_Create (&EventModuleDef);
#else
  gdb_py_events.module = Py_InitModule ("events", NULL);
#endif

  if (!gdb_py_events.module)
    return -1;

  if (add_new_registry (&gdb_py_events.stop, "stop") < 0)
    return -1;

  if (add_new_registry (&gdb_py_events.cont, "cont") < 0)
    return -1;

  if (add_new_registry (&gdb_py_events.exited, "exited") < 0)
    return -1;

  if (add_new_registry (&gdb_py_events.inferior_call,
			"inferior_call") < 0)
    return -1;

  if (add_new_registry (&gdb_py_events.memory_changed,
			"memory_changed") < 0)
    return -1;

  if (add_new_registry (&gdb_py_events.register_changed,
			"register_changed") < 0)
    return -1;

  if (add_new_registry (&gdb_py_events.new_objfile, "new_objfile") < 0)
    return -1;

  if (add_new_registry (&gdb_py_events.clear_objfiles, "clear_objfiles") < 0)
    return -1;

  if (gdb_pymodule_addobject (gdb_module,
			      "events",
			      (PyObject *) gdb_py_events.module) < 0)
    return -1;

  return 0;
}