about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--afl-gcc.c2
-rw-r--r--docs/ChangeLog4
-rw-r--r--llvm_mode/README.llvm3
-rw-r--r--types.h9
4 files changed, 14 insertions, 4 deletions
diff --git a/afl-gcc.c b/afl-gcc.c
index 467a9bc1..2e3c4f76 100644
--- a/afl-gcc.c
+++ b/afl-gcc.c
@@ -311,6 +311,8 @@ int main(int argc, char** argv) {
 
   } else be_quiet = 1;
 
+  SAYF(cYEL "[!] " cBRI "WARNING: " cRST "afl-gcc is deprecated, gcc_plugin is faster, llvm_mode even faster\n");
+
   if (argc < 2) {
 
     SAYF("\n"
diff --git a/docs/ChangeLog b/docs/ChangeLog
index 8c1aa994..735653c0 100644
--- a/docs/ChangeLog
+++ b/docs/ChangeLog
@@ -17,10 +17,12 @@ sending a mail to <afl-users+subscribe@googlegroups.com>.
 Version ++2.52d (tbd):
 -----------------------------
 
+  - Using the old ineffective afl-gcc will now show a deprecation warning
   - if llvm_mode was compiled, afl-clang/afl-clang++ will point to these
     instead of afl-gcc
   - added gcc_plugin which is like llvm_mode but for gcc. This version
-    supports gcc version 5 to 8. See gcc_plugin/README (https://github.com/T12z/afl)
+    supports gcc version 5 to 8. See gcc_plugin/README.gcc
+    (https://github.com/T12z/afl)
   - added instrim, a much faster llvm_mode instrumentation at the cost of
     path discovery. See llvm_mode/README.instrim (https://github.com/csienslab/instrim)
   - added MOpt (github.com/puppet-meteor/MOpt-AFL) mode, see docs/README.MOpt
diff --git a/llvm_mode/README.llvm b/llvm_mode/README.llvm
index 779ff47c..aaa7b81f 100644
--- a/llvm_mode/README.llvm
+++ b/llvm_mode/README.llvm
@@ -3,6 +3,7 @@ Fast LLVM-based instrumentation for afl-fuzz
 ============================================
 
   (See ../docs/README for the general instruction manual.)
+  (See ../gcc_plugin/README.gcc for the GCC-based instrumentation.)
 
 1) Introduction
 ---------------
@@ -30,7 +31,7 @@ several interesting properties:
   - The instrumentation can cope a bit better with multi-threaded targets.
 
   - Because the feature relies on the internals of LLVM, it is clang-specific
-    and will *not* work with GCC.
+    and will *not* work with GCC (see ../gcc_plugin/ for an alternative).
 
 Once this implementation is shown to be sufficiently robust and portable, it
 will probably replace afl-clang. For now, it can be built separately and
diff --git a/types.h b/types.h
index 784d3a7a..3497bb2b 100644
--- a/types.h
+++ b/types.h
@@ -80,7 +80,12 @@ typedef int64_t  s64;
 #define MEM_BARRIER() \
   asm volatile("" ::: "memory")
 
-#define likely(_x)   __builtin_expect(!!(_x), 1)
-#define unlikely(_x)  __builtin_expect(!!(_x), 0)
+#if __GNUC__ < 6
+ #define likely(_x)   (_x)
+ #define unlikely(_x) (_x)
+#else
+ #define likely(_x)   __builtin_expect(!!(_x), 1)
+ #define unlikely(_x)  __builtin_expect(!!(_x), 0)
+#endif
 
 #endif /* ! _HAVE_TYPES_H */