about summary refs log tree commit diff
diff options
context:
space:
mode:
authorvanhauser-thc <vh@thc.org>2021-12-26 01:05:07 +0100
committervanhauser-thc <vh@thc.org>2021-12-26 01:05:07 +0100
commit24dd35ef96ad1948132cee998d5e0909cfa2a5fc (patch)
tree3fb6d12713eb5784f58a730d90fd555d9b50906e
parent8217b5ff81f08a77c376eec1db3a386f7d8ce23f (diff)
downloadafl++-24dd35ef96ad1948132cee998d5e0909cfa2a5fc.tar.gz
macos ci
-rw-r--r--.github/workflows/ci.yml8
-rw-r--r--docs/INSTALL.md3
-rwxr-xr-xtest/test-llvm.sh10
-rwxr-xr-xtest/test-pre.sh6
4 files changed, 15 insertions, 12 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index e936080e..0119985f 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -31,7 +31,7 @@ jobs:
   macos:
     runs-on: macOS-latest
     env:
-      AFL_MAP_SIZE: 4000
+      AFL_MAP_SIZE: 65536
       AFL_SKIP_CPUFREQ: 1
     steps:
       - uses: actions/checkout@v2
@@ -39,9 +39,11 @@ jobs:
         run: echo AFL_MAP_SIZE=$AFL_MAP_SIZE
       - name: install
         run: brew install make
+      - name: fix install
+        run: cd /usr/local/bin; ln -s gcc-* gcc; ln -s g++-* g++; which gcc; gcc -v
       - name: build
-        run: export CC=/usr/local/Cellar/llvm/*/bin/clang; export CXX="$CC"++; export LLVM_CONFIG=/usr/local/Cellar/llvm/*/bin/llvm-config; gmake ASAN_BUILD=1
+        run: export PATH=/usr/local/Cellar/llvm/*/":$PATH"; export CC=/usr/local/Cellar/llvm/*/bin/clang; export CXX="$CC"++; export LLVM_CONFIG=/usr/local/Cellar/llvm/*/bin/llvm-config; sudo -E ./afl-system-config; gmake ASAN_BUILD=1
       - name: frida
         run: export CC=/usr/local/Cellar/llvm/*/bin/clang; export CXX="$CC"++; cd frida_mode; gmake
       - name: run tests
