Patchwork rbtree: avoid redefining offsetof

login
register
mail settings
Submitter Mike Frysinger
Date Sept. 23, 2010, 2:13 a.m.
Message ID <1285208020-24905-1-git-send-email-vapier@gentoo.org>
Download mbox | patch
Permalink /patch/65482/
State Accepted, archived
Commit 5ac748832661e7924bafd06830a247b6ff34c8c3
Headers show

Comments

Mike Frysinger - Sept. 23, 2010, 2:13 a.m.
Newer versions of gcc will define & export offsetof, so we don't
want to unconditionally define it.  Otherwise we hit:
	In file included from mkfs.jffs2.c:76:0:
	rbtree.h:134:0: warning: "offsetof" redefined
	/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.1/include/stddef.h:411:0: note:
		this is the location of the previous definition

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 rbtree.h |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)
Artem Bityutskiy - Sept. 23, 2010, 1:36 p.m.
On Wed, 2010-09-22 at 22:13 -0400, Mike Frysinger wrote:
> Newer versions of gcc will define & export offsetof, so we don't
> want to unconditionally define it.  Otherwise we hit:
> 	In file included from mkfs.jffs2.c:76:0:
> 	rbtree.h:134:0: warning: "offsetof" redefined
> 	/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.1/include/stddef.h:411:0: note:
> 		this is the location of the previous definition
> 
> Signed-off-by: Mike Frysinger <vapier@gentoo.org>

Pushed to mtd-utils, thanks!

Patch

diff --git a/rbtree.h b/rbtree.h
index 9597b10..e64dc9a 100644
--- a/rbtree.h
+++ b/rbtree.h
@@ -131,7 +131,10 @@  static inline void rb_set_color(struct rb_node *rb, int color)
 
 #define RB_ROOT	(struct rb_root) { NULL, }
 
+/* Newer gcc versions take care of exporting this */
+#ifndef offsetof
 #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
+#endif
 
 #define container_of(ptr, type, member) ({                      \
         const typeof( ((type *)0)->member ) *__mptr = (ptr);    \