xref: /aosp_15_r20/external/AFLplusplus/include/sharedmem.h (revision 08b48e0b10e97b33e7b60c5b6e2243bd915777f2)
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