aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAndrea Fioraldi <andreafioraldi@gmail.com>2019-09-01 20:34:20 +0200
committerAndrea Fioraldi <andreafioraldi@gmail.com>2019-09-01 20:34:20 +0200
commit3b3df4e3cb0ce3e6ea728b68694b579e15cd00f7 (patch)
treeaae036d19e07c6cb673d30b033e3e45067e48e9c /include
parent4f3c417753c7ff40023fcbb2958eb6109ebdd575 (diff)
downloadAFLplusplus-3b3df4e3cb0ce3e6ea728b68694b579e15cd00f7.tar.gz
afl-fuzz-src bitmap and queue C files
Diffstat (limited to 'include')
-rw-r--r--include/afl-fuzz.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/include/afl-fuzz.h b/include/afl-fuzz.h
index f243c7ba..22a78373 100644
--- a/include/afl-fuzz.h
+++ b/include/afl-fuzz.h
@@ -466,6 +466,34 @@ void trim_py(char**, size_t*);
#endif
+/* Queue */
+
+void mark_as_det_done(struct queue_entry* q);
+void mark_as_variable(struct queue_entry* q);
+void mark_as_redundant(struct queue_entry* q, u8 state);
+void add_to_queue(u8* fname, u32 len, u8 passed_det);
+void destroy_queue(void);
+void update_bitmap_score(struct queue_entry* q);
+void cull_queue(void);
+
+/* Bitmap */
+
+void write_bitmap(void);
+void read_bitmap(u8* fname);
+u8 has_new_bits(u8* virgin_map);
+u32 count_bits(u8* mem);
+u32 count_bytes(u8* mem);
+u32 count_non_255_bytes(u8* mem);
+#ifdef __x86_64__
+void simplify_trace(u64* mem);
+void classify_counts(u64* mem);
+#else
+void simplify_trace(u32* mem);
+void classify_counts(u32* mem);
+#endif
+void init_count_class16(void);
+void minimize_bits(u8* dst, u8* src);
+
/**** Inline routines ****/
/* Generate a random number (from 0 to limit - 1). This may
@@ -493,5 +521,43 @@ static inline u32 UR(u32 limit) {
#endif
}
+/* Find first power of two greater or equal to val (assuming val under
+ 2^63). */
+
+static u64 next_p2(u64 val) {
+
+ u64 ret = 1;
+ while (val > ret) ret <<= 1;
+ return ret;
+
+}
+
+/* Get unix time in milliseconds */
+
+static u64 get_cur_time(void) {
+
+ struct timeval tv;
+ struct timezone tz;
+
+ gettimeofday(&tv, &tz);
+
+ return (tv.tv_sec * 1000ULL) + (tv.tv_usec / 1000);
+
+}
+
+
+/* Get unix time in microseconds */
+
+static u64 get_cur_time_us(void) {
+
+ struct timeval tv;
+ struct timezone tz;
+
+ gettimeofday(&tv, &tz);
+
+ return (tv.tv_sec * 1000000ULL) + tv.tv_usec;
+
+}
+
#endif