From: Julian Seward Date: Sat, 2 Jan 2010 10:41:46 +0000 (+0000) Subject: Redo r10971 ("Made sure that C++ compilers do not complain about the X-Git-Tag: svn/VALGRIND_3_6_0~433 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b722650de4fa246844cce2629d731a26a813841a;p=thirdparty%2Fvalgrind.git Redo r10971 ("Made sure that C++ compilers do not complain about the _VKI_IOC_TYPECHECK() macro") in a way which is easier to understand. Also, add it for arm-linux. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10990 --- diff --git a/include/vki/vki-arm-linux.h b/include/vki/vki-arm-linux.h index 2a2895de83..ab745bbea8 100644 --- a/include/vki/vki-arm-linux.h +++ b/include/vki/vki-arm-linux.h @@ -475,11 +475,11 @@ struct vki_termios { ((size) << _VKI_IOC_SIZESHIFT)) /* provoke compile error for invalid uses of size argument */ -extern unsigned int __vki_invalid_size_argument_for_IOC; #define _VKI_IOC_TYPECHECK(t) \ ((sizeof(t) == sizeof(t[1]) && \ - sizeof(t) < (1 << _VKI_IOC_SIZEBITS)) ? \ - sizeof(t) : __vki_invalid_size_argument_for_IOC) + sizeof(t) < (1 << _VKI_IOC_SIZEBITS)) \ + ? sizeof(t) \ + : /*cause gcc to complain about division by zero*/(1/0) ) /* used to create numbers */ #define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0) diff --git a/include/vki/vki-ppc32-linux.h b/include/vki/vki-ppc32-linux.h index f39d9100db..4d176b2d0e 100644 --- a/include/vki/vki-ppc32-linux.h +++ b/include/vki/vki-ppc32-linux.h @@ -517,8 +517,10 @@ struct vki_termios { /* provoke compile error for invalid uses of size argument */ #define _VKI_IOC_TYPECHECK(t) \ - (sizeof(t) / (sizeof(t) == sizeof(t[1]) && \ - sizeof(t) < (1 << _VKI_IOC_SIZEBITS))) + ((sizeof(t) == sizeof(t[1]) && \ + sizeof(t) < (1 << _VKI_IOC_SIZEBITS)) \ + ? sizeof(t) \ + : /*cause gcc to complain about division by zero*/(1/0) ) /* used to create numbers */ #define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0) diff --git a/include/vki/vki-ppc64-linux.h b/include/vki/vki-ppc64-linux.h index 1a8df320a6..14f11130e7 100644 --- a/include/vki/vki-ppc64-linux.h +++ b/include/vki/vki-ppc64-linux.h @@ -560,8 +560,10 @@ struct vki_termios { /* provoke compile error for invalid uses of size argument */ #define _VKI_IOC_TYPECHECK(t) \ - (sizeof(t) / (sizeof(t) == sizeof(t[1]) && \ - sizeof(t) < (1 << _VKI_IOC_SIZEBITS))) + ((sizeof(t) == sizeof(t[1]) && \ + sizeof(t) < (1 << _VKI_IOC_SIZEBITS)) \ + ? sizeof(t) \ + : /*cause gcc to complain about division by zero*/(1/0) ) /* used to create numbers */ #define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0) diff --git a/include/vki/vki-x86-linux.h b/include/vki/vki-x86-linux.h index 6f9246fca6..5c1ec93b67 100644 --- a/include/vki/vki-x86-linux.h +++ b/include/vki/vki-x86-linux.h @@ -481,8 +481,10 @@ struct vki_termios { /* provoke compile error for invalid uses of size argument */ #define _VKI_IOC_TYPECHECK(t) \ - (sizeof(t) / (sizeof(t) == sizeof(t[1]) && \ - sizeof(t) < (1 << _VKI_IOC_SIZEBITS))) + ((sizeof(t) == sizeof(t[1]) && \ + sizeof(t) < (1 << _VKI_IOC_SIZEBITS)) \ + ? sizeof(t) \ + : /*cause gcc to complain about division by zero*/(1/0) ) /* used to create numbers */ #define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)