Author: grothoff Date: 2012-07-30 09:26:05 +0200 (Mon, 30 Jul 2012) New Revision: 22960 Modified: gnunet/src/include/gnunet_common.h Log: fix for gcc alginment issue on sparc reported to Debian as #670578 Modified: gnunet/src/include/gnunet_common.h =================================================================== --- a/src/include/gnunet_common.h +++ b/src/include/gnunet_common.h @@ -170,9 +170,13 @@ */ #define GNUNET_NORETURN __attribute__((noreturn)) +#if MINGW #if __GNUC__ > 3 /** - * gcc 4.x-ism to pack structures even on W32 (to be used before structs) + * gcc 4.x-ism to pack structures even on W32 (to be used before structs); + * Using this would cause structs to be unaligned on the stack on Sparc, + * so we *only* use this on W32 (see #670578 from Debian); fortunately, + * W32 doesn't run on sparc anyway. */ #define GNUNET_NETWORK_STRUCT_BEGIN \ _Pragma("pack(push)") \ @@ -180,19 +184,23 @@ /** * gcc 4.x-ism to pack structures even on W32 (to be used after structs) + * Using this would cause structs to be unaligned on the stack on Sparc, + * so we *only* use this on W32 (see #670578 from Debian); fortunately, + * W32 doesn't run on sparc anyway. */ #define GNUNET_NETWORK_STRUCT_END _Pragma("pack(pop)") + #else -#ifdef MINGW #error gcc 4.x or higher required on W32 systems #endif +#else /** - * Good luck, GNUNET_PACKED should suffice, but this won't work on W32 + * Define as empty, GNUNET_PACKED should suffice, but this won't work on W32 */ #define GNUNET_NETWORK_STRUCT_BEGIN /** - * Good luck, GNUNET_PACKED should suffice, but this won't work on W32 + * Define as empty, GNUNET_PACKED should suffice, but this won't work on W32; */ #define GNUNET_NETWORK_STRUCT_END #endif