Make optimiser settings available to assembly stack.

This commit is contained in:
chriseth
2019-03-28 18:24:13 +01:00
parent 30da62aa2c
commit 3264e9abf0
17 changed files with 111 additions and 46 deletions
@@ -28,14 +28,18 @@ extern "C" int LLVMFuzzerTestOneInput(uint8_t const* _data, size_t _size)
return 0;
string input(reinterpret_cast<char const*>(_data), _size);
AssemblyStack stack(langutil::EVMVersion(), AssemblyStack::Language::StrictAssembly);
AssemblyStack stack(
langutil::EVMVersion(),
AssemblyStack::Language::StrictAssembly,
dev::solidity::OptimiserSettings::full()
);
if (!stack.parseAndAnalyze("source", input))
return 0;
try
{
MachineAssemblyObject obj = stack.assemble(AssemblyStack::Machine::EVM, /*optimize=*/true);
MachineAssemblyObject obj = stack.assemble(AssemblyStack::Machine::EVM);
solAssert(obj.bytecode, "");
}
catch (StackTooDeepError const&)
+10 -3
View File
@@ -55,11 +55,18 @@ extern "C" int LLVMFuzzerTestOneInput(uint8_t const* _data, size_t _size)
}))
return 0;
AssemblyStack stack(EVMVersion::petersburg(), AssemblyStack::Language::StrictAssembly);
AssemblyStack stack(
EVMVersion::petersburg(),
AssemblyStack::Language::StrictAssembly,
dev::solidity::OptimiserSettings::full()
);
try
{
if (!stack.parseAndAnalyze("source", input) || !stack.parserResult()->code ||
!stack.parserResult()->analysisInfo)
if (
!stack.parseAndAnalyze("source", input) ||
!stack.parserResult()->code ||
!stack.parserResult()->analysisInfo
)
return 0;
}
catch (Exception const&)
+5 -1
View File
@@ -27,7 +27,11 @@ extern "C" int LLVMFuzzerTestOneInput(uint8_t const* _data, size_t _size)
return 0;
string input(reinterpret_cast<char const*>(_data), _size);
AssemblyStack stack(langutil::EVMVersion(), AssemblyStack::Language::StrictAssembly);
AssemblyStack stack(
langutil::EVMVersion(),
AssemblyStack::Language::StrictAssembly,
dev::solidity::OptimiserSettings::full()
);
if (!stack.parseAndAnalyze("source", input))
return 0;
+5 -1
View File
@@ -46,7 +46,11 @@ DEFINE_PROTO_FUZZER(Function const& _input)
}
// AssemblyStack entry point
AssemblyStack stack(langutil::EVMVersion(), AssemblyStack::Language::StrictAssembly);
AssemblyStack stack(
langutil::EVMVersion(),
AssemblyStack::Language::StrictAssembly,
dev::solidity::OptimiserSettings::full()
);
// Parse protobuf mutated YUL code
if (!stack.parseAndAnalyze("source", yul_source))
+5 -1
View File
@@ -52,7 +52,11 @@ DEFINE_PROTO_FUZZER(Function const& _input)
}
// AssemblyStack entry point
AssemblyStack stack(langutil::EVMVersion(), AssemblyStack::Language::StrictAssembly);
AssemblyStack stack(
langutil::EVMVersion(),
AssemblyStack::Language::StrictAssembly,
dev::solidity::OptimiserSettings::full()
);
try
{