我可以用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并将生成文件更改为:
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
我该怎么解决我少了哪些图书馆?

最佳答案

必须在-fsanitize=fuzzerCFLAGS中添加类似LDFLAGS的消毒剂标志。
如果它们没有传递给链接器,而只是传递给编译器,则会为sanitizer运行时库函数(如您在问题中引用的函数)带来大量未定义的符号错误。
请注意,当使用-fsanitizer=fuzzer时,将其与肾上腺消毒剂(即-fsanitizer=fuzzer,address)结合使用是有意义的。
另外,使用libFuzzer,您可以have to provide your own fuzzer callback functionLLVMFuzzerTestOneInput()并省略一个main()函数。

08-07 20:52