Refactor Python "gdb" module into a proper Python package, by introducing
a new "_gdb" module for code implemented in C, and using reload/__import__ instead of exec. gdb/ * python/lib/gdb/__init__.py: Import * from _gdb. (GdbOutputFile, sys.stdout, GdbOutputErrorFile, sys.stderr, prompt_hook, sys.argv): Moved from finish_python_initialization. (pretty_printers, PYTHONDIR): Moved from _initialize_python. (packages, auto_load_packages): New list and function replacing module_dict and auto-loading code, using __file__ instead of gdb.PYTHONDIR and reload/__import__ instead of exec. (GdbSetPythonDirectory): Replacing function of the same name from finish_python_initialization, using reload/__import__ instead of exec, as well as call auto_load_packages. * python/py-prettyprint.c (find_pretty_printer_from_gdb): Check gdb_python_module and not gdb_module. * python/python-internal.h (gdb_python_module): Declare. * python/python.c (gdb_python_module): New global. (before_prompt_hook): Check gdb_python_module and not gdb_module. (_initialize_python): Rename gdb module to _gdb. Move gdb.PYTHONDIR and gdb.pretty_printer to lib/gdb/__init__.py. (finish_python_initialization): Move Python code to lib/gdb/__init__.py; instead, set up sys.path and import gdb into __main__. gdb/testsuite/ * gdb.python/python.exp (Test stderr location): Update module location of GDB-specific sys.stderr. (Test stdout location): Ditto for sys.stdout.
This commit is contained in:
parent
121c73f33a
commit
b9516fa158
7 changed files with 204 additions and 115 deletions
|
@ -162,9 +162,10 @@ find_pretty_printer_from_gdb (PyObject *value)
|
|||
PyObject *function;
|
||||
|
||||
/* Fetch the global pretty printer list. */
|
||||
if (! PyObject_HasAttrString (gdb_module, "pretty_printers"))
|
||||
if (gdb_python_module == NULL
|
||||
|| ! PyObject_HasAttrString (gdb_python_module, "pretty_printers"))
|
||||
Py_RETURN_NONE;
|
||||
pp_list = PyObject_GetAttrString (gdb_module, "pretty_printers");
|
||||
pp_list = PyObject_GetAttrString (gdb_python_module, "pretty_printers");
|
||||
if (pp_list == NULL || ! PyList_Check (pp_list))
|
||||
{
|
||||
Py_XDECREF (pp_list);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue