Bug 5409 - linux/byteorder/*_endian.h cannot be used outside kernel builds
: linux/byteorder/*_endian.h cannot be used outside kernel builds
: Sisyphus
(All bugs in Sisyphus/kernel-headers-std26-up)
: unstable
: all Linux
: P2 normal
Assigned To:
  Show dependency tree
Reported: 2004-10-27 19:58 by
Modified: 2006-10-10 20:16 (History)

The testcase C source file (48 bytes, text/plain)
2004-10-27 19:59, Mikhail Zabaluev
no flags Details
Proposed patch (2.05 KB, patch)
2004-10-27 20:01, Mikhail Zabaluev
no flags Details | Diff


You need to log in before you can comment on or make changes to this bug.

Description From 2004-10-27 19:58:40
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.
------- Comment #1 From 2004-10-27 19:59:56 -------
Created an attachment (id=621) [details]
The testcase C source file
------- Comment #2 From 2004-10-27 20:01:20 -------
Created an attachment (id=622) [details]
Proposed patch

This patch has been tested against:
the testcase above;
gnome-vfs 2.8.x.
------- Comment #3 From 2004-11-01 18:46:01 -------
fixed (2.6.9-alt11)
------- Comment #4 From 2004-11-03 13:13:10 -------
Any chance it goes upstream?
------- Comment #5 From 2006-10-06 03:31:52 -------
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
------- Comment #6 From 2006-10-10 20:16:03 -------
Broken patch removed in std26-2.6.16-alt11; let's see what breaks without it...