Commit Graph

431 Commits

Author SHA1 Message Date
Alexander Arlt
90bb1d8a7c Apply modernize-use-emplace. 2020-04-02 17:35:48 -05:00
Bhargava Shastry
9544df34d7 solc fuzzers: Use compiler stack for fuzzing 2020-03-20 10:50:26 +01:00
a3d4
f4d9f6772f Unified use of settings. Removed a couple of unused functions. 2020-03-19 14:02:39 +01:00
a3d4
66783c30ce Introduced TestCaseReader. 2020-03-16 23:14:33 +01:00
chriseth
8d2a9bf773
Merge pull request #8458 from a3d4/partfix-8244-introduced-testcase-shouldrun
Partial Fix #8244: Introduced TestCase::shouldRun().
2020-03-09 18:35:12 +01:00
Leonardo
3896aa75cc
Merge pull request #8426 from ethereum/fix-7948
ossfuzz: Update README.md with steps to build fuzzers via docker
2020-03-09 16:41:10 +01:00
a3d4
29b770c434 Introduced TestCase::shouldRun(). 2020-03-09 15:52:20 +01:00
Bhargava Shastry
2153a1ef1d Update test/tools/ossfuzz/README.md
Address review comments
2020-03-09 10:38:19 +01:00
Bhargava Shastry
7483c6f13e ossfuzz: Update README.md with steps to build fuzzers via docker 2020-03-05 10:43:31 +01:00
Bhargava Shastry
ed02aae1d9 Update solidity fuzzing dictionary with >0.6.0 keywords 2020-02-28 15:46:21 +01:00
Bhargava Shastry
79f1917422 yul proto fuzzer: Refactor dataoffset/size specification 2020-02-11 13:58:36 +05:30
Bhargava Shastry
59e7206c8f yul proto fuzzer: Support boolean literal generation 2020-02-10 20:48:29 +05:30
chriseth
5de3379d82
Merge pull request #8238 from ethereum/yul-syntax-tests
Implement yul syntax tests
2020-02-05 15:15:41 +01:00
Mathias Baumann
fc10e701fc Implement yul syntax tests 2020-02-05 14:58:34 +01:00
chriseth
48933df18d Add some missing wasm functions. 2020-02-04 22:44:08 +01:00
chriseth
a7624ffc45 Implement i32 builtins for the interpreter. 2020-02-04 22:44:08 +01:00
cameel
5fbc4d4afa [yulopti] Automate printing of the usage banner
- This now displays internal step names rather than human-readable ones but the internal ones are readable enough and it's not something worth creating another map.
- Options in the banner are now aligned in columns and thus easier to read.
2020-02-03 12:22:47 +01:00
cameel
4129c27495 [yulopti] Replace hard-coded step list with OptimiserSuite's maps 2020-02-03 12:22:47 +01:00
chriseth
2afcfec77b
Merge pull request #8220 from ethereum/remove-var-name-cleaner-from-optimiser-suite-step-list
Remove var name cleaner from optimiser suite step list
2020-01-30 17:58:43 +01:00
cameel
ed5210490d [yulopti] Run disambiguator after VarNameCleaner
- This is a trivial change and it makes it safe to use in combination with other step.
2020-01-30 17:35:27 +01:00
chriseth
fbe5bb0cce Parse default dialect and omit when printing. 2020-01-29 17:25:25 +01:00
chriseth
457cdecf6f
Merge pull request #8135 from ethereum/fix-get-options-7112
TestFramework: Merge Options.h into Common.h
2020-01-29 16:05:55 +01:00
Mathias Baumann
00e4d13975 TestFramework: Merge Options.h into Common.h 2020-01-29 12:27:05 +01:00
Bhargava Shastry
8cbe1d4b1d yul proto fuzzer: Make function call generation optional 2020-01-24 12:31:43 +05:30
Bhargava Shastry
a335fed189 yul proto fuzzer: Add EVM version field 2020-01-24 12:31:20 +05:30
Bhargava Shastry
9befb4bdf0 yul proto fuzzer: Do not generate infinite for loops and limit total
number of for loops per test program to two
2020-01-20 16:27:01 +05:30
cameel
bf5e62931d fixup! [yulopti] Fix typo: (f)flatten -> (f)latten 2020-01-17 12:38:45 +01:00
cameel
49ca1f8534 [yulopti] Add missing ConditionalUnsimplifier to the list of available optimizations 2020-01-17 08:01:39 +01:00
cameel
4262eebdc4 [yulopti] Fix typo: (f)flatten -> (f)latten 2020-01-17 08:01:31 +01:00
Alex Beregszaszi
3c88d295b3 Remove FixedHash(unsigned) constructor 2020-01-16 16:18:08 +00:00
chriseth
9d9a7ebe25
Merge pull request #7765 from ethereum/fix-7626
yul proto fuzzer: permit variable declarations inside for-init block
2020-01-15 11:21:23 +01:00
Christian Parpart
abb9f1eed7 CMake: Renaming devcore static library to solutil (to match source code paths) 2020-01-13 15:52:46 +01:00
Bhargava Shastry
49a05b5935 Permit variable declarations inside for init block 2020-01-13 16:17:33 +05:30
Daniel Kirchner
61652366ab Fix indentation 2020-01-08 10:42:19 +01:00
Daniel Kirchner
be0775da49
Merge pull request #8075 from ethereum/refactor-namespaces
Refactor namespaces
2020-01-07 16:52:20 +01:00
Mathias L. Baumann
a2141d3be2
Merge pull request #7869 from fulldecent/fix-kill
Reduce usage of word kill
2020-01-07 16:01:04 +01:00
Christian Parpart
345f9928ab Library libdevcore renamed to libsolutil. 2020-01-07 15:51:50 +01:00
Christian Parpart
ed45b000d1 Adapt tests directory to C++ namespace changes. 2020-01-07 15:51:50 +01:00
Christian Parpart
6b23412fae C++ namespace cleanup (except tests). 2020-01-07 15:51:50 +01:00
William Entriken
6d068b6331 Reduce usage of the word "kill" 2020-01-07 11:18:10 +01:00
Bhargava Shastry
49aec64caf abiv2 proto converter: Do not resize dynamic storage arrays by writing to the length field as it is now read only 2020-01-06 17:44:42 +01:00
Alex Beregszaszi
9c27e98b83 Rename EWasmBuiltinInterpreter to EwasmBuiltinInterpreter 2019-12-19 11:36:08 +00:00
Alex Beregszaszi
47a8e5fbd1 Fix getExternalCodeSize in the Yul Ewasm interpreter 2019-12-18 22:54:34 +00:00
rodiazet
d867f5339b [WASM] add i64.clz and i64.store8 to Wasm dialect and EWasm interpreter.
dsads
2019-12-18 19:51:27 +01:00
Alex Beregszaszi
7effc94f24 Rename EVMToEWasmTranslator to EVMToEwasmTranslator 2019-12-18 16:57:45 +00:00
Alex Beregszaszi
b3caf35e88 Change writeU256/writeU128/writeAddress not to return anything in Yul Ewasm interpreter 2019-12-18 14:58:28 +00:00
Alex Beregszaszi
9f1e8086bb Fix returning code size in Yul Ewasm interpreter 2019-12-18 14:58:28 +00:00
Alex Beregszaszi
7d60cc1729 Fix tracing LOG instruction in the Yul Ewasm interpreter 2019-12-18 13:35:05 +00:00
Alex Beregszaszi
2a808e4f32 Add trace for unreachable in Yul Ewasm translation tests 2019-12-15 13:28:38 +00:00
Bhargava Shastry
f5bd483dfa yul proto fuzzer: Target default evm version 2019-12-11 16:52:00 +01:00
Christian Parpart
8682af2216 libsolc: Overhauls memory management. 2019-12-11 15:17:39 +00:00
chriseth
f6916a637e Merge remote-tracking branch 'origin/develop' into develop_060 2019-12-09 17:16:58 +01:00
Leonardo Alt
225041738e Add SMTCheckerTest for isoltest 2019-12-09 15:32:08 +01:00
chriseth
f7fc42d8c3
Merge pull request #7826 from ethereum/develop
Merge develop into develop_060
2019-11-28 13:37:19 +01:00
chriseth
301215f186
Merge pull request #7461 from sifmelcara/licm
[YulOpt] Implement loop-invariant code motion
2019-11-28 12:00:19 +01:00
mingchuan
db60d123d0 [YulOpt] Implement loop-invariant code motion 2019-11-28 11:59:29 +01:00
chriseth
1ebcc757e1 Merge remote-tracking branch 'origin/develop' into develop_060 2019-11-27 19:14:08 +01:00
Paweł Bylica
38a20190f4
test: Use evmc::VM directly
The evmc::VM works as a RAII wrapper similarly to unique_ptr, so there is no point in using additional unique_ptr.
2019-11-27 18:53:02 +01:00
Bhargava Shastry
ea9e849ee4 Use pointer to string for efficiency 2019-11-26 17:12:56 +01:00
Bhargava Shastry
41bdc9b673 yul proto fuzzer: Generalize variable references 2019-11-26 17:12:56 +01:00
chriseth
b0db64ff5b Merge remote-tracking branch 'origin/develop' into develop_060 2019-11-26 16:19:35 +01:00
chriseth
d4d0df021d EWasm translation tests. 2019-11-26 15:46:33 +01:00
chriseth
6625f634fc Wasm Interpreter 2019-11-26 15:46:33 +01:00
Alex Beregszaszi
eedfafbbc4 Introduce callback context in libsolc 2019-11-22 11:42:39 +00:00
chriseth
a00f824479
Merge pull request #7773 from ethereum/develop
Merge develop into develop_060
2019-11-21 21:49:22 +01:00
chriseth
a26dd5a428 Remove trailing spaces in output. 2019-11-21 20:09:03 +01:00
Leonardo Alt
389da5228e Merge remote-tracking branch 'origin/develop' into merge_develop_060 2019-11-20 12:27:40 +01:00
chriseth
5deaac0849
Merge pull request #7740 from ethereum/istanbul
Enable support for Istanbul
2019-11-20 10:49:27 +01:00
chriseth
32f321e416
Merge pull request #7751 from ethereum/replace_boost_variant_std
Replace boost::variant by std::variant in libyul
2019-11-19 19:40:39 +01:00
Leonardo Alt
be849b3c47 Replace boost::variant by std::variant in libyul 2019-11-19 17:23:18 +01:00
Alex Beregszaszi
71a310a2ea Run fuzzer for istanbul 2019-11-19 17:09:18 +01:00
Erik K
94272d44aa
Merge pull request #7745 from ethereum/develop
Merge develop into develop_060
2019-11-19 15:30:31 +01:00
Alex Beregszaszi
1432f0ad28 Adapt EVMHost for EVMC7 2019-11-19 12:21:03 +01:00
Bhargava Shastry
62ae015552 docker: Add versioning and edit naming scheme 2019-11-18 15:16:53 +01:00
Bhargava Shastry
a8a50c4e0e Upgrade evmone to v0.2.0 and adapt fuzzer build 2019-11-18 15:16:53 +01:00
Bhargava Shastry
505b5deaf9 Add chainid and selfbalance opcodes to yul proto converter and enable it
in the yul proto differential fuzzer.
2019-11-18 09:26:00 +01:00
chriseth
2e5a42836c
Merge pull request #7681 from ethereum/develop
Merge develop into develop_060
2019-11-11 16:42:03 +01:00
Christian Parpart
f15d47f165 Yul: Remove obsoleted FunctionalInstruction. 2019-11-11 16:04:39 +01:00
Bhargava Shastry
9772cc44a0 abiv2 proto fuzzer: Fuzz return data coding 2019-11-06 23:42:10 +01:00
chriseth
46ac16d25c Merge remote-tracking branch 'origin/develop' into develop_060 2019-11-04 19:09:11 +01:00
Bhargava Shastry
6a55949c04 yul proto fuzzer: Increase step limit upper bound for optimized code 2019-11-04 18:38:56 +01:00
Bhargava Shastry
04becb9458 Minor refactoring 2019-11-04 15:47:04 +01:00
Bhargava Shastry
12ed08eddb Place upper bound number on number of array dimensions 2019-11-04 15:47:04 +01:00
Bhargava Shastry
3cfeca33c1 Abiv2 proto fuzzer: Refactor and add support for structs 2019-11-04 15:47:04 +01:00
chriseth
08cf616157
Merge pull request #7609 from ethereum/fix-7608
yul proto fuzzer: Catch exception early and propagate termination reason
2019-11-04 13:29:50 +01:00
chriseth
5d6e983be3 Conditional simplifier. 2019-11-01 14:01:56 +01:00
Bhargava Shastry
e4ba1c02e8 yul proto fuzzer: Catch exception early and propagate termination reason to harness 2019-11-01 12:26:35 +01:00
Bhargava Shastry
edc5059208 yul proto: Add leave statement 2019-11-01 11:18:05 +01:00
chriseth
42b8c98567 Merge remote-tracking branch 'origin/develop' into develop_060 2019-10-31 18:03:25 +01:00
chriseth
ceb8ee9124 [Yul] leave statement. 2019-10-29 14:32:16 +01:00
chriseth
5d906cd58d
Merge pull request #7568 from ethereum/fixtest
Fix failing tests on ArchLinux and potentially MacOS
2019-10-29 12:37:51 +01:00
Mathias Baumann
b3a5c9c9c0 Fix failing tests on ArchLinux and potentially MacOS 2019-10-29 12:02:50 +01:00
chriseth
edf1e83fda Merge remote-tracking branch 'origin/develop' into develop_060 2019-10-28 15:21:49 +01:00
chriseth
81e2d1ed14
Merge pull request #7528 from ethereum/fix-7434
yul interpreter: Initialize calldata with random data
2019-10-28 12:39:27 +01:00
Christian Parpart
df729b3084 Make use of C++17 std::optional<> instead of boost::optional<>. 2019-10-28 11:39:30 +01:00
Christian Parpart
3c1d12b16c Assembly: Remove errorTypeForLoose property from AsmAnalyzer. 2019-10-25 15:01:26 +02:00
Bhargava Shastry
128c3c7cf6 yul interpreter: Initialize calldata with random data 2019-10-21 10:37:35 +02:00
chriseth
9ce1ca2340 Refactor Optimiser Steps Interface. 2019-09-24 14:52:01 +02:00
chriseth
5a950908b6
Merge pull request #7432 from ethereum/fix-ossfuzz-build
ossfuzz: Create a separate cmake toolchain file for ossfuzz
2019-09-17 15:24:50 +02:00
Bhargava Shastry
9b31d72f43 solc fuzzer: Use randomly chosen evm version 2019-09-17 13:43:22 +02:00
chriseth
7a79742f3d Out of body again. 2019-09-17 12:30:15 +02:00
Bhargava Shastry
48da5f07a5 ossfuzz: Create a separate cmake toolchain file for ossfuzz so that multiple fuzzing backends may be used 2019-09-16 18:35:15 +02:00
Bhargava Shastry
403fb7d88c Update logic to track dynamically encoded parameters 2019-09-16 14:25:37 +02:00
chriseth
192946c1ba
Merge pull request #7413 from ethereum/ossfuzz-link-correctly
Link ossfuzz targets with -fsanitize=fuzzer instead of libFuzzingEngine
2019-09-12 20:22:53 +02:00
Bhargava Shastry
a7c987d931 Link ossfuzz targets with -fsanitize=fuzzer instead of libFuzzingEngine supplied by docker image 2019-09-12 11:26:05 +02:00
chriseth
4f80117eef Use builtin iszero for for loop condition rewriting. 2019-09-12 10:26:16 +02:00
chriseth
fcfe829534 Introduce LiteralRematerializer and thus simplify StructuralSimplifier. 2019-09-11 19:50:24 +02:00
chriseth
a064e0fc97
Merge pull request #7236 from ethereum/proto-add-object-access
Experimental support for object access builtins
2019-09-11 18:28:10 +02:00
chriseth
e9346ca38a
Merge pull request #7400 from ethereum/evmoneSearch
Fix evmone filename for auto-discovery for windows and macos.
2019-09-11 17:55:12 +02:00
Daniel Kirchner
2535091168 Replace preprocessor macros with constexpr expressions. 2019-09-11 13:03:05 +02:00
Christian Parpart
ccdca32f39 isoltest: Fixes matching tests on platforms that don't use forward slahes as path separators. 2019-09-11 12:53:20 +02:00
Flash Sheridan
733d40ddb5 Fix evmone filename for auto-discovery for windows and macos. 2019-09-11 12:28:05 +02:00
Bhargava Shastry
34022a2c8c Pseudo-randomly choose object/data identifier that is in scope 2019-09-11 10:57:54 +02:00
Bhargava Shastry
d677a15507 Add object access builtin functions 2019-09-11 10:57:54 +02:00
Dimitry
fd3ae0b24a add chainid and selfbalance to lllc 2019-09-09 23:35:36 +03:00
Bhargava Shastry
e349fb1ce1 Abiv2 proto fuzzer: Crop at least 32 bytes if last dynamically encoded parameter is right padded 2019-09-09 10:07:30 +02:00
chriseth
7f797bc6ae
Merge pull request #7342 from ethereum/extendedMemorySizeInterpreter
Make memory addresses wrap in interpreter.
2019-09-05 13:14:57 +02:00
Bhargava Shastry
137a898eca Yul proto fuzzer: Fix typo in low level call 2019-09-04 21:14:26 +02:00
chriseth
5b4b4011c7 Extend memory beyond 32 byte addresses in interpreter. 2019-09-04 20:10:42 +02:00
Bhargava Shastry
c889e6e015 Yul proto fuzzer: Add create and call opcodes 2019-09-04 19:13:40 +02:00
Bhargava Shastry
6b27ef8fcb Yul proto fuzzer: Additional blockchain opcodes 2019-09-04 19:13:40 +02:00
Bhargava Shastry
fce65ec811 Randomize calldataload and storage slots and use dictionary tokens as function argument 2019-09-04 09:54:57 +02:00
Bhargava Shastry
d066ba71a4 Force call of every valid func declaration 2019-09-04 09:54:57 +02:00
Bhargava Shastry
4837ef4ada Yul proto fuzzer: Make function definition a statement 2019-09-04 09:54:36 +02:00
Leonardo Alt
d131784714 Add Load Resolver to Yulopti 2019-09-03 15:51:33 +02:00
chriseth
6e4e54cbc6
Merge pull request #7309 from ethereum/yulproto-refactor
Yul proto fuzzer: Do not shadow variables
2019-09-03 12:29:13 +02:00
chriseth
029941a168
Merge pull request #7251 from ethereum/sideEffectsForUserDefinedFunctions
Side effects for user defined functions
2019-09-03 12:10:56 +02:00
Bhargava Shastry
6427ec661a Yul interpreter: Out of bounds mloads return zero 2019-09-03 09:51:15 +02:00
chriseth
127bcfc69d Take user function side-effects into account for unused pruner. 2019-09-02 17:41:51 +02:00
chriseth
1c5845e3f2 Side-effects of user-defined functions. 2019-09-02 17:41:51 +02:00
Bhargava Shastry
bcf0c1810c Yul proto fuzzer: Do not reuse variable names 2019-09-02 15:23:10 +02:00
chriseth
9a6357ab09
Merge pull request #7188 from ethereum/abiv2-use-bytes-string-longer-than-32-bytes
Abiv2 use bytes string longer than 32 bytes
2019-09-02 15:05:43 +02:00
chriseth
bdf29277a2 Change interpreter memory to be non-contiguous. 2019-09-02 13:51:47 +02:00
Bhargava Shastry
46a133e848 Generate bytes and string literals that are longer than 32 bytes 2019-09-02 12:43:47 +02:00
Bhargava Shastry
3963d0ca02 Create bytes/string values of shorter than 32 bytes and adjust invalid encoding length accordingly 2019-09-02 11:30:38 +02:00
chriseth
01e0a12c3b Fix handling of scopes in Yul Interpreter. 2019-09-02 10:41:26 +02:00
Bhargava Shastry
922790730c Do not create duplicate case statements 2019-08-26 12:44:06 +02:00
Bhargava Shastry
86c981d9fa proto fuzzer: Use a yul optimizer dictionary 2019-08-26 12:44:06 +02:00
chriseth
3c4f558242 Tests 2019-08-15 16:30:05 +02:00
Mathias Baumann
ccfcee5b80 YulInterpreter: Fix wrong context passed to called function 2019-08-12 17:12:53 +02:00
chriseth
f3f3cac864 Fix for ossfuzz. 2019-08-08 17:35:46 +02:00
chriseth
c4638cc5cb Remove mention of IPC. 2019-08-08 17:35:46 +02:00
chriseth
ac43c3bd18 Construct VM with path. 2019-08-08 17:35:46 +02:00
chriseth
f692cec11d Provide path to libevmone. 2019-08-08 17:35:46 +02:00
chriseth
3dec3af638 Use evmone for testing. 2019-08-08 17:35:44 +02:00
Bhargava Shastry
2f815c5c35 While compiling abiv2 proto generated solidity test program, silently ignore stack too deep errors (exception), throw exception otherwise. 2019-08-06 11:06:09 +02:00
Bhargava Shastry
bf16f2f75e Test low level calls with correct and incorrect encodings 2019-08-06 09:43:55 +02:00
Bhargava Shastry
e018d62a67 Dynamically sized array dimensions can be zero sized 2019-08-01 16:33:57 +02:00
Bhargava Shastry
90d421352a Add bool type and array of bool and dynamic byte types 2019-07-17 14:24:43 +02:00
Bhargava Shastry
00bca77cca Updated evmc to version tracked by evmone v0.1.0 2019-07-17 14:24:27 +02:00