summaryrefslogtreecommitdiff
path: root/elfcpp
diff options
context:
space:
mode:
Diffstat (limited to 'elfcpp')
-rw-r--r--elfcpp/ChangeLog9
-rw-r--r--elfcpp/elfcpp_swap.h16
2 files changed, 20 insertions, 5 deletions
diff --git a/elfcpp/ChangeLog b/elfcpp/ChangeLog
index dc37f65bab4..ee6db3a060f 100644
--- a/elfcpp/ChangeLog
+++ b/elfcpp/ChangeLog
@@ -1,3 +1,12 @@
+2020-06-26 Nick Alcock <nick.alcock@oracle.com>
+
+ * elfcpp_swap.h (bswap_16): Do not assume that presence of
+ <byteswap.h> means this is declared. Make static inline, matching
+ recent change to libctf, since there is no non-inline definition
+ of these functions.
+ (bswap_32): Likewise.
+ (bswap_64): Likewise.
+
2020-06-18 Fangrui Song <i@maskray.me>
PR gold/26039
diff --git a/elfcpp/elfcpp_swap.h b/elfcpp/elfcpp_swap.h
index 3c9d25997ba..61b3ba57520 100644
--- a/elfcpp/elfcpp_swap.h
+++ b/elfcpp/elfcpp_swap.h
@@ -46,15 +46,19 @@
#ifdef HAVE_BYTESWAP_H
#include <byteswap.h>
-#else
+#endif // defined(HAVE_BYTESWAP_H)
+
// Provide our own versions of the byteswap functions.
-inline uint16_t
+#if !HAVE_DECL_BSWAP_16
+static inline uint16_t
bswap_16(uint16_t v)
{
return ((v >> 8) & 0xff) | ((v & 0xff) << 8);
}
+#endif // !HAVE_DECL_BSWAP16
-inline uint32_t
+#if !HAVE_DECL_BSWAP_32
+static inline uint32_t
bswap_32(uint32_t v)
{
return ( ((v & 0xff000000) >> 24)
@@ -62,8 +66,10 @@ bswap_32(uint32_t v)
| ((v & 0x0000ff00) << 8)
| ((v & 0x000000ff) << 24));
}
+#endif // !HAVE_DECL_BSWAP32
-inline uint64_t
+#if !HAVE_DECL_BSWAP_64
+static inline uint64_t
bswap_64(uint64_t v)
{
return ( ((v & 0xff00000000000000ULL) >> 56)
@@ -75,7 +81,7 @@ bswap_64(uint64_t v)
| ((v & 0x000000000000ff00ULL) << 40)
| ((v & 0x00000000000000ffULL) << 56));
}
-#endif // !defined(HAVE_BYTESWAP_H)
+#endif // !HAVE_DECL_BSWAP64
// gcc 4.3 and later provides __builtin_bswap32 and __builtin_bswap64.