From: Jens Axboe Date: Tue, 30 Jun 2015 02:46:31 +0000 (-0600) Subject: configure: fixup clang stupidity X-Git-Tag: fio-2.2.10~50 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=94815a5c8366a9290167e8539f29994c2d43d15c;hp=3fb1aa3074b085273a1a80149527d9ac9b3ef1e5 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 --- 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