Commit Graph

5947 Commits

Author SHA1 Message Date
Christian Parpart
3490577140 Extract import-file remapping logic out of CompilerStack into ImportRemapper. 2021-04-06 14:28:53 +02:00
Bhargava Shastry
6f3095a199
Merge pull request #11141 from ethereum/compilation-framework-fuzzer
Enable multi-source fuzzing.
2021-04-06 14:00:11 +02:00
Daniel Kirchner
6fc4b04d1d Update test expectations. 2021-04-06 13:41:26 +02:00
Daniel Kirchner
4b0f8383a6 Reuse function argument slots and defer allocation of return variable slots in EVMCodeTransform. 2021-04-06 13:38:05 +02:00
Daniel Kirchner
04a051d380 Add test cases for return slot allocation. 2021-04-06 13:31:22 +02:00
chriseth
98a8640928
Merge pull request #11203 from anurag-git/issue_10738-1
Use range-v3 loops (reverse, keys, values)
2021-04-01 12:19:40 +02:00
anurag4u80
bbcdddeed9 Replaced keys, values and reverse with ranges 2021-03-31 23:33:04 +05:30
Djordje Mijovic
aeba059192 Fixing auto update for macos. 2021-03-31 16:51:01 +02:00
Martin Blicha
330fb8f4d0 [SMTChecker] Assignment refactoring 2021-03-31 13:36:50 +02:00
Leonardo
78d94737a4
Merge pull request #11188 from blishko/issue-11181
[SMTChecker] Fix crash when analysing try-catch clauses with function call.
2021-03-31 11:24:36 +02:00
Mathias Baumann
e590a99f39 Detect circular references for library and free functions 2021-03-30 23:06:30 +02:00
chriseth
79d7466e19 NatSpec for errors. 2021-03-30 21:16:58 +02:00
chriseth
517cd17a6f Add errors to the ABI. 2021-03-30 21:16:58 +02:00
chriseth
e877e2bba7 Use all referenced errors. 2021-03-30 21:15:46 +02:00
chriseth
1057fd5355 Take revert statement into account in control flow graph. 2021-03-30 21:15:46 +02:00
chriseth
d5669696d5 Code generation for errors. 2021-03-30 21:15:46 +02:00
chriseth
fb67051467 Revert statement. 2021-03-30 21:15:46 +02:00
chriseth
b04b189959 Syntax for custom errors. 2021-03-30 21:15:18 +02:00
Martin Blicha
2d231f1859 [SMTChecker] Changed SMTEncoder::mergeVariables to work regardless which branch has been visited first 2021-03-30 20:35:44 +02:00
Leonardo Alt
ba97d6ac4e Add local vars to cex 2021-03-30 17:55:21 +02:00
Leonardo Alt
dbd067d6db Report out of bounds index access 2021-03-30 10:28:48 +02:00
chriseth
bb49bc5892
Merge pull request #10418 from ethereum/function-specializer
Function specializer
2021-03-29 15:48:01 +02:00
hrkrshnn
0100f48e05 FunctionSpecializer: skip specializing recursive functions
This avoids potential pathological behaviour, like in Ackermann function.
2021-03-29 11:02:31 +02:00
hrkrshnn
2c75d1dfe4 Isoltest gas update for FunctionSpecializer 2021-03-29 11:02:31 +02:00
hrkrshnn
09998ceb0c Tests for FunctionSpecializer 2021-03-29 11:02:18 +02:00
Bhargava Shastry
f3f1ccc34f Fix false positive caused by early termination due to nested expressions. 2021-03-26 13:35:57 +01:00
Đorđe Mijović
d75a132f33
Merge pull request #11166 from ethereum/cmdLineTestsDevVersionFix 2021-03-25 19:06:26 +01:00
Djordje Mijovic
08993a3282 Enabling running cmd line tests on currently unreleased version.
Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
2021-03-25 17:11:31 +01:00
Martin Blicha
85358dfe30 [SMTChecker] Do not create targets for contracts that cannot be deployed 2021-03-25 15:38:37 +01:00
Leonardo
7e1be52281
Merge pull request #11165 from blishko/smt-abi-no-args
[SMTChecker] Fix ICE on ABI functions with no arguments
2021-03-25 15:21:57 +01:00
Alex Beregszaszi
e071884bbf Show proper error for misusing the custom natspec tag 2021-03-25 12:45:37 +00:00
Martin Blicha
5293f05ee3 [SMTChecker] Fix ICE on ABI functions with no arguments 2021-03-25 13:28:29 +01:00
Alex Beregszaszi
7a7ff7af2f Add one more test for invalid custom tag 2021-03-25 12:24:18 +00:00
chriseth
6eac77aea2
Merge pull request #11107 from ethereum/extendedLowlevelInliner
Inline ordinary jumps to small blocks and jumps to terminating control flow.
2021-03-24 18:06:15 +01:00
Martin Blicha
98446782e2 [SMTChecker] Fix compound assignment to push 2021-03-24 14:54:13 +01:00
Leonardo
13d3b35141
Merge pull request #11116 from blishko/issue-10985
[SMTChecker] Handle InaccessibleDynamicType
2021-03-24 14:39:24 +01:00
hrkrshnn
4fbf5a3f12 Added few more tests for low level inliner. 2021-03-24 13:50:24 +01:00
Daniel Kirchner
8b3095920a Inline ordinary jumps to small blocks and jumps to terminating control flow. 2021-03-24 13:50:24 +01:00
Martin Blicha
852e877ae7 [SMTChecker] Handle InaccessibleDynamicType 2021-03-24 11:53:06 +01:00
Djordje Mijovic
d0a854b312 Adding semantic tests for bytes.concat. 2021-03-24 11:49:21 +01:00
Djordje Mijovic
e7da9f3d52 Adding syntax tests for bytes.concat. 2021-03-24 11:49:21 +01:00
chriseth
d15ba987d1 Fix AST output if modifier invocation is base constructor call. 2021-03-24 11:24:26 +01:00
Leonardo
70c1720903
Merge pull request #11129 from blishko/smt-ci-tests
Run SMTChecker tests for all EVM versions
2021-03-24 10:31:44 +01:00
chriseth
e3ea5c631e
Merge pull request #11136 from ethereum/refactor-typepointer
Replace `TypePointer` with `Type const*`
2021-03-23 18:32:38 +01:00
Bhargava Shastry
f9182e9f88 Minor changes to Solidity compilation framework fuzzer. 2021-03-23 13:17:41 +01:00
Martin Blicha
145a03bdd6 Run SMTChecker tests on all EVM versions 2021-03-23 12:51:52 +01:00
Mathias Baumann
e197ebbdd1 Replace TypePointer with Type const* 2021-03-23 11:47:19 +01:00
hrkrshnn
30e08ee3a5 Changelog and test for the KeccakCaching bug 2021-03-23 11:09:00 +01:00
Mathias Baumann
bccedf791b Add creationCode/runtimeCode contract creation detection to call graph 2021-03-22 15:44:23 +01:00
chriseth
baf2ff2a6e Proof. 2021-03-18 08:42:49 +01:00
chriseth
2c8540b1f9 Yul optimizer test updates. 2021-03-18 08:42:49 +01:00
chriseth
7aa51bcb40 Test updates. 2021-03-18 08:42:49 +01:00
Leonardo
25b31111df
Merge pull request #11040 from ethereum/smt_fix_virtual_one_more_time
[SMTChecker] Fix bug in virtual functions called by constructor
2021-03-17 16:54:36 +01:00
hrkrshnn
6d9e9e1b1e Fix small bug in GasMeter calculation in creation context
Old calculation did not ignore `optimize-runs` parameter, when creation code gas computations were
done. This would lead to expanding values such as `shl(180, 1)` inside constructor code, even for
the default value for `--optimize-runs`, i.e., 200.
2021-03-17 12:33:10 +01:00
Harikrishnan Mulackal
35da404ca9
Merge pull request #11091 from ethereum/modifierInvocationAST
Add "kind" field to ModifierInvocation AST json element.
2021-03-16 19:44:40 +01:00
chriseth
0519473059 Add "kind" field to ModifierInvocation AST json element. 2021-03-16 18:50:37 +01:00
Martin Blicha
432944d0b4 [SMTChecker] Small refactoring of defining SMT expressions for structs/tuples 2021-03-16 15:34:43 +01:00
Alex Beregszaszi
7fd1a3132d
Merge pull request #11098 from ethereum/isoltest-yes
isoltest: add --accept-updates option
2021-03-15 19:10:02 +00:00
Kamil Śliwak
5376a3deb6
Merge pull request #10879 from ethereum/silence-remaining-shellcheck-warnings-and-remove-ignore-list
Silence remaining shellcheck warnings and remove ignore list
2021-03-15 19:58:42 +01:00
Alex Beregszaszi
1c176cc1ee isoltest: add --accept-updates option 2021-03-15 14:31:01 +00:00
Martin Blicha
2f52affcc2 [SMTChecker] Correctly resolve current scope contract in VariableUsage. 2021-03-15 13:55:14 +01:00
Kamil Śliwak
8e44b59251 Disable shellcheck in the remaining situations where it's either wrong or the problem is not worth fixing 2021-03-15 12:16:43 +01:00
Kamil Śliwak
7929175db6 Add shellcheck source directive in places where it can't find sourced files on its own 2021-03-15 12:16:43 +01:00
Martin Blicha
6aa6c5f5f9 [SMTChecker] Reset reference variables on assignment to a variable of reference type 2021-03-12 19:51:31 +01:00
Leonardo Alt
998346e599 Fix bug in virtual functions called by constructor. 2021-03-12 16:42:28 +01:00
Martin Blicha
0cb75293f9 [SMTChecker] fix handling of assignments of array/mapping state variable accessed using contract name 2021-03-12 14:01:07 +01:00
Daniel Kirchner
1265b39904
Merge pull request #11095 from ethereum/fixGcc8
Fix compilation error with GCC 8.
2021-03-12 13:25:25 +01:00
Daniel Kirchner
6d19a25705 Fix compilation error with GCC 8. 2021-03-12 12:28:18 +01:00
Bhargava Shastry
788eb02825 EVMHost: Use std::map for storage so that slots are stored in some order. 2021-03-12 09:39:15 +01:00
Leonardo Alt
6fd76e830d Fix CHC cex order 2021-03-11 10:36:40 +01:00
Bhargava Shastry
a30b071a5d Update test/EVMHost.cpp
Co-authored-by: Daniel Kirchner <daniel@ekpyron.org>
2021-03-10 18:10:20 +01:00
Bhargava Shastry
8023fdb537 Extract state printing to a separate class. 2021-03-10 17:41:03 +01:00
Bhargava Shastry
24f42c5541 Filter false positives due to EVM errors.
Co-authored-by: Daniel Kirchner <daniel@ekpyron.org>
2021-03-10 17:41:03 +01:00
Bhargava Shastry
34c08ea2c6 EVMHost: Add tracing features needed for fuzzing. 2021-03-10 17:41:03 +01:00
chriseth
89946b15d2
Merge pull request #10863 from ethereum/isoltestGasCosts
[isoltest] Add gas costs to function call expectations
2021-03-10 15:11:20 +01:00
Djordje Mijovic
b73e9f3eef Update tests. 2021-03-10 14:22:30 +01:00
Djordje Mijovic
63017bd510 Not showing gas used if it is equal to m_gas(in case of out of gas failures). 2021-03-10 14:22:30 +01:00
Djordje Mijovic
06171a3100 Changing enforceGasCost functionality. 2021-03-10 14:22:26 +01:00
Djordje Mijovic
2b14efbbcc Adding debug info on gas costs when updating gas values.
Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
2021-03-09 21:48:11 +01:00
Djordje Mijovic
14a3731182 Don't run gas for ir if it is not explicitely added to expectations. 2021-03-09 21:27:44 +01:00
Djordje Mijovic
2c575db0ea Show both expected and obtained gas expectations when failure happens. 2021-03-09 21:27:38 +01:00
Djordje Mijovic
12ef273d06 Setting metadata has and version type for semantic tests to be empty. 2021-03-09 21:26:45 +01:00
Djordje Mijovic
cf59d7fc13 Making order of gas expectations deterministic. 2021-03-09 21:26:45 +01:00
Djordje Mijovic
aed3832b27 Implementing enforcing gas expectations in isoltest.
Co-authored-by: Daniel Kirchner <daniel@ekpyron.org>
2021-03-09 21:26:45 +01:00
Djordje Mijovic
515f15f7a3 Small style fix for SemanticTest constructor. 2021-03-09 21:26:45 +01:00
Djordje Mijovic
5ea97a5d43 Running gas tests only on tests having expectations. 2021-03-09 21:26:45 +01:00
Djordje Mijovic
6d51dfb617 [isoltest] Adding gas used as semantic tests expectation. 2021-03-09 21:26:36 +01:00
Martin Blicha
4285c2803b [SMTChecker] Fix ICE on array.pop nested inside 1-tuple 2021-03-09 20:00:51 +01:00
chriseth
ad5d34df74
Merge pull request #11071 from ethereum/fixCRInSourceRefFor
Fix handling of carriage return.
2021-03-09 17:52:34 +01:00
Leonardo
5677df86af
Merge pull request #11069 from blishko/smt-array-slice-fix
[SMTChecker] Use same sort name for array slice as for the underlying array
2021-03-09 16:39:12 +01:00
Daniel Kirchner
a75424eec4 Drop support for evm15 and eip-615. 2021-03-09 15:56:03 +01:00
chriseth
5c2cd8d553
Merge pull request #11073 from ethereum/extractStackReuseTests
Extract StackReuseCodegen tests.
2021-03-09 15:52:23 +01:00
Daniel Kirchner
e99da7e015 Extract StackReuseCodegen tests. 2021-03-09 15:47:24 +01:00
chriseth
eb85a4414c Fix handling of carriage return. 2021-03-09 15:33:12 +01:00
chriseth
40c27ccc22 Move AND with constant inside OR. 2021-03-09 15:26:19 +01:00
Martin Blicha
5af01f6896 [SMTChecker] Use same sort name for array slice as for the underlying array. 2021-03-09 11:06:22 +01:00
Martin Blicha
385a664f3c [SMTChecker] Fix public getter for array of structs. 2021-03-08 17:34:20 +01:00
Kamil Śliwak
093ea4612b
Merge pull request #10586 from ethereum/shellcheck-fixes-part1
Fixes for shellcheck warnings, part 1
2021-03-05 17:13:46 +01:00
Daniel Kirchner
acd3084076 Fuzzer for stack optimiser/code generator. 2021-03-04 17:35:56 +01:00
Bhargava Shastry
ca267e50d3
Merge pull request #11053 from ethereum/protoConverter-opcode-filter-flag
Proto yul converter: Provide a flag to filter stateful instructions.
2021-03-04 17:31:52 +01:00
Kamil Śliwak
c8fc241be5 Avoid using $? in conditions and do && exit 1 instead if ! 2021-03-04 16:57:25 +01:00
Kamil Śliwak
e8a70e8e4b Prefix globs with ./ or use -- to make commands safe with files named like command-line options 2021-03-04 16:57:25 +01:00
Kamil Śliwak
a05f3a608d Don't use $ on variables inside (()) 2021-03-04 16:53:05 +01:00
Kamil Śliwak
2784135c37 Use read with the -r option 2021-03-04 16:53:05 +01:00
Kamil Śliwak
75b87d159d Declare variables separately when assigning the result of $() 2021-03-04 16:53:05 +01:00
Kamil Śliwak
4c186321c8 Replace some older shell syntax with newer and/or more reliable equivalents 2021-03-04 16:53:05 +01:00
Leonardo
d42d0faf41
Merge pull request #11052 from blishko/issue-10986
[SMTChecker] Correct handling of FixedBytes constants initialized with string literal
2021-03-04 16:51:22 +01:00
Bhargava Shastry
a34308e4cb Proto yul converter: Provide a flag to filter stateful instructions. 2021-03-04 15:20:19 +01:00
Martin Blicha
0340510c53 [SMTChecker] correct handling of FixedBytes constants initialized with string literal 2021-03-04 15:14:47 +01:00
Alexander Arlt
94895822d2 [isoltest] Add support for builtin functions. 2021-03-04 08:49:59 -05:00
Martin Blicha
9e81c81560 [SMTChecker] updated tests 2021-03-03 17:11:42 +01:00
chriseth
d2023f5f95 Check for invalid tags. 2021-03-02 16:53:31 +01:00
chriseth
5690020d88 Allow custom natspec tags. 2021-03-02 16:13:28 +01:00
chriseth
2a25d04896
Merge pull request #11023 from ethereum/natspecparsinglocations
Provide locations for docstring parsing errors.
2021-03-02 14:03:42 +01:00
chriseth
ce5c5970d6
Merge pull request #11015 from ethereum/fixSelectorForInternal
[Sol->Yul] Provide selector for some internal functions.
2021-03-02 12:24:53 +01:00
Bhargava Shastry
e96a3e01f8 EVMHost: Add function to print storage at all addresses in the host. 2021-03-01 20:00:55 +01:00
Bhargava Shastry
069ac9c9a9
Merge pull request #10878 from ethereum/refactor-solProtoFuzzer
Fuzzer: Refactor utility methods shared by proto fuzzers.
2021-03-01 19:56:10 +01:00
chriseth
f4050e81c6 Provide locations for docstring parsing errors. 2021-03-01 17:34:25 +01:00
chriseth
5e94fce7df Provide selector for some internal functions. 2021-03-01 16:19:59 +01:00
Kamil Śliwak
186d14d97f FunctionCallGraph: Tests for constants, immutables and accessing function selectors 2021-02-25 16:00:53 +01:00
chriseth
eacf7c1cf9
Merge pull request #11009 from ethereum/properlyParseAddressMember
Properly parse address member.
2021-02-24 17:12:00 +01:00
chriseth
3d97e9a77b Properly parse address member. 2021-02-24 16:44:16 +01:00
chriseth
5e9637bc39 Mapping access with multi-slot keys. 2021-02-24 13:44:23 +01:00
chriseth
2d48052ae5
Merge pull request #11003 from ethereum/ir-bug-incorrect-return-variable-count
Fix IR bug on deleting storage variables of function type.
2021-02-24 13:24:31 +01:00
hrkrshnn
2c2c7a4473 Fix IR bug on deleting storage variables of function type.
Calling the zeroing function assumed that the stack slots needed for the type was always 1. This is
false for function types.
2021-02-24 12:43:33 +01:00
Kamil Śliwak
e87cd0afdf Check that there is an interface type before querying validity of location. 2021-02-24 11:22:40 +01:00
Harikrishnan Mulackal
58e0977647
Merge pull request #10994 from ethereum/remove-remains-of-ast-json-option
Remove the last remains of --ast-json option
2021-02-24 10:21:30 +01:00
chriseth
1220d8df7b
Merge pull request #10998 from ethereum/clean-up-function-external-type-tests
Minor cleanup in syntax tests for function types
2021-02-23 17:59:26 +01:00
chriseth
e33c058a60
Merge pull request #10896 from ethereum/issue-10870
Fix issue with pop on storage array.
2021-02-23 17:49:17 +01:00
hrkrshnn
66d6d20f65 Converted hash collision error into a fatal type error.
The check is performed during ContractLevelChecker. However, the TypeChecker throws in certain cases
when it encounters functions, whose hashes collide.
2021-02-23 17:09:40 +01:00
Kamil Śliwak
cf2847afc4 Remove duplicate syntax tests for functions taking internal struct types 2021-02-23 16:46:49 +01:00
Kamil Śliwak
fc7a091bfb Move several tests related to function types from nameAndTypeResolution/ to more specific directories 2021-02-23 16:46:49 +01:00
chriseth
596e8dd9b6
Merge pull request #10959 from ethereum/assert-too-strict
Loosened up a really strict assert from ABIFunctions.cpp
2021-02-23 14:59:14 +01:00
chriseth
02b27bdc64
Merge pull request #10976 from ethereum/fix-boost-filesystem-bug
Tests: Do not remove filename from boost filesystem path for corner cases
2021-02-23 14:43:55 +01:00
Alexander Arlt
ae6996efc1 Fix issue with pop on storage array. 2021-02-23 14:26:55 +01:00
chriseth
3dcba53595
Merge pull request #10993 from ethereum/fixModuleMemberNames
Fix module member names for importing with renaming.
2021-02-23 14:20:28 +01:00
chriseth
7d0ecd9406
Merge pull request #10535 from ethereum/removeNumbers
Improve generated names.
2021-02-23 13:29:18 +01:00
Harikrishnan Mulackal
148e1150f2
Merge pull request #10992 from ethereum/detectAssignToFunction
Detect assignment to function in inline assembly.
2021-02-23 13:26:45 +01:00
chriseth
d586b7b57a
Merge pull request #10991 from ethereum/bareCallNoReturndatacopy
[Sol->Yul] Fix bare call wihout returndatacopy.
2021-02-23 13:24:50 +01:00
chriseth
c91cffa4ec Fix module member names for importing with renaming. 2021-02-23 13:15:32 +01:00
Kamil Śliwak
01f8005d04 Remove the last remains of --ast-json option 2021-02-23 12:39:19 +01:00
Bhargava Shastry
c9f1b55073
Merge pull request #10967 from ethereum/proto-mutator
Proto mutator: Add control flow to basic blocks
2021-02-23 12:03:52 +01:00
chriseth
9c7b1e9c3f Detect assignment to function in inline assembly. 2021-02-23 11:47:12 +01:00
Kamil Śliwak
54eb34d6fd Move call graphs from CompilerStack to ContractDefinitionAnnotation 2021-02-23 10:47:02 +01:00
Kamil Śliwak
6c28120f19 Move CallGraph structure to a separate module 2021-02-23 10:47:02 +01:00
Kamil Śliwak
051995a373 Test suite for FunctionCallGraph 2021-02-23 10:46:28 +01:00
chriseth
e9b3dd21d0 Fix bare call wihout returndatacopy. 2021-02-23 10:45:01 +01:00
chriseth
e75e3fc2e3
Merge pull request #10977 from ethereum/replace-throw-with-boost-macro
Replace raw throw with BOOST_THROW_EXCEPTION.
2021-02-22 16:18:13 +01:00
Bhargava Shastry
758d159d87 yul proto mutator: Add control flow to block statements. 2021-02-22 15:10:41 +01:00
Bhargava Shastry
1ddfc7463a Tests: Do not remove filename from boost filesystem path for corner
cases.

Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
2021-02-22 10:32:41 +01:00