Some user-space software, e.g. gnome-vfs, need both glibc headers and kernel headers for compilation. With kernel headers of version 2.6.9, however, inclusion of many kernel headers, for instance, linux/cdrom.h, leads to inclusion of linux/byteorder/*_endian.h. These headers declare functions using types that are hidden when the features.h header from glibc is included. The attached testcase illustrates the problem. To amend this, the conflicting declarations should be disabled when __KERNEL__ macro is not defined. The patch is underway. Steps to Reproduce: Try compiling the attached C source file. Actual Results: Compilation fails. Expected Results: Compilation should succeed.
Created attachment 621 [details] The testcase C source file
Created attachment 622 [details] Proposed patch This patch has been tested against: the testcase above; gnome-vfs 2.8.x.
fixed (2.6.9-alt11)
Any chance it goes upstream?
The patch in question also breaks build: $ rpmbuild -bc hdparm.spec [...] hdparm.c:1315: warning: implicit declaration of function '__le16_to_cpus' hdparm.c:1315: warning: nested extern declaration of '__le16_to_cpus' cc -o hdparm hdparm.o identify.o hdparm.o: In function `process_dev': hdparm.c:(.text+0x1a4f): undefined reference to `__le16_to_cpus' hdparm.o: In function `main': hdparm.c:(.text+0x3791): undefined reference to `__le16_to_cpus' collect2: ld returned 1 exit status make: *** [hdparm] Error 1
Broken patch removed in std26-2.6.16-alt11; let's see what breaks without it...