Hi,
I've been building nettle with Clang from a generated toolchain with the
latest Android NDK (16b).
Form architecture with available assembler code (x86 in particular),
compilation fails because the generated asm is not compatible with clang.
So I use --disable-assembler, thinking it would fix the problem. But it
still fails (see log below):
The workaround has been to entirely disable (comment) the asm rule in
Makefile.in:
#.asm.$(OBJEXT): $(srcdir)/asm.m4 machine.m4 config.m4
# $(M4) $(srcdir)/asm.m4 machine.m4 config.m4 $< >$*.s
# $(COMPILE) -c $*.s
# @echo "$@ : $< $(srcdir)/asm.m4 machine.m4 config.m4" >[email protected]
For some reason, this rule generates asm files even when
--disable-assembler is specified and it gets in the way later in the build.
The proper fix would be to make sure this rule never kicks in with
--disable-assembler.
And also maybe force --disable-assembler when clang is the compiler, or
update the asm generation macro (asm.m4)
to produce .s files compatible with clang.
/////////
Version: nettle 3.4
Host type: x86-unknown-none
ABI: standard
Assembly files: none
Install prefix: /home/bobbie/ffmpeg-android-3.4.1/toolchain-android
Library directory: ${exec_prefix}/lib
Compiler:
/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/bin/i686-linux-android-clang
--sysroot=/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/sysroot
Static libraries: yes
Shared libraries: no
Public key crypto: yes
Using mini-gmp: no
Documentation: no
make install-here
make[1]: Entering directory `/home/bobbie/ffmpeg-android-3.4.1/nettle-3.4'
/bin/mkdir -p
/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/include/nettle
/usr/bin/m4 ./asm.m4 machine.m4 config.m4 aes-decrypt-internal.asm
>aes-decrypt-internal.s
/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/bin/i686-linux-android-clang
--sysroot=/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/sysroot
-I. -DHAVE_CONFIG_H
-I/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/include -ggdb3
-Wall -W -Wmissing-prototypes -Wmissing-declarations
-Wstrict-prototypes -Wpointer-arith -Wbad-function-cast
-Wnested-externs -fpic -MT aes-decrypt.o -MD -MP -MF aes-decrypt.o.d -c
aes-decrypt.c \
&& true
for f in aes.h arcfour.h arctwo.h asn1.h blowfish.h base16.h base64.h
bignum.h buffer.h camellia.h cast128.h cbc.h ccm.h cfb.h chacha.h
chacha-poly1305.h ctr.h curve25519.h des.h des-compat.h dsa.h
dsa-compat.h eax.h ecc-curve.h ecc.h ecdsa.h eddsa.h gcm.h gosthash94.h
hmac.h knuth-lfib.h hkdf.h macros.h md2.h md4.h md5.h md5-compat.h
memops.h memxor.h nettle-meta.h nettle-types.h pbkdf2.h pgp.h pkcs1.h
pss.h pss-mgf1.h realloc.h ripemd160.h rsa.h salsa20.h sexp.h serpent.h
sha.h sha1.h sha2.h sha3.h twofish.h umac.h yarrow.h poly1305.h
nettle-stdint.h version.h ; do \
if [ -f "$f" ] ; then \
/usr/bin/install -c -m 644 "$f"
/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/include/nettle ; \
else \
/usr/bin/install -c -m 644 "./$f"
/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/include/nettle ; \
fi ; done
/usr/bin/m4 ./asm.m4 machine.m4 config.m4 aes-encrypt-internal.asm
>aes-encrypt-internal.s
/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/bin/i686-linux-android-clang
--sysroot=/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/sysroot
-I. -DHAVE_CONFIG_H
-I/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/include -ggdb3
-Wall -W -Wmissing-prototypes -Wmissing-declarations
-Wstrict-prototypes -Wpointer-arith -Wbad-function-cast
-Wnested-externs -fpic -MT aes-encrypt.o -MD -MP -MF aes-encrypt.o.d -c
aes-encrypt.c \
&& true
/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/bin/i686-linux-android-clang
--sysroot=/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/sysroot
-I. -DHAVE_CONFIG_H
-I/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/include -ggdb3
-Wall -W -Wmissing-prototypes -Wmissing-declarations
-Wstrict-prototypes -Wpointer-arith -Wbad-function-cast
-Wnested-externs -fpic -MT aes-encrypt-table.o -MD -MP -MF
aes-encrypt-table.o.d -c aes-encrypt-table.c \
&& true
/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/bin/i686-linux-android-clang
--sysroot=/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/sysroot
-I. -DHAVE_CONFIG_H
-I/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/include -ggdb3
-Wall -W -Wmissing-prototypes -Wmissing-declarations
-Wstrict-prototypes -Wpointer-arith -Wbad-function-cast
-Wnested-externs -fpic -MT aes-invert-internal.o -MD -MP -MF
aes-invert-internal.o.d -c aes-invert-internal.c \
&& true
/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/bin/i686-linux-android-clang
--sysroot=/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/sysroot
-I. -DHAVE_CONFIG_H
-I/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/include -ggdb3
-Wall -W -Wmissing-prototypes -Wmissing-declarations
-Wstrict-prototypes -Wpointer-arith -Wbad-function-cast
-Wnested-externs -fpic -MT aes-set-key-internal.o -MD -MP -MF
aes-set-key-internal.o.d -c aes-set-key-internal.c \
&& true
/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/bin/i686-linux-android-clang
--sysroot=/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/sysroot
-I. -DHAVE_CONFIG_H
-I/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/include -ggdb3
-Wall -W -Wmissing-prototypes -Wmissing-declarations
-Wstrict-prototypes -Wpointer-arith -Wbad-function-cast
-Wnested-externs -fpic -MT aes-decrypt-internal.o -MD -MP -MF
aes-decrypt-internal.o.d -c aes-decrypt-internal.s
/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/bin/i686-linux-android-clang
--sysroot=/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/sysroot
-I. -DHAVE_CONFIG_H
-I/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/include -ggdb3
-Wall -W -Wmissing-prototypes -Wmissing-declarations
-Wstrict-prototypes -Wpointer-arith -Wbad-function-cast
-Wnested-externs -fpic -MT aes-encrypt-internal.o -MD -MP -MF
aes-encrypt-internal.o.d -c aes-encrypt-internal.s
/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/bin/i686-linux-android-clang
--sysroot=/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/sysroot
-I. -DHAVE_CONFIG_H
-I/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/include -ggdb3
-Wall -W -Wmissing-prototypes -Wmissing-declarations
-Wstrict-prototypes -Wpointer-arith -Wbad-function-cast
-Wnested-externs -fpic -MT aes-set-encrypt-key.o -MD -MP -MF
aes-set-encrypt-key.o.d -c aes-set-encrypt-key.c \
&& true
clang50/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/bin/i686-linux-android-clang
--sysroot=/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/sysroot
-I. -DHAVE_CONFIG_H
-I/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/include -ggdb3
-Wall -W -Wmissing-prototypes -Wmissing-declarations
-Wstrict-prototypes -Wpointer-arith -Wbad-function-cast
-Wnested-externs -fpic -MT aes-set-decrypt-key.o -MD -MP -MF
aes-set-decrypt-key.o.d -c aes-set-decrypt-key.c \
&& true
/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/bin/i686-linux-android-clang
--sysroot=/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/sysroot
-I. -DHAVE_CONFIG_H
-I/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/include -ggdb3
-Wall -W -Wmissing-prototypes -Wmissing-declarations
-Wstrict-prototypes -Wpointer-arith -Wbad-function-cast
-Wnested-externs -fpic -MT aes128-set-encrypt-key.o -MD -MP -MF
aes128-set-encrypt-key.o.d -c aes128-set-encrypt-key.c \
&& true
: warning: argument unused during compilation: '-D __ANDROID_API__=14'
[-Wunused-command-line-argument]
clang50: warning: argument unused during compilation: '-D HAVE_CONFIG_H'
[-Wunused-command-line-argument]
clang50: warning: argument unused during compilation: '-MT
aes-decrypt-internal.o' [-Wunused-command-line-argument]
clang50: warning: argument unused during compilation: '-MD'
[-Wunused-command-line-argument]
clang50: warning: argument unused during compilation: '-MP'
[-Wunused-command-line-argument]
clang50: warning: argument unused during compilation: '-MF
aes-decrypt-internal.o.d' [-Wunused-command-line-argument]
aes-decrypt-internal.s:67:10: error: unknown token in expression
teq r3, #0
^
aes-decrypt-internal.s:68:2: error: invalid instruction mnemonic 'beq'
beq .Lend
^~~
aes-decrypt-internal.s:70:7: error: Unexpected '{' in expression
push {r0,r1,r3, r4,r5,r6,r7,r8,r10,r11,lr}
^
clang50: warning: argument unused during compilation: '-D
__ANDROID_API__=14' [-Wunused-command-line-argument]
/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/bin/i686-linux-android-clang
--sysroot=/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/sysroot
-I. -DHAVE_CONFIG_H
-I/home/bobbie/ffmpeg-android-3.4.1/toolchain-android/include -ggdb3
-Wall -W -Wmissing-prototypes -Wmissing-declarations
-Wstrict-prototypes -Wpointer-arith -Wbad-function-cast
-Wnested-externs -fpic -MT aes128-set-decrypt-key.o -MD -MP -MF
aes128-set-decrypt-key.o.d -c aes128-set-decrypt-key.c \
&& true
clang50: warning: argument unused during compilation: '-D HAVE_CONFIG_H'
[-Wunused-command-line-argument]
clang50: warning: argument unused during compilation: '-MT
aes-encrypt-internal.o' [-Wunused-command-line-argument]
clang50: warning: argument unused during compilation: '-MD'
[-Wunused-command-line-argument]
clang50: warning: argument unused during compilation: '-MP'
[-Wunused-command-line-argument]
clang50: warning: argument unused during compilation: '-MF
aes-encrypt-internal.o.d' [-Wunused-command-line-argument]
aes-decrypt-internal.s:71:10: error: unknown token in expression
mov r0, #0x3fc
^
aes-decrypt-internal.s:75:13: error: expected ']' in brackets expression
ldr r1, [sp, #+48]
^
aes-decrypt-internal.s:76:10: error: Unexpected '{' in expression
ldm sp, {r10, r11}
^
aes-decrypt-internal.s:79:17: error: unknown token in expression
ldrb r4, [r1], #+1
_______________________________________________
nettle-bugs mailing list
[email protected]
http://lists.lysator.liu.se/mailman/listinfo/nettle-bugs