]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Redo r10971 ("Made sure that C++ compilers do not complain about the
authorJulian Seward <jseward@acm.org>
Sat, 2 Jan 2010 10:41:46 +0000 (10:41 +0000)
committerJulian Seward <jseward@acm.org>
Sat, 2 Jan 2010 10:41:46 +0000 (10:41 +0000)
_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

include/vki/vki-arm-linux.h
include/vki/vki-ppc32-linux.h
include/vki/vki-ppc64-linux.h
include/vki/vki-x86-linux.h

index 2a2895de83bf779f6b3c156e5216d6d863c22259..ab745bbea8bede2ddd2e671065d642996b9a279c 100644 (file)
@@ -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)
index f39d9100dbca2326b4984ac35d0313579ffc8bc8..4d176b2d0ea85f6fc311e293253ab659898c1f92 100644 (file)
@@ -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)
index 1a8df320a6c8f0a9afbff80adc3b7ba1c8e9ff6c..14f11130e794a6b224c2a141861995076896de23 100644 (file)
@@ -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)
index 6f9246fca6db02968013f8c4473ecc274fbc7018..5c1ec93b67f91f33c2447dc39d39ec5119a30416 100644 (file)
@@ -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)