On Sat, 3 Jul 2021 at 15:37, Cole Robinson <crobi...@redhat.com> wrote: > > Hi, I'm hitting build errors with clang on i686 userspace on x86_64 > kernel. Affects both qemu 6.0.0 and qemu.git, tested with fedora > clang-12.0.1~rc3-1.fc35.i686. > > Full build log from the 6.0.0 build: > https://gist.githubusercontent.com/crobinso/7b1206044eac7326490b2adce829e861/raw/9dddef968051fd6383ba7adb9e595081ad4f8fa4/gistfile1.txt > > Lots of errors like: > > /usr/bin/ld: libqemu-aarch64-softmmu.fa.p/accel_tcg_cputlb.c.o: in > function `helper_atomic_cmpxchgq_le_mmu': > /builddir/build/BUILD/qemu-6.0.0/accel/tcg/atomic_template.h:86: > undefined reference to `__atomic_compare_exchange_8' > /usr/bin/ld: libqemu-aarch64-softmmu.fa.p/accel_tcg_cputlb.c.o: in > function `helper_atomic_xchgq_le_mmu': > /builddir/build/BUILD/qemu-6.0.0/accel/tcg/atomic_template.h:134: > undefined reference to `__atomic_exchange_8' > > Also warnings like: > > /builddir/build/BUILD/qemu-6.0.0/include/qemu/stats64.h:58:21: warning: > misaligned atomic operation may incur significant performance penalty; > the expected alignment (8 bytes) exceeds the actual alignment (4 bytes) > [-Watomic-alignment] > uint64_t orig = qatomic_read__nocheck(&s->value); > ^ > /builddir/build/BUILD/qemu-6.0.0/include/qemu/atomic.h:129:5: note: > expanded from macro 'qatomic_read__nocheck' > __atomic_load_n(ptr, __ATOMIC_RELAXED)
I think at least part of what is happening here is that this compiler/host doesn't support native 64-bit atomics, but configure has selected CONFIG_ATOMIC64 anyway. I've cc'd Paolo and Richard who 'git blame' suggests have touched the configure test and the stats64.h code in the past. (The compiler provides fallbacks in libatomic for the 64-bit atomics, but we deliberately do not link against libatomic because we do not want to use them.) thanks -- PMM