Clang libFuzzer出现未定义引用`__sanitizer_cov_trace_const_cmp8'错误

4
我可以使用以下变量在makefile中成功编译Nginx: CC = clang-6.0 CFLAGS = -pipe -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Werror -g 当尝试使用-fsanitize=fuzzer或-fsanitize=fuzzer-no-link并将我的Makefile更改为以下内容时: CFLAGS = -pipe -fsantizer=fuzzer-no-link -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Werror -g 我会得到大量未定义的引用,包括__sancov_lowest_stack和__sanitizer_cov_trace_const_cmp8。我该如何解决这个问题?我缺少哪些库?
2个回答

4
您需要将类似 -fsanitize=fuzzer 的净化器标志添加到CFLAGSLDFLAGS 中,这样才能使链接器正确传递给编译器。如果只是传递给编译器而不是链接器,您将会收到大量未定义符号错误以及对未定义的净化器运行时库函数(如您在问题中引用的函数)的错误提示。
请注意,在使用 -fsanitizer=fuzzer 时,最好与地址净化器结合使用(即-fsanitizer=fuzzer,address)。并且,使用libFuzzer时,您需要提供自己的模糊回调函数LLVMFuzzerTestOneInput(),并省略main()函数。

0

你需要链接 honggfuzz/libhfuzz/libhfuzz.a 库。


不,你不需要。另请参阅我的答案 - maxschlepzig

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接