fuzzbench
fuzzbench copied to clipboard
Cannot build AFL++ SanitizerCoverageLTO pass due to LLVM version
Hi:
When testing the libxml2_xml benchmark locally, I ran into an error when building AFL++ SanitizerCoverageLTO pass (version: https://github.com/AFLplusplus/AFLplusplus/commit/2d0d1e267eac4723c24997116c959472aae7027f):
/usr/local/bin/clang++ `llvm-config --cxxflags` -fno-rtti -fPIC -O1 -fno-omit-frame-pointer -gline-tables-only -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -stdlib=libc++ -Wall -g -I ./include/ -DVERSION=\"++4.06a\" -Wno-variadic-macros -Wno-deprecated-copy-with-dtor -DLLVM_MINOR=0 -DLLVM_MAJOR=15 -Wno-deprecated-declarations -Wl,-znodelete -Wno-writable-strings -fno-rtti -fPIC -std=c++14 -shared instrumentation/SanitizerCoverageLTO.so.cc -o SanitizerCoverageLTO.so `llvm-config --ldflags` instrumentation/afl-llvm-common.o
instrumentation/SanitizerCoverageLTO.so.cc:329:16: error: no member named 'registerFullLinkTimeOptimizationLastEPCallback' in 'llvm::PassBuilder'
PB.registerFullLinkTimeOptimizationLastEPCallback(
~~ ^
1 error generated.
make[1]: *** [GNUmakefile.llvm:431: SanitizerCoverageLTO.so] Error 1
After some digging, it seems that the current LLVM version in the image was built on this commit: https://github.com/llvm/llvm-project/commit/bf7f8d6fa6f460bf0a16ffec319cd71592216bf4:
root@70030a7d3d28:/afl# clang++ --version
clang version 15.0.0 (https://github.com/llvm/llvm-project.git bf7f8d6fa6f460bf0a16ffec319cd71592216bf4)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/local/bin
But registerFullLinkTimeOptimizationLastEPCallback() was introduced later in this commit: https://github.com/llvm/llvm-project/commit/942efa5927ae7514d8e03d90e67284945b7c40fe, which I guess causes the error.
I think maybe the LLVM version should be updated?
I am unsure if it is a good time to update llvm in the base-image, given it will also affect other fuzzers & benchmarks.
Would it be better mitigation to create a new version of AFL++ with it and download the new llvm in its own dockerfile?
@jonathanmetzman WDYT?