summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author卜部昌平 <shyouhei@ruby-lang.org>2019-12-27 10:17:06 +0900
committer卜部昌平 <shyouhei@ruby-lang.org>2019-12-27 10:17:06 +0900
commit8c5430e2745b7dad698cfcc6e0d3ba6c71bfc39e (patch)
treeaa8197f864cb11f4435b582e0b5b4f0a221b9f99
parent018769e291c223d82a7bc4d6a5a1bad247584c53 (diff)
reroute macro conflicts on OpenBSD
OpenBSD's <sys/endian.h> has its own swap32() etc. We have to avoid name conflicts. See also https://rubyci.org/logs/rubyci.s3.amazonaws.com/openbsd-current/ruby-master/log/20191226T210011Z.log.html.gz#miniruby
-rw-r--r--internal/bits.h24
1 files changed, 18 insertions, 6 deletions
diff --git a/internal/bits.h b/internal/bits.h
index 2530bd89bc..7c1be2aa17 100644
--- a/internal/bits.h
+++ b/internal/bits.h
@@ -117,9 +117,21 @@
64 - nlz_int64((uint64_t)(x)))
#endif
-static inline uint16_t swap16(uint16_t);
-static inline uint32_t swap32(uint32_t);
-static inline uint64_t swap64(uint64_t);
+#ifndef swap16
+# define swap16 ruby_swap16
+#endif
+
+#ifndef swap32
+# define swap32 ruby_swap32
+#endif
+
+#ifndef swap64
+# define swap64 ruby_swap64
+#endif
+
+static inline uint16_t ruby_swap16(uint16_t);
+static inline uint32_t ruby_swap32(uint32_t);
+static inline uint64_t ruby_swap64(uint64_t);
static inline unsigned nlz_int(unsigned x);
static inline unsigned nlz_long(unsigned long x);
static inline unsigned nlz_long_long(unsigned long long x);
@@ -139,7 +151,7 @@ static inline VALUE RUBY_BIT_ROTL(VALUE, int);
static inline VALUE RUBY_BIT_ROTR(VALUE, int);
static inline uint16_t
-swap16(uint16_t x)
+ruby_swap16(uint16_t x)
{
#if __has_builtin(__builtin_bswap16)
return __builtin_bswap16(x);
@@ -154,7 +166,7 @@ swap16(uint16_t x)
}
static inline uint32_t
-swap32(uint32_t x)
+ruby_swap32(uint32_t x)
{
#if __has_builtin(__builtin_bswap32)
return __builtin_bswap32(x);
@@ -171,7 +183,7 @@ swap32(uint32_t x)
}
static inline uint64_t
-swap64(uint64_t x)
+ruby_swap64(uint64_t x)
{
#if __has_builtin(__builtin_bswap64)
return __builtin_bswap64(x);