GDB (xrefs)
Loading...
Searching...
No Matches
python-internal.h
Go to the documentation of this file.
1/* Gdb/Python header for private use by Python module.
2
3 Copyright (C) 2008-2023 Free Software Foundation, Inc.
4
5 This file is part of GDB.
6
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.
11
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.
16
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/>. */
19
20#ifndef PYTHON_PYTHON_INTERNAL_H
21#define PYTHON_PYTHON_INTERNAL_H
22
23#include "extension.h"
24#include "extension-priv.h"
25
26/* These WITH_* macros are defined by the CPython API checker that
27 comes with the Python plugin for GCC. See:
28 https://gcc-python-plugin.readthedocs.org/en/latest/cpychecker.html
29 The checker defines a WITH_ macro for each attribute it
30 exposes. Note that we intentionally do not use
31 'cpychecker_returns_borrowed_ref' -- that idiom is forbidden in
32 gdb. */
33
34#ifdef WITH_CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF_ATTRIBUTE
35#define CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF(ARG) \
36 __attribute__ ((cpychecker_type_object_for_typedef (ARG)))
37#else
38#define CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF(ARG)
39#endif
40
41#ifdef WITH_CPYCHECKER_SETS_EXCEPTION_ATTRIBUTE
42#define CPYCHECKER_SETS_EXCEPTION __attribute__ ((cpychecker_sets_exception))
43#else
44#define CPYCHECKER_SETS_EXCEPTION
45#endif
46
47#ifdef WITH_CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION_ATTRIBUTE
48#define CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION \
49 __attribute__ ((cpychecker_negative_result_sets_exception))
50#else
51#define CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
52#endif
53
54/* /usr/include/features.h on linux systems will define _POSIX_C_SOURCE
55 if it sees _GNU_SOURCE (which config.h will define).
56 pyconfig.h defines _POSIX_C_SOURCE to a different value than
57 /usr/include/features.h does causing compilation to fail.
58 To work around this, undef _POSIX_C_SOURCE before we include Python.h.
59
60 Same problem with _XOPEN_SOURCE. */
61#undef _POSIX_C_SOURCE
62#undef _XOPEN_SOURCE
63
64/* On sparc-solaris, /usr/include/sys/feature_tests.h defines
65 _FILE_OFFSET_BITS, which pyconfig.h also defines. Same work
66 around technique as above. */
67#undef _FILE_OFFSET_BITS
68
69/* A kludge to avoid redefinition of snprintf on Windows by pyerrors.h. */
70#if defined(_WIN32) && defined(HAVE_DECL_SNPRINTF)
71#define HAVE_SNPRINTF 1
72#endif
73
74/* Another kludge to avoid compilation errors because MinGW defines
75 'hypot' to '_hypot', but the C++ headers says "using ::hypot". */
76#ifdef __MINGW32__
77# define _hypot hypot
78#endif
79
80/* Request clean size types from Python. */
81#define PY_SSIZE_T_CLEAN
82
83/* Include the Python header files using angle brackets rather than
84 double quotes. On case-insensitive filesystems, this prevents us
85 from including our python/python.h header file. */
86#include <Python.h>
87#include <frameobject.h>
88#include "py-ref.h"
89
90#define Py_TPFLAGS_CHECKTYPES 0
91
92/* If Python.h does not define WITH_THREAD, then the various
93 GIL-related functions will not be defined. However,
94 PyGILState_STATE will be. */
95#ifndef WITH_THREAD
96#define PyGILState_Ensure() ((PyGILState_STATE) 0)
97#define PyGILState_Release(ARG) ((void)(ARG))
98#define PyEval_InitThreads()
99#define PyThreadState_Swap(ARG) ((void)(ARG))
100#define PyEval_ReleaseLock()
101#endif
102
103/* Python supplies HAVE_LONG_LONG and some `long long' support when it
104 is available. These defines let us handle the differences more
105 cleanly. */
106#ifdef HAVE_LONG_LONG
107
108#define GDB_PY_LL_ARG "L"
109#define GDB_PY_LLU_ARG "K"
110typedef PY_LONG_LONG gdb_py_longest;
111typedef unsigned PY_LONG_LONG gdb_py_ulongest;
112#define gdb_py_long_as_ulongest PyLong_AsUnsignedLongLong
113
114#else /* HAVE_LONG_LONG */
115
116#define GDB_PY_LL_ARG "L"
117#define GDB_PY_LLU_ARG "K"
118typedef long gdb_py_longest;
119typedef unsigned long gdb_py_ulongest;
120#define gdb_py_long_as_ulongest PyLong_AsUnsignedLong
121
122#endif /* HAVE_LONG_LONG */
123
124#if PY_VERSION_HEX < 0x03020000
125typedef long Py_hash_t;
126#endif
127
128/* PyMem_RawMalloc appeared in Python 3.4. For earlier versions, we can just
129 fall back to PyMem_Malloc. */
130
131#if PY_VERSION_HEX < 0x03040000
132#define PyMem_RawMalloc PyMem_Malloc
133#endif
134
135/* PyObject_CallMethod's 'method' and 'format' parameters were missing
136 the 'const' qualifier before Python 3.4. Hence, we wrap the
137 function in our own version to avoid errors with string literals.
138 Note, this is a variadic template because PyObject_CallMethod is a
139 varargs function and Python doesn't have a "PyObject_VaCallMethod"
140 variant taking a va_list that we could defer to instead. */
141
142template<typename... Args>
143static inline PyObject *
144gdb_PyObject_CallMethod (PyObject *o, const char *method, const char *format,
145 Args... args) /* ARI: editCase function */
146{
147 return PyObject_CallMethod (o,
148 const_cast<char *> (method),
149 const_cast<char *> (format),
150 args...);
151}
152
153#undef PyObject_CallMethod
154#define PyObject_CallMethod gdb_PyObject_CallMethod
155
156/* The 'name' parameter of PyErr_NewException was missing the 'const'
157 qualifier in Python <= 3.4. Hence, we wrap it in a function to
158 avoid errors when compiled with -Werror. */
159
160static inline PyObject*
161gdb_PyErr_NewException (const char *name, PyObject *base, PyObject *dict)
162{
163 return PyErr_NewException (const_cast<char *> (name), base, dict);
164}
165
166#define PyErr_NewException gdb_PyErr_NewException
167
168/* PySys_GetObject's 'name' parameter was missing the 'const'
169 qualifier before Python 3.4. Hence, we wrap it in a function to
170 avoid errors when compiled with -Werror. */
171
172static inline PyObject *
174{
175 return PySys_GetObject (const_cast<char *> (name));
176}
177
178#define PySys_GetObject gdb_PySys_GetObject
179
180/* PySys_SetPath was deprecated in Python 3.11. Disable the deprecated
181 code for Python 3.10 and newer. */
182#if PY_VERSION_HEX < 0x030a0000
183
184/* PySys_SetPath's 'path' parameter was missing the 'const' qualifier
185 before Python 3.6. Hence, we wrap it in a function to avoid errors
186 when compiled with -Werror. */
187
188# define GDB_PYSYS_SETPATH_CHAR wchar_t
189
190static inline void
192{
193 PySys_SetPath (const_cast<GDB_PYSYS_SETPATH_CHAR *> (path));
194}
195
196#define PySys_SetPath gdb_PySys_SetPath
197#endif
198
199/* Wrap PyGetSetDef to allow convenient construction with string
200 literals. Unfortunately, PyGetSetDef's 'name' and 'doc' members
201 are 'char *' instead of 'const char *', meaning that in order to
202 list-initialize PyGetSetDef arrays with string literals (and
203 without the wrapping below) would require writing explicit 'char *'
204 casts. Instead, we extend PyGetSetDef and add constexpr
205 constructors that accept const 'name' and 'doc', hiding the ugly
206 casts here in a single place. */
207
208struct gdb_PyGetSetDef : PyGetSetDef
209{
210 constexpr gdb_PyGetSetDef (const char *name_, getter get_, setter set_,
211 const char *doc_, void *closure_)
212 : PyGetSetDef {const_cast<char *> (name_), get_, set_,
213 const_cast<char *> (doc_), closure_}
214 {}
215
216 /* Alternative constructor that allows omitting the closure in list
217 initialization. */
218 constexpr gdb_PyGetSetDef (const char *name_, getter get_, setter set_,
219 const char *doc_)
220 : gdb_PyGetSetDef {name_, get_, set_, doc_, NULL}
221 {}
222
223 /* Constructor for the sentinel entries. */
224 constexpr gdb_PyGetSetDef (std::nullptr_t)
225 : gdb_PyGetSetDef {NULL, NULL, NULL, NULL, NULL}
226 {}
227};
228
229/* The 'keywords' parameter of PyArg_ParseTupleAndKeywords has type
230 'char **'. However, string literals are const in C++, and so to
231 avoid casting at every keyword array definition, we'll need to make
232 the keywords array an array of 'const char *'. To avoid having all
233 callers add a 'const_cast<char **>' themselves when passing such an
234 array through 'char **', we define our own version of
235 PyArg_ParseTupleAndKeywords here with a corresponding 'keywords'
236 parameter type that does the cast in a single place. (This is not
237 an overload of PyArg_ParseTupleAndKeywords in order to make it
238 clearer that we're calling our own function instead of a function
239 that exists in some newer Python version.) */
240
241static inline int
242gdb_PyArg_ParseTupleAndKeywords (PyObject *args, PyObject *kw,
243 const char *format, const char **keywords, ...)
244{
245 va_list ap;
246 int res;
247
248 va_start (ap, keywords);
249 res = PyArg_VaParseTupleAndKeywords (args, kw, format,
250 const_cast<char **> (keywords),
251 ap);
252 va_end (ap);
253
254 return res;
255}
256
257/* In order to be able to parse symtab_and_line_to_sal_object function
258 a real symtab_and_line structure is needed. */
259#include "symtab.h"
260
261/* Also needed to parse enum var_types. */
262#include "command.h"
263#include "breakpoint.h"
264
266
267struct block;
268struct value;
269struct language_defn;
270struct program_space;
271struct bpstat;
272struct inferior;
273
274extern int gdb_python_initialized;
275
276extern PyObject *gdb_module;
277extern PyObject *gdb_python_module;
278extern PyTypeObject value_object_type
280extern PyTypeObject block_object_type
282extern PyTypeObject symbol_object_type
284extern PyTypeObject event_object_type
286extern PyTypeObject breakpoint_object_type
288extern PyTypeObject frame_object_type
290extern PyTypeObject thread_object_type
292
293/* Ensure that breakpoint_object_type is initialized and return true. If
294 breakpoint_object_type can't be initialized then set a suitable Python
295 error and return false.
296
297 This function needs to be called from any gdbpy_initialize_* function
298 that wants to reference breakpoint_object_type. After all the
299 gdbpy_initialize_* functions have been called then breakpoint_object_type
300 is guaranteed to have been initialized, and this function does not need
301 calling before referencing breakpoint_object_type. */
302
304
306{
307 PyObject_HEAD
308
309 /* The breakpoint number according to gdb. */
311
312 /* The gdb breakpoint object, or NULL if the breakpoint has been
313 deleted. */
314 struct breakpoint *bp;
315
316 /* 1 is this is a FinishBreakpoint object, 0 otherwise. */
318};
319
320/* Require that BREAKPOINT be a valid breakpoint ID; throw a Python
321 exception if it is invalid. */
322#define BPPY_REQUIRE_VALID(Breakpoint) \
323 do { \
324 if ((Breakpoint)->bp == NULL) \
325 return PyErr_Format (PyExc_RuntimeError, \
326 _("Breakpoint %d is invalid."), \
327 (Breakpoint)->number); \
328 } while (0)
329
330/* Require that BREAKPOINT be a valid breakpoint ID; throw a Python
331 exception if it is invalid. This macro is for use in setter functions. */
332#define BPPY_SET_REQUIRE_VALID(Breakpoint) \
333 do { \
334 if ((Breakpoint)->bp == NULL) \
335 { \
336 PyErr_Format (PyExc_RuntimeError, _("Breakpoint %d is invalid."), \
337 (Breakpoint)->number); \
338 return -1; \
339 } \
340 } while (0)
341
342
343/* Variables used to pass information between the Breakpoint
344 constructor and the breakpoint-created hook function. */
346
347
349{
350 PyObject_HEAD
351
352 /* The thread we represent. */
354
355 /* The Inferior object to which this thread belongs. */
356 PyObject *inf_obj;
357};
358
359struct inferior_object;
360
361extern struct cmd_list_element *set_python_list;
363
364/* extension_language_script_ops "methods". */
365
366/* Return true if auto-loading Python scripts is enabled.
367 This is the extension_language_script_ops.auto_load_enabled "method". */
368
369extern bool gdbpy_auto_load_enabled (const struct extension_language_defn *);
370
371/* extension_language_ops "methods". */
372
374 (const struct extension_language_defn *,
375 struct value *value,
376 struct ui_file *stream, int recurse,
377 const struct value_print_options *options,
378 const struct language_defn *language);
380 (const struct extension_language_defn *,
381 frame_info_ptr frame, frame_filter_flags flags,
382 enum ext_lang_frame_args args_type,
383 struct ui_out *out, int frame_low, int frame_high);
384extern void gdbpy_preserve_values (const struct extension_language_defn *,
385 struct objfile *objfile,
386 htab_t copied_types);
388 (const struct extension_language_defn *, struct breakpoint *);
389extern int gdbpy_breakpoint_has_cond (const struct extension_language_defn *,
390 struct breakpoint *b);
391
393 (const struct extension_language_defn *extlang,
394 struct type *obj_type, const char *method_name,
395 std::vector<xmethod_worker_up> *dm_vec);
396
397
398PyObject *gdbpy_history (PyObject *self, PyObject *args);
399PyObject *gdbpy_add_history (PyObject *self, PyObject *args);
400extern PyObject *gdbpy_history_count (PyObject *self, PyObject *args);
401PyObject *gdbpy_convenience_variable (PyObject *self, PyObject *args);
402PyObject *gdbpy_set_convenience_variable (PyObject *self, PyObject *args);
403PyObject *gdbpy_breakpoints (PyObject *, PyObject *);
404PyObject *gdbpy_frame_stop_reason_string (PyObject *, PyObject *);
405PyObject *gdbpy_lookup_symbol (PyObject *self, PyObject *args, PyObject *kw);
406PyObject *gdbpy_lookup_global_symbol (PyObject *self, PyObject *args,
407 PyObject *kw);
408PyObject *gdbpy_lookup_static_symbol (PyObject *self, PyObject *args,
409 PyObject *kw);
410PyObject *gdbpy_lookup_static_symbols (PyObject *self, PyObject *args,
411 PyObject *kw);
412PyObject *gdbpy_start_recording (PyObject *self, PyObject *args);
413PyObject *gdbpy_current_recording (PyObject *self, PyObject *args);
414PyObject *gdbpy_stop_recording (PyObject *self, PyObject *args);
415PyObject *gdbpy_newest_frame (PyObject *self, PyObject *args);
416PyObject *gdbpy_selected_frame (PyObject *self, PyObject *args);
417PyObject *gdbpy_lookup_type (PyObject *self, PyObject *args, PyObject *kw);
418int gdbpy_is_field (PyObject *obj);
419PyObject *gdbpy_create_lazy_string_object (CORE_ADDR address, long length,
420 const char *encoding,
421 struct type *type);
422PyObject *gdbpy_inferiors (PyObject *unused, PyObject *unused2);
423PyObject *gdbpy_create_ptid_object (ptid_t ptid);
424PyObject *gdbpy_selected_thread (PyObject *self, PyObject *args);
425PyObject *gdbpy_selected_inferior (PyObject *self, PyObject *args);
426PyObject *gdbpy_string_to_argv (PyObject *self, PyObject *args);
427PyObject *gdbpy_parameter_value (const setting &var);
428gdb::unique_xmalloc_ptr<char> gdbpy_parse_command_name
429 (const char *name, struct cmd_list_element ***base_list,
430 struct cmd_list_element **start_list);
431PyObject *gdbpy_register_tui_window (PyObject *self, PyObject *args,
432 PyObject *kw);
433
435PyObject *symtab_to_symtab_object (struct symtab *symtab);
436PyObject *symbol_to_symbol_object (struct symbol *sym);
437PyObject *block_to_block_object (const struct block *block,
438 struct objfile *objfile);
439PyObject *value_to_value_object (struct value *v);
440PyObject *value_to_value_object_no_release (struct value *v);
441PyObject *type_to_type_object (struct type *);
443PyObject *symtab_to_linetable_object (PyObject *symtab);
445PyObject *pspy_get_printers (PyObject *, void *);
446PyObject *pspy_get_frame_filters (PyObject *, void *);
447PyObject *pspy_get_frame_unwinders (PyObject *, void *);
448PyObject *pspy_get_xmethods (PyObject *, void *);
449
451PyObject *objfpy_get_printers (PyObject *, void *);
452PyObject *objfpy_get_frame_filters (PyObject *, void *);
453PyObject *objfpy_get_frame_unwinders (PyObject *, void *);
454PyObject *objfpy_get_xmethods (PyObject *, void *);
455PyObject *gdbpy_lookup_objfile (PyObject *self, PyObject *args, PyObject *kw);
456
457PyObject *gdbarch_to_arch_object (struct gdbarch *gdbarch);
458PyObject *gdbpy_all_architecture_names (PyObject *self, PyObject *args);
459
461 const char *group_name);
463
467
468PyObject *gdbpy_buffer_to_membuf (gdb::unique_xmalloc_ptr<gdb_byte> buffer,
469 CORE_ADDR address, ULONGEST length);
470
473PyObject *gdbpy_connections (PyObject *self, PyObject *args);
474
475const struct block *block_object_to_block (PyObject *obj);
476struct symbol *symbol_object_to_symbol (PyObject *obj);
477struct value *value_object_to_value (PyObject *self);
478struct value *convert_value_from_python (PyObject *obj);
479struct type *type_object_to_type (PyObject *obj);
480struct symtab *symtab_object_to_symtab (PyObject *obj);
481struct symtab_and_line *sal_object_to_symtab_and_line (PyObject *obj);
482frame_info_ptr frame_object_to_frame_info (PyObject *frame_obj);
483struct gdbarch *arch_object_to_gdbarch (PyObject *obj);
484
485/* Convert Python object OBJ to a program_space pointer. OBJ must be a
486 gdb.Progspace reference. Return nullptr if the gdb.Progspace is not
487 valid (see gdb.Progspace.is_valid), otherwise return the program_space
488 pointer. */
489
490extern struct program_space *progspace_object_to_program_space (PyObject *obj);
491
515int gdbpy_initialize_types (void)
541int gdbpy_initialize_event (void)
543int gdbpy_initialize_arch (void)
562
563PyMODINIT_FUNC gdbpy_events_mod_func ();
564
565/* A wrapper for PyErr_Fetch that handles reference counting for the
566 caller. */
568{
569public:
570
572 {
573 PyObject *error_type, *error_value, *error_traceback;
574
575 PyErr_Fetch (&error_type, &error_value, &error_traceback);
576 m_error_type.reset (error_type);
577 m_error_value.reset (error_value);
578 m_error_traceback.reset (error_traceback);
579 }
580
581 /* Call PyErr_Restore using the values stashed in this object.
582 After this call, this object is invalid and neither the to_string
583 nor restore methods may be used again. */
584
585 void restore ()
586 {
587 PyErr_Restore (m_error_type.release (),
588 m_error_value.release (),
589 m_error_traceback.release ());
590 }
591
592 /* Return the string representation of the exception represented by
593 this object. If the result is NULL a python error occurred, the
594 caller must clear it. */
595
596 gdb::unique_xmalloc_ptr<char> to_string () const;
597
598 /* Return the string representation of the type of the exception
599 represented by this object. If the result is NULL a python error
600 occurred, the caller must clear it. */
601
602 gdb::unique_xmalloc_ptr<char> type_to_string () const;
603
604 /* Return true if the stored type matches TYPE, false otherwise. */
605
606 bool type_matches (PyObject *type) const
607 {
608 return PyErr_GivenExceptionMatches (m_error_type.get (), type);
609 }
610
611 /* Return a new reference to the exception value object. */
612
614 {
615 return m_error_value;
616 }
617
618private:
619
620 gdbpy_ref<> m_error_type, m_error_value, m_error_traceback;
621};
622
623/* Called before entering the Python interpreter to install the
624 current language and architecture to be used for Python values.
625 Also set the active extension language for GDB so that SIGINT's
626 are directed our way, and if necessary install the right SIGINT
627 handler. */
629{
630 public:
631
632 /* Set the ambient Python architecture to GDBARCH and the language
633 to LANGUAGE. If GDBARCH is nullptr, then the architecture will
634 be computed, when needed, using get_current_arch; see the
635 get_gdbarch method. If LANGUAGE is not nullptr, then the current
636 language at time of construction will be saved (to be restored on
637 destruction), and the current language will be set to
638 LANGUAGE. */
639 explicit gdbpy_enter (struct gdbarch *gdbarch = nullptr,
640 const struct language_defn *language = nullptr);
641
642 ~gdbpy_enter ();
643
645
646 /* Return the current gdbarch, as known to the Python layer. This
647 is either python_gdbarch (which comes from the most recent call
648 to the gdbpy_enter constructor), or, if that is nullptr, the
649 result of get_current_arch. */
650 static struct gdbarch *get_gdbarch ();
651
652 /* Called only during gdb shutdown. This sets python_gdbarch to an
653 acceptable value. */
654 static void finalize ();
655
656 private:
657
658 /* The current gdbarch, according to Python. This can be
659 nullptr. */
660 static struct gdbarch *python_gdbarch;
661
663 PyGILState_STATE m_state;
666
667 /* An optional is used here because we don't want to call
668 PyErr_Fetch too early. */
669 gdb::optional<gdbpy_err_fetch> m_error;
670};
671
672/* Like gdbpy_enter, but takes a varobj. This is a subclass just to
673 make constructor delegation a little nicer. */
675{
676 public:
677
678 /* This is defined in varobj.c, where it can access varobj
679 internals. */
680 gdbpy_enter_varobj (const struct varobj *var);
681
682};
683
684/* The opposite of gdb_enter: this releases the GIL around a region,
685 allowing other Python threads to run. No Python APIs may be used
686 while this is active. */
688{
689public:
690
692 : m_save (PyEval_SaveThread ())
693 {
694 gdb_assert (m_save != nullptr);
695 }
696
698 {
699 PyEval_RestoreThread (m_save);
700 }
701
703
704private:
705
706 PyThreadState *m_save;
707};
708
709/* Use this after a TRY_EXCEPT to throw the appropriate Python
710 exception. */
711#define GDB_PY_HANDLE_EXCEPTION(Exception) \
712 do { \
713 if (Exception.reason < 0) \
714 { \
715 gdbpy_convert_exception (Exception); \
716 return NULL; \
717 } \
718 } while (0)
719
720/* Use this after a TRY_EXCEPT to throw the appropriate Python
721 exception. This macro is for use inside setter functions. */
722#define GDB_PY_SET_HANDLE_EXCEPTION(Exception) \
723 do { \
724 if (Exception.reason < 0) \
725 { \
726 gdbpy_convert_exception (Exception); \
727 return -1; \
728 } \
729 } while (0)
730
732void gdbpy_print_stack (void);
734void gdbpy_handle_exception () ATTRIBUTE_NORETURN;
735
736/* A wrapper around calling 'error'. Prefixes the error message with an
737 'Error occurred in Python' string. Use this in C++ code if we spot
738 something wrong with an object returned from Python code. The prefix
739 string gives the user a hint that the mistake is within Python code,
740 rather than some other part of GDB.
741
742 This always calls error, and never returns. */
743
744void gdbpy_error (const char *fmt, ...)
745 ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 2);
746
747gdbpy_ref<> python_string_to_unicode (PyObject *obj);
748gdb::unique_xmalloc_ptr<char> unicode_to_target_string (PyObject *unicode_str);
749gdb::unique_xmalloc_ptr<char> python_string_to_target_string (PyObject *obj);
751gdb::unique_xmalloc_ptr<char> python_string_to_host_string (PyObject *obj);
752gdbpy_ref<> host_string_to_python_string (const char *str);
753int gdbpy_is_string (PyObject *obj);
754gdb::unique_xmalloc_ptr<char> gdbpy_obj_to_string (PyObject *obj);
755
756int gdbpy_is_lazy_string (PyObject *result);
757void gdbpy_extract_lazy_string (PyObject *string, CORE_ADDR *addr,
758 struct type **str_type,
759 long *length,
760 gdb::unique_xmalloc_ptr<char> *encoding);
761
762int gdbpy_is_value_object (PyObject *obj);
763
764/* Note that these are declared here, and not in python.h with the
765 other pretty-printer functions, because they refer to PyObject. */
766gdbpy_ref<> apply_varobj_pretty_printer (PyObject *print_obj,
767 struct value **replacement,
768 struct ui_file *stream,
769 const value_print_options *opts);
771gdb::unique_xmalloc_ptr<char> gdbpy_get_display_hint (PyObject *printer);
772PyObject *gdbpy_default_visualizer (PyObject *self, PyObject *args);
773
774PyObject *gdbpy_print_options (PyObject *self, PyObject *args);
777
780
781extern PyObject *gdbpy_doc_cst;
782extern PyObject *gdbpy_children_cst;
783extern PyObject *gdbpy_to_string_cst;
784extern PyObject *gdbpy_display_hint_cst;
785extern PyObject *gdbpy_enabled_cst;
786extern PyObject *gdbpy_value_cst;
787
788/* Exception types. */
789extern PyObject *gdbpy_gdb_error;
790extern PyObject *gdbpy_gdb_memory_error;
791extern PyObject *gdbpy_gdberror_exc;
792
793extern void gdbpy_convert_exception (const struct gdb_exception &)
795
796int get_addr_from_python (PyObject *obj, CORE_ADDR *addr)
798
801int gdb_py_int_as_long (PyObject *, long *);
802
803PyObject *gdb_py_generic_dict (PyObject *self, void *closure);
804
805int gdb_pymodule_addobject (PyObject *module, const char *name,
806 PyObject *object)
808
809struct varobj_iter;
810struct varobj;
812 (struct varobj *var,
813 PyObject *printer,
814 const value_print_options *opts);
815
816/* Deleter for Py_buffer unique_ptr specialization. */
817
819{
820 void operator() (Py_buffer *b) const
821 {
822 PyBuffer_Release (b);
823 }
824};
825
826/* A unique_ptr specialization for Py_buffer. */
827typedef std::unique_ptr<Py_buffer, Py_buffer_deleter> Py_buffer_up;
828
829/* Parse a register number from PYO_REG_ID and place the register number
830 into *REG_NUM. The register is a register for GDBARCH.
831
832 If a register is parsed successfully then *REG_NUM will have been
833 updated, and true is returned. Otherwise the contents of *REG_NUM are
834 undefined, and false is returned. When false is returned, the
835 Python error is set.
836
837 The PYO_REG_ID object can be a string, the name of the register. This
838 is the slowest approach as GDB has to map the name to a number for each
839 call. Alternatively PYO_REG_ID can be an internal GDB register
840 number. This is quick but should not be encouraged as this means
841 Python scripts are now dependent on GDB's internal register numbering.
842 Final PYO_REG_ID can be a gdb.RegisterDescriptor object, these objects
843 can be looked up by name once, and then cache the register number so
844 should be as quick as using a register number. */
845
846extern bool gdbpy_parse_register_id (struct gdbarch *gdbarch,
847 PyObject *pyo_reg_id, int *reg_num);
848
849/* Return true if OBJ is a gdb.Architecture object, otherwise, return
850 false. */
851
852extern bool gdbpy_is_architecture (PyObject *obj);
853
854/* Return true if OBJ is a gdb.Progspace object, otherwise, return false. */
855
856extern bool gdbpy_is_progspace (PyObject *obj);
857
858/* Take DOC, the documentation string for a GDB command defined in Python,
859 and return an (possibly) modified version of that same string.
860
861 When a command is defined in Python, the documentation string will
862 usually be indented based on the indentation of the surrounding Python
863 code. However, the documentation string is a literal string, all the
864 white-space added for indentation is included within the documentation
865 string.
866
867 This indentation is then included in the help text that GDB displays,
868 which looks odd out of the context of the original Python source code.
869
870 This function analyses DOC and tries to figure out what white-space
871 within DOC was added as part of the indentation, and then removes that
872 white-space from the copy that is returned.
873
874 If the analysis of DOC fails then DOC will be returned unmodified. */
875
876extern gdb::unique_xmalloc_ptr<char> gdbpy_fix_doc_string_indentation
877 (gdb::unique_xmalloc_ptr<char> doc);
878
879/* Implement the 'print_insn' hook for Python. Disassemble an instruction
880 whose address is ADDRESS for architecture GDBARCH. The bytes of the
881 instruction should be read with INFO->read_memory_func as the
882 instruction being disassembled might actually be in a buffer.
883
884 Used INFO->fprintf_func to print the results of the disassembly, and
885 return the length of the instruction in octets.
886
887 If no instruction can be disassembled then return an empty value. */
888
889extern gdb::optional<int> gdbpy_print_insn (struct gdbarch *gdbarch,
890 CORE_ADDR address,
891 disassemble_info *info);
892
893#endif /* PYTHON_PYTHON_INTERNAL_H */
const char *const name
Definition: aarch64-tdep.c:67
DISABLE_COPY_AND_ASSIGN(gdbpy_allow_threads)
PyThreadState * m_save
~gdbpy_enter()
Definition: python.c:224
PyGILState_STATE m_state
const struct language_defn * m_language
static void finalize()
Definition: python.c:253
gdb::optional< gdbpy_err_fetch > m_error
struct gdbarch * m_gdbarch
static struct gdbarch * python_gdbarch
struct active_ext_lang_state * m_previous_active
DISABLE_COPY_AND_ASSIGN(gdbpy_enter)
static struct gdbarch * get_gdbarch()
Definition: python.c:245
bool type_matches(PyObject *type) const
gdbpy_ref m_error_traceback
gdbpy_ref value()
Definition: ui-out.h:160
language
Definition: defs.h:211
ext_lang_rc
Definition: extension.h:165
ext_lang_bt_status
Definition: extension.h:71
ext_lang_frame_args
Definition: extension.h:114
ext_lang_bp_stop
Definition: extension.h:138
static void ATTRIBUTE_PRINTF(1, 0)
Definition: gdb_bfd.c:1150
mach_port_t kern_return_t mach_port_t mach_msg_type_name_t msgportsPoly mach_port_t kern_return_t pid_t pid mach_port_t kern_return_t mach_port_t task mach_port_t kern_return_t int flags
Definition: gnu-nat.c:1862
Definition: auto-load.h:28
Definition: aarch64.h:50
PyTypeObject block_object_type
Definition: py-block.c:479
PyTypeObject breakpoint_object_type
PyTypeObject event_object_type
Definition: py-event.c:124
PyTypeObject frame_object_type
Definition: py-frame.c:799
PyTypeObject thread_object_type
Definition: py-infthread.c:417
gdb::ref_ptr< T, gdbpy_ref_policy< T > > gdbpy_ref
Definition: py-ref.h:43
PyTypeObject symbol_object_type
Definition: py-symbol.c:725
PyTypeObject value_object_type
Definition: py-value.c:2171
PyObject * gdbpy_buffer_to_membuf(gdb::unique_xmalloc_ptr< gdb_byte > buffer, CORE_ADDR address, ULONGEST length)
Definition: py-membuf.c:44
enum ext_lang_bp_stop gdbpy_breakpoint_cond_says_stop(const struct extension_language_defn *, struct breakpoint *)
void gdbpy_print_stack(void)
Definition: python.c:1484
bool gdbpy_is_progspace(PyObject *obj)
Definition: py-progspace.c:527
void gdbpy_ref python_string_to_unicode(PyObject *obj)
Definition: py-utils.c:37
PyObject * gdbpy_new_register_descriptor_iterator(struct gdbarch *gdbarch, const char *group_name)
Definition: py-registers.c:263
int gdbpy_initialize_functions(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-function.c:138
PyMODINIT_FUNC gdbpy_events_mod_func()
Definition: py-evts.c:56
struct value * convert_value_from_python(PyObject *obj)
Definition: py-value.c:1838
PyObject * gdbpy_all_architecture_names(PyObject *self, PyObject *args)
Definition: py-arch.c:326
struct symbol * symbol_object_to_symbol(PyObject *obj)
Definition: py-symbol.c:354
bool gdbpy_breakpoint_init_breakpoint_type()
gdbpy_ref host_string_to_python_string(const char *str)
Definition: py-utils.c:153
PyObject * symtab_to_linetable_object(PyObject *symtab)
Definition: py-linetable.c:85
PyObject * block_to_block_object(const struct block *block, struct objfile *objfile)
Definition: py-block.c:329
#define GDB_PYSYS_SETPATH_CHAR
PyObject * objfpy_get_xmethods(PyObject *, void *)
Definition: py-objfile.c:383
PyObject * pspy_get_printers(PyObject *, void *)
Definition: py-progspace.c:178
void gdbpy_convert_exception(const struct gdb_exception &) CPYCHECKER_SETS_EXCEPTION
Definition: py-utils.c:216
gdb::unique_xmalloc_ptr< char > gdbpy_fix_doc_string_indentation(gdb::unique_xmalloc_ptr< char > doc)
Definition: py-utils.c:407
#define PyObject_CallMethod
int gdbpy_breakpoint_has_cond(const struct extension_language_defn *, struct breakpoint *b)
int gdbpy_initialize_breakpoints(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
struct symtab * symtab_object_to_symtab(PyObject *obj)
Definition: py-symtab.c:505
gdbpy_ref< inferior_object > inferior_to_inferior_object(inferior *inf)
Definition: py-inferior.c:228
void gdbpy_handle_exception() ATTRIBUTE_NORETURN
Definition: py-utils.c:366
int gdbpy_print_python_errors_p(void)
Definition: python.c:1474
gdb::unique_xmalloc_ptr< char > python_string_to_target_string(PyObject *obj)
Definition: py-utils.c:113
int gdbpy_initialize_blocks(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-block.c:428
gdbpy_ref apply_varobj_pretty_printer(PyObject *print_obj, struct value **replacement, struct ui_file *stream, const value_print_options *opts)
PyObject * symbol_to_symbol_object(struct symbol *sym)
Definition: py-symbol.c:341
void gdbpy_initialize_gdb_readline(void)
enum ext_lang_rc gdbpy_get_matching_xmethod_workers(const struct extension_language_defn *extlang, struct type *obj_type, const char *method_name, std::vector< xmethod_worker_up > *dm_vec)
Definition: py-xmethods.c:119
std::unique_ptr< Py_buffer, Py_buffer_deleter > Py_buffer_up
int gdbpy_is_value_object(PyObject *obj)
Definition: py-value.c:2057
PyObject * gdbpy_lookup_static_symbol(PyObject *self, PyObject *args, PyObject *kw)
Definition: py-symbol.c:494
int gdbpy_initialize_unwind(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-unwind.c:702
int gdbpy_initialize_disasm() CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-disasm.c:1022
int gdbpy_initialize_types(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-type.c:1446
PyObject * gdb_module
Definition: python.c:84
struct symtab_and_line * sal_object_to_symtab_and_line(PyObject *obj)
Definition: py-symtab.c:496
int gdb_python_initialized
Definition: python.c:80
PyObject * gdbpy_stop_recording(PyObject *self, PyObject *args)
Definition: py-record.c:638
int gdbpy_initialize_micommands(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-micmd.c:599
PyObject * gdbpy_lookup_global_symbol(PyObject *self, PyObject *args, PyObject *kw)
Definition: py-symbol.c:454
gdbpy_ref gdb_py_object_from_longest(LONGEST l)
Definition: py-utils.c:279
PyObject * gdbpy_register_tui_window(PyObject *self, PyObject *args, PyObject *kw)
frame_info_ptr frame_object_to_frame_info(PyObject *frame_obj)
Definition: py-frame.c:61
std::unique_ptr< varobj_iter > py_varobj_get_iterator(struct varobj *var, PyObject *printer, const value_print_options *opts)
Definition: py-varobj.c:147
PyObject * gdbpy_lookup_objfile(PyObject *self, PyObject *args, PyObject *kw)
Definition: py-objfile.c:591
PyObject * pspy_get_xmethods(PyObject *, void *)
Definition: py-progspace.c:306
gdbpy_ref objfile_to_objfile_object(struct objfile *)
Definition: py-objfile.c:686
void bpfinishpy_post_stop_hook(struct gdbpy_breakpoint_object *bp_obj)
PyObject * symtab_to_symtab_object(struct symtab *symtab)
Definition: py-symtab.c:467
gdb::unique_xmalloc_ptr< char > gdbpy_parse_command_name(const char *name, struct cmd_list_element ***base_list, struct cmd_list_element **start_list)
Definition: py-cmd.c:347
int gdbpy_initialize_objfile(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-objfile.c:708
PyObject * symtab_and_line_to_sal_object(struct symtab_and_line sal)
Definition: py-symtab.c:481
long gdb_py_longest
struct cmd_list_element * show_python_list
#define CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF(ARG)
struct value * value_object_to_value(PyObject *self)
Definition: py-value.c:1823
#define PySys_SetPath
PyObject * gdbpy_children_cst
Definition: python.c:89
int gdbpy_initialize_registers() CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-registers.c:431
PyObject * frame_info_to_frame_object(frame_info_ptr frame)
Definition: py-frame.c:346
void gdbpy_extract_lazy_string(PyObject *string, CORE_ADDR *addr, struct type **str_type, long *length, gdb::unique_xmalloc_ptr< char > *encoding)
gdbpy_iter_kind
@ iter_values
@ iter_items
@ iter_keys
void gdbpy_print_stack_or_quit()
Definition: python.c:1544
int gdbpy_is_lazy_string(PyObject *result)
PyObject * gdbpy_add_history(PyObject *self, PyObject *args)
Definition: py-value.c:1947
int gdbpy_initialize_finishbreakpoints(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
int gdbpy_initialize_instruction(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
#define CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
PyObject * gdbpy_create_lazy_string_object(CORE_ADDR address, long length, const char *encoding, struct type *type)
gdb::unique_xmalloc_ptr< char > gdbpy_get_display_hint(PyObject *printer)
PyObject * gdbpy_string_to_argv(PyObject *self, PyObject *args)
Definition: py-cmd.c:665
PyObject * gdbpy_selected_inferior(PyObject *self, PyObject *args)
Definition: py-inferior.c:799
int gdbpy_initialize_xmethods(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-xmethods.c:602
#define CPYCHECKER_SETS_EXCEPTION
int gdbpy_initialize_event(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-event.c:58
int gdbpy_initialize_record(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-record.c:548
PyObject * gdbpy_default_visualizer(PyObject *self, PyObject *args)
int gdbpy_initialize_auto_load(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-auto-load.c:60
bool gdbpy_is_architecture(PyObject *obj)
Definition: py-arch.c:80
PyObject * gdbpy_selected_frame(PyObject *self, PyObject *args)
Definition: py-frame.c:645
gdb::unique_xmalloc_ptr< char > gdbpy_obj_to_string(PyObject *obj)
Definition: py-utils.c:172
PyObject * gdbpy_history_count(PyObject *self, PyObject *args)
Definition: py-value.c:1974
PyObject * gdbpy_gdb_memory_error
Definition: python.c:102
PyObject * gdbpy_display_hint_cst
Definition: python.c:90
int gdbpy_initialize_pspace(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-progspace.c:533
unsigned long gdb_py_ulongest
long Py_hash_t
PyObject * gdbpy_parameter_value(const setting &var)
Definition: python.c:468
PyObject * gdbpy_create_ptid_object(ptid_t ptid)
Definition: py-infthread.c:319
PyObject * gdbpy_start_recording(PyObject *self, PyObject *args)
Definition: py-record.c:596
PyObject * gdbpy_selected_thread(PyObject *self, PyObject *args)
Definition: py-infthread.c:356
PyObject * gdbpy_new_reggroup_iterator(struct gdbarch *gdbarch)
Definition: py-registers.c:239
PyObject * objfpy_get_frame_filters(PyObject *, void *)
Definition: py-objfile.c:293
struct gdbarch * arch_object_to_gdbarch(PyObject *obj)
Definition: py-arch.c:69
PyObject * gdbpy_lookup_symbol(PyObject *self, PyObject *args, PyObject *kw)
Definition: py-symbol.c:385
gdb::unique_xmalloc_ptr< char > python_string_to_host_string(PyObject *obj)
Definition: py-utils.c:141
int gdb_pymodule_addobject(PyObject *module, const char *name, PyObject *object) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-utils.c:331
void gdbpy_error(const char *fmt,...) ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF(1
gdbpy_ref target_to_connection_object(process_stratum_target *target)
Definition: py-connection.c:80
PyObject * gdbpy_newest_frame(PyObject *self, PyObject *args)
Definition: py-frame.c:625
#define PySys_GetObject
PyObject * gdbpy_history(PyObject *self, PyObject *args)
Definition: py-value.c:1924
PyObject * objfpy_get_frame_unwinders(PyObject *, void *)
Definition: py-objfile.c:332
PyObject * gdbpy_set_convenience_variable(PyObject *self, PyObject *args)
Definition: py-value.c:2013
int gdbpy_initialize_parameters(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-param.c:836
PyObject * gdbpy_gdb_error
Definition: python.c:99
PyObject * value_to_value_object_no_release(struct value *v)
Definition: py-value.c:1800
PyObject * gdbpy_current_recording(PyObject *self, PyObject *args)
Definition: py-record.c:621
int gdbpy_initialize_symbols(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-symbol.c:615
int gdbpy_initialize_thread(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-infthread.c:365
gdbpy_breakpoint_object * bppy_pending_object
int gdb_py_int_as_long(PyObject *, long *)
Definition: py-utils.c:301
void gdbpy_preserve_values(const struct extension_language_defn *, struct objfile *objfile, htab_t copied_types)
Definition: py-value.c:225
enum ext_lang_rc gdbpy_apply_val_pretty_printer(const struct extension_language_defn *, struct value *value, struct ui_file *stream, int recurse, const struct value_print_options *options, const struct language_defn *language)
PyObject * value_to_value_object(struct value *v)
Definition: py-value.c:1778
gdbpy_ref pspace_to_pspace_object(struct program_space *)
Definition: py-progspace.c:495
int gdbpy_initialize_linetable(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-linetable.c:290
PyObject * gdbpy_enabled_cst
Definition: python.c:92
PyObject * pspy_get_frame_unwinders(PyObject *, void *)
Definition: py-progspace.c:255
int gdbpy_initialize_arch(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-arch.c:348
PyObject * gdbpy_lookup_static_symbols(PyObject *self, PyObject *args, PyObject *kw)
Definition: py-symbol.c:559
PyObject * gdbpy_doc_cst
Definition: python.c:91
bool gdbpy_parse_register_id(struct gdbarch *gdbarch, PyObject *pyo_reg_id, int *reg_num)
Definition: py-registers.c:370
PyObject * gdbpy_frame_stop_reason_string(PyObject *, PyObject *)
Definition: py-frame.c:665
enum ext_lang_bt_status gdbpy_apply_frame_filter(const struct extension_language_defn *, frame_info_ptr frame, frame_filter_flags flags, enum ext_lang_frame_args args_type, struct ui_out *out, int frame_low, int frame_high)
gdbpy_ref thread_to_thread_object(thread_info *thr)
Definition: py-inferior.c:309
int gdbpy_initialize_membuf() CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-membuf.c:103
const struct block * block_object_to_block(PyObject *obj)
Definition: py-block.c:342
PyObject * gdbpy_print_options(PyObject *self, PyObject *args)
int gdbpy_initialize_symtabs(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-symtab.c:513
gdbpy_ref gdbpy_get_varobj_pretty_printer(struct value *value)
int gdbpy_initialize_frames(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-frame.c:717
PyObject * pspy_get_frame_filters(PyObject *, void *)
Definition: py-progspace.c:216
int gdbpy_initialize_inferior(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-inferior.c:806
PyObject * gdbpy_to_string_cst
Definition: python.c:88
int gdbpy_is_field(PyObject *obj)
Definition: py-type.c:126
PyObject * objfpy_get_printers(PyObject *, void *)
Definition: py-objfile.c:255
int gdbpy_initialize_connection() CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
const struct value_print_options * gdbpy_current_print_options
gdbpy_ref python_string_to_target_python_string(PyObject *obj)
Definition: py-utils.c:128
PyObject * gdb_python_module
Definition: python.c:85
int gdbpy_initialize_eventregistry(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
PyObject * gdbpy_inferiors(PyObject *unused, PyObject *unused2)
Definition: py-inferior.c:499
struct program_space * progspace_object_to_program_space(PyObject *obj)
Definition: py-progspace.c:518
PyObject * gdb_py_generic_dict(PyObject *self, void *closure)
Definition: py-utils.c:314
int get_addr_from_python(PyObject *obj, CORE_ADDR *addr) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-utils.c:236
PyObject * gdbarch_to_arch_object(struct gdbarch *gdbarch)
Definition: py-arch.c:90
PyObject * gdbpy_value_cst
Definition: python.c:93
gdb::optional< int > gdbpy_print_insn(struct gdbarch *gdbarch, CORE_ADDR address, disassemble_info *info)
Definition: py-disasm.c:755
int gdbpy_is_string(PyObject *obj)
Definition: py-utils.c:163
PyObject * gdbpy_convenience_variable(PyObject *self, PyObject *args)
Definition: py-value.c:1981
static PyObject * gdb_PySys_GetObject(const char *name)
int gdbpy_initialize_values(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-value.c:2063
#define PyErr_NewException
PyObject * type_to_type_object(struct type *)
Definition: py-type.c:1381
int gdbpy_initialize_commands(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-cmd.c:555
gdbpy_ref< thread_object > create_thread_object(struct thread_info *tp)
Definition: py-infthread.c:40
struct type * type_object_to_type(PyObject *obj)
Definition: py-type.c:1404
bool gdbpy_auto_load_enabled(const struct extension_language_defn *)
Definition: py-auto-load.c:46
void bpfinishpy_pre_stop_hook(struct gdbpy_breakpoint_object *bp_obj)
int gdbpy_initialize_tui() CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
Definition: py-tui.c:565
static PyObject * gdb_PyObject_CallMethod(PyObject *o, const char *method, const char *format, Args... args)
PyObject * gdbpy_lookup_type(PyObject *self, PyObject *args, PyObject *kw)
Definition: py-type.c:1415
int gdbpy_initialize_btrace(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
PyObject * gdbpy_gdberror_exc
Definition: python.c:96
int gdbpy_initialize_lazy_string(void) CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
static void gdb_PySys_SetPath(const GDB_PYSYS_SETPATH_CHAR *path)
int gdbpy_initialize_breakpoint_locations() CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
gdbpy_ref gdb_py_object_from_ulongest(ULONGEST l)
Definition: py-utils.c:290
static PyObject * gdb_PyErr_NewException(const char *name, PyObject *base, PyObject *dict)
struct cmd_list_element * set_python_list
static int gdb_PyArg_ParseTupleAndKeywords(PyObject *args, PyObject *kw, const char *format, const char **keywords,...)
gdb::unique_xmalloc_ptr< char > unicode_to_target_string(PyObject *unicode_str)
Definition: py-utils.c:90
void gdbpy_finalize_micommands()
Definition: py-micmd.c:618
PyObject * gdbpy_connections(PyObject *self, PyObject *args)
PyObject * gdbpy_breakpoints(PyObject *, PyObject *)
void gdbpy_get_print_options(value_print_options *opts)
static struct type * error_type(const char **, struct objfile *)
Definition: stabsread.c:1444
Definition: block.h:109
gdb::optional< setting > var
Definition: cli-decode.h:236
constexpr gdb_PyGetSetDef(std::nullptr_t)
constexpr gdb_PyGetSetDef(const char *name_, getter get_, setter set_, const char *doc_, void *closure_)
constexpr gdb_PyGetSetDef(const char *name_, getter get_, setter set_, const char *doc_)
struct breakpoint * bp
PyObject_HEAD int number
Definition: gnu-nat.c:154
PyObject_HEAD struct thread_info * thread
PyObject * inf_obj
Definition: gdbtypes.h:922
Definition: value.c:181
Definition: varobj.h:95
std::string type_to_string(struct type *type)
Definition: typeprint.c:402