1*08b48e0bSAndroid Build Coastguard Worker /* 2*08b48e0bSAndroid Build Coastguard Worker american fuzzy lop++ - shared memory related header 3*08b48e0bSAndroid Build Coastguard Worker --------------------------------------------------- 4*08b48e0bSAndroid Build Coastguard Worker 5*08b48e0bSAndroid Build Coastguard Worker Originally written by Michal Zalewski 6*08b48e0bSAndroid Build Coastguard Worker 7*08b48e0bSAndroid Build Coastguard Worker Forkserver design by Jann Horn <[email protected]> 8*08b48e0bSAndroid Build Coastguard Worker 9*08b48e0bSAndroid Build Coastguard Worker Now maintained by Marc Heuse <[email protected]>, 10*08b48e0bSAndroid Build Coastguard Worker Heiko Eißfeldt <[email protected]>, 11*08b48e0bSAndroid Build Coastguard Worker Andrea Fioraldi <[email protected]>, 12*08b48e0bSAndroid Build Coastguard Worker Dominik Maier <[email protected]> 13*08b48e0bSAndroid Build Coastguard Worker 14*08b48e0bSAndroid Build Coastguard Worker Copyright 2016, 2017 Google Inc. All rights reserved. 15*08b48e0bSAndroid Build Coastguard Worker Copyright 2019-2024 AFLplusplus Project. All rights reserved. 16*08b48e0bSAndroid Build Coastguard Worker 17*08b48e0bSAndroid Build Coastguard Worker Licensed under the Apache License, Version 2.0 (the "License"); 18*08b48e0bSAndroid Build Coastguard Worker you may not use this file except in compliance with the License. 19*08b48e0bSAndroid Build Coastguard Worker You may obtain a copy of the License at: 20*08b48e0bSAndroid Build Coastguard Worker 21*08b48e0bSAndroid Build Coastguard Worker https://www.apache.org/licenses/LICENSE-2.0 22*08b48e0bSAndroid Build Coastguard Worker 23*08b48e0bSAndroid Build Coastguard Worker Shared code to handle the shared memory. This is used by the fuzzer 24*08b48e0bSAndroid Build Coastguard Worker as well the other components like afl-tmin, afl-showmap, etc... 25*08b48e0bSAndroid Build Coastguard Worker 26*08b48e0bSAndroid Build Coastguard Worker */ 27*08b48e0bSAndroid Build Coastguard Worker 28*08b48e0bSAndroid Build Coastguard Worker #ifndef __AFL_SHAREDMEM_H 29*08b48e0bSAndroid Build Coastguard Worker #define __AFL_SHAREDMEM_H 30*08b48e0bSAndroid Build Coastguard Worker 31*08b48e0bSAndroid Build Coastguard Worker #include "types.h" 32*08b48e0bSAndroid Build Coastguard Worker 33*08b48e0bSAndroid Build Coastguard Worker typedef struct sharedmem { 34*08b48e0bSAndroid Build Coastguard Worker 35*08b48e0bSAndroid Build Coastguard Worker // extern unsigned char *trace_bits; 36*08b48e0bSAndroid Build Coastguard Worker 37*08b48e0bSAndroid Build Coastguard Worker #ifdef USEMMAP 38*08b48e0bSAndroid Build Coastguard Worker /* ================ Proteas ================ */ 39*08b48e0bSAndroid Build Coastguard Worker int g_shm_fd; 40*08b48e0bSAndroid Build Coastguard Worker char g_shm_file_path[L_tmpnam]; 41*08b48e0bSAndroid Build Coastguard Worker int cmplog_g_shm_fd; 42*08b48e0bSAndroid Build Coastguard Worker char cmplog_g_shm_file_path[L_tmpnam]; 43*08b48e0bSAndroid Build Coastguard Worker /* ========================================= */ 44*08b48e0bSAndroid Build Coastguard Worker #else 45*08b48e0bSAndroid Build Coastguard Worker s32 shm_id; /* ID of the SHM region */ 46*08b48e0bSAndroid Build Coastguard Worker s32 cmplog_shm_id; 47*08b48e0bSAndroid Build Coastguard Worker #endif 48*08b48e0bSAndroid Build Coastguard Worker 49*08b48e0bSAndroid Build Coastguard Worker u8 *map; /* shared memory region */ 50*08b48e0bSAndroid Build Coastguard Worker 51*08b48e0bSAndroid Build Coastguard Worker size_t map_size; /* actual allocated size */ 52*08b48e0bSAndroid Build Coastguard Worker 53*08b48e0bSAndroid Build Coastguard Worker int cmplog_mode; 54*08b48e0bSAndroid Build Coastguard Worker int shmemfuzz_mode; 55*08b48e0bSAndroid Build Coastguard Worker struct cmp_map *cmp_map; 56*08b48e0bSAndroid Build Coastguard Worker 57*08b48e0bSAndroid Build Coastguard Worker } sharedmem_t; 58*08b48e0bSAndroid Build Coastguard Worker 59*08b48e0bSAndroid Build Coastguard Worker u8 *afl_shm_init(sharedmem_t *, size_t, unsigned char non_instrumented_mode); 60*08b48e0bSAndroid Build Coastguard Worker void afl_shm_deinit(sharedmem_t *); 61*08b48e0bSAndroid Build Coastguard Worker 62*08b48e0bSAndroid Build Coastguard Worker #endif 63*08b48e0bSAndroid Build Coastguard Worker 64