--- /dev/null
+--- a/tools/include/tools/be_byteshift.h
++++ b/tools/include/tools/be_byteshift.h
+@@ -1,7 +1,11 @@
+ #ifndef _TOOLS_BE_BYTESHIFT_H
+ #define _TOOLS_BE_BYTESHIFT_H
+
++#ifdef __linux__
+ #include <linux/types.h>
++#else
++#include "linux_types.h"
++#endif
+
+ static inline __u16 __get_unaligned_be16(const __u8 *p)
+ {
+--- a/tools/include/tools/le_byteshift.h
++++ b/tools/include/tools/le_byteshift.h
+@@ -1,7 +1,11 @@
+ #ifndef _TOOLS_LE_BYTESHIFT_H
+ #define _TOOLS_LE_BYTESHIFT_H
+
++#ifdef __linux__
+ #include <linux/types.h>
++#else
++#include "linux_types.h"
++#endif
+
+ static inline __u16 __get_unaligned_le16(const __u8 *p)
+ {
+--- /dev/null
++++ b/tools/include/tools/linux_types.h
+@@ -0,0 +1,22 @@
++#ifndef __LINUX_TYPES_H
++#define __LINUX_TYPES_H
++
++#include <stdint.h>
++
++typedef uint8_t __u8;
++typedef uint8_t __be8;
++typedef uint8_t __le8;
++
++typedef uint16_t __u16;
++typedef uint16_t __be16;
++typedef uint16_t __le16;
++
++typedef uint32_t __u32;
++typedef uint32_t __be32;
++typedef uint32_t __le32;
++
++typedef uint64_t __u64;
++typedef uint64_t __be64;
++typedef uint64_t __le64;
++
++#endif
+++ /dev/null
---- a/arch/x86/tools/relocs.c
-+++ b/arch/x86/tools/relocs.c
-@@ -10,7 +10,18 @@
- #define USE_BSD
- #include <endian.h>
- #include <regex.h>
--#include <tools/le_byteshift.h>
-+
-+static inline void __put_unaligned_le16(uint16_t val, uint8_t *p)
-+{
-+ *p++ = val;
-+ *p++ = val >> 8;
-+}
-+
-+static inline void put_unaligned_le32(uint32_t val, uint8_t *p)
-+{
-+ __put_unaligned_le16(val >> 16, p + 2);
-+ __put_unaligned_le16(val, p);
-+}
-
- static void die(char *fmt, ...);
-