我可以在makefile中使用以下变量成功地编译Nginx
CC = clang-6.0
CFLAGS = -pipe -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Werror -g
当尝试使用-fsanitize=fuzzer或-fsanitize=fuzzer 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的未定义的引用
我该怎么解决这个问题?我错过了哪些图书馆?
发布于 2019-02-16 10:16:07
您必须在您的CFLAGS 和您的LDFLAGS中添加像这样的消毒剂标志。
如果它们不是传递给链接器,而是传递给编译器,那么清除器运行时库函数就会出现大量未定义的符号错误(就像您在问题中引用的那样)。
请注意,在使用-fsanitizer=fuzzer时,将其与附加消毒液(即-fsanitizer=fuzzer,address)结合使用是有意义的。
另外,使用libFuzzer时,您可以忽略必须提供您自己的模糊回调功能 LLVMFuzzerTestOneInput()并省略main()函数。
发布于 2018-10-16 19:26:19
您需要链接到honggfuzz/libhfuzz/libhfuzz.a。
https://stackoverflow.com/questions/48699256
复制相似问题