From: Niels Möller Date: Mon, 16 Jun 2025 19:13:33 +0000 (+0200) Subject: Move alignas declaration, to be compatible with C++. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e68c4ee16cd16fcb5078c94473fd58acfccb0fbc;p=thirdparty%2Fnettle.git Move alignas declaration, to be compatible with C++. --- diff --git a/aes.h b/aes.h index 3b6f9fb7..913c8463 100644 --- a/aes.h +++ b/aes.h @@ -68,7 +68,7 @@ extern "C" { struct aes128_ctx { - uint32_t _NETTLE_ALIGN16 keys[4 * (_AES128_ROUNDS + 1)]; + _NETTLE_ALIGN16 uint32_t keys[4 * (_AES128_ROUNDS + 1)]; }; void diff --git a/nettle-types.h b/nettle-types.h index da4195ab..3069c377 100644 --- a/nettle-types.h +++ b/nettle-types.h @@ -59,14 +59,15 @@ extern "C" { #endif /* On 64-bit platforms where uint64_t requires 8 byte alignment, use - twice the alignment. */ + twice the alignment. To work for both C and C++, needs to be placed + before the type, see example for nettle_block16 below. */ #define _NETTLE_ALIGN16 alignas(alignof(uint64_t) == 8 ? 16 : 0) /* An aligned 16-byte block. */ union nettle_block16 { uint8_t b[16]; - uint64_t _NETTLE_ALIGN16 u64[2]; + _NETTLE_ALIGN16 uint64_t u64[2]; }; union nettle_block8 diff --git a/umac.h b/umac.h index 01579f36..88544e61 100644 --- a/umac.h +++ b/umac.h @@ -70,7 +70,7 @@ extern "C" { /* Subkeys and state for UMAC with tag size 32*n bits. */ #define _UMAC_STATE(n) \ - uint32_t _NETTLE_ALIGN16 l1_key[UMAC_BLOCK_SIZE/4 + 4*((n)-1)]; \ + _NETTLE_ALIGN16 uint32_t l1_key[UMAC_BLOCK_SIZE/4 + 4*((n)-1)]; \ /* Keys in 32-bit pieces, high first */ \ uint32_t l2_key[6*(n)]; \ uint64_t l3_key1[8*(n)]; \