Re: uml fails to compile due to missing offsetof

Jeff Dike
2006-11-19T14:28:31Z

On Sun, Nov 19, 2006 at 01:00:01PM +0100, Olaf Hering wrote:
>
> I fail to see how arch/um/sys-i386/user-offsets.c can compile since
> offsetof() was declared __KERNEL__ only in include/linux/stddef.h.
> Does it work for anyone else?

It obviously works for me. offsetof is very standard C. I'd venture
to say that a system which can't find it has a broken gcc installation.

> If so, is linux/stddef.h or /usr/include/linux/stddef.h used during
> compilation?

/usr/include/linux/stddef.h (but see below) - this is a userspace
file, so it builds against libc headers.

> The x86_64 variant looks weird as well, linux/stddef.h is appearently
> included via some other headers.

Well, /usr/include/linux/stddef.h on my x86_64 box has no offsetof,
despite being FC5 just like my i386 laptop. Yay for consistency.

However, there is a /usr/lib/gcc/x86_64-redhat-linux/4.1.1/include/stddef.h
which defines offsetof (and there's a corresponding file on my
laptop), so I bet that's the true source of offsetof.

Jeff
--
Work email - jdike at linux dot intel dot com