From 795793b3a4751936db4dc331aeb5f5549cfb3987 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Sun, 28 Nov 2010 17:26:27 +0000 Subject: [PATCH] [build] Use __builtin_offsetof() when available Some newer versions of gcc (observed with a patched gcc 4.5.1) seem to treat our offsetof() implementation as not being a compile-time constant. Fix by using __builtin_offsetof() when available. (As with the original offsetof() macro, this code is copied from the Linux kernel's stddef.h.) Reported-by: Arkadiusz Miskiewicz Signed-off-by: Michael Brown --- src/include/stddef.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/include/stddef.h b/src/include/stddef.h index 2a02a898..8e69545c 100644 --- a/src/include/stddef.h +++ b/src/include/stddef.h @@ -10,7 +10,11 @@ FILE_LICENCE ( GPL2_ONLY ); #define NULL ((void *)0) #undef offsetof +#ifdef __compiler_offsetof +#define offsetof(TYPE,MEMBER) __compiler_offsetof(TYPE,MEMBER) +#else #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) +#endif #undef container_of #define container_of(ptr, type, member) ({ \