aboutsummaryrefslogtreecommitdiff
path: root/gcc_plugin
diff options
context:
space:
mode:
Diffstat (limited to 'gcc_plugin')
-rw-r--r--gcc_plugin/CRASH23
-rw-r--r--gcc_plugin/README.gcc6
-rw-r--r--gcc_plugin/afl-gcc-pass.so.cc9
3 files changed, 36 insertions, 2 deletions
diff --git a/gcc_plugin/CRASH b/gcc_plugin/CRASH
new file mode 100644
index 00000000..51930bb3
--- /dev/null
+++ b/gcc_plugin/CRASH
@@ -0,0 +1,23 @@
+to reproduce:
+=============
+tiff-4.0.4.tar.gz
+CC=afl-gcc-fast CXX=afl-g++-fast ./configure --disable-shared
+make
+
+result
+======
+[+] Instrumented 11 locations in TIFFInitJPEG
+during GIMPLE pass: evrp
+tif_jpeg.c: In function ‘JPEGFixupTagsSubsamplingSec’:
+tif_jpeg.c:2388:1: internal compiler error: Segmentation fault
+ }
+ ^
+0x7ffff758e83f ???
+ /build/glibc-vjB4T1/glibc-2.28/signal/../sysdeps/unix/sysv/linux/x86_64/sigaction.c:0
+0x7ffff757b09a __libc_start_main
+ ../csu/libc-start.c:308
+Please submit a full bug report,
+with preprocessed source if appropriate.
+Please include the complete backtrace with any bug report.
+See <file:///usr/share/doc/gcc-8/README.Bugs> for instructions.
+make[2]: *** [Makefile:696: tif_jpeg.lo] Error 1
diff --git a/gcc_plugin/README.gcc b/gcc_plugin/README.gcc
index fe62020b..a002c741 100644
--- a/gcc_plugin/README.gcc
+++ b/gcc_plugin/README.gcc
@@ -5,6 +5,12 @@ Fast GCC-based instrumentation for afl-fuzz
(See ../docs/README for the general instruction manual.)
(See ../llvm_mode/README.llvm for the LLVM-based instrumentation.)
+
+!!!
+!!! gcc_plugin is not stable yet and can crash when compiling
+!!!
+
+
1) Introduction
---------------
diff --git a/gcc_plugin/afl-gcc-pass.so.cc b/gcc_plugin/afl-gcc-pass.so.cc
index 8d1888ef..b1ca8325 100644
--- a/gcc_plugin/afl-gcc-pass.so.cc
+++ b/gcc_plugin/afl-gcc-pass.so.cc
@@ -1,7 +1,9 @@
//
-// There are two TODOs in this file:
+// There are some TODOs in this file:
// - dont instrument blocks that are uninterested
// - implement whitelist feature
+// - implement notZero
+// - fix crash
//
/*
@@ -102,7 +104,7 @@ static unsigned int ext_call_instrument(function *fun) {
if (!fcnt_blocks++) continue; /* skip block 0 */
- // TODO: if the predecessor does not have to destinations
+ // TODO: if the predecessor does not have ast least two destinations
// then skip this block :TODO
/* Bail on this block if we trip the specified ratio */
@@ -223,6 +225,9 @@ static unsigned int inline_instrument(function *fun) {
g = gimple_build_assign(tmp3, PLUS_EXPR, tmp2, one);
gimple_seq_add_stmt(&seq, g); // tmp3 = tmp2 + 1
+ // TODO: neverZero: here we have to check if tmp3 == 0
+ // and add 1 if so
+
// tree tmp4 = create_tmp_var(map_type, "tmp4");
// g = gimple_build_assign(tmp4, PLUS_EXPR, map_ptr_g, area_off);
// gimple_seq_add_stmt(&seq, g); // tmp4 = __afl_area_ptr + area_off