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

David Michael fedora.dm0 at gmail.com
Fri Jan 22 18:32:50 CET 2021


On Fri, Jan 22, 2021 at 12:18 PM Jussi Kivilinna <jussi.kivilinna at iki.fi> wrote:
> On 22.1.2021 18.28, David Michael wrote:
> > On Fri, Jan 22, 2021 at 10:32 AM Jussi Kivilinna <jussi.kivilinna at iki.fi> wrote:
> >> Hello,
> >>
> >> 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.
> >
> > Using i686 GCC has these in config.log:
> >
> > #define HAVE_COMPATIBLE_GCC_ARM_PLATFORM_AS 1
> > #define HAVE_COMPATIBLE_GCC_AARCH64_PLATFORM_AS 1
> > #define HAVE_COMPATIBLE_GCC_AMD64_PLATFORM_AS 1
> >
> >> Problem must be in 'configure.ac' in the HAVE_COMPATIBLE_GCC_ARM_PLATFORM_AS
> >> check. Does this issue happen with "clang -flto"?
> >
>
> Hm, ok. Maybe the LTO/configure.ac problem manifests itself also with GCC
> in some system configurations. Does attached patch help?

Yes, that seems to result in only
HAVE_COMPATIBLE_GCC_AMD64_PLATFORM_AS being defined for i686, so it
successfully builds.

Thanks.

David



More information about the Gcrypt-devel mailing list