about summary refs log tree commit diff
path: root/frida_mode/include/stats.h
diff options
context:
space:
mode:
authorYour Name <you@example.com>2021-08-20 17:28:40 +0100
committerYour Name <you@example.com>2021-08-20 17:28:40 +0100
commit028f8ced8f772d82a7efc522ec629bf4a5fff32d (patch)
treef5440087d2779984812b5e8c50f1fda6bdbb489b /frida_mode/include/stats.h
parent3513ba2e51222151945e8ae87236bb9d2f07f37a (diff)
downloadafl++-028f8ced8f772d82a7efc522ec629bf4a5fff32d.tar.gz
Fixed coverage on OSX (dependency on pipe2)
Removed use of 'realpath' in makefiles to fix OSX incompatibility
Fixed handling of when prefetching should be enabled
Snap the main binary during initialization to avoid stability issues with lazy loading
Add support for configurable inline cache entries for FRIDA on x86/x64
Support for prefetching FRIDA backpatches on x86/x64
Improved stats support on x86/x64/aarch64
Diffstat (limited to 'frida_mode/include/stats.h')
-rw-r--r--frida_mode/include/stats.h56
1 files changed, 41 insertions, 15 deletions
diff --git a/frida_mode/include/stats.h b/frida_mode/include/stats.h
index cd2350ea..0ad227c3 100644
--- a/frida_mode/include/stats.h
+++ b/frida_mode/include/stats.h
@@ -5,30 +5,56 @@
 
 typedef struct {
 
-  guint64 num_blocks;
-  guint64 num_instructions;
-  guint64 stats_last_time;
-  guint64 stats_idx;
-  guint64 transitions_idx;
+  guint64 stats_time;
+  guint64 total;
+  guint64 call_imm;
+  guint64 call_reg;
+  guint64 call_mem;
+  guint64 excluded_call_reg;
+  guint64 ret_slow_path;
+  guint64 ret;
+  guint64 post_call_invoke;
+  guint64 excluded_call_imm;
+  guint64 jmp_imm;
+  guint64 jmp_reg;
+  guint64 jmp_mem;
+  guint64 jmp_cond_imm;
+  guint64 jmp_cond_mem;
+  guint64 jmp_cond_reg;
+  guint64 jmp_cond_jcxz;
+  guint64 jmp_cond_cc;
+  guint64 jmp_cond_cbz;
+  guint64 jmp_cond_cbnz;
+  guint64 jmp_cond_tbz;
+  guint64 jmp_cond_tbnz;
+  guint64 jmp_continuation;
+
+} stats_t;
 
-} stats_data_header_t;
+typedef struct {
+
+  /* transitions */
+  stats_t curr;
+  stats_t prev;
+
+} stats_data_t;
 
-extern stats_data_header_t *stats_data;
+#define GUM_TYPE_AFL_STALKER_STATS (gum_afl_stalker_stats_get_type())
+G_DECLARE_FINAL_TYPE(GumAflStalkerStats, gum_afl_stalker_stats, GUM,
+                     AFL_STALKER_STATS, GObject)
 
-extern char *   stats_filename;
-extern guint64  stats_interval;
-extern gboolean stats_transitions;
+extern char *  stats_filename;
+extern guint64 stats_interval;
 
 void stats_config(void);
 void stats_init(void);
 void stats_collect(const cs_insn *instr, gboolean begin);
 void stats_print(char *format, ...);
 
-gboolean stats_is_supported_arch(void);
-size_t   stats_data_size_arch(void);
-void     stats_collect_arch(const cs_insn *instr);
-void     stats_write_arch(void);
-void     stats_on_fork(void);
+void starts_arch_init(void);
+void stats_collect_arch(const cs_insn *instr, gboolean begin);
+void stats_write_arch(stats_data_t *data);
+void stats_on_fork(void);
 
 #endif