libgcrypt clang asm configure issue.

Jussi Kivilinna jussi.kivilinna at iki.fi
Fri Nov 4 06:17:22 CET 2022


Hello,

On 28.10.2022 22.00, Dmytro Kovalov via Gnupg-users wrote:
> Hello,
> 
> I found a strange libgcrypt behavior on ARM with clang built.
> 
> There is a big gap in performance of libgcrypt, built by clang, in comparison with gcc on my ARM target machine.
> The simple profile test shows 100-500% advantage of gcc gcrypt.
> I found an awkward workaround to beat this issue, but need your help to find the best way to fix it.
> 
> The root cause is next:
> Due to clang strict assembler syntax rules the unified assembler ARM check doesn't pass.
> Assembler check fails while ./configure for flags:
> HAVE_COMPATIBLE_GCC_ARM_PLATFORM_AS
> HAVE_GCC_INLINE_ASM_NEON
> 
> As a workaround I remove '%' from registers names in
> configure.ac <http://configure.ac/>,
> arm mips lib *.S files,
> cipher/*arm.S,*armv7-neon.S files.
> 
> Could you please help with a more correct - polite way to compile libgcrypt with assembler code?

This looks correct fix for improving compatibility with clang. It seems that GNU assembler works with those extra '%', but clang arm assembler does not. Only some of the arm assembly in libgcrypt have those extra '%' on register names but not all.

-Jussi

> 
> Tested on:
> libgcrypt-1.8.6
> libgcrypt-1.9.3
> 
> Equipment:
> 
> build machine:
> intel based cpu x86_64
> Ubnuntu-20.04
> 
> Software
> compiler        : clang 11.1.0
> linker lld      : lld 11.1.0
> assembler       : llvm-as 11.1.0
> cflags          : "-m32 -march=armv7-a -mthumb -mfpu=vfpv3-d16 --target=arm-linux-gnueabihf"
> 
> arm-linux-gnueabihf sysroot based on glibc 2.31
> 
> libgcrypt configuring:
> CC="arm-linux-gnueabihf-clang" \
> ./configure \
>    --with-libgpg-error-prefix=<libgpg.so path> \
>    --prefix=<output path> \
>    --host=arm-linux-gnueabihf \
>    --enable-static \
>    --disable-doc
> 
> 
> target machine:
> hardware:
> model name : ARMv7 Processor rev 4 (v7l)
> BogoMIPS : 2304.00
> Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae aes pmull sha1 sha2 crc32
> 
> 
> Best Regards,
> Dmytro Kovalov
> Dmytro.a.kovalov at globallogic.com <mailto:Dmytro.a.kovalov at globallogic.com>
> 
> _______________________________________________
> Gnupg-users mailing list
> Gnupg-users at gnupg.org
> https://lists.gnupg.org/mailman/listinfo/gnupg-users




More information about the Gnupg-users mailing list