[Pkg-libvirt-maintainers] Bug#505607: FTBFS with GCC 4.4: wrong #elif

Martin Michlmayr tbm at cyrius.com
Thu Nov 13 19:39:42 UTC 2008


Package: libvirt
Version: 0.4.6-4
User: debian-gcc at lists.debian.org
Usertags: ftbfs-gcc-4.4
Tags: patch

Your package fails to build with the upcoming GCC 4.4.  Version 4.4
has not been released yet but I'm building with a snapshot in order
to find errors and give people an advance warning.

GCC 4.4 will introduce better checks in the preprocessor, which made
me found a typo in your code.

You can reproduce this problem with gcc-snapshot from unstable.

> Automatic build of libvirt_0.4.6-4 on em64t by sbuild/amd64 0.53
...
> /bin/sh ../libtool --tag=CC   --mode=compile cc -DHAVE_CONFIG_H -I. -I.. -I../gnulib/lib -I../gnulib/lib -I../include -I../include -I../qemud -I/usr/include/libxml2       -DBINDIR=\""/usr/lib/libvirt"\" -DSBINDIR=\""/usr/sbin"\" -DSYSCONF_DIR="\"/etc\"" -DLOCALEBASEDIR=\""/usr/share/locale"\" -DLOCAL_STATE_DIR=\""/var"\" -DGETTEXT_PACKAGE=\"libvirt\" -Wall -Wformat -Wformat-security -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wextra -Wshadow -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Winline -Wredundant-decls -Wno-sign-compare -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fasynchronous-unwind-tables  -DWITH_QEMU -DWITH_TEST -DWITH_REMOTE -DWITH_LIBVIRTD -DWITH_XEN    -DIN_LIBVIRT -g -O2 -g -Wall -O2 -c -o libvirt_la-xen_internal.lo `test -f 'xen_internal.c' || echo './'`xen_internal.c
>  cc -DHAVE_CONFIG_H -I. -I.. -I../gnulib/lib -I../gnulib/lib -I../include -I../include -I../qemud -I/usr/include/libxml2 -DBINDIR=\"/usr/lib/libvirt\" -DSBINDIR=\"/usr/sbin\" -DSYSCONF_DIR=\"/etc\" -DLOCALEBASEDIR=\"/usr/share/locale\" -DLOCAL_STATE_DIR=\"/var\" -DGETTEXT_PACKAGE=\"libvirt\" -Wall -Wformat -Wformat-security -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wextra -Wshadow -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Winline -Wredundant-decls -Wno-sign-compare -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fasynchronous-unwind-tables -DWITH_QEMU -DWITH_TEST -DWITH_REMOTE -DWITH_LIBVIRTD -DWITH_XEN -DIN_LIBVIRT -g -O2 -g -Wall -O2 -c xen_internal.c  -fPIC -DPIC -o .libs/libvirt_la-xen_internal.o
> xen_internal.c:76:13: error: missing binary operator before token "("
> xen_internal.c:341:13: error: missing binary operator before token "("
> xen_internal.c:351:13: error: missing binary operator before token "("
> xen_internal.c:667:13: error: missing binary operator before token "("
> make[4]: *** [libvirt_la-xen_internal.lo] Error 1
> make[4]: Leaving directory `/build/tbm/libvirt-0.4.6/src'

--- src/xen_internal.c~	2008-11-13 19:26:46.000000000 +0000
+++ src/xen_internal.c	2008-11-13 19:27:02.000000000 +0000
@@ -73,7 +73,7 @@
 #define XEN_V1_IOCTL_HYPERCALL_CMD                  \
     _IOC(_IOC_NONE, 'P', 0, sizeof(v1_hypercall_t))
 typedef v1_hypercall_t hypercall_t;
-#elif define(__sun__)
+#elif defined(__sun__)
 typedef privcmd_hypercall_t hypercall_t;
 #else
 #error "unsupported platform"
@@ -338,7 +338,7 @@
 {
 #ifdef __linux__
         return (mlock(addr, len));
-#elif define(__sun)
+#elif defined(__sun)
         return (0);
 #endif
 }
@@ -348,7 +348,7 @@
 {
 #ifdef __linux__
         return (munlock(addr, len));
-#elif define(__sun)
+#elif defined(__sun)
         return (0);
 #endif
 }
@@ -664,7 +664,7 @@
 #define XEN_HYPERVISOR_SOCKET	"/proc/xen/privcmd"
 #define HYPERVISOR_CAPABILITIES	"/sys/hypervisor/properties/capabilities"
 #define CPUINFO			"/proc/cpuinfo"
-#elif define(__sun__)
+#elif defined(__sun__)
 #define XEN_HYPERVISOR_SOCKET	"/dev/xen/privcmd"
 #define HYPERVISOR_CAPABILITIES	""
 #define CPUINFO			"/dev/cpu/self/cpuid"
--- src/xs_internal.c~	2008-11-13 19:28:01.000000000 +0000
+++ src/xs_internal.c	2008-11-13 19:28:06.000000000 +0000
@@ -34,7 +34,7 @@
 
 #ifdef __linux__
 #define XEN_HYPERVISOR_SOCKET "/proc/xen/privcmd"
-#elif define(__sun__)
+#elif defined(__sun__)
 #define XEN_HYPERVISOR_SOCKET "/dev/xen/privcmd"
 #else
 #error "unsupported platform"

-- 
Martin Michlmayr
http://www.cyrius.com/





More information about the Pkg-libvirt-maintainers mailing list