Conflicts in kernel 2.6 headers and {glibc,Xorg}

From: Michal Feix
Date: Sun Jan 09 2005 - 04:22:34 EST


Hello evereyone!

First, I'm not on kernel mailing list so please CC any replies to me. Thank you.

Yesterday I was recompiling my Linux from Scratch distribution for the first time with Linux kernel 2.6.10 headers as a base for glibc. I've found, that glibc (and XOrg later on too) won't compile, as there is a conflict in certain functions or macros that glibc and Kernel headers both define.

One was in asm/bitops.h (strictly speaking, asm-i386/bitops.h) named __ffs, which is defined with unsigned long (both for return type and parameter) in linux kernel, but as int in glibc sources. Others were in asm/system.h. Macro mb() and nop() which conflicts with Xorg sources and with one part of KDE as well (mb() macro and kdepim sources).

Now I am a bit confused. To force my glibc, Xorg and KDE to compile cleanly, I had to rename these in kernel headers in my /usr/include/asm directory, so they are no longer conflicting (which of course breaks the rest of kernel header files, that use these macros), but since I was changing only files in /usr/include/asm, it's probably a "no harm done" change, as my Kernel has it's own copy of these files.

My question is: is this a bug in glibc and Xorg sources that they declare macros and functions with the same name as kernel headers? I believe not, as it worked cleanly with kernel 2.4 headers and glibc was first to use these names. :)

Or is it a bug in kernel 2.6 headers, which should be fixed by including these functions and macros into __KERNEL__ block, so they will not collide with userspace sources?

Thanks for reading this to the end... :)

--
Michal Feix
michal@xxxxxxx
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/