1 /* Gdb/Python header for private use by Python module. 2 3 Copyright (C) 2008, 2009 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 /* Python 2.4 doesn't include stdint.h soon enough to get {u,}intptr_t 24 needed by pyport.h. */ 25 #include <stdint.h> 26 27 /* /usr/include/features.h on linux systems will define _POSIX_C_SOURCE 28 if it sees _GNU_SOURCE (which config.h will define). 29 pyconfig.h defines _POSIX_C_SOURCE to a different value than 30 /usr/include/features.h does causing compilation to fail. 31 To work around this, undef _POSIX_C_SOURCE before we include Python.h. */ 32 #undef _POSIX_C_SOURCE 33 34 #if HAVE_LIBPYTHON2_4 35 #include "python2.4/Python.h" 36 #include "python2.4/frameobject.h" 37 /* Py_ssize_t is not defined until 2.5. 38 Logical type for Py_ssize_t is Py_intptr_t, but that fails in 64-bit 39 compilation due to several apparent mistakes in python2.4 API, so we 40 use 'int' instead. */ 41 typedef int Py_ssize_t; 42 #elif HAVE_LIBPYTHON2_5 43 #include "python2.5/Python.h" 44 #include "python2.5/frameobject.h" 45 #elif HAVE_LIBPYTHON2_6 46 #include "python2.6/Python.h" 47 #include "python2.6/frameobject.h" 48 #else 49 #error "Unable to find usable Python.h" 50 #endif 51 52 /* If Python.h does not define WITH_THREAD, then the various 53 GIL-related functions will not be defined. However, 54 PyGILState_STATE will be. */ 55 #ifndef WITH_THREAD 56 #define PyGILState_Ensure() ((PyGILState_STATE) 0) 57 #define PyGILState_Release(ARG) (ARG) 58 #define PyEval_InitThreads() 0 59 #define PyThreadState_Swap(ARG) (ARG) 60 #define PyEval_InitThreads() 0 61 #define PyEval_ReleaseLock() 0 62 #endif 63 64 struct value; 65 struct language_defn; 66 67 extern PyObject *gdb_module; 68 extern PyTypeObject value_object_type; 69 70 PyObject *gdbpy_history (PyObject *self, PyObject *args); 71 PyObject *gdbpy_frame_stop_reason_string (PyObject *, PyObject *); 72 PyObject *gdbpy_selected_frame (PyObject *self, PyObject *args); 73 PyObject *gdbpy_lookup_type (PyObject *self, PyObject *args, PyObject *kw); 74 75 PyObject *value_to_value_object (struct value *v); 76 PyObject *type_to_type_object (struct type *); 77 PyObject *objfile_to_objfile_object (struct objfile *); 78 79 PyObject *objfpy_get_printers (PyObject *, void *); 80 81 struct value *value_object_to_value (PyObject *self); 82 struct value *convert_value_from_python (PyObject *obj); 83 struct type *type_object_to_type (PyObject *obj); 84 85 void gdbpy_initialize_values (void); 86 void gdbpy_initialize_frames (void); 87 void gdbpy_initialize_commands (void); 88 void gdbpy_initialize_types (void); 89 void gdbpy_initialize_functions (void); 90 void gdbpy_initialize_objfile (void); 91 92 struct cleanup *make_cleanup_py_decref (PyObject *py); 93 94 struct cleanup *ensure_python_env (struct gdbarch *gdbarch, 95 const struct language_defn *language); 96 97 extern struct gdbarch *python_gdbarch; 98 extern const struct language_defn *python_language; 99 100 /* Use this after a TRY_EXCEPT to throw the appropriate Python 101 exception. */ 102 #define GDB_PY_HANDLE_EXCEPTION(Exception) \ 103 do { \ 104 if (Exception.reason < 0) \ 105 return PyErr_Format (Exception.reason == RETURN_QUIT \ 106 ? PyExc_KeyboardInterrupt : PyExc_RuntimeError, \ 107 "%s", Exception.message); \ 108 } while (0) 109 110 111 void gdbpy_print_stack (void); 112 113 PyObject *python_string_to_unicode (PyObject *obj); 114 char *unicode_to_target_string (PyObject *unicode_str); 115 char *python_string_to_target_string (PyObject *obj); 116 PyObject *python_string_to_target_python_string (PyObject *obj); 117 char *python_string_to_host_string (PyObject *obj); 118 PyObject *target_string_to_unicode (const gdb_byte *str, int length); 119 int gdbpy_is_string (PyObject *obj); 120 121 /* Note that these are declared here, and not in python.h with the 122 other pretty-printer functions, because they refer to PyObject. */ 123 PyObject *apply_varobj_pretty_printer (PyObject *print_obj, 124 struct value **replacement); 125 PyObject *gdbpy_get_varobj_pretty_printer (struct value *value); 126 char *gdbpy_get_display_hint (PyObject *printer); 127 PyObject *gdbpy_default_visualizer (PyObject *self, PyObject *args); 128 129 extern PyObject *gdbpy_doc_cst; 130 extern PyObject *gdbpy_children_cst; 131 extern PyObject *gdbpy_to_string_cst; 132 extern PyObject *gdbpy_display_hint_cst; 133 134 #endif /* GDB_PYTHON_INTERNAL_H */ 135