byteorder.h, ntohl, and compiling userspace programs
PATCH 1/1 byteorder.h, ntohl, and compiling userspace programs
Quoted 7 lines · On 5/14, I wrote:
Quoted 5 lines · Dimi Shahbaz
I'm trying to build glibc ...
[but get a compile error:]../inet/netinet/in.h:259: parse error before '(' token [caused by linux's #define of ntohl when compiling glibc's
function prototype for ntohl]
Quoted 7 lines
I think the conflict is with the ntohl macros defined in
/usr/src/linux/include/linux/byteorder/generic.hThese days, I don't see why the Linux kernel headers should be defining ntohl for userspace; libc's headers do that. So how about simplifying
generic.hso it only does anything when compiling the kernel:
Here's that patch again (MIME this time, so tabs don't get lost by my silly gui mailer); applies cleanly against against 2.4.19-pre8. Nobody commented on it last time I posted it, and it does
make compiling gcc easier, so I guess that makes it trivial patch monkey fodder. Or am I making a silly mistake?
- Dan
include/linux/byteorder/generic.h renamed from include/linux/byteorder/generic.h.orig +3 -11
@@ -123,6 +123,7 @@#endif +#if defined(__KERNEL__)/* * Handle ntohl and suches. These have various compatibility * issues - like we want to give the prototype even though we
@@ -146,17 +147,11 @@* Do the prototypes. Somebody might want to take the * address or some such sick thing.. */ -#if defined(__KERNEL__) || (defined (__GLIBC__) && __GLIBC__ >=2 )extern __u32 ntohl (__u32 );extern __u32 htonl (__u32 ); -#else -extern unsigned long int ntohl (unsigned long int ); -extern unsigned long int htonl (unsigned long int ); -#endif extern unsigned short int ntohs (unsigned short int );extern unsigned short int htons (unsigned short int ); -#if defined(__GNUC__) && (__GNUC__ >=2 ) && defined(__OPTIMIZE__)#define ___htonl (x) __cpu_to_be32(x)
@@ -164,17 +159,14 @@#define ___ntohl (x) __be32_to_cpu(x)#define ___ntohs (x) __be16_to_cpu(x) -#if defined(__KERNEL__) || (defined (__GLIBC__) && __GLIBC__ >=2 )#define htonl (x) ___htonl(x)#define ntohl (x) ___ntohl(x) -#else -#define htonl (x) ((unsigned long)___htonl(x)) -#define ntohl (x) ((unsigned long)___ntohl(x)) -#endif #define htons (x) ___htons(x)#define ntohs (x) ___ntohs(x)#endif /* OPTIMIZE */ +#endif /* KERNEL */ +#endif /* _LINUX_BYTEORDER_GENERIC_H */