2008-08-06 21:41:33 +02:00
|
|
|
/* Gdb/Python header for private use by Python module.
|
|
|
|
|
2011-01-01 16:34:07 +01:00
|
|
|
Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
2008-08-06 21:41:33 +02:00
|
|
|
|
|
|
|
This file is part of GDB.
|
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU General Public License as published by
|
|
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
|
|
|
|
#ifndef GDB_PYTHON_INTERNAL_H
|
|
|
|
#define GDB_PYTHON_INTERNAL_H
|
|
|
|
|
2010-04-23 18:20:13 +02:00
|
|
|
#include <stdio.h>
|
|
|
|
|
2008-08-06 21:41:33 +02:00
|
|
|
/* Python 2.4 doesn't include stdint.h soon enough to get {u,}intptr_t
|
|
|
|
needed by pyport.h. */
|
|
|
|
#include <stdint.h>
|
|
|
|
|
|
|
|
/* /usr/include/features.h on linux systems will define _POSIX_C_SOURCE
|
|
|
|
if it sees _GNU_SOURCE (which config.h will define).
|
|
|
|
pyconfig.h defines _POSIX_C_SOURCE to a different value than
|
|
|
|
/usr/include/features.h does causing compilation to fail.
|
2010-07-01 01:12:04 +02:00
|
|
|
To work around this, undef _POSIX_C_SOURCE before we include Python.h.
|
|
|
|
|
|
|
|
Same problem with _XOPEN_SOURCE. */
|
2008-08-06 21:41:33 +02:00
|
|
|
#undef _POSIX_C_SOURCE
|
2010-07-01 01:12:04 +02:00
|
|
|
#undef _XOPEN_SOURCE
|
2008-08-06 21:41:33 +02:00
|
|
|
|
2010-10-26 20:06:34 +02:00
|
|
|
/* On sparc-solaris, /usr/include/sys/feature_tests.h defines
|
|
|
|
_FILE_OFFSET_BITS, which pyconfig.h also defines. Same work
|
2010-10-26 20:08:04 +02:00
|
|
|
around technique as above. */
|
2010-10-26 20:06:34 +02:00
|
|
|
#undef _FILE_OFFSET_BITS
|
|
|
|
|
do not use python<version> subdir when including Python .h file
This is preparation work for being able to build GDB with Python
support on MinGW.
So far, the "python<version>" subdirectory needs to be specified
when including a Python header file. In order to do that, we have
some special configury that tweaks the include path returned by
python-config.py such that the use of the subdirectory in the include
is necessary. This was done in order to protect ourselves from
possible filename conflicts, since some of the filenames chosen by
Python were a little generic.
The problem is that this cannot work with a standard Python install
on MinGW systems. On such systems, the .h files are located in
<python_prefix>/include. So, in preparation for allowing us to build
GDB on MinGW with Python support enabled, this patch changes the
requirement to provide the "python<version>" subdirectory in the
include directive.
The positive consequence is that we no longer need to have a set
of #include directives for each version of Python, since the include
directive is now the same for all versions of Python. However, the
downside is that we are losing the level of protection we were trying
to achieve by forcing the subdirectory in the include directive.
In order to reduce a bit the consequences of a possible conflict,
this patch also changes the location where the -I/path/to/python
switch goes, to be last in the list (suggested by Doug Evans).
One last change is the fact that we are now including Python.h
and all other Python include headers using angle brackets rather
than double-quotes. This fixes a problem on case-insensitive
systems where #include "Python.h" causes our gdb/python/python.h
header to be included instead of Python's <Python.h> header.
gdb/ChangeLog:
* configure.ac: Remove fallback behavior for building
against Python. Remove tweaking of Python include path.
Add PYTHON_CPPFLAGS and PYTHON_LIBS substitution.
(AC_TRY_LIBPYTHON): Adjust program used in linking test.
If link is successful, set PYTHON_CPPFLAGS and PYTHON_LIBS.
Always restore CPPFLAGS and LIBS after linking test.
* configure: Regenerated.
* Makefile.in (INTERNAL_CPPFLAGS): Add @PYTHON_CPPFLAGS@.
(INSTALLED_LIBS, CLIBS): Add @PYTHON_LIBS@.
* python/python-internal.h: Adjust includes of Python .h files.
2011-01-31 05:41:27 +01:00
|
|
|
/* Include the Python header files using angle brackets rather than
|
|
|
|
double quotes. On case-insensitive filesystems, this prevents us
|
|
|
|
from including our python/python.h header file. */
|
|
|
|
#include <Python.h>
|
|
|
|
#include <frameobject.h>
|
2008-08-06 21:41:33 +02:00
|
|
|
#if HAVE_LIBPYTHON2_4
|
2009-01-05 21:48:51 +01:00
|
|
|
/* Py_ssize_t is not defined until 2.5.
|
|
|
|
Logical type for Py_ssize_t is Py_intptr_t, but that fails in 64-bit
|
|
|
|
compilation due to several apparent mistakes in python2.4 API, so we
|
|
|
|
use 'int' instead. */
|
|
|
|
typedef int Py_ssize_t;
|
2008-08-06 21:41:33 +02:00
|
|
|
#endif
|
|
|
|
|
2008-11-21 15:59:56 +01:00
|
|
|
/* If Python.h does not define WITH_THREAD, then the various
|
|
|
|
GIL-related functions will not be defined. However,
|
|
|
|
PyGILState_STATE will be. */
|
|
|
|
#ifndef WITH_THREAD
|
|
|
|
#define PyGILState_Ensure() ((PyGILState_STATE) 0)
|
2010-02-17 15:58:54 +01:00
|
|
|
#define PyGILState_Release(ARG) ((void)(ARG))
|
2010-10-26 20:06:34 +02:00
|
|
|
#define PyEval_InitThreads()
|
2010-02-17 15:58:54 +01:00
|
|
|
#define PyThreadState_Swap(ARG) ((void)(ARG))
|
2010-10-26 20:06:34 +02:00
|
|
|
#define PyEval_ReleaseLock()
|
2008-11-21 15:59:56 +01:00
|
|
|
#endif
|
|
|
|
|
2011-01-26 21:53:45 +01:00
|
|
|
/* Python supplies HAVE_LONG_LONG and some `long long' support when it
|
|
|
|
is available. These defines let us handle the differences more
|
|
|
|
cleanly. */
|
|
|
|
#ifdef HAVE_LONG_LONG
|
|
|
|
|
|
|
|
#define GDB_PY_LL_ARG "L"
|
|
|
|
#define GDB_PY_LLU_ARG "K"
|
|
|
|
typedef PY_LONG_LONG gdb_py_longest;
|
|
|
|
typedef unsigned PY_LONG_LONG gdb_py_ulongest;
|
|
|
|
#define gdb_py_long_from_longest PyLong_FromLongLong
|
|
|
|
#define gdb_py_long_from_ulongest PyLong_FromUnsignedLongLong
|
|
|
|
#define gdb_py_long_as_ulongest PyLong_AsUnsignedLongLong
|
|
|
|
|
|
|
|
#else /* HAVE_LONG_LONG */
|
|
|
|
|
|
|
|
#define GDB_PY_LL_ARG "L"
|
|
|
|
#define GDB_PY_LLU_ARG "K"
|
|
|
|
typedef long gdb_py_longest;
|
|
|
|
typedef unsigned long gdb_py_ulongest;
|
|
|
|
#define gdb_py_long_from_longest PyLong_FromLong
|
|
|
|
#define gdb_py_long_from_ulongest PyLong_FromUnsignedLong
|
|
|
|
#define gdb_py_long_as_ulongest PyLong_AsUnsignedLong
|
|
|
|
|
|
|
|
#endif /* HAVE_LONG_LONG */
|
|
|
|
|
|
|
|
|
2010-03-09 18:12:40 +01:00
|
|
|
/* In order to be able to parse symtab_and_line_to_sal_object function
|
|
|
|
a real symtab_and_line structure is needed. */
|
|
|
|
#include "symtab.h"
|
|
|
|
|
2010-04-29 17:45:57 +02:00
|
|
|
/* Also needed to parse enum var_types. */
|
|
|
|
#include "command.h"
|
Add Python support for GDB events.
2011-02-04 Sami Wagiaalla <swagiaal@redhat.com>
* gdb.python/py-evthreads.c: New file.
* gdb.python/py-evthreads.exp: New file.
* gdb.python/py-events.py: New file.
* gdb.python/py-events.exp: New file.
* gdb.python/py-events.c: New file.
2011-02-04 Sami Wagiaalla <swagiaal@redhat.com>
Oguz Kayral <oguzkayral@gmail.com>
* python/py-inferior.c (python_on_normal_stop): New function.
(python_on_resume): New function.
(python_inferior_exit): New function.
(gdbpy_initialize_inferior): Add normal_stop, target_resumed, and
inferior_exit observers.
* python/py-evtregistry.c: New file.
* python/py-threadevent.c : New file.
* python/py-event.c: New file.
* python/py-evts.c: New file.
* python/py-continueevent.c: New file.
* python/py-bpevent.c: New file.
* python/py-signalevent.c: New file.
* python/py-exetiedevent.c: New file.
* python/py-breakpoint.c (gdbpy_breakpoint_from_bpstats): New function.
Move struct breakpoint_object from here...
* python/python-internal.h: ... to here.
* python/py-event.h: New file.
* python/py-events.h: New file.
* Makefile.in (SUBDIR_PYTHON_OBS): Add py-breakpointstopevent.o,
py-continueevent.o, py-event.o, py-eventregistry.o, py-events.o,
py-exitedevent.o, py-signalstopevent.o, and py-stopevent.o.
(SUBDIR_PYTHON_SRCS): Add py-breakpointstopevent.c,
py-continueevent.c, py-event.c, py-eventregistry.c, py-events.c,
py-exitedevent.c, py-signalstopevent.c, and py-stopevent.c.
Add build rules for all the above.
2011-02-04 22:54:16 +01:00
|
|
|
#include "breakpoint.h"
|
2010-04-29 17:45:57 +02:00
|
|
|
|
2010-11-12 21:49:43 +01:00
|
|
|
#include "exceptions.h"
|
|
|
|
|
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
Tom Tromey <tromey@redhat.com>
Thiago Jung Bauermann <bauerman@br.ibm.com>
* python/python.c (_initialize_python): Call
gdbpy_initialize_symtabs, gdbpy_initialize_symbols and
gdbpy_initialize_blocks.
* python/python-internal.h: Declare struct symbol, block and
symtab_and_line. Declare block_object_type and
symbol_object_type
(gdbpy_lookup_symbol gdbpy_block_for_pc)
(symtab_and_line_to_sal_object, symtab_to_symtab_object)
(symbol_to_symbol_object, block_to_block_object)
(gdbpy_initialize_symtabs,gdbpy_initialize_symbols)
(gdbpy_initialize_blocks ): Declare.
* python/py-frame.c (frapy_block, frapy_function, frapy_find_sal)
(frapy_select): Add methods.
(frapy_read_var): Add symbol branch.
* Makefile.in (SUBDIR_PYTHON_OBS): Add py-symbol, py-symtab,
py-block.
(SUBDIR_PYTHON_SRCS): Likewise.
(py-symbol.o): New rule.
(py-symtab.o): Likewise.
(py-block.o): Likewise.
* python/py-symbol.c: New file.
* python/py-symtab.c: Likewise.
* python/py-block.c: Likewise.
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
* Makefile.in: Add py-block and py-symbol.
* gdb.python/py-symbol.exp: New File.
* gdb.python/py-symtab.exp: New File.
* gdb.python/py-block.exp: New File.
* gdb.python/py-symbol.c: New File.
* gdb.python/py-block.c: New File.
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
* gdb.texinfo (Frames In Python): Add block, find_sal, function
and select method descriptions.
(Python API): Add Blocks In Python, Symbols in Python and Symbol
Tables in Python to menu.
(Blocks In Python): New node.
(Symbols In Python): New node.
(Symbol Tables in Python): New node.
2010-02-24 22:18:28 +01:00
|
|
|
struct block;
|
2008-10-16 05:54:00 +02:00
|
|
|
struct value;
|
* python/python-internal.h (struct language_defn): Declare.
(python_gdbarch, python_language): Likewise.
(ensure_python_env): Add prototype.
(make_cleanup_py_restore_gil): Remove prototype.
* python/python.c: Include "arch-utils.h", "value.h" and "language.h".
(python_gdbarch, python_language): New global variables.
(struct python_env): New data type.
(ensure_python_env, restore_python_env): New functions.
(eval_python_from_control_command): Call ensure_python_env to
install current architecture and language.
(python_command, gdbpy_new_objfile): Likewise.
* python/python-cmd.c: Include "arch-utils.h" and "language.h".
(cmdpy_destroyer, cmdpy_function, cmdpy_completer): Call
ensure_python_env.
* python/python-type.c (clean_up_objfile_types): Likewise.
* python/python-objfile.c: Include "language.h".
(clean_up_objfile): Call ensure_python_env.
* python/python-prettyprint.c (apply_val_pretty_printer): Likewise.
(apply_varobj_pretty_printer): Do not call PyGILState_Ensure.
* varobj.c (varobj_ensure_python_env): New helper function.
(varobj_get_display_hint, update_dynamic_varobj_children,
install_default_visualizer, varobj_set_visualizer, free_variable,
value_get_print_value): Call it.
(value_get_print_value): Add varobj argument instead of pretty
printer argument. Update all callers.
* python/python-utils.c (py_gil_restore, make_cleanup_py_restore_gil):
Remove.
* value.h (internal_function_fn): Add GDBARCH and LANGUAGE argument.
(call_internal_function): Likewise.
* value.c (call_internal_function): Likewise. Pass to handler.
* eval.c (evaluate_subexp_standard): Update call.
* python/python-function.c: Include "language.h".
(fnpy_call): Add GDBARCH and LANGAUAGE arguments and call
make_cleanup_python_env.
* python/python-value.c (builtin_type_pyint, builtin_type_pyfloat,
builtin_type_pylong, builtin_type_pybool, builtin_type_pychar,
valpy_str): Use python_gdbarch and python_language instead of
current_gdbarch and current_language.
* python/python-type.c (typy_lookup_typename): Likewise.
2009-07-02 19:04:23 +02:00
|
|
|
struct language_defn;
|
2010-04-15 21:54:13 +02:00
|
|
|
struct program_space;
|
Add Python support for GDB events.
2011-02-04 Sami Wagiaalla <swagiaal@redhat.com>
* gdb.python/py-evthreads.c: New file.
* gdb.python/py-evthreads.exp: New file.
* gdb.python/py-events.py: New file.
* gdb.python/py-events.exp: New file.
* gdb.python/py-events.c: New file.
2011-02-04 Sami Wagiaalla <swagiaal@redhat.com>
Oguz Kayral <oguzkayral@gmail.com>
* python/py-inferior.c (python_on_normal_stop): New function.
(python_on_resume): New function.
(python_inferior_exit): New function.
(gdbpy_initialize_inferior): Add normal_stop, target_resumed, and
inferior_exit observers.
* python/py-evtregistry.c: New file.
* python/py-threadevent.c : New file.
* python/py-event.c: New file.
* python/py-evts.c: New file.
* python/py-continueevent.c: New file.
* python/py-bpevent.c: New file.
* python/py-signalevent.c: New file.
* python/py-exetiedevent.c: New file.
* python/py-breakpoint.c (gdbpy_breakpoint_from_bpstats): New function.
Move struct breakpoint_object from here...
* python/python-internal.h: ... to here.
* python/py-event.h: New file.
* python/py-events.h: New file.
* Makefile.in (SUBDIR_PYTHON_OBS): Add py-breakpointstopevent.o,
py-continueevent.o, py-event.o, py-eventregistry.o, py-events.o,
py-exitedevent.o, py-signalstopevent.o, and py-stopevent.o.
(SUBDIR_PYTHON_SRCS): Add py-breakpointstopevent.c,
py-continueevent.c, py-event.c, py-eventregistry.c, py-events.c,
py-exitedevent.c, py-signalstopevent.c, and py-stopevent.c.
Add build rules for all the above.
2011-02-04 22:54:16 +01:00
|
|
|
struct bpstats;
|
2008-08-06 21:41:33 +02:00
|
|
|
|
|
|
|
extern PyObject *gdb_module;
|
2008-10-16 05:54:00 +02:00
|
|
|
extern PyTypeObject value_object_type;
|
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
Tom Tromey <tromey@redhat.com>
Thiago Jung Bauermann <bauerman@br.ibm.com>
* python/python.c (_initialize_python): Call
gdbpy_initialize_symtabs, gdbpy_initialize_symbols and
gdbpy_initialize_blocks.
* python/python-internal.h: Declare struct symbol, block and
symtab_and_line. Declare block_object_type and
symbol_object_type
(gdbpy_lookup_symbol gdbpy_block_for_pc)
(symtab_and_line_to_sal_object, symtab_to_symtab_object)
(symbol_to_symbol_object, block_to_block_object)
(gdbpy_initialize_symtabs,gdbpy_initialize_symbols)
(gdbpy_initialize_blocks ): Declare.
* python/py-frame.c (frapy_block, frapy_function, frapy_find_sal)
(frapy_select): Add methods.
(frapy_read_var): Add symbol branch.
* Makefile.in (SUBDIR_PYTHON_OBS): Add py-symbol, py-symtab,
py-block.
(SUBDIR_PYTHON_SRCS): Likewise.
(py-symbol.o): New rule.
(py-symtab.o): Likewise.
(py-block.o): Likewise.
* python/py-symbol.c: New file.
* python/py-symtab.c: Likewise.
* python/py-block.c: Likewise.
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
* Makefile.in: Add py-block and py-symbol.
* gdb.python/py-symbol.exp: New File.
* gdb.python/py-symtab.exp: New File.
* gdb.python/py-block.exp: New File.
* gdb.python/py-symbol.c: New File.
* gdb.python/py-block.c: New File.
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
* gdb.texinfo (Frames In Python): Add block, find_sal, function
and select method descriptions.
(Python API): Add Blocks In Python, Symbols in Python and Symbol
Tables in Python to menu.
(Blocks In Python): New node.
(Symbols In Python): New node.
(Symbol Tables in Python): New node.
2010-02-24 22:18:28 +01:00
|
|
|
extern PyTypeObject block_object_type;
|
|
|
|
extern PyTypeObject symbol_object_type;
|
Add Python support for GDB events.
2011-02-04 Sami Wagiaalla <swagiaal@redhat.com>
* gdb.python/py-evthreads.c: New file.
* gdb.python/py-evthreads.exp: New file.
* gdb.python/py-events.py: New file.
* gdb.python/py-events.exp: New file.
* gdb.python/py-events.c: New file.
2011-02-04 Sami Wagiaalla <swagiaal@redhat.com>
Oguz Kayral <oguzkayral@gmail.com>
* python/py-inferior.c (python_on_normal_stop): New function.
(python_on_resume): New function.
(python_inferior_exit): New function.
(gdbpy_initialize_inferior): Add normal_stop, target_resumed, and
inferior_exit observers.
* python/py-evtregistry.c: New file.
* python/py-threadevent.c : New file.
* python/py-event.c: New file.
* python/py-evts.c: New file.
* python/py-continueevent.c: New file.
* python/py-bpevent.c: New file.
* python/py-signalevent.c: New file.
* python/py-exetiedevent.c: New file.
* python/py-breakpoint.c (gdbpy_breakpoint_from_bpstats): New function.
Move struct breakpoint_object from here...
* python/python-internal.h: ... to here.
* python/py-event.h: New file.
* python/py-events.h: New file.
* Makefile.in (SUBDIR_PYTHON_OBS): Add py-breakpointstopevent.o,
py-continueevent.o, py-event.o, py-eventregistry.o, py-events.o,
py-exitedevent.o, py-signalstopevent.o, and py-stopevent.o.
(SUBDIR_PYTHON_SRCS): Add py-breakpointstopevent.c,
py-continueevent.c, py-event.c, py-eventregistry.c, py-events.c,
py-exitedevent.c, py-signalstopevent.c, and py-stopevent.c.
Add build rules for all the above.
2011-02-04 22:54:16 +01:00
|
|
|
extern PyTypeObject event_object_type;
|
|
|
|
extern PyTypeObject events_object_type;
|
|
|
|
extern PyTypeObject stop_event_object_type;
|
|
|
|
|
|
|
|
/* Defined in py-breakpoint.c */
|
|
|
|
typedef struct breakpoint_object breakpoint_object;
|
2008-10-16 05:54:00 +02:00
|
|
|
|
2010-06-28 23:16:04 +02:00
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
PyObject_HEAD
|
|
|
|
|
|
|
|
/* The thread we represent. */
|
|
|
|
struct thread_info *thread;
|
|
|
|
|
|
|
|
/* The Inferior object to which this thread belongs. */
|
|
|
|
PyObject *inf_obj;
|
|
|
|
} thread_object;
|
|
|
|
|
2010-04-23 18:20:13 +02:00
|
|
|
extern struct cmd_list_element *set_python_list;
|
|
|
|
extern struct cmd_list_element *show_python_list;
|
|
|
|
|
2009-02-04 22:55:40 +01:00
|
|
|
PyObject *gdbpy_history (PyObject *self, PyObject *args);
|
2010-04-09 11:41:43 +02:00
|
|
|
PyObject *gdbpy_breakpoints (PyObject *, PyObject *);
|
2009-03-30 21:54:33 +02:00
|
|
|
PyObject *gdbpy_frame_stop_reason_string (PyObject *, PyObject *);
|
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
Tom Tromey <tromey@redhat.com>
Thiago Jung Bauermann <bauerman@br.ibm.com>
* python/python.c (_initialize_python): Call
gdbpy_initialize_symtabs, gdbpy_initialize_symbols and
gdbpy_initialize_blocks.
* python/python-internal.h: Declare struct symbol, block and
symtab_and_line. Declare block_object_type and
symbol_object_type
(gdbpy_lookup_symbol gdbpy_block_for_pc)
(symtab_and_line_to_sal_object, symtab_to_symtab_object)
(symbol_to_symbol_object, block_to_block_object)
(gdbpy_initialize_symtabs,gdbpy_initialize_symbols)
(gdbpy_initialize_blocks ): Declare.
* python/py-frame.c (frapy_block, frapy_function, frapy_find_sal)
(frapy_select): Add methods.
(frapy_read_var): Add symbol branch.
* Makefile.in (SUBDIR_PYTHON_OBS): Add py-symbol, py-symtab,
py-block.
(SUBDIR_PYTHON_SRCS): Likewise.
(py-symbol.o): New rule.
(py-symtab.o): Likewise.
(py-block.o): Likewise.
* python/py-symbol.c: New file.
* python/py-symtab.c: Likewise.
* python/py-block.c: Likewise.
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
* Makefile.in: Add py-block and py-symbol.
* gdb.python/py-symbol.exp: New File.
* gdb.python/py-symtab.exp: New File.
* gdb.python/py-block.exp: New File.
* gdb.python/py-symbol.c: New File.
* gdb.python/py-block.c: New File.
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
* gdb.texinfo (Frames In Python): Add block, find_sal, function
and select method descriptions.
(Python API): Add Blocks In Python, Symbols in Python and Symbol
Tables in Python to menu.
(Blocks In Python): New node.
(Symbols In Python): New node.
(Symbol Tables in Python): New node.
2010-02-24 22:18:28 +01:00
|
|
|
PyObject *gdbpy_lookup_symbol (PyObject *self, PyObject *args, PyObject *kw);
|
2011-02-22 23:48:12 +01:00
|
|
|
PyObject *gdbpy_lookup_global_symbol (PyObject *self, PyObject *args,
|
|
|
|
PyObject *kw);
|
2011-01-06 22:10:53 +01:00
|
|
|
PyObject *gdbpy_newest_frame (PyObject *self, PyObject *args);
|
2009-03-30 21:54:33 +02:00
|
|
|
PyObject *gdbpy_selected_frame (PyObject *self, PyObject *args);
|
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
Tom Tromey <tromey@redhat.com>
Thiago Jung Bauermann <bauerman@br.ibm.com>
* python/python.c (_initialize_python): Call
gdbpy_initialize_symtabs, gdbpy_initialize_symbols and
gdbpy_initialize_blocks.
* python/python-internal.h: Declare struct symbol, block and
symtab_and_line. Declare block_object_type and
symbol_object_type
(gdbpy_lookup_symbol gdbpy_block_for_pc)
(symtab_and_line_to_sal_object, symtab_to_symtab_object)
(symbol_to_symbol_object, block_to_block_object)
(gdbpy_initialize_symtabs,gdbpy_initialize_symbols)
(gdbpy_initialize_blocks ): Declare.
* python/py-frame.c (frapy_block, frapy_function, frapy_find_sal)
(frapy_select): Add methods.
(frapy_read_var): Add symbol branch.
* Makefile.in (SUBDIR_PYTHON_OBS): Add py-symbol, py-symtab,
py-block.
(SUBDIR_PYTHON_SRCS): Likewise.
(py-symbol.o): New rule.
(py-symtab.o): Likewise.
(py-block.o): Likewise.
* python/py-symbol.c: New file.
* python/py-symtab.c: Likewise.
* python/py-block.c: Likewise.
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
* Makefile.in: Add py-block and py-symbol.
* gdb.python/py-symbol.exp: New File.
* gdb.python/py-symtab.exp: New File.
* gdb.python/py-block.exp: New File.
* gdb.python/py-symbol.c: New File.
* gdb.python/py-block.c: New File.
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
* gdb.texinfo (Frames In Python): Add block, find_sal, function
and select method descriptions.
(Python API): Add Blocks In Python, Symbols in Python and Symbol
Tables in Python to menu.
(Blocks In Python): New node.
(Symbols In Python): New node.
(Symbol Tables in Python): New node.
2010-02-24 22:18:28 +01:00
|
|
|
PyObject *gdbpy_block_for_pc (PyObject *self, PyObject *args);
|
2009-05-28 02:47:20 +02:00
|
|
|
PyObject *gdbpy_lookup_type (PyObject *self, PyObject *args, PyObject *kw);
|
2010-01-14 09:03:37 +01:00
|
|
|
PyObject *gdbpy_create_lazy_string_object (CORE_ADDR address, long length,
|
2011-01-06 01:57:05 +01:00
|
|
|
const char *encoding,
|
|
|
|
struct type *type);
|
2010-06-28 23:16:04 +02:00
|
|
|
PyObject *gdbpy_inferiors (PyObject *unused, PyObject *unused2);
|
|
|
|
PyObject *gdbpy_selected_thread (PyObject *self, PyObject *args);
|
2010-05-25 17:27:17 +02:00
|
|
|
PyObject *gdbpy_string_to_argv (PyObject *self, PyObject *args);
|
2010-04-29 17:45:57 +02:00
|
|
|
PyObject *gdbpy_parameter (PyObject *self, PyObject *args);
|
|
|
|
PyObject *gdbpy_parameter_value (enum var_types type, void *var);
|
|
|
|
char *gdbpy_parse_command_name (char *text,
|
|
|
|
struct cmd_list_element ***base_list,
|
|
|
|
struct cmd_list_element **start_list);
|
2008-10-16 05:54:00 +02:00
|
|
|
|
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
Tom Tromey <tromey@redhat.com>
Thiago Jung Bauermann <bauerman@br.ibm.com>
* python/python.c (_initialize_python): Call
gdbpy_initialize_symtabs, gdbpy_initialize_symbols and
gdbpy_initialize_blocks.
* python/python-internal.h: Declare struct symbol, block and
symtab_and_line. Declare block_object_type and
symbol_object_type
(gdbpy_lookup_symbol gdbpy_block_for_pc)
(symtab_and_line_to_sal_object, symtab_to_symtab_object)
(symbol_to_symbol_object, block_to_block_object)
(gdbpy_initialize_symtabs,gdbpy_initialize_symbols)
(gdbpy_initialize_blocks ): Declare.
* python/py-frame.c (frapy_block, frapy_function, frapy_find_sal)
(frapy_select): Add methods.
(frapy_read_var): Add symbol branch.
* Makefile.in (SUBDIR_PYTHON_OBS): Add py-symbol, py-symtab,
py-block.
(SUBDIR_PYTHON_SRCS): Likewise.
(py-symbol.o): New rule.
(py-symtab.o): Likewise.
(py-block.o): Likewise.
* python/py-symbol.c: New file.
* python/py-symtab.c: Likewise.
* python/py-block.c: Likewise.
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
* Makefile.in: Add py-block and py-symbol.
* gdb.python/py-symbol.exp: New File.
* gdb.python/py-symtab.exp: New File.
* gdb.python/py-block.exp: New File.
* gdb.python/py-symbol.c: New File.
* gdb.python/py-block.c: New File.
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
* gdb.texinfo (Frames In Python): Add block, find_sal, function
and select method descriptions.
(Python API): Add Blocks In Python, Symbols in Python and Symbol
Tables in Python to menu.
(Blocks In Python): New node.
(Symbols In Python): New node.
(Symbol Tables in Python): New node.
2010-02-24 22:18:28 +01:00
|
|
|
PyObject *symtab_and_line_to_sal_object (struct symtab_and_line sal);
|
|
|
|
PyObject *symtab_to_symtab_object (struct symtab *symtab);
|
|
|
|
PyObject *symbol_to_symbol_object (struct symbol *sym);
|
|
|
|
PyObject *block_to_block_object (struct block *block, struct objfile *objfile);
|
2008-10-16 05:54:00 +02:00
|
|
|
PyObject *value_to_value_object (struct value *v);
|
2009-05-28 02:47:20 +02:00
|
|
|
PyObject *type_to_type_object (struct type *);
|
2010-06-28 23:16:04 +02:00
|
|
|
PyObject *frame_info_to_frame_object (struct frame_info *frame);
|
2009-05-28 02:40:24 +02:00
|
|
|
|
2010-04-15 21:54:13 +02:00
|
|
|
PyObject *pspace_to_pspace_object (struct program_space *);
|
|
|
|
PyObject *pspy_get_printers (PyObject *, void *);
|
|
|
|
|
|
|
|
PyObject *objfile_to_objfile_object (struct objfile *);
|
2009-05-28 02:40:24 +02:00
|
|
|
PyObject *objfpy_get_printers (PyObject *, void *);
|
2008-10-16 05:54:00 +02:00
|
|
|
|
2010-06-28 23:16:04 +02:00
|
|
|
thread_object *create_thread_object (struct thread_info *tp);
|
|
|
|
thread_object *find_thread_object (ptid_t ptid);
|
|
|
|
PyObject *find_inferior_object (int pid);
|
Add Python support for GDB events.
2011-02-04 Sami Wagiaalla <swagiaal@redhat.com>
* gdb.python/py-evthreads.c: New file.
* gdb.python/py-evthreads.exp: New file.
* gdb.python/py-events.py: New file.
* gdb.python/py-events.exp: New file.
* gdb.python/py-events.c: New file.
2011-02-04 Sami Wagiaalla <swagiaal@redhat.com>
Oguz Kayral <oguzkayral@gmail.com>
* python/py-inferior.c (python_on_normal_stop): New function.
(python_on_resume): New function.
(python_inferior_exit): New function.
(gdbpy_initialize_inferior): Add normal_stop, target_resumed, and
inferior_exit observers.
* python/py-evtregistry.c: New file.
* python/py-threadevent.c : New file.
* python/py-event.c: New file.
* python/py-evts.c: New file.
* python/py-continueevent.c: New file.
* python/py-bpevent.c: New file.
* python/py-signalevent.c: New file.
* python/py-exetiedevent.c: New file.
* python/py-breakpoint.c (gdbpy_breakpoint_from_bpstats): New function.
Move struct breakpoint_object from here...
* python/python-internal.h: ... to here.
* python/py-event.h: New file.
* python/py-events.h: New file.
* Makefile.in (SUBDIR_PYTHON_OBS): Add py-breakpointstopevent.o,
py-continueevent.o, py-event.o, py-eventregistry.o, py-events.o,
py-exitedevent.o, py-signalstopevent.o, and py-stopevent.o.
(SUBDIR_PYTHON_SRCS): Add py-breakpointstopevent.c,
py-continueevent.c, py-event.c, py-eventregistry.c, py-events.c,
py-exitedevent.c, py-signalstopevent.c, and py-stopevent.c.
Add build rules for all the above.
2011-02-04 22:54:16 +01:00
|
|
|
PyObject *inferior_to_inferior_object (struct inferior *inferior);
|
2010-06-28 23:16:04 +02:00
|
|
|
|
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
Tom Tromey <tromey@redhat.com>
Thiago Jung Bauermann <bauerman@br.ibm.com>
* python/python.c (_initialize_python): Call
gdbpy_initialize_symtabs, gdbpy_initialize_symbols and
gdbpy_initialize_blocks.
* python/python-internal.h: Declare struct symbol, block and
symtab_and_line. Declare block_object_type and
symbol_object_type
(gdbpy_lookup_symbol gdbpy_block_for_pc)
(symtab_and_line_to_sal_object, symtab_to_symtab_object)
(symbol_to_symbol_object, block_to_block_object)
(gdbpy_initialize_symtabs,gdbpy_initialize_symbols)
(gdbpy_initialize_blocks ): Declare.
* python/py-frame.c (frapy_block, frapy_function, frapy_find_sal)
(frapy_select): Add methods.
(frapy_read_var): Add symbol branch.
* Makefile.in (SUBDIR_PYTHON_OBS): Add py-symbol, py-symtab,
py-block.
(SUBDIR_PYTHON_SRCS): Likewise.
(py-symbol.o): New rule.
(py-symtab.o): Likewise.
(py-block.o): Likewise.
* python/py-symbol.c: New file.
* python/py-symtab.c: Likewise.
* python/py-block.c: Likewise.
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
* Makefile.in: Add py-block and py-symbol.
* gdb.python/py-symbol.exp: New File.
* gdb.python/py-symtab.exp: New File.
* gdb.python/py-block.exp: New File.
* gdb.python/py-symbol.c: New File.
* gdb.python/py-block.c: New File.
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
* gdb.texinfo (Frames In Python): Add block, find_sal, function
and select method descriptions.
(Python API): Add Blocks In Python, Symbols in Python and Symbol
Tables in Python to menu.
(Blocks In Python): New node.
(Symbols In Python): New node.
(Symbol Tables in Python): New node.
2010-02-24 22:18:28 +01:00
|
|
|
struct block *block_object_to_block (PyObject *obj);
|
|
|
|
struct symbol *symbol_object_to_symbol (PyObject *obj);
|
2009-05-28 03:05:14 +02:00
|
|
|
struct value *value_object_to_value (PyObject *self);
|
2008-10-16 05:54:00 +02:00
|
|
|
struct value *convert_value_from_python (PyObject *obj);
|
2009-05-28 02:47:20 +02:00
|
|
|
struct type *type_object_to_type (PyObject *obj);
|
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
Tom Tromey <tromey@redhat.com>
Thiago Jung Bauermann <bauerman@br.ibm.com>
* python/python.c (_initialize_python): Call
gdbpy_initialize_symtabs, gdbpy_initialize_symbols and
gdbpy_initialize_blocks.
* python/python-internal.h: Declare struct symbol, block and
symtab_and_line. Declare block_object_type and
symbol_object_type
(gdbpy_lookup_symbol gdbpy_block_for_pc)
(symtab_and_line_to_sal_object, symtab_to_symtab_object)
(symbol_to_symbol_object, block_to_block_object)
(gdbpy_initialize_symtabs,gdbpy_initialize_symbols)
(gdbpy_initialize_blocks ): Declare.
* python/py-frame.c (frapy_block, frapy_function, frapy_find_sal)
(frapy_select): Add methods.
(frapy_read_var): Add symbol branch.
* Makefile.in (SUBDIR_PYTHON_OBS): Add py-symbol, py-symtab,
py-block.
(SUBDIR_PYTHON_SRCS): Likewise.
(py-symbol.o): New rule.
(py-symtab.o): Likewise.
(py-block.o): Likewise.
* python/py-symbol.c: New file.
* python/py-symtab.c: Likewise.
* python/py-block.c: Likewise.
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
* Makefile.in: Add py-block and py-symbol.
* gdb.python/py-symbol.exp: New File.
* gdb.python/py-symtab.exp: New File.
* gdb.python/py-block.exp: New File.
* gdb.python/py-symbol.c: New File.
* gdb.python/py-block.c: New File.
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
* gdb.texinfo (Frames In Python): Add block, find_sal, function
and select method descriptions.
(Python API): Add Blocks In Python, Symbols in Python and Symbol
Tables in Python to menu.
(Blocks In Python): New node.
(Symbols In Python): New node.
(Symbol Tables in Python): New node.
2010-02-24 22:18:28 +01:00
|
|
|
struct symtab *symtab_object_to_symtab (PyObject *obj);
|
|
|
|
struct symtab_and_line *sal_object_to_symtab_and_line (PyObject *obj);
|
2008-10-16 05:54:00 +02:00
|
|
|
|
2010-04-23 18:20:13 +02:00
|
|
|
void gdbpy_initialize_auto_load (void);
|
2008-10-16 05:54:00 +02:00
|
|
|
void gdbpy_initialize_values (void);
|
2009-03-30 21:54:33 +02:00
|
|
|
void gdbpy_initialize_frames (void);
|
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
Tom Tromey <tromey@redhat.com>
Thiago Jung Bauermann <bauerman@br.ibm.com>
* python/python.c (_initialize_python): Call
gdbpy_initialize_symtabs, gdbpy_initialize_symbols and
gdbpy_initialize_blocks.
* python/python-internal.h: Declare struct symbol, block and
symtab_and_line. Declare block_object_type and
symbol_object_type
(gdbpy_lookup_symbol gdbpy_block_for_pc)
(symtab_and_line_to_sal_object, symtab_to_symtab_object)
(symbol_to_symbol_object, block_to_block_object)
(gdbpy_initialize_symtabs,gdbpy_initialize_symbols)
(gdbpy_initialize_blocks ): Declare.
* python/py-frame.c (frapy_block, frapy_function, frapy_find_sal)
(frapy_select): Add methods.
(frapy_read_var): Add symbol branch.
* Makefile.in (SUBDIR_PYTHON_OBS): Add py-symbol, py-symtab,
py-block.
(SUBDIR_PYTHON_SRCS): Likewise.
(py-symbol.o): New rule.
(py-symtab.o): Likewise.
(py-block.o): Likewise.
* python/py-symbol.c: New file.
* python/py-symtab.c: Likewise.
* python/py-block.c: Likewise.
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
* Makefile.in: Add py-block and py-symbol.
* gdb.python/py-symbol.exp: New File.
* gdb.python/py-symtab.exp: New File.
* gdb.python/py-block.exp: New File.
* gdb.python/py-symbol.c: New File.
* gdb.python/py-block.c: New File.
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
* gdb.texinfo (Frames In Python): Add block, find_sal, function
and select method descriptions.
(Python API): Add Blocks In Python, Symbols in Python and Symbol
Tables in Python to menu.
(Blocks In Python): New node.
(Symbols In Python): New node.
(Symbol Tables in Python): New node.
2010-02-24 22:18:28 +01:00
|
|
|
void gdbpy_initialize_symtabs (void);
|
2009-02-06 22:33:59 +01:00
|
|
|
void gdbpy_initialize_commands (void);
|
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
Tom Tromey <tromey@redhat.com>
Thiago Jung Bauermann <bauerman@br.ibm.com>
* python/python.c (_initialize_python): Call
gdbpy_initialize_symtabs, gdbpy_initialize_symbols and
gdbpy_initialize_blocks.
* python/python-internal.h: Declare struct symbol, block and
symtab_and_line. Declare block_object_type and
symbol_object_type
(gdbpy_lookup_symbol gdbpy_block_for_pc)
(symtab_and_line_to_sal_object, symtab_to_symtab_object)
(symbol_to_symbol_object, block_to_block_object)
(gdbpy_initialize_symtabs,gdbpy_initialize_symbols)
(gdbpy_initialize_blocks ): Declare.
* python/py-frame.c (frapy_block, frapy_function, frapy_find_sal)
(frapy_select): Add methods.
(frapy_read_var): Add symbol branch.
* Makefile.in (SUBDIR_PYTHON_OBS): Add py-symbol, py-symtab,
py-block.
(SUBDIR_PYTHON_SRCS): Likewise.
(py-symbol.o): New rule.
(py-symtab.o): Likewise.
(py-block.o): Likewise.
* python/py-symbol.c: New file.
* python/py-symtab.c: Likewise.
* python/py-block.c: Likewise.
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
* Makefile.in: Add py-block and py-symbol.
* gdb.python/py-symbol.exp: New File.
* gdb.python/py-symtab.exp: New File.
* gdb.python/py-block.exp: New File.
* gdb.python/py-symbol.c: New File.
* gdb.python/py-block.c: New File.
2010-02-24 Phil Muldoon <pmuldoon@redhat.com>
* gdb.texinfo (Frames In Python): Add block, find_sal, function
and select method descriptions.
(Python API): Add Blocks In Python, Symbols in Python and Symbol
Tables in Python to menu.
(Blocks In Python): New node.
(Symbols In Python): New node.
(Symbol Tables in Python): New node.
2010-02-24 22:18:28 +01:00
|
|
|
void gdbpy_initialize_symbols (void);
|
|
|
|
void gdbpy_initialize_symtabs (void);
|
|
|
|
void gdbpy_initialize_blocks (void);
|
2009-05-28 02:47:20 +02:00
|
|
|
void gdbpy_initialize_types (void);
|
gdb/
2009-03-05 Tom Tromey <tromey@redhat.com>
Add support for convenience functions in Python.
* Makefile.in (SUBDIR_PYTHON_OBS): Add python-function.o.
(SUBDIR_PYTHON_SRCS): Add python-function.c.
(python-function.o): New target.
* eval.c: Include "python/python.h" and <ctype.h>.
(evaluate_subexp_standard): Handle values of type
TYPE_CODE_INTERNAL_FUNCTION.
* gdbtypes.h (type_code): Add TYPE_CODE_INTERNAL_FUNCTION.
* parse.c (write_exp_string): Remove duplicate word in comment.
* python/python-function.c: New file.
* python/python-internal.h (gdbpy_initialize_functions): Add
prototype.
* python/python.c (_initialize_python): Call
gdbpy_initialize_functions.
* valprint.c (value_check_printable): Handle values of type
TYPE_CODE_INTERNAL_FUNCTION.
* value.c: Include "cli/cli-decode.h".
(internal_function): New struct.
(functionlist, internal_fn_type): New static variables.
(lookup_only_internalvar,
lookup_internalvar): Add const qualifier to name argument.
(create_internalvar): Likewise. Initialize new field.
(set_internal_var): Fix typo in comment. Don't allow assignment
to canonical variable.
(value_create_internal_function, value_internal_function_name,
call_internal_function, function_command, function_destroyer,
add_internal_function): New functions.
(_initialize_values): Create `function' placeholder command.
Initialize internal_fn_type.
* value.h (lookup_only_internalvar, create_internalvar,
lookup_internalvar): Add const qualifier to name argument.
(internal_function_fn, add_internal_function, call_internal_function,
value_internal_function_name): Add prototypes.
(struct internalvar) <canonical>: New field.
gdb/doc/
2008-03-05 Tom Tromey <tromey@redhat.com>
* gdb.texinfo (Convenience Vars): Document convenience functions.
(Functions In Python): New node.
(Python API): Update.
gdb/testsuite/
2009-03-05 Thiago Jung Bauermann <bauerman@br.ibm.com>
* gdb.python/python-function.exp: New file.
2009-03-21 04:03:56 +01:00
|
|
|
void gdbpy_initialize_functions (void);
|
2010-04-15 21:54:13 +02:00
|
|
|
void gdbpy_initialize_pspace (void);
|
2009-05-28 02:40:24 +02:00
|
|
|
void gdbpy_initialize_objfile (void);
|
2010-04-09 11:41:43 +02:00
|
|
|
void gdbpy_initialize_breakpoints (void);
|
2010-01-14 09:03:37 +01:00
|
|
|
void gdbpy_initialize_lazy_string (void);
|
2010-04-29 17:45:57 +02:00
|
|
|
void gdbpy_initialize_parameters (void);
|
2010-06-28 23:16:04 +02:00
|
|
|
void gdbpy_initialize_thread (void);
|
|
|
|
void gdbpy_initialize_inferior (void);
|
Add Python support for GDB events.
2011-02-04 Sami Wagiaalla <swagiaal@redhat.com>
* gdb.python/py-evthreads.c: New file.
* gdb.python/py-evthreads.exp: New file.
* gdb.python/py-events.py: New file.
* gdb.python/py-events.exp: New file.
* gdb.python/py-events.c: New file.
2011-02-04 Sami Wagiaalla <swagiaal@redhat.com>
Oguz Kayral <oguzkayral@gmail.com>
* python/py-inferior.c (python_on_normal_stop): New function.
(python_on_resume): New function.
(python_inferior_exit): New function.
(gdbpy_initialize_inferior): Add normal_stop, target_resumed, and
inferior_exit observers.
* python/py-evtregistry.c: New file.
* python/py-threadevent.c : New file.
* python/py-event.c: New file.
* python/py-evts.c: New file.
* python/py-continueevent.c: New file.
* python/py-bpevent.c: New file.
* python/py-signalevent.c: New file.
* python/py-exetiedevent.c: New file.
* python/py-breakpoint.c (gdbpy_breakpoint_from_bpstats): New function.
Move struct breakpoint_object from here...
* python/python-internal.h: ... to here.
* python/py-event.h: New file.
* python/py-events.h: New file.
* Makefile.in (SUBDIR_PYTHON_OBS): Add py-breakpointstopevent.o,
py-continueevent.o, py-event.o, py-eventregistry.o, py-events.o,
py-exitedevent.o, py-signalstopevent.o, and py-stopevent.o.
(SUBDIR_PYTHON_SRCS): Add py-breakpointstopevent.c,
py-continueevent.c, py-event.c, py-eventregistry.c, py-events.c,
py-exitedevent.c, py-signalstopevent.c, and py-stopevent.c.
Add build rules for all the above.
2011-02-04 22:54:16 +01:00
|
|
|
void gdbpy_initialize_eventregistry (void);
|
|
|
|
void gdbpy_initialize_event (void);
|
|
|
|
void gdbpy_initialize_py_events (void);
|
|
|
|
void gdbpy_initialize_stop_event (void);
|
|
|
|
void gdbpy_initialize_signal_event (void);
|
|
|
|
void gdbpy_initialize_breakpoint_event (void);
|
|
|
|
void gdbpy_initialize_continue_event (void);
|
|
|
|
void gdbpy_initialize_exited_event (void);
|
|
|
|
void gdbpy_initialize_thread_event (void);
|
2008-08-06 21:41:33 +02:00
|
|
|
|
|
|
|
struct cleanup *make_cleanup_py_decref (PyObject *py);
|
* python/python-internal.h (struct language_defn): Declare.
(python_gdbarch, python_language): Likewise.
(ensure_python_env): Add prototype.
(make_cleanup_py_restore_gil): Remove prototype.
* python/python.c: Include "arch-utils.h", "value.h" and "language.h".
(python_gdbarch, python_language): New global variables.
(struct python_env): New data type.
(ensure_python_env, restore_python_env): New functions.
(eval_python_from_control_command): Call ensure_python_env to
install current architecture and language.
(python_command, gdbpy_new_objfile): Likewise.
* python/python-cmd.c: Include "arch-utils.h" and "language.h".
(cmdpy_destroyer, cmdpy_function, cmdpy_completer): Call
ensure_python_env.
* python/python-type.c (clean_up_objfile_types): Likewise.
* python/python-objfile.c: Include "language.h".
(clean_up_objfile): Call ensure_python_env.
* python/python-prettyprint.c (apply_val_pretty_printer): Likewise.
(apply_varobj_pretty_printer): Do not call PyGILState_Ensure.
* varobj.c (varobj_ensure_python_env): New helper function.
(varobj_get_display_hint, update_dynamic_varobj_children,
install_default_visualizer, varobj_set_visualizer, free_variable,
value_get_print_value): Call it.
(value_get_print_value): Add varobj argument instead of pretty
printer argument. Update all callers.
* python/python-utils.c (py_gil_restore, make_cleanup_py_restore_gil):
Remove.
* value.h (internal_function_fn): Add GDBARCH and LANGUAGE argument.
(call_internal_function): Likewise.
* value.c (call_internal_function): Likewise. Pass to handler.
* eval.c (evaluate_subexp_standard): Update call.
* python/python-function.c: Include "language.h".
(fnpy_call): Add GDBARCH and LANGAUAGE arguments and call
make_cleanup_python_env.
* python/python-value.c (builtin_type_pyint, builtin_type_pyfloat,
builtin_type_pylong, builtin_type_pybool, builtin_type_pychar,
valpy_str): Use python_gdbarch and python_language instead of
current_gdbarch and current_language.
* python/python-type.c (typy_lookup_typename): Likewise.
2009-07-02 19:04:23 +02:00
|
|
|
|
|
|
|
struct cleanup *ensure_python_env (struct gdbarch *gdbarch,
|
|
|
|
const struct language_defn *language);
|
|
|
|
|
|
|
|
extern struct gdbarch *python_gdbarch;
|
|
|
|
extern const struct language_defn *python_language;
|
2008-08-06 21:41:33 +02:00
|
|
|
|
|
|
|
/* Use this after a TRY_EXCEPT to throw the appropriate Python
|
|
|
|
exception. */
|
|
|
|
#define GDB_PY_HANDLE_EXCEPTION(Exception) \
|
|
|
|
do { \
|
|
|
|
if (Exception.reason < 0) \
|
2010-11-12 21:49:43 +01:00
|
|
|
return gdbpy_convert_exception (Exception); \
|
2008-08-06 21:41:33 +02:00
|
|
|
} while (0)
|
|
|
|
|
2010-04-09 11:41:43 +02:00
|
|
|
/* Use this after a TRY_EXCEPT to throw the appropriate Python
|
|
|
|
exception. This macro is for use inside setter functions. */
|
|
|
|
#define GDB_PY_SET_HANDLE_EXCEPTION(Exception) \
|
|
|
|
do { \
|
|
|
|
if (Exception.reason < 0) \
|
|
|
|
{ \
|
2010-11-12 21:49:43 +01:00
|
|
|
gdbpy_convert_exception (Exception); \
|
2010-04-09 11:41:43 +02:00
|
|
|
return -1; \
|
|
|
|
} \
|
|
|
|
} while (0)
|
2008-08-06 21:41:33 +02:00
|
|
|
|
|
|
|
void gdbpy_print_stack (void);
|
|
|
|
|
2010-04-23 18:20:13 +02:00
|
|
|
void source_python_script_for_objfile (struct objfile *objfile,
|
|
|
|
FILE *stream, const char *file);
|
|
|
|
|
2008-08-06 21:41:33 +02:00
|
|
|
PyObject *python_string_to_unicode (PyObject *obj);
|
|
|
|
char *unicode_to_target_string (PyObject *unicode_str);
|
|
|
|
char *python_string_to_target_string (PyObject *obj);
|
2009-07-10 12:35:17 +02:00
|
|
|
PyObject *python_string_to_target_python_string (PyObject *obj);
|
2009-02-04 22:55:40 +01:00
|
|
|
char *python_string_to_host_string (PyObject *obj);
|
2009-02-05 22:16:09 +01:00
|
|
|
PyObject *target_string_to_unicode (const gdb_byte *str, int length);
|
2009-02-04 22:55:40 +01:00
|
|
|
int gdbpy_is_string (PyObject *obj);
|
2010-05-25 17:27:17 +02:00
|
|
|
char *gdbpy_obj_to_string (PyObject *obj);
|
|
|
|
char *gdbpy_exception_to_string (PyObject *ptype, PyObject *pvalue);
|
|
|
|
|
2010-01-14 09:03:37 +01:00
|
|
|
int gdbpy_is_lazy_string (PyObject *result);
|
2010-10-15 20:54:13 +02:00
|
|
|
void gdbpy_extract_lazy_string (PyObject *string, CORE_ADDR *addr,
|
|
|
|
struct type **str_type,
|
|
|
|
long *length, char **encoding);
|
2008-08-06 21:41:33 +02:00
|
|
|
|
2010-06-28 23:16:04 +02:00
|
|
|
int gdbpy_is_value_object (PyObject *obj);
|
|
|
|
|
2009-05-28 03:09:20 +02:00
|
|
|
/* Note that these are declared here, and not in python.h with the
|
|
|
|
other pretty-printer functions, because they refer to PyObject. */
|
2009-07-10 12:35:17 +02:00
|
|
|
PyObject *apply_varobj_pretty_printer (PyObject *print_obj,
|
2010-11-12 21:49:43 +01:00
|
|
|
struct value **replacement,
|
|
|
|
struct ui_file *stream);
|
2009-05-28 03:09:20 +02:00
|
|
|
PyObject *gdbpy_get_varobj_pretty_printer (struct value *value);
|
|
|
|
char *gdbpy_get_display_hint (PyObject *printer);
|
|
|
|
PyObject *gdbpy_default_visualizer (PyObject *self, PyObject *args);
|
|
|
|
|
2009-02-06 22:33:59 +01:00
|
|
|
extern PyObject *gdbpy_doc_cst;
|
2009-05-28 03:05:14 +02:00
|
|
|
extern PyObject *gdbpy_children_cst;
|
|
|
|
extern PyObject *gdbpy_to_string_cst;
|
|
|
|
extern PyObject *gdbpy_display_hint_cst;
|
2010-06-04 20:18:28 +02:00
|
|
|
extern PyObject *gdbpy_enabled_cst;
|
2011-02-28 20:38:34 +01:00
|
|
|
extern PyObject *gdbpy_value_cst;
|
2009-02-06 22:33:59 +01:00
|
|
|
|
2010-11-12 21:49:43 +01:00
|
|
|
/* Exception types. */
|
|
|
|
extern PyObject *gdbpy_gdb_error;
|
|
|
|
extern PyObject *gdbpy_gdb_memory_error;
|
2010-05-25 17:27:17 +02:00
|
|
|
extern PyObject *gdbpy_gdberror_exc;
|
|
|
|
|
2010-11-12 21:49:43 +01:00
|
|
|
extern PyObject *gdbpy_convert_exception (struct gdb_exception);
|
|
|
|
|
2010-06-28 23:16:04 +02:00
|
|
|
int get_addr_from_python (PyObject *obj, CORE_ADDR *addr);
|
|
|
|
|
2011-01-26 21:53:45 +01:00
|
|
|
PyObject *gdb_py_object_from_longest (LONGEST l);
|
|
|
|
PyObject *gdb_py_object_from_ulongest (ULONGEST l);
|
|
|
|
int gdb_py_int_as_long (PyObject *, long *);
|
|
|
|
|
2008-08-06 21:41:33 +02:00
|
|
|
#endif /* GDB_PYTHON_INTERNAL_H */
|