* 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.
This commit is contained in:
parent
ffa54e5c48
commit
9dea916356
@ -1,3 +1,14 @@
|
||||
2010-11-02 Doug Evans <dje@google.com>
|
||||
|
||||
* 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.
|
||||
|
||||
2010-11-02 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
Revert:
|
||||
|
@ -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[] =
|
||||
{
|
||||
|
@ -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);
|
||||
|
12
gdb/top.c
12
gdb/top.c
@ -47,6 +47,7 @@
|
||||
#include "main.h"
|
||||
#include "event-loop.h"
|
||||
#include "gdbthread.h"
|
||||
#include "python/python.h"
|
||||
|
||||
/* readline include files */
|
||||
#include "readline/readline.h"
|
||||
@ -1657,7 +1658,10 @@ gdb_init (char *argv0)
|
||||
init_cmd_lists (); /* This needs to be done first */
|
||||
initialize_targets (); /* Setup target_terminal macros for utils.c */
|
||||
initialize_utils (); /* Make errors and warnings possible */
|
||||
|
||||
/* Here is where we call all the _initialize_foo routines. */
|
||||
initialize_all_files ();
|
||||
|
||||
/* This creates the current_program_space. Do this after all the
|
||||
_initialize_foo routines have had a chance to install their
|
||||
per-sspace data keys. Also do this before
|
||||
@ -1684,4 +1688,12 @@ gdb_init (char *argv0)
|
||||
deprecated_init_ui_hook. */
|
||||
if (deprecated_init_ui_hook)
|
||||
deprecated_init_ui_hook (argv0);
|
||||
|
||||
#ifdef HAVE_PYTHON
|
||||
/* Python initialization can require various commands to be installed.
|
||||
For example "info pretty-printer" needs the "info" prefix to be
|
||||
installed. Keep things simple and just do final python initialization
|
||||
here. */
|
||||
finish_python_initialization ();
|
||||
#endif
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user