[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#633458: gcc-4.6 miscompiles libgcrypt11 on armel



On 2011-07-14 Matthias Klose <doko@debian.org> wrote:
> On 07/12/2011 07:56 PM, Andreas Metzler wrote:
> > On 2011-07-10 Andreas Metzler <ametzler@downhill.at.eu.org> wrote:
[...]
> >>> Building with -fno-strict-aliasing does not help.
[...]

> maybe try not to inline, or turn off an optimization for this
> specific function(s).  Then the assembler output of a working and a
> non-working function would help.

> __attribute__((noinline))
> __attribute__((optimize("O0")))
> __attribute__((optimize("no-inline")))
> __attribute__((optimize("no-strict-aliasing")))

> see
> http://gcc.gnu.org/onlinedocs/gcc-4.6.1/gcc/Function-Attributes.html#Function-Attributes

Hello,

[helps]    Building rijndael.c with -O0
[nochange] Building rijndael.c with -O1
[nochange] Building rijndael.c (or all gcrypt) with
           -fno-strict-aliasing
[helps]    Building rijndael.c with -fno-inline
[helps]    Setting __attribute__((noinline)) on do_decrypt_aligned [1]
[nochange] Setting __attribute__((noinline)) on do_decrypt
[helps]    Setting __attribute__((optimize("O0"))) on do_decrypt_aligned
[helps]    Setting __attribute__((optimize("O0"))) on do_decrypt
[helps]    Setting __attribute__((optimize("no-inline"))) on do_decrypt_aligned
[helps]    Setting __attribute__((optimize("no-inline"))) on do_decrypt

[...]

For which of these would like to see further info, and how exactly
should I generate it?

thanks, cu andreas

[1] Example diff:
-------------------------------------------------------------
--- ../rijndael.c.orig  2011-07-14 17:56:54.000000000 +0000
+++ cipher/rijndael.c   2011-07-15 17:54:46.000000000 +0000
@@ -569,7 +569,7 @@ _gcry_aes_cbc_enc (void *context, unsign
 /* Decrypt one block.  A and B need to be aligned on a 4 byte boundary
    and the decryption must have been prepared.  A and B may be the
    same. */
-static void
+__attribute__((noinline)) static void
 do_decrypt_aligned (RIJNDAEL_context *ctx,
                     unsigned char *b, const unsigned char *a)
 {



Reply to: