Clang libFuzzer未定义参考`__sanitizer_cov_trace_const_cmp8'

时间:2018-02-09 05:28:18

标签: c nginx makefile clang

我可以使用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 个答案:

答案 0 :(得分:0)

您需要链接到honggfuzz / libhfuzz / libhfuzz.a。

答案 1 :(得分:0)

您必须在-fsanitize=fuzzer CFLAGS中添加LDFLAGS之类的消毒剂标志。

如果它们没有传递给链接器而是传递给了编译器,则对于消毒剂运行时库函数(如您在问题中引用的函数)会产生大量未定义的符号错误。

请注意,在使用-fsanitizer=fuzzer时,将其与Adress Sanitizer(即-fsanitizer=fuzzer,address)结合使用是很有意义的。

此外,使用libFuzzer,您have to provide your own fuzzer callback function LLVMFuzzerTestOneInput()并省略了main()函数。