2 * We adjust linker script modification to place all of the stuff that needs to
3 * persist across fuzzing runs into a contiguous section of memory. Then, it is
4 * easy to re-map the counter-related memory as shared.
9 .data.fuzz_start : ALIGN(4K)
11 __FUZZ_COUNTERS_START = .;
12 __start___sancov_cntrs = .;
14 __stop___sancov_cntrs = .;
16 /* Lowest stack counter */
17 *(__sancov_lowest_stack);
22 * Coverage counters. They're not necessary for fuzzing, but are useful
23 * for analyzing the fuzzing performance
25 __start___llvm_prf_cnts = .;
27 __stop___llvm_prf_cnts = .;
29 /* Internal Libfuzzer TracePC object which contains the ValueProfileMap */
30 FuzzerTracePC*(.bss*);
32 * In case the above line fails, explicitly specify the (mangled) name of
33 * the object we care about
35 *(.bss._ZN6fuzzer3TPCE);
37 .data.fuzz_end : ALIGN(4K)
39 __FUZZ_COUNTERS_END = .;
43 * Don't overwrite the SECTIONS in the default linker script. Instead insert the
44 * above into the default script