Bug#393314: FTBFS on arm, ia64,
sparc: error: 'struct blkpg_ioctl_arg' has no member named 'data'
Wookey
wookey at aleph1.co.uk
Mon Oct 16 02:32:58 UTC 2006
Package: mdadm_2.5.4-1
These builds fail like this:
gcc -Wall -Werror -Wstrict-prototypes -ggdb -fomit-frame-pointer -Os -DSendmail=\""/usr/sbin/sendmail -t"\" -DCONFFILE=\"/tmp/mdadm.conf\" -DCONFFILE2=\"/etc/mdadm.conf\" -DDEBIAN -c -o util.o util.c
In file included from util.c:34:
/usr/include/linux/blkpg.h:36: error: expected ':', ',', ';', '}' or '__attribute__' before '*' token
util.c: In function 'remove_partitions':
util.c:132: error: 'struct blkpg_ioctl_arg' has no member named 'data'
util.c:135: error: 'struct blkpg_ioctl_arg' has no member named 'data'
make[2]: *** [util.o] Error 1
make[2]: Leaving directory /build/buildd/mdadm-2.5.4'
The code in util.c is this:
struct blkpg_ioctl_arg a;
struct blkpg_partition p;
131 a.op = BLKPG_DEL_PARTITION;
132 a.data = (void*)&p;
133 a.datalen = sizeof(p);
134 a.flags = 0;
135 memset(a.data, 0, a.datalen);
for (p.pno=0; p.pno < 16; p.pno++)
ioctl(fd, BLKPG, &a);
in /usr/inlcude/linux/blkpg.h we have:
struct blkpg_ioctl_arg {
int op;
int flags;
int datalen;
void __user *data;
};
It looks like __user is causing a problem. If I delete it then util.c builds OK.
__user is defined in linux/compiler.h
#ifdef __CHECKER__
# define __user __attribute__((noderef, address_space(1)))
#else
# define __user
If I set it to __attribute__((noderef, address_space(1))) in blkpg.h then that build OK too.
So I really don't understand what gcc is whinging about.
I suspect this is really a gcc bug. What do the threee arches it breaks on have in common?
Wookey
--
Aleph One Ltd, Bottisham, CAMBRIDGE, CB5 9BA, UK Tel +44 (0) 1223 811679
work: http://www.aleph1.co.uk/ play: http://wookware.org/
More information about the pkg-mdadm-devel
mailing list