If you build on Ubuntu with

'../../configure' '--cc=clang' '--cxx=clang++' '--enable-sanitizers'
'--enable-debug' '--extra-cflags=-O1 -fno-omit-frame-pointer
-fno-optimize-sibling-calls'

(which is something like what the clang documentation recommends)

then you get a compile error in cputlb.c:

/usr/bin/ld: 
/usr/lib/llvm-10/lib/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors_vfork.S.o):
warning: common of `__interception::real_vfork' overridden by
definition from
/usr/lib/llvm-10/lib/clang/10.0.0/lib/linux/libclang_rt.asan-x86_64.a(asan_interceptors.cpp.o)
/usr/bin/ld: libqemu-aarch64-softmmu.fa.p/accel_tcg_cputlb.c.o: in
function `load_memop':
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/san/../../accel/tcg/cputlb.c:1902:
undefined reference to `qemu_build_not_reached_always'
/usr/bin/ld: libqemu-aarch64-softmmu.fa.p/accel_tcg_cputlb.c.o: in
function `store_memop':
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/san/../../accel/tcg/cputlb.c:2228:
undefined reference to `qemu_build_not_reached_always'
/usr/bin/ld: libqemu-aarch64-softmmu.fa.p/accel_tcg_cputlb.c.o: in
function `load_memop':
/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/san/../../accel/tcg/cputlb.c:1902:
undefined reference to `qemu_build_not_reached_always'


It looks like somebody's encountered this before, because
scripts/oss-fuzz/build.sh contains a hacky wokraround for it
involving undefining __OPTIMIZE__.

How can we deal with this in a way that works for everybody
compiling QEMU ? I guess we could just drop the
qemu_build_not_reached() lines...

thanks
-- PMM

Reply via email to