util: Suppress build assertions when building with sparse.
authorBen Pfaff <blp@nicira.com>
Fri, 6 May 2011 18:43:04 +0000 (11:43 -0700)
committerBen Pfaff <blp@nicira.com>
Mon, 16 May 2011 20:40:48 +0000 (13:40 -0700)
sparse simply doesn't like our build assertions on packed structures.
It seems that its ideas about struct packing are different from GCC's:

../lib/cfm.h:50:1: error: invalid bitfield width, -1.
../lib/packets.h:206:1: error: invalid bitfield width, -1.
../lib/packets.h:213:1: error: invalid bitfield width, -1.
../lib/packets.h:367:1: error: invalid bitfield width, -1.

sparse isn't generating code so we don't really care how it lays out
structures.  We might as well just skip the assertions, as done here.

lib/util.h

index 4ed291a..2be7a70 100644 (file)
 #endif
 #endif
 
-#ifndef __cplusplus
+#ifdef __CHECKER__
+#define BUILD_ASSERT(EXPR) ((void) 0)
+#define BUILD_ASSERT_DECL(EXPR) extern int (*build_assert(void))[1]
+#elif !defined(__cplusplus)
 /* Build-time assertion building block. */
 #define BUILD_ASSERT__(EXPR) \
         sizeof(struct { unsigned int build_assert_failed : (EXPR) ? 1 : -1; })