35202a786b97bca689e241a6674443821ef2776e
[d-i/busybox.git] / debian / patches / dont-force-no-alignment-for-s390.patch
1 Subject: dont force no alignment for s390
2 From: Michael Tokarev <mjt@tls.msk.ru>
3 Bugs-Debian: http://bugs.debian.org/681760
4 Forwarded: no
5
6 This fix hasn't been forwarded upstream, because might be more
7 correct fix is to use the ALIGN* marks properly in the declarations
8 too, or just remove whol ALIGN* mess:
9
10  http://lists.busybox.net/pipermail/busybox/2012-July/078155.html
11  http://lists.busybox.net/pipermail/busybox/2012-July/078163.html
12
13 --- a/include/platform.h
14 +++ b/include/platform.h
15 @@ -284,7 +284,13 @@
16  #define fdprintf dprintf
17  
18  /* Useful for defeating gcc's alignment of "char message[]"-like data */
19 -#if 1 /* if needed: !defined(arch1) && !defined(arch2) */
20 +/* #if 1 /o if needed: !defined(arch1) && !defined(arch2) */
21 +/* on s390 and s390x, GCC may generate incorrect code when accessing
22 + * variables defined with ALIGN* but declared without -- assuming alignment
23 + * on access which isn't actually present.  The right fix is to use ALIGN*
24 + * properly in all declarations too, but there are quite some of such places.
25 + */
26 +#if !defined(__s390__)
27  # define ALIGN1 __attribute__((aligned(1)))
28  # define ALIGN2 __attribute__((aligned(2)))
29  # define ALIGN4 __attribute__((aligned(4)))