2008-08-06 21:41:33 +02:00
|
|
|
|
/* Gdb/Python header for private use by Python module.
|
|
|
|
|
|
2014-01-01 04:54:24 +01:00
|
|
|
|
Copyright (C) 2008-2014 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
|
|
|
|
|
|
Extension Language API
* configure.ac (libpython checking): Remove all but python.o from
CONFIG_OBS. Remove all but python.c from CONFIG_SRCS.
* configure: Regenerate.
* Makefile.in (SFILES): Add extension.c.
(HFILES_NO_SRCDIR): Add extension.h, extension-priv.h
(COMMON_OBS): Add extension.o.
* extension.h: New file.
* extension-priv.h: New file.
* extension.c: New file.
* python/python-internal.h: #include "extension.h".
(gdbpy_auto_load_enabled): Declare.
(gdbpy_apply_val_pretty_printer): Declare.
(gdbpy_apply_frame_filter): Declare.
(gdbpy_preserve_values): Declare.
(gdbpy_breakpoint_cond_says_stop): Declare.
(gdbpy_breakpoint_has_cond): Declare.
(void source_python_script_for_objfile): Delete.
* python/python.c: #include "extension-priv.h".
Delete inclusion of "observer.h".
(extension_language_python): Moved here and renamed from
script_language_python in py-auto-load.c.
Redefined to be of type extension_language_defn.
(python_extension_script_ops): New global.
(python_extension_ops): New global.
(struct python_env): New member previous_active.
(restore_python_env): Call restore_active_ext_lang.
(ensure_python_env): Call set_active_ext_lang.
(gdbpy_clear_quit_flag): Renamed from clear_quit_flag, made static.
New arg extlang.
(gdbpy_set_quit_flag): Renamed from set_quit_flag, made static.
New arg extlang.
(gdbpy_check_quit_flag): Renamed from check_quit_flag, made static.
New arg extlang.
(gdbpy_eval_from_control_command): Renamed from
eval_python_from_control_command, made static. New arg extlang.
(gdbpy_source_script) Renamed from source_python_script, made static.
New arg extlang.
(gdbpy_before_prompt_hook): Renamed from before_prompt_hook. Change
result to int. New arg extlang.
(gdbpy_source_objfile_script): Renamed from
source_python_script_for_objfile, made static. New arg extlang.
(gdbpy_start_type_printers): Renamed from start_type_printers, made
static. New args extlang, extlang_printers. Change result type to
"void".
(gdbpy_apply_type_printers): Renamed from apply_type_printers, made
static. New arg extlang. Rename arg printers to extlang_printers
and change type to ext_lang_type_printers *.
(gdbpy_free_type_printers): Renamed from free_type_printers, made
static. Replace argument arg with extlang, extlang_printers.
(!HAVE_PYTHON, eval_python_from_control_command): Delete.
(!HAVE_PYTHON, source_python_script): Delete.
(!HAVE_PYTHON, gdbpy_should_stop): Delete.
(!HAVE_PYTHON, gdbpy_breakpoint_has_py_cond): Delete.
(!HAVE_PYTHON, start_type_printers): Delete.
(!HAVE_PYTHON, apply_type_printers): Delete.
(!HAVE_PYTHON, free_type_printers): Delete.
(_initialize_python): Delete call to observer_attach_before_prompt.
(finalize_python): Set/restore active extension language.
(gdbpy_finish_initialization) Renamed from
finish_python_initialization, made static. New arg extlang.
(gdbpy_initialized): New function.
* python/python.h: #include "extension.h". Delete #include
"value.h", "mi/mi-cmds.h".
(extension_language_python): Declare.
(GDBPY_AUTO_FILE_NAME): Delete.
(enum py_bt_status): Moved to extension.h and renamed to
ext_lang_bt_status.
(enum frame_filter_flags): Moved to extension.h.
(enum py_frame_args): Moved to extension.h and renamed to
ext_lang_frame_args.
(finish_python_initialization): Delete.
(eval_python_from_control_command): Delete.
(source_python_script): Delete.
(apply_val_pretty_printer): Delete.
(apply_frame_filter): Delete.
(preserve_python_values): Delete.
(gdbpy_script_language_defn): Delete.
(gdbpy_should_stop, gdbpy_breakpoint_has_py_cond): Delete.
(start_type_printers, apply_type_printers, free_type_printers): Delete.
* auto-load.c: #include "extension.h".
(GDB_AUTO_FILE_NAME): Delete.
(auto_load_gdb_scripts_enabled): Make public. New arg extlang.
(script_language_gdb): Delete, moved to extension.c and renamed to
extension_language_gdb.
(source_gdb_script_for_objfile): Delete.
(auto_load_pspace_info): New member unsupported_script_warning_printed.
(loaded_script): Change type of language member to
struct extension_language_defn *.
(init_loaded_scripts_info): Initialize
unsupported_script_warning_printed.
(maybe_add_script): Make static. Change type of language arg to
struct extension_language_defn *.
(clear_section_scripts): Reset unsupported_script_warning_printed.
(auto_load_objfile_script_1): Rewrite to use extension language API.
(auto_load_objfile_script): Make public. Remove support-compiled-in
and auto-load-enabled checks, moved to auto_load_scripts_for_objfile.
(source_section_scripts): Rewrite to use extension language API.
(load_auto_scripts_for_objfile): Rewrite to use
auto_load_scripts_for_objfile.
(collect_matching_scripts_data): Change type of language member to
struct extension_language_defn *.
(auto_load_info_scripts): Change type of language arg to
struct extension_language_defn *.
(unsupported_script_warning_print): New function.
(script_not_found_warning_print): Make static.
(_initialize_auto_load): Rewrite construction of scripts-directory
help.
* auto-load.h (struct objfile): Add forward decl.
(struct script_language): Delete.
(struct auto_load_pspace_info): Add forward decl.
(struct extension_language_defn): Add forward decl.
(maybe_add_script): Delete.
(auto_load_objfile_script): Declare.
(script_not_found_warning_print): Delete.
(auto_load_info_scripts): Update prototype.
(auto_load_gdb_scripts_enabled): Declare.
* python/py-auto-load.c (gdbpy_auto_load_enabled): Renamed from
auto_load_python_scripts_enabled and made public.
(script_language_python): Delete, moved to python.c.
(gdbpy_script_language_defn): Delete.
(info_auto_load_python_scripts): Update to use
extension_language_python.
* breakpoint.c (condition_command): Replace call to
gdbpy_breakpoint_has_py_cond with call to get_breakpoint_cond_ext_lang.
(bpstat_check_breakpoint_conditions): Replace call to gdbpy_should_stop
with call to breakpoint_ext_lang_cond_says_stop.
* python/py-breakpoint.c (gdbpy_breakpoint_cond_says_stop): Renamed
from gdbpy_should_stop. Change result type to enum scr_bp_stop.
New arg slang. Return SCR_BP_STOP_UNSET if py_bp_object is NULL.
(gdbpy_breakpoint_has_cond): Renamed from gdbpy_breakpoint_has_py_cond.
New arg slang.
(local_setattro): Print name of extension language with existing
stop condition.
* valprint.c (val_print, value_print): Update to call
apply_ext_lang_val_pretty_printer.
* cp-valprint.c (cp_print_value): Update call to
apply_ext_lang_val_pretty_printer.
* python/py-prettyprint.c: Remove #ifdef HAVE_PYTHON.
(gdbpy_apply_val_pretty_printer): Renamed from
apply_val_pretty_printer. New arg extlang.
(!HAVE_PYTHON, apply_val_pretty_printer): Delete.
* cli/cli-cmds.c (source_script_from_stream): Rewrite to use
extension language API.
* cli/cli-script.c (execute_control_command): Update to call
eval_ext_lang_from_control_command.
* mi/mi-cmd-stack.c (mi_cmd_stack_list_frames): Update to use
enum ext_lang_bt_status values. Update call to
apply_ext_lang_frame_filter.
(mi_cmd_stack_list_locals): Ditto.
(mi_cmd_stack_list_args): Ditto.
(mi_cmd_stack_list_variables): Ditto.
* mi/mi-main.c: Delete #include "python/python-internal.h".
Add #include "extension.h".
(mi_cmd_list_features): Replace reference to python internal variable
gdb_python_initialized with call to ext_lang_initialized_p.
* stack.c (backtrace_command_1): Update to use enum ext_lang_bt_status.
Update to use enum ext_lang_frame_args. Update to call
apply_ext_lang_frame_filter.
* python/py-framefilter.c (extract_sym): Update to use enum
ext_lang_bt_status.
(extract_value, py_print_type, py_print_value): Ditto.
(py_print_single_arg, enumerate_args, enumerate_locals): Ditto.
(py_mi_print_variables, py_print_locals, py_print_args): Ditto.
(py_print_frame): Ditto.
(gdbpy_apply_frame_filter): Renamed from apply_frame_filter.
New arg extlang. Update to use enum ext_lang_bt_status.
* top.c (gdb_init): Delete #ifdef HAVE_PYTHON call to
finish_python_initialization. Replace with call to
finish_ext_lang_initialization.
* typeprint.c (do_free_global_table): Update to call
free_ext_lang_type_printers.
(create_global_typedef_table): Update to call
start_ext_lang_type_printers.
(find_global_typedef): Update to call apply_ext_lang_type_printers.
* typeprint.h (struct ext_lang_type_printers): Add forward decl.
(type_print_options): Change type of global_printers from "void *"
to "struct ext_lang_type_printers *".
* value.c (preserve_values): Update to call preserve_ext_lang_values.
* python/py-value.c: Remove #ifdef HAVE_PYTHON.
(gdbpy_preserve_values): Renamed from preserve_python_values.
New arg extlang.
(!HAVE_PYTHON, preserve_python_values): Delete.
* utils.c (quit_flag): Delete, moved to extension.c.
(clear_quit_flag, set_quit_flag, check_quit_flag): Delete, moved to
extension.c.
* eval.c: Delete #include "python/python.h".
* main.c: Delete #include "python/python.h".
* defs.h: Update comment.
testsuite/
* gdb.python/py-breakpoint.exp (test_bkpt_eval_funcs): Update expected
output.
* gdb.gdb/python-interrupts.exp: New file.
2014-02-06 04:27:58 +01:00
|
|
|
|
#include "extension.h"
|
|
|
|
|
|
2013-05-20 22:09:01 +02:00
|
|
|
|
/* These WITH_* macros are defined by the CPython API checker that
|
|
|
|
|
comes with the Python plugin for GCC. See:
|
|
|
|
|
https://gcc-python-plugin.readthedocs.org/en/latest/cpychecker.html
|
|
|
|
|
The checker defines a WITH_ macro for each attribute it
|
|
|
|
|
exposes. */
|
|
|
|
|
|
2013-05-20 22:10:03 +02:00
|
|
|
|
#ifdef WITH_CPYCHECKER_RETURNS_BORROWED_REF_ATTRIBUTE
|
|
|
|
|
#define CPYCHECKER_RETURNS_BORROWED_REF \
|
|
|
|
|
__attribute__ ((cpychecker_returns_borrowed_ref))
|
|
|
|
|
#else
|
|
|
|
|
#define CPYCHECKER_RETURNS_BORROWED_REF
|
|
|
|
|
#endif
|
|
|
|
|
|
2013-05-20 22:09:01 +02:00
|
|
|
|
#ifdef WITH_CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF_ATTRIBUTE
|
|
|
|
|
#define CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF(ARG) \
|
|
|
|
|
__attribute__ ((cpychecker_type_object_for_typedef (ARG)))
|
|
|
|
|
#else
|
|
|
|
|
#define CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF(ARG)
|
|
|
|
|
#endif
|
|
|
|
|
|
2013-05-20 22:16:57 +02:00
|
|
|
|
#ifdef WITH_CPYCHECKER_STEALS_REFERENCE_TO_ARG_ATTRIBUTE
|
|
|
|
|
#define CPYCHECKER_STEALS_REFERENCE_TO_ARG(n) \
|
|
|
|
|
__attribute__ ((cpychecker_steals_reference_to_arg (n)))
|
|
|
|
|
#else
|
|
|
|
|
#define CPYCHECKER_STEALS_REFERENCE_TO_ARG(n)
|
|
|
|
|
#endif
|
|
|
|
|
|
2013-05-20 22:19:03 +02:00
|
|
|
|
#ifdef WITH_CPYCHECKER_SETS_EXCEPTION_ATTRIBUTE
|
|
|
|
|
#define CPYCHECKER_SETS_EXCEPTION __attribute__ ((cpychecker_sets_exception))
|
|
|
|
|
#else
|
|
|
|
|
#define CPYCHECKER_SETS_EXCEPTION
|
|
|
|
|
#endif
|
|
|
|
|
|
2013-05-20 22:19:54 +02:00
|
|
|
|
#ifdef WITH_CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION_ATTRIBUTE
|
|
|
|
|
#define CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION \
|
|
|
|
|
__attribute__ ((cpychecker_negative_result_sets_exception))
|
|
|
|
|
#else
|
|
|
|
|
#define CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
|
|
|
|
|
#endif
|
|
|
|
|
|
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
|
|
|
|
|
|
2013-03-17 20:10:38 +01:00
|
|
|
|
/* A kludge to avoid redefinition of snprintf on Windows by pyerrors.h. */
|
|
|
|
|
#if defined(_WIN32) && defined(HAVE_DECL_SNPRINTF)
|
|
|
|
|
#define HAVE_SNPRINTF 1
|
|
|
|
|
#endif
|
|
|
|
|
|
2011-06-28 15:09:12 +02:00
|
|
|
|
/* Request clean size types from Python. */
|
|
|
|
|
#define PY_SSIZE_T_CLEAN
|
|
|
|
|
|
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>
|
2012-12-12 17:47:30 +01:00
|
|
|
|
|
|
|
|
|
#if PY_MAJOR_VERSION >= 3
|
|
|
|
|
#define IS_PY3K 1
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef IS_PY3K
|
|
|
|
|
#define Py_TPFLAGS_HAVE_ITER 0
|
|
|
|
|
#define Py_TPFLAGS_CHECKTYPES 0
|
|
|
|
|
|
|
|
|
|
#define PyInt_Check PyLong_Check
|
|
|
|
|
#define PyInt_FromLong PyLong_FromLong
|
|
|
|
|
#define PyInt_AsLong PyLong_AsLong
|
|
|
|
|
|
|
|
|
|
#define PyString_FromString PyUnicode_FromString
|
|
|
|
|
#define PyString_Decode PyUnicode_Decode
|
|
|
|
|
#define PyString_FromFormat PyUnicode_FromFormat
|
|
|
|
|
#define PyString_Check PyUnicode_Check
|
|
|
|
|
#endif
|
|
|
|
|
|
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
|
|
|
|
|
|
2012-12-12 17:47:30 +01:00
|
|
|
|
#ifndef PyVarObject_HEAD_INIT
|
|
|
|
|
/* Python 2.4 does not define PyVarObject_HEAD_INIT. */
|
|
|
|
|
#define PyVarObject_HEAD_INIT(type, size) \
|
|
|
|
|
PyObject_HEAD_INIT(type) size,
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifndef Py_TYPE
|
|
|
|
|
/* Python 2.4 does not define Py_TYPE. */
|
|
|
|
|
#define Py_TYPE(ob) (((PyObject*)(ob))->ob_type)
|
|
|
|
|
#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 */
|
|
|
|
|
|
2013-05-21 22:52:30 +02:00
|
|
|
|
/* Python 2.6 did not wrap Py_DECREF in 'do {...} while (0)', leading
|
|
|
|
|
to 'suggest explicit braces to avoid ambiguous ‘else’' gcc errors.
|
|
|
|
|
Wrap it ourselves, so that callers don't need to care. */
|
|
|
|
|
|
|
|
|
|
static inline void
|
2013-05-22 11:31:44 +02:00
|
|
|
|
gdb_Py_DECREF (void *op) /* ARI: editCase function */
|
2013-05-21 22:52:30 +02:00
|
|
|
|
{
|
2013-05-30 10:56:56 +02:00
|
|
|
|
/* ... and Python 2.4 didn't cast OP to PyObject pointer on the
|
|
|
|
|
'(op)->ob_refcnt' references within the macro. Cast it ourselves
|
|
|
|
|
too. */
|
|
|
|
|
Py_DECREF ((PyObject *) op);
|
2013-05-21 22:52:30 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#undef Py_DECREF
|
|
|
|
|
#define Py_DECREF(op) gdb_Py_DECREF (op)
|
2011-01-26 21:53:45 +01:00
|
|
|
|
|
2013-11-29 21:00:47 +01:00
|
|
|
|
/* In order to be able to parse symtab_and_line_to_sal_object function
|
2010-03-09 18:12:40 +01:00
|
|
|
|
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"
|
|
|
|
|
|
2011-09-28 22:04:52 +02:00
|
|
|
|
enum gdbpy_iter_kind { iter_keys, iter_values, iter_items };
|
|
|
|
|
|
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;
|
2011-05-27 20:39:49 +02:00
|
|
|
|
struct inferior;
|
2008-08-06 21:41:33 +02:00
|
|
|
|
|
2013-05-20 22:29:44 +02:00
|
|
|
|
extern int gdb_python_initialized;
|
|
|
|
|
|
2008-08-06 21:41:33 +02:00
|
|
|
|
extern PyObject *gdb_module;
|
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.
2012-09-13 23:49:32 +02:00
|
|
|
|
extern PyObject *gdb_python_module;
|
2013-05-20 22:09:01 +02:00
|
|
|
|
extern PyTypeObject value_object_type
|
|
|
|
|
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("value_object");
|
|
|
|
|
extern PyTypeObject block_object_type
|
|
|
|
|
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF("block_object");
|
|
|
|
|
extern PyTypeObject symbol_object_type
|
|
|
|
|
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("symbol_object");
|
|
|
|
|
extern PyTypeObject event_object_type
|
|
|
|
|
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object");
|
|
|
|
|
extern PyTypeObject stop_event_object_type
|
|
|
|
|
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object");
|
|
|
|
|
extern PyTypeObject breakpoint_object_type
|
|
|
|
|
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("breakpoint_object");
|
|
|
|
|
extern PyTypeObject frame_object_type
|
|
|
|
|
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("frame_object");
|
2011-12-23 18:06:16 +01:00
|
|
|
|
|
2013-11-28 23:54:32 +01:00
|
|
|
|
typedef struct gdbpy_breakpoint_object
|
2011-12-23 18:06:16 +01:00
|
|
|
|
{
|
|
|
|
|
PyObject_HEAD
|
|
|
|
|
|
|
|
|
|
/* The breakpoint number according to gdb. */
|
|
|
|
|
int number;
|
|
|
|
|
|
|
|
|
|
/* The gdb breakpoint object, or NULL if the breakpoint has been
|
|
|
|
|
deleted. */
|
|
|
|
|
struct breakpoint *bp;
|
|
|
|
|
|
|
|
|
|
/* 1 is this is a FinishBreakpoint object, 0 otherwise. */
|
|
|
|
|
int is_finish_bp;
|
2013-11-28 23:54:32 +01:00
|
|
|
|
} gdbpy_breakpoint_object;
|
2011-12-23 18:06:16 +01:00
|
|
|
|
|
|
|
|
|
/* Require that BREAKPOINT be a valid breakpoint ID; throw a Python
|
|
|
|
|
exception if it is invalid. */
|
|
|
|
|
#define BPPY_REQUIRE_VALID(Breakpoint) \
|
|
|
|
|
do { \
|
|
|
|
|
if ((Breakpoint)->bp == NULL) \
|
|
|
|
|
return PyErr_Format (PyExc_RuntimeError, \
|
|
|
|
|
_("Breakpoint %d is invalid."), \
|
|
|
|
|
(Breakpoint)->number); \
|
|
|
|
|
} while (0)
|
|
|
|
|
|
|
|
|
|
/* Require that BREAKPOINT be a valid breakpoint ID; throw a Python
|
|
|
|
|
exception if it is invalid. This macro is for use in setter functions. */
|
|
|
|
|
#define BPPY_SET_REQUIRE_VALID(Breakpoint) \
|
|
|
|
|
do { \
|
|
|
|
|
if ((Breakpoint)->bp == NULL) \
|
|
|
|
|
{ \
|
|
|
|
|
PyErr_Format (PyExc_RuntimeError, _("Breakpoint %d is invalid."), \
|
|
|
|
|
(Breakpoint)->number); \
|
|
|
|
|
return -1; \
|
|
|
|
|
} \
|
|
|
|
|
} while (0)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Variables used to pass information between the Breakpoint
|
|
|
|
|
constructor and the breakpoint-created hook function. */
|
2013-11-28 23:54:32 +01:00
|
|
|
|
extern gdbpy_breakpoint_object *bppy_pending_object;
|
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
|
|
|
|
|
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;
|
Extension Language API
* configure.ac (libpython checking): Remove all but python.o from
CONFIG_OBS. Remove all but python.c from CONFIG_SRCS.
* configure: Regenerate.
* Makefile.in (SFILES): Add extension.c.
(HFILES_NO_SRCDIR): Add extension.h, extension-priv.h
(COMMON_OBS): Add extension.o.
* extension.h: New file.
* extension-priv.h: New file.
* extension.c: New file.
* python/python-internal.h: #include "extension.h".
(gdbpy_auto_load_enabled): Declare.
(gdbpy_apply_val_pretty_printer): Declare.
(gdbpy_apply_frame_filter): Declare.
(gdbpy_preserve_values): Declare.
(gdbpy_breakpoint_cond_says_stop): Declare.
(gdbpy_breakpoint_has_cond): Declare.
(void source_python_script_for_objfile): Delete.
* python/python.c: #include "extension-priv.h".
Delete inclusion of "observer.h".
(extension_language_python): Moved here and renamed from
script_language_python in py-auto-load.c.
Redefined to be of type extension_language_defn.
(python_extension_script_ops): New global.
(python_extension_ops): New global.
(struct python_env): New member previous_active.
(restore_python_env): Call restore_active_ext_lang.
(ensure_python_env): Call set_active_ext_lang.
(gdbpy_clear_quit_flag): Renamed from clear_quit_flag, made static.
New arg extlang.
(gdbpy_set_quit_flag): Renamed from set_quit_flag, made static.
New arg extlang.
(gdbpy_check_quit_flag): Renamed from check_quit_flag, made static.
New arg extlang.
(gdbpy_eval_from_control_command): Renamed from
eval_python_from_control_command, made static. New arg extlang.
(gdbpy_source_script) Renamed from source_python_script, made static.
New arg extlang.
(gdbpy_before_prompt_hook): Renamed from before_prompt_hook. Change
result to int. New arg extlang.
(gdbpy_source_objfile_script): Renamed from
source_python_script_for_objfile, made static. New arg extlang.
(gdbpy_start_type_printers): Renamed from start_type_printers, made
static. New args extlang, extlang_printers. Change result type to
"void".
(gdbpy_apply_type_printers): Renamed from apply_type_printers, made
static. New arg extlang. Rename arg printers to extlang_printers
and change type to ext_lang_type_printers *.
(gdbpy_free_type_printers): Renamed from free_type_printers, made
static. Replace argument arg with extlang, extlang_printers.
(!HAVE_PYTHON, eval_python_from_control_command): Delete.
(!HAVE_PYTHON, source_python_script): Delete.
(!HAVE_PYTHON, gdbpy_should_stop): Delete.
(!HAVE_PYTHON, gdbpy_breakpoint_has_py_cond): Delete.
(!HAVE_PYTHON, start_type_printers): Delete.
(!HAVE_PYTHON, apply_type_printers): Delete.
(!HAVE_PYTHON, free_type_printers): Delete.
(_initialize_python): Delete call to observer_attach_before_prompt.
(finalize_python): Set/restore active extension language.
(gdbpy_finish_initialization) Renamed from
finish_python_initialization, made static. New arg extlang.
(gdbpy_initialized): New function.
* python/python.h: #include "extension.h". Delete #include
"value.h", "mi/mi-cmds.h".
(extension_language_python): Declare.
(GDBPY_AUTO_FILE_NAME): Delete.
(enum py_bt_status): Moved to extension.h and renamed to
ext_lang_bt_status.
(enum frame_filter_flags): Moved to extension.h.
(enum py_frame_args): Moved to extension.h and renamed to
ext_lang_frame_args.
(finish_python_initialization): Delete.
(eval_python_from_control_command): Delete.
(source_python_script): Delete.
(apply_val_pretty_printer): Delete.
(apply_frame_filter): Delete.
(preserve_python_values): Delete.
(gdbpy_script_language_defn): Delete.
(gdbpy_should_stop, gdbpy_breakpoint_has_py_cond): Delete.
(start_type_printers, apply_type_printers, free_type_printers): Delete.
* auto-load.c: #include "extension.h".
(GDB_AUTO_FILE_NAME): Delete.
(auto_load_gdb_scripts_enabled): Make public. New arg extlang.
(script_language_gdb): Delete, moved to extension.c and renamed to
extension_language_gdb.
(source_gdb_script_for_objfile): Delete.
(auto_load_pspace_info): New member unsupported_script_warning_printed.
(loaded_script): Change type of language member to
struct extension_language_defn *.
(init_loaded_scripts_info): Initialize
unsupported_script_warning_printed.
(maybe_add_script): Make static. Change type of language arg to
struct extension_language_defn *.
(clear_section_scripts): Reset unsupported_script_warning_printed.
(auto_load_objfile_script_1): Rewrite to use extension language API.
(auto_load_objfile_script): Make public. Remove support-compiled-in
and auto-load-enabled checks, moved to auto_load_scripts_for_objfile.
(source_section_scripts): Rewrite to use extension language API.
(load_auto_scripts_for_objfile): Rewrite to use
auto_load_scripts_for_objfile.
(collect_matching_scripts_data): Change type of language member to
struct extension_language_defn *.
(auto_load_info_scripts): Change type of language arg to
struct extension_language_defn *.
(unsupported_script_warning_print): New function.
(script_not_found_warning_print): Make static.
(_initialize_auto_load): Rewrite construction of scripts-directory
help.
* auto-load.h (struct objfile): Add forward decl.
(struct script_language): Delete.
(struct auto_load_pspace_info): Add forward decl.
(struct extension_language_defn): Add forward decl.
(maybe_add_script): Delete.
(auto_load_objfile_script): Declare.
(script_not_found_warning_print): Delete.
(auto_load_info_scripts): Update prototype.
(auto_load_gdb_scripts_enabled): Declare.
* python/py-auto-load.c (gdbpy_auto_load_enabled): Renamed from
auto_load_python_scripts_enabled and made public.
(script_language_python): Delete, moved to python.c.
(gdbpy_script_language_defn): Delete.
(info_auto_load_python_scripts): Update to use
extension_language_python.
* breakpoint.c (condition_command): Replace call to
gdbpy_breakpoint_has_py_cond with call to get_breakpoint_cond_ext_lang.
(bpstat_check_breakpoint_conditions): Replace call to gdbpy_should_stop
with call to breakpoint_ext_lang_cond_says_stop.
* python/py-breakpoint.c (gdbpy_breakpoint_cond_says_stop): Renamed
from gdbpy_should_stop. Change result type to enum scr_bp_stop.
New arg slang. Return SCR_BP_STOP_UNSET if py_bp_object is NULL.
(gdbpy_breakpoint_has_cond): Renamed from gdbpy_breakpoint_has_py_cond.
New arg slang.
(local_setattro): Print name of extension language with existing
stop condition.
* valprint.c (val_print, value_print): Update to call
apply_ext_lang_val_pretty_printer.
* cp-valprint.c (cp_print_value): Update call to
apply_ext_lang_val_pretty_printer.
* python/py-prettyprint.c: Remove #ifdef HAVE_PYTHON.
(gdbpy_apply_val_pretty_printer): Renamed from
apply_val_pretty_printer. New arg extlang.
(!HAVE_PYTHON, apply_val_pretty_printer): Delete.
* cli/cli-cmds.c (source_script_from_stream): Rewrite to use
extension language API.
* cli/cli-script.c (execute_control_command): Update to call
eval_ext_lang_from_control_command.
* mi/mi-cmd-stack.c (mi_cmd_stack_list_frames): Update to use
enum ext_lang_bt_status values. Update call to
apply_ext_lang_frame_filter.
(mi_cmd_stack_list_locals): Ditto.
(mi_cmd_stack_list_args): Ditto.
(mi_cmd_stack_list_variables): Ditto.
* mi/mi-main.c: Delete #include "python/python-internal.h".
Add #include "extension.h".
(mi_cmd_list_features): Replace reference to python internal variable
gdb_python_initialized with call to ext_lang_initialized_p.
* stack.c (backtrace_command_1): Update to use enum ext_lang_bt_status.
Update to use enum ext_lang_frame_args. Update to call
apply_ext_lang_frame_filter.
* python/py-framefilter.c (extract_sym): Update to use enum
ext_lang_bt_status.
(extract_value, py_print_type, py_print_value): Ditto.
(py_print_single_arg, enumerate_args, enumerate_locals): Ditto.
(py_mi_print_variables, py_print_locals, py_print_args): Ditto.
(py_print_frame): Ditto.
(gdbpy_apply_frame_filter): Renamed from apply_frame_filter.
New arg extlang. Update to use enum ext_lang_bt_status.
* top.c (gdb_init): Delete #ifdef HAVE_PYTHON call to
finish_python_initialization. Replace with call to
finish_ext_lang_initialization.
* typeprint.c (do_free_global_table): Update to call
free_ext_lang_type_printers.
(create_global_typedef_table): Update to call
start_ext_lang_type_printers.
(find_global_typedef): Update to call apply_ext_lang_type_printers.
* typeprint.h (struct ext_lang_type_printers): Add forward decl.
(type_print_options): Change type of global_printers from "void *"
to "struct ext_lang_type_printers *".
* value.c (preserve_values): Update to call preserve_ext_lang_values.
* python/py-value.c: Remove #ifdef HAVE_PYTHON.
(gdbpy_preserve_values): Renamed from preserve_python_values.
New arg extlang.
(!HAVE_PYTHON, preserve_python_values): Delete.
* utils.c (quit_flag): Delete, moved to extension.c.
(clear_quit_flag, set_quit_flag, check_quit_flag): Delete, moved to
extension.c.
* eval.c: Delete #include "python/python.h".
* main.c: Delete #include "python/python.h".
* defs.h: Update comment.
testsuite/
* gdb.python/py-breakpoint.exp (test_bkpt_eval_funcs): Update expected
output.
* gdb.gdb/python-interrupts.exp: New file.
2014-02-06 04:27:58 +01:00
|
|
|
|
|
|
|
|
|
/* extension_language_script_ops "methods". */
|
|
|
|
|
|
|
|
|
|
extern int gdbpy_auto_load_enabled (const struct extension_language_defn *);
|
|
|
|
|
|
|
|
|
|
/* extension_language_ops "methods". */
|
|
|
|
|
|
|
|
|
|
extern enum ext_lang_rc gdbpy_apply_val_pretty_printer
|
|
|
|
|
(const struct extension_language_defn *,
|
|
|
|
|
struct type *type, const gdb_byte *valaddr,
|
|
|
|
|
int embedded_offset, CORE_ADDR address,
|
|
|
|
|
struct ui_file *stream, int recurse,
|
|
|
|
|
const struct value *val,
|
|
|
|
|
const struct value_print_options *options,
|
|
|
|
|
const struct language_defn *language);
|
|
|
|
|
extern enum ext_lang_bt_status gdbpy_apply_frame_filter
|
|
|
|
|
(const struct extension_language_defn *,
|
|
|
|
|
struct frame_info *frame, int flags, enum ext_lang_frame_args args_type,
|
|
|
|
|
struct ui_out *out, int frame_low, int frame_high);
|
|
|
|
|
extern void gdbpy_preserve_values (const struct extension_language_defn *,
|
|
|
|
|
struct objfile *objfile,
|
|
|
|
|
htab_t copied_types);
|
|
|
|
|
extern enum ext_lang_bp_stop gdbpy_breakpoint_cond_says_stop
|
|
|
|
|
(const struct extension_language_defn *, struct breakpoint *);
|
|
|
|
|
extern int gdbpy_breakpoint_has_cond (const struct extension_language_defn *,
|
|
|
|
|
struct breakpoint *b);
|
|
|
|
|
|
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);
|
2013-12-13 00:18:27 +01:00
|
|
|
|
int gdbpy_is_field (PyObject *obj);
|
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);
|
2011-09-15 14:42:30 +02:00
|
|
|
|
PyObject *gdbpy_selected_inferior (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);
|
2011-09-08 21:51:27 +02:00
|
|
|
|
char *gdbpy_parse_command_name (const char *name,
|
2010-04-29 17:45:57 +02:00
|
|
|
|
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);
|
2011-10-20 14:31:30 +02:00
|
|
|
|
PyObject *block_to_block_object (const 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);
|
2013-11-11 20:49:45 +01:00
|
|
|
|
PyObject *symtab_to_linetable_object (PyObject *symtab);
|
2013-05-20 22:10:03 +02:00
|
|
|
|
PyObject *pspace_to_pspace_object (struct program_space *)
|
|
|
|
|
CPYCHECKER_RETURNS_BORROWED_REF;
|
2010-04-15 21:54:13 +02:00
|
|
|
|
PyObject *pspy_get_printers (PyObject *, void *);
|
2013-05-10 Phil Muldoon <pmuldoon@redhat.com>
* stack.c (backtrace_command_1): Add "no-filters", and Python frame
filter logic.
(backtrace_command): Add "no-filters" option parsing.
(_initialize_stack): Alter help to reflect "no-filters" option.
* Makefile.in (SUBDIR_PYTHON_OBS): Add py-framefilter.o
(SUBDIR_PYTHON_SRCS): Add py-framefilter.c
(py-frame.o): Add target
* data-directory/Makefile.in (PYTHON_DIR): Add Python frame
filter files.
* python/python.h: Add new frame filter constants, and flag enum.
(apply_frame_filter): Add definition.
* python/python.c (apply_frame_filter): New non-Python
enabled function.
* python/py-utils.c (py_xdecref): New function.
(make_cleanup_py_xdecref): Ditto.
* python/py-objfile.c: Declare frame_filters dictionary.
(objfpy_dealloc): Add frame_filters dealloc.
(objfpy_new): Initialize frame_filters attribute.
(objfile_to_objfile_object): Ditto.
(objfpy_get_frame_filters): New function.
(objfpy_set_frame_filters): New function.
* python/py-progspace.c: Declare frame_filters dictionary.
(pspy_dealloc): Add frame_filters dealloc.
(pspy_new): Initialize frame_filters attribute.
(pspacee_to_pspace_object): Ditto.
(pspy_get_frame_filters): New function.
(pspy_set_frame_filters): New function.
* python/py-framefilter.c: New file.
* python/lib/gdb/command/frame_filters.py: New file.
* python/lib/gdb/frames.py: New file.
* python/lib/gdb/__init__.py: Initialize global frame_filters
dictionary
* python/lib/gdb/FrameDecorator.py: New file.
* python/lib/gdb/FrameIterator.py: New file.
* mi/mi-cmds.c (mi_cmds): Add frame filters command.
* mi/mi-cmds.h: Declare.
* mi/mi-cmd-stack.c (mi_cmd_stack_list_frames): Add
--no-frame-filter logic, and Python frame filter logic.
(stack_enable_frame_filters): New function.
(parse_no_frame_option): Ditto.
(mi_cmd_stack_list_frames): Add --no-frame-filter and Python frame
filter logic.
(mi_cmd_stack_list_locals): Ditto.
(mi_cmd_stack_list_args): Ditto.
(mi_cmd_stack_list_variables): Ditto.
* NEWS: Add frame filter note.
2013-05-10 Phil Muldoon <pmuldoon@redhat.com>
* gdb.python/py-framefilter.py: New File.
* gdb.python/py-framefilter-mi.exp: Ditto.
* gdb.python/py-framefilter.c: Ditto.
* gdb.python/py-framefilter-mi.exp: Ditto.
* gdb.python/py-framefilter-mi.c: Ditto,
* gdb.python/py-framefilter-gdb.py.in: Ditto.
2013-05-10 Phil Muldoon <pmuldoon@redhat.com>
* gdb.texinfo (Backtrace): Add "no-filter" argument.
(Python API): Add Frame Filters API, Frame Wrapper API,
Writing a Frame Filter/Wrapper, Managing Management of Frame
Filters chapter entries.
(Frame Filters API): New Node.
(Frame Wrapper API): New Node.
(Writing a Frame Filter): New Node.
(Managing Frame Filters): New Node.
(Progspaces In Python): Add note about frame_filters attribute.
(Objfiles in Python): Ditto.
(GDB/MI Stack Manipulation): Add -enable-frame-filters command,
@anchors and --no-frame-filters option to -stack-list-variables,
-stack-list-frames, -stack-list-locals and -stack-list-arguments
commands.
2013-05-10 12:26:03 +02:00
|
|
|
|
PyObject *pspy_get_frame_filters (PyObject *, void *);
|
2010-04-15 21:54:13 +02:00
|
|
|
|
|
2013-05-20 22:10:03 +02:00
|
|
|
|
PyObject *objfile_to_objfile_object (struct objfile *)
|
|
|
|
|
CPYCHECKER_RETURNS_BORROWED_REF;
|
2009-05-28 02:40:24 +02:00
|
|
|
|
PyObject *objfpy_get_printers (PyObject *, void *);
|
2013-05-10 Phil Muldoon <pmuldoon@redhat.com>
* stack.c (backtrace_command_1): Add "no-filters", and Python frame
filter logic.
(backtrace_command): Add "no-filters" option parsing.
(_initialize_stack): Alter help to reflect "no-filters" option.
* Makefile.in (SUBDIR_PYTHON_OBS): Add py-framefilter.o
(SUBDIR_PYTHON_SRCS): Add py-framefilter.c
(py-frame.o): Add target
* data-directory/Makefile.in (PYTHON_DIR): Add Python frame
filter files.
* python/python.h: Add new frame filter constants, and flag enum.
(apply_frame_filter): Add definition.
* python/python.c (apply_frame_filter): New non-Python
enabled function.
* python/py-utils.c (py_xdecref): New function.
(make_cleanup_py_xdecref): Ditto.
* python/py-objfile.c: Declare frame_filters dictionary.
(objfpy_dealloc): Add frame_filters dealloc.
(objfpy_new): Initialize frame_filters attribute.
(objfile_to_objfile_object): Ditto.
(objfpy_get_frame_filters): New function.
(objfpy_set_frame_filters): New function.
* python/py-progspace.c: Declare frame_filters dictionary.
(pspy_dealloc): Add frame_filters dealloc.
(pspy_new): Initialize frame_filters attribute.
(pspacee_to_pspace_object): Ditto.
(pspy_get_frame_filters): New function.
(pspy_set_frame_filters): New function.
* python/py-framefilter.c: New file.
* python/lib/gdb/command/frame_filters.py: New file.
* python/lib/gdb/frames.py: New file.
* python/lib/gdb/__init__.py: Initialize global frame_filters
dictionary
* python/lib/gdb/FrameDecorator.py: New file.
* python/lib/gdb/FrameIterator.py: New file.
* mi/mi-cmds.c (mi_cmds): Add frame filters command.
* mi/mi-cmds.h: Declare.
* mi/mi-cmd-stack.c (mi_cmd_stack_list_frames): Add
--no-frame-filter logic, and Python frame filter logic.
(stack_enable_frame_filters): New function.
(parse_no_frame_option): Ditto.
(mi_cmd_stack_list_frames): Add --no-frame-filter and Python frame
filter logic.
(mi_cmd_stack_list_locals): Ditto.
(mi_cmd_stack_list_args): Ditto.
(mi_cmd_stack_list_variables): Ditto.
* NEWS: Add frame filter note.
2013-05-10 Phil Muldoon <pmuldoon@redhat.com>
* gdb.python/py-framefilter.py: New File.
* gdb.python/py-framefilter-mi.exp: Ditto.
* gdb.python/py-framefilter.c: Ditto.
* gdb.python/py-framefilter-mi.exp: Ditto.
* gdb.python/py-framefilter-mi.c: Ditto,
* gdb.python/py-framefilter-gdb.py.in: Ditto.
2013-05-10 Phil Muldoon <pmuldoon@redhat.com>
* gdb.texinfo (Backtrace): Add "no-filter" argument.
(Python API): Add Frame Filters API, Frame Wrapper API,
Writing a Frame Filter/Wrapper, Managing Management of Frame
Filters chapter entries.
(Frame Filters API): New Node.
(Frame Wrapper API): New Node.
(Writing a Frame Filter): New Node.
(Managing Frame Filters): New Node.
(Progspaces In Python): Add note about frame_filters attribute.
(Objfiles in Python): Ditto.
(GDB/MI Stack Manipulation): Add -enable-frame-filters command,
@anchors and --no-frame-filters option to -stack-list-variables,
-stack-list-frames, -stack-list-locals and -stack-list-arguments
commands.
2013-05-10 12:26:03 +02:00
|
|
|
|
PyObject *objfpy_get_frame_filters (PyObject *, void *);
|
2008-10-16 05:54:00 +02:00
|
|
|
|
|
2013-01-23 20:59:13 +01:00
|
|
|
|
PyObject *gdbarch_to_arch_object (struct gdbarch *gdbarch);
|
|
|
|
|
|
2010-06-28 23:16:04 +02:00
|
|
|
|
thread_object *create_thread_object (struct thread_info *tp);
|
2013-05-20 22:10:03 +02:00
|
|
|
|
thread_object *find_thread_object (ptid_t ptid)
|
|
|
|
|
CPYCHECKER_RETURNS_BORROWED_REF;
|
2010-06-28 23:16:04 +02:00
|
|
|
|
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
|
|
|
|
|
2011-10-20 14:31:30 +02:00
|
|
|
|
const struct block *block_object_to_block (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 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);
|
2011-12-23 18:06:16 +01:00
|
|
|
|
struct frame_info *frame_object_to_frame_info (PyObject *frame_obj);
|
2013-01-23 20:59:13 +01:00
|
|
|
|
struct gdbarch *arch_object_to_gdbarch (PyObject *obj);
|
2008-10-16 05:54:00 +02:00
|
|
|
|
|
2012-08-22 23:04:55 +02:00
|
|
|
|
void gdbpy_initialize_gdb_readline (void);
|
* python/py-arch.c (gdbpy_initialize_arch): Return 'int'.
Check errors.
* python/py-auto-load.c (gdbpy_initialize_auto_load): Return 'int'.
* python/py-block.c (gdbpy_initialize_blocks): Return 'int'.
Check errors.
* python/py-breakpoint.c (gdbpy_initialize_breakpoints): Return 'int'.
Check errors.
* python/py-cmd.c (gdbpy_initialize_commands): Return 'int'.
Check errors.
* python/py-event.c (gdbpy_initialize_event): Return 'int'.
Check errors.
* python/py-event.h (GDBPY_NEW_EVENT_TYPE): Change generated
init function to return 'int'.
* python/py-evtregistry.c (gdbpy_initialize_eventregistry):
Return 'int'. Check errors.
* python/py-evts.c (gdbpy_initialize_py_events): Return 'int'.
Check errors.
* python/py-finishbreakpoint.c (gdbpy_initialize_finishbreakpoints):
Return 'int'. Check errors.
* python/py-frame.c (gdbpy_initialize_frames): Return 'int'.
Check errors.
* python/py-function.c (gdbpy_initialize_functions): Return 'int'.
Check errors.
* python/py-gdb-readline.c (gdbpy_initialize_gdb_readline):
Check errors.
* python/py-inferior.c (gdbpy_initialize_inferior): Return 'int'.
Check errors.
* python/py-infthread.c (gdbpy_initialize_thread): Return 'int'.
Check errors.
* python/py-lazy-string.c (gdbpy_initialize_lazy_string): Return 'int'.
Check errors.
* python/py-objfile.c (gdbpy_initialize_objfile): Return 'int'.
Check errors.
* python/py-param.c (gdbpy_initialize_parameters): Return 'int'.
Check errors.
* python/py-progspace.c (gdbpy_initialize_pspace): Return 'int'.
Check errors.
* python/py-symbol.c (gdbpy_initialize_symbols): Return 'int'.
Check errors.
* python/py-symtab.c (gdbpy_initialize_symtabs): Return 'int'.
Check errors.
* python/py-type.c (gdbpy_initialize_types): Return 'int'.
Check errors.
* python/py-value.c (gdbpy_initialize_values): Return 'int'.
Check errors.
* python/python-internal.h (gdbpy_initialize_auto_load,
gdbpy_initialize_values, gdbpy_initialize_frames,
gdbpy_initialize_symtabs, gdbpy_initialize_commands,
gdbpy_initialize_symbols, gdbpy_initialize_symtabs,
gdbpy_initialize_blocks, gdbpy_initialize_types,
gdbpy_initialize_functions, gdbpy_initialize_pspace,
gdbpy_initialize_objfile, gdbpy_initialize_breakpoints,
gdbpy_initialize_finishbreakpoints,
gdbpy_initialize_lazy_string, gdbpy_initialize_parameters,
gdbpy_initialize_thread, gdbpy_initialize_inferior,
gdbpy_initialize_eventregistry, gdbpy_initialize_event,
gdbpy_initialize_py_events, gdbpy_initialize_stop_event,
gdbpy_initialize_signal_event,
gdbpy_initialize_breakpoint_event,
gdbpy_initialize_continue_event,
gdbpy_initialize_exited_event, gdbpy_initialize_thread_event,
gdbpy_initialize_new_objfile_event, gdbpy_initialize_arch):
Update. Use CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION.
* python/python.c (gdb_python_initialized): New global.
(gdbpy_initialize_events): Return 'int'. Check errors.
(_initialize_python): Check errors. Set
gdb_python_initialized.
2013-05-20 22:28:52 +02:00
|
|
|
|
int gdbpy_initialize_auto_load (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_values (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_frames (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_symtabs (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_commands (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_symbols (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_symtabs (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_blocks (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_types (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_functions (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_pspace (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_objfile (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_breakpoints (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_finishbreakpoints (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_lazy_string (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
2013-11-11 20:49:45 +01:00
|
|
|
|
int gdbpy_initialize_linetable (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
* python/py-arch.c (gdbpy_initialize_arch): Return 'int'.
Check errors.
* python/py-auto-load.c (gdbpy_initialize_auto_load): Return 'int'.
* python/py-block.c (gdbpy_initialize_blocks): Return 'int'.
Check errors.
* python/py-breakpoint.c (gdbpy_initialize_breakpoints): Return 'int'.
Check errors.
* python/py-cmd.c (gdbpy_initialize_commands): Return 'int'.
Check errors.
* python/py-event.c (gdbpy_initialize_event): Return 'int'.
Check errors.
* python/py-event.h (GDBPY_NEW_EVENT_TYPE): Change generated
init function to return 'int'.
* python/py-evtregistry.c (gdbpy_initialize_eventregistry):
Return 'int'. Check errors.
* python/py-evts.c (gdbpy_initialize_py_events): Return 'int'.
Check errors.
* python/py-finishbreakpoint.c (gdbpy_initialize_finishbreakpoints):
Return 'int'. Check errors.
* python/py-frame.c (gdbpy_initialize_frames): Return 'int'.
Check errors.
* python/py-function.c (gdbpy_initialize_functions): Return 'int'.
Check errors.
* python/py-gdb-readline.c (gdbpy_initialize_gdb_readline):
Check errors.
* python/py-inferior.c (gdbpy_initialize_inferior): Return 'int'.
Check errors.
* python/py-infthread.c (gdbpy_initialize_thread): Return 'int'.
Check errors.
* python/py-lazy-string.c (gdbpy_initialize_lazy_string): Return 'int'.
Check errors.
* python/py-objfile.c (gdbpy_initialize_objfile): Return 'int'.
Check errors.
* python/py-param.c (gdbpy_initialize_parameters): Return 'int'.
Check errors.
* python/py-progspace.c (gdbpy_initialize_pspace): Return 'int'.
Check errors.
* python/py-symbol.c (gdbpy_initialize_symbols): Return 'int'.
Check errors.
* python/py-symtab.c (gdbpy_initialize_symtabs): Return 'int'.
Check errors.
* python/py-type.c (gdbpy_initialize_types): Return 'int'.
Check errors.
* python/py-value.c (gdbpy_initialize_values): Return 'int'.
Check errors.
* python/python-internal.h (gdbpy_initialize_auto_load,
gdbpy_initialize_values, gdbpy_initialize_frames,
gdbpy_initialize_symtabs, gdbpy_initialize_commands,
gdbpy_initialize_symbols, gdbpy_initialize_symtabs,
gdbpy_initialize_blocks, gdbpy_initialize_types,
gdbpy_initialize_functions, gdbpy_initialize_pspace,
gdbpy_initialize_objfile, gdbpy_initialize_breakpoints,
gdbpy_initialize_finishbreakpoints,
gdbpy_initialize_lazy_string, gdbpy_initialize_parameters,
gdbpy_initialize_thread, gdbpy_initialize_inferior,
gdbpy_initialize_eventregistry, gdbpy_initialize_event,
gdbpy_initialize_py_events, gdbpy_initialize_stop_event,
gdbpy_initialize_signal_event,
gdbpy_initialize_breakpoint_event,
gdbpy_initialize_continue_event,
gdbpy_initialize_exited_event, gdbpy_initialize_thread_event,
gdbpy_initialize_new_objfile_event, gdbpy_initialize_arch):
Update. Use CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION.
* python/python.c (gdb_python_initialized): New global.
(gdbpy_initialize_events): Return 'int'. Check errors.
(_initialize_python): Check errors. Set
gdb_python_initialized.
2013-05-20 22:28:52 +02:00
|
|
|
|
int gdbpy_initialize_parameters (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_thread (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_inferior (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_eventregistry (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_event (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_py_events (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_stop_event (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_signal_event (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_breakpoint_event (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_continue_event (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_exited_event (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_thread_event (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_new_objfile_event (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
int gdbpy_initialize_arch (void)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
2008-08-06 21:41:33 +02:00
|
|
|
|
|
|
|
|
|
struct cleanup *make_cleanup_py_decref (PyObject *py);
|
2013-05-10 Phil Muldoon <pmuldoon@redhat.com>
* stack.c (backtrace_command_1): Add "no-filters", and Python frame
filter logic.
(backtrace_command): Add "no-filters" option parsing.
(_initialize_stack): Alter help to reflect "no-filters" option.
* Makefile.in (SUBDIR_PYTHON_OBS): Add py-framefilter.o
(SUBDIR_PYTHON_SRCS): Add py-framefilter.c
(py-frame.o): Add target
* data-directory/Makefile.in (PYTHON_DIR): Add Python frame
filter files.
* python/python.h: Add new frame filter constants, and flag enum.
(apply_frame_filter): Add definition.
* python/python.c (apply_frame_filter): New non-Python
enabled function.
* python/py-utils.c (py_xdecref): New function.
(make_cleanup_py_xdecref): Ditto.
* python/py-objfile.c: Declare frame_filters dictionary.
(objfpy_dealloc): Add frame_filters dealloc.
(objfpy_new): Initialize frame_filters attribute.
(objfile_to_objfile_object): Ditto.
(objfpy_get_frame_filters): New function.
(objfpy_set_frame_filters): New function.
* python/py-progspace.c: Declare frame_filters dictionary.
(pspy_dealloc): Add frame_filters dealloc.
(pspy_new): Initialize frame_filters attribute.
(pspacee_to_pspace_object): Ditto.
(pspy_get_frame_filters): New function.
(pspy_set_frame_filters): New function.
* python/py-framefilter.c: New file.
* python/lib/gdb/command/frame_filters.py: New file.
* python/lib/gdb/frames.py: New file.
* python/lib/gdb/__init__.py: Initialize global frame_filters
dictionary
* python/lib/gdb/FrameDecorator.py: New file.
* python/lib/gdb/FrameIterator.py: New file.
* mi/mi-cmds.c (mi_cmds): Add frame filters command.
* mi/mi-cmds.h: Declare.
* mi/mi-cmd-stack.c (mi_cmd_stack_list_frames): Add
--no-frame-filter logic, and Python frame filter logic.
(stack_enable_frame_filters): New function.
(parse_no_frame_option): Ditto.
(mi_cmd_stack_list_frames): Add --no-frame-filter and Python frame
filter logic.
(mi_cmd_stack_list_locals): Ditto.
(mi_cmd_stack_list_args): Ditto.
(mi_cmd_stack_list_variables): Ditto.
* NEWS: Add frame filter note.
2013-05-10 Phil Muldoon <pmuldoon@redhat.com>
* gdb.python/py-framefilter.py: New File.
* gdb.python/py-framefilter-mi.exp: Ditto.
* gdb.python/py-framefilter.c: Ditto.
* gdb.python/py-framefilter-mi.exp: Ditto.
* gdb.python/py-framefilter-mi.c: Ditto,
* gdb.python/py-framefilter-gdb.py.in: Ditto.
2013-05-10 Phil Muldoon <pmuldoon@redhat.com>
* gdb.texinfo (Backtrace): Add "no-filter" argument.
(Python API): Add Frame Filters API, Frame Wrapper API,
Writing a Frame Filter/Wrapper, Managing Management of Frame
Filters chapter entries.
(Frame Filters API): New Node.
(Frame Wrapper API): New Node.
(Writing a Frame Filter): New Node.
(Managing Frame Filters): New Node.
(Progspaces In Python): Add note about frame_filters attribute.
(Objfiles in Python): Ditto.
(GDB/MI Stack Manipulation): Add -enable-frame-filters command,
@anchors and --no-frame-filters option to -stack-list-variables,
-stack-list-frames, -stack-list-locals and -stack-list-arguments
commands.
2013-05-10 12:26:03 +02:00
|
|
|
|
struct cleanup *make_cleanup_py_xdecref (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. */
|
2013-05-20 22:19:03 +02:00
|
|
|
|
#define GDB_PY_HANDLE_EXCEPTION(Exception) \
|
|
|
|
|
do { \
|
|
|
|
|
if (Exception.reason < 0) \
|
|
|
|
|
{ \
|
|
|
|
|
gdbpy_convert_exception (Exception); \
|
|
|
|
|
return NULL; \
|
|
|
|
|
} \
|
|
|
|
|
} while (0)
|
2008-08-06 21:41:33 +02:00
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
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,
|
2013-11-29 21:00:47 +01:00
|
|
|
|
struct type **str_type,
|
2010-10-15 20:54:13 +02:00
|
|
|
|
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);
|
|
|
|
|
|
2013-11-28 23:54:32 +01:00
|
|
|
|
void bpfinishpy_pre_stop_hook (struct gdbpy_breakpoint_object *bp_obj);
|
|
|
|
|
void bpfinishpy_post_stop_hook (struct gdbpy_breakpoint_object *bp_obj);
|
2011-12-23 18:06:16 +01:00
|
|
|
|
|
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;
|
|
|
|
|
|
2013-05-20 22:19:03 +02:00
|
|
|
|
extern void gdbpy_convert_exception (struct gdb_exception)
|
|
|
|
|
CPYCHECKER_SETS_EXCEPTION;
|
2010-11-12 21:49:43 +01:00
|
|
|
|
|
2013-05-20 22:24:49 +02:00
|
|
|
|
int get_addr_from_python (PyObject *obj, CORE_ADDR *addr)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
2010-06-28 23:16:04 +02:00
|
|
|
|
|
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 *);
|
|
|
|
|
|
2012-02-17 20:24:27 +01:00
|
|
|
|
PyObject *gdb_py_generic_dict (PyObject *self, void *closure);
|
|
|
|
|
|
2013-05-20 22:36:19 +02:00
|
|
|
|
int gdb_pymodule_addobject (PyObject *module, const char *name,
|
|
|
|
|
PyObject *object)
|
|
|
|
|
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
|
|
|
|
|
2008-08-06 21:41:33 +02:00
|
|
|
|
#endif /* GDB_PYTHON_INTERNAL_H */
|