diff --git a/test/tools/ossfuzz/AbiV2IsabelleFuzzer.cpp b/test/tools/ossfuzz/AbiV2IsabelleFuzzer.cpp index df5fc0908..12b13ae9d 100644 --- a/test/tools/ossfuzz/AbiV2IsabelleFuzzer.cpp +++ b/test/tools/ossfuzz/AbiV2IsabelleFuzzer.cpp @@ -59,7 +59,7 @@ DEFINE_PROTO_FUZZER(Contract const& _contract) langutil::EVMVersion version; EVMHost hostContext(version, evmone); string contractName = ":C"; - CompilerInput cInput(version, contractSource, contractName, OptimiserSettings::minimal(), {}, false); + CompilerInput cInput(version, {{"test.sol", contractSource}}, contractName, OptimiserSettings::minimal(), {}); EvmoneUtility evmoneUtil( hostContext, cInput, diff --git a/test/tools/ossfuzz/SolidityEvmoneInterface.cpp b/test/tools/ossfuzz/SolidityEvmoneInterface.cpp index 0b69804e4..954ae2bf0 100644 --- a/test/tools/ossfuzz/SolidityEvmoneInterface.cpp +++ b/test/tools/ossfuzz/SolidityEvmoneInterface.cpp @@ -32,10 +32,11 @@ using namespace std; optional SolidityCompilationFramework::compileContract() { - m_compiler.setSources({{"", m_compilerInput.sourceCode}}); + m_compiler.setSources(m_compilerInput.sourceCode); m_compiler.setLibraries(m_compilerInput.libraryAddresses); m_compiler.setEVMVersion(m_compilerInput.evmVersion); m_compiler.setOptimiserSettings(m_compilerInput.optimiserSettings); + m_compiler.setViaIR(m_compilerInput.viaIR); if (!m_compiler.compile()) { if (m_compilerInput.debugFailure) @@ -68,7 +69,7 @@ bool EvmoneUtility::zeroWord(uint8_t const* _result, size_t _length) { return _length == 32 && ranges::all_of( - ranges::span(_result, _length), + ranges::span(_result, static_cast(_length)), [](uint8_t _v) { return _v == 0; }); } diff --git a/test/tools/ossfuzz/SolidityEvmoneInterface.h b/test/tools/ossfuzz/SolidityEvmoneInterface.h index a43deaa5b..12a373428 100644 --- a/test/tools/ossfuzz/SolidityEvmoneInterface.h +++ b/test/tools/ossfuzz/SolidityEvmoneInterface.h @@ -42,23 +42,25 @@ struct CompilerInput { CompilerInput( langutil::EVMVersion _evmVersion, - std::string const& _sourceCode, + StringMap const& _sourceCode, std::string const& _contractName, frontend::OptimiserSettings _optimiserSettings, std::map _libraryAddresses, - bool _debugFailure + bool _debugFailure = false, + bool _viaIR = false ): evmVersion(_evmVersion), sourceCode(_sourceCode), contractName(_contractName), optimiserSettings(_optimiserSettings), libraryAddresses(_libraryAddresses), - debugFailure(_debugFailure) + debugFailure(_debugFailure), + viaIR(_viaIR) {} /// EVM target version langutil::EVMVersion evmVersion; /// Source code to be compiled - std::string const& sourceCode; + StringMap const& sourceCode; /// Contract name std::string contractName; /// Optimiser setting to be used during compilation @@ -67,6 +69,8 @@ struct CompilerInput std::map libraryAddresses; /// Flag used for debugging bool debugFailure; + /// Flag to enable new code generator. + bool viaIR; }; class SolidityCompilationFramework diff --git a/test/tools/ossfuzz/abiV2ProtoFuzzer.cpp b/test/tools/ossfuzz/abiV2ProtoFuzzer.cpp index 7bf01cc6f..c498162e5 100644 --- a/test/tools/ossfuzz/abiV2ProtoFuzzer.cpp +++ b/test/tools/ossfuzz/abiV2ProtoFuzzer.cpp @@ -50,7 +50,7 @@ DEFINE_PROTO_FUZZER(Contract const& _input) EVMHost hostContext(version, evmone); string contractName = ":C"; string methodName = "test()"; - CompilerInput cInput(version, contract_source, contractName, OptimiserSettings::minimal(), {}, false); + CompilerInput cInput(version, {{"test.sol", contract_source}}, contractName, OptimiserSettings::minimal(), {}); EvmoneUtility evmoneUtil( hostContext, cInput, diff --git a/test/tools/ossfuzz/solProtoFuzzer.cpp b/test/tools/ossfuzz/solProtoFuzzer.cpp index 3c5f77fb1..194fd63a2 100644 --- a/test/tools/ossfuzz/solProtoFuzzer.cpp +++ b/test/tools/ossfuzz/solProtoFuzzer.cpp @@ -69,7 +69,7 @@ DEFINE_PROTO_FUZZER(Program const& _input) string contractName = ":C"; string libraryName = converter.libraryTest() ? converter.libraryName() : ""; string methodName = "test()"; - CompilerInput cInput(version, sol_source, contractName, OptimiserSettings::minimal(), {}, false); + CompilerInput cInput(version, {{"test.sol", sol_source}}, contractName, OptimiserSettings::minimal(), {}); EvmoneUtility evmoneUtil( hostContext, cInput,