dockerfile: fix qemu built, update llvm to 12
MODIFY
Dockerfile
Dockerfile
@@ -14,6 +14,7 @@ ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get -y install --no-install-suggests --no-install-recommends \
automake \
+ ninja-build \
bison flex \
build-essential \
git \
@@ -26,7 +27,7 @@ RUN apt-get update && \
gnuplot-nox \
&& rm -rf /var/lib/apt/lists/*
-RUN echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-11 main" >> /etc/apt/sources.list && \
+RUN echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-12 main" >> /etc/apt/sources.list && \
wget -qO - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
RUN echo "deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal main" >> /etc/apt/sources.list && \
@@ -35,17 +36,17 @@ RUN echo "deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal main
RUN apt-get update && apt-get full-upgrade -y && \
apt-get -y install --no-install-suggests --no-install-recommends \
gcc-10 g++-10 gcc-10-plugin-dev gcc-10-multilib gdb lcov \
- clang-11 clang-tools-11 libc++1-11 libc++-11-dev \
- libc++abi1-11 libc++abi-11-dev libclang1-11 libclang-11-dev \
- libclang-common-11-dev libclang-cpp11 libclang-cpp11-dev liblld-11 \
- liblld-11-dev liblldb-11 liblldb-11-dev libllvm11 libomp-11-dev \
- libomp5-11 lld-11 lldb-11 llvm-11 llvm-11-dev llvm-11-runtime llvm-11-tools \
+ clang-12 clang-tools-12 libc++1-12 libc++-12-dev \
+ libc++abi1-12 libc++abi-12-dev libclang1-12 libclang-12-dev \
+ libclang-common-12-dev libclang-cpp12 libclang-cpp12-dev liblld-12 \
+ liblld-12-dev liblldb-12 liblldb-12-dev libllvm12 libomp-12-dev \
+ libomp5-12 lld-12 lldb-12 llvm-12 llvm-12-dev llvm-12-runtime llvm-12-tools \
&& rm -rf /var/lib/apt/lists/*
RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 0
RUN update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 0
-ENV LLVM_CONFIG=llvm-config-11
+ENV LLVM_CONFIG=llvm-config-12
ENV AFL_SKIP_CPUFREQ=1
RUN git clone https://github.com/vanhauser-thc/afl-cov /afl-cov

MODIFY
instrumentation/afl-llvm-lto-instrumentation.so.cc
instrumentation/afl-llvm-lto-instrumentation.so.cc
@@ -69,7 +69,7 @@ class AFLLTOPass : public ModulePass {
if (getenv("AFL_DEBUG")) debug = 1;
if ((ptr = getenv("AFL_LLVM_LTO_STARTID")) != NULL)
- if ((afl_global_id = atoi(ptr)) < 0 || afl_global_id >= MAP_SIZE)
+ if ((afl_global_id = (uint32_t)atoi(ptr)) < 0 || afl_global_id >= MAP_SIZE)
FATAL("AFL_LLVM_LTO_STARTID value of \"%s\" is not between 0 and %u\n",
ptr, MAP_SIZE - 1);
@@ -88,7 +88,7 @@ class AFLLTOPass : public ModulePass {
bool runOnModule(Module &M) override;
protected:
- int afl_global_id = 1, autodictionary = 1;
+ uint32_t afl_global_id = 1, autodictionary = 1;
uint32_t function_minimum_size = 1;
uint32_t inst_blocks = 0, inst_funcs = 0, total_instr = 0;
uint64_t map_addr = 0x10000;
@@ -800,7 +800,7 @@ bool AFLLTOPass::runOnModule(Module &M) {
if (documentFile) {
- fprintf(documentFile, "ModuleID=%llu Function=%s edgeID=%d\n",
+ fprintf(documentFile, "ModuleID=%llu Function=%s edgeID=%u\n",
moduleID, F.getName().str().c_str(), afl_global_id);
}
@@ -872,10 +872,10 @@ bool AFLLTOPass::runOnModule(Module &M) {
while ((map = map >> 1))
pow2map++;
WARNF(
- "We have %d blocks to instrument but the map size is only %u. Either "
+ "We have %u blocks to instrument but the map size is only %u. Either "
"edit config.h and set MAP_SIZE_POW2 from %d to %u, then recompile "
"afl-fuzz and llvm_mode and then make this target - or set "
- "AFL_MAP_SIZE with at least size %d when running afl-fuzz with this "
+ "AFL_MAP_SIZE with at least size %u when running afl-fuzz with this "
"target.",
afl_global_id, MAP_SIZE, MAP_SIZE_POW2, pow2map, afl_global_id);
@@ -925,7 +925,7 @@ bool AFLLTOPass::runOnModule(Module &M) {
uint32_t write_loc = afl_global_id;
- if (afl_global_id % 8) write_loc = (((afl_global_id + 8) >> 3) << 3);
+ if (afl_global_id % 32) write_loc = (((afl_global_id + 32) >> 4) << 4);
GlobalVariable *AFLFinalLoc = new GlobalVariable(
M, Int32Ty, true, GlobalValue::ExternalLinkage, 0, "__afl_final_loc");

MODIFY
unicorn_mode/build_unicorn_support.sh
unicorn_mode/build_unicorn_support.sh
@@ -147,6 +147,8 @@ if [ "$PREREQ_NOTFOUND" = "1" ]; then
exit 1
fi
+unset CFLAGS
+
echo "[+] All checks passed!"
echo "[*] Making sure unicornafl is checked out"

dockerfile: fix qemu built, update llvm to 12