libgcrypt clang asm configure issue.

Dmytro Kovalov dmytro.a.kovalov at
Fri Oct 28 21:00:47 CEST 2022


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:

As a workaround I remove '%' from registers names in,
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?

Tested on:


build machine:
intel based cpu x86_64

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

arm-linux-gnueabihf sysroot based on glibc 2.31

libgcrypt configuring:
CC="arm-linux-gnueabihf-clang" \
./configure \
  --with-libgpg-error-prefix=< path> \
  --prefix=<output path> \
  --host=arm-linux-gnueabihf \
  --enable-static \

target machine:
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the Gnupg-users mailing list