about summary refs log tree commit diff
path: root/gcc_plugin
diff options
context:
space:
mode:
Diffstat (limited to 'gcc_plugin')
-rw-r--r--gcc_plugin/afl-gcc-pass.so.cc17
1 files changed, 17 insertions, 0 deletions
diff --git a/gcc_plugin/afl-gcc-pass.so.cc b/gcc_plugin/afl-gcc-pass.so.cc
index b6246c7a..66c133b8 100644
--- a/gcc_plugin/afl-gcc-pass.so.cc
+++ b/gcc_plugin/afl-gcc-pass.so.cc
@@ -113,6 +113,7 @@ static unsigned int ext_call_instrument(function *fun) {
   DECL_EXTERNAL(fndecl) = 1;                            /* External linkage */
   DECL_ARTIFICIAL(fndecl) = 1;                      /* Injected by compiler */
 
+printf("NEW FUNC %s\n", function_name(fun));
   FOR_EACH_BB_FN(bb, fun) {
 
     gimple_seq           fcall;
@@ -128,24 +129,40 @@ static unsigned int ext_call_instrument(function *fun) {
     int           more_than_one = -1;
     edge          ep;
     edge_iterator eip;
+int foo = 0;
+        if (ep->flags & EDGE_FALLTHRU)
+printf("pred %d fallthough\n", foo);
     FOR_EACH_EDGE(ep, eip, bb->preds) {
 
+int item = 0;
+foo++;
+printf("pred %d\n", foo);
+        if (ep->flags & EDGE_FALLTHRU)
+printf("pred %d fallthough\n", foo);
+
       int count = 0;
+if (ep->flags & EDGE_FALLTHRU)
       if (more_than_one == -1) more_than_one = 0;
 
       basic_block   Pred = ep->src;
       edge          es;
       edge_iterator eis;
       FOR_EACH_EDGE(es, eis, Pred->succs) {
+item++;
 
+        if (es->flags & EDGE_FALLTHRU)
+printf("item %d fallthough\n", item);
+          
         basic_block Succ = es->dest;
         if (Succ != NULL) count++;
 
       }
+printf("total items: %d\n", item);
 
       if (count > 1) more_than_one = 1;
 
     }
+printf("result: %d\n", more_than_one);
 
     if (more_than_one != 1) continue;