Re: Building current gdb on centos-5

Julian Smith <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
On Thu, 30 May 2013 09:08:26 +0100
Pedro Alves <[email protected]> wrote:

> 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.

Thanks.

> 
> 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!

Here it is, in /usr/include/python2.4/object.h:

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


Thanks,

- Julian

-- 
http://op59.net/
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.