ecbff1
From 59a855f7dbbd79c01ab9e8d326e986de786dda3f Mon Sep 17 00:00:00 2001
ecbff1
From: Lubomir Rintel <lkundrak@v3.sk>
ecbff1
Date: Wed, 11 Jan 2017 10:50:25 +0100
ecbff1
Subject: [PATCH] sparse: avoid clash with __bitwise and __force from 4.10
ecbff1
 linux/types.h (#5061)
ecbff1
ecbff1
It also used __bitwise and __force. It seems easier to rename
ecbff1
our versions since they are local to this one single header.
ecbff1
ecbff1
Also, undefine them afteerwards, so that we don't pollute the
ecbff1
preprocessor macro namespace.
ecbff1
ecbff1
(cherry picked from commit dc66f33a16596c2886a24da12e56ec096214e124)
ecbff1
ecbff1
Related: #1447937
ecbff1
---
de8967
 src/shared/sparse-endian.h | 47 ++++++++++++++++++++------------------
ecbff1
 1 file changed, 25 insertions(+), 22 deletions(-)
ecbff1
ecbff1
diff --git a/src/shared/sparse-endian.h b/src/shared/sparse-endian.h
ecbff1
index c913fda8c..a3573b84a 100644
ecbff1
--- a/src/shared/sparse-endian.h
ecbff1
+++ b/src/shared/sparse-endian.h
ecbff1
@@ -26,19 +26,19 @@
ecbff1
 #include <stdint.h>
ecbff1
 
ecbff1
 #ifdef __CHECKER__
ecbff1
-#define __bitwise __attribute__((bitwise))
ecbff1
-#define __force __attribute__((force))
ecbff1
+#define __sd_bitwise __attribute__((bitwise))
ecbff1
+#define __sd_force __attribute__((force))
ecbff1
 #else
ecbff1
-#define __bitwise
ecbff1
-#define __force
ecbff1
+#define __sd_bitwise
ecbff1
+#define __sd_force
ecbff1
 #endif
ecbff1
 
ecbff1
-typedef uint16_t __bitwise le16_t;
ecbff1
-typedef uint16_t __bitwise be16_t;
ecbff1
-typedef uint32_t __bitwise le32_t;
ecbff1
-typedef uint32_t __bitwise be32_t;
ecbff1
-typedef uint64_t __bitwise le64_t;
ecbff1
-typedef uint64_t __bitwise be64_t;
ecbff1
+typedef uint16_t __sd_bitwise le16_t;
ecbff1
+typedef uint16_t __sd_bitwise be16_t;
ecbff1
+typedef uint32_t __sd_bitwise le32_t;
ecbff1
+typedef uint32_t __sd_bitwise be32_t;
ecbff1
+typedef uint64_t __sd_bitwise le64_t;
ecbff1
+typedef uint64_t __sd_bitwise be64_t;
ecbff1
 
ecbff1
 #undef htobe16
ecbff1
 #undef htole16
ecbff1
@@ -69,20 +69,23 @@ typedef uint64_t __bitwise be64_t;
ecbff1
 #define bswap_64_on_be(x) __bswap_64(x)
ecbff1
 #endif
ecbff1
 
ecbff1
-static inline le16_t htole16(uint16_t value) { return (le16_t __force) bswap_16_on_be(value); }
ecbff1
-static inline le32_t htole32(uint32_t value) { return (le32_t __force) bswap_32_on_be(value); }
ecbff1
-static inline le64_t htole64(uint64_t value) { return (le64_t __force) bswap_64_on_be(value); }
ecbff1
+static inline le16_t htole16(uint16_t value) { return (le16_t __sd_force) bswap_16_on_be(value); }
ecbff1
+static inline le32_t htole32(uint32_t value) { return (le32_t __sd_force) bswap_32_on_be(value); }
ecbff1
+static inline le64_t htole64(uint64_t value) { return (le64_t __sd_force) bswap_64_on_be(value); }
ecbff1
 
ecbff1
-static inline be16_t htobe16(uint16_t value) { return (be16_t __force) bswap_16_on_le(value); }
ecbff1
-static inline be32_t htobe32(uint32_t value) { return (be32_t __force) bswap_32_on_le(value); }
ecbff1
-static inline be64_t htobe64(uint64_t value) { return (be64_t __force) bswap_64_on_le(value); }
ecbff1
+static inline be16_t htobe16(uint16_t value) { return (be16_t __sd_force) bswap_16_on_le(value); }
ecbff1
+static inline be32_t htobe32(uint32_t value) { return (be32_t __sd_force) bswap_32_on_le(value); }
ecbff1
+static inline be64_t htobe64(uint64_t value) { return (be64_t __sd_force) bswap_64_on_le(value); }
ecbff1
 
ecbff1
-static inline uint16_t le16toh(le16_t value) { return bswap_16_on_be((uint16_t __force)value); }
ecbff1
-static inline uint32_t le32toh(le32_t value) { return bswap_32_on_be((uint32_t __force)value); }
ecbff1
-static inline uint64_t le64toh(le64_t value) { return bswap_64_on_be((uint64_t __force)value); }
ecbff1
+static inline uint16_t le16toh(le16_t value) { return bswap_16_on_be((uint16_t __sd_force)value); }
ecbff1
+static inline uint32_t le32toh(le32_t value) { return bswap_32_on_be((uint32_t __sd_force)value); }
ecbff1
+static inline uint64_t le64toh(le64_t value) { return bswap_64_on_be((uint64_t __sd_force)value); }
ecbff1
 
ecbff1
-static inline uint16_t be16toh(be16_t value) { return bswap_16_on_le((uint16_t __force)value); }
ecbff1
-static inline uint32_t be32toh(be32_t value) { return bswap_32_on_le((uint32_t __force)value); }
ecbff1
-static inline uint64_t be64toh(be64_t value) { return bswap_64_on_le((uint64_t __force)value); }
ecbff1
+static inline uint16_t be16toh(be16_t value) { return bswap_16_on_le((uint16_t __sd_force)value); }
ecbff1
+static inline uint32_t be32toh(be32_t value) { return bswap_32_on_le((uint32_t __sd_force)value); }
ecbff1
+static inline uint64_t be64toh(be64_t value) { return bswap_64_on_le((uint64_t __sd_force)value); }
ecbff1
+
ecbff1
+#undef __sd_bitwise
ecbff1
+#undef __sd_force
ecbff1
 
ecbff1
 #endif /* SPARSE_ENDIAN_H */