From 8091b73a70c56a7be474c23efa2a8ab598a7b186 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Mon, 22 Apr 2013 12:23:48 -0600 Subject: [PATCH 08/33] add CPYCHECKER_STEALS_REFERENCE_TO_ARG The checker provides an attribute that can be used to indicate that a function steals a reference to an argument. This patch adds a macro for this attribute to gdb and changes one spot to use it. * python/py-event.h (evpy_emit_event): Use CPYCHECKER_STEALS_REFERENCE_TO_ARG. * python/python-internal.h (CPYCHECKER_STEALS_REFERENCE_TO_ARG): New macro. --- gdb/python/py-event.h | 3 ++- gdb/python/python-internal.h | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/gdb/python/py-event.h b/gdb/python/py-event.h index 970595b..1db8bd2 100644 --- a/gdb/python/py-event.h +++ b/gdb/python/py-event.h @@ -106,7 +106,8 @@ extern int emit_continue_event (ptid_t ptid); extern int emit_exited_event (const LONGEST *exit_code, struct inferior *inf); extern int evpy_emit_event (PyObject *event, - eventregistry_object *registry); + eventregistry_object *registry) + CPYCHECKER_STEALS_REFERENCE_TO_ARG (1); extern PyObject *create_event_object (PyTypeObject *py_type); extern PyObject *create_thread_event_object (PyTypeObject *py_type); diff --git a/gdb/python/python-internal.h b/gdb/python/python-internal.h index 394a148..5fbb472 100644 --- a/gdb/python/python-internal.h +++ b/gdb/python/python-internal.h @@ -34,6 +34,13 @@ #define CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF(ARG) #endif +#ifdef WITH_CPYCHECKER_STEALS_REFERENCE_TO_ARG_ATTRIBUTE +#define CPYCHECKER_STEALS_REFERENCE_TO_ARG(n) \ + __attribute__ ((cpychecker_steals_reference_to_arg (n))) +#else +#define CPYCHECKER_STEALS_REFERENCE_TO_ARG(n) +#endif + #include /* Python 2.4 doesn't include stdint.h soon enough to get {u,}intptr_t -- 1.8.1.4