From 56cc411c4ba10261e0149bdb80d613969c3ab130 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Mon, 20 May 2013 20:19:03 +0000 Subject: * python/py-arch.c (archpy_disassemble): Update. * python/py-type.c (typy_get_composite, typy_lookup_typename) (typy_lookup_type): Use GDB_PY_HANDLE_EXCEPTION. * python/py-utils.c (gdbpy_convert_exception): Return 'void'. * python/python-internal.h (CPYCHECKER_SETS_EXCEPTION): New macro. (GDB_PY_HANDLE_EXCEPTION): Update. (gdbpy_convert_exception): Update. Use CPYCHECKER_SETS_EXCEPTION. --- gdb/python/python-internal.h | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'gdb/python/python-internal.h') diff --git a/gdb/python/python-internal.h b/gdb/python/python-internal.h index 643bdcf..2b4244c 100644 --- a/gdb/python/python-internal.h +++ b/gdb/python/python-internal.h @@ -47,6 +47,12 @@ #define CPYCHECKER_STEALS_REFERENCE_TO_ARG(n) #endif +#ifdef WITH_CPYCHECKER_SETS_EXCEPTION_ATTRIBUTE +#define CPYCHECKER_SETS_EXCEPTION __attribute__ ((cpychecker_sets_exception)) +#else +#define CPYCHECKER_SETS_EXCEPTION +#endif + #include /* Python 2.4 doesn't include stdint.h soon enough to get {u,}intptr_t @@ -352,11 +358,14 @@ extern const struct language_defn *python_language; /* Use this after a TRY_EXCEPT to throw the appropriate Python exception. */ -#define GDB_PY_HANDLE_EXCEPTION(Exception) \ - do { \ - if (Exception.reason < 0) \ - return gdbpy_convert_exception (Exception); \ - } while (0) +#define GDB_PY_HANDLE_EXCEPTION(Exception) \ + do { \ + if (Exception.reason < 0) \ + { \ + gdbpy_convert_exception (Exception); \ + return NULL; \ + } \ + } while (0) /* Use this after a TRY_EXCEPT to throw the appropriate Python exception. This macro is for use inside setter functions. */ @@ -414,7 +423,8 @@ extern PyObject *gdbpy_gdb_error; extern PyObject *gdbpy_gdb_memory_error; extern PyObject *gdbpy_gdberror_exc; -extern PyObject *gdbpy_convert_exception (struct gdb_exception); +extern void gdbpy_convert_exception (struct gdb_exception) + CPYCHECKER_SETS_EXCEPTION; int get_addr_from_python (PyObject *obj, CORE_ADDR *addr); -- cgit v1.1