X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=lib%2Fext2fs%2Fcompiler.h;h=3bb3521d644ec8ae657dbcac8612da8ef7061587;hb=dcdf3ac77a13a131dcbf54bdb61fa75eb9eee9a8;hp=9aa9b4ec6d0442486b25b7e6242d48ae8a112308;hpb=b741827a4f766d7503c334994f6c7fa29b3a0018;p=platform%2Fupstream%2Fe2fsprogs.git diff --git a/lib/ext2fs/compiler.h b/lib/ext2fs/compiler.h index 9aa9b4e..3bb3521 100644 --- a/lib/ext2fs/compiler.h +++ b/lib/ext2fs/compiler.h @@ -1,22 +1,26 @@ #ifndef _EXT2FS_COMPILER_H #define _EXT2FS_COMPILER_H -#ifndef __has_builtin -#define __has_builtin(x) 0 -#endif +#include + +#ifdef __GNUC__ -#undef offsetof -#if __has_builtin(__builtin_offsetof) -#define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER) -#elif defined(__compiler_offsetof) -#define offsetof(TYPE,MEMBER) __compiler_offsetof(TYPE,MEMBER) +#ifndef __GNUC_PREREQ +#if defined(__GNUC__) && defined(__GNUC_MINOR__) +#define __GNUC_PREREQ(maj, min) \ + ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) #else -#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) +#define __GNUC_PREREQ(maj, min) 0 +#endif #endif -#define container_of(ptr, type, member) ({ \ - const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \ +#define container_of(ptr, type, member) ({ \ + __typeof__( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) +#else +#define container_of(ptr, type, member) \ + ((type *)((char *)(ptr) - offsetof(type, member))) +#endif #endif /* _EXT2FS_COMPILER_H */