mirror of
https://github.com/AFLplusplus/AFLplusplus.git
synced 2025-06-16 11:58:08 +00:00
add LTO support in nyx_mode
This commit is contained in:
@ -54,7 +54,13 @@ typedef enum NyxReturnValue {
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
||||||
void *(*nyx_new)(const char *sharedir, const char *workdir,
|
void *(*nyx_new)(const char *sharedir, const char *workdir,
|
||||||
uint32_t worker_id, uint32_t cpu_id, bool create_snapshot);
|
uint32_t cpu_id, uint32_t input_buffer_size,
|
||||||
|
bool input_buffer_write_protection);
|
||||||
|
void *(*nyx_new_parent)(const char *sharedir, const char *workdir,
|
||||||
|
uint32_t cpu_id, uint32_t input_buffer_size,
|
||||||
|
bool input_buffer_write_protection);
|
||||||
|
void *(*nyx_new_child)(const char *sharedir, const char *workdir,
|
||||||
|
uint32_t cpu_id, uint32_t worker_id);
|
||||||
void (*nyx_shutdown)(void *qemu_process);
|
void (*nyx_shutdown)(void *qemu_process);
|
||||||
void (*nyx_option_set_reload_mode)(void *qemu_process, bool enable);
|
void (*nyx_option_set_reload_mode)(void *qemu_process, bool enable);
|
||||||
void (*nyx_option_set_timeout)(void *qemu_process, uint8_t timeout_sec,
|
void (*nyx_option_set_timeout)(void *qemu_process, uint8_t timeout_sec,
|
||||||
|
@ -405,24 +405,27 @@ void afl_fsrv_start(afl_forkserver_t *fsrv, char **argv,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fsrv->nyx_parent) {
|
if (fsrv->nyx_standalone){
|
||||||
|
|
||||||
fsrv->nyx_runner = fsrv->nyx_handlers->nyx_new(
|
fsrv->nyx_runner = fsrv->nyx_handlers->nyx_new(
|
||||||
fsrv->target_path, x, fsrv->nyx_id, fsrv->nyx_bind_cpu_id,
|
fsrv->target_path, x, fsrv->nyx_bind_cpu_id, 0x10000, true);
|
||||||
!fsrv->nyx_standalone);
|
}
|
||||||
|
else{
|
||||||
|
if (fsrv->nyx_parent) {
|
||||||
|
fsrv->nyx_runner = fsrv->nyx_handlers->nyx_new_parent(
|
||||||
|
fsrv->target_path, x, fsrv->nyx_bind_cpu_id, MAX_FILE, true);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
fsrv->nyx_runner = fsrv->nyx_handlers->nyx_new_child(
|
||||||
fsrv->nyx_runner = fsrv->nyx_handlers->nyx_new(
|
fsrv->target_path, x, fsrv->nyx_bind_cpu_id, fsrv->nyx_id);
|
||||||
fsrv->target_path, x, fsrv->nyx_id, fsrv->nyx_bind_cpu_id, true);
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fsrv->nyx_runner == NULL) { FATAL("Something went wrong ..."); }
|
if (fsrv->nyx_runner == NULL) { FATAL("Something went wrong ..."); }
|
||||||
|
|
||||||
u32 tmp_map_size =
|
u32 tmp_map_size =
|
||||||
fsrv->nyx_handlers->nyx_get_bitmap_buffer_size(fsrv->nyx_runner);
|
fsrv->nyx_handlers->nyx_get_bitmap_buffer_size(fsrv->nyx_runner);
|
||||||
fsrv->real_map_size = fsrv->map_size;
|
fsrv->real_map_size = tmp_map_size;
|
||||||
fsrv->map_size = (((tmp_map_size + 63) >> 6) << 6);
|
fsrv->map_size = (((tmp_map_size + 63) >> 6) << 6);
|
||||||
if (!be_quiet) { ACTF("Target map size: %u", fsrv->real_map_size); }
|
if (!be_quiet) { ACTF("Target map size: %u", fsrv->real_map_size); }
|
||||||
|
|
||||||
|
@ -404,6 +404,12 @@ nyx_plugin_handler_t *afl_load_libnyx_plugin(u8 *libnyx_binary) {
|
|||||||
plugin->nyx_new = dlsym(handle, "nyx_new");
|
plugin->nyx_new = dlsym(handle, "nyx_new");
|
||||||
if (plugin->nyx_new == NULL) { goto fail; }
|
if (plugin->nyx_new == NULL) { goto fail; }
|
||||||
|
|
||||||
|
plugin->nyx_new_parent = dlsym(handle, "nyx_new_parent");
|
||||||
|
if (plugin->nyx_new_parent == NULL) { goto fail; }
|
||||||
|
|
||||||
|
plugin->nyx_new_child = dlsym(handle, "nyx_new_child");
|
||||||
|
if (plugin->nyx_new_child == NULL) { goto fail; }
|
||||||
|
|
||||||
plugin->nyx_shutdown = dlsym(handle, "nyx_shutdown");
|
plugin->nyx_shutdown = dlsym(handle, "nyx_shutdown");
|
||||||
if (plugin->nyx_shutdown == NULL) { goto fail; }
|
if (plugin->nyx_shutdown == NULL) { goto fail; }
|
||||||
|
|
||||||
@ -1341,6 +1347,7 @@ int main(int argc, char **argv_orig, char **envp) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
afl->fsrv.nyx_parent = true;
|
||||||
afl->fsrv.nyx_id = 0;
|
afl->fsrv.nyx_id = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user