From: Pedro Alves <pedro@codesourcery.com>
To: gdb-patches@sourceware.org
Subject: Make GDB build with python 2.4 again.
Date: Sun, 19 Oct 2008 20:18:00 -0000 [thread overview]
Message-ID: <200810192118.18369.pedro@codesourcery.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 1247 bytes --]
gcc -g -O2 -I. -I../../head/gdb -I../../head/gdb/config -DLOCALEDIR="\"/usr/local/share/locale\"" -DHAVE_CONFIG_H -I../../head/gdb/../include/opcode -I../../head/gdb/../readline/.. -I../bfd -I../../head/gdb/../bfd -I../../head/gdb/../include -I../libdecnumber -I../../head/gdb/../libdecnumber -I../../head/gdb/gnulib -Ignulib -DMI_OUT=1 -DTUI=1 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-unused -Wno-switch -Wno-char-subscripts -Werror -c -o python-value.o -MT python-value.o -MMD -MP -MF .deps/python-value.Tpo -fno-strict-aliasing -DNDEBUG -fwrapv ../../head/gdb/python/python-value.c
../../head/gdb/python/python-value.c:100: warning: initialization from incompatible pointer type
make: *** [python-value.o] Error 1
/usr/include/python2.4/object.h
typedef int (*inquiry)(PyObject *);
typedef struct {
inquiry mp_length;
binaryfunc mp_subscript;
objobjargproc mp_ass_subscript;
} PyMappingMethods;
/usr/include/python2.5/object.h
typedef Py_ssize_t (*lenfunc)(PyObject *);
typedef struct {
lenfunc mp_length;
binaryfunc mp_subscript;
objobjargproc mp_ass_subscript;
} PyMappingMethods;
I'm checking in the attached fix. I get 95 expected passes with
both 2.4 and 2.5.
--
Pedro Alves
[-- Attachment #2: python.diff --]
[-- Type: text/x-diff, Size: 5947 bytes --]
2008-10-19 Pedro Alves <pedro@codesourcery.com>
* python/python-value.c (value_object_methods)
(value_object_as_number, value_object_as_mapping): Move to bottom
of file.
(valpy_dealloc, valpy_new, valpy_length, valpy_getitem)
(valpy_setitem, valpy_str, valpy_add, valpy_subtract)
(valpy_multiply, valpy_divide, valpy_remainder, valpy_power)
(valpy_negative, valpy_positive, valpy_absolute, valpy_nonzero)
(valpy_richcompare, valpy_dereference): Don't forward-declare.
(valpy_length) [HAVE_LIBPYTHON2_4]: Change return type to `int'.
---
gdb/python/python-value.c | 139 ++++++++++++++++++++--------------------------
1 file changed, 61 insertions(+), 78 deletions(-)
Index: src/gdb/python/python-value.c
===================================================================
--- src.orig/gdb/python/python-value.c 2008-10-19 20:27:15.000000000 +0100
+++ src/gdb/python/python-value.c 2008-10-19 20:28:25.000000000 +0100
@@ -57,84 +57,6 @@ typedef struct {
int owned_by_gdb;
} value_object;
-static void valpy_dealloc (PyObject *obj);
-static PyObject *valpy_new (PyTypeObject *subtype, PyObject *args,
- PyObject *keywords);
-static Py_ssize_t valpy_length (PyObject *self);
-static PyObject *valpy_getitem (PyObject *self, PyObject *key);
-static int valpy_setitem (PyObject *self, PyObject *key, PyObject *value);
-static PyObject *valpy_str (PyObject *self);
-static PyObject *valpy_add (PyObject *self, PyObject *other);
-static PyObject *valpy_subtract (PyObject *self, PyObject *other);
-static PyObject *valpy_multiply (PyObject *self, PyObject *other);
-static PyObject *valpy_divide (PyObject *self, PyObject *other);
-static PyObject *valpy_remainder (PyObject *self, PyObject *other);
-static PyObject *valpy_power (PyObject *self, PyObject *other, PyObject *unused);
-static PyObject *valpy_negative (PyObject *self);
-static PyObject *valpy_positive (PyObject *self);
-static PyObject *valpy_absolute (PyObject *self);
-static int valpy_nonzero (PyObject *self);
-static PyObject *valpy_richcompare (PyObject *self, PyObject *other, int op);
-static PyObject *valpy_dereference (PyObject *self, PyObject *args);
-
-static PyMethodDef value_object_methods[] = {
- { "dereference", valpy_dereference, METH_NOARGS, "Dereferences the value." },
- {NULL} /* Sentinel */
-};
-
-static PyNumberMethods value_object_as_number = {
- valpy_add,
- valpy_subtract,
- valpy_multiply,
- valpy_divide,
- valpy_remainder,
- NULL, /* nb_divmod */
- valpy_power, /* nb_power */
- valpy_negative, /* nb_negative */
- valpy_positive, /* nb_positive */
- valpy_absolute, /* nb_absolute */
- valpy_nonzero /* nb_nonzero */
-};
-
-static PyMappingMethods value_object_as_mapping = {
- valpy_length,
- valpy_getitem,
- valpy_setitem
-};
-
-PyTypeObject value_object_type = {
- PyObject_HEAD_INIT (NULL)
- 0, /*ob_size*/
- "gdb.Value", /*tp_name*/
- sizeof (value_object), /*tp_basicsize*/
- 0, /*tp_itemsize*/
- valpy_dealloc, /*tp_dealloc*/
- 0, /*tp_print*/
- 0, /*tp_getattr*/
- 0, /*tp_setattr*/
- 0, /*tp_compare*/
- 0, /*tp_repr*/
- &value_object_as_number, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- &value_object_as_mapping, /*tp_as_mapping*/
- 0, /*tp_hash */
- 0, /*tp_call*/
- valpy_str, /*tp_str*/
- 0, /*tp_getattro*/
- 0, /*tp_setattro*/
- 0, /*tp_as_buffer*/
- Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES, /*tp_flags*/
- "GDB value object", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- valpy_richcompare, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
- value_object_methods /* tp_methods */
-};
-
-
/* Called by the Python interpreter when deallocating a value object. */
static void
valpy_dealloc (PyObject *obj)
@@ -206,7 +128,11 @@ valpy_dereference (PyObject *self, PyObj
return value_to_value_object (res_val);
}
+#ifdef HAVE_LIBPYTHON2_4
+static int
+#else
static Py_ssize_t
+#endif
valpy_length (PyObject *self)
{
/* We don't support getting the number of elements in a struct / class. */
@@ -686,4 +612,61 @@ gdbpy_initialize_values (void)
values_in_python = NULL;
}
+static PyMethodDef value_object_methods[] = {
+ { "dereference", valpy_dereference, METH_NOARGS, "Dereferences the value." },
+ {NULL} /* Sentinel */
+};
+
+static PyNumberMethods value_object_as_number = {
+ valpy_add,
+ valpy_subtract,
+ valpy_multiply,
+ valpy_divide,
+ valpy_remainder,
+ NULL, /* nb_divmod */
+ valpy_power, /* nb_power */
+ valpy_negative, /* nb_negative */
+ valpy_positive, /* nb_positive */
+ valpy_absolute, /* nb_absolute */
+ valpy_nonzero /* nb_nonzero */
+};
+
+static PyMappingMethods value_object_as_mapping = {
+ valpy_length,
+ valpy_getitem,
+ valpy_setitem
+};
+
+PyTypeObject value_object_type = {
+ PyObject_HEAD_INIT (NULL)
+ 0, /*ob_size*/
+ "gdb.Value", /*tp_name*/
+ sizeof (value_object), /*tp_basicsize*/
+ 0, /*tp_itemsize*/
+ valpy_dealloc, /*tp_dealloc*/
+ 0, /*tp_print*/
+ 0, /*tp_getattr*/
+ 0, /*tp_setattr*/
+ 0, /*tp_compare*/
+ 0, /*tp_repr*/
+ &value_object_as_number, /*tp_as_number*/
+ 0, /*tp_as_sequence*/
+ &value_object_as_mapping, /*tp_as_mapping*/
+ 0, /*tp_hash */
+ 0, /*tp_call*/
+ valpy_str, /*tp_str*/
+ 0, /*tp_getattro*/
+ 0, /*tp_setattro*/
+ 0, /*tp_as_buffer*/
+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES, /*tp_flags*/
+ "GDB value object", /* tp_doc */
+ 0, /* tp_traverse */
+ 0, /* tp_clear */
+ valpy_richcompare, /* tp_richcompare */
+ 0, /* tp_weaklistoffset */
+ 0, /* tp_iter */
+ 0, /* tp_iternext */
+ value_object_methods /* tp_methods */
+};
+
#endif /* HAVE_PYTHON */
next reply other threads:[~2008-10-19 20:18 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-19 20:18 Pedro Alves [this message]
2008-10-19 22:47 ` Paul Pluzhnikov
2008-10-19 23:17 ` Pedro Alves
2008-10-19 23:43 ` Tom Tromey
2008-10-20 0:06 ` Pedro Alves
2008-10-20 0:14 ` Tom Tromey
2008-10-20 0:27 ` Pedro Alves
2008-10-20 0:38 ` Tom Tromey
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200810192118.18369.pedro@codesourcery.com \
--to=pedro@codesourcery.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox