Compare commits

...

2 Commits
v4.21c ... win

Author SHA1 Message Date
2f38839fd4 nits 2021-12-13 13:16:50 +01:00
f9f9848cea cygwin 2021-12-13 13:12:25 +01:00
9 changed files with 92 additions and 29 deletions

View File

@ -36,9 +36,14 @@ SH_PROGS = afl-plot afl-cmin afl-cmin.bash afl-whatsup afl-system-config afl-
MANPAGES=$(foreach p, $(PROGS) $(SH_PROGS), $(p).8) afl-as.8 MANPAGES=$(foreach p, $(PROGS) $(SH_PROGS), $(p).8) afl-as.8
ASAN_OPTIONS=detect_leaks=0 ASAN_OPTIONS=detect_leaks=0
OS = $(shell uname -o)
SYS = $(shell uname -s) SYS = $(shell uname -s)
ARCH = $(shell uname -m) ARCH = $(shell uname -m)
ifeq "$(OS)" "Cygwin"
SYS=Cygwin
endif
$(info [*] Compiling afl++ for OS $(SYS) on ARCH $(ARCH)) $(info [*] Compiling afl++ for OS $(SYS) on ARCH $(ARCH))
ifdef NO_SPLICING ifdef NO_SPLICING
@ -310,14 +315,19 @@ all: test_x86 test_shm test_python ready $(PROGS) afl-as llvm gcc_plugin test_bu
.PHONY: llvm .PHONY: llvm
llvm: llvm:
ifneq "$(SYS)" "Cygwin"
-$(MAKE) -j4 -f GNUmakefile.llvm -$(MAKE) -j4 -f GNUmakefile.llvm
endif
@test -e afl-cc || -$(MAKE) -f GNUmakefile.llvm afl-cc
@test -e afl-cc || { echo "[-] Compiling afl-cc failed. You seem not to have a working compiler." ; exit 1; } @test -e afl-cc || { echo "[-] Compiling afl-cc failed. You seem not to have a working compiler." ; exit 1; }
.PHONY: gcc_plugin .PHONY: gcc_plugin
gcc_plugin: gcc_plugin:
ifneq "$(SYS)" "Darwin" ifneq "$(SYS)" "Darwin"
ifneq "$(SYS)" "Cygwin"
-$(MAKE) -f GNUmakefile.gcc_plugin -$(MAKE) -f GNUmakefile.gcc_plugin
endif endif
endif
.PHONY: man .PHONY: man
man: $(MANPAGES) man: $(MANPAGES)
@ -565,8 +575,10 @@ all_done: test_build
.PHONY: clean .PHONY: clean
clean: clean:
rm -rf $(PROGS) libradamsa.so afl-fuzz-document afl-as as afl-g++ afl-clang afl-clang++ *.o src/*.o *~ a.out core core.[1-9][0-9]* *.stackdump .test .test1 .test2 test-instr .test-instr0 .test-instr1 afl-cs-proxy afl-qemu-trace afl-gcc-fast afl-gcc-pass.so afl-g++-fast ld *.so *.8 test/unittests/*.o test/unittests/unit_maybe_alloc test/unittests/preallocable .afl-* afl-gcc afl-g++ afl-clang afl-clang++ test/unittests/unit_hash test/unittests/unit_rand *.dSYM rm -rf $(PROGS) libradamsa.so afl-fuzz-document afl-as as afl-g++ afl-clang afl-clang++ *.o src/*.o *~ a.out core core.[1-9][0-9]* *.stackdump .test .test1 .test2 test-instr .test-instr0 .test-instr1 afl-cs-proxy afl-qemu-trace afl-gcc-fast afl-gcc-pass.so afl-g++-fast ld *.so *.8 test/unittests/*.o test/unittests/unit_maybe_alloc test/unittests/preallocable .afl-* afl-gcc afl-g++ afl-clang afl-clang++ test/unittests/unit_hash test/unittests/unit_rand *.dSYM
ifneq "$(SYS)" "Cygwin"
-$(MAKE) -f GNUmakefile.llvm clean -$(MAKE) -f GNUmakefile.llvm clean
-$(MAKE) -f GNUmakefile.gcc_plugin clean -$(MAKE) -f GNUmakefile.gcc_plugin clean
endif
$(MAKE) -C utils/libdislocator clean $(MAKE) -C utils/libdislocator clean
$(MAKE) -C utils/libtokencap clean $(MAKE) -C utils/libtokencap clean
$(MAKE) -C utils/aflpp_driver clean $(MAKE) -C utils/aflpp_driver clean
@ -602,9 +614,11 @@ endif
.PHONY: distrib .PHONY: distrib
distrib: all distrib: all
ifneq "$(SYS)" "Cygwin"
-$(MAKE) -j4 -f GNUmakefile.llvm -$(MAKE) -j4 -f GNUmakefile.llvm
ifneq "$(SYS)" "Darwin" ifneq "$(SYS)" "Darwin"
-$(MAKE) -f GNUmakefile.gcc_plugin -$(MAKE) -f GNUmakefile.gcc_plugin
endif
endif endif
$(MAKE) -C utils/libdislocator $(MAKE) -C utils/libdislocator
$(MAKE) -C utils/libtokencap $(MAKE) -C utils/libtokencap
@ -640,9 +654,11 @@ endif
.PHONY: source-only .PHONY: source-only
source-only: all source-only: all
ifneq "$(SYS)" "Cygwin"
-$(MAKE) -j4 -f GNUmakefile.llvm -$(MAKE) -j4 -f GNUmakefile.llvm
ifneq "$(SYS)" "Darwin" ifneq "$(SYS)" "Darwin"
-$(MAKE) -f GNUmakefile.gcc_plugin -$(MAKE) -f GNUmakefile.gcc_plugin
endif
endif endif
$(MAKE) -C utils/libdislocator $(MAKE) -C utils/libdislocator
$(MAKE) -C utils/libtokencap $(MAKE) -C utils/libtokencap
@ -687,9 +703,11 @@ install: all $(MANPAGES)
@if [ -f utils/afl_network_proxy/afl-network-server ]; then $(MAKE) -C utils/afl_network_proxy install; fi @if [ -f utils/afl_network_proxy/afl-network-server ]; then $(MAKE) -C utils/afl_network_proxy install; fi
@if [ -f utils/aflpp_driver/libAFLDriver.a ]; then set -e; install -m 644 utils/aflpp_driver/libAFLDriver.a $${DESTDIR}$(HELPER_PATH); fi @if [ -f utils/aflpp_driver/libAFLDriver.a ]; then set -e; install -m 644 utils/aflpp_driver/libAFLDriver.a $${DESTDIR}$(HELPER_PATH); fi
@if [ -f utils/aflpp_driver/libAFLQemuDriver.a ]; then set -e; install -m 644 utils/aflpp_driver/libAFLQemuDriver.a $${DESTDIR}$(HELPER_PATH); fi @if [ -f utils/aflpp_driver/libAFLQemuDriver.a ]; then set -e; install -m 644 utils/aflpp_driver/libAFLQemuDriver.a $${DESTDIR}$(HELPER_PATH); fi
ifneq "$(SYS)" "Cygwin"
-$(MAKE) -f GNUmakefile.llvm install -$(MAKE) -f GNUmakefile.llvm install
ifneq "$(SYS)" "Darwin" ifneq "$(SYS)" "Darwin"
-$(MAKE) -f GNUmakefile.gcc_plugin install -$(MAKE) -f GNUmakefile.gcc_plugin install
endif
endif endif
ln -sf afl-cc $${DESTDIR}$(BIN_PATH)/afl-gcc ln -sf afl-cc $${DESTDIR}$(BIN_PATH)/afl-gcc
ln -sf afl-cc $${DESTDIR}$(BIN_PATH)/afl-g++ ln -sf afl-cc $${DESTDIR}$(BIN_PATH)/afl-g++

View File

@ -31,6 +31,11 @@ BUILD_DATE ?= $(shell date -u -d "@$(SOURCE_DATE_EPOCH)" "+%Y-%m-%d" 2>/dev/nul
VERSION = $(shell grep '^$(HASH)define VERSION ' ./config.h | cut -d '"' -f2) VERSION = $(shell grep '^$(HASH)define VERSION ' ./config.h | cut -d '"' -f2)
SYS = $(shell uname -s) SYS = $(shell uname -s)
OS = $(shell uname -o)
ifeq "$(OS)" "Cygwin"
SYS=Cygwin
endif
ifeq "$(SYS)" "OpenBSD" ifeq "$(SYS)" "OpenBSD"
LLVM_CONFIG ?= $(BIN_PATH)/llvm-config LLVM_CONFIG ?= $(BIN_PATH)/llvm-config
@ -244,7 +249,12 @@ else
AFL_CLANG_DEBUG_PREFIX = AFL_CLANG_DEBUG_PREFIX =
endif endif
CFLAGS ?= -O3 -funroll-loops -fPIC -D_FORTIFY_SOURCE=2 ifeq "$(SYS)" "Cygwin"
override CFLAGS :=
override CXXFLAGS :=
endif
CFLAGS ?= -O3 -funroll-loops -D_FORTIFY_SOURCE=2
CFLAGS_SAFE := -Wall -g -Wno-cast-qual -Wno-variadic-macros -Wno-pointer-sign -I ./include/ -I ./instrumentation/ \ 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)\" \ -DAFL_PATH=\"$(HELPER_PATH)\" -DBIN_PATH=\"$(BIN_PATH)\" \
-DLLVM_BINDIR=\"$(LLVM_BINDIR)\" -DVERSION=\"$(VERSION)\" \ -DLLVM_BINDIR=\"$(LLVM_BINDIR)\" -DVERSION=\"$(VERSION)\" \
@ -257,22 +267,29 @@ CFLAGS_SAFE := -Wall -g -Wno-cast-qual -Wno-variadic-macros -Wno-pointer-sig
$(AFL_CLANG_DEBUG_PREFIX) $(AFL_CLANG_DEBUG_PREFIX)
override CFLAGS += $(CFLAGS_SAFE) override CFLAGS += $(CFLAGS_SAFE)
ifdef AFL_TRACE_PC ifdef AFL_TRACE_PC
$(info Compile option AFL_TRACE_PC is deprecated, just set AFL_LLVM_INSTRUMENT=PCGUARD to activate when compiling targets ) $(info Compile option AFL_TRACE_PC is deprecated, just set AFL_LLVM_INSTRUMENT=PCGUARD to activate when compiling targets )
endif endif
CXXFLAGS ?= -O3 -funroll-loops -fPIC -D_FORTIFY_SOURCE=2 CXXFLAGS ?= -O3 -funroll-loops -D_FORTIFY_SOURCE=2
override CXXFLAGS += -Wall -g -I ./include/ \ override CXXFLAGS += -Wall -g -I ./include/ \
-DVERSION=\"$(VERSION)\" -Wno-variadic-macros \ -DVERSION=\"$(VERSION)\" -Wno-variadic-macros \
-DLLVM_MINOR=$(LLVM_MINOR) -DLLVM_MAJOR=$(LLVM_MAJOR) -DLLVM_MINOR=$(LLVM_MINOR) -DLLVM_MAJOR=$(LLVM_MAJOR)
ifneq "$(SYS)" "Cygwin"
override CFLAGS += "-fPIC"
override CFLAGS_SAFE += "-fPIC"
override CXXFLAGS += "-fPIC"
endif
ifneq "$(shell $(LLVM_CONFIG) --includedir) 2> /dev/null" "" ifneq "$(shell $(LLVM_CONFIG) --includedir) 2> /dev/null" ""
CLANG_CFL = -I$(shell $(LLVM_CONFIG) --includedir) CLANG_CFL = -I$(shell $(LLVM_CONFIG) --includedir)
endif endif
ifneq "$(LLVM_CONFIG)" "" ifneq "$(LLVM_CONFIG)" ""
CLANG_CFL += -I$(shell dirname $(LLVM_CONFIG))/../include CLANG_CFL += -I$(shell dirname $(LLVM_CONFIG))/../include
endif endif
CLANG_CPPFL = `$(LLVM_CONFIG) --cxxflags` -fno-rtti -fPIC $(CXXFLAGS) -Wno-deprecated-declarations CLANG_CPPFL = `$(LLVM_CONFIG) --cxxflags` -fno-rtti $(CXXFLAGS) -Wno-deprecated-declarations
CLANG_LFL = `$(LLVM_CONFIG) --ldflags` $(LDFLAGS) CLANG_LFL = `$(LLVM_CONFIG) --ldflags` $(LDFLAGS)
@ -384,22 +401,22 @@ endif
endif endif
instrumentation/afl-llvm-common.o: instrumentation/afl-llvm-common.cc instrumentation/afl-llvm-common.h instrumentation/afl-llvm-common.o: instrumentation/afl-llvm-common.cc instrumentation/afl-llvm-common.h
$(CXX) $(CFLAGS) $(CPPFLAGS) `$(LLVM_CONFIG) --cxxflags` -fno-rtti -fPIC -std=$(LLVM_STDCXX) -c $< -o $@ $(CXX) $(CFLAGS) $(CPPFLAGS) `$(LLVM_CONFIG) --cxxflags` -fno-rtti -std=$(LLVM_STDCXX) -c $< -o $@
./afl-llvm-pass.so: instrumentation/afl-llvm-pass.so.cc instrumentation/afl-llvm-common.o | test_deps ./afl-llvm-pass.so: instrumentation/afl-llvm-pass.so.cc instrumentation/afl-llvm-common.o | test_deps
ifeq "$(LLVM_MIN_4_0_1)" "0" ifeq "$(LLVM_MIN_4_0_1)" "0"
$(info [!] N-gram branch coverage instrumentation is not available for llvm version $(LLVMVER)) $(info [!] N-gram branch coverage instrumentation is not available for llvm version $(LLVMVER))
endif endif
$(CXX) $(CLANG_CPPFL) -Wdeprecated -fno-rtti -fPIC -std=$(LLVM_STDCXX) -shared $< -o $@ $(CLANG_LFL) instrumentation/afl-llvm-common.o $(CXX) $(CLANG_CPPFL) -Wdeprecated -fno-rtti -std=$(LLVM_STDCXX) -shared $< -o $@ $(CLANG_LFL) instrumentation/afl-llvm-common.o
./SanitizerCoveragePCGUARD.so: instrumentation/SanitizerCoveragePCGUARD.so.cc instrumentation/afl-llvm-common.o | test_deps ./SanitizerCoveragePCGUARD.so: instrumentation/SanitizerCoveragePCGUARD.so.cc instrumentation/afl-llvm-common.o | test_deps
ifeq "$(LLVM_10_OK)" "1" ifeq "$(LLVM_10_OK)" "1"
-$(CXX) $(CLANG_CPPFL) -Wdeprecated -fno-rtti -fPIC -std=$(LLVM_STDCXX) -shared $< -o $@ $(CLANG_LFL) instrumentation/afl-llvm-common.o -$(CXX) $(CLANG_CPPFL) -Wdeprecated -fno-rtti -std=$(LLVM_STDCXX) -shared $< -o $@ $(CLANG_LFL) instrumentation/afl-llvm-common.o
endif endif
./afl-llvm-lto-instrumentlist.so: instrumentation/afl-llvm-lto-instrumentlist.so.cc instrumentation/afl-llvm-common.o ./afl-llvm-lto-instrumentlist.so: instrumentation/afl-llvm-lto-instrumentlist.so.cc instrumentation/afl-llvm-common.o
ifeq "$(LLVM_LTO)" "1" ifeq "$(LLVM_LTO)" "1"
$(CXX) $(CLANG_CPPFL) -fno-rtti -fPIC -std=$(LLVM_STDCXX) -shared $< -o $@ $(CLANG_LFL) instrumentation/afl-llvm-common.o $(CXX) $(CLANG_CPPFL) -fno-rtti -std=$(LLVM_STDCXX) -shared $< -o $@ $(CLANG_LFL) instrumentation/afl-llvm-common.o
endif endif
./afl-ld-lto: src/afl-ld-lto.c ./afl-ld-lto: src/afl-ld-lto.c
@ -409,10 +426,10 @@ endif
./SanitizerCoverageLTO.so: instrumentation/SanitizerCoverageLTO.so.cc ./SanitizerCoverageLTO.so: instrumentation/SanitizerCoverageLTO.so.cc
ifeq "$(LLVM_LTO)" "1" ifeq "$(LLVM_LTO)" "1"
$(CXX) $(CLANG_CPPFL) -Wno-writable-strings -fno-rtti -fPIC -std=$(LLVM_STDCXX) -shared $< -o $@ $(CLANG_LFL) instrumentation/afl-llvm-common.o $(CXX) $(CLANG_CPPFL) -Wno-writable-strings -fno-rtti -std=$(LLVM_STDCXX) -shared $< -o $@ $(CLANG_LFL) instrumentation/afl-llvm-common.o
$(CLANG_BIN) $(CFLAGS_SAFE) $(CPPFLAGS) -Wno-unused-result -O0 $(AFL_CLANG_FLTO) -fPIC -c instrumentation/afl-llvm-rt-lto.o.c -o ./afl-llvm-rt-lto.o $(CLANG_BIN) $(CFLAGS_SAFE) $(CPPFLAGS) -Wno-unused-result -O0 $(AFL_CLANG_FLTO) -c instrumentation/afl-llvm-rt-lto.o.c -o ./afl-llvm-rt-lto.o
@$(CLANG_BIN) $(CFLAGS_SAFE) $(CPPFLAGS) -Wno-unused-result -O0 $(AFL_CLANG_FLTO) -m64 -fPIC -c instrumentation/afl-llvm-rt-lto.o.c -o ./afl-llvm-rt-lto-64.o 2>/dev/null; if [ "$$?" = "0" ]; then : ; fi @$(CLANG_BIN) $(CFLAGS_SAFE) $(CPPFLAGS) -Wno-unused-result -O0 $(AFL_CLANG_FLTO) -m64 -c instrumentation/afl-llvm-rt-lto.o.c -o ./afl-llvm-rt-lto-64.o 2>/dev/null; if [ "$$?" = "0" ]; then : ; fi
@$(CLANG_BIN) $(CFLAGS_SAFE) $(CPPFLAGS) -Wno-unused-result -O0 $(AFL_CLANG_FLTO) -m32 -fPIC -c instrumentation/afl-llvm-rt-lto.o.c -o ./afl-llvm-rt-lto-32.o 2>/dev/null; if [ "$$?" = "0" ]; then : ; fi @$(CLANG_BIN) $(CFLAGS_SAFE) $(CPPFLAGS) -Wno-unused-result -O0 $(AFL_CLANG_FLTO) -m32 -c instrumentation/afl-llvm-rt-lto.o.c -o ./afl-llvm-rt-lto-32.o 2>/dev/null; if [ "$$?" = "0" ]; then : ; fi
endif endif
# laf # laf
@ -438,20 +455,20 @@ afl-llvm-dict2file.so: instrumentation/afl-llvm-dict2file.so.cc instrumentation/
.PHONY: document .PHONY: document
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 -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 -m32 -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) -O3 -Wno-unused-result -m64 -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 ./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) -O3 -Wno-unused-result -c $< -o $@
./afl-compiler-rt-32.o: instrumentation/afl-compiler-rt.o.c ./afl-compiler-rt-32.o: instrumentation/afl-compiler-rt.o.c
@printf "[*] Building 32-bit variant of the runtime (-m32)... " @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) -O3 -Wno-unused-result -m32 -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 ./afl-compiler-rt-64.o: instrumentation/afl-compiler-rt.o.c
@printf "[*] Building 64-bit variant of the runtime (-m64)... " @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) -O3 -Wno-unused-result -m64 -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 .PHONY: test_build
test_build: $(PROGS) test_build: $(PROGS)

View File

@ -418,6 +418,17 @@ static const u8 *main_payload_64 =
".att_syntax\n" ".att_syntax\n"
".code64\n" ".code64\n"
".align 8\n" ".align 8\n"
#if defined(__CYGWIN__) || defined(__MSYS__)
".globl getenv\n"
".globl fork\n"
".globl atoi\n"
".globl shmat\n"
".globl write\n"
".globl waitpid\n"
".globl close\n"
".globl _exit\n"
".globl __afl_global_area_ptr\n"
#endif
"\n" "\n"
"__afl_maybe_log:\n" "__afl_maybe_log:\n"
"\n" "\n"
@ -472,7 +483,7 @@ static const u8 *main_payload_64 =
"\n" "\n"
" /* Check out if we have a global pointer on file. */\n" " /* Check out if we have a global pointer on file. */\n"
"\n" "\n"
#ifndef __APPLE__ #if !defined(__APPLE__) && !defined(__CYGWIN__) && !defined(__MSYS__)
" movq __afl_global_area_ptr@GOTPCREL(%rip), %rdx\n" " movq __afl_global_area_ptr@GOTPCREL(%rip), %rdx\n"
" movq (%rdx), %rdx\n" " movq (%rdx), %rdx\n"
#else #else
@ -572,7 +583,7 @@ static const u8 *main_payload_64 =
" movq %rax, %rdx\n" " movq %rax, %rdx\n"
" movq %rax, __afl_area_ptr(%rip)\n" " movq %rax, __afl_area_ptr(%rip)\n"
"\n" "\n"
#ifdef __APPLE__ #if defined(__APPLE__) || defined(__CYGWIN__) || defined(__MSYS__)
" movq %rax, __afl_global_area_ptr(%rip)\n" " movq %rax, __afl_global_area_ptr(%rip)\n"
#else #else
" movq __afl_global_area_ptr@GOTPCREL(%rip), %rdx\n" " movq __afl_global_area_ptr@GOTPCREL(%rip), %rdx\n"

