• Home
  • Raw
  • Download

Lines Matching +full:test +full:- +full:shell

1 # american fuzzy lop++ - LLVM instrumentation
2 # -----------------------------------------
15 # https://www.apache.org/licenses/LICENSE-2.0
29 …= $(shell date -u -d "@$(SOURCE_DATE_EPOCH)" "+%Y-%m-%d" 2>/dev/null || date -u -r "$(SOURCE_DATE_…
31 VERSION = $(shell grep '^$(HASH)define VERSION ' ./config.h | cut -d '"' -f2)
33 SYS = $(shell uname -s)
36 LLVM_CONFIG ?= $(BIN_PATH)/llvm-config
37 HAS_OPT = $(shell test -x $(BIN_PATH)/opt && echo 0 || echo 1)
39 …lvm_mode needs a complete llvm installation (versions 6.0 up to 13) -> e.g. "pkg_add llvm-7.0.1p9")
42 LLVM_CONFIG ?= llvm-config
45 LLVMVER = $(shell $(LLVM_CONFIG) --version 2>/dev/null | sed 's/git//' | sed 's/svn//' )
46 LLVM_MAJOR = $(shell $(LLVM_CONFIG) --version 2>/dev/null | sed 's/\..*//' )
47 LLVM_MINOR = $(shell $(LLVM_CONFIG) --version 2>/dev/null | sed 's/.*\.//' | sed 's/git//' | sed 's…
48 LLVM_UNSUPPORTED = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^[0-2]\.|^3.[0-8]\.' …
49 LLVM_TOO_NEW = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^1[8-9]|^2[0-9]' && echo …
50 LLVM_TOO_OLD = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^[1-9]\.|^1[012]\.' && ec…
51 LLVM_NEW_API = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^1[0-9]' && echo 1 || ech…
52 LLVM_NEWER_API = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^1[6-9]' && echo 1 || e…
53 LLVM_13_OK = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^1[3-9]' && echo 1 || echo …
54 LLVM_HAVE_LTO = $(shell $(LLVM_CONFIG) --version 2>/dev/null | grep -E -q '^1[2-9]' && echo 1 || ec…
55 LLVM_BINDIR = $(shell $(LLVM_CONFIG) --bindir 2>/dev/null)
56 LLVM_LIBDIR = $(shell $(LLVM_CONFIG) --libdir 2>/dev/null)
58 LLVM_APPLE_XCODE = $(shell $(CC) -v 2>&1 | grep -q Apple && echo 1 || echo 0)
62 …$(warning [!] llvm_mode needs llvm-config, which was not found. Set LLVM_CONFIG to its path and re…
70 $(warning you are using an in-development llvm version - this might break llvm_mode!)
75 $(shell sleep 2)
98 $(info [+] llvm_mode detected llvm 12+, enabling afl-lto LTO implementation)
103 $(info [+] llvm_mode detected llvm < 12, afl-lto LTO will not be build.)
110 # We were using llvm-config --bindir to get the location of clang, but
117 # llvm-config --bindir may not providing a valid path, so ...
118 ifeq "$(shell test -e $(CC) || echo 1 )" "1"
120 ifeq "$(shell command -v $(CC) 2> /dev/null)" ""
122 ifeq "$(shell test -e '$(BIN_DIR)/clang' && echo 1)" "1"
127 $(warning we have trouble finding clang - llvm-config is not helping us)
132 # llvm-config --bindir may not providing a valid path, so ...
133 ifeq "$(shell test -e $(CXX) || echo 1 )" "1"
135 ifeq "$(shell command -v $(CXX) 2> /dev/null)" ""
137 ifeq "$(shell test -e '$(BIN_DIR)/clang++' && echo 1)" "1"
142 $(warning we have trouble finding clang++ - llvm-config is not helping us)
149 # Are versions of clang --version and llvm-config --version equal?
150 CLANGVER = $(shell $(CC) --version | sed -E -ne '/^.*version\ (1?[0-9]\.[0-9]\.[0-9]).*/s//\1/p')
155 ifeq "$(findstring clang, $(shell $(CC) --version 2>/dev/null))" ""
160 ifeq "$(findstring clang, $(shell $(CXX) --version 2>/dev/null))" ""
190 # Now it can happen that CC points to clang - but there is no clang on the
193 ifeq "$(shell command -v $(CC) 2>/dev/null)" ""
196 ifeq "$(shell command -v $(CXX) 2>/dev/null)" ""
203 #ifeq "$(shell echo 'int main() {return 0; }' | $(CC) -x c - -march=native -o .test 2>/dev/null && …
204 # CFLAGS_OPT = -march=native
207 ifeq "$(shell echo 'int main() {return 0; }' | $(CLANG_BIN) -x c - -flto=full -o .test 2>/dev/null …
208 AFL_CLANG_FLTO ?= -flto=full
210 …ifeq "$(shell echo 'int main() {return 0; }' | $(CLANG_BIN) -x c - -flto=thin -o .test 2>/dev/null…
211 AFL_CLANG_FLTO ?= -flto=thin
213 …ifeq "$(shell echo 'int main() {return 0; }' | $(CLANG_BIN) -x c - -flto -o .test 2>/dev/null && e…
214 AFL_CLANG_FLTO ?= -flto
222 ifneq "$(shell readlink $(LLVM_BINDIR)/ld.lld 2>&1)" ""
224 else ifneq "$(shell command -v ld.lld 2>/dev/null)" ""
225 AFL_REAL_LD = $(shell command -v ld.lld)
226 TMP_LDLDD_VERSION = $(shell $(AFL_REAL_LD) --version | awk '{ print $$2 }')
230 … its of a different version than LLMV ($(TMP_LDLDD_VERSION) vs. $(LLVMVER)) - cannot enable LTO mo…
241 …$(warning clang option -flto is not working - maybe LLVMgold.so not found - cannot enable LTO mode)
248 …feq "$(shell echo 'int main() {return 0; }' | $(CLANG_BIN) -x c - -fuse-ld=`command -v ld` -o .tes…
250shell echo 'int main() {return 0; }' | $(CLANG_BIN) -x c - -fuse-ld=ld.lld --ld-path=$(AFL_REAL_LD…
254 $(warning -fuse-ld is not working, cannot enable LTO mode)
259shell echo 'int main() {return 0; }' | $(CLANG_BIN) -x c - -fdebug-prefix-map=$(CURDIR)=llvm_mode
260 AFL_CLANG_DEBUG_PREFIX = -fdebug-prefix-map="$(CURDIR)=llvm_mode"
265 CFLAGS ?= -O3 -funroll-loops -fPIC
266 # -D_FORTIFY_SOURCE=1
267 CFLAGS_SAFE := -Wall -g -Wno-cast-qual -Wno-variadic-macros -Wno-pointer-sign \
268 -I ./include/ -I ./instrumentation/ \
269 -DAFL_PATH=\"$(HELPER_PATH)\" -DBIN_PATH=\"$(BIN_PATH)\" \
270 -DLLVM_BINDIR=\"$(LLVM_BINDIR)\" -DVERSION=\"$(VERSION)\" \
271 -DLLVM_LIBDIR=\"$(LLVM_LIBDIR)\" -DLLVM_VERSION=\"$(LLVMVER)\" \
272 -DAFL_CLANG_FLTO=\"$(AFL_CLANG_FLTO)\" -DAFL_REAL_LD=\"$(AFL_REAL_LD)\" \
273-DAFL_CLANG_LDPATH=\"$(AFL_CLANG_LDPATH)\" -DAFL_CLANG_FUSELD=\"$(AFL_CLANG_FUSELD)\" \
274-DCLANG_BIN=\"$(CLANG_BIN)\" -DCLANGPP_BIN=\"$(CLANGPP_BIN)\" -DUSE_BINDIR=$(USE_BINDIR) \
275 -Wno-unused-function $(AFL_CLANG_DEBUG_PREFIX)
277 CFLAGS_SAFE += -Wno-deprecated
281 override CFLAGS_SAFE += -D__AFL_CODE_COVERAGE=1
282 override LDFLAGS += -ldl
291 CXXFLAGS ?= -O3 -funroll-loops -fPIC
292 # -D_FORTIFY_SOURCE=1
293 override CXXFLAGS += -Wall -g -I ./include/ \
294 -DVERSION=\"$(VERSION)\" -Wno-variadic-macros -Wno-deprecated-copy-with-dtor \
295 -DLLVM_MINOR=$(LLVM_MINOR) -DLLVM_MAJOR=$(LLVM_MAJOR)
297 ifneq "$(shell $(LLVM_CONFIG) --includedir) 2> /dev/null" ""
298 CLANG_CFL = -I$(shell $(LLVM_CONFIG) --includedir)
301 CLANG_CFL += -I$(shell dirname $(LLVM_CONFIG))/../include
303 CLANG_CPPFL = `$(LLVM_CONFIG) --cxxflags` -fno-rtti -fno-exceptions -fPIC $(CXXFLAGS) $(CPPFLAGS)
304 CLANG_LFL = `$(LLVM_CONFIG) --ldflags` $(LDFLAGS)
306 # wasm fuzzing: disable thread-local storage and unset LLVM debug flag
309 CLANG_CPPFL += -DNDEBUG -DNO_TLS
314 CLANG_LFL += -Wl,-flat_namespace -Wl,-undefined,suppress
318 CLANG_CPPFL += -Wl,-znodelete
322 CLANG_LFL += `$(LLVM_CONFIG) --libdir`/libLLVM.so
323 CLANG_CPPFL += -mno-retpoline
324 CFLAGS += -mno-retpoline
326 LDFLAGS += -lc++abi -lpthread
329shell echo '$(HASH)include <sys/ipc.h>@$(HASH)include <sys/shm.h>@int main() { int _id = shmget(IP…
333 CFLAGS_SAFE += -DUSEMMAP=1
334 LDFLAGS += -Wno-deprecated-declarations
339 CFLAGS_SAFE += -DUSEMMAP=1
340 LDFLAGS += -Wno-deprecated-declarations
343 PROGS_ALWAYS = ./afl-cc ./afl-compiler-rt.o ./afl-compiler-rt-32.o ./afl-compiler-rt-64.o
344-llvm-pass.so ./SanitizerCoveragePCGUARD.so ./split-compares-pass.so ./split-switches-pass.so ./cm…
356 TARGETS = test_shm $(PROGS_ALWAYS) afl-cc.8
358 TARGETS = test_shm test_deps $(PROGS) afl-cc.8 test_build all_done
361 LLVM_MIN_4_0_1 = $(shell awk 'function tonum(ver, a) {split(ver,a,"."); return a[1]*1000000+a[2]*10…
370 @rm -f .test2
373 @echo "[-] shmat seems not to be working, switching to mmap implementation"
382 @echo "[*] Checking for working 'llvm-config'..."
384-] Oops, can't find 'llvm-config'. Install clang or set \$$LLVM_CONFIG or \$$PATH beforehand."; ec…
387 …@type $(CC) >/dev/null 2>&1 || ( echo "[-] Oops, can't find '$(CC)'. Make sure that it's in your \…
390 @echo "[!] WARNING: we have llvm-config version $(LLVMVER) and a clang version $(CLANGVER)"
392 @echo "[*] We have llvm-config version $(LLVMVER) with a clang version $(CLANGVER), good."
394 @echo "[*] Checking for './afl-showmap'..."
395 …@test -f ./afl-showmap || ( echo "[-] Oops, can't find './afl-showmap'. Be sure to compile AFL fir…
398 instrumentation/afl-common.o: ./src/afl-common.c
399 $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ $(LDFLAGS)
401 ./afl-cc: src/afl-cc.c instrumentation/afl-common.o
402 … instrumentation/afl-common.o -o $@ -DLLVM_MINOR=$(LLVM_MINOR) -DLLVM_MAJOR=$(LLVM_MAJOR) $(LDFLAG…
403 @ln -sf afl-cc ./afl-c++
404 @ln -sf afl-cc ./afl-gcc
405 @ln -sf afl-cc ./afl-g++
406 @ln -sf afl-cc ./afl-clang
407 @ln -sf afl-cc ./afl-clang++
408 @ln -sf afl-cc ./afl-clang-fast
409 @ln -sf afl-cc ./afl-clang-fast++
412 @ln -sf afl-cc ./afl-clang-lto
413 @ln -sf afl-cc ./afl-clang-lto++
414 @ln -sf afl-cc ./afl-lto
415 @ln -sf afl-cc ./afl-lto++
419 instrumentation/afl-llvm-common.o: instrumentation/afl-llvm-common.cc instrumentation/afl-llvm-comm…
420 …$(CXX) $(CFLAGS) $(CPPFLAGS) `$(LLVM_CONFIG) --cxxflags` -fno-rtti -fPIC -std=$(LLVM_STDCXX) -c $<…
422 ./afl-llvm-pass.so: instrumentation/afl-llvm-pass.so.cc instrumentation/afl-llvm-common.o | test_de…
424 $(info [!] N-gram branch coverage instrumentation is not available for llvm version $(LLVMVER))
426 …$(CXX) $(CLANG_CPPFL) -Wdeprecated -fno-rtti -fPIC -std=$(LLVM_STDCXX) -shared $< -o $@ $(CLANG_LF…
428 …RD.so: instrumentation/SanitizerCoveragePCGUARD.so.cc instrumentation/afl-llvm-common.o | test_deps
430-$(CXX) $(CLANG_CPPFL) -fno-rtti -fPIC -std=$(LLVM_STDCXX) -shared $< -o $@ $(CLANG_LFL) -Wno-depr…
433 ./afl-llvm-lto-instrumentlist.so: instrumentation/afl-llvm-lto-instrumentlist.so.cc instrumentation…
435 …$(CXX) $(CLANG_CPPFL) -fno-rtti -fPIC -std=$(LLVM_STDCXX) -shared $< -o $@ $(CLANG_LFL) instrument…
438 ./afl-ld-lto: src/afl-ld-lto.c
440 $(CC) $(CFLAGS) $(CPPFLAGS) $< -o $@
443 ./SanitizerCoverageLTO.so: instrumentation/SanitizerCoverageLTO.so.cc instrumentation/afl-llvm-comm…
445 …CXX) $(CLANG_CPPFL) -Wno-writable-strings -fno-rtti -fPIC -std=$(LLVM_STDCXX) -shared $< -o $@ $(C…
446 …CFLAGS_SAFE) $(CPPFLAGS) -Wno-unused-result -O0 $(AFL_CLANG_FLTO) -fPIC -c instrumentation/afl-llv…
447 …S_SAFE) $(CPPFLAGS) -Wno-unused-result -O0 $(AFL_CLANG_FLTO) -m64 -fPIC -c instrumentation/afl-llv…
448 …S_SAFE) $(CPPFLAGS) -Wno-unused-result -O0 $(AFL_CLANG_FLTO) -m32 -fPIC -c instrumentation/afl-llv…
452 ./split-switches-pass.so: instrumentation/split-switches-pass.so.cc instrumentation/afl-llvm-common…
453 $(CXX) $(CLANG_CPPFL) -shared $< -o $@ $(CLANG_LFL) instrumentation/afl-llvm-common.o
454 ./compare-transform-pass.so: instrumentation/compare-transform-pass.so.cc instrumentation/afl-llvm-
455 $(CXX) $(CLANG_CPPFL) -shared $< -o $@ $(CLANG_LFL) instrumentation/afl-llvm-common.o
456 ./split-compares-pass.so: instrumentation/split-compares-pass.so.cc instrumentation/afl-llvm-common…
457 $(CXX) $(CLANG_CPPFL) -shared $< -o $@ $(CLANG_LFL) instrumentation/afl-llvm-common.o
460 ./cmplog-routines-pass.so: instrumentation/cmplog-routines-pass.cc instrumentation/afl-llvm-common.…
461 $(CXX) $(CLANG_CPPFL) -shared $< -o $@ $(CLANG_LFL) instrumentation/afl-llvm-common.o
463 ./cmplog-instructions-pass.so: instrumentation/cmplog-instructions-pass.cc instrumentation/afl-llvm
464 $(CXX) $(CLANG_CPPFL) -shared $< -o $@ $(CLANG_LFL) instrumentation/afl-llvm-common.o
466 ./cmplog-switches-pass.so: instrumentation/cmplog-switches-pass.cc instrumentation/afl-llvm-common.…
467 $(CXX) $(CLANG_CPPFL) -shared $< -o $@ $(CLANG_LFL) instrumentation/afl-llvm-common.o
469 afl-llvm-dict2file.so: instrumentation/afl-llvm-dict2file.so.cc instrumentation/afl-llvm-common.o |…
470 $(CXX) $(CLANG_CPPFL) -shared $< -o $@ $(CLANG_LFL) instrumentation/afl-llvm-common.o
472 ./injection-pass.so: instrumentation/injection-pass.cc instrumentation/afl-llvm-common.o | test_deps
473 $(CXX) $(CLANG_CPPFL) -shared $< -o $@ $(CLANG_LFL) instrumentation/afl-llvm-common.o
477-D_AFL_DOCUMENT_MUTATIONS $(CFLAGS_SAFE) $(CPPFLAGS) $(CLANG_CFL) -O3 -Wno-unused-result -fPIC -c …
478-D_AFL_DOCUMENT_MUTATIONS $(CFLAGS_SAFE) $(CPPFLAGS) $(CLANG_CFL) -O3 -Wno-unused-result -m32 -fPI…
479-D_AFL_DOCUMENT_MUTATIONS $(CFLAGS_SAFE) $(CPPFLAGS) $(CLANG_CFL) -O3 -Wno-unused-result -m64 -fPI…
481 ./afl-compiler-rt.o: instrumentation/afl-compiler-rt.o.c
482 $(CC) $(CLANG_CFL) $(CFLAGS_SAFE) $(CPPFLAGS) -O3 -Wno-unused-result -fPIC -c $< -o $@
484 ./afl-compiler-rt-32.o: instrumentation/afl-compiler-rt.o.c
485 @printf "[*] Building 32-bit variant of the runtime (-m32)... "
486 …@$(CC) $(CLANG_CFL) $(CFLAGS_SAFE) $(CPPFLAGS) -O3 -Wno-unused-result -m32 -fPIC -c $< -o $@ 2>/de…
488 ./afl-compiler-rt-64.o: instrumentation/afl-compiler-rt.o.c
489 @printf "[*] Building 64-bit variant of the runtime (-m64)... "
490 …@$(CC) $(CLANG_CFL) $(CFLAGS_SAFE) $(CPPFLAGS) -O3 -Wno-unused-result -m64 -fPIC -c $< -o $@ 2>/de…
495 …ks=0 AFL_QUIET=1 AFL_PATH=. AFL_LLVM_LAF_ALL=1 ./afl-cc $(CFLAGS) $(CPPFLAGS) ./test-instr.c -o te…
496 ASAN_OPTIONS=detect_leaks=0 ./afl-showmap -m none -q -o .test-instr0 ./test-instr < /dev/null
497 echo 1 | ASAN_OPTIONS=detect_leaks=0 ./afl-showmap -m none -q -o .test-instr1 ./test-instr
498 @rm -f test-instr
499 …@cmp -s .test-instr0 .test-instr1; DR="$$?"; rm -f .test-instr0 .test-instr1; if [ "$$DR" = "0" ];…
504 @echo "[+] All done! You can now use './afl-cc' to compile programs."
510 …@install -d -m 755 $${DESTDIR}$(BIN_PATH) $${DESTDIR}$(HELPER_PATH) $${DESTDIR}$(DOC_PATH) $${DEST…
511 …@if [ -f ./afl-cc ]; then set -e; install -m 755 ./afl-cc $${DESTDIR}$(BIN_PATH); ln -sf afl-cc $$…
512 @rm -f $${DESTDIR}$(HELPER_PATH)/afl-llvm-rt*.o $${DESTDIR}$(HELPER_PATH)/afl-gcc-rt*.o
513 …@if [ -f ./afl-compiler-rt.o ]; then set -e; install -m 755 ./afl-compiler-rt.o $${DESTDIR}$(HELPE…
514-f ./afl-lto ]; then set -e; ln -sf afl-cc $${DESTDIR}$(BIN_PATH)/afl-lto; ln -sf afl-cc $${DESTDI…
515 @if [ -f ./afl-ld-lto ]; then set -e; install -m 755 ./afl-ld-lto $${DESTDIR}$(BIN_PATH); fi
516 …@if [ -f ./afl-compiler-rt-32.o ]; then set -e; install -m 755 ./afl-compiler-rt-32.o $${DESTDIR}$…
517 …@if [ -f ./afl-compiler-rt-64.o ]; then set -e; install -m 755 ./afl-compiler-rt-64.o $${DESTDIR}$…
518 …@if [ -f ./compare-transform-pass.so ]; then set -e; install -m 755 ./*.so $${DESTDIR}$(HELPER_PAT…
519-f ./compare-transform-pass.so ]; then set -e; ln -sf afl-cc $${DESTDIR}$(BIN_PATH)/afl-clang-fast…
520 …[ -f ./SanitizerCoverageLTO.so ]; then set -e; ln -sf afl-cc $${DESTDIR}$(BIN_PATH)/afl-clang-lto …
521 set -e; install -m 644 ./dynamic_list.txt $${DESTDIR}$(HELPER_PATH)
522 install -m 644 instrumentation/README.*.md $${DESTDIR}$(DOC_PATH)/
527 @printf "%s" ".B $* \- " >> ./$@
528 @./$* -h 2>&1 | head -n 1 | sed -e "s/$$(printf '\e')[^m]*m//g" >> ./$@
532 @./$* -h 2>&1 | head -n 3 | tail -n 1 | sed 's/^\.\///' >> ./$@
536 @./$* -h 2>&1 | tail -n +4 >> ./$@
539 …Hauser\" Heuse <mh@mh-sec.de>, Dominik Maier <domenukk@gmail.com>, Andrea Fioraldi <andreafioraldi…
544 @ln -sf afl-cc.8 ./afl-c++.8
545 @ln -sf afl-cc.8 ./afl-clang-fast.8
546 @ln -sf afl-cc.8 ./afl-clang-fast++.8
549 @ln -sf afl-cc.8 ./afl-clang-lto.8
550 @ln -sf afl-cc.8 ./afl-clang-lto++.8
551 @ln -sf afl-cc.8 ./afl-lto.8
552 @ln -sf afl-cc.8 ./afl-lto++.8
558 rm -f *.o *.so *~ a.out core core.[1-9][0-9]* .test2 test-instr .test-instr0 .test-instr1 *.dwo
559-f $(PROGS) afl-common.o ./afl-c++ ./afl-lto ./afl-lto++ ./afl-clang-lto* ./afl-clang-fast* ./afl-