Minor changes to Solidity compilation framework fuzzer.

This commit is contained in:
Bhargava Shastry 2021-03-23 13:15:11 +01:00
parent 8d00100c4e
commit f9182e9f88
5 changed files with 14 additions and 9 deletions

View File

@ -59,7 +59,7 @@ DEFINE_PROTO_FUZZER(Contract const& _contract)
langutil::EVMVersion version; langutil::EVMVersion version;
EVMHost hostContext(version, evmone); EVMHost hostContext(version, evmone);
string contractName = ":C"; string contractName = ":C";
CompilerInput cInput(version, contractSource, contractName, OptimiserSettings::minimal(), {}, false); CompilerInput cInput(version, {{"test.sol", contractSource}}, contractName, OptimiserSettings::minimal(), {});
EvmoneUtility evmoneUtil( EvmoneUtility evmoneUtil(
hostContext, hostContext,
cInput, cInput,

View File

@ -32,10 +32,11 @@ using namespace std;
optional<CompilerOutput> SolidityCompilationFramework::compileContract() optional<CompilerOutput> SolidityCompilationFramework::compileContract()
{ {
m_compiler.setSources({{"", m_compilerInput.sourceCode}}); m_compiler.setSources(m_compilerInput.sourceCode);
m_compiler.setLibraries(m_compilerInput.libraryAddresses); m_compiler.setLibraries(m_compilerInput.libraryAddresses);
m_compiler.setEVMVersion(m_compilerInput.evmVersion); m_compiler.setEVMVersion(m_compilerInput.evmVersion);
m_compiler.setOptimiserSettings(m_compilerInput.optimiserSettings); m_compiler.setOptimiserSettings(m_compilerInput.optimiserSettings);
m_compiler.setViaIR(m_compilerInput.viaIR);
if (!m_compiler.compile()) if (!m_compiler.compile())
{ {
if (m_compilerInput.debugFailure) if (m_compilerInput.debugFailure)
@ -68,7 +69,7 @@ bool EvmoneUtility::zeroWord(uint8_t const* _result, size_t _length)
{ {
return _length == 32 && return _length == 32 &&
ranges::all_of( ranges::all_of(
ranges::span(_result, _length), ranges::span(_result, static_cast<long>(_length)),
[](uint8_t _v) { return _v == 0; }); [](uint8_t _v) { return _v == 0; });
} }

View File

@ -42,23 +42,25 @@ struct CompilerInput
{ {
CompilerInput( CompilerInput(
langutil::EVMVersion _evmVersion, langutil::EVMVersion _evmVersion,
std::string const& _sourceCode, StringMap const& _sourceCode,
std::string const& _contractName, std::string const& _contractName,
frontend::OptimiserSettings _optimiserSettings, frontend::OptimiserSettings _optimiserSettings,
std::map<std::string, solidity::util::h160> _libraryAddresses, std::map<std::string, solidity::util::h160> _libraryAddresses,
bool _debugFailure bool _debugFailure = false,
bool _viaIR = false
): ):
evmVersion(_evmVersion), evmVersion(_evmVersion),
sourceCode(_sourceCode), sourceCode(_sourceCode),
contractName(_contractName), contractName(_contractName),
optimiserSettings(_optimiserSettings), optimiserSettings(_optimiserSettings),
libraryAddresses(_libraryAddresses), libraryAddresses(_libraryAddresses),
debugFailure(_debugFailure) debugFailure(_debugFailure),
viaIR(_viaIR)
{} {}
/// EVM target version /// EVM target version
langutil::EVMVersion evmVersion; langutil::EVMVersion evmVersion;
/// Source code to be compiled /// Source code to be compiled
std::string const& sourceCode; StringMap const& sourceCode;
/// Contract name /// Contract name
std::string contractName; std::string contractName;
/// Optimiser setting to be used during compilation /// Optimiser setting to be used during compilation
@ -67,6 +69,8 @@ struct CompilerInput
std::map<std::string, solidity::util::h160> libraryAddresses; std::map<std::string, solidity::util::h160> libraryAddresses;
/// Flag used for debugging /// Flag used for debugging
bool debugFailure; bool debugFailure;
/// Flag to enable new code generator.
bool viaIR;
}; };
class SolidityCompilationFramework class SolidityCompilationFramework

View File

@ -50,7 +50,7 @@ DEFINE_PROTO_FUZZER(Contract const& _input)
EVMHost hostContext(version, evmone); EVMHost hostContext(version, evmone);
string contractName = ":C"; string contractName = ":C";
string methodName = "test()"; string methodName = "test()";
CompilerInput cInput(version, contract_source, contractName, OptimiserSettings::minimal(), {}, false); CompilerInput cInput(version, {{"test.sol", contract_source}}, contractName, OptimiserSettings::minimal(), {});
EvmoneUtility evmoneUtil( EvmoneUtility evmoneUtil(
hostContext, hostContext,
cInput, cInput,

View File

@ -69,7 +69,7 @@ DEFINE_PROTO_FUZZER(Program const& _input)
string contractName = ":C"; string contractName = ":C";
string libraryName = converter.libraryTest() ? converter.libraryName() : ""; string libraryName = converter.libraryTest() ? converter.libraryName() : "";
string methodName = "test()"; string methodName = "test()";
CompilerInput cInput(version, sol_source, contractName, OptimiserSettings::minimal(), {}, false); CompilerInput cInput(version, {{"test.sol", sol_source}}, contractName, OptimiserSettings::minimal(), {});
EvmoneUtility evmoneUtil( EvmoneUtility evmoneUtil(
hostContext, hostContext,
cInput, cInput,