Re: Building current gdb on centos-5

Pedro Alves <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
On 05/29/2013 09:50 PM, Julian Smith wrote:

> Is the latest gdb in cvs, expected to build on centos-5 ?

It should, but looks like I broke it.

> I'm seeing this build failure:
> 
> ...
> gcc -g -O2   -I. -I. -I./common -I./config -DLOCALEDIR="\"/usr/local/share/locale\"" -DHAVE_CONFIG_H -I./../include/opcode -I./../opcodes/.. -I./../readline/.. -I../bfd -I./../bfd -I./../include -I../libdecnumber -I./../libdecnumber  -I./gn
> ulib/import -Ibuild-gnulib/import   -DTUI=1  -I/usr/include/python2.4 -I/usr/include/python2.4 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wpointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts 
> -Wmissing-prototypes -Wdeclaration-after-statement -Wformat-nonliteral  -c -o mi-main.o -MT mi-main.o -MMD -MP -MF .deps/mi-main.Tpo ./mi/mi-main.c
> In file included from ./mi/mi-main.c:56:
> ./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

Thanks.  gdb_Py_DECREF is a recent addition:

/* Python 2.6 did not wrap Py_DECREF in 'do {...} while (0)', leading
   to 'suggest explicit braces to avoid ambiguous ‘else’' gcc errors.
   Wrap it ourselves, so that callers don't need to care.  */

static inline void
gdb_Py_DECREF (void *op) /* ARI: editCase function */
{
  Py_DECREF (op);
}

Making that:

-  Py_DECREF (op);
+  Py_DECREF ((PyObject*) op);

should fix this.  I'll push a fix.

On my system's Python 2.7, Py_DECREF always casts its argument
to (PyObject*), so it didn't seem necessary to cast it ourselves:

#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)

> My centos-5 has python-2.4 (python-devel.i386 2.4.3-24.el5).

For the archives, could you please paste what Py_DECREF looks
like in 2.4?  Thanks!

-- 
Pedro Alves
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.