From 6786863e8b331436ffa55aa423a58fd27366fafb Mon Sep 17 00:00:00 2001 From: msmeissn <> Date: Jun 05 2022 19:37:58 +0000 Subject: Update afl to version 4.00c / rev 69 via SR 980919 https://build.opensuse.org/request/show/980919 by user msmeissn + dimstar_suse - Add llvm14-fix-build.patch: fix build with LLVM 14. (forwarded request 980763 from aaronpuchert) --- diff --git a/.files b/.files index da50c96..8b9d58a 100644 Binary files a/.files and b/.files differ diff --git a/.rev b/.rev index 167ba84..272247e 100644 --- a/.rev +++ b/.rev @@ -1065,4 +1065,12 @@ 966170 + + 607281e8e5dc2490060f77c2be105658 + 4.00c + + dimstar_suse + - Add llvm14-fix-build.patch: fix build with LLVM 14. (forwarded request 980763 from aaronpuchert) + 980919 + diff --git a/afl.changes b/afl.changes index 4bc460b..eda64b6 100644 --- a/afl.changes +++ b/afl.changes @@ -1,4 +1,9 @@ ------------------------------------------------------------------- +Sat Jun 4 13:26:34 UTC 2022 - Aaron Puchert + +- Add llvm14-fix-build.patch: fix build with LLVM 14. + +------------------------------------------------------------------- Wed Feb 23 22:21:07 UTC 2022 - Aaron Puchert - Fix build with armv7l on Leap: we have afl-llvm-rt-lto{,-32}.o. diff --git a/afl.spec b/afl.spec index 730ba35..77c8e51 100644 --- a/afl.spec +++ b/afl.spec @@ -45,6 +45,7 @@ URL: https://github.com/AFLplusplus/AFLplusplus Source: https://github.com/AFLplusplus/AFLplusplus/archive/%{version}.tar.gz Source1: afl-rpmlintrc Patch1: afl-3.0c-fix-paths.patch +Patch2: https://github.com/AFLplusplus/AFLplusplus/commit/675d17d737ee5dee88766d9c181567771592c94c.patch#/llvm14-fix-build.patch BuildRequires: clang BuildRequires: gcc-c++ %ifarch x86_64 @@ -76,6 +77,7 @@ use cases - say, common image parsing or file compression libraries. %prep %setup -q -n AFLplusplus-%version %patch1 -p1 +%patch2 -p1 sed -i 's|#!/usr/bin/env sh|#!/bin/sh|g' afl-cmin sed -i 's|#!/usr/bin/env bash|#!/bin/bash|g' afl-cmin.bash diff --git a/llvm14-fix-build.patch b/llvm14-fix-build.patch new file mode 100644 index 0000000..9d8aa43 --- /dev/null +++ b/llvm14-fix-build.patch @@ -0,0 +1,140 @@ +From 05119990b6075aaf8f16a385a763651f68b8b1ef Mon Sep 17 00:00:00 2001 +From: Raphael Isemann +Date: Tue, 22 Feb 2022 10:54:51 +0100 +Subject: [PATCH] LLVM 14 fixes + +--- + instrumentation/SanitizerCoverageLTO.so.cc | 5 +++-- + instrumentation/SanitizerCoveragePCGUARD.so.cc | 1 + + instrumentation/afl-llvm-dict2file.so.cc | 4 ++-- + instrumentation/afl-llvm-lto-instrumentlist.so.cc | 1 + + instrumentation/afl-llvm-pass.so.cc | 1 + + instrumentation/compare-transform-pass.so.cc | 4 ++-- + src/afl-cc.c | 4 ++-- + 7 files changed, 12 insertions(+), 8 deletions(-) + +diff --git a/instrumentation/SanitizerCoverageLTO.so.cc b/instrumentation/SanitizerCoverageLTO.so.cc +index 6a4a071f7..1bdc53768 100644 +--- a/instrumentation/SanitizerCoverageLTO.so.cc ++++ b/instrumentation/SanitizerCoverageLTO.so.cc +@@ -17,6 +17,7 @@ + #include "llvm/Transforms/Instrumentation/SanitizerCoverage.h" + #include "llvm/ADT/ArrayRef.h" + #include "llvm/ADT/SmallVector.h" ++#include "llvm/ADT/Triple.h" + #include "llvm/Analysis/EHPersonalities.h" + #include "llvm/Analysis/PostDominators.h" + #include "llvm/Analysis/ValueTracking.h" +@@ -757,7 +758,7 @@ bool ModuleSanitizerCoverage::instrumentModule( + if (!HasStr2) { + + auto *Ptr = dyn_cast(Str2P); +- if (Ptr && Ptr->isGEPWithNoNotionalOverIndexing()) { ++ if (Ptr && Ptr->getOpcode() == Instruction::GetElementPtr) { + + if (auto *Var = dyn_cast(Ptr->getOperand(0))) { + +@@ -838,7 +839,7 @@ bool ModuleSanitizerCoverage::instrumentModule( + + auto Ptr = dyn_cast(Str1P); + +- if (Ptr && Ptr->isGEPWithNoNotionalOverIndexing()) { ++ if (Ptr && Ptr->getOpcode() == Instruction::GetElementPtr) { + + if (auto *Var = dyn_cast(Ptr->getOperand(0))) { + +diff --git a/instrumentation/SanitizerCoveragePCGUARD.so.cc b/instrumentation/SanitizerCoveragePCGUARD.so.cc +index e4ffeb508..48bb5a2cc 100644 +--- a/instrumentation/SanitizerCoveragePCGUARD.so.cc ++++ b/instrumentation/SanitizerCoveragePCGUARD.so.cc +@@ -13,6 +13,7 @@ + #include "llvm/Transforms/Instrumentation/SanitizerCoverage.h" + #include "llvm/ADT/ArrayRef.h" + #include "llvm/ADT/SmallVector.h" ++#include "llvm/ADT/Triple.h" + #include "llvm/Analysis/EHPersonalities.h" + #include "llvm/Analysis/PostDominators.h" + #include "llvm/IR/CFG.h" +diff --git a/instrumentation/afl-llvm-dict2file.so.cc b/instrumentation/afl-llvm-dict2file.so.cc +index 391246606..94dc6984d 100644 +--- a/instrumentation/afl-llvm-dict2file.so.cc ++++ b/instrumentation/afl-llvm-dict2file.so.cc +@@ -435,7 +435,7 @@ bool AFLdict2filePass::runOnModule(Module &M) { + if (!HasStr2) { + + auto *Ptr = dyn_cast(Str2P); +- if (Ptr && Ptr->isGEPWithNoNotionalOverIndexing()) { ++ if (Ptr && Ptr->getOpcode() == Instruction::GetElementPtr) { + + if (auto *Var = dyn_cast(Ptr->getOperand(0))) { + +@@ -519,7 +519,7 @@ bool AFLdict2filePass::runOnModule(Module &M) { + + auto Ptr = dyn_cast(Str1P); + +- if (Ptr && Ptr->isGEPWithNoNotionalOverIndexing()) { ++ if (Ptr && Ptr->getOpcode() == Instruction::GetElementPtr) { + + if (auto *Var = dyn_cast(Ptr->getOperand(0))) { + +diff --git a/instrumentation/afl-llvm-lto-instrumentlist.so.cc b/instrumentation/afl-llvm-lto-instrumentlist.so.cc +index 35ba9c5a0..2ddbc7253 100644 +--- a/instrumentation/afl-llvm-lto-instrumentlist.so.cc ++++ b/instrumentation/afl-llvm-lto-instrumentlist.so.cc +@@ -43,6 +43,7 @@ + #include "llvm/IR/IRBuilder.h" + #include "llvm/IR/LegacyPassManager.h" + #include "llvm/IR/Module.h" ++#include "llvm/Pass.h" + #include "llvm/Support/Debug.h" + #include "llvm/Transforms/IPO/PassManagerBuilder.h" + #include "llvm/IR/CFG.h" +diff --git a/instrumentation/afl-llvm-pass.so.cc b/instrumentation/afl-llvm-pass.so.cc +index 5246ba089..6419cd1dc 100644 +--- a/instrumentation/afl-llvm-pass.so.cc ++++ b/instrumentation/afl-llvm-pass.so.cc +@@ -45,6 +45,7 @@ typedef long double max_align_t; + #endif + + #include "llvm/IR/IRBuilder.h" ++#include "llvm/Pass.h" + #include "llvm/IR/LegacyPassManager.h" + #include "llvm/IR/BasicBlock.h" + #include "llvm/IR/Module.h" +diff --git a/instrumentation/compare-transform-pass.so.cc b/instrumentation/compare-transform-pass.so.cc +index c3a4ee344..1e250d7aa 100644 +--- a/instrumentation/compare-transform-pass.so.cc ++++ b/instrumentation/compare-transform-pass.so.cc +@@ -246,7 +246,7 @@ bool CompareTransform::transformCmps(Module &M, const bool processStrcmp, + if (!(HasStr1 || HasStr2)) { + + auto *Ptr = dyn_cast(Str2P); +- if (Ptr && Ptr->isGEPWithNoNotionalOverIndexing()) { ++ if (Ptr && Ptr->getOpcode() == Instruction::GetElementPtr) { + + if (auto *Var = dyn_cast(Ptr->getOperand(0))) { + +@@ -271,7 +271,7 @@ bool CompareTransform::transformCmps(Module &M, const bool processStrcmp, + if (!HasStr2) { + + Ptr = dyn_cast(Str1P); +- if (Ptr && Ptr->isGEPWithNoNotionalOverIndexing()) { ++ if (Ptr && Ptr->getOpcode() == Instruction::GetElementPtr) { + + if (auto *Var = dyn_cast(Ptr->getOperand(0))) { + +diff --git a/src/afl-cc.c b/src/afl-cc.c +index ed57ca1ed..bacd9de96 100644 +--- a/src/afl-cc.c ++++ b/src/afl-cc.c +@@ -549,8 +549,8 @@ static void edit_params(u32 argc, char **argv, char **envp) { + } + + #if LLVM_MAJOR >= 13 +- // fuck you llvm 13 +- cc_params[cc_par_cnt++] = "-fno-experimental-new-pass-manager"; ++ // Use the old pass manager in LLVM 14 which the afl++ passes still use. ++ cc_params[cc_par_cnt++] = "-flegacy-pass-manager"; + #endif + + if (lto_mode && !have_c) {