summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2010-03-16 00:22:35 (GMT)
committer Denys Vlasenko <vda.linux@googlemail.com>2010-03-16 00:22:35 (GMT)
commit09b767250ddd874c47a0c9694079227707fd443e (patch)
treee57b4ac88028c375df4d40c88fb892d7cace9ed0
parent820874ed3872877601ee95adc275bda215f2d320 (diff)
downloadbusybox-09b767250ddd874c47a0c9694079227707fd443e.tar.gz
busybox-09b767250ddd874c47a0c9694079227707fd443e.tar.bz2
include/fix_u32.h: try harder to not cause redefinition errors
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--include/fix_u32.h27
1 files changed, 19 insertions, 8 deletions
diff --git a/include/fix_u32.h b/include/fix_u32.h
index 5652e9e..c26e5d1 100644
--- a/include/fix_u32.h
+++ b/include/fix_u32.h
@@ -8,6 +8,17 @@
#ifndef FIX_U32_H
#define FIX_U32_H 1
+/* Try hard to pull in u32 types and such.
+ * Otherwise, #include "fix_u32.h" + #include <linux/foo.h>
+ * may end up typedef'ing bb_hack_u32 inside foo.h,
+ * and repeated typedefs aren't allowed in C/C++.
+ */
+#include <asm/types.h>
+#include <linux/types.h>
+
+/* In case above includes still failed to provide the types,
+ * provide them ourself
+ */
#undef __u64
#undef u64
#undef u32
@@ -20,15 +31,15 @@
#undef s8
#define __u64 bb_hack___u64
-#define u64 bb_hack_u64
-#define u32 bb_hack_u32
-#define u16 bb_hack_u16
-#define u8 bb_hack_u8
+#define u64 bb_hack_u64
+#define u32 bb_hack_u32
+#define u16 bb_hack_u16
+#define u8 bb_hack_u8
#define __s64 bb_hack___s64
-#define s64 bb_hack_s64
-#define s32 bb_hack_s32
-#define s16 bb_hack_s16
-#define s8 bb_hack_s8
+#define s64 bb_hack_s64
+#define s32 bb_hack_s32
+#define s16 bb_hack_s16
+#define s8 bb_hack_s8
typedef uint64_t __u64;
typedef uint64_t u64;