This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 09/28] introduce and use CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION


The checker provides an attribute that indicates that a function sets
the Python exception if it returns a negative value.  This patch
introduces a new macro for this attribute and changes gdb to use it
where appropriate.

	* python/py-event.h (gdbpy_initialize_event_generic): Use
	CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION.
	* python/py-evts.c (add_new_registry): Use
	CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION.
	* python/python-internal.h
	(CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION): New macro.
---
 gdb/python/py-event.h        | 7 ++++---
 gdb/python/py-evts.c         | 2 +-
 gdb/python/python-internal.h | 7 +++++++
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/gdb/python/py-event.h b/gdb/python/py-event.h
index 1db8bd2..4850f1a 100644
--- a/gdb/python/py-event.h
+++ b/gdb/python/py-event.h
@@ -115,8 +115,9 @@ extern int emit_new_objfile_event (struct objfile *objfile);
 
 extern void evpy_dealloc (PyObject *self);
 extern int evpy_add_attribute (PyObject *event,
-                               char *name, PyObject *attr);
-int gdbpy_initialize_event_generic (PyTypeObject *type, char *name);
-
+                               char *name, PyObject *attr)
+  CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
+int gdbpy_initialize_event_generic (PyTypeObject *type, char *name)
+  CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
 
 #endif /* GDB_PY_EVENT_H */
diff --git a/gdb/python/py-evts.c b/gdb/python/py-evts.c
index 4c079e2..427b6d5 100644
--- a/gdb/python/py-evts.c
+++ b/gdb/python/py-evts.c
@@ -37,7 +37,7 @@ static struct PyModuleDef EventModuleDef =
 
 /* Initialize python events.  */
 
-static int
+static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
 add_new_registry (eventregistry_object **registryp, char *name)
 {
   *registryp = create_eventregistry_object ();
diff --git a/gdb/python/python-internal.h b/gdb/python/python-internal.h
index 57fcc74..b887b66 100644
--- a/gdb/python/python-internal.h
+++ b/gdb/python/python-internal.h
@@ -47,6 +47,13 @@
 #define CPYCHECKER_SETS_EXCEPTION
 #endif
 
+#ifdef WITH_CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION_ATTRIBUTE
+#define CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION		\
+  __attribute__ ((cpychecker_negative_result_sets_exception))
+#else
+#define CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
+#endif
+
 #include <stdio.h>
 
 /* Python 2.4 doesn't include stdint.h soon enough to get {u,}intptr_t
-- 
1.8.1.4



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]