aboutsummaryrefslogtreecommitdiff
path: root/gdb/python
diff options
context:
space:
mode:
authorDoug Evans <dje@google.com>2010-11-02 16:48:43 +0000
committerDoug Evans <dje@google.com>2010-11-02 16:48:43 +0000
commit9dea9163560f26f9adddd13254ad32f4aea3b1d6 (patch)
tree524bda94e28e26bc3ae3bc014c9b499887c70b7f /gdb/python
parentffa54e5c48223b42840f93e56a5eff69998ab4e1 (diff)
downloadgdb-9dea9163560f26f9adddd13254ad32f4aea3b1d6.zip
gdb-9dea9163560f26f9adddd13254ad32f4aea3b1d6.tar.gz
gdb-9dea9163560f26f9adddd13254ad32f4aea3b1d6.tar.bz2
* top.c: #include "python/python.h".
(gdb_init): Add a comment regarding initialize_all_files. Call finish_python_initialization at the end. * python/python.h (finish_python_initialization): Declare. * python/python.c (finish_python_initialization): New function. (_initialize_python): Move python-implemented initialization there and call it. (GdbMethods): Use #ifdef HAVE_PYTHON for consistency.
Diffstat (limited to 'gdb/python')
-rw-r--r--gdb/python/python.c31
-rw-r--r--gdb/python/python.h2
2 files changed, 25 insertions, 8 deletions
diff --git a/gdb/python/python.c b/gdb/python/python.c
index 78410c6..d4f8c3d 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -997,9 +997,26 @@ Enables or disables printing of Python stack traces."),
gdbpy_doc_cst = PyString_FromString ("__doc__");
gdbpy_enabled_cst = PyString_FromString ("enabled");
- /* Remaining initialization is done in Python.
- - create a couple objects which are used for Python's stdout and stderr
- - provide function GdbSetPythonDirectory */
+ /* Release the GIL while gdb runs. */
+ PyThreadState_Swap (NULL);
+ PyEval_ReleaseLock ();
+
+#endif /* HAVE_PYTHON */
+}
+
+#ifdef HAVE_PYTHON
+
+/* Perform the remaining python initializations.
+ These must be done after GDB is at least mostly initialized.
+ E.g., The "info pretty-printer" command needs the "info" prefix
+ command installed. */
+
+void
+finish_python_initialization (void)
+{
+ struct cleanup *cleanup;
+
+ cleanup = ensure_python_env (get_current_arch (), current_language);
PyRun_SimpleString ("\
import os\n\
@@ -1055,16 +1072,14 @@ def GdbSetPythonDirectory (dir):\n\
GdbSetPythonDirectory (gdb.PYTHONDIR)\n\
");
- /* Release the GIL while gdb runs. */
- PyThreadState_Swap (NULL);
- PyEval_ReleaseLock ();
+ do_cleanups (cleanup);
+}
#endif /* HAVE_PYTHON */
-}
-#if HAVE_PYTHON
+#ifdef HAVE_PYTHON
static PyMethodDef GdbMethods[] =
{
diff --git a/gdb/python/python.h b/gdb/python/python.h
index affd4a4..04d5c28 100644
--- a/gdb/python/python.h
+++ b/gdb/python/python.h
@@ -24,6 +24,8 @@
extern int gdbpy_global_auto_load;
+extern void finish_python_initialization (void);
+
void eval_python_from_control_command (struct command_line *);
void source_python_script (FILE *stream, const char *file);