Skip to contentSkip to conversation

Fix linux/types.h for compiling with -ansi

PATCH New simon schuler 1 participant 1 message Nov 27, 2004

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Fix linux/types.h for compiling with -ansi

I've got a symple little patch to apply:
when including <linux/types.h> in a program and compiling with 'gcc -ansi' gcc complains:
`In file included from test.c:1:
/usr/include/linux/types.h:162: error: parse error before "__le64" /usr/include/linux/types.h:163: error: parse error before "__be64"`

These lines are:
typedef __u64 __bitwise __le64; typedef __u64 __bitwise __be64;

__u64 isn't defined in include/asm-386/types.h when __STRICT_ANSI__ is defined (as always when calling gcc -ansi):
#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
typedef __signed__ long long __s64;
typedef unsigned long long __u64;
#endif

The following patch for linux-2.6.10-rc2 solves the problem:
(The patch wouldn't be needed for some 64Bit architectures, but i didn't find an easy way of sorting these out)

linux/types.h_new 2004-11-27 17:24:18.630386944 +0000 renamed from linux/types.h 2004-11-27 17:19:25.509948024 +0000 +0 -0
diff -up include/linux/types.h include/linux/newtypes.h
@@ -157,8 +157,10 @@ typedef __u16 __bitwise __le16;

typedef __u16 __bitwise __be16;
typedef __u32 __bitwise __le32;
typedef __u32 __bitwise __be32;
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__) typedef __u64 __bitwise __le64;
typedef __u64 __bitwise __be64;
+#endif

struct ustat {
       __kernel_daddr_t        f_tfree;