[David Michael] [PATCH libgcypt 2/2] cipher/poly1305: Fix 32-bit x86 compilation

Jussi Kivilinna jussi.kivilinna at iki.fi
Fri Jan 22 16:32:19 CET 2021


On 22.1.2021 13.21, Werner Koch via Gcrypt-devel wrote:
> ForwardedMessage.eml / David Michael <fedora.dm0 at gmail.com>:
> * cipher/poly1305.c [HAVE_COMPATIBLE_GCC_ARM_PLATFORM_AS]: Also
> conditionalize on whether __arm__ is defined.
> --
> When building for i686, configure detects that the assembler can
> use the different architectures, so it defined everything under the
> HAVE_COMPATIBLE_GCC_ARM_PLATFORM_AS conditional block.  Since that
> block is first and the following x86 block only defines UMUL_ADD_32
> if it's not already defined, the lto-wrapper failed during linking
> with a pile of "no such instruction: umlal ..." errors.  Gating on
> __arm__ prevents that initial defintion and fixes the errors.

HAVE_COMPATIBLE_GCC_ARM_PLATFORM_AS should not be defined on x86/i686
in first place.

Problem must be in 'configure.ac' in the HAVE_COMPATIBLE_GCC_ARM_PLATFORM_AS
check. Does this issue happen with "clang -flto"?

There was another issue reported regarding clang LTO on x86_64
(https://dev.gnupg.org/T5255) and there problem was caused partly by
another 'configure.ac' check not working with clang when LTO enabled.
Fix there was to change assembly check to be done with compile+link
instead of just compile.


More information about the Gcrypt-devel mailing list