1 /* Gdb/Python header for private use by Python module. 2 3 Copyright (C) 2008-2015 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 GDB_PYTHON_INTERNAL_H 21 #define GDB_PYTHON_INTERNAL_H 22 23 #include "extension.h" 24 25 /* These WITH_* macros are defined by the CPython API checker that 26 comes with the Python plugin for GCC. See: 27 https://gcc-python-plugin.readthedocs.org/en/latest/cpychecker.html 28 The checker defines a WITH_ macro for each attribute it 29 exposes. */ 30 31 #ifdef WITH_CPYCHECKER_RETURNS_BORROWED_REF_ATTRIBUTE 32 #define CPYCHECKER_RETURNS_BORROWED_REF \ 33 __attribute__ ((cpychecker_returns_borrowed_ref)) 34 #else 35 #define CPYCHECKER_RETURNS_BORROWED_REF 36 #endif 37 38 #ifdef WITH_CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF_ATTRIBUTE 39 #define CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF(ARG) \ 40 __attribute__ ((cpychecker_type_object_for_typedef (ARG))) 41 #else 42 #define CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF(ARG) 43 #endif 44 45 #ifdef WITH_CPYCHECKER_STEALS_REFERENCE_TO_ARG_ATTRIBUTE 46 #define CPYCHECKER_STEALS_REFERENCE_TO_ARG(n) \ 47 __attribute__ ((cpychecker_steals_reference_to_arg (n))) 48 #else 49 #define CPYCHECKER_STEALS_REFERENCE_TO_ARG(n) 50 #endif 51 52 #ifdef WITH_CPYCHECKER_SETS_EXCEPTION_ATTRIBUTE 53 #define CPYCHECKER_SETS_EXCEPTION __attribute__ ((cpychecker_sets_exception)) 54 #else 55 #define CPYCHECKER_SETS_EXCEPTION 56 #endif 57 58 #ifdef WITH_CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION_ATTRIBUTE 59 #define CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION \ 60 __attribute__ ((cpychecker_negative_result_sets_exception)) 61 #else 62 #define CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION 63 #endif 64 65 /* Python 2.4 doesn't include stdint.h soon enough to get {u,}intptr_t 66 needed by pyport.h. */ 67 #include <stdint.h> 68 69 /* /usr/include/features.h on linux systems will define _POSIX_C_SOURCE 70 if it sees _GNU_SOURCE (which config.h will define). 71 pyconfig.h defines _POSIX_C_SOURCE to a different value than 72 /usr/include/features.h does causing compilation to fail. 73 To work around this, undef _POSIX_C_SOURCE before we include Python.h. 74 75 Same problem with _XOPEN_SOURCE. */ 76 #undef _POSIX_C_SOURCE 77 #undef _XOPEN_SOURCE 78 79 /* On sparc-solaris, /usr/include/sys/feature_tests.h defines 80 _FILE_OFFSET_BITS, which pyconfig.h also defines. Same work 81 around technique as above. */ 82 #undef _FILE_OFFSET_BITS 83 84 /* A kludge to avoid redefinition of snprintf on Windows by pyerrors.h. */ 85 #if defined(_WIN32) && defined(HAVE_DECL_SNPRINTF) 86 #define HAVE_SNPRINTF 1 87 #endif 88 89 /* Request clean size types from Python. */ 90 #define PY_SSIZE_T_CLEAN 91 92 /* Include the Python header files using angle brackets rather than 93 double quotes. On case-insensitive filesystems, this prevents us 94 from including our python/python.h header file. */ 95 #include <Python.h> 96 #include <frameobject.h> 97 98 #if PY_MAJOR_VERSION >= 3 99 #define IS_PY3K 1 100 #endif 101 102 #ifdef IS_PY3K 103 #define Py_TPFLAGS_HAVE_ITER 0 104 #define Py_TPFLAGS_CHECKTYPES 0 105 106 #define PyInt_Check PyLong_Check 107 #define PyInt_FromLong PyLong_FromLong 108 #define PyInt_AsLong PyLong_AsLong 109 110 #define PyString_FromString PyUnicode_FromString 111 #define PyString_Decode PyUnicode_Decode 112 #define PyString_FromFormat PyUnicode_FromFormat 113 #define PyString_Check PyUnicode_Check 114 #endif 115 116 #if HAVE_LIBPYTHON2_4 117 /* Py_ssize_t is not defined until 2.5. 118 Logical type for Py_ssize_t is Py_intptr_t, but that fails in 64-bit 119 compilation due to several apparent mistakes in python2.4 API, so we 120 use 'int' instead. */ 121 typedef int Py_ssize_t; 122 #endif 123 124 #ifndef PyVarObject_HEAD_INIT 125 /* Python 2.4 does not define PyVarObject_HEAD_INIT. */ 126 #define PyVarObject_HEAD_INIT(type, size) \ 127 PyObject_HEAD_INIT(type) size, 128 129 #endif 130 131 #ifndef Py_TYPE 132 /* Python 2.4 does not define Py_TYPE. */ 133 #define Py_TYPE(ob) (((PyObject*)(ob))->ob_type) 134 #endif 135 136 /* If Python.h does not define WITH_THREAD, then the various 137 GIL-related functions will not be defined. However, 138 PyGILState_STATE will be. */ 139 #ifndef WITH_THREAD 140 #define PyGILState_Ensure() ((PyGILState_STATE) 0) 141 #define PyGILState_Release(ARG) ((void)(ARG)) 142 #define PyEval_InitThreads() 143 #define PyThreadState_Swap(ARG) ((void)(ARG)) 144 #define PyEval_ReleaseLock() 145 #endif 146 147 /* Python supplies HAVE_LONG_LONG and some `long long' support when it 148 is available. These defines let us handle the differences more 149 cleanly. */ 150 #ifdef HAVE_LONG_LONG 151 152 #define GDB_PY_LL_ARG "L" 153 #define GDB_PY_LLU_ARG "K" 154 typedef PY_LONG_LONG gdb_py_longest; 155 typedef unsigned PY_LONG_LONG gdb_py_ulongest; 156 #define gdb_py_long_from_longest PyLong_FromLongLong 157 #define gdb_py_long_from_ulongest PyLong_FromUnsignedLongLong 158 #define gdb_py_long_as_ulongest PyLong_AsUnsignedLongLong 159 160 #else /* HAVE_LONG_LONG */ 161 162 #define GDB_PY_LL_ARG "L" 163 #define GDB_PY_LLU_ARG "K" 164 typedef long gdb_py_longest; 165 typedef unsigned long gdb_py_ulongest; 166 #define gdb_py_long_from_longest PyLong_FromLong 167 #define gdb_py_long_from_ulongest PyLong_FromUnsignedLong 168 #define gdb_py_long_as_ulongest PyLong_AsUnsignedLong 169 170 #endif /* HAVE_LONG_LONG */ 171 172 /* Python 2.6 did not wrap Py_DECREF in 'do {...} while (0)', leading 173 to 'suggest explicit braces to avoid ambiguous ‘else’' gcc errors. 174 Wrap it ourselves, so that callers don't need to care. */ 175 176 static inline void 177 gdb_Py_DECREF (void *op) /* ARI: editCase function */ 178 { 179 /* ... and Python 2.4 didn't cast OP to PyObject pointer on the 180 '(op)->ob_refcnt' references within the macro. Cast it ourselves 181 too. */ 182 Py_DECREF ((PyObject *) op); 183 } 184 185 #undef Py_DECREF 186 #define Py_DECREF(op) gdb_Py_DECREF (op) 187 188 /* The second argument to PyObject_GetAttrString was missing the 'const' 189 qualifier in Python-2.4. Hence, we wrap it in a function to avoid errors 190 when compiled with -Werror. */ 191 192 static inline PyObject * 193 gdb_PyObject_GetAttrString (PyObject *obj, 194 const char *attr) /* ARI: editCase function */ 195 { 196 return PyObject_GetAttrString (obj, (char *) attr); 197 } 198 199 #define PyObject_GetAttrString(obj, attr) gdb_PyObject_GetAttrString (obj, attr) 200 201 /* The second argument to PyObject_HasAttrString was also missing the 'const' 202 qualifier in Python-2.4. Hence, we wrap it also in a function to avoid 203 errors when compiled with -Werror. */ 204 205 static inline int 206 gdb_PyObject_HasAttrString (PyObject *obj, 207 const char *attr) /* ARI: editCase function */ 208 { 209 return PyObject_HasAttrString (obj, (char *) attr); 210 } 211 212 #define PyObject_HasAttrString(obj, attr) gdb_PyObject_HasAttrString (obj, attr) 213 214 /* In order to be able to parse symtab_and_line_to_sal_object function 215 a real symtab_and_line structure is needed. */ 216 #include "symtab.h" 217 218 /* Also needed to parse enum var_types. */ 219 #include "command.h" 220 #include "breakpoint.h" 221 222 enum gdbpy_iter_kind { iter_keys, iter_values, iter_items }; 223 224 struct block; 225 struct value; 226 struct language_defn; 227 struct program_space; 228 struct bpstats; 229 struct inferior; 230 231 extern int gdb_python_initialized; 232 233 extern PyObject *gdb_module; 234 extern PyObject *gdb_python_module; 235 extern PyTypeObject value_object_type 236 CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("value_object"); 237 extern PyTypeObject block_object_type 238 CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF("block_object"); 239 extern PyTypeObject symbol_object_type 240 CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("symbol_object"); 241 extern PyTypeObject event_object_type 242 CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object"); 243 extern PyTypeObject stop_event_object_type 244 CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object"); 245 extern PyTypeObject breakpoint_object_type 246 CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("breakpoint_object"); 247 extern PyTypeObject frame_object_type 248 CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("frame_object"); 249 250 typedef struct gdbpy_breakpoint_object 251 { 252 PyObject_HEAD 253 254 /* The breakpoint number according to gdb. */ 255 int number; 256 257 /* The gdb breakpoint object, or NULL if the breakpoint has been 258 deleted. */ 259 struct breakpoint *bp; 260 261 /* 1 is this is a FinishBreakpoint object, 0 otherwise. */ 262 int is_finish_bp; 263 } gdbpy_breakpoint_object; 264 265 /* Require that BREAKPOINT be a valid breakpoint ID; throw a Python 266 exception if it is invalid. */ 267 #define BPPY_REQUIRE_VALID(Breakpoint) \ 268 do { \ 269 if ((Breakpoint)->bp == NULL) \ 270 return PyErr_Format (PyExc_RuntimeError, \ 271 _("Breakpoint %d is invalid."), \ 272 (Breakpoint)->number); \ 273 } while (0) 274 275 /* Require that BREAKPOINT be a valid breakpoint ID; throw a Python 276 exception if it is invalid. This macro is for use in setter functions. */ 277 #define BPPY_SET_REQUIRE_VALID(Breakpoint) \ 278 do { \ 279 if ((Breakpoint)->bp == NULL) \ 280 { \ 281 PyErr_Format (PyExc_RuntimeError, _("Breakpoint %d is invalid."), \ 282 (Breakpoint)->number); \ 283 return -1; \ 284 } \ 285 } while (0) 286 287 288 /* Variables used to pass information between the Breakpoint 289 constructor and the breakpoint-created hook function. */ 290 extern gdbpy_breakpoint_object *bppy_pending_object; 291 292 293 typedef struct 294 { 295 PyObject_HEAD 296 297 /* The thread we represent. */ 298 struct thread_info *thread; 299 300 /* The Inferior object to which this thread belongs. */ 301 PyObject *inf_obj; 302 } thread_object; 303 304 extern struct cmd_list_element *set_python_list; 305 extern struct cmd_list_element *show_python_list; 306 307 /* extension_language_script_ops "methods". */ 308 309 extern int gdbpy_auto_load_enabled (const struct extension_language_defn *); 310 311 /* extension_language_ops "methods". */ 312 313 extern enum ext_lang_rc gdbpy_apply_val_pretty_printer 314 (const struct extension_language_defn *, 315 struct type *type, const gdb_byte *valaddr, 316 int embedded_offset, CORE_ADDR address, 317 struct ui_file *stream, int recurse, 318 const struct value *val, 319 const struct value_print_options *options, 320 const struct language_defn *language); 321 extern enum ext_lang_bt_status gdbpy_apply_frame_filter 322 (const struct extension_language_defn *, 323 struct frame_info *frame, int flags, enum ext_lang_frame_args args_type, 324 struct ui_out *out, int frame_low, int frame_high); 325 extern void gdbpy_preserve_values (const struct extension_language_defn *, 326 struct objfile *objfile, 327 htab_t copied_types); 328 extern enum ext_lang_bp_stop gdbpy_breakpoint_cond_says_stop 329 (const struct extension_language_defn *, struct breakpoint *); 330 extern int gdbpy_breakpoint_has_cond (const struct extension_language_defn *, 331 struct breakpoint *b); 332 333 extern void *gdbpy_clone_xmethod_worker_data 334 (const struct extension_language_defn *extlang, void *data); 335 extern void gdbpy_free_xmethod_worker_data 336 (const struct extension_language_defn *extlang, void *data); 337 extern enum ext_lang_rc gdbpy_get_matching_xmethod_workers 338 (const struct extension_language_defn *extlang, 339 struct type *obj_type, const char *method_name, 340 xmethod_worker_vec **dm_vec); 341 extern enum ext_lang_rc gdbpy_get_xmethod_arg_types 342 (const struct extension_language_defn *extlang, 343 struct xmethod_worker *worker, 344 int *nargs, 345 struct type ***arg_types); 346 extern enum ext_lang_rc gdbpy_get_xmethod_result_type 347 (const struct extension_language_defn *extlang, 348 struct xmethod_worker *worker, 349 struct value *object, struct value **args, int nargs, 350 struct type **result_type); 351 extern struct value *gdbpy_invoke_xmethod 352 (const struct extension_language_defn *extlang, 353 struct xmethod_worker *worker, 354 struct value *obj, struct value **args, int nargs); 355 356 PyObject *gdbpy_history (PyObject *self, PyObject *args); 357 PyObject *gdbpy_breakpoints (PyObject *, PyObject *); 358 PyObject *gdbpy_frame_stop_reason_string (PyObject *, PyObject *); 359 PyObject *gdbpy_lookup_symbol (PyObject *self, PyObject *args, PyObject *kw); 360 PyObject *gdbpy_lookup_global_symbol (PyObject *self, PyObject *args, 361 PyObject *kw); 362 PyObject *gdbpy_newest_frame (PyObject *self, PyObject *args); 363 PyObject *gdbpy_selected_frame (PyObject *self, PyObject *args); 364 PyObject *gdbpy_block_for_pc (PyObject *self, PyObject *args); 365 PyObject *gdbpy_lookup_type (PyObject *self, PyObject *args, PyObject *kw); 366 int gdbpy_is_field (PyObject *obj); 367 PyObject *gdbpy_create_lazy_string_object (CORE_ADDR address, long length, 368 const char *encoding, 369 struct type *type); 370 PyObject *gdbpy_inferiors (PyObject *unused, PyObject *unused2); 371 PyObject *gdbpy_create_ptid_object (ptid_t ptid); 372 PyObject *gdbpy_selected_thread (PyObject *self, PyObject *args); 373 PyObject *gdbpy_selected_inferior (PyObject *self, PyObject *args); 374 PyObject *gdbpy_string_to_argv (PyObject *self, PyObject *args); 375 PyObject *gdbpy_parameter (PyObject *self, PyObject *args); 376 PyObject *gdbpy_parameter_value (enum var_types type, void *var); 377 char *gdbpy_parse_command_name (const char *name, 378 struct cmd_list_element ***base_list, 379 struct cmd_list_element **start_list); 380 381 PyObject *symtab_and_line_to_sal_object (struct symtab_and_line sal); 382 PyObject *symtab_to_symtab_object (struct symtab *symtab); 383 PyObject *symbol_to_symbol_object (struct symbol *sym); 384 PyObject *block_to_block_object (const struct block *block, 385 struct objfile *objfile); 386 PyObject *value_to_value_object (struct value *v); 387 PyObject *type_to_type_object (struct type *); 388 PyObject *frame_info_to_frame_object (struct frame_info *frame); 389 PyObject *symtab_to_linetable_object (PyObject *symtab); 390 PyObject *pspace_to_pspace_object (struct program_space *) 391 CPYCHECKER_RETURNS_BORROWED_REF; 392 PyObject *pspy_get_printers (PyObject *, void *); 393 PyObject *pspy_get_frame_filters (PyObject *, void *); 394 PyObject *pspy_get_xmethods (PyObject *, void *); 395 396 PyObject *objfile_to_objfile_object (struct objfile *) 397 CPYCHECKER_RETURNS_BORROWED_REF; 398 PyObject *objfpy_get_printers (PyObject *, void *); 399 PyObject *objfpy_get_frame_filters (PyObject *, void *); 400 PyObject *objfpy_get_xmethods (PyObject *, void *); 401 PyObject *gdbpy_lookup_objfile (PyObject *self, PyObject *args, PyObject *kw); 402 403 PyObject *gdbarch_to_arch_object (struct gdbarch *gdbarch); 404 405 thread_object *create_thread_object (struct thread_info *tp); 406 thread_object *find_thread_object (ptid_t ptid) 407 CPYCHECKER_RETURNS_BORROWED_REF; 408 PyObject *find_inferior_object (int pid); 409 PyObject *inferior_to_inferior_object (struct inferior *inferior); 410 411 const struct block *block_object_to_block (PyObject *obj); 412 struct symbol *symbol_object_to_symbol (PyObject *obj); 413 struct value *value_object_to_value (PyObject *self); 414 struct value *convert_value_from_python (PyObject *obj); 415 struct type *type_object_to_type (PyObject *obj); 416 struct symtab *symtab_object_to_symtab (PyObject *obj); 417 struct symtab_and_line *sal_object_to_symtab_and_line (PyObject *obj); 418 struct frame_info *frame_object_to_frame_info (PyObject *frame_obj); 419 struct gdbarch *arch_object_to_gdbarch (PyObject *obj); 420 421 void gdbpy_initialize_gdb_readline (void); 422 int gdbpy_initialize_auto_load (void) 423 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 424 int gdbpy_initialize_values (void) 425 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 426 int gdbpy_initialize_frames (void) 427 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 428 int gdbpy_initialize_symtabs (void) 429 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 430 int gdbpy_initialize_commands (void) 431 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 432 int gdbpy_initialize_symbols (void) 433 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 434 int gdbpy_initialize_symtabs (void) 435 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 436 int gdbpy_initialize_blocks (void) 437 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 438 int gdbpy_initialize_types (void) 439 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 440 int gdbpy_initialize_functions (void) 441 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 442 int gdbpy_initialize_pspace (void) 443 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 444 int gdbpy_initialize_objfile (void) 445 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 446 int gdbpy_initialize_breakpoints (void) 447 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 448 int gdbpy_initialize_finishbreakpoints (void) 449 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 450 int gdbpy_initialize_lazy_string (void) 451 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 452 int gdbpy_initialize_linetable (void) 453 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 454 int gdbpy_initialize_parameters (void) 455 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 456 int gdbpy_initialize_thread (void) 457 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 458 int gdbpy_initialize_inferior (void) 459 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 460 int gdbpy_initialize_eventregistry (void) 461 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 462 int gdbpy_initialize_event (void) 463 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 464 int gdbpy_initialize_py_events (void) 465 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 466 int gdbpy_initialize_stop_event (void) 467 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 468 int gdbpy_initialize_signal_event (void) 469 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 470 int gdbpy_initialize_breakpoint_event (void) 471 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 472 int gdbpy_initialize_continue_event (void) 473 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 474 int gdbpy_initialize_inferior_call_pre_event (void) 475 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 476 int gdbpy_initialize_inferior_call_post_event (void) 477 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 478 int gdbpy_initialize_register_changed_event (void) 479 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 480 int gdbpy_initialize_memory_changed_event (void) 481 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 482 int gdbpy_initialize_exited_event (void) 483 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 484 int gdbpy_initialize_thread_event (void) 485 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 486 int gdbpy_initialize_new_objfile_event (void) 487 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 488 int gdbpy_initialize_clear_objfiles_event (void) 489 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 490 int gdbpy_initialize_arch (void) 491 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 492 int gdbpy_initialize_xmethods (void) 493 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 494 495 struct cleanup *make_cleanup_py_decref (PyObject *py); 496 struct cleanup *make_cleanup_py_xdecref (PyObject *py); 497 498 struct cleanup *ensure_python_env (struct gdbarch *gdbarch, 499 const struct language_defn *language); 500 501 extern struct gdbarch *python_gdbarch; 502 extern const struct language_defn *python_language; 503 504 /* Use this after a TRY_EXCEPT to throw the appropriate Python 505 exception. */ 506 #define GDB_PY_HANDLE_EXCEPTION(Exception) \ 507 do { \ 508 if (Exception.reason < 0) \ 509 { \ 510 gdbpy_convert_exception (Exception); \ 511 return NULL; \ 512 } \ 513 } while (0) 514 515 /* Use this after a TRY_EXCEPT to throw the appropriate Python 516 exception. This macro is for use inside setter functions. */ 517 #define GDB_PY_SET_HANDLE_EXCEPTION(Exception) \ 518 do { \ 519 if (Exception.reason < 0) \ 520 { \ 521 gdbpy_convert_exception (Exception); \ 522 return -1; \ 523 } \ 524 } while (0) 525 526 void gdbpy_print_stack (void); 527 528 PyObject *python_string_to_unicode (PyObject *obj); 529 char *unicode_to_target_string (PyObject *unicode_str); 530 char *python_string_to_target_string (PyObject *obj); 531 PyObject *python_string_to_target_python_string (PyObject *obj); 532 char *python_string_to_host_string (PyObject *obj); 533 int gdbpy_is_string (PyObject *obj); 534 char *gdbpy_obj_to_string (PyObject *obj); 535 char *gdbpy_exception_to_string (PyObject *ptype, PyObject *pvalue); 536 537 int gdbpy_is_lazy_string (PyObject *result); 538 void gdbpy_extract_lazy_string (PyObject *string, CORE_ADDR *addr, 539 struct type **str_type, 540 long *length, char **encoding); 541 542 int gdbpy_is_value_object (PyObject *obj); 543 544 /* Note that these are declared here, and not in python.h with the 545 other pretty-printer functions, because they refer to PyObject. */ 546 PyObject *apply_varobj_pretty_printer (PyObject *print_obj, 547 struct value **replacement, 548 struct ui_file *stream); 549 PyObject *gdbpy_get_varobj_pretty_printer (struct value *value); 550 char *gdbpy_get_display_hint (PyObject *printer); 551 PyObject *gdbpy_default_visualizer (PyObject *self, PyObject *args); 552 553 void bpfinishpy_pre_stop_hook (struct gdbpy_breakpoint_object *bp_obj); 554 void bpfinishpy_post_stop_hook (struct gdbpy_breakpoint_object *bp_obj); 555 556 extern PyObject *gdbpy_doc_cst; 557 extern PyObject *gdbpy_children_cst; 558 extern PyObject *gdbpy_to_string_cst; 559 extern PyObject *gdbpy_display_hint_cst; 560 extern PyObject *gdbpy_enabled_cst; 561 extern PyObject *gdbpy_value_cst; 562 563 /* Exception types. */ 564 extern PyObject *gdbpy_gdb_error; 565 extern PyObject *gdbpy_gdb_memory_error; 566 extern PyObject *gdbpy_gdberror_exc; 567 568 extern void gdbpy_convert_exception (struct gdb_exception) 569 CPYCHECKER_SETS_EXCEPTION; 570 571 int get_addr_from_python (PyObject *obj, CORE_ADDR *addr) 572 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 573 574 PyObject *gdb_py_object_from_longest (LONGEST l); 575 PyObject *gdb_py_object_from_ulongest (ULONGEST l); 576 int gdb_py_int_as_long (PyObject *, long *); 577 578 PyObject *gdb_py_generic_dict (PyObject *self, void *closure); 579 580 int gdb_pymodule_addobject (PyObject *module, const char *name, 581 PyObject *object) 582 CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION; 583 584 struct varobj_iter; 585 struct varobj; 586 struct varobj_iter *py_varobj_get_iterator (struct varobj *var, 587 PyObject *printer); 588 589 #endif /* GDB_PYTHON_INTERNAL_H */ 590