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=UTF-8 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 d25d5fdb9..3960bdb2d 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.20.1