Messages in this thread | | | Date | Sun, 21 Oct 2007 23:22:46 +0200 | From | Gabriel C <> | Subject | Re: some kernel headers broken in current git ? |
| |
Sam Ravnborg wrote: > On Sun, Oct 21, 2007 at 12:15:48PM -0700, H. Peter Anvin wrote: >> Gabriel C wrote: >>>>> BITS_PER_LONG was originally set in <asm/types.h>: >>>>> >>>>> 39 #ifdef CONFIG_X86_32 >>>>> 40 # define BITS_PER_LONG 32 >>>>> 41 #else >>>>> 42 # define BITS_PER_LONG 64 >>>>> 43 #endif >>>> User land does not know anything about 'CONFIG_X86_32' right ? >> Wait... this is *user mode* code at this point? > No - it is a kernel module. > But what a messy codebase to look at... > >> Linux kernel headers aren't includable from user space without >> processing them through "make headers_install". >> >> However, from looking at the filenames in your list, it doesn't look >> like userspace code at all (although they're wrappered to the degree >> that it's somewhat hard to tell.) Thus, you're building a kernel >> module, not userland. >> >>> That is the problem. I've changed the headers virtualbox need from >>> >>> #ifdef CONFIG_X86_32 to #ifdef __i386__ and all compiled fine. >>> >>> ( subarch headers includes are changed manually still but I think it is >>> the same problem ) >>> >>> Also all the headers got these defines with CONFIG_X86_32 does not work. >>> >>> ... >>> >>> #ifdef CONFIG_X86_32 >>> # include "foo_32.h" >>> #else >>> # include "foo_64.h" >>> #endif >>> >>> ... >>> >>> results in including both header files on my i686 box. >>> >>> I don't know what the right way is to fix that , define some who >>> CONFIG_X86_32 to __i386__ ? or just s/CONFIG_X86_32/__i386__/ ? >> It sounds like something is seriously broken in your setup, or in the >> VirtualBox makefiles. From the looks of it, I would say the latter. > >>From the file "the-linux-kernel.h": > /* > * Include iprt/types.h to install the bool wrappers. > * Then use the linux bool type for all the stuff include here. > */ > #include <iprt/types.h> > #define bool linux_bool > > And that file named "types.h" is not a kernel types.h - so we miss that > file. I guess it was pulled in by some other headerfile in the past. > > But I also notice that it latest source from VirtualBox the > line number for include of spinlock-h does not match. > > > This is most likely a combination of VirtualBox doing strange strange things > and some deep dependency missing in one of the headerfiles. > > Add a #include <linux/types.h> to the-linux-kernel.h and let us know if it helps.
Does not help , now I get on top the other errors :
/work/crazy/VBox/stable/virtualbox/src/VirtualBox-1.5.2_OSE/include/iprt/types.h:121: error: redefinition of typedef 'bool' /lib/modules/2.6.23-gcfa76f02/build/include/linux/types.h:33: error: previous declaration of 'bool' was here
...
/* * C doesn't have bool. */ #ifndef __cplusplus # if defined(__GNUC__) # if defined(RT_OS_LINUX) && __GNUC__ < 3 typedef uint8_t bool; # else # if defined(RT_OS_DARWIN) && defined(_STDBOOL_H) # undef bool # endif typedef _Bool bool; <- line 121 # endif # else typedef unsigned char bool; # endif # ifndef true # define true (1) # endif # ifndef false # define false (0) # endif #endif
Looking at include/iprt/types.h that has already #include <linux/types.h>.
> > Sam >
Gabriel - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |