I have a bin host and client, the host is ryxen X2700 and the client is intel based.
I compile all the bins for the client inside a chroot with shared cflags between the host and the client.
everything works great when the client cpu was g4560.
now I've upgraded it to i7-7700 and updated the shared cflags and cpu flags to this:
Code: Select all
CFLAGS="-O2 -pipe -march=skylake -mabm --param l1-cache-line-size=64 --param l1-cache-size=32 --param l2-cache-size=8192 -mno-sgx -mno-rtm -mno-hle -mno-mwaitx -mno-clzero -mno-sse4a -mno-sha"
CPU_FLAGS_X86="aes avx avx2 f16c fma3 mmx mmxext pclmul popcnt rdrand sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3"
I've recompiled all pkgs and the kernel, one failure, glibc.
the error is
Code: Select all
x86_64-pc-linux-gnu-gcc -m64 -pipe -march=skylake -mno-rtm -mno-hle -mno-sse4a -mno-sha -O2 -Wl,-O1 -Wl,--as-needed ../sysdeps/unix/sysv/linux/x86/elision-lock.c -c -std=gnu11 -fgnu89-inline -pipe -march=skylake -mno-rtm -mno-hle -mno-sse4a -mno-sha -O2 -Wall -Wwrite-strings -Wundef -fmerge-all-constants -frounding-math -fstack-protector-strong -Wstrict-prototypes -Wold-style-definition -fmath-errno -mrtm -ftls-model=initial-exec -U_FORTIFY_SOURCE -pipe -march=skylake -mno-rtm -mno-hle -mno-sse4a -mno-sha -I../include -I/var/tmp/portage/sys-libs/glibc-2.32-r7/work/build-amd64-x86_64-pc-linux-gnu-nptl/nptl -I/var/tmp/portage/sys-libs/glibc-2.32-r7/work/build-amd64-x86_64-pc-linux-gnu-nptl -I../sysdeps/unix/sysv/linux/x86_64/64 -I../sysdeps/unix/sysv/linux/x86_64 -I../sysdeps/unix/sysv/linux/x86/include -I../sysdeps/unix/sysv/linux/x86 -I../sysdeps/x86/nptl -I../sysdeps/unix/sysv/linux/wordsize-64 -I../sysdeps/x86_64/nptl -I../sysdeps/unix/sysv/linux/include -I../sysdeps/unix/sysv/linux -I../sysdeps/nptl -I../sysdeps/pthread -I../sysdeps/gnu -I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix/x86_64 -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/x86_64/64 -I../sysdeps/x86_64/fpu/multiarch -I../sysdeps/x86_64/fpu -I../sysdeps/x86/fpu -I../sysdeps/x86_64/multiarch -I../sysdeps/x86_64 -I../sysdeps/x86 -I../sysdeps/ieee754/float128 -I../sysdeps/ieee754/ldbl-96/include -I../sysdeps/ieee754/ldbl-96 -I../sysdeps/ieee754/dbl-64/wordsize-64 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754/flt-32 -I../sysdeps/wordsize-64 -I../sysdeps/ieee754 -I../sysdeps/generic -I.. -I../libio -I. -nostdinc -isystem /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include -isystem /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed -isystem /usr/include -D_LIBC_REENTRANT -include /var/tmp/portage/sys-libs/glibc-2.32-r7/work/build-amd64-x86_64-pc-linux-gnu-nptl/libc-modules.h -DMODULE_NAME=libpthread -include ../include/libc-symbols.h -DPIC -DTOP_NAMESPACE=glibc -o /var/tmp/portage/sys-libs/glibc-2.32-r7/work/build-amd64-x86_64-pc-linux-gnu-nptl/nptl/elision-lock.o -MD -MP -MF /var/tmp/portage/sys-libs/glibc-2.32-r7/work/build-amd64-x86_64-pc-linux-gnu-nptl/nptl/elision-lock.o.dt -MT /var/tmp/portage/sys-libs/glibc-2.32-r7/work/build-amd64-x86_64-pc-linux-gnu-nptl/nptl/elision-lock.o
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/immintrin.h:115,
from /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/x86intrin.h:32,
from ../sysdeps/unix/sysv/linux/x86/hle.h:5,
from ../sysdeps/unix/sysv/linux/x86/elision-lock.c:22:
../sysdeps/unix/sysv/linux/x86/elision-lock.c: In function ‘__lll_lock_elision’:
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/rtmintrin.h:50:1: error: inlining failed in call to ‘always_inline’ ‘_xbegin’: target specific option mismatch
50 | _xbegin (void)
| ^~~~~~~
../sysdeps/unix/sysv/linux/x86/elision-lock.c:62:18: note: called from here
62 | if ((status = _xbegin()) == _XBEGIN_STARTED)
| ^~~~~~~~~
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/immintrin.h:115,
from /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/x86intrin.h:32,
from ../sysdeps/unix/sysv/linux/x86/hle.h:5,
from ../sysdeps/unix/sysv/linux/x86/elision-lock.c:22:
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/rtmintrin.h:71:1: error: inlining failed in call to ‘always_inline’ ‘_xabort’: target specific option mismatch
71 | _xabort (const unsigned int __imm)
| ^~~~~~~
../sysdeps/unix/sysv/linux/x86/elision-lock.c:70:8: note: called from here
70 | _xabort (_ABORT_LOCK_BUSY);
ideas?
I don't think it is a compiler issue
