diff options
author | Sam James <sam@gentoo.org> | 2021-03-31 18:32:12 +0000 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2021-03-31 23:38:43 +0000 |
commit | 06382b00ebd78da1c4968fd78a9bafb82aabff3e (patch) | |
tree | cdb9286c9fb80a705c24d8f13b160352d26f7c31 /app-forensics | |
parent | dev-libs/libdaemon: refresh bundled libtool (diff) | |
download | gentoo-06382b00ebd78da1c4968fd78a9bafb82aabff3e.tar.gz gentoo-06382b00ebd78da1c4968fd78a9bafb82aabff3e.tar.bz2 gentoo-06382b00ebd78da1c4968fd78a9bafb82aabff3e.zip |
app-forensics/aflplusplus: initial import
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'app-forensics')
-rw-r--r-- | app-forensics/aflplusplus/Manifest | 1 | ||||
-rw-r--r-- | app-forensics/aflplusplus/aflplusplus-3.12c.ebuild | 75 | ||||
-rw-r--r-- | app-forensics/aflplusplus/files/aflplusplus-3.0c-CFLAGS.patch | 110 | ||||
-rw-r--r-- | app-forensics/aflplusplus/files/aflplusplus-3.0c-LDFLAGS.patch | 11 | ||||
-rw-r--r-- | app-forensics/aflplusplus/metadata.xml | 11 |
5 files changed, 208 insertions, 0 deletions
diff --git a/app-forensics/aflplusplus/Manifest b/app-forensics/aflplusplus/Manifest new file mode 100644 index 000000000000..81c2a1618a1a --- /dev/null +++ b/app-forensics/aflplusplus/Manifest @@ -0,0 +1 @@ +DIST aflplusplus-3.12c.tar.gz 2065569 BLAKE2B ff7a87eb02f7731b5ce8e1a3016239c6fd1cd1bfeb0b9c0fb69f72bdbf079e7700cdb32abe64f64853e5ff82f1c0ecd86d2cadb892e7c40be6bb2a7b089f7387 SHA512 a814d61298b60d99388289e742dbedf2ed1ab454a5e1ea20d48bb2f18b36c01553ab1f097a06f733439d67e804d48cb823a82ff249c404fb0b83a281564f3040 diff --git a/app-forensics/aflplusplus/aflplusplus-3.12c.ebuild b/app-forensics/aflplusplus/aflplusplus-3.12c.ebuild new file mode 100644 index 000000000000..8f54edd03d12 --- /dev/null +++ b/app-forensics/aflplusplus/aflplusplus-3.12c.ebuild @@ -0,0 +1,75 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{7,8,9} ) +LLVM_MAX_SLOT=11 +inherit toolchain-funcs llvm python-single-r1 + +DESCRIPTION="A fork of AFL, the popular compile-time instrumentation fuzzer" +HOMEPAGE="https://github.com/AFLplusplus/AFLplusplus" +SRC_URI="https://github.com/AFLplusplus/AFLplusplus/archive/${PV}.tar.gz -> ${P}.tar.gz" +S="${WORKDIR}/AFLplusplus-${PV}" + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~amd64" +IUSE="test" + +REQUIRED_USE="${PYTHON_REQUIRED_USE}" + +# Tests involve heavy use of LD_PRELOAD in some cases +# This isn't compatible with sandbox +RESTRICT="test" + +RDEPEND=" + ${PYTHON_DEPS} + || ( + sys-devel/llvm:10 + sys-devel/llvm:11 + sys-devel/llvm:12 + ) +" +DEPEND=" + ${RDEPEND} + test? ( dev-util/cmocka ) +" + +QA_PREBUILT="/usr/share/afl/testcases/others/elf/small_exec.elf" + +PATCHES=( + "${FILESDIR}/${PN}-3.0c-LDFLAGS.patch" + "${FILESDIR}/${PN}-3.0c-CFLAGS.patch" +) + +pkg_setup() { + llvm_pkg_setup + python-single-r1_pkg_setup +} + +src_prepare() { + default + + sed -i -e 's/-O3 -fno-unroll-loops//' GNUmakefile || die +} + +src_compile() { + emake \ + CC="$(tc-getCC)" \ + CFLAGS_FLTO="" \ + PREFIX="${EPREFIX}/usr" \ + HELPER_PATH="${EPREFIX}/usr/$(get_libdir)/afl" \ + DOC_PATH="${EPREFIX}/usr/share/doc/${PF}" \ + MAN_PATH="${EPREFIX}/usr/share/man/man8" +} + +src_install() { + emake \ + DESTDIR="${D}" + PREFIX="${EPREFIX}/usr" \ + HELPER_PATH="${EPREFIX}/usr/$(get_libdir)/afl" \ + DOC_PATH="${EPREFIX}/usr/share/doc/${PF}" \ + MAN_PATH="${EPREFIX}/usr/share/man/man8" \ + install +} diff --git a/app-forensics/aflplusplus/files/aflplusplus-3.0c-CFLAGS.patch b/app-forensics/aflplusplus/files/aflplusplus-3.0c-CFLAGS.patch new file mode 100644 index 000000000000..a3477fd7559f --- /dev/null +++ b/app-forensics/aflplusplus/files/aflplusplus-3.0c-CFLAGS.patch @@ -0,0 +1,110 @@ +--- a/GNUmakefile.gcc_plugin ++++ b/GNUmakefile.gcc_plugin +@@ -28,14 +28,14 @@ MAN_PATH ?= $(PREFIX)/share/man/man8 + + VERSION = $(shell grep '^$(HASH)define VERSION ' ./config.h | cut -d '"' -f2) + +-CFLAGS ?= -O3 -g -funroll-loops -D_FORTIFY_SOURCE=2 ++CFLAGS ?= -D_FORTIFY_SOURCE=2 + CFLAGS_SAFE := -Wall -Iinclude -Wno-pointer-sign \ + -DAFL_PATH=\"$(HELPER_PATH)\" -DBIN_PATH=\"$(BIN_PATH)\" \ + -DGCC_VERSION=\"$(GCCVER)\" -DGCC_BINDIR=\"$(GCCBINDIR)\" \ + -Wno-unused-function + override CFLAGS += $(CFLAGS_SAFE) + +-CXXFLAGS ?= -O3 -g -funroll-loops -D_FORTIFY_SOURCE=2 ++CXXFLAGS ?= -D_FORTIFY_SOURCE=2 + CXXEFLAGS := $(CXXFLAGS) -Wall -std=c++11 + + CC ?= gcc +--- a/GNUmakefile.llvm ++++ b/GNUmakefile.llvm +@@ -237,7 +237,7 @@ else + AFL_CLANG_DEBUG_PREFIX = + endif + +-CFLAGS ?= -O3 -funroll-loops -fPIC -D_FORTIFY_SOURCE=2 ++CFLAGS ?= -fPIC -D_FORTIFY_SOURCE=2 + CFLAGS_SAFE := -Wall -g -Wno-cast-qual -Wno-variadic-macros -Wno-pointer-sign -I ./include/ -I ./instrumentation/ \ + -DAFL_PATH=\"$(HELPER_PATH)\" -DBIN_PATH=\"$(BIN_PATH)\" \ + -DLLVM_BINDIR=\"$(LLVM_BINDIR)\" -DVERSION=\"$(VERSION)\" \ +@@ -254,7 +254,7 @@ ifdef AFL_TRACE_PC + $(info Compile option AFL_TRACE_PC is deprecated, just set AFL_LLVM_INSTRUMENT=PCGUARD to activate when compiling targets ) + endif + +-CXXFLAGS ?= -O3 -funroll-loops -fPIC -D_FORTIFY_SOURCE=2 ++CXXFLAGS ?= -fPIC -D_FORTIFY_SOURCE=2 + override CXXFLAGS += -Wall -g -I ./include/ \ + -DVERSION=\"$(VERSION)\" -Wno-variadic-macros \ + -DLLVM_MINOR=$(LLVM_MINOR) -DLLVM_MAJOR=$(LLVM_MAJOR) +@@ -434,20 +434,20 @@ afl-llvm-dict2file.so: instrumentation/afl-llvm-dict2file.so.cc instrumentation/ + + .PHONY: document + document: +- $(CLANG_BIN) -D_AFL_DOCUMENT_MUTATIONS $(CFLAGS_SAFE) $(CPPFLAGS) $(CLANG_CFL) -O3 -Wno-unused-result -fPIC -c instrumentation/afl-compiler-rt.o.c -o ./afl-compiler-rt.o +- @$(CLANG_BIN) -D_AFL_DOCUMENT_MUTATIONS $(CFLAGS_SAFE) $(CPPFLAGS) $(CLANG_CFL) -O3 -Wno-unused-result -m32 -fPIC -c instrumentation/afl-compiler-rt.o.c -o ./afl-compiler-rt-32.o 2>/dev/null; if [ "$$?" = "0" ]; then echo "success!"; else echo "failed (that's fine)"; fi +- @$(CLANG_BIN) -D_AFL_DOCUMENT_MUTATIONS $(CFLAGS_SAFE) $(CPPFLAGS) $(CLANG_CFL) -O3 -Wno-unused-result -m64 -fPIC -c instrumentation/afl-compiler-rt.o.c -o ./afl-compiler-rt-64.o 2>/dev/null; if [ "$$?" = "0" ]; then echo "success!"; else echo "failed (that's fine)"; fi ++ $(CLANG_BIN) -D_AFL_DOCUMENT_MUTATIONS $(CFLAGS_SAFE) $(CPPFLAGS) $(CLANG_CFL) -Wno-unused-result -fPIC -c instrumentation/afl-compiler-rt.o.c -o ./afl-compiler-rt.o ++ @$(CLANG_BIN) -D_AFL_DOCUMENT_MUTATIONS $(CFLAGS_SAFE) $(CPPFLAGS) $(CLANG_CFL) -Wno-unused-result -m32 -fPIC -c instrumentation/afl-compiler-rt.o.c -o ./afl-compiler-rt-32.o 2>/dev/null; if [ "$$?" = "0" ]; then echo "success!"; else echo "failed (that's fine)"; fi ++ @$(CLANG_BIN) -D_AFL_DOCUMENT_MUTATIONS $(CFLAGS_SAFE) $(CPPFLAGS) $(CLANG_CFL) -Wno-unused-result -m64 -fPIC -c instrumentation/afl-compiler-rt.o.c -o ./afl-compiler-rt-64.o 2>/dev/null; if [ "$$?" = "0" ]; then echo "success!"; else echo "failed (that's fine)"; fi + + ./afl-compiler-rt.o: instrumentation/afl-compiler-rt.o.c +- $(CC) $(CLANG_CFL) $(CFLAGS_SAFE) $(CPPFLAGS) -O3 -Wno-unused-result -fPIC -c $< -o $@ ++ $(CC) $(CLANG_CFL) $(CFLAGS_SAFE) $(CPPFLAGS) -Wno-unused-result -fPIC -c $< -o $@ + + ./afl-compiler-rt-32.o: instrumentation/afl-compiler-rt.o.c + @printf "[*] Building 32-bit variant of the runtime (-m32)... " +- @$(CC) $(CLANG_CFL) $(CFLAGS_SAFE) $(CPPFLAGS) -O3 -Wno-unused-result -m32 -fPIC -c $< -o $@ 2>/dev/null; if [ "$$?" = "0" ]; then echo "success!"; ln -sf afl-compiler-rt-32.o afl-llvm-rt-32.o; else echo "failed (that's fine)"; fi ++ @$(CC) $(CLANG_CFL) $(CFLAGS_SAFE) $(CPPFLAGS) -Wno-unused-result -m32 -fPIC -c $< -o $@ 2>/dev/null; if [ "$$?" = "0" ]; then echo "success!"; ln -sf afl-compiler-rt-32.o afl-llvm-rt-32.o; else echo "failed (that's fine)"; fi + + ./afl-compiler-rt-64.o: instrumentation/afl-compiler-rt.o.c + @printf "[*] Building 64-bit variant of the runtime (-m64)... " +- @$(CC) $(CLANG_CFL) $(CFLAGS_SAFE) $(CPPFLAGS) -O3 -Wno-unused-result -m64 -fPIC -c $< -o $@ 2>/dev/null; if [ "$$?" = "0" ]; then echo "success!"; ln -sf afl-compiler-rt-64.o afl-llvm-rt-64.o; else echo "failed (that's fine)"; fi ++ @$(CC) $(CLANG_CFL) $(CFLAGS_SAFE) $(CPPFLAGS) -Wno-unused-result -m64 -fPIC -c $< -o $@ 2>/dev/null; if [ "$$?" = "0" ]; then echo "success!"; ln -sf afl-compiler-rt-64.o afl-llvm-rt-64.o; else echo "failed (that's fine)"; fi + + .PHONY: test_build + test_build: $(PROGS) +--- a/unicorn_mode/samples/c/Makefile ++++ b/unicorn_mode/samples/c/Makefile +@@ -35,7 +35,7 @@ clean: + rm -rf *.o harness harness-debug + + harness.o: harness.c ../../unicornafl/include/unicorn/*.h +- ${MYCC} ${CFLAGS} -O3 -c harness.c ++ ${MYCC} ${CFLAGS} -c harness.c + + harness-debug.o: harness.c ../../unicornafl/include/unicorn/*.h + ${MYCC} ${CFLAGS} -g -c harness.c -o $@ +--- a/unicorn_mode/samples/persistent/Makefile ++++ b/unicorn_mode/samples/persistent/Makefile +@@ -35,7 +35,7 @@ clean: + rm -rf *.o harness harness-debug + + harness.o: harness.c ../../unicornafl/include/unicorn/*.h +- ${MYCC} ${CFLAGS} -O3 -c harness.c ++ ${MYCC} ${CFLAGS} -c harness.c + + harness-debug.o: harness.c ../../unicornafl/include/unicorn/*.h + ${MYCC} ${CFLAGS} -DAFL_DEBUG=1 -g -c harness.c -o $@ +--- a/utils/afl_untracer/Makefile ++++ b/utils/afl_untracer/Makefile +@@ -1,7 +1,7 @@ + ifdef DEBUG + OPT=-O0 + else +- OPT=-O3 ++ OPT?=-O2 + endif + + all: afl-untracer libtestinstr.so +--- a/utils/custom_mutators/Makefile ++++ b/utils/custom_mutators/Makefile +@@ -1,7 +1,7 @@ + all: libexamplemutator.so + + libexamplemutator.so: +- $(CC) $(CFLAGS) -D_FORTIFY_SOURCE=2 -O3 -fPIC -shared -g -I ../../include example.c -o libexamplemutator.so ++ $(CC) $(CFLAGS) -D_FORTIFY_SOURCE=2 -fPIC -shared -g -I ../../include example.c -o libexamplemutator.so + + clean: + rm -rf libexamplemutator.so diff --git a/app-forensics/aflplusplus/files/aflplusplus-3.0c-LDFLAGS.patch b/app-forensics/aflplusplus/files/aflplusplus-3.0c-LDFLAGS.patch new file mode 100644 index 000000000000..3e8f4dd92d1a --- /dev/null +++ b/app-forensics/aflplusplus/files/aflplusplus-3.0c-LDFLAGS.patch @@ -0,0 +1,11 @@ +--- a/GNUmakefile.gcc_plugin ++++ b/GNUmakefile.gcc_plugin +@@ -129,7 +129,7 @@ afl-common.o: ./src/afl-common.c + $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ $(LDFLAGS) + + ./afl-gcc-pass.so: instrumentation/afl-gcc-pass.so.cc | test_deps +- $(CXX) $(CXXEFLAGS) $(PLUGIN_FLAGS) -shared $< -o $@ ++ $(CXX) $(CXXEFLAGS) $(PLUGIN_FLAGS) -shared $< -o $@ $(LDFLAGS) + ln -sf afl-cc afl-gcc-fast + ln -sf afl-cc afl-g++-fast + ln -sf afl-cc.8 afl-gcc-fast.8 diff --git a/app-forensics/aflplusplus/metadata.xml b/app-forensics/aflplusplus/metadata.xml new file mode 100644 index 000000000000..2c9221b04d2e --- /dev/null +++ b/app-forensics/aflplusplus/metadata.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>sam@gentoo.org</email> + <name>Sam James</name> + </maintainer> + <upstream> + <remote-id type="github">AFLplusplus/AFLplusplus</remote-id> + </upstream> +</pkgmetadata> |