From 7dbb64e7c2f757650bd0bc733d6aad4ee8de0975 Mon Sep 17 00:00:00 2001 From: Steffen Schulz Date: Wed, 21 Jul 2021 03:30:02 -0700 Subject: [PATCH] compile-time option to restore kAFL style full edge traces --- nyx/redqueen_trace.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/nyx/redqueen_trace.c b/nyx/redqueen_trace.c index bf70982fb1..15bf64f2e2 100644 --- a/nyx/redqueen_trace.c +++ b/nyx/redqueen_trace.c @@ -4,6 +4,13 @@ #include #include "redqueen_trace.h" +/* write full trace of edge transitions rather than sorted list? */ +//#define KAFL_FULL_TRACES + +#ifdef KAFL_FULL_TRACES +#include "redqueen.h" +#endif + redqueen_trace_t* redqueen_trace_new(void){ redqueen_trace_t* self = malloc(sizeof(redqueen_trace_t)); self->lookup = kh_init(RQ_TRACE); @@ -28,6 +35,13 @@ void redqueen_trace_free(redqueen_trace_t* self){ void redqueen_trace_register_transition(redqueen_trace_t* self, disassembler_mode_t mode, uint64_t from, uint64_t to){ khiter_t k; int ret; +#ifdef KAFL_FULL_TRACES + extern int trace_fd; + if (!trace_fd) + trace_fd = open(redqueen_workdir.pt_trace_results, O_WRONLY | O_CREAT | O_APPEND, S_IRWXU); + dprintf(trace_fd, "%lx,%lx\n", from, to); + return; +#endif uint128_t key = (((uint128_t)from)<<64) | ((uint128_t)to); k = kh_get(RQ_TRACE, self->lookup, key); if(k != kh_end(self->lookup)){ @@ -42,6 +56,9 @@ void redqueen_trace_register_transition(redqueen_trace_t* self, disassembler_mod } void redqueen_trace_write_file(redqueen_trace_t* self, int fd){ +#ifdef KAFL_FULL_TRACES + return; +#endif for(size_t i = 0; i < self->num_ordered_transitions; i++){ khiter_t k; uint128_t key = self->ordered_transitions[i];