Starting with LLVM 12 and GCC 11 (and backported to gcc-10 for Debian),
GCC introduces optimizations for new micro-architecture levels from
the x86-64 psABI. Filing these bug reports for packages building with
the current level (x86-64), but not with x86-64-v2.
To reproduce these issues, append -march=x86-64-v2 to the compiler
flags (CFLAGS, CXXFLAGS, ...). You also need hardware supporting these.
The easiest way is to call the dynamic linker in glibc 2.33 like
/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 --help
Otherwise look at the flags in /proc/cpuinfo and compare these with
those from table 3.1 in the System V Application Binary Interface doc:
https://gitlab.com/x86-psABIs/x86-64-ABI/-/wikis/x86-64-psABI
Please don't upload a package setting these flags by default. The
x86-64 baseline is still unchanged.
The full build log can be found at:
http://people.debian.org/~doko/logs/20210228/filtered/gcc10-v2/libntru_0.5-2_unstable_gcc10-v2.log
The last lines of the build log are at the end of this report.
[...]
dh_auto_configure: warning: Compatibility levels before 10 are deprecated (level 9 in use)
debian/rules override_dh_auto_build
make[1]: Entering directory '/<<PKGBUILDDIR>>'
dh_auto_build -- SSE=no AVX2=no
dh_auto_build: warning: Compatibility levels before 10 are deprecated (level 9 in use)
make -j1 SSE=no AVX2=no
make[2]: Entering directory '/<<PKGBUILDDIR>>'
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/bitstring.c -o src/bitstring.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/encparams.c -o src/encparams.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/hash.c -o src/hash.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/idxgen.c -o src/idxgen.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/key.c -o src/key.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/mgf.c -o src/mgf.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/ntru.c -o src/ntru.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/poly.c -o src/poly.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/rand.c -o src/rand.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/arith.c -o src/arith.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/sha1.c -o src/sha1.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/sha2.c -o src/sha2.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/nist_ctr_drbg.c -o src/nist_ctr_drbg.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/rijndael.c -o src/rijndael.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wdate-time -D_FORTIFY_SOURCE=2 -shared -Wl,-soname,libntru-0.5.so -o libntru-0.5.so src/bitstring.o src/encparams.o src/hash.o src/idxgen.o src/key.o src/mgf.o src/ntru.o src/poly.o src/rand.o src/arith.o src/sha1.o src/sha2.o src/nist_ctr_drbg.o src/rijndael.o -Wl,-z,relro -lrt
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
debian/rules override_dh_auto_test
make[1]: Entering directory '/<<PKGBUILDDIR>>'
dh_auto_test -- SSE=no AVX2=no
dh_auto_test: warning: Compatibility levels before 10 are deprecated (level 9 in use)
make -j1 test SSE=no AVX2=no
make[2]: Entering directory '/<<PKGBUILDDIR>>'
make -f Makefile.linux testnoham
make[3]: Entering directory '/<<PKGBUILDDIR>>'
rm -f src/*.o src/*.s tests/*.o libntru.so libntru.a libntru.dylib libntru.dll testham testnoham testham.exe testnoham.exe bench bench.exe hybrid hybrid.exe
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/bitstring.c -o src/bitstring.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/encparams.c -o src/encparams.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/hash.c -o src/hash.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/idxgen.c -o src/idxgen.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/key.c -o src/key.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/mgf.c -o src/mgf.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/ntru.c -o src/ntru.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/poly.c -o src/poly.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/rand.c -o src/rand.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/arith.c -o src/arith.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/sha1.c -o src/sha1.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/sha2.c -o src/sha2.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/nist_ctr_drbg.c -o src/nist_ctr_drbg.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT -Wdate-time -D_FORTIFY_SOURCE=2 -c -fPIC src/rijndael.c -o src/rijndael.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT -Wdate-time -D_FORTIFY_SOURCE=2 -shared -Wl,-soname,libntru-0.5.so -o libntru-0.5.so src/bitstring.o src/encparams.o src/hash.o src/idxgen.o src/key.o src/mgf.o src/ntru.o src/poly.o src/rand.o src/arith.o src/sha1.o src/sha2.o src/nist_ctr_drbg.o src/rijndael.o -Wl,-z,relro -lrt
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Isrc -c tests/test_bitstring.c -o tests/test_bitstring.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Isrc -c tests/test_hash.c -o tests/test_hash.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Isrc -c tests/test_idxgen.c -o tests/test_idxgen.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Isrc -c tests/test_key.c -o tests/test_key.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Isrc -c tests/test_ntru.c -o tests/test_ntru.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Isrc -c tests/test.c -o tests/test.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Isrc -c tests/test_poly.c -o tests/test_poly.o
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Isrc -c tests/test_util.c -o tests/test_util.o
CFLAGS=-g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT
cc -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -DNTRU_AVOID_HAMMING_WT_PATENT -Wall -Wextra -Wno-unused-parameter -O2 -Wall -Wextra -Wno-unused-parameter -O2 -DNTRU_AVOID_HAMMING_WT_PATENT -o testnoham tests/test_bitstring.o tests/test_hash.o tests/test_idxgen.o tests/test_key.o tests/test_ntru.o tests/test.o tests/test_poly.o tests/test_util.o -L. -lntru-0.5 -lm
/usr/bin/ld: ./libntru-0.5.so: undefined reference to `sha256_multi_block'
/usr/bin/ld: ./libntru-0.5.so: undefined reference to `sha1_multi_block'
collect2: error: ld returned 1 exit status
make[3]: *** [Makefile.linux:154: testnoham] Error 1
make[3]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: *** [Makefile.linux:138: test] Error 2
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
dh_auto_test: error: make -j1 test SSE=no AVX2=no returned exit code 2
make[1]: *** [debian/rules:24: override_dh_auto_test] Error 25
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
make: *** [debian/rules:18: build] Error 2
dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2