* 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
4 changed files with 48 additions and 8 deletions
|
@ -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>
|
2010-11-02 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
Revert:
|
Revert:
|
||||||
|
|
|
@ -997,9 +997,26 @@ Enables or disables printing of Python stack traces."),
|
||||||
gdbpy_doc_cst = PyString_FromString ("__doc__");
|
gdbpy_doc_cst = PyString_FromString ("__doc__");
|
||||||
gdbpy_enabled_cst = PyString_FromString ("enabled");
|
gdbpy_enabled_cst = PyString_FromString ("enabled");
|
||||||
|
|
||||||
/* Remaining initialization is done in Python.
|
/* Release the GIL while gdb runs. */
|
||||||
- create a couple objects which are used for Python's stdout and stderr
|
PyThreadState_Swap (NULL);
|
||||||
- provide function GdbSetPythonDirectory */
|
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 ("\
|
PyRun_SimpleString ("\
|
||||||
import os\n\
|
import os\n\
|
||||||
|
@ -1055,16 +1072,14 @@ def GdbSetPythonDirectory (dir):\n\
|
||||||
GdbSetPythonDirectory (gdb.PYTHONDIR)\n\
|
GdbSetPythonDirectory (gdb.PYTHONDIR)\n\
|
||||||
");
|
");
|
||||||
|
|
||||||
/* Release the GIL while gdb runs. */
|
do_cleanups (cleanup);
|
||||||
PyThreadState_Swap (NULL);
|
}
|
||||||
PyEval_ReleaseLock ();
|
|
||||||
|
|
||||||
#endif /* HAVE_PYTHON */
|
#endif /* HAVE_PYTHON */
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if HAVE_PYTHON
|
#ifdef HAVE_PYTHON
|
||||||
|
|
||||||
static PyMethodDef GdbMethods[] =
|
static PyMethodDef GdbMethods[] =
|
||||||
{
|
{
|
||||||
|
|
|
@ -24,6 +24,8 @@
|
||||||
|
|
||||||
extern int gdbpy_global_auto_load;
|
extern int gdbpy_global_auto_load;
|
||||||
|
|
||||||
|
extern void finish_python_initialization (void);
|
||||||
|
|
||||||
void eval_python_from_control_command (struct command_line *);
|
void eval_python_from_control_command (struct command_line *);
|
||||||
|
|
||||||
void source_python_script (FILE *stream, const char *file);
|
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 "main.h"
|
||||||
#include "event-loop.h"
|
#include "event-loop.h"
|
||||||
#include "gdbthread.h"
|
#include "gdbthread.h"
|
||||||
|
#include "python/python.h"
|
||||||
|
|
||||||
/* readline include files */
|
/* readline include files */
|
||||||
#include "readline/readline.h"
|
#include "readline/readline.h"
|
||||||
|
@ -1657,7 +1658,10 @@ gdb_init (char *argv0)
|
||||||
init_cmd_lists (); /* This needs to be done first */
|
init_cmd_lists (); /* This needs to be done first */
|
||||||
initialize_targets (); /* Setup target_terminal macros for utils.c */
|
initialize_targets (); /* Setup target_terminal macros for utils.c */
|
||||||
initialize_utils (); /* Make errors and warnings possible */
|
initialize_utils (); /* Make errors and warnings possible */
|
||||||
|
|
||||||
|
/* Here is where we call all the _initialize_foo routines. */
|
||||||
initialize_all_files ();
|
initialize_all_files ();
|
||||||
|
|
||||||
/* This creates the current_program_space. Do this after all the
|
/* This creates the current_program_space. Do this after all the
|
||||||
_initialize_foo routines have had a chance to install their
|
_initialize_foo routines have had a chance to install their
|
||||||
per-sspace data keys. Also do this before
|
per-sspace data keys. Also do this before
|
||||||
|
@ -1684,4 +1688,12 @@ gdb_init (char *argv0)
|
||||||
deprecated_init_ui_hook. */
|
deprecated_init_ui_hook. */
|
||||||
if (deprecated_init_ui_hook)
|
if (deprecated_init_ui_hook)
|
||||||
deprecated_init_ui_hook (argv0);
|
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…
Add table
Add a link
Reference in a new issue