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

Reply via email to