| 115 | namespace Driver { |
| 116 | |
| 117 | int FuzzPO(const uint8_t *Data, size_t Size) noexcept { |
| 118 | using namespace std::literals; |
| 119 | |
| 120 | std::ios::sync_with_stdio(false); |
| 121 | spdlog::set_level(spdlog::level::info); |
| 122 | |
| 123 | PO::Option<std::string> SoName(PO::Description("Wasm or so file"sv), |
| 124 | PO::MetaVar("WASM_OR_SO"sv)); |
| 125 | PO::List<std::string> Args(PO::Description("Execution arguments"sv), |
| 126 | PO::MetaVar("ARG"sv)); |
| 127 | |
| 128 | PO::Option<PO::Toggle> Reactor(PO::Description( |
| 129 | "Enable reactor mode. Reactor mode calls `_initialize` if exported.")); |
| 130 | |
| 131 | PO::List<std::string> Dir( |
| 132 | PO::Description( |
| 133 | "Binding directories into WASI virtual filesystem. Each directories " |
| 134 | "can specified as --dir `guest_path:host_path`, where `guest_path` " |
| 135 | "specifies the path that will correspond to `host_path` for calls " |
| 136 | "like `fopen` in the guest."sv), |
| 137 | PO::MetaVar("PREOPEN_DIRS"sv)); |
| 138 | |
| 139 | PO::List<std::string> Env( |
| 140 | PO::Description( |
| 141 | "Environ variables. Each variable can be specified as --env `NAME=VALUE`."sv), |
| 142 | PO::MetaVar("ENVS"sv)); |
| 143 | |
| 144 | PO::Option<PO::Toggle> PropWASM1( |
| 145 | PO::Description("Set as WASM 1.0 standard."sv)); |
| 146 | PO::Option<PO::Toggle> PropWASM2( |
| 147 | PO::Description("Set as WASM 2.0 standard."sv)); |
| 148 | PO::Option<PO::Toggle> PropWASM3( |
| 149 | PO::Description("Set as WASM 3.0 standard (default)."sv)); |
| 150 | PO::Option<PO::Toggle> PropMutGlobals( |
| 151 | PO::Description("Disable Import/Export of mutable globals proposal"sv)); |
| 152 | PO::Option<PO::Toggle> PropNonTrapF2IConvs(PO::Description( |
| 153 | "Disable Non-trapping float-to-int conversions proposal"sv)); |
| 154 | PO::Option<PO::Toggle> PropSignExtendOps( |
| 155 | PO::Description("Disable Sign-extension operators proposal"sv)); |
| 156 | PO::Option<PO::Toggle> PropMultiValue( |
| 157 | PO::Description("Disable Multi-value proposal"sv)); |
| 158 | PO::Option<PO::Toggle> PropBulkMemOps( |
| 159 | PO::Description("Disable Bulk memory operations proposal"sv)); |
| 160 | PO::Option<PO::Toggle> PropRefTypes( |
| 161 | PO::Description("Disable Reference types proposal"sv)); |
| 162 | PO::Option<PO::Toggle> PropSIMD(PO::Description("Disable SIMD proposal"sv)); |
| 163 | PO::Option<PO::Toggle> PropTailCall( |
| 164 | PO::Description("Disable Tail-call proposal"sv)); |
| 165 | PO::Option<PO::Toggle> PropExtendConst( |
| 166 | PO::Description("Disable Extended-const proposal"sv)); |
| 167 | PO::Option<PO::Toggle> PropFunctionReference( |
| 168 | PO::Description("Disable Function Reference proposal"sv)); |
| 169 | PO::Option<PO::Toggle> PropGC(PO::Description("Disable GC proposal"sv)); |
| 170 | PO::Option<PO::Toggle> PropMultiMem( |
| 171 | PO::Description("Disable Multiple memories proposal"sv)); |
| 172 | PO::Option<PO::Toggle> PropRelaxedSIMD( |
| 173 | PO::Description("Disable Relaxed SIMD proposal"sv)); |
| 174 | PO::Option<PO::Toggle> PropExceptionHandling( |
no test coverage detected