This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[OB/COMMIT PATCH] Fix build breakage with Python 2.4.
- From: Pedro Alves <palves at redhat dot com>
- To: gdb-patches at sourceware dot org
- Date: Thu, 30 May 2013 09:58:01 +0100
- Subject: [OB/COMMIT PATCH] Fix build breakage with Python 2.4.
With Python 2.4, we see this build failure:
./python/python-internal.h: In function 'gdb_Py_DECREF':
./python/python-internal.h:179: warning: dereferencing 'void *' pointer
./python/python-internal.h:179: error: request for member 'ob_refcnt' in something not a structure or union
Python 2.4 forgets to cast 'op' to PyObject pointer on the ob_refcnt
accesses:
#define Py_DECREF(op) \
if (_Py_DEC_REFTOTAL _Py_REF_DEBUG_COMMA \
--(op)->ob_refcnt != 0) \
_Py_CHECK_REFCNT(op) \
else \
_Py_Dealloc((PyObject *)(op))
...
#define _Py_CHECK_REFCNT(OP) \
{ if ((OP)->ob_refcnt < 0) \
_Py_NegativeRefcount(__FILE__, __LINE__, \
(PyObject *)(OP)); \
}
Python 2.7:
#define Py_DECREF(op) \
do { \
if (_Py_DEC_REFTOTAL _Py_REF_DEBUG_COMMA \
--((PyObject*)(op))->ob_refcnt != 0) \
_Py_CHECK_REFCNT(op) \
else \
_Py_Dealloc((PyObject *)(op)); \
} while (0)
...
#define _Py_CHECK_REFCNT(OP) \
{ if (((PyObject*)OP)->ob_refcnt < 0) \
_Py_NegativeRefcount(__FILE__, __LINE__, \
(PyObject *)(OP)); \
}
gdb/
2013-05-30 Pedro Alves <palves@redhat.com>
* python/python-internal.h (gdb_Py_DECREF): Cast OP to PyObject
pointer.
---
gdb/python/python-internal.h | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/gdb/python/python-internal.h b/gdb/python/python-internal.h
index f47d48a..d947be6 100644
--- a/gdb/python/python-internal.h
+++ b/gdb/python/python-internal.h
@@ -176,7 +176,10 @@ typedef unsigned long gdb_py_ulongest;
static inline void
gdb_Py_DECREF (void *op) /* ARI: editCase function */
{
- Py_DECREF (op);
+ /* ... and Python 2.4 didn't cast OP to PyObject pointer on the
+ '(op)->ob_refcnt' references within the macro. Cast it ourselves
+ too. */
+ Py_DECREF ((PyObject *) op);
}
#undef Py_DECREF