diff options
author | Bertrand Marc <beberking@gmail.com> | 2012-08-01 22:10:21 +0200 |
---|---|---|
committer | Bertrand Marc <beberking@gmail.com> | 2012-08-01 22:10:21 +0200 |
commit | 1086271ff9c59adec8da95f948d637bc1f4a63e4 (patch) | |
tree | 86a550e70c8a91e9644b525bc0e9f8ea29ba5159 | |
parent | ac634a4debd4e86b75a26f9b74375088f274174e (diff) |
Fix "gcc-4.6: [sparc] compiler fails to align stack-allocated struct, with array of uint32-values to 32-bit boundary"
-rw-r--r-- | debian/changelog | 10 | ||||
-rw-r--r-- | debian/patches/series | 1 | ||||
-rw-r--r-- | debian/patches/sparc_alignment.patch | 55 |
3 files changed, 64 insertions, 2 deletions
diff --git a/debian/changelog b/debian/changelog index 2cee909..1eea35c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,8 +7,14 @@ gnunet (0.9.3-3) unstable; urgency=low and upgrade properly depending on the previous version (Closes: #673301). * Rewrite gnunet-server.init based on /etc/init.d/skeleton and make gnunet-server depend on lsb-base to use LSB logging. - - -- Bertrand Marc <beberking@gmail.com> Fri, 13 Jul 2012 22:13:55 +0200 + * Fix "gcc-4.6: [sparc] compiler fails to align stack-allocated + struct, with array of uint32-values to 32-bit boundary": + new patch sparc_alignment.patch, taken from upstream: + https://lists.gnu.org/archive/html/gnunet-svn/2012-07/msg00548.html + Thanks to Jurij Smakov for the analysis. + (Closes: #670578) + + -- Bertrand Marc <beberking@gmail.com> Wed, 01 Aug 2012 22:09:49 +0200 gnunet (0.9.3-2) unstable; urgency=low diff --git a/debian/patches/series b/debian/patches/series index f5b7ca3..0eecbb2 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1 +1,2 @@ support_GNU_hurd.patch +sparc_alignment.patch diff --git a/debian/patches/sparc_alignment.patch b/debian/patches/sparc_alignment.patch new file mode 100644 index 0000000..8707ad1 --- /dev/null +++ b/debian/patches/sparc_alignment.patch @@ -0,0 +1,55 @@ +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 |