On Sun, 11 Jul 2021 at 16:17, Richard Henderson <richard.hender...@linaro.org> wrote: > > On 7/3/21 10:45 AM, Peter Maydell wrote: > > 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. > > Not true. The host certainly supports it. > > This is a new alignment warning in clang-12 wrt the alignment of the atomic > operation. > Which may be complicated by the fact that the i386 abi does not normally > align structures > beyond 4 bytes. > > We may need to disable this warning for i386 (but not x86_64).
The first part of the problem isn't just a warning, though -- it's clang actually emitting calls to libatomic. -- PMM