View File

@ -38,7 +38,7 @@
#include <errno.h> #include <errno.h>
#include <sys/mman.h> #include <sys/mman.h>
#ifndef __HAIKU__ #if !(__HAIKU__ || _WIN32 || __CYGWIN__)
#include <sys/syscall.h> #include <sys/syscall.h>
#endif #endif
#ifndef USEMMAP #ifndef USEMMAP
@ -1871,10 +1871,13 @@ static int area_is_valid(void *ptr, size_t len) {
if (unlikely(!ptr || __asan_region_is_poisoned(ptr, len))) { return 0; } if (unlikely(!ptr || __asan_region_is_poisoned(ptr, len))) { return 0; }
#ifndef __HAIKU__ #ifdef __HAIKU__
long r = _kern_write(__afl_dummy_fd[1], -1, ptr, len);
#elif !(WIN32 || __CYGWIN__)
long r = syscall(SYS_write, __afl_dummy_fd[1], ptr, len); long r = syscall(SYS_write, __afl_dummy_fd[1], ptr, len);
#else #else
long r = _kern_write(__afl_dummy_fd[1], -1, ptr, len); #warning "not sure how we do this on windows yet!"
size_t r = len;
#endif // HAIKU #endif // HAIKU
if (r <= 0 || r > len) return 0; if (r <= 0 || r > len) return 0;

View File

@ -2057,6 +2057,7 @@ int main(int argc, char **argv, char **envp) {
} }
#ifndef __CYGWIN__
if (!be_quiet && (compiler_mode == GCC || compiler_mode == CLANG)) { if (!be_quiet && (compiler_mode == GCC || compiler_mode == CLANG)) {
WARNF( WARNF(
@ -2066,6 +2067,8 @@ int main(int argc, char **argv, char **envp) {
} }
#endif
if (debug) { if (debug) {
DEBUGF("cd '%s';", getthecwd()); DEBUGF("cd '%s';", getthecwd());

View File

@ -27,6 +27,10 @@
#include <stdio.h> #include <stdio.h>
#define _GNU_SOURCE #define _GNU_SOURCE
#define __USE_GNU #define __USE_GNU
#ifdef __GNU_VISIBLE
#undef __GNU_VISIBLE
#endif
#define __GNU_VISIBLE 1
#include <string.h> #include <string.h>
#include <strings.h> #include <strings.h>
#include <math.h> #include <math.h>

View File

@ -2701,7 +2701,7 @@ void check_binary(afl_state_t *afl, u8 *fname) {
} }
#ifndef __APPLE__ #if !defined(__APPLE__) && !defined(__CYGWIN__)
if (f_data[0] != 0x7f || memcmp(f_data + 1, "ELF", 3)) { if (f_data[0] != 0x7f || memcmp(f_data + 1, "ELF", 3)) {
@ -2709,16 +2709,17 @@ void check_binary(afl_state_t *afl, u8 *fname) {
} }
#else #elif defined(__APPLE__)
#if !defined(__arm__) && !defined(__arm64__)
if ((f_data[0] != 0xCF || f_data[1] != 0xFA || f_data[2] != 0xED) && if ((f_data[0] != 0xCF || f_data[1] != 0xFA || f_data[2] != 0xED) &&
(f_data[0] != 0xCA || f_data[1] != 0xFE || f_data[2] != 0xBA)) (f_data[0] != 0xCA || f_data[1] != 0xFE || f_data[2] != 0xBA))
FATAL("Program '%s' is not a 64-bit or universal Mach-O binary", FATAL("Program '%s' is not a 64-bit or universal Mach-O binary",
afl->fsrv.target_path); afl->fsrv.target_path);
#endif #else
#endif /* ^!__APPLE__ */ if (f_data[0] != 'M' || f_data[1] != 'Z')
FATAL("Program '%s' is an DOS/WINDOWS program", afl->fsrv.target_path);
#endif
if (!afl->fsrv.qemu_mode && !afl->fsrv.frida_mode && !afl->unicorn_mode && if (!afl->fsrv.qemu_mode && !afl->fsrv.frida_mode && !afl->unicorn_mode &&
!afl->fsrv.cs_mode && !afl->non_instrumented_mode && !afl->fsrv.cs_mode && !afl->non_instrumented_mode &&

View File

@ -246,7 +246,13 @@ u8 *afl_shm_init(sharedmem_t *shm, size_t map_size,
shmget(IPC_PRIVATE, map_size, IPC_CREAT | IPC_EXCL | DEFAULT_PERMISSION); shmget(IPC_PRIVATE, map_size, IPC_CREAT | IPC_EXCL | DEFAULT_PERMISSION);
if (shm->shm_id < 0) { if (shm->shm_id < 0) {
#ifdef __CYGWIN__
PFATAL(
"shmget() failed, try installing cygserver (running 'cygserver-config' "
"in an elevated cygwin terminal)");
#else
PFATAL("shmget() failed, try running afl-system-config"); PFATAL("shmget() failed, try running afl-system-config");
#endif
} }