From 94815a5c8366a9290167e8539f29994c2d43d15c Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Mon, 29 Jun 2015 20:46:31 -0600 Subject: [PATCH] configure: fixup clang stupidity Doesn't like doing _Static_assert() on our structure offset definition: error: static_assert expression is not an integral constant expression Lets just include that in the configure test, so we can avoid using _Static_assert() if that kind of check fails. Signed-off-by: Jens Axboe --- configure | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/configure b/configure index 085f0165..a3f83d34 100755 --- a/configure +++ b/configure @@ -1497,9 +1497,25 @@ echo "getmntinfo $getmntinfo" static_assert="no" cat > $TMPC << EOF #include +#include +#undef offsetof +#ifdef __compiler_offsetof +#define offsetof(TYPE,MEMBER) __compiler_offsetof(TYPE,MEMBER) +#else +#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) +#endif + +#define container_of(ptr, type, member) ({ \ + const typeof( ((type *)0)->member ) *__mptr = (ptr); \ + (type *)( (char *)__mptr - offsetof(type,member) );}) + +struct foo { + int a, b; +}; + int main(int argc, char **argv) { - _Static_assert( 1 == 1 , "Check"); + _Static_assert(offsetof(struct foo, a) == 0 , "Check"); return 0 ; } EOF -- 2.25.1