about summary refs log tree commit diff
path: root/qemu_mode/patches/translator.diff
diff options
context:
space:
mode:
authorAndrea Fioraldi <andreafioraldi@gmail.com>2020-02-11 21:29:36 +0100
committerAndrea Fioraldi <andreafioraldi@gmail.com>2020-02-11 21:29:36 +0100
commite22ba031f552bf41fb24286b54c0417d5ddd464a (patch)
tree944e0878e5e90b7d2c4774f630e5f17c6a302648 /qemu_mode/patches/translator.diff
parent1bb6e1911b4a983687de09b39072638c0c001d3e (diff)
downloadafl++-e22ba031f552bf41fb24286b54c0417d5ddd464a.tar.gz
AFL_ENTRYPOINT instruction granularity
Diffstat (limited to 'qemu_mode/patches/translator.diff')
-rw-r--r--qemu_mode/patches/translator.diff25
1 files changed, 25 insertions, 0 deletions
diff --git a/qemu_mode/patches/translator.diff b/qemu_mode/patches/translator.diff
new file mode 100644
index 00000000..842e861d
--- /dev/null
+++ b/qemu_mode/patches/translator.diff
@@ -0,0 +1,25 @@
+diff --git a/accel/tcg/translator.c b/accel/tcg/translator.c
+index afd0a49e..773ea712 100644
+--- a/accel/tcg/translator.c
++++ b/accel/tcg/translator.c
+@@ -18,6 +18,8 @@
+ #include "exec/log.h"
+ #include "exec/translator.h"
+ 
++#include "../../../patches/afl-qemu-common.h"
++
+ /* Pairs with tcg_clear_temp_count.
+    To be called by #TranslatorOps.{translate_insn,tb_stop} if
+    (1) the target is sufficiently clean to support reporting,
+@@ -92,6 +94,11 @@ void translator_loop(const TranslatorOps *ops, DisasContextBase *db,
+                 break;
+             }
+         }
++        
++        if (db->pc_next == afl_entry_point) {
++          afl_setup();
++          gen_helper_afl_entry_routine(cpu_env);
++        }
+ 
+         /* Disassemble one instruction.  The translate_insn hook should
+            update db->pc_next and db->is_jmp to indicate what should be