From 6e97d361b47c981966f0bfef03659c572409bcba Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 11 May 2019 13:48:16 -0700 Subject: [PATCH] b2sum: port to HP-UX C MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit * src/blake2/blake2.h (BLAKE2_PACKED): Don’t assume __attribute__ ((packed)) works on non-Microsoft compilers. Instead, assume it works only if we have good reason to assume so, and fall back on Microsoft (or not packing) otherwise. In practice, not packing is good enough and the BLAKE2_PACKED macro is mostly just for documentation. --- src/blake2/blake2.h | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/blake2/blake2.h b/src/blake2/blake2.h index d25d5fdb94..3960bdb2dc 100644 --- a/src/blake2/blake2.h +++ b/src/blake2/blake2.h @@ -18,10 +18,18 @@ #include #include -#if defined(_MSC_VER) -#define BLAKE2_PACKED(x) __pragma(pack(push, 1)) x __pragma(pack(pop)) -#else -#define BLAKE2_PACKED(x) x __attribute__((packed)) +#ifdef __has_attribute +# if __has_attribute (packed) +# define BLAKE2_PACKED(x) x __attribute__ ((packed)) +# endif +#endif +#if !defined BLAKE2_PACKED && defined _MSC_VER +# define BLAKE2_PACKED(x) __pragma (pack (push, 1)) x __pragma (pack (pop)) +#endif +#ifndef BLAKE2_PACKED +/* This should be good enough on other platforms. + If it's not good on yours, please file a bug report. */ +# define BLAKE2_PACKED(x) x #endif #if defined(__cplusplus) -- 2.47.2