mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-05 11:10:21 +00:00
Reimplemented the _VKI_IOC_TYPECHECK() macro such that it doesn't trigger a
compiler warning on PPC when it shouldn't. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11180
This commit is contained in:
parent
97d73041af
commit
f938bef38f
@ -474,13 +474,6 @@ struct vki_termios {
|
||||
((nr) << _VKI_IOC_NRSHIFT) | \
|
||||
((size) << _VKI_IOC_SIZESHIFT))
|
||||
|
||||
/* provoke compile error for invalid uses of size argument */
|
||||
#define _VKI_IOC_TYPECHECK(t) \
|
||||
((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)
|
||||
#define _VKI_IOR(type,nr,size) _VKI_IOC(_VKI_IOC_READ,(type),(nr),(_VKI_IOC_TYPECHECK(size)))
|
||||
|
||||
@ -93,6 +93,34 @@
|
||||
# error Unknown platform
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// VKI_STATIC_ASSERT(). Inspired by BUILD_BUG_ON() from
|
||||
// linux-2.6.34/include/linux/kernel.h
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
/*
|
||||
* Evaluates to zero if 'expr' is true and forces a compilation error if
|
||||
* 'expr' is false. Can be used in a context where no comma expressions
|
||||
* are allowed.
|
||||
*/
|
||||
#ifdef __cplusplus
|
||||
template <bool b> struct vki_static_assert { int m_bitfield:(2*b-1); };
|
||||
#define VKI_STATIC_ASSERT(expr) \
|
||||
(sizeof(vki_static_assert<(expr)>) - sizeof(int))
|
||||
#else
|
||||
#define VKI_STATIC_ASSERT(expr) (sizeof(struct { int:-!(expr); }))
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// Based on _IOC_TYPECHECK() from linux-2.6.34/asm-generic/ioctl.h
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
/* provoke compile error for invalid uses of size argument */
|
||||
#define _VKI_IOC_TYPECHECK(t) \
|
||||
(VKI_STATIC_ASSERT((sizeof(t) == sizeof(t[1]) \
|
||||
&& sizeof(t) < (1 << _VKI_IOC_SIZEBITS))) \
|
||||
+ sizeof(t))
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// From linux-2.6.8.1/include/linux/compiler.h
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
@ -515,13 +515,6 @@ struct vki_termios {
|
||||
((nr) << _VKI_IOC_NRSHIFT) | \
|
||||
((size) << _VKI_IOC_SIZESHIFT))
|
||||
|
||||
/* provoke compile error for invalid uses of size argument */
|
||||
#define _VKI_IOC_TYPECHECK(t) \
|
||||
((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)
|
||||
#define _VKI_IOR(type,nr,size) _VKI_IOC(_VKI_IOC_READ,(type),(nr),(_VKI_IOC_TYPECHECK(size)))
|
||||
|
||||
@ -558,13 +558,6 @@ struct vki_termios {
|
||||
((nr) << _VKI_IOC_NRSHIFT) | \
|
||||
((size) << _VKI_IOC_SIZESHIFT))
|
||||
|
||||
/* provoke compile error for invalid uses of size argument */
|
||||
#define _VKI_IOC_TYPECHECK(t) \
|
||||
((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)
|
||||
#define _VKI_IOR(type,nr,size) _VKI_IOC(_VKI_IOC_READ,(type),(nr), \
|
||||
|
||||
@ -479,13 +479,6 @@ struct vki_termios {
|
||||
((nr) << _VKI_IOC_NRSHIFT) | \
|
||||
((size) << _VKI_IOC_SIZESHIFT))
|
||||
|
||||
/* provoke compile error for invalid uses of size argument */
|
||||
#define _VKI_IOC_TYPECHECK(t) \
|
||||
((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)
|
||||
#define _VKI_IOR(type,nr,size) _VKI_IOC(_VKI_IOC_READ,(type),(nr),(_VKI_IOC_TYPECHECK(size)))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user