24 os <<
"FuzzerData {\n";
25 os <<
" instructions: [\n";
26 for (
const auto& block :
data.instruction_blocks) {
28 for (
const auto& instr : block) {
29 os <<
" " << instr <<
",\n";
34 os <<
" cfg_instructions: [\n";
35 for (
const auto& instr :
data.cfg_instructions) {
36 os <<
" " << instr <<
",\n";
40 for (
size_t i = 0; i <
data.calldata.size(); ++i) {
41 os <<
data.calldata[i];
42 if (i + 1 <
data.calldata.size()) {
47 os <<
" return_options: " <<
"tag: " <<
data.return_options.return_value_tag
48 <<
", offset: " <<
data.return_options.return_value_offset_index <<
",\n";
const std::vector< MemoryValue > data
std::ostream & operator<<(std::ostream &os, const FuzzerData &data)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
describes the data which will be used for fuzzing Should contain instructions, calldata,...
ReturnOptions return_options
std::vector< bb::avm2::FF > calldata
std::vector< CFGInstruction > cfg_instructions
std::vector< std::vector< FuzzInstruction > > instruction_blocks
MSGPACK_FIELDS(instruction_blocks, cfg_instructions, calldata, return_options)