1 /* General python/gdb code
3 Copyright (C) 2008-2023 Free Software Foundation, Inc.
5 This file is part of GDB.
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
21 #include "arch-utils.h"
24 #include "cli/cli-script.h"
26 #include "progspace.h"
30 #include "gdbsupport/event-loop.h"
31 #include "readline/tilde.h"
33 #include "extension-priv.h"
34 #include "cli/cli-utils.h"
37 #include "run-on-main-thread.h"
38 #include "gdbsupport/selftest.h"
39 #include "observable.h"
41 /* Declared constants and enum for python stack printing. */
42 static const char python_excp_none
[] = "none";
43 static const char python_excp_full
[] = "full";
44 static const char python_excp_message
[] = "message";
46 /* "set python print-stack" choices. */
47 static const char *const python_excp_enums
[] =
55 /* The exception printing variable. 'full' if we want to print the
56 error message and stack, 'none' if we want to print nothing, and
57 'message' if we only want to print the error message. 'message' is
59 static const char *gdbpy_should_print_stack
= python_excp_message
;
64 #include "cli/cli-decode.h"
67 #include "python-internal.h"
70 #include "gdbsupport/version.h"
72 #include "gdbthread.h"
74 #include "event-top.h"
77 /* True if Python has been successfully initialized, false
80 int gdb_python_initialized
;
82 extern PyMethodDef python_GdbMethods
[];
85 PyObject
*gdb_python_module
;
87 /* Some string constants we may wish to use. */
88 PyObject
*gdbpy_to_string_cst
;
89 PyObject
*gdbpy_children_cst
;
90 PyObject
*gdbpy_display_hint_cst
;
91 PyObject
*gdbpy_doc_cst
;
92 PyObject
*gdbpy_enabled_cst
;
93 PyObject
*gdbpy_value_cst
;
95 /* The GdbError exception. */
96 PyObject
*gdbpy_gdberror_exc
;
98 /* The `gdb.error' base class. */
99 PyObject
*gdbpy_gdb_error
;
101 /* The `gdb.MemoryError' exception. */
102 PyObject
*gdbpy_gdb_memory_error
;
104 static script_sourcer_func gdbpy_source_script
;
105 static objfile_script_sourcer_func gdbpy_source_objfile_script
;
106 static objfile_script_executor_func gdbpy_execute_objfile_script
;
107 static void gdbpy_initialize (const struct extension_language_defn
*);
108 static int gdbpy_initialized (const struct extension_language_defn
*);
109 static void gdbpy_eval_from_control_command
110 (const struct extension_language_defn
*, struct command_line
*cmd
);
111 static void gdbpy_start_type_printers (const struct extension_language_defn
*,
112 struct ext_lang_type_printers
*);
113 static enum ext_lang_rc gdbpy_apply_type_printers
114 (const struct extension_language_defn
*,
115 const struct ext_lang_type_printers
*, struct type
*, char **);
116 static void gdbpy_free_type_printers (const struct extension_language_defn
*,
117 struct ext_lang_type_printers
*);
118 static void gdbpy_set_quit_flag (const struct extension_language_defn
*);
119 static int gdbpy_check_quit_flag (const struct extension_language_defn
*);
120 static enum ext_lang_rc gdbpy_before_prompt_hook
121 (const struct extension_language_defn
*, const char *current_gdb_prompt
);
122 static gdb::optional
<std::string
> gdbpy_colorize
123 (const std::string
&filename
, const std::string
&contents
);
124 static gdb::optional
<std::string
> gdbpy_colorize_disasm
125 (const std::string
&content
, gdbarch
*gdbarch
);
127 /* The interface between gdb proper and loading of python scripts. */
129 static const struct extension_language_script_ops python_extension_script_ops
=
132 gdbpy_source_objfile_script
,
133 gdbpy_execute_objfile_script
,
134 gdbpy_auto_load_enabled
137 /* The interface between gdb proper and python extensions. */
139 static const struct extension_language_ops python_extension_ops
=
144 gdbpy_eval_from_control_command
,
146 gdbpy_start_type_printers
,
147 gdbpy_apply_type_printers
,
148 gdbpy_free_type_printers
,
150 gdbpy_apply_val_pretty_printer
,
152 gdbpy_apply_frame_filter
,
154 gdbpy_preserve_values
,
156 gdbpy_breakpoint_has_cond
,
157 gdbpy_breakpoint_cond_says_stop
,
160 gdbpy_check_quit_flag
,
162 gdbpy_before_prompt_hook
,
164 gdbpy_get_matching_xmethod_workers
,
168 gdbpy_colorize_disasm
,
173 #endif /* HAVE_PYTHON */
175 /* The main struct describing GDB's interface to the Python
176 extension language. */
177 const struct extension_language_defn extension_language_python
=
189 &python_extension_script_ops
,
190 &python_extension_ops
199 /* Architecture and language to be used in callbacks from
200 the Python interpreter. */
201 struct gdbarch
*gdbpy_enter::python_gdbarch
;
203 gdbpy_enter::gdbpy_enter (struct gdbarch
*gdbarch
,
204 const struct language_defn
*language
)
205 : m_gdbarch (python_gdbarch
),
206 m_language (language
== nullptr ? nullptr : current_language
)
208 /* We should not ever enter Python unless initialized. */
209 if (!gdb_python_initialized
)
210 error (_("Python not initialized"));
212 m_previous_active
= set_active_ext_lang (&extension_language_python
);
214 m_state
= PyGILState_Ensure ();
216 python_gdbarch
= gdbarch
;
217 if (language
!= nullptr)
218 set_language (language
->la_language
);
220 /* Save it and ensure ! PyErr_Occurred () afterwards. */
224 gdbpy_enter::~gdbpy_enter ()
226 /* Leftover Python error is forbidden by Python Exception Handling. */
227 if (PyErr_Occurred ())
229 /* This order is similar to the one calling error afterwards. */
230 gdbpy_print_stack ();
231 warning (_("internal error: Unhandled Python exception"));
236 python_gdbarch
= m_gdbarch
;
237 if (m_language
!= nullptr)
238 set_language (m_language
->la_language
);
240 restore_active_ext_lang (m_previous_active
);
241 PyGILState_Release (m_state
);
245 gdbpy_enter::get_gdbarch ()
247 if (python_gdbarch
!= nullptr)
248 return python_gdbarch
;
249 return get_current_arch ();
253 gdbpy_enter::finalize ()
255 python_gdbarch
= target_gdbarch ();
258 /* A helper class to save and restore the GIL, but without touching
259 the other globals that are handled by gdbpy_enter. */
266 : m_state (PyGILState_Ensure ())
272 PyGILState_Release (m_state
);
275 DISABLE_COPY_AND_ASSIGN (gdbpy_gil
);
279 PyGILState_STATE m_state
;
282 /* Set the quit flag. */
285 gdbpy_set_quit_flag (const struct extension_language_defn
*extlang
)
287 PyErr_SetInterrupt ();
290 /* Return true if the quit flag has been set, false otherwise. */
293 gdbpy_check_quit_flag (const struct extension_language_defn
*extlang
)
295 if (!gdb_python_initialized
)
299 return PyOS_InterruptOccurred ();
302 /* Evaluate a Python command like PyRun_SimpleString, but uses
303 Py_single_input which prints the result of expressions, and does
304 not automatically print the stack on errors. */
307 eval_python_command (const char *command
)
311 m
= PyImport_AddModule ("__main__");
315 d
= PyModule_GetDict (m
);
318 gdbpy_ref
<> v (PyRun_StringFlags (command
, Py_single_input
, d
, d
, NULL
));
325 /* Implementation of the gdb "python-interactive" command. */
328 python_interactive_command (const char *arg
, int from_tty
)
330 struct ui
*ui
= current_ui
;
333 scoped_restore save_async
= make_scoped_restore (¤t_ui
->async
, 0);
335 arg
= skip_spaces (arg
);
337 gdbpy_enter enter_py
;
341 std::string script
= std::string (arg
) + "\n";
342 err
= eval_python_command (script
.c_str ());
346 err
= PyRun_InteractiveLoop (ui
->instream
, "<stdin>");
352 gdbpy_print_stack ();
353 error (_("Error while executing Python code."));
357 /* A wrapper around PyRun_SimpleFile. FILE is the Python script to run
360 On Windows hosts few users would build Python themselves (this is no
361 trivial task on this platform), and thus use binaries built by
362 someone else instead. There may happen situation where the Python
363 library and GDB are using two different versions of the C runtime
364 library. Python, being built with VC, would use one version of the
365 msvcr DLL (Eg. msvcr100.dll), while MinGW uses msvcrt.dll.
366 A FILE * from one runtime does not necessarily operate correctly in
369 To work around this potential issue, we run code in Python to load
373 python_run_simple_file (FILE *file
, const char *filename
)
377 PyRun_SimpleFile (file
, filename
);
381 /* Because we have a string for a filename, and are using Python to
382 open the file, we need to expand any tilde in the path first. */
383 gdb::unique_xmalloc_ptr
<char> full_path (tilde_expand (filename
));
385 if (gdb_python_module
== nullptr
386 || ! PyObject_HasAttrString (gdb_python_module
, "_execute_file"))
387 error (_("Installation error: gdb._execute_file function is missing"));
389 gdbpy_ref
<> return_value
390 (PyObject_CallMethod (gdb_python_module
, "_execute_file", "s",
392 if (return_value
== nullptr)
394 /* Use PyErr_PrintEx instead of gdbpy_print_stack to better match the
395 behavior of the non-Windows codepath. */
402 /* Given a command_line, return a command string suitable for passing
403 to Python. Lines in the string are separated by newlines. */
406 compute_python_string (struct command_line
*l
)
408 struct command_line
*iter
;
411 for (iter
= l
; iter
; iter
= iter
->next
)
413 script
+= iter
->line
;
419 /* Take a command line structure representing a 'python' command, and
420 evaluate its body using the Python interpreter. */
423 gdbpy_eval_from_control_command (const struct extension_language_defn
*extlang
,
424 struct command_line
*cmd
)
428 if (cmd
->body_list_1
!= nullptr)
429 error (_("Invalid \"python\" block structure."));
431 gdbpy_enter enter_py
;
433 std::string script
= compute_python_string (cmd
->body_list_0
.get ());
434 ret
= PyRun_SimpleString (script
.c_str ());
436 error (_("Error while executing Python code."));
439 /* Implementation of the gdb "python" command. */
442 python_command (const char *arg
, int from_tty
)
444 gdbpy_enter enter_py
;
446 scoped_restore save_async
= make_scoped_restore (¤t_ui
->async
, 0);
448 arg
= skip_spaces (arg
);
451 if (PyRun_SimpleString (arg
))
452 error (_("Error while executing Python code."));
456 counted_command_line l
= get_command_line (python_control
, "");
458 execute_control_command_untraced (l
.get ());
464 /* Transform a gdb parameters's value into a Python value. May return
465 NULL (and set a Python exception) on error. Helper function for
468 gdbpy_parameter_value (const setting
&var
)
473 case var_string_noescape
:
474 case var_optional_filename
:
479 if (var
.type () == var_enum
)
480 str
= var
.get
<const char *> ();
482 str
= var
.get
<std::string
> ().c_str ();
484 return host_string_to_python_string (str
).release ();
489 if (var
.get
<bool> ())
495 case var_auto_boolean
:
497 enum auto_boolean ab
= var
.get
<enum auto_boolean
> ();
499 if (ab
== AUTO_BOOLEAN_TRUE
)
501 else if (ab
== AUTO_BOOLEAN_FALSE
)
508 if (var
.get
<int> () == INT_MAX
)
512 case var_zuinteger_unlimited
:
513 return gdb_py_object_from_longest (var
.get
<int> ()).release ();
517 unsigned int val
= var
.get
<unsigned int> ();
521 return gdb_py_object_from_ulongest (val
).release ();
526 unsigned int val
= var
.get
<unsigned int> ();
527 return gdb_py_object_from_ulongest (val
).release ();
531 return PyErr_Format (PyExc_RuntimeError
,
532 _("Programmer error: unhandled type."));
535 /* A Python function which returns a gdb parameter's value as a Python
539 gdbpy_parameter (PyObject
*self
, PyObject
*args
)
541 struct cmd_list_element
*alias
, *prefix
, *cmd
;
545 if (! PyArg_ParseTuple (args
, "s", &arg
))
548 std::string newarg
= std::string ("show ") + arg
;
552 found
= lookup_cmd_composition (newarg
.c_str (), &alias
, &prefix
, &cmd
);
554 catch (const gdb_exception
&ex
)
556 GDB_PY_HANDLE_EXCEPTION (ex
);
560 return PyErr_Format (PyExc_RuntimeError
,
561 _("Could not find parameter `%s'."), arg
);
563 if (!cmd
->var
.has_value ())
564 return PyErr_Format (PyExc_RuntimeError
,
565 _("`%s' is not a parameter."), arg
);
567 return gdbpy_parameter_value (*cmd
->var
);
570 /* Wrapper for target_charset. */
573 gdbpy_target_charset (PyObject
*self
, PyObject
*args
)
575 const char *cset
= target_charset (gdbpy_enter::get_gdbarch ());
577 return PyUnicode_Decode (cset
, strlen (cset
), host_charset (), NULL
);
580 /* Wrapper for target_wide_charset. */
583 gdbpy_target_wide_charset (PyObject
*self
, PyObject
*args
)
585 const char *cset
= target_wide_charset (gdbpy_enter::get_gdbarch ());
587 return PyUnicode_Decode (cset
, strlen (cset
), host_charset (), NULL
);
590 /* Implement gdb.host_charset(). */
593 gdbpy_host_charset (PyObject
*self
, PyObject
*args
)
595 const char *cset
= host_charset ();
597 return PyUnicode_Decode (cset
, strlen (cset
), host_charset (), NULL
);
600 /* A Python function which evaluates a string using the gdb CLI. */
603 execute_gdb_command (PyObject
*self
, PyObject
*args
, PyObject
*kw
)
606 PyObject
*from_tty_obj
= NULL
, *to_string_obj
= NULL
;
607 int from_tty
, to_string
;
608 static const char *keywords
[] = { "command", "from_tty", "to_string", NULL
};
610 if (!gdb_PyArg_ParseTupleAndKeywords (args
, kw
, "s|O!O!", keywords
, &arg
,
611 &PyBool_Type
, &from_tty_obj
,
612 &PyBool_Type
, &to_string_obj
))
618 int cmp
= PyObject_IsTrue (from_tty_obj
);
627 int cmp
= PyObject_IsTrue (to_string_obj
);
633 std::string to_string_res
;
635 scoped_restore preventer
= prevent_dont_repeat ();
639 gdbpy_allow_threads allow_threads
;
641 struct interp
*interp
;
643 std::string arg_copy
= arg
;
645 char *save_ptr
= nullptr;
647 = [&] (std::string
&buffer
)
649 const char *result
= strtok_r (first
? &arg_copy
[0] : nullptr,
655 counted_command_line lines
= read_command_lines_1 (reader
, 1, nullptr);
658 scoped_restore save_async
= make_scoped_restore (¤t_ui
->async
,
661 scoped_restore save_uiout
= make_scoped_restore (¤t_uiout
);
663 /* Use the console interpreter uiout to have the same print format
664 for console or MI. */
665 interp
= interp_lookup (current_ui
, "console");
666 current_uiout
= interp
->interp_ui_out ();
669 to_string_res
= execute_control_commands_to_string (lines
.get (),
672 execute_control_commands (lines
.get (), from_tty
);
675 /* Do any commands attached to breakpoint we stopped at. */
676 bpstat_do_actions ();
678 catch (const gdb_exception
&except
)
680 /* If an exception occurred then we won't hit normal_stop (), or have
681 an exception reach the top level of the event loop, which are the
682 two usual places in which stdin would be re-enabled. So, before we
683 convert the exception and continue back in Python, we should
684 re-enable stdin here. */
685 async_enable_stdin ();
686 GDB_PY_HANDLE_EXCEPTION (except
);
690 return PyUnicode_FromString (to_string_res
.c_str ());
694 /* Implementation of Python rbreak command. Take a REGEX and
695 optionally a MINSYMS, THROTTLE and SYMTABS keyword and return a
696 Python list that contains newly set breakpoints that match that
697 criteria. REGEX refers to a GDB format standard regex pattern of
698 symbols names to search; MINSYMS is an optional boolean (default
699 False) that indicates if the function should search GDB's minimal
700 symbols; THROTTLE is an optional integer (default unlimited) that
701 indicates the maximum amount of breakpoints allowable before the
702 function exits (note, if the throttle bound is passed, no
703 breakpoints will be set and a runtime error returned); SYMTABS is
704 an optional Python iterable that contains a set of gdb.Symtabs to
705 constrain the search within. */
708 gdbpy_rbreak (PyObject
*self
, PyObject
*args
, PyObject
*kw
)
711 std::vector
<symbol_search
> symbols
;
712 unsigned long count
= 0;
713 PyObject
*symtab_list
= NULL
;
714 PyObject
*minsyms_p_obj
= NULL
;
716 unsigned int throttle
= 0;
717 static const char *keywords
[] = {"regex","minsyms", "throttle",
720 if (!gdb_PyArg_ParseTupleAndKeywords (args
, kw
, "s|O!IO", keywords
,
721 ®ex
, &PyBool_Type
,
722 &minsyms_p_obj
, &throttle
,
726 /* Parse minsyms keyword. */
727 if (minsyms_p_obj
!= NULL
)
729 int cmp
= PyObject_IsTrue (minsyms_p_obj
);
735 global_symbol_searcher
spec (FUNCTIONS_DOMAIN
, regex
);
737 for (const char *elem
: spec
.filenames
)
738 xfree ((void *) elem
);
741 /* The "symtabs" keyword is any Python iterable object that returns
742 a gdb.Symtab on each iteration. If specified, iterate through
743 the provided gdb.Symtabs and extract their full path. As
744 python_string_to_target_string returns a
745 gdb::unique_xmalloc_ptr<char> and a vector containing these types
746 cannot be coerced to a const char **p[] via the vector.data call,
747 release the value from the unique_xmalloc_ptr and place it in a
748 simple type symtab_list_type (which holds the vector and a
749 destructor that frees the contents of the allocated strings. */
750 if (symtab_list
!= NULL
)
752 gdbpy_ref
<> iter (PyObject_GetIter (symtab_list
));
759 gdbpy_ref
<> next (PyIter_Next (iter
.get ()));
763 if (PyErr_Occurred ())
768 gdbpy_ref
<> obj_name (PyObject_GetAttrString (next
.get (),
771 if (obj_name
== NULL
)
774 /* Is the object file still valid? */
775 if (obj_name
== Py_None
)
778 gdb::unique_xmalloc_ptr
<char> filename
=
779 python_string_to_target_string (obj_name
.get ());
781 if (filename
== NULL
)
784 /* Make sure there is a definite place to store the value of
785 filename before it is released. */
786 spec
.filenames
.push_back (nullptr);
787 spec
.filenames
.back () = filename
.release ();
791 /* The search spec. */
792 symbols
= spec
.search ();
794 /* Count the number of symbols (both symbols and optionally minimal
795 symbols) so we can correctly check the throttle limit. */
796 for (const symbol_search
&p
: symbols
)
798 /* Minimal symbols included? */
801 if (p
.msymbol
.minsym
!= NULL
)
805 if (p
.symbol
!= NULL
)
809 /* Check throttle bounds and exit if in excess. */
810 if (throttle
!= 0 && count
> throttle
)
812 PyErr_SetString (PyExc_RuntimeError
,
813 _("Number of breakpoints exceeds throttled maximum."));
817 gdbpy_ref
<> return_list (PyList_New (0));
819 if (return_list
== NULL
)
822 /* Construct full path names for symbols and call the Python
823 breakpoint constructor on the resulting names. Be tolerant of
824 individual breakpoint failures. */
825 for (const symbol_search
&p
: symbols
)
827 std::string symbol_name
;
829 /* Skipping minimal symbols? */
831 if (p
.msymbol
.minsym
!= NULL
)
834 if (p
.msymbol
.minsym
== NULL
)
836 struct symtab
*symtab
= p
.symbol
->symtab ();
837 const char *fullname
= symtab_to_fullname (symtab
);
839 symbol_name
= fullname
;
841 symbol_name
+= p
.symbol
->linkage_name ();
844 symbol_name
= p
.msymbol
.minsym
->linkage_name ();
846 gdbpy_ref
<> argList (Py_BuildValue("(s)", symbol_name
.c_str ()));
847 gdbpy_ref
<> obj (PyObject_CallObject ((PyObject
*)
848 &breakpoint_object_type
,
851 /* Tolerate individual breakpoint failures. */
853 gdbpy_print_stack ();
856 if (PyList_Append (return_list
.get (), obj
.get ()) == -1)
860 return return_list
.release ();
863 /* A Python function which is a wrapper for decode_line_1. */
866 gdbpy_decode_line (PyObject
*self
, PyObject
*args
)
868 const char *arg
= NULL
;
870 gdbpy_ref
<> unparsed
;
871 location_spec_up locspec
;
873 if (! PyArg_ParseTuple (args
, "|s", &arg
))
876 /* Treat a string consisting of just whitespace the same as
880 arg
= skip_spaces (arg
);
886 locspec
= string_to_location_spec_basic (&arg
, current_language
,
887 symbol_name_match_type::WILD
);
889 std::vector
<symtab_and_line
> decoded_sals
;
890 symtab_and_line def_sal
;
891 gdb::array_view
<symtab_and_line
> sals
;
896 decoded_sals
= decode_line_1 (locspec
.get (), 0, NULL
, NULL
, 0);
901 set_default_source_symtab_and_line ();
902 def_sal
= get_current_source_symtab_and_line ();
906 catch (const gdb_exception
&ex
)
908 /* We know this will always throw. */
909 gdbpy_convert_exception (ex
);
915 result
.reset (PyTuple_New (sals
.size ()));
918 for (size_t i
= 0; i
< sals
.size (); ++i
)
920 PyObject
*obj
= symtab_and_line_to_sal_object (sals
[i
]);
924 PyTuple_SetItem (result
.get (), i
, obj
);
928 result
= gdbpy_ref
<>::new_reference (Py_None
);
930 gdbpy_ref
<> return_result (PyTuple_New (2));
931 if (return_result
== NULL
)
934 if (arg
!= NULL
&& strlen (arg
) > 0)
936 unparsed
.reset (PyUnicode_FromString (arg
));
937 if (unparsed
== NULL
)
941 unparsed
= gdbpy_ref
<>::new_reference (Py_None
);
943 PyTuple_SetItem (return_result
.get (), 0, unparsed
.release ());
944 PyTuple_SetItem (return_result
.get (), 1, result
.release ());
946 return return_result
.release ();
949 /* Parse a string and evaluate it as an expression. */
951 gdbpy_parse_and_eval (PyObject
*self
, PyObject
*args
)
953 const char *expr_str
;
954 struct value
*result
= NULL
;
956 if (!PyArg_ParseTuple (args
, "s", &expr_str
))
961 gdbpy_allow_threads allow_threads
;
962 result
= parse_and_eval (expr_str
);
964 catch (const gdb_exception
&except
)
966 GDB_PY_HANDLE_EXCEPTION (except
);
969 return value_to_value_object (result
);
972 /* Implementation of gdb.invalidate_cached_frames. */
975 gdbpy_invalidate_cached_frames (PyObject
*self
, PyObject
*args
)
977 reinit_frame_cache ();
981 /* Read a file as Python code.
982 This is the extension_language_script_ops.script_sourcer "method".
983 FILE is the file to load. FILENAME is name of the file FILE.
984 This does not throw any errors. If an exception occurs python will print
985 the traceback and clear the error indicator. */
988 gdbpy_source_script (const struct extension_language_defn
*extlang
,
989 FILE *file
, const char *filename
)
991 gdbpy_enter enter_py
;
992 python_run_simple_file (file
, filename
);
997 /* Posting and handling events. */
999 /* A single event. */
1002 gdbpy_event (gdbpy_ref
<> &&func
)
1003 : m_func (func
.release ())
1007 gdbpy_event (gdbpy_event
&&other
) noexcept
1008 : m_func (other
.m_func
)
1010 other
.m_func
= nullptr;
1013 gdbpy_event (const gdbpy_event
&other
)
1014 : m_func (other
.m_func
)
1017 Py_XINCREF (m_func
);
1023 Py_XDECREF (m_func
);
1026 gdbpy_event
&operator= (const gdbpy_event
&other
) = delete;
1030 gdbpy_enter enter_py
;
1032 gdbpy_ref
<> call_result (PyObject_CallObject (m_func
, NULL
));
1033 if (call_result
== NULL
)
1034 gdbpy_print_stack ();
1039 /* The Python event. This is just a callable object. Note that
1040 this is not a gdbpy_ref<>, because we have to take particular
1041 care to only destroy the reference when holding the GIL. */
1045 /* Submit an event to the gdb thread. */
1047 gdbpy_post_event (PyObject
*self
, PyObject
*args
)
1051 if (!PyArg_ParseTuple (args
, "O", &func
))
1054 if (!PyCallable_Check (func
))
1056 PyErr_SetString (PyExc_RuntimeError
,
1057 _("Posted event is not callable"));
1061 gdbpy_ref
<> func_ref
= gdbpy_ref
<>::new_reference (func
);
1062 gdbpy_event
event (std::move (func_ref
));
1063 run_on_main_thread (event
);
1070 /* This is the extension_language_ops.before_prompt "method". */
1072 static enum ext_lang_rc
1073 gdbpy_before_prompt_hook (const struct extension_language_defn
*extlang
,
1074 const char *current_gdb_prompt
)
1076 if (!gdb_python_initialized
)
1077 return EXT_LANG_RC_NOP
;
1079 gdbpy_enter enter_py
;
1081 if (!evregpy_no_listeners_p (gdb_py_events
.before_prompt
)
1082 && evpy_emit_event (NULL
, gdb_py_events
.before_prompt
) < 0)
1083 return EXT_LANG_RC_ERROR
;
1085 if (gdb_python_module
1086 && PyObject_HasAttrString (gdb_python_module
, "prompt_hook"))
1088 gdbpy_ref
<> hook (PyObject_GetAttrString (gdb_python_module
,
1092 gdbpy_print_stack ();
1093 return EXT_LANG_RC_ERROR
;
1096 if (PyCallable_Check (hook
.get ()))
1098 gdbpy_ref
<> current_prompt (PyUnicode_FromString (current_gdb_prompt
));
1099 if (current_prompt
== NULL
)
1101 gdbpy_print_stack ();
1102 return EXT_LANG_RC_ERROR
;
1106 (PyObject_CallFunctionObjArgs (hook
.get (), current_prompt
.get (),
1110 gdbpy_print_stack ();
1111 return EXT_LANG_RC_ERROR
;
1114 /* Return type should be None, or a String. If it is None,
1115 fall through, we will not set a prompt. If it is a
1116 string, set PROMPT. Anything else, set an exception. */
1117 if (result
!= Py_None
&& !PyUnicode_Check (result
.get ()))
1119 PyErr_Format (PyExc_RuntimeError
,
1120 _("Return from prompt_hook must " \
1121 "be either a Python string, or None"));
1122 gdbpy_print_stack ();
1123 return EXT_LANG_RC_ERROR
;
1126 if (result
!= Py_None
)
1128 gdb::unique_xmalloc_ptr
<char>
1129 prompt (python_string_to_host_string (result
.get ()));
1133 gdbpy_print_stack ();
1134 return EXT_LANG_RC_ERROR
;
1137 set_prompt (prompt
.get ());
1138 return EXT_LANG_RC_OK
;
1143 return EXT_LANG_RC_NOP
;
1146 /* This is the extension_language_ops.colorize "method". */
1148 static gdb::optional
<std::string
>
1149 gdbpy_colorize (const std::string
&filename
, const std::string
&contents
)
1151 if (!gdb_python_initialized
)
1154 gdbpy_enter enter_py
;
1156 gdbpy_ref
<> module (PyImport_ImportModule ("gdb.styling"));
1157 if (module
== nullptr)
1159 gdbpy_print_stack ();
1163 if (!PyObject_HasAttrString (module
.get (), "colorize"))
1166 gdbpy_ref
<> hook (PyObject_GetAttrString (module
.get (), "colorize"));
1167 if (hook
== nullptr)
1169 gdbpy_print_stack ();
1173 if (!PyCallable_Check (hook
.get ()))
1176 gdbpy_ref
<> fname_arg (PyUnicode_FromString (filename
.c_str ()));
1177 if (fname_arg
== nullptr)
1179 gdbpy_print_stack ();
1183 /* The pygments library, which is what we currently use for applying
1184 styling, is happy to take input as a bytes object, and to figure out
1185 the encoding for itself. This removes the need for us to figure out
1186 (guess?) at how the content is encoded, which is probably a good
1188 gdbpy_ref
<> contents_arg (PyBytes_FromStringAndSize (contents
.c_str (),
1190 if (contents_arg
== nullptr)
1192 gdbpy_print_stack ();
1196 /* Calling gdb.colorize passing in the filename (a string), and the file
1197 contents (a bytes object). This function should return either a bytes
1198 object, the same contents with styling applied, or None to indicate
1199 that no styling should be performed. */
1200 gdbpy_ref
<> result (PyObject_CallFunctionObjArgs (hook
.get (),
1202 contents_arg
.get (),
1204 if (result
== nullptr)
1206 gdbpy_print_stack ();
1210 if (result
== Py_None
)
1212 else if (!PyBytes_Check (result
.get ()))
1214 PyErr_SetString (PyExc_TypeError
,
1215 _("Return value from gdb.colorize should be a bytes object or None."));
1216 gdbpy_print_stack ();
1220 return std::string (PyBytes_AsString (result
.get ()));
1223 /* This is the extension_language_ops.colorize_disasm "method". */
1225 static gdb::optional
<std::string
>
1226 gdbpy_colorize_disasm (const std::string
&content
, gdbarch
*gdbarch
)
1228 if (!gdb_python_initialized
)
1231 gdbpy_enter enter_py
;
1233 gdbpy_ref
<> module (PyImport_ImportModule ("gdb.styling"));
1234 if (module
== nullptr)
1236 gdbpy_print_stack ();
1240 if (!PyObject_HasAttrString (module
.get (), "colorize_disasm"))
1243 gdbpy_ref
<> hook (PyObject_GetAttrString (module
.get (),
1244 "colorize_disasm"));
1245 if (hook
== nullptr)
1247 gdbpy_print_stack ();
1251 if (!PyCallable_Check (hook
.get ()))
1254 gdbpy_ref
<> content_arg (PyBytes_FromString (content
.c_str ()));
1255 if (content_arg
== nullptr)
1257 gdbpy_print_stack ();
1261 gdbpy_ref
<> gdbarch_arg (gdbarch_to_arch_object (gdbarch
));
1262 if (gdbarch_arg
== nullptr)
1264 gdbpy_print_stack ();
1268 gdbpy_ref
<> result (PyObject_CallFunctionObjArgs (hook
.get (),
1272 if (result
== nullptr)
1274 gdbpy_print_stack ();
1278 if (result
== Py_None
)
1281 if (!PyBytes_Check (result
.get ()))
1283 PyErr_SetString (PyExc_TypeError
,
1284 _("Return value from gdb.colorize_disasm should be a bytes object or None."));
1285 gdbpy_print_stack ();
1289 return std::string (PyBytes_AsString (result
.get ()));
1294 /* Implement gdb.format_address(ADDR,P_SPACE,ARCH). Provide access to
1295 GDB's print_address function from Python. The returned address will
1296 have the format '0x..... <symbol+offset>'. */
1299 gdbpy_format_address (PyObject
*self
, PyObject
*args
, PyObject
*kw
)
1301 static const char *keywords
[] =
1303 "address", "progspace", "architecture", nullptr
1305 PyObject
*addr_obj
= nullptr, *pspace_obj
= nullptr, *arch_obj
= nullptr;
1307 struct gdbarch
*gdbarch
= nullptr;
1308 struct program_space
*pspace
= nullptr;
1310 if (!gdb_PyArg_ParseTupleAndKeywords (args
, kw
, "O|OO", keywords
,
1311 &addr_obj
, &pspace_obj
, &arch_obj
))
1314 if (get_addr_from_python (addr_obj
, &addr
) < 0)
1317 /* If the user passed None for progspace or architecture, then we
1318 consider this to mean "the default". Here we replace references to
1319 None with nullptr, this means that in the following code we only have
1320 to handle the nullptr case. These are only borrowed references, so
1321 no decref is required here. */
1322 if (pspace_obj
== Py_None
)
1323 pspace_obj
= nullptr;
1324 if (arch_obj
== Py_None
)
1327 if (pspace_obj
== nullptr && arch_obj
== nullptr)
1329 /* Grab both of these from the current inferior, and its associated
1330 default architecture. */
1331 pspace
= current_inferior ()->pspace
;
1332 gdbarch
= current_inferior ()->gdbarch
;
1334 else if (arch_obj
== nullptr || pspace_obj
== nullptr)
1336 /* If the user has only given one of program space or architecture,
1337 then don't use the default for the other. Sure we could use the
1338 default, but it feels like there's too much scope of mistakes in
1339 this case, so better to require the user to provide both
1341 PyErr_SetString (PyExc_ValueError
,
1342 _("The architecture and progspace arguments must both be supplied"));
1347 /* The user provided an address, program space, and architecture.
1348 Just check that these objects are valid. */
1349 if (!gdbpy_is_progspace (pspace_obj
))
1351 PyErr_SetString (PyExc_TypeError
,
1352 _("The progspace argument is not a gdb.Progspace object"));
1356 pspace
= progspace_object_to_program_space (pspace_obj
);
1357 if (pspace
== nullptr)
1359 PyErr_SetString (PyExc_ValueError
,
1360 _("The progspace argument is not valid"));
1364 if (!gdbpy_is_architecture (arch_obj
))
1366 PyErr_SetString (PyExc_TypeError
,
1367 _("The architecture argument is not a gdb.Architecture object"));
1371 /* Architectures are never deleted once created, so gdbarch should
1372 never come back as nullptr. */
1373 gdbarch
= arch_object_to_gdbarch (arch_obj
);
1374 gdb_assert (gdbarch
!= nullptr);
1377 /* By this point we should know the program space and architecture we are
1379 gdb_assert (pspace
!= nullptr);
1380 gdb_assert (gdbarch
!= nullptr);
1382 /* Unfortunately print_address relies on the current program space for
1383 its symbol lookup. Temporarily switch now. */
1384 scoped_restore_current_program_space restore_progspace
;
1385 set_current_program_space (pspace
);
1387 /* Format the address, and return it as a string. */
1389 print_address (gdbarch
, addr
, &buf
);
1390 return PyUnicode_FromString (buf
.c_str ());
1397 /* A python function to write a single string using gdb's filtered
1398 output stream . The optional keyword STREAM can be used to write
1399 to a particular stream. The default stream is to gdb_stdout. */
1402 gdbpy_write (PyObject
*self
, PyObject
*args
, PyObject
*kw
)
1405 static const char *keywords
[] = { "text", "stream", NULL
};
1406 int stream_type
= 0;
1408 if (!gdb_PyArg_ParseTupleAndKeywords (args
, kw
, "s|i", keywords
, &arg
,
1414 switch (stream_type
)
1418 gdb_printf (gdb_stderr
, "%s", arg
);
1423 gdb_printf (gdb_stdlog
, "%s", arg
);
1427 gdb_printf (gdb_stdout
, "%s", arg
);
1430 catch (const gdb_exception
&except
)
1432 GDB_PY_HANDLE_EXCEPTION (except
);
1438 /* A python function to flush a gdb stream. The optional keyword
1439 STREAM can be used to flush a particular stream. The default stream
1443 gdbpy_flush (PyObject
*self
, PyObject
*args
, PyObject
*kw
)
1445 static const char *keywords
[] = { "stream", NULL
};
1446 int stream_type
= 0;
1448 if (!gdb_PyArg_ParseTupleAndKeywords (args
, kw
, "|i", keywords
,
1452 switch (stream_type
)
1456 gdb_flush (gdb_stderr
);
1461 gdb_flush (gdb_stdlog
);
1465 gdb_flush (gdb_stdout
);
1471 /* Return non-zero if print-stack is not "none". */
1474 gdbpy_print_python_errors_p (void)
1476 return gdbpy_should_print_stack
!= python_excp_none
;
1479 /* Print a python exception trace, print just a message, or print
1480 nothing and clear the python exception, depending on
1481 gdbpy_should_print_stack. Only call this if a python exception is
1484 gdbpy_print_stack (void)
1487 /* Print "none", just clear exception. */
1488 if (gdbpy_should_print_stack
== python_excp_none
)
1492 /* Print "full" message and backtrace. */
1493 else if (gdbpy_should_print_stack
== python_excp_full
)
1496 /* PyErr_Print doesn't necessarily end output with a newline.
1497 This works because Python's stdout/stderr is fed through
1503 catch (const gdb_exception
&except
)
1507 /* Print "message", just error print message. */
1510 gdbpy_err_fetch fetched_error
;
1512 gdb::unique_xmalloc_ptr
<char> msg
= fetched_error
.to_string ();
1513 gdb::unique_xmalloc_ptr
<char> type
;
1514 /* Don't compute TYPE if MSG already indicates that there is an
1517 type
= fetched_error
.type_to_string ();
1521 if (msg
== NULL
|| type
== NULL
)
1523 /* An error occurred computing the string representation of the
1525 gdb_printf (gdb_stderr
,
1526 _("Error occurred computing Python error" \
1531 gdb_printf (gdb_stderr
, "Python Exception %s: %s\n",
1532 type
.get (), msg
.get ());
1534 catch (const gdb_exception
&except
)
1540 /* Like gdbpy_print_stack, but if the exception is a
1541 KeyboardException, throw a gdb "quit" instead. */
1544 gdbpy_print_stack_or_quit ()
1546 if (PyErr_ExceptionMatches (PyExc_KeyboardInterrupt
))
1549 throw_quit ("Quit");
1551 gdbpy_print_stack ();
1556 /* Return a sequence holding all the Progspaces. */
1559 gdbpy_progspaces (PyObject
*unused1
, PyObject
*unused2
)
1561 gdbpy_ref
<> list (PyList_New (0));
1565 for (struct program_space
*ps
: program_spaces
)
1567 gdbpy_ref
<> item
= pspace_to_pspace_object (ps
);
1569 if (item
== NULL
|| PyList_Append (list
.get (), item
.get ()) == -1)
1573 return list
.release ();
1576 /* Return the name of the current language. */
1579 gdbpy_current_language (PyObject
*unused1
, PyObject
*unused2
)
1581 return host_string_to_python_string (current_language
->name ()).release ();
1587 struct objfile
*gdbpy_current_objfile
;
1589 /* Set the current objfile to OBJFILE and then read FILE named FILENAME
1590 as Python code. This does not throw any errors. If an exception
1591 occurs python will print the traceback and clear the error indicator.
1592 This is the extension_language_script_ops.objfile_script_sourcer
1596 gdbpy_source_objfile_script (const struct extension_language_defn
*extlang
,
1597 struct objfile
*objfile
, FILE *file
,
1598 const char *filename
)
1600 if (!gdb_python_initialized
)
1603 gdbpy_enter
enter_py (objfile
->arch ());
1604 scoped_restore restire_current_objfile
1605 = make_scoped_restore (&gdbpy_current_objfile
, objfile
);
1607 python_run_simple_file (file
, filename
);
1610 /* Set the current objfile to OBJFILE and then execute SCRIPT
1611 as Python code. This does not throw any errors. If an exception
1612 occurs python will print the traceback and clear the error indicator.
1613 This is the extension_language_script_ops.objfile_script_executor
1617 gdbpy_execute_objfile_script (const struct extension_language_defn
*extlang
,
1618 struct objfile
*objfile
, const char *name
,
1621 if (!gdb_python_initialized
)
1624 gdbpy_enter
enter_py (objfile
->arch ());
1625 scoped_restore restire_current_objfile
1626 = make_scoped_restore (&gdbpy_current_objfile
, objfile
);
1628 PyRun_SimpleString (script
);
1631 /* Return the current Objfile, or None if there isn't one. */
1634 gdbpy_get_current_objfile (PyObject
*unused1
, PyObject
*unused2
)
1636 if (! gdbpy_current_objfile
)
1639 return objfile_to_objfile_object (gdbpy_current_objfile
).release ();
1642 /* Compute the list of active python type printers and store them in
1643 EXT_PRINTERS->py_type_printers. The product of this function is used by
1644 gdbpy_apply_type_printers, and freed by gdbpy_free_type_printers.
1645 This is the extension_language_ops.start_type_printers "method". */
1648 gdbpy_start_type_printers (const struct extension_language_defn
*extlang
,
1649 struct ext_lang_type_printers
*ext_printers
)
1651 PyObject
*printers_obj
= NULL
;
1653 if (!gdb_python_initialized
)
1656 gdbpy_enter enter_py
;
1658 gdbpy_ref
<> type_module (PyImport_ImportModule ("gdb.types"));
1659 if (type_module
== NULL
)
1661 gdbpy_print_stack ();
1665 gdbpy_ref
<> func (PyObject_GetAttrString (type_module
.get (),
1666 "get_type_recognizers"));
1669 gdbpy_print_stack ();
1673 printers_obj
= PyObject_CallFunctionObjArgs (func
.get (), (char *) NULL
);
1674 if (printers_obj
== NULL
)
1675 gdbpy_print_stack ();
1677 ext_printers
->py_type_printers
= printers_obj
;
1680 /* If TYPE is recognized by some type printer, store in *PRETTIED_TYPE
1681 a newly allocated string holding the type's replacement name, and return
1682 EXT_LANG_RC_OK. The caller is responsible for freeing the string.
1683 If there's a Python error return EXT_LANG_RC_ERROR.
1684 Otherwise, return EXT_LANG_RC_NOP.
1685 This is the extension_language_ops.apply_type_printers "method". */
1687 static enum ext_lang_rc
1688 gdbpy_apply_type_printers (const struct extension_language_defn
*extlang
,
1689 const struct ext_lang_type_printers
*ext_printers
,
1690 struct type
*type
, char **prettied_type
)
1692 PyObject
*printers_obj
= (PyObject
*) ext_printers
->py_type_printers
;
1693 gdb::unique_xmalloc_ptr
<char> result
;
1695 if (printers_obj
== NULL
)
1696 return EXT_LANG_RC_NOP
;
1698 if (!gdb_python_initialized
)
1699 return EXT_LANG_RC_NOP
;
1701 gdbpy_enter enter_py
;
1703 gdbpy_ref
<> type_obj (type_to_type_object (type
));
1704 if (type_obj
== NULL
)
1706 gdbpy_print_stack ();
1707 return EXT_LANG_RC_ERROR
;
1710 gdbpy_ref
<> type_module (PyImport_ImportModule ("gdb.types"));
1711 if (type_module
== NULL
)
1713 gdbpy_print_stack ();
1714 return EXT_LANG_RC_ERROR
;
1717 gdbpy_ref
<> func (PyObject_GetAttrString (type_module
.get (),
1718 "apply_type_recognizers"));
1721 gdbpy_print_stack ();
1722 return EXT_LANG_RC_ERROR
;
1725 gdbpy_ref
<> result_obj (PyObject_CallFunctionObjArgs (func
.get (),
1729 if (result_obj
== NULL
)
1731 gdbpy_print_stack ();
1732 return EXT_LANG_RC_ERROR
;
1735 if (result_obj
== Py_None
)
1736 return EXT_LANG_RC_NOP
;
1738 result
= python_string_to_host_string (result_obj
.get ());
1741 gdbpy_print_stack ();
1742 return EXT_LANG_RC_ERROR
;
1745 *prettied_type
= result
.release ();
1746 return EXT_LANG_RC_OK
;
1749 /* Free the result of start_type_printers.
1750 This is the extension_language_ops.free_type_printers "method". */
1753 gdbpy_free_type_printers (const struct extension_language_defn
*extlang
,
1754 struct ext_lang_type_printers
*ext_printers
)
1756 PyObject
*printers
= (PyObject
*) ext_printers
->py_type_printers
;
1758 if (printers
== NULL
)
1761 if (!gdb_python_initialized
)
1764 gdbpy_enter enter_py
;
1765 Py_DECREF (printers
);
1768 #else /* HAVE_PYTHON */
1770 /* Dummy implementation of the gdb "python-interactive" and "python"
1774 python_interactive_command (const char *arg
, int from_tty
)
1776 arg
= skip_spaces (arg
);
1778 error (_("Python scripting is not supported in this copy of GDB."));
1781 counted_command_line l
= get_command_line (python_control
, "");
1783 execute_control_command_untraced (l
.get ());
1788 python_command (const char *arg
, int from_tty
)
1790 python_interactive_command (arg
, from_tty
);
1793 #endif /* HAVE_PYTHON */
1795 /* When this is turned on before Python is initialised then Python will
1796 ignore any environment variables related to Python. This is equivalent
1797 to passing `-E' to the python program. */
1798 static bool python_ignore_environment
= false;
1800 /* Implement 'show python ignore-environment'. */
1803 show_python_ignore_environment (struct ui_file
*file
, int from_tty
,
1804 struct cmd_list_element
*c
, const char *value
)
1806 gdb_printf (file
, _("Python's ignore-environment setting is %s.\n"),
1810 /* Implement 'set python ignore-environment'. This sets Python's internal
1811 flag no matter when the command is issued, however, if this is used
1812 after Py_Initialize has been called then most of the environment will
1813 already have been read. */
1816 set_python_ignore_environment (const char *args
, int from_tty
,
1817 struct cmd_list_element
*c
)
1820 /* Py_IgnoreEnvironmentFlag is deprecated in Python 3.12. Disable
1821 its usage in Python 3.10 and above since the PyConfig mechanism
1822 is now (also) used in 3.10 and higher. See do_start_initialization()
1824 #if PY_VERSION_HEX < 0x030a0000
1825 Py_IgnoreEnvironmentFlag
= python_ignore_environment
? 1 : 0;
1830 /* When this is turned on before Python is initialised then Python will
1831 not write `.pyc' files on import of a module. */
1832 static enum auto_boolean python_dont_write_bytecode
= AUTO_BOOLEAN_AUTO
;
1834 /* Implement 'show python dont-write-bytecode'. */
1837 show_python_dont_write_bytecode (struct ui_file
*file
, int from_tty
,
1838 struct cmd_list_element
*c
, const char *value
)
1840 if (python_dont_write_bytecode
== AUTO_BOOLEAN_AUTO
)
1842 const char *auto_string
1843 = (python_ignore_environment
1844 || getenv ("PYTHONDONTWRITEBYTECODE") == nullptr) ? "off" : "on";
1847 _("Python's dont-write-bytecode setting is %s (currently %s).\n"),
1848 value
, auto_string
);
1851 gdb_printf (file
, _("Python's dont-write-bytecode setting is %s.\n"),
1856 /* Return value to assign to PyConfig.write_bytecode or, when
1857 negated (via !), Py_DontWriteBytecodeFlag. Py_DontWriteBytecodeFlag
1858 is deprecated in Python 3.12. */
1861 python_write_bytecode ()
1865 if (python_dont_write_bytecode
== AUTO_BOOLEAN_AUTO
)
1867 if (python_ignore_environment
)
1871 const char *pdwbc
= getenv ("PYTHONDONTWRITEBYTECODE");
1872 wbc
= (pdwbc
== nullptr || pdwbc
[0] == '\0') ? 1 : 0;
1876 wbc
= python_dont_write_bytecode
== AUTO_BOOLEAN_TRUE
? 0 : 1;
1880 #endif /* HAVE_PYTHON */
1882 /* Implement 'set python dont-write-bytecode'. This sets Python's internal
1883 flag no matter when the command is issued, however, if this is used
1884 after Py_Initialize has been called then many modules could already
1885 have been imported and their byte code written out. */
1888 set_python_dont_write_bytecode (const char *args
, int from_tty
,
1889 struct cmd_list_element
*c
)
1892 /* Py_DontWriteBytecodeFlag is deprecated in Python 3.12. Disable
1893 its usage in Python 3.10 and above since the PyConfig mechanism
1894 is now (also) used in 3.10 and higher. See do_start_initialization()
1896 #if PY_VERSION_HEX < 0x030a0000
1897 Py_DontWriteBytecodeFlag
= !python_write_bytecode ();
1899 #endif /* HAVE_PYTHON */
1904 /* Lists for 'set python' commands. */
1906 static struct cmd_list_element
*user_set_python_list
;
1907 static struct cmd_list_element
*user_show_python_list
;
1909 /* Initialize the Python code. */
1913 /* This is installed as a final cleanup and cleans up the
1914 interpreter. This lets Python's 'atexit' work. */
1917 finalize_python (void *ignore
)
1919 struct active_ext_lang_state
*previous_active
;
1921 /* We don't use ensure_python_env here because if we ever ran the
1922 cleanup, gdb would crash -- because the cleanup calls into the
1923 Python interpreter, which we are about to destroy. It seems
1924 clearer to make the needed calls explicitly here than to create a
1925 cleanup and then mysteriously discard it. */
1927 /* This is only called as a final cleanup so we can assume the active
1928 SIGINT handler is gdb's. We still need to tell it to notify Python. */
1929 previous_active
= set_active_ext_lang (&extension_language_python
);
1931 (void) PyGILState_Ensure ();
1932 gdbpy_enter::finalize ();
1934 gdbpy_finalize_micommands ();
1938 gdb_python_initialized
= false;
1939 restore_active_ext_lang (previous_active
);
1942 static struct PyModuleDef python_GdbModuleDef
=
1944 PyModuleDef_HEAD_INIT
,
1955 /* This is called via the PyImport_AppendInittab mechanism called
1956 during initialization, to make the built-in _gdb module known to
1958 PyMODINIT_FUNC
init__gdb_module (void);
1960 init__gdb_module (void)
1962 return PyModule_Create (&python_GdbModuleDef
);
1965 /* Emit a gdb.GdbExitingEvent, return a negative value if there are any
1966 errors, otherwise, return 0. */
1969 emit_exiting_event (int exit_code
)
1971 if (evregpy_no_listeners_p (gdb_py_events
.gdb_exiting
))
1974 gdbpy_ref
<> event_obj
= create_event_object (&gdb_exiting_event_object_type
);
1975 if (event_obj
== nullptr)
1978 gdbpy_ref
<> code
= gdb_py_object_from_longest (exit_code
);
1979 if (evpy_add_attribute (event_obj
.get (), "exit_code", code
.get ()) < 0)
1982 return evpy_emit_event (event_obj
.get (), gdb_py_events
.gdb_exiting
);
1985 /* Callback for the gdb_exiting observable. EXIT_CODE is the value GDB
1989 gdbpy_gdb_exiting (int exit_code
)
1991 if (!gdb_python_initialized
)
1994 gdbpy_enter enter_py
;
1996 if (emit_exiting_event (exit_code
) < 0)
1997 gdbpy_print_stack ();
2001 do_start_initialization ()
2003 /* Define all internal modules. These are all imported (and thus
2004 created) during initialization. */
2005 struct _inittab mods
[] =
2007 { "_gdb", init__gdb_module
},
2008 { "_gdbevents", gdbpy_events_mod_func
},
2009 { nullptr, nullptr }
2012 if (PyImport_ExtendInittab (mods
) < 0)
2015 #ifdef WITH_PYTHON_PATH
2016 /* Work around problem where python gets confused about where it is,
2017 and then can't find its libraries, etc.
2018 NOTE: Python assumes the following layout:
2020 /foo/lib/pythonX.Y/...
2021 This must be done before calling Py_Initialize. */
2022 gdb::unique_xmalloc_ptr
<char> progname
2023 (concat (ldirname (python_libdir
.c_str ()).c_str (), SLASH_STRING
, "bin",
2024 SLASH_STRING
, "python", (char *) NULL
));
2025 /* Python documentation indicates that the memory given
2026 to Py_SetProgramName cannot be freed. However, it seems that
2027 at least Python 3.7.4 Py_SetProgramName takes a copy of the
2028 given program_name. Making progname_copy static and not release
2029 the memory avoids a leak report for Python versions that duplicate
2030 program_name, and respect the requirement of Py_SetProgramName
2031 for Python versions that do not duplicate program_name. */
2032 static wchar_t *progname_copy
;
2034 std::string oldloc
= setlocale (LC_ALL
, NULL
);
2035 setlocale (LC_ALL
, "");
2036 size_t progsize
= strlen (progname
.get ());
2037 progname_copy
= XNEWVEC (wchar_t, progsize
+ 1);
2038 size_t count
= mbstowcs (progname_copy
, progname
.get (), progsize
+ 1);
2039 if (count
== (size_t) -1)
2041 fprintf (stderr
, "Could not convert python path to string\n");
2044 setlocale (LC_ALL
, oldloc
.c_str ());
2046 /* Py_SetProgramName was deprecated in Python 3.11. Use PyConfig
2047 mechanisms for Python 3.10 and newer. */
2048 #if PY_VERSION_HEX < 0x030a0000
2049 /* Note that Py_SetProgramName expects the string it is passed to
2050 remain alive for the duration of the program's execution, so
2051 it is not freed after this call. */
2052 Py_SetProgramName (progname_copy
);
2057 PyConfig_InitPythonConfig (&config
);
2058 PyStatus status
= PyConfig_SetString (&config
, &config
.program_name
,
2060 if (PyStatus_Exception (status
))
2063 config
.write_bytecode
= python_write_bytecode ();
2064 config
.use_environment
= !python_ignore_environment
;
2066 status
= PyConfig_Read (&config
);
2067 if (PyStatus_Exception (status
))
2070 status
= Py_InitializeFromConfig (&config
);
2073 PyConfig_Clear (&config
);
2074 if (PyStatus_Exception (status
))
2081 #if PY_VERSION_HEX < 0x03090000
2082 /* PyEval_InitThreads became deprecated in Python 3.9 and will
2083 be removed in Python 3.11. Prior to Python 3.7, this call was
2084 required to initialize the GIL. */
2085 PyEval_InitThreads ();
2088 gdb_module
= PyImport_ImportModule ("_gdb");
2089 if (gdb_module
== NULL
)
2092 if (PyModule_AddStringConstant (gdb_module
, "VERSION", version
) < 0
2093 || PyModule_AddStringConstant (gdb_module
, "HOST_CONFIG", host_name
) < 0
2094 || PyModule_AddStringConstant (gdb_module
, "TARGET_CONFIG",
2098 /* Add stream constants. */
2099 if (PyModule_AddIntConstant (gdb_module
, "STDOUT", 0) < 0
2100 || PyModule_AddIntConstant (gdb_module
, "STDERR", 1) < 0
2101 || PyModule_AddIntConstant (gdb_module
, "STDLOG", 2) < 0)
2104 gdbpy_gdb_error
= PyErr_NewException ("gdb.error", PyExc_RuntimeError
, NULL
);
2105 if (gdbpy_gdb_error
== NULL
2106 || gdb_pymodule_addobject (gdb_module
, "error", gdbpy_gdb_error
) < 0)
2109 gdbpy_gdb_memory_error
= PyErr_NewException ("gdb.MemoryError",
2110 gdbpy_gdb_error
, NULL
);
2111 if (gdbpy_gdb_memory_error
== NULL
2112 || gdb_pymodule_addobject (gdb_module
, "MemoryError",
2113 gdbpy_gdb_memory_error
) < 0)
2116 gdbpy_gdberror_exc
= PyErr_NewException ("gdb.GdbError", NULL
, NULL
);
2117 if (gdbpy_gdberror_exc
== NULL
2118 || gdb_pymodule_addobject (gdb_module
, "GdbError",
2119 gdbpy_gdberror_exc
) < 0)
2122 gdbpy_initialize_gdb_readline ();
2124 if (gdbpy_initialize_auto_load () < 0
2125 || gdbpy_initialize_values () < 0
2126 || gdbpy_initialize_disasm () < 0
2127 || gdbpy_initialize_frames () < 0
2128 || gdbpy_initialize_commands () < 0
2129 || gdbpy_initialize_instruction () < 0
2130 || gdbpy_initialize_record () < 0
2131 || gdbpy_initialize_btrace () < 0
2132 || gdbpy_initialize_symbols () < 0
2133 || gdbpy_initialize_symtabs () < 0
2134 || gdbpy_initialize_blocks () < 0
2135 || gdbpy_initialize_functions () < 0
2136 || gdbpy_initialize_parameters () < 0
2137 || gdbpy_initialize_types () < 0
2138 || gdbpy_initialize_pspace () < 0
2139 || gdbpy_initialize_objfile () < 0
2140 || gdbpy_initialize_breakpoints () < 0
2141 || gdbpy_initialize_breakpoint_locations () < 0
2142 || gdbpy_initialize_finishbreakpoints () < 0
2143 || gdbpy_initialize_lazy_string () < 0
2144 || gdbpy_initialize_linetable () < 0
2145 || gdbpy_initialize_thread () < 0
2146 || gdbpy_initialize_inferior () < 0
2147 || gdbpy_initialize_eventregistry () < 0
2148 || gdbpy_initialize_event () < 0
2149 || gdbpy_initialize_arch () < 0
2150 || gdbpy_initialize_registers () < 0
2151 || gdbpy_initialize_xmethods () < 0
2152 || gdbpy_initialize_unwind () < 0
2153 || gdbpy_initialize_membuf () < 0
2154 || gdbpy_initialize_connection () < 0
2155 || gdbpy_initialize_tui () < 0
2156 || gdbpy_initialize_micommands () < 0)
2159 #define GDB_PY_DEFINE_EVENT_TYPE(name, py_name, doc, base) \
2160 if (gdbpy_initialize_event_generic (&name##_event_object_type, py_name) < 0) \
2162 #include "py-event-types.def"
2163 #undef GDB_PY_DEFINE_EVENT_TYPE
2165 gdbpy_to_string_cst
= PyUnicode_FromString ("to_string");
2166 if (gdbpy_to_string_cst
== NULL
)
2168 gdbpy_children_cst
= PyUnicode_FromString ("children");
2169 if (gdbpy_children_cst
== NULL
)
2171 gdbpy_display_hint_cst
= PyUnicode_FromString ("display_hint");
2172 if (gdbpy_display_hint_cst
== NULL
)
2174 gdbpy_doc_cst
= PyUnicode_FromString ("__doc__");
2175 if (gdbpy_doc_cst
== NULL
)
2177 gdbpy_enabled_cst
= PyUnicode_FromString ("enabled");
2178 if (gdbpy_enabled_cst
== NULL
)
2180 gdbpy_value_cst
= PyUnicode_FromString ("value");
2181 if (gdbpy_value_cst
== NULL
)
2184 gdb::observers::gdb_exiting
.attach (gdbpy_gdb_exiting
, "python");
2186 /* Release the GIL while gdb runs. */
2187 PyEval_SaveThread ();
2189 make_final_cleanup (finalize_python
, NULL
);
2191 /* Only set this when initialization has succeeded. */
2192 gdb_python_initialized
= 1;
2197 namespace selftests
{
2199 /* Entry point for python unit tests. */
2204 #define CMD(S) execute_command_to_string (S, "python print(5)", 0, true)
2209 SELF_CHECK (output
== "5\n");
2212 bool saw_exception
= false;
2214 scoped_restore reset_gdb_python_initialized
2215 = make_scoped_restore (&gdb_python_initialized
, 0);
2220 catch (const gdb_exception
&e
)
2222 saw_exception
= true;
2223 SELF_CHECK (e
.reason
== RETURN_ERROR
);
2224 SELF_CHECK (e
.error
== GENERIC_ERROR
);
2225 SELF_CHECK (*e
.message
== "Python not initialized");
2227 SELF_CHECK (saw_exception
);
2228 SELF_CHECK (output
.empty ());
2231 saw_exception
= false;
2233 scoped_restore save_hook
2234 = make_scoped_restore (&hook_set_active_ext_lang
,
2235 []() { raise (SIGINT
); });
2240 catch (const gdb_exception
&e
)
2242 saw_exception
= true;
2243 SELF_CHECK (e
.reason
== RETURN_ERROR
);
2244 SELF_CHECK (e
.error
== GENERIC_ERROR
);
2245 SELF_CHECK (*e
.message
== "Error while executing Python code.");
2247 SELF_CHECK (saw_exception
);
2248 std::string
ref_output_0 ("Traceback (most recent call last):\n"
2249 " File \"<string>\", line 0, in <module>\n"
2250 "KeyboardInterrupt\n");
2251 std::string
ref_output_1 ("Traceback (most recent call last):\n"
2252 " File \"<string>\", line 1, in <module>\n"
2253 "KeyboardInterrupt\n");
2254 SELF_CHECK (output
== ref_output_0
|| output
== ref_output_1
);
2262 } // namespace selftests
2263 #endif /* GDB_SELF_TEST */
2265 #endif /* HAVE_PYTHON */
2268 cmd_list_element
*python_cmd_element
= nullptr;
2270 void _initialize_python ();
2272 _initialize_python ()
2274 cmd_list_element
*python_interactive_cmd
2275 = add_com ("python-interactive", class_obscure
,
2276 python_interactive_command
,
2279 Start an interactive Python prompt.\n\
2281 To return to GDB, type the EOF character (e.g., Ctrl-D on an empty\n\
2284 Alternatively, a single-line Python command can be given as an\n\
2285 argument, and if the command is an expression, the result will be\n\
2286 printed. For example:\n\
2288 (gdb) python-interactive 2 + 3\n\
2290 #else /* HAVE_PYTHON */
2292 Start a Python interactive prompt.\n\
2294 Python scripting is not supported in this copy of GDB.\n\
2295 This command is only a placeholder.")
2296 #endif /* HAVE_PYTHON */
2298 add_com_alias ("pi", python_interactive_cmd
, class_obscure
, 1);
2300 python_cmd_element
= add_com ("python", class_obscure
, python_command
,
2303 Evaluate a Python command.\n\
2305 The command can be given as an argument, for instance:\n\
2307 python print (23)\n\
2309 If no argument is given, the following lines are read and used\n\
2310 as the Python commands. Type a line containing \"end\" to indicate\n\
2311 the end of the command.")
2312 #else /* HAVE_PYTHON */
2314 Evaluate a Python command.\n\
2316 Python scripting is not supported in this copy of GDB.\n\
2317 This command is only a placeholder.")
2318 #endif /* HAVE_PYTHON */
2320 add_com_alias ("py", python_cmd_element
, class_obscure
, 1);
2322 /* Add set/show python print-stack. */
2323 add_setshow_prefix_cmd ("python", no_class
,
2324 _("Prefix command for python preference settings."),
2325 _("Prefix command for python preference settings."),
2326 &user_set_python_list
, &user_show_python_list
,
2327 &setlist
, &showlist
);
2329 add_setshow_enum_cmd ("print-stack", no_class
, python_excp_enums
,
2330 &gdbpy_should_print_stack
, _("\
2331 Set mode for Python stack dump on error."), _("\
2332 Show the mode of Python stack printing on error."), _("\
2333 none == no stack or message will be printed.\n\
2334 full == a message and a stack will be printed.\n\
2335 message == an error message without a stack will be printed."),
2337 &user_set_python_list
,
2338 &user_show_python_list
);
2340 add_setshow_boolean_cmd ("ignore-environment", no_class
,
2341 &python_ignore_environment
, _("\
2342 Set whether the Python interpreter should ignore environment variables."), _(" \
2343 Show whether the Python interpreter showlist ignore environment variables."), _(" \
2344 When enabled GDB's Python interpreter will ignore any Python related\n \
2345 flags in the environment. This is equivalent to passing `-E' to a\n \
2346 python executable."),
2347 set_python_ignore_environment
,
2348 show_python_ignore_environment
,
2349 &user_set_python_list
,
2350 &user_show_python_list
);
2352 add_setshow_auto_boolean_cmd ("dont-write-bytecode", no_class
,
2353 &python_dont_write_bytecode
, _("\
2354 Set whether the Python interpreter should avoid byte-compiling python modules."), _("\
2355 Show whether the Python interpreter should avoid byte-compiling python modules."), _("\
2356 When enabled, GDB's embedded Python interpreter won't byte-compile python\n\
2357 modules. In order to take effect, this setting must be enabled in an early\n\
2358 initialization file, i.e. those run via the --early-init-eval-command or\n\
2359 -eix command line options. A 'set python dont-write-bytecode on' command\n\
2360 can also be issued directly from the GDB command line via the\n\
2361 --early-init-eval-command or -eiex command line options.\n\
2363 This setting defaults to 'auto'. In this mode, provided the 'python\n\
2364 ignore-environment' setting is 'off', the environment variable\n\
2365 PYTHONDONTWRITEBYTECODE is examined to determine whether or not to\n\
2366 byte-compile python modules. PYTHONDONTWRITEBYTECODE is considered to be\n\
2367 off/disabled either when set to the empty string or when the\n\
2368 environment variable doesn't exist. All other settings, including those\n\
2369 which don't seem to make sense, indicate that it's on/enabled."),
2370 set_python_dont_write_bytecode
,
2371 show_python_dont_write_bytecode
,
2372 &user_set_python_list
,
2373 &user_show_python_list
);
2377 selftests::register_test ("python", selftests::test_python
);
2378 #endif /* GDB_SELF_TEST */
2379 #endif /* HAVE_PYTHON */
2384 /* Helper function for gdbpy_initialize. This does the work and then
2385 returns false if an error has occurred and must be displayed, or true on
2389 do_initialize (const struct extension_language_defn
*extlang
)
2394 /* Add the initial data-directory to sys.path. */
2396 std::string gdb_pythondir
= (std::string (gdb_datadir
) + SLASH_STRING
2399 sys_path
= PySys_GetObject ("path");
2401 /* PySys_SetPath was deprecated in Python 3.11. Disable this
2402 deprecated code for Python 3.10 and newer. Also note that this
2403 ifdef eliminates potential initialization of sys.path via
2404 PySys_SetPath. My (kevinb's) understanding of PEP 587 suggests
2405 that it's not necessary due to module_search_paths being
2406 initialized to an empty list following any of the PyConfig
2407 initialization functions. If it does turn out that some kind of
2408 initialization is still needed, it should be added to the
2409 PyConfig-based initialization in do_start_initialize(). */
2410 #if PY_VERSION_HEX < 0x030a0000
2411 /* If sys.path is not defined yet, define it first. */
2412 if (!(sys_path
&& PyList_Check (sys_path
)))
2414 PySys_SetPath (L
"");
2415 sys_path
= PySys_GetObject ("path");
2418 if (sys_path
&& PyList_Check (sys_path
))
2420 gdbpy_ref
<> pythondir (PyUnicode_FromString (gdb_pythondir
.c_str ()));
2421 if (pythondir
== NULL
|| PyList_Insert (sys_path
, 0, pythondir
.get ()))
2427 /* Import the gdb module to finish the initialization, and
2428 add it to __main__ for convenience. */
2429 m
= PyImport_AddModule ("__main__");
2433 /* Keep the reference to gdb_python_module since it is in a global
2435 gdb_python_module
= PyImport_ImportModule ("gdb");
2436 if (gdb_python_module
== NULL
)
2438 gdbpy_print_stack ();
2439 /* This is passed in one call to warning so that blank lines aren't
2440 inserted between each line of text. */
2442 "Could not load the Python gdb module from `%s'.\n"
2443 "Limited Python support is available from the _gdb module.\n"
2444 "Suggest passing --data-directory=/path/to/gdb/data-directory."),
2445 gdb_pythondir
.c_str ());
2446 /* We return "success" here as we've already emitted the
2451 return gdb_pymodule_addobject (m
, "gdb", gdb_python_module
) >= 0;
2454 /* Perform Python initialization. This will be called after GDB has
2455 performed all of its own initialization. This is the
2456 extension_language_ops.initialize "method". */
2459 gdbpy_initialize (const struct extension_language_defn
*extlang
)
2461 if (!do_start_initialization () && PyErr_Occurred ())
2462 gdbpy_print_stack ();
2464 gdbpy_enter enter_py
;
2466 if (!do_initialize (extlang
))
2468 gdbpy_print_stack ();
2469 warning (_("internal error: Unhandled Python exception"));
2473 /* Return non-zero if Python has successfully initialized.
2474 This is the extension_languages_ops.initialized "method". */
2477 gdbpy_initialized (const struct extension_language_defn
*extlang
)
2479 return gdb_python_initialized
;
2482 PyMethodDef python_GdbMethods
[] =
2484 { "history", gdbpy_history
, METH_VARARGS
,
2485 "Get a value from history" },
2486 { "add_history", gdbpy_add_history
, METH_VARARGS
,
2487 "Add a value to the value history list" },
2488 { "history_count", gdbpy_history_count
, METH_NOARGS
,
2489 "Return an integer, the number of values in GDB's value history" },
2490 { "execute", (PyCFunction
) execute_gdb_command
, METH_VARARGS
| METH_KEYWORDS
,
2491 "execute (command [, from_tty] [, to_string]) -> [String]\n\
2492 Evaluate command, a string, as a gdb CLI command. Optionally returns\n\
2493 a Python String containing the output of the command if to_string is\n\
2495 { "parameter", gdbpy_parameter
, METH_VARARGS
,
2496 "Return a gdb parameter's value" },
2498 { "breakpoints", gdbpy_breakpoints
, METH_NOARGS
,
2499 "Return a tuple of all breakpoint objects" },
2501 { "default_visualizer", gdbpy_default_visualizer
, METH_VARARGS
,
2502 "Find the default visualizer for a Value." },
2504 { "progspaces", gdbpy_progspaces
, METH_NOARGS
,
2505 "Return a sequence of all progspaces." },
2507 { "current_objfile", gdbpy_get_current_objfile
, METH_NOARGS
,
2508 "Return the current Objfile being loaded, or None." },
2510 { "newest_frame", gdbpy_newest_frame
, METH_NOARGS
,
2511 "newest_frame () -> gdb.Frame.\n\
2512 Return the newest frame object." },
2513 { "selected_frame", gdbpy_selected_frame
, METH_NOARGS
,
2514 "selected_frame () -> gdb.Frame.\n\
2515 Return the selected frame object." },
2516 { "frame_stop_reason_string", gdbpy_frame_stop_reason_string
, METH_VARARGS
,
2517 "stop_reason_string (Integer) -> String.\n\
2518 Return a string explaining unwind stop reason." },
2520 { "start_recording", gdbpy_start_recording
, METH_VARARGS
,
2521 "start_recording ([method] [, format]) -> gdb.Record.\n\
2522 Start recording with the given method. If no method is given, will fall back\n\
2523 to the system default method. If no format is given, will fall back to the\n\
2524 default format for the given method."},
2525 { "current_recording", gdbpy_current_recording
, METH_NOARGS
,
2526 "current_recording () -> gdb.Record.\n\
2527 Return current recording object." },
2528 { "stop_recording", gdbpy_stop_recording
, METH_NOARGS
,
2529 "stop_recording () -> None.\n\
2530 Stop current recording." },
2532 { "lookup_type", (PyCFunction
) gdbpy_lookup_type
,
2533 METH_VARARGS
| METH_KEYWORDS
,
2534 "lookup_type (name [, block]) -> type\n\
2535 Return a Type corresponding to the given name." },
2536 { "lookup_symbol", (PyCFunction
) gdbpy_lookup_symbol
,
2537 METH_VARARGS
| METH_KEYWORDS
,
2538 "lookup_symbol (name [, block] [, domain]) -> (symbol, is_field_of_this)\n\
2539 Return a tuple with the symbol corresponding to the given name (or None) and\n\
2540 a boolean indicating if name is a field of the current implied argument\n\
2541 `this' (when the current language is object-oriented)." },
2542 { "lookup_global_symbol", (PyCFunction
) gdbpy_lookup_global_symbol
,
2543 METH_VARARGS
| METH_KEYWORDS
,
2544 "lookup_global_symbol (name [, domain]) -> symbol\n\
2545 Return the symbol corresponding to the given name (or None)." },
2546 { "lookup_static_symbol", (PyCFunction
) gdbpy_lookup_static_symbol
,
2547 METH_VARARGS
| METH_KEYWORDS
,
2548 "lookup_static_symbol (name [, domain]) -> symbol\n\
2549 Return the static-linkage symbol corresponding to the given name (or None)." },
2550 { "lookup_static_symbols", (PyCFunction
) gdbpy_lookup_static_symbols
,
2551 METH_VARARGS
| METH_KEYWORDS
,
2552 "lookup_static_symbols (name [, domain]) -> symbol\n\
2553 Return a list of all static-linkage symbols corresponding to the given name." },
2555 { "lookup_objfile", (PyCFunction
) gdbpy_lookup_objfile
,
2556 METH_VARARGS
| METH_KEYWORDS
,
2557 "lookup_objfile (name, [by_build_id]) -> objfile\n\
2558 Look up the specified objfile.\n\
2559 If by_build_id is True, the objfile is looked up by using name\n\
2560 as its build id." },
2562 { "decode_line", gdbpy_decode_line
, METH_VARARGS
,
2563 "decode_line (String) -> Tuple. Decode a string argument the way\n\
2564 that 'break' or 'edit' does. Return a tuple containing two elements.\n\
2565 The first element contains any unparsed portion of the String parameter\n\
2566 (or None if the string was fully parsed). The second element contains\n\
2567 a tuple that contains all the locations that match, represented as\n\
2568 gdb.Symtab_and_line objects (or None)."},
2569 { "parse_and_eval", gdbpy_parse_and_eval
, METH_VARARGS
,
2570 "parse_and_eval (String) -> Value.\n\
2571 Parse String as an expression, evaluate it, and return the result as a Value."
2574 { "post_event", gdbpy_post_event
, METH_VARARGS
,
2575 "Post an event into gdb's event loop." },
2577 { "target_charset", gdbpy_target_charset
, METH_NOARGS
,
2578 "target_charset () -> string.\n\
2579 Return the name of the current target charset." },
2580 { "target_wide_charset", gdbpy_target_wide_charset
, METH_NOARGS
,
2581 "target_wide_charset () -> string.\n\
2582 Return the name of the current target wide charset." },
2583 { "host_charset", gdbpy_host_charset
, METH_NOARGS
,
2584 "host_charset () -> string.\n\
2585 Return the name of the current host charset." },
2586 { "rbreak", (PyCFunction
) gdbpy_rbreak
, METH_VARARGS
| METH_KEYWORDS
,
2587 "rbreak (Regex) -> List.\n\
2588 Return a Tuple containing gdb.Breakpoint objects that match the given Regex." },
2589 { "string_to_argv", gdbpy_string_to_argv
, METH_VARARGS
,
2590 "string_to_argv (String) -> Array.\n\
2591 Parse String and return an argv-like array.\n\
2592 Arguments are separate by spaces and may be quoted."
2594 { "write", (PyCFunction
)gdbpy_write
, METH_VARARGS
| METH_KEYWORDS
,
2595 "Write a string using gdb's filtered stream." },
2596 { "flush", (PyCFunction
)gdbpy_flush
, METH_VARARGS
| METH_KEYWORDS
,
2597 "Flush gdb's filtered stdout stream." },
2598 { "selected_thread", gdbpy_selected_thread
, METH_NOARGS
,
2599 "selected_thread () -> gdb.InferiorThread.\n\
2600 Return the selected thread object." },
2601 { "selected_inferior", gdbpy_selected_inferior
, METH_NOARGS
,
2602 "selected_inferior () -> gdb.Inferior.\n\
2603 Return the selected inferior object." },
2604 { "inferiors", gdbpy_inferiors
, METH_NOARGS
,
2605 "inferiors () -> (gdb.Inferior, ...).\n\
2606 Return a tuple containing all inferiors." },
2608 { "invalidate_cached_frames", gdbpy_invalidate_cached_frames
, METH_NOARGS
,
2609 "invalidate_cached_frames () -> None.\n\
2610 Invalidate any cached frame objects in gdb.\n\
2611 Intended for internal use only." },
2613 { "convenience_variable", gdbpy_convenience_variable
, METH_VARARGS
,
2614 "convenience_variable (NAME) -> value.\n\
2615 Return the value of the convenience variable $NAME,\n\
2616 or None if not set." },
2617 { "set_convenience_variable", gdbpy_set_convenience_variable
, METH_VARARGS
,
2618 "convenience_variable (NAME, VALUE) -> None.\n\
2619 Set the value of the convenience variable $NAME." },
2622 { "register_window_type", (PyCFunction
) gdbpy_register_tui_window
,
2623 METH_VARARGS
| METH_KEYWORDS
,
2624 "register_window_type (NAME, CONSTRUCSTOR) -> None\n\
2625 Register a TUI window constructor." },
2628 { "architecture_names", gdbpy_all_architecture_names
, METH_NOARGS
,
2629 "architecture_names () -> List.\n\
2630 Return a list of all the architecture names GDB understands." },
2632 { "connections", gdbpy_connections
, METH_NOARGS
,
2633 "connections () -> List.\n\
2634 Return a list of gdb.TargetConnection objects." },
2636 { "format_address", (PyCFunction
) gdbpy_format_address
,
2637 METH_VARARGS
| METH_KEYWORDS
,
2638 "format_address (ADDRESS, PROG_SPACE, ARCH) -> String.\n\
2639 Format ADDRESS, an address within PROG_SPACE, a gdb.Progspace, using\n\
2640 ARCH, a gdb.Architecture to determine the address size. The format of\n\
2641 the returned string is 'ADDRESS <SYMBOL+OFFSET>' without the quotes." },
2643 { "current_language", gdbpy_current_language
, METH_NOARGS
,
2644 "current_language () -> string\n\
2645 Return the name of the currently selected language." },
2647 { "print_options", gdbpy_print_options
, METH_NOARGS
,
2648 "print_options () -> dict\n\
2649 Return the current print options." },
2651 {NULL
, NULL
, 0, NULL
}
2654 /* Define all the event objects. */
2655 #define GDB_PY_DEFINE_EVENT_TYPE(name, py_name, doc, base) \
2656 PyTypeObject name##_event_object_type \
2657 CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object") \
2659 PyVarObject_HEAD_INIT (NULL, 0) \
2660 "gdb." py_name, /* tp_name */ \
2661 sizeof (event_object), /* tp_basicsize */ \
2662 0, /* tp_itemsize */ \
2663 evpy_dealloc, /* tp_dealloc */ \
2665 0, /* tp_getattr */ \
2666 0, /* tp_setattr */ \
2667 0, /* tp_compare */ \
2669 0, /* tp_as_number */ \
2670 0, /* tp_as_sequence */ \
2671 0, /* tp_as_mapping */ \
2675 0, /* tp_getattro */ \
2676 0, /* tp_setattro */ \
2677 0, /* tp_as_buffer */ \
2678 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ \
2680 0, /* tp_traverse */ \
2682 0, /* tp_richcompare */ \
2683 0, /* tp_weaklistoffset */ \
2685 0, /* tp_iternext */ \
2686 0, /* tp_methods */ \
2687 0, /* tp_members */ \
2688 0, /* tp_getset */ \
2689 &base, /* tp_base */ \
2691 0, /* tp_descr_get */ \
2692 0, /* tp_descr_set */ \
2693 0, /* tp_dictoffset */ \
2697 #include "py-event-types.def"
2698 #undef GDB_PY_DEFINE_EVENT_TYPE
2700 #endif /* HAVE_PYTHON */