[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] configure: force enable-sanitizers together with enable-fuzz
From: |
Alexander Bulekov |
Subject: |
Re: [PATCH] configure: force enable-sanitizers together with enable-fuzzing |
Date: |
Sun, 21 Feb 2021 10:37:46 -0500 |
On 210221 0459, Li Qiang wrote:
> If we execute configure with --enable-fuzzing but without
> --enable-sanitizers, we will have a lot of 'undefined reference'
> build error such as following:
>
> clang-10 -o subprojects/libvhost-user/link-test
> subprojects/libvhost-user/link-test.p/link-test.c.o -Wl,--as-needed
> -Wl,--no-undefined -pie -Wl,--whole-archive -Wl,--start-group
> subprojects/libvhost-user/libvhost-user.a -Wl,--end-group
> -Wl,--no-whole-archive -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -m64
> -fstack-protector-strong -pthread
> /usr/bin/ld: subprojects/libvhost-user/link-test.p/link-test.c.o: in function
> `main':
> /home/test/qemu/build/../subprojects/libvhost-user/link-test.c:34: undefined
> reference to `__sancov_lowest_stack'
> /usr/bin/ld:
> /home/test/qemu/build/../subprojects/libvhost-user/link-test.c:(.text.main[main]+0x55):
> undefined reference to `__sancov_lowest_stack'
> /usr/bin/ld:
> /home/test/qemu/build/../subprojects/libvhost-user/link-test.c:41: undefined
> reference to `__sanitizer_cov_trace_const_cmp4'
> /usr/bin/ld: subprojects/libvhost-user/link-test.p/link-test.c.o: in function
> `sancov.module_ctor_8bit_counters':
> link-test.c:(.text.sancov.module_ctor_8bit_counters[sancov.module_ctor_8bit_counters]+0x16):
> undefined reference to `__sanitizer_cov_8bit_counters_init'
> /usr/bin/ld:
> link-test.c:(.text.sancov.module_ctor_8bit_counters[sancov.module_ctor_8bit_counters]+0x2f):
> undefined reference to `__sanitizer_cov_pcs_init'
> /usr/bin/ld: subprojects/libvhost-user/libvhost-user.a(libvhost-user.c.o): in
> function `vu_gpa_to_va':
> /home/test/qemu/build/../subprojects/libvhost-user/libvhost-user.c:182:
> undefined reference to `__sanitizer_cov_trace_const_cmp8'
> /usr/bin/ld:
> /home/test/qemu/build/../subprojects/libvhost-user/libvhost-user.c:187:
> undefined reference to `__sanitizer_cov_trace_cmp4'
> /usr/bin/ld:
> /home/test/qemu/build/../subprojects/libvhost-user/libvhost-user.c:190:
> undefined reference to `__sanitizer_cov_trace_cmp8'
> /usr/bin/ld:
> /home/test/qemu/build/../subprojects/libvhost-user/libvhost-user.c:190:
> undefined reference to `__sanitizer_cov_trace_cmp8'
> /usr/bin/ld:
> /home/test/qemu/build/../subprojects/libvhost-user/libvhost-user.c:191:
> undefined reference to `__sanitizer_cov_trace_cmp8'
>
> Let's avoid this error by enforcing fuzzing and sanitizers together.
>
> Signed-off-by: Li Qiang <liq3ea@163.com>
I usually build using something like "ninja qemu-fuzz-i386", so I missed
this failure. CI missed it because we only build-test --enable-fuzzing
--enable-sanitizers.
I'll send an alternate patch, which should hopefully fix the failure,
without requiring enable-sanitizers. ASAN can add 5-10x overhead to
fuzzing, so it is often useful to fuzz without ASAN for a while, before
switching it on.