From b722650de4fa246844cce2629d731a26a813841a Mon Sep 17 00:00:00 2001 From: Julian Seward Date: Sat, 2 Jan 2010 10:41:46 +0000 Subject: [PATCH] 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 --- include/vki/vki-arm-linux.h | 6 +++--- include/vki/vki-ppc32-linux.h | 6 ++++-- include/vki/vki-ppc64-linux.h | 6 ++++-- include/vki/vki-x86-linux.h | 6 ++++-- 4 files changed, 15 insertions(+), 9 deletions(-) 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) -- 2.47.2