-        run: sudo -E ./afl-system-config ; gmake tests
+        run: sudo -E ./afl-system-config; export PATH=/usr/local/Cellar/llvm/*/":/usr/local/bin:$PATH"; gmake tests
diff --git a/docs/INSTALL.md b/docs/INSTALL.md
index a41d36c7..7f0d3df1 100644
--- a/docs/INSTALL.md
+++ b/docs/INSTALL.md
@@ -99,7 +99,8 @@ Be sure to setup `PATH` to point to the correct clang binaries and use the
 freshly installed clang, clang++, gmake and coreutils, e.g.:
 
 ```
-export PATH="/usr/local/Cellar/llvm/13.0.0_2/bin/:/usr/local/opt/coreutils/libexec/gnubin:$PATH"
+export
+PATH="/usr/local/Cellar/llvm/13.0.0_2/bin/:/usr/local/opt/coreutils/libexec/gnubin:/usr/local/bin:$PATH"
 export CC=clang
 export CXX=clang++
 gmake
diff --git a/test/test-llvm.sh b/test/test-llvm.sh
index aa40c5ed..cb1849b1 100755
--- a/test/test-llvm.sh
+++ b/test/test-llvm.sh
@@ -68,24 +68,24 @@ test -e ../afl-clang-fast -a -e ../split-switches-pass.so && {
   ../afl-clang-fast -DTEST_SHARED_OBJECT=1 -z defs -fPIC -shared -o test-instr.so ../test-instr.c > /dev/null 2>&1
   test -e test-instr.so && {
     $ECHO "$GREEN[+] llvm_mode shared object with -z defs compilation succeeded"
-    test `uname -s` = 'Linux' && LIBS=-ldl :
+    test `uname -s` = 'Linux' && LIBS=-ldl
     ../afl-clang-fast -o test-dlopen.plain test-dlopen.c ${LIBS} > /dev/null 2>&1
     test -e test-dlopen.plain && {
       $ECHO "$GREEN[+] llvm_mode test-dlopen compilation succeeded"
-      echo 0 | TEST_DLOPEN_TARGET=./test-instr.so AFL_QUIET=1 ./test-dlopen.plain > /dev/null 2>&1
+      echo 0 | DYLD_INSERT_LIBRARIES=./test-instr.so LD_PRELOAD=./test-instr.so TEST_DLOPEN_TARGET=./test-instr.so AFL_QUIET=1 ./test-dlopen.plain > /dev/null 2>&1
       if [ $? -ne 0 ]; then
         $ECHO "$RED[!] llvm_mode test-dlopen exits with an error"
         CODE=1
       fi
-      echo 0 | TEST_DLOPEN_TARGET=./test-instr.so AFL_QUIET=1 ../afl-showmap -m ${MEM_LIMIT} -o test-dlopen.plain.0 -r -- ./test-dlopen.plain > /dev/null 2>&1
-      TEST_DLOPEN_TARGET=./test-instr.so AFL_QUIET=1 ../afl-showmap -m ${MEM_LIMIT} -o test-dlopen.plain.1 -r -- ./test-dlopen.plain < /dev/null > /dev/null 2>&1
+      echo 0 | AFL_PRELOAD=./test-instr.so TEST_DLOPEN_TARGET=./test-instr.so AFL_QUIET=1 ../afl-showmap -m ${MEM_LIMIT} -o test-dlopen.plain.0 -r -- ./test-dlopen.plain > /dev/null 2>&1
+      AFL_PRELOAD=./test-instr.so TEST_DLOPEN_TARGET=./test-instr.so AFL_QUIET=1 ../afl-showmap -m ${MEM_LIMIT} -o test-dlopen.plain.1 -r -- ./test-dlopen.plain < /dev/null > /dev/null 2>&1
       test -e test-dlopen.plain.0 -a -e test-dlopen.plain.1 && {
         diff test-dlopen.plain.0 test-dlopen.plain.1 > /dev/null 2>&1 && {
           $ECHO "$RED[!] llvm_mode test-dlopen instrumentation should be different on different input but is not"
           CODE=1
         } || {
           $ECHO "$GREEN[+] llvm_mode test-dlopen instrumentation present and working correctly"
-          TUPLES=`echo 0|TEST_DLOPEN_TARGET=./test-instr.so AFL_QUIET=1 ../afl-showmap -m ${MEM_LIMIT} -o /dev/null -- ./test-dlopen.plain 2>&1 | grep Captur | awk '{print$3}'`
+          TUPLES=`echo 0|AFL_PRELOAD=./test-instr.so TEST_DLOPEN_TARGET=./test-instr.so AFL_QUIET=1 ../afl-showmap -m ${MEM_LIMIT} -o /dev/null -- ./test-dlopen.plain 2>&1 | grep Captur | awk '{print$3}'`
           test "$TUPLES" -gt 3 -a "$TUPLES" -lt 12 && {
             $ECHO "$GREEN[+] llvm_mode test-dlopen run reported $TUPLES instrumented locations which is fine"
           } || {
diff --git a/test/test-pre.sh b/test/test-pre.sh
index e12d95be..b8b286e5 100755
--- a/test/test-pre.sh
+++ b/test/test-pre.sh
@@ -105,14 +105,14 @@ test -n "$TRAVIS_OS_NAME" && {
   export ASAN_OPTIONS=detect_leaks=0:allocator_may_return_null=1:abort_on_error=1:symbolize=1
 }
 
-export AFL_LLVM_INSTRUMENT=AFL
+#export AFL_LLVM_INSTRUMENT=AFL # AFL mode makes dlopen not link on macos
 
 # on OpenBSD we need to work with llvm from /usr/local/bin
 test -e /usr/local/bin/opt && {
-  export PATH="/usr/local/bin:${PATH}"
+  test `uname -s` = 'Darwin' || export PATH="/usr/local/bin:${PATH}"
 }
 # on MacOS X we prefer afl-clang over afl-gcc, because
-# afl-gcc does not work there
+# afl-gcc does not work there (it is a symlink from clang)
 test `uname -s` = 'Darwin' -o `uname -s` = 'FreeBSD' && {
   AFL_GCC=afl-clang
 } || {