[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#203303: How can this be fixed?



So, the problem is that

kaudiocreator/cdconfigimp.cpp includes
linux/cdrom.h

OK, let's try creating an *entirely userspace* linux/cdrom.h.
Oops, can't do that:

struct request_sense {
#if defined(__BIG_ENDIAN_BITFIELD)
        __u8 valid              : 1;
        __u8 error_code         : 7;
#elif defined(__LITTLE_ENDIAN_BITFIELD)
        __u8 error_code         : 7;
        __u8 valid              : 1;
#endif

glibc does not define an equivalent symbol, afaict.  bits/endian.h defines
__BYTE_ORDER but says nothing about bitfields.  I can't find a machine
which has them different, but I doubt you'll receive sympathy from
linux-kernel if you want to replace them.

Seems to me a good start would be to add __BIG_ENDIAN_BITFIELD or
__LITTLE_ENDIAN_BITFIELD defines to <bits/endian.h> or even add to
<endian.h>:

#if !defined(__BIG_ENDIAN_BITFIELD) && !defined(__LITTLE_ENDIAN_BITFIELD)
# if __BYTE_ORDER == __LITTLE_ENDIAN
#  define __LITTLE_ENDIAN_BITFIELD
# elif __BYTE_ORDER == __BIG_ENDIAN
#  define __BIG_ENDIAN_BITFIELD
# endif
#endif

Then we have to change <linux/cdrom.h>, but that'll be easier.

-- 
"It's not Hollywood.  War is real, war is primarily not about defeat or
victory, it is about death.  I've seen thousands and thousands of dead bodies.
Do you think I want to have an academic debate on this subject?" -- Robert Fisk



Reply to: