Remove C/C++ relevant code in Fortran specific file.
[deliverable/binutils-gdb.git] / gdb / python / python-internal.h
CommitLineData
d57a3c85
TJB
1/* Gdb/Python header for private use by Python module.
2
61baf725 3 Copyright (C) 2008-2017 Free Software Foundation, Inc.
d57a3c85
TJB
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 GDB_PYTHON_INTERNAL_H
21#define GDB_PYTHON_INTERNAL_H
22
6dddc817 23#include "extension.h"
e992c591 24#include "extension-priv.h"
6dddc817 25
62eec1a5
TT
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. */
31
634c58be
TT
32#ifdef WITH_CPYCHECKER_RETURNS_BORROWED_REF_ATTRIBUTE
33#define CPYCHECKER_RETURNS_BORROWED_REF \
34 __attribute__ ((cpychecker_returns_borrowed_ref))
35#else
36#define CPYCHECKER_RETURNS_BORROWED_REF
37#endif
38
62eec1a5
TT
39#ifdef WITH_CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF_ATTRIBUTE
40#define CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF(ARG) \
41 __attribute__ ((cpychecker_type_object_for_typedef (ARG)))
42#else
43#define CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF(ARG)
44#endif
45
9b08f225
TT
46#ifdef WITH_CPYCHECKER_STEALS_REFERENCE_TO_ARG_ATTRIBUTE
47#define CPYCHECKER_STEALS_REFERENCE_TO_ARG(n) \
48 __attribute__ ((cpychecker_steals_reference_to_arg (n)))
49#else
50#define CPYCHECKER_STEALS_REFERENCE_TO_ARG(n)
51#endif
52
56cc411c
TT
53#ifdef WITH_CPYCHECKER_SETS_EXCEPTION_ATTRIBUTE
54#define CPYCHECKER_SETS_EXCEPTION __attribute__ ((cpychecker_sets_exception))
55#else
56#define CPYCHECKER_SETS_EXCEPTION
57#endif
58
5d153bd1
TT
59#ifdef WITH_CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION_ATTRIBUTE
60#define CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION \
61 __attribute__ ((cpychecker_negative_result_sets_exception))
62#else
63#define CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
64#endif
65
d57a3c85
TJB
66/* Python 2.4 doesn't include stdint.h soon enough to get {u,}intptr_t
67 needed by pyport.h. */
d57a3c85
TJB
68/* /usr/include/features.h on linux systems will define _POSIX_C_SOURCE
69 if it sees _GNU_SOURCE (which config.h will define).
70 pyconfig.h defines _POSIX_C_SOURCE to a different value than
71 /usr/include/features.h does causing compilation to fail.
aac63f0f
JB
72 To work around this, undef _POSIX_C_SOURCE before we include Python.h.
73
74 Same problem with _XOPEN_SOURCE. */
d57a3c85 75#undef _POSIX_C_SOURCE
aac63f0f 76#undef _XOPEN_SOURCE
d57a3c85 77
aed1781d
JB
78/* On sparc-solaris, /usr/include/sys/feature_tests.h defines
79 _FILE_OFFSET_BITS, which pyconfig.h also defines. Same work
284a3db3 80 around technique as above. */
aed1781d
JB
81#undef _FILE_OFFSET_BITS
82
1cdd3232
EZ
83/* A kludge to avoid redefinition of snprintf on Windows by pyerrors.h. */
84#if defined(_WIN32) && defined(HAVE_DECL_SNPRINTF)
85#define HAVE_SNPRINTF 1
86#endif
87
1c033f8c
TT
88/* Request clean size types from Python. */
89#define PY_SSIZE_T_CLEAN
90
ac534cba
JB
91/* Include the Python header files using angle brackets rather than
92 double quotes. On case-insensitive filesystems, this prevents us
93 from including our python/python.h header file. */
94#include <Python.h>
95#include <frameobject.h>
9a27f2c6
PK
96
97#if PY_MAJOR_VERSION >= 3
98#define IS_PY3K 1
99#endif
100
101#ifdef IS_PY3K
102#define Py_TPFLAGS_HAVE_ITER 0
103#define Py_TPFLAGS_CHECKTYPES 0
104
105#define PyInt_Check PyLong_Check
106#define PyInt_FromLong PyLong_FromLong
75c0bdf4 107#define PyInt_FromSsize_t PyLong_FromSsize_t
9a27f2c6 108#define PyInt_AsLong PyLong_AsLong
75c0bdf4 109#define PyInt_AsSsize_t PyLong_AsSsize_t
9a27f2c6
PK
110
111#define PyString_FromString PyUnicode_FromString
112#define PyString_Decode PyUnicode_Decode
113#define PyString_FromFormat PyUnicode_FromFormat
114#define PyString_Check PyUnicode_Check
115#endif
116
d57a3c85 117#if HAVE_LIBPYTHON2_4
5171e6b3
TT
118/* Py_ssize_t is not defined until 2.5.
119 Logical type for Py_ssize_t is Py_intptr_t, but that fails in 64-bit
120 compilation due to several apparent mistakes in python2.4 API, so we
121 use 'int' instead. */
122typedef int Py_ssize_t;
d57a3c85
TJB
123#endif
124
9a27f2c6
PK
125#ifndef PyVarObject_HEAD_INIT
126/* Python 2.4 does not define PyVarObject_HEAD_INIT. */
127#define PyVarObject_HEAD_INIT(type, size) \
128 PyObject_HEAD_INIT(type) size,
129
130#endif
131
132#ifndef Py_TYPE
133/* Python 2.4 does not define Py_TYPE. */
134#define Py_TYPE(ob) (((PyObject*)(ob))->ob_type)
135#endif
136
ca30a762
TT
137/* If Python.h does not define WITH_THREAD, then the various
138 GIL-related functions will not be defined. However,
139 PyGILState_STATE will be. */
140#ifndef WITH_THREAD
141#define PyGILState_Ensure() ((PyGILState_STATE) 0)
548a926a 142#define PyGILState_Release(ARG) ((void)(ARG))
aed1781d 143#define PyEval_InitThreads()
548a926a 144#define PyThreadState_Swap(ARG) ((void)(ARG))
aed1781d 145#define PyEval_ReleaseLock()
ca30a762
TT
146#endif
147
74aedc46
TT
148/* Python supplies HAVE_LONG_LONG and some `long long' support when it
149 is available. These defines let us handle the differences more
150 cleanly. */
151#ifdef HAVE_LONG_LONG
152
153#define GDB_PY_LL_ARG "L"
154#define GDB_PY_LLU_ARG "K"
155typedef PY_LONG_LONG gdb_py_longest;
156typedef unsigned PY_LONG_LONG gdb_py_ulongest;
157#define gdb_py_long_from_longest PyLong_FromLongLong
158#define gdb_py_long_from_ulongest PyLong_FromUnsignedLongLong
159#define gdb_py_long_as_ulongest PyLong_AsUnsignedLongLong
160
161#else /* HAVE_LONG_LONG */
162
163#define GDB_PY_LL_ARG "L"
164#define GDB_PY_LLU_ARG "K"
165typedef long gdb_py_longest;
166typedef unsigned long gdb_py_ulongest;
167#define gdb_py_long_from_longest PyLong_FromLong
168#define gdb_py_long_from_ulongest PyLong_FromUnsignedLong
169#define gdb_py_long_as_ulongest PyLong_AsUnsignedLong
170
171#endif /* HAVE_LONG_LONG */
172
881d5d5d
JK
173#if PY_VERSION_HEX < 0x03020000
174typedef long Py_hash_t;
175#endif
176
6f8b0407
SM
177/* PyMem_RawMalloc appeared in Python 3.4. For earlier versions, we can just
178 fall back to PyMem_Malloc. */
179
180#if PY_VERSION_HEX < 0x03040000
181#define PyMem_RawMalloc PyMem_Malloc
182#endif
183
1915daeb
PA
184/* Python 2.6 did not wrap Py_DECREF in 'do {...} while (0)', leading
185 to 'suggest explicit braces to avoid ambiguous ‘else’' gcc errors.
186 Wrap it ourselves, so that callers don't need to care. */
187
188static inline void
ac90359c 189gdb_Py_DECREF (void *op) /* ARI: editCase function */
1915daeb 190{
a6e6f791
PA
191 /* ... and Python 2.4 didn't cast OP to PyObject pointer on the
192 '(op)->ob_refcnt' references within the macro. Cast it ourselves
193 too. */
194 Py_DECREF ((PyObject *) op);
1915daeb
PA
195}
196
197#undef Py_DECREF
198#define Py_DECREF(op) gdb_Py_DECREF (op)
74aedc46 199
5a6c7709
SC
200/* The second argument to PyObject_GetAttrString was missing the 'const'
201 qualifier in Python-2.4. Hence, we wrap it in a function to avoid errors
202 when compiled with -Werror. */
203
204static inline PyObject *
205gdb_PyObject_GetAttrString (PyObject *obj,
206 const char *attr) /* ARI: editCase function */
207{
208 return PyObject_GetAttrString (obj, (char *) attr);
209}
210
211#define PyObject_GetAttrString(obj, attr) gdb_PyObject_GetAttrString (obj, attr)
212
213/* The second argument to PyObject_HasAttrString was also missing the 'const'
214 qualifier in Python-2.4. Hence, we wrap it also in a function to avoid
215 errors when compiled with -Werror. */
216
217static inline int
218gdb_PyObject_HasAttrString (PyObject *obj,
219 const char *attr) /* ARI: editCase function */
220{
221 return PyObject_HasAttrString (obj, (char *) attr);
222}
223
224#define PyObject_HasAttrString(obj, attr) gdb_PyObject_HasAttrString (obj, attr)
225
4d759979
PA
226/* PyObject_CallMethod's 'method' and 'format' parameters were missing
227 the 'const' qualifier before Python 3.4. Hence, we wrap the
228 function in our own version to avoid errors with string literals.
229 Note, this is a variadic template because PyObject_CallMethod is a
230 varargs function and Python doesn't have a "PyObject_VaCallMethod"
231 variant taking a va_list that we could defer to instead. */
232
233template<typename... Args>
234static inline PyObject *
235gdb_PyObject_CallMethod (PyObject *o, const char *method, const char *format,
236 Args... args) /* ARI: editCase function */
237{
238 return PyObject_CallMethod (o,
239 const_cast<char *> (method),
240 const_cast<char *> (format),
241 args...);
242}
243
244#undef PyObject_CallMethod
245#define PyObject_CallMethod gdb_PyObject_CallMethod
246
247/* The 'name' parameter of PyErr_NewException was missing the 'const'
248 qualifier in Python <= 3.4. Hence, we wrap it in a function to
249 avoid errors when compiled with -Werror. */
250
251static inline PyObject*
252gdb_PyErr_NewException (const char *name, PyObject *base, PyObject *dict)
253{
254 return PyErr_NewException (const_cast<char *> (name), base, dict);
255}
256
257#define PyErr_NewException gdb_PyErr_NewException
258
259/* PySys_GetObject's 'name' parameter was missing the 'const'
260 qualifier before Python 3.4. Hence, we wrap it in a function to
261 avoid errors when compiled with -Werror. */
262
263static inline PyObject *
264gdb_PySys_GetObject (const char *name)
265{
266 return PySys_GetObject (const_cast<char *> (name));
267}
268
269#define PySys_GetObject gdb_PySys_GetObject
270
271/* PySys_SetPath's 'path' parameter was missing the 'const' qualifier
272 before Python 3.6. Hence, we wrap it in a function to avoid errors
273 when compiled with -Werror. */
274
275#ifdef IS_PY3K
276# define GDB_PYSYS_SETPATH_CHAR wchar_t
277#else
278# define GDB_PYSYS_SETPATH_CHAR char
279#endif
280
281static inline void
282gdb_PySys_SetPath (const GDB_PYSYS_SETPATH_CHAR *path)
283{
284 PySys_SetPath (const_cast<GDB_PYSYS_SETPATH_CHAR *> (path));
285}
286
287#define PySys_SetPath gdb_PySys_SetPath
288
0d1f4ceb
PA
289/* Wrap PyGetSetDef to allow convenient construction with string
290 literals. Unfortunately, PyGetSetDef's 'name' and 'doc' members
291 are 'char *' instead of 'const char *', meaning that in order to
292 list-initialize PyGetSetDef arrays with string literals (and
293 without the wrapping below) would require writing explicit 'char *'
294 casts. Instead, we extend PyGetSetDef and add constexpr
295 constructors that accept const 'name' and 'doc', hiding the ugly
296 casts here in a single place. */
297
298struct gdb_PyGetSetDef : PyGetSetDef
299{
300 constexpr gdb_PyGetSetDef (const char *name_, getter get_, setter set_,
301 const char *doc_, void *closure_)
302 : PyGetSetDef {const_cast<char *> (name_), get_, set_,
303 const_cast<char *> (doc_), closure_}
304 {}
305
306 /* Alternative constructor that allows omitting the closure in list
307 initialization. */
308 constexpr gdb_PyGetSetDef (const char *name_, getter get_, setter set_,
309 const char *doc_)
310 : gdb_PyGetSetDef {name_, get_, set_, doc_, NULL}
311 {}
312
313 /* Constructor for the sentinel entries. */
314 constexpr gdb_PyGetSetDef (std::nullptr_t)
315 : gdb_PyGetSetDef {NULL, NULL, NULL, NULL, NULL}
316 {}
317};
318
2adadf51
PA
319/* The 'keywords' parameter of PyArg_ParseTupleAndKeywords has type
320 'char **'. However, string literals are const in C++, and so to
321 avoid casting at every keyword array definition, we'll need to make
322 the keywords array an array of 'const char *'. To avoid having all
323 callers add a 'const_cast<char **>' themselves when passing such an
324 array through 'char **', we define our own version of
325 PyArg_ParseTupleAndKeywords here with a corresponding 'keywords'
326 parameter type that does the cast in a single place. (This is not
327 an overload of PyArg_ParseTupleAndKeywords in order to make it
328 clearer that we're calling our own function instead of a function
329 that exists in some newer Python version.) */
330
331static inline int
332gdb_PyArg_ParseTupleAndKeywords (PyObject *args, PyObject *kw,
333 const char *format, const char **keywords, ...)
334{
335 va_list ap;
336 int res;
337
338 va_start (ap, keywords);
339 res = PyArg_VaParseTupleAndKeywords (args, kw, format,
340 const_cast<char **> (keywords),
341 ap);
342 va_end (ap);
343
344 return res;
345}
346
256458bc 347/* In order to be able to parse symtab_and_line_to_sal_object function
9cb74f47
PM
348 a real symtab_and_line structure is needed. */
349#include "symtab.h"
350
d7b32ed3
PM
351/* Also needed to parse enum var_types. */
352#include "command.h"
505500db 353#include "breakpoint.h"
d7b32ed3 354
a73bb892
PK
355enum gdbpy_iter_kind { iter_keys, iter_values, iter_items };
356
f3e9a817 357struct block;
a08702d6 358struct value;
d452c4bc 359struct language_defn;
fa33c3cd 360struct program_space;
505500db 361struct bpstats;
619cebe8 362struct inferior;
d57a3c85 363
0646da15
TT
364extern int gdb_python_initialized;
365
d57a3c85 366extern PyObject *gdb_module;
b9516fa1 367extern PyObject *gdb_python_module;
62eec1a5
TT
368extern PyTypeObject value_object_type
369 CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("value_object");
370extern PyTypeObject block_object_type
371 CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF("block_object");
372extern PyTypeObject symbol_object_type
373 CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("symbol_object");
374extern PyTypeObject event_object_type
375 CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object");
62eec1a5
TT
376extern PyTypeObject stop_event_object_type
377 CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object");
378extern PyTypeObject breakpoint_object_type
379 CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("breakpoint_object");
380extern PyTypeObject frame_object_type
381 CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("frame_object");
cc72b2a2 382
4cb0213d 383typedef struct gdbpy_breakpoint_object
cc72b2a2
KP
384{
385 PyObject_HEAD
386
387 /* The breakpoint number according to gdb. */
388 int number;
389
390 /* The gdb breakpoint object, or NULL if the breakpoint has been
391 deleted. */
392 struct breakpoint *bp;
393
394 /* 1 is this is a FinishBreakpoint object, 0 otherwise. */
395 int is_finish_bp;
4cb0213d 396} gdbpy_breakpoint_object;
cc72b2a2
KP
397
398/* Require that BREAKPOINT be a valid breakpoint ID; throw a Python
399 exception if it is invalid. */
400#define BPPY_REQUIRE_VALID(Breakpoint) \
401 do { \
402 if ((Breakpoint)->bp == NULL) \
403 return PyErr_Format (PyExc_RuntimeError, \
404 _("Breakpoint %d is invalid."), \
405 (Breakpoint)->number); \
406 } while (0)
407
408/* Require that BREAKPOINT be a valid breakpoint ID; throw a Python
409 exception if it is invalid. This macro is for use in setter functions. */
410#define BPPY_SET_REQUIRE_VALID(Breakpoint) \
411 do { \
412 if ((Breakpoint)->bp == NULL) \
413 { \
414 PyErr_Format (PyExc_RuntimeError, _("Breakpoint %d is invalid."), \
415 (Breakpoint)->number); \
416 return -1; \
417 } \
418 } while (0)
419
420
421/* Variables used to pass information between the Breakpoint
422 constructor and the breakpoint-created hook function. */
4cb0213d 423extern gdbpy_breakpoint_object *bppy_pending_object;
505500db 424
a08702d6 425
595939de
PM
426typedef struct
427{
428 PyObject_HEAD
429
430 /* The thread we represent. */
431 struct thread_info *thread;
432
433 /* The Inferior object to which this thread belongs. */
434 PyObject *inf_obj;
435} thread_object;
436
8a1ea21f
DE
437extern struct cmd_list_element *set_python_list;
438extern struct cmd_list_element *show_python_list;
6dddc817
DE
439\f
440/* extension_language_script_ops "methods". */
441
442extern int gdbpy_auto_load_enabled (const struct extension_language_defn *);
443
444/* extension_language_ops "methods". */
445
446extern enum ext_lang_rc gdbpy_apply_val_pretty_printer
447 (const struct extension_language_defn *,
668e1674 448 struct type *type,
6b850546 449 LONGEST embedded_offset, CORE_ADDR address,
6dddc817 450 struct ui_file *stream, int recurse,
668e1674 451 struct value *val,
6dddc817
DE
452 const struct value_print_options *options,
453 const struct language_defn *language);
454extern enum ext_lang_bt_status gdbpy_apply_frame_filter
455 (const struct extension_language_defn *,
456 struct frame_info *frame, int flags, enum ext_lang_frame_args args_type,
457 struct ui_out *out, int frame_low, int frame_high);
458extern void gdbpy_preserve_values (const struct extension_language_defn *,
459 struct objfile *objfile,
460 htab_t copied_types);
461extern enum ext_lang_bp_stop gdbpy_breakpoint_cond_says_stop
462 (const struct extension_language_defn *, struct breakpoint *);
463extern int gdbpy_breakpoint_has_cond (const struct extension_language_defn *,
464 struct breakpoint *b);
883964a7
SC
465
466extern void *gdbpy_clone_xmethod_worker_data
467 (const struct extension_language_defn *extlang, void *data);
468extern void gdbpy_free_xmethod_worker_data
469 (const struct extension_language_defn *extlang, void *data);
470extern enum ext_lang_rc gdbpy_get_matching_xmethod_workers
471 (const struct extension_language_defn *extlang,
472 struct type *obj_type, const char *method_name,
473 xmethod_worker_vec **dm_vec);
474extern enum ext_lang_rc gdbpy_get_xmethod_arg_types
475 (const struct extension_language_defn *extlang,
476 struct xmethod_worker *worker,
477 int *nargs,
478 struct type ***arg_types);
2ce1cdbf
DE
479extern enum ext_lang_rc gdbpy_get_xmethod_result_type
480 (const struct extension_language_defn *extlang,
481 struct xmethod_worker *worker,
482 struct value *object, struct value **args, int nargs,
483 struct type **result_type);
883964a7
SC
484extern struct value *gdbpy_invoke_xmethod
485 (const struct extension_language_defn *extlang,
486 struct xmethod_worker *worker,
487 struct value *obj, struct value **args, int nargs);
6dddc817 488\f
08c637de 489PyObject *gdbpy_history (PyObject *self, PyObject *args);
adc36818 490PyObject *gdbpy_breakpoints (PyObject *, PyObject *);
f8f6f20b 491PyObject *gdbpy_frame_stop_reason_string (PyObject *, PyObject *);
f3e9a817 492PyObject *gdbpy_lookup_symbol (PyObject *self, PyObject *args, PyObject *kw);
6e6fbe60
DE
493PyObject *gdbpy_lookup_global_symbol (PyObject *self, PyObject *args,
494 PyObject *kw);
4726b2d8
TW
495PyObject *gdbpy_start_recording (PyObject *self, PyObject *args);
496PyObject *gdbpy_current_recording (PyObject *self, PyObject *args);
497PyObject *gdbpy_stop_recording (PyObject *self, PyObject *args);
d8e22779 498PyObject *gdbpy_newest_frame (PyObject *self, PyObject *args);
f8f6f20b 499PyObject *gdbpy_selected_frame (PyObject *self, PyObject *args);
f3e9a817 500PyObject *gdbpy_block_for_pc (PyObject *self, PyObject *args);
2c74e833 501PyObject *gdbpy_lookup_type (PyObject *self, PyObject *args, PyObject *kw);
a16b0e22 502int gdbpy_is_field (PyObject *obj);
be759fcf 503PyObject *gdbpy_create_lazy_string_object (CORE_ADDR address, long length,
9a2b4c1b
MS
504 const char *encoding,
505 struct type *type);
595939de 506PyObject *gdbpy_inferiors (PyObject *unused, PyObject *unused2);
162078c8 507PyObject *gdbpy_create_ptid_object (ptid_t ptid);
595939de 508PyObject *gdbpy_selected_thread (PyObject *self, PyObject *args);
2aa48337 509PyObject *gdbpy_selected_inferior (PyObject *self, PyObject *args);
07ca107c 510PyObject *gdbpy_string_to_argv (PyObject *self, PyObject *args);
d7b32ed3 511PyObject *gdbpy_parameter_value (enum var_types type, void *var);
63d97a20 512char *gdbpy_parse_command_name (const char *name,
d7b32ed3
PM
513 struct cmd_list_element ***base_list,
514 struct cmd_list_element **start_list);
a08702d6 515
f3e9a817
PM
516PyObject *symtab_and_line_to_sal_object (struct symtab_and_line sal);
517PyObject *symtab_to_symtab_object (struct symtab *symtab);
518PyObject *symbol_to_symbol_object (struct symbol *sym);
9df2fbc4
PM
519PyObject *block_to_block_object (const struct block *block,
520 struct objfile *objfile);
a08702d6 521PyObject *value_to_value_object (struct value *v);
2c74e833 522PyObject *type_to_type_object (struct type *);
595939de 523PyObject *frame_info_to_frame_object (struct frame_info *frame);
bc79de95 524PyObject *symtab_to_linetable_object (PyObject *symtab);
634c58be
TT
525PyObject *pspace_to_pspace_object (struct program_space *)
526 CPYCHECKER_RETURNS_BORROWED_REF;
fa33c3cd 527PyObject *pspy_get_printers (PyObject *, void *);
1e611234 528PyObject *pspy_get_frame_filters (PyObject *, void *);
d11916aa 529PyObject *pspy_get_frame_unwinders (PyObject *, void *);
883964a7 530PyObject *pspy_get_xmethods (PyObject *, void *);
fa33c3cd 531
634c58be
TT
532PyObject *objfile_to_objfile_object (struct objfile *)
533 CPYCHECKER_RETURNS_BORROWED_REF;
89c73ade 534PyObject *objfpy_get_printers (PyObject *, void *);
1e611234 535PyObject *objfpy_get_frame_filters (PyObject *, void *);
d11916aa 536PyObject *objfpy_get_frame_unwinders (PyObject *, void *);
883964a7 537PyObject *objfpy_get_xmethods (PyObject *, void *);
6dddd6a5 538PyObject *gdbpy_lookup_objfile (PyObject *self, PyObject *args, PyObject *kw);
a08702d6 539
bea883fd
SCR
540PyObject *gdbarch_to_arch_object (struct gdbarch *gdbarch);
541
595939de 542thread_object *create_thread_object (struct thread_info *tp);
634c58be
TT
543thread_object *find_thread_object (ptid_t ptid)
544 CPYCHECKER_RETURNS_BORROWED_REF;
595939de 545PyObject *find_inferior_object (int pid);
505500db 546PyObject *inferior_to_inferior_object (struct inferior *inferior);
595939de 547
9df2fbc4 548const struct block *block_object_to_block (PyObject *obj);
f3e9a817 549struct symbol *symbol_object_to_symbol (PyObject *obj);
a6bac58e 550struct value *value_object_to_value (PyObject *self);
a08702d6 551struct value *convert_value_from_python (PyObject *obj);
2c74e833 552struct type *type_object_to_type (PyObject *obj);
f3e9a817
PM
553struct symtab *symtab_object_to_symtab (PyObject *obj);
554struct symtab_and_line *sal_object_to_symtab_and_line (PyObject *obj);
cc72b2a2 555struct frame_info *frame_object_to_frame_info (PyObject *frame_obj);
bea883fd 556struct gdbarch *arch_object_to_gdbarch (PyObject *obj);
a08702d6 557
037bbc8e 558void gdbpy_initialize_gdb_readline (void);
999633ed
TT
559int gdbpy_initialize_auto_load (void)
560 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
561int gdbpy_initialize_values (void)
562 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
563int gdbpy_initialize_frames (void)
564 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
d050f7d7
TW
565int gdbpy_initialize_instruction (void)
566 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
75c0bdf4
TW
567int gdbpy_initialize_btrace (void)
568 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
4726b2d8
TW
569int gdbpy_initialize_record (void)
570 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
999633ed
TT
571int gdbpy_initialize_symtabs (void)
572 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
573int gdbpy_initialize_commands (void)
574 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
575int gdbpy_initialize_symbols (void)
576 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
577int gdbpy_initialize_symtabs (void)
578 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
579int gdbpy_initialize_blocks (void)
580 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
581int gdbpy_initialize_types (void)
582 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
583int gdbpy_initialize_functions (void)
584 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
585int gdbpy_initialize_pspace (void)
586 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
587int gdbpy_initialize_objfile (void)
588 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
589int gdbpy_initialize_breakpoints (void)
590 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
591int gdbpy_initialize_finishbreakpoints (void)
592 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
593int gdbpy_initialize_lazy_string (void)
594 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
bc79de95
PM
595int gdbpy_initialize_linetable (void)
596 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
999633ed
TT
597int gdbpy_initialize_parameters (void)
598 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
599int gdbpy_initialize_thread (void)
600 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
601int gdbpy_initialize_inferior (void)
602 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
603int gdbpy_initialize_eventregistry (void)
604 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
605int gdbpy_initialize_event (void)
606 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
607int gdbpy_initialize_py_events (void)
608 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
609int gdbpy_initialize_stop_event (void)
610 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
611int gdbpy_initialize_signal_event (void)
612 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
613int gdbpy_initialize_breakpoint_event (void)
614 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
615int gdbpy_initialize_continue_event (void)
616 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
162078c8
NB
617int gdbpy_initialize_inferior_call_pre_event (void)
618 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
619int gdbpy_initialize_inferior_call_post_event (void)
620 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
621int gdbpy_initialize_register_changed_event (void)
622 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
623int gdbpy_initialize_memory_changed_event (void)
624 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
999633ed
TT
625int gdbpy_initialize_exited_event (void)
626 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
627int gdbpy_initialize_thread_event (void)
628 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
629int gdbpy_initialize_new_objfile_event (void)
630 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
4ffbba72
DE
631int gdbpy_initialize_clear_objfiles_event (void)
632 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
999633ed
TT
633int gdbpy_initialize_arch (void)
634 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
883964a7
SC
635int gdbpy_initialize_xmethods (void)
636 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
d11916aa
SS
637int gdbpy_initialize_unwind (void)
638 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
d57a3c85 639
4ecee2c4
TT
640/* Called before entering the Python interpreter to install the
641 current language and architecture to be used for Python values.
642 Also set the active extension language for GDB so that SIGINT's
643 are directed our way, and if necessary install the right SIGINT
644 handler. */
645class gdbpy_enter
646{
647 public:
648
649 gdbpy_enter (struct gdbarch *gdbarch, const struct language_defn *language);
650
651 ~gdbpy_enter ();
652
653 gdbpy_enter (const gdbpy_enter &) = delete;
654 gdbpy_enter &operator= (const gdbpy_enter &) = delete;
655
656 private:
657
658 struct active_ext_lang_state *m_previous_active;
659 PyGILState_STATE m_state;
660 struct gdbarch *m_gdbarch;
661 const struct language_defn *m_language;
662 PyObject *m_error_type, *m_error_value, *m_error_traceback;
663};
664
6cd67bea
TT
665/* Like gdbpy_enter, but takes a varobj. This is a subclass just to
666 make constructor delegation a little nicer. */
667class gdbpy_enter_varobj : public gdbpy_enter
668{
669 public:
670
671 /* This is defined in varobj.c, where it can access varobj
672 internals. */
673 gdbpy_enter_varobj (const struct varobj *var);
674
675};
676
d452c4bc
UW
677extern struct gdbarch *python_gdbarch;
678extern const struct language_defn *python_language;
d57a3c85
TJB
679
680/* Use this after a TRY_EXCEPT to throw the appropriate Python
681 exception. */
56cc411c
TT
682#define GDB_PY_HANDLE_EXCEPTION(Exception) \
683 do { \
684 if (Exception.reason < 0) \
685 { \
686 gdbpy_convert_exception (Exception); \
687 return NULL; \
688 } \
689 } while (0)
d57a3c85 690
adc36818
PM
691/* Use this after a TRY_EXCEPT to throw the appropriate Python
692 exception. This macro is for use inside setter functions. */
693#define GDB_PY_SET_HANDLE_EXCEPTION(Exception) \
694 do { \
695 if (Exception.reason < 0) \
696 { \
621c8364 697 gdbpy_convert_exception (Exception); \
adc36818
PM
698 return -1; \
699 } \
700 } while (0)
d57a3c85 701
69b4374a 702int gdbpy_print_python_errors_p (void);
d57a3c85
TJB
703void gdbpy_print_stack (void);
704
705PyObject *python_string_to_unicode (PyObject *obj);
9b972014
TT
706gdb::unique_xmalloc_ptr<char> unicode_to_target_string (PyObject *unicode_str);
707gdb::unique_xmalloc_ptr<char> python_string_to_target_string (PyObject *obj);
fbb8f299 708PyObject *python_string_to_target_python_string (PyObject *obj);
9b972014 709gdb::unique_xmalloc_ptr<char> python_string_to_host_string (PyObject *obj);
4ae6cc19 710PyObject *host_string_to_python_string (const char *str);
08c637de 711int gdbpy_is_string (PyObject *obj);
9b972014
TT
712gdb::unique_xmalloc_ptr<char> gdbpy_obj_to_string (PyObject *obj);
713gdb::unique_xmalloc_ptr<char> gdbpy_exception_to_string (PyObject *ptype,
714 PyObject *pvalue);
07ca107c 715
be759fcf 716int gdbpy_is_lazy_string (PyObject *result);
09ca9e2e 717void gdbpy_extract_lazy_string (PyObject *string, CORE_ADDR *addr,
256458bc 718 struct type **str_type,
1eba6383
TT
719 long *length,
720 gdb::unique_xmalloc_ptr<char> *encoding);
d57a3c85 721
595939de
PM
722int gdbpy_is_value_object (PyObject *obj);
723
b6313243
TT
724/* Note that these are declared here, and not in python.h with the
725 other pretty-printer functions, because they refer to PyObject. */
fbb8f299 726PyObject *apply_varobj_pretty_printer (PyObject *print_obj,
621c8364
TT
727 struct value **replacement,
728 struct ui_file *stream);
b6313243 729PyObject *gdbpy_get_varobj_pretty_printer (struct value *value);
9b972014 730gdb::unique_xmalloc_ptr<char> gdbpy_get_display_hint (PyObject *printer);
b6313243
TT
731PyObject *gdbpy_default_visualizer (PyObject *self, PyObject *args);
732
4cb0213d
DE
733void bpfinishpy_pre_stop_hook (struct gdbpy_breakpoint_object *bp_obj);
734void bpfinishpy_post_stop_hook (struct gdbpy_breakpoint_object *bp_obj);
cc72b2a2 735
d8906c6f 736extern PyObject *gdbpy_doc_cst;
a6bac58e
TT
737extern PyObject *gdbpy_children_cst;
738extern PyObject *gdbpy_to_string_cst;
739extern PyObject *gdbpy_display_hint_cst;
967cf477 740extern PyObject *gdbpy_enabled_cst;
fb6a3ed3 741extern PyObject *gdbpy_value_cst;
d8906c6f 742
621c8364
TT
743/* Exception types. */
744extern PyObject *gdbpy_gdb_error;
745extern PyObject *gdbpy_gdb_memory_error;
07ca107c
DE
746extern PyObject *gdbpy_gdberror_exc;
747
56cc411c
TT
748extern void gdbpy_convert_exception (struct gdb_exception)
749 CPYCHECKER_SETS_EXCEPTION;
621c8364 750
b86af38a
TT
751int get_addr_from_python (PyObject *obj, CORE_ADDR *addr)
752 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
595939de 753
74aedc46
TT
754PyObject *gdb_py_object_from_longest (LONGEST l);
755PyObject *gdb_py_object_from_ulongest (ULONGEST l);
756int gdb_py_int_as_long (PyObject *, long *);
757
2e8265fd
TT
758PyObject *gdb_py_generic_dict (PyObject *self, void *closure);
759
aa36459a
TT
760int gdb_pymodule_addobject (PyObject *module, const char *name,
761 PyObject *object)
762 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
763
e5250216
YQ
764struct varobj_iter;
765struct varobj;
766struct varobj_iter *py_varobj_get_iterator (struct varobj *var,
767 PyObject *printer);
768
d57a3c85 769#endif /* GDB_PYTHON_INTERNAL_H */
This page took 0.889595 seconds and 4 git commands to generate.