From: Christian Grothoff Date: Mon, 30 Jul 2012 07:26:05 +0000 (+0000) Subject: fix for gcc alginment issue on sparc reported to Debian as #670578 X-Git-Tag: initial-import-from-subversion-38251~12293 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=6ec9f74c97dba8679e44903bb700237369d547b6;p=oweals%2Fgnunet.git fix for gcc alginment issue on sparc reported to Debian as #670578 --- diff --git a/src/include/gnunet_common.h b/src/include/gnunet_common.h index c744ec65f..dae3d4945 100644 --- a/src/include/gnunet_common.h +++ b/src/include/gnunet_common.h @@ -178,9 +178,13 @@ extern "C" */ #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)") \ @@ -188,19 +192,23 @@ extern "C" /** * 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