Commit Graph

49 Commits

Author SHA1 Message Date
hrkrshnn
41ce3feb0a test: some tests for push0
1. `push0_disallowed.yul`: checks if `push0()` is a valid builtin in strict Yul
2. `push0_disallowed.sol`: checks if `push0()` is a valid builtin in inline assembly
3. `push0.sol`: simple semantic test that returns 0
4. `evmone_support.sol`: tests if push0 works properly in evmone
5. Updated some bytecode too large tests to use `shanghai` as version
6. Updated various tests where `push1 0` was hardcoded in different forms / expectations on bytecode
size (`Assembler.cpp`, `GasCosts.cpp`, `SolidityCompiler.cpp`, `SolidityExpressionCompiler.cpp`)
2023-04-12 00:10:24 +02:00
Bhargava Shastry
5c6e12b2c0 Update existing and add new test cases. 2023-02-02 11:40:39 +01:00
Bhargava Shastry
f8880cad82 Yul grammar generator: Bound memory accesses. 2023-02-02 08:10:53 +01:00
Rodrigo Q. Saramago
ef6ff2f055
Adds support for the EVM version "Paris".
Deprecates `block.difficulty` and disallow `difficulty()` in inline assembly for EVM versions >= paris.
The change is due to the renaming introduced by EIP-4399 (see: https://eips.ethereum.org/EIPS/eip-4399).
Introduces `block.prevrandao` in Solidity and `prevrandao()` in inline assembly for EVM versions >= paris.

Co-authored-by: Alex Beregszaszi <alex@rtfs.hu>
Co-authored-by: Daniel <daniel@ekpyron.org>
Co-authored-by: matheusaaguiar <95899911+matheusaaguiar@users.noreply.github.com>
Co-authored-by: Nikola Matić <nikola.matic@ethereum.org>
2023-01-23 18:50:36 +00:00
Bhargava Shastry
2c27405cbb Fix zero size memory expansion semantics in the yul interpreter. 2022-11-21 11:53:42 +01:00
Marenz
d10d967008 yulRun: Fix unexpected return value for call* instructions and add tests 2022-09-14 11:40:08 +02:00
Marenz
4b69b5fdc1 YulRunner: Add support for external calls to the same contract 2022-09-14 11:40:02 +02:00
Marenz
53b67334c5 YulRunner: Add support for memoryguard() and literal parameters 2022-09-14 11:40:02 +02:00
Bhargava Shastry
69d9869d21 Fix create2 memory access in yul interpreter. 2022-09-12 09:53:31 +02:00
Bhargava Shastry
b8ad2b2718 Yul interpreter: Add flag to disable memory tracing and dump for fuzzing.
Model revert in yul interpreter.
Add logTrace for a few more instructions and clear trace on revert.
2022-01-04 11:56:27 +01:00
Bhargava Shastry
259a98b82c Impose stricter upper bound on memory accesses in order to prevent overflow/wrap around. 2022-01-03 18:22:42 +01:00
chriseth
1531863835 Split Common.h into Numeric.h. 2021-09-23 15:27:29 +02:00
hrkrshnn
543ccf5287 Added the basefee instruction in YulInterpreter 2021-08-09 16:18:08 +02:00
Alex Beregszaszi
37be1b3ed9 Remove dependency on util::160 in yulInterpreter
Instead apply explicit truncation or masking for readability.
2021-04-23 14:35:05 +01:00
Daniel Kirchner
a75424eec4 Drop support for evm15 and eip-615. 2021-03-09 15:56:03 +01:00
Alexander Arlt
c44bb7e7ef Replace raw throw with BOOST_THROW_EXCEPTION. 2021-02-18 20:23:59 -05:00
Alex Beregszaszi
7e88ba8da0 Enable the -Wconversion warning 2020-12-08 16:45:24 +00:00
Alex Beregszaszi
a22077f736 Rename AsmData -> AST
Also attempt to only include ASTForward where appropriate.
2020-11-25 17:58:02 +00:00
chriseth
0226d104b7 Fix literal arguments in interpreter. 2020-08-06 14:16:59 +02:00
chriseth
2c7359de1e
Merge pull request #9394 from ethereum/fix-9391
Yul interpreter: Return addresses of type u160 for create and create2…
2020-07-20 18:38:43 +02:00
Bhargava Shastry
deffb7ffc8 Yul interpreter: Return addresses of type u160 for create and create2 calls 2020-07-20 11:26:47 +02:00
Sachin Grover
b7adb2aa42 Add SPDX license identifier if not present already in source file
Fixes: #9220
2020-07-17 20:24:12 +05:30
Alex Beregszaszi
870ea98c21 Prefix EIP-615 opcodes with EIP615 in Instructions 2020-07-13 17:34:19 +01:00
Bhargava Shastry
d0ea1f97fd Yul interpreter: Return selfbalance constant for the expression
balance(address()) and balance constant otherwise.
2020-06-30 16:59:13 +02:00
Djordje Mijovic
1ee6c49028 Adding fixes for signedness warnings in test/tools/yulInterpreter 2020-06-02 16:35:41 +02: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
Dimitry
fd3ae0b24a add chainid and selfbalance to lllc 2019-09-09 23:35:36 +03:00
chriseth
5b4b4011c7 Extend memory beyond 32 byte addresses in interpreter. 2019-09-04 20:10:42 +02:00
Bhargava Shastry
6427ec661a Yul interpreter: Out of bounds mloads return zero 2019-09-03 09:51:15 +02:00
chriseth
bdf29277a2 Change interpreter memory to be non-contiguous. 2019-09-02 13:51:47 +02:00
chriseth
cee1340113 Add mini-interpreter to check representation. 2019-05-28 11:35:07 +02:00
chriseth
1ca3edf6a1 Remove side-effect-free instructions from the trace. 2019-05-23 12:42:11 +02:00
chriseth
3ef03258ec Remove memory logging. 2019-05-23 12:42:11 +02:00
chriseth
1dc15d5864 Modify parser and optimizer. 2019-05-20 17:32:56 +02:00
chriseth
18bc82e6fd Fix interpreter exp bug. 2019-05-07 11:40:33 +02:00
chriseth
f113f8e4a0 Implement datasize, dataoffset and datacopy for yul interpreter. 2019-05-06 16:59:47 +02:00
Bhargava Shastry
f15cedad7a yulInterpreter: More fine-grained exception handling 2019-04-04 13:02:55 +02:00
chriseth
2308904f68 Remove "using namespace" from header and move Instruction to dev::eth. 2019-03-28 13:48:11 +01:00
Bhargava Shastry
ef94d6d645 yul Interpreter: Move memory size limit to interpreter state. 2019-03-26 14:42:25 +01:00
chriseth
db379403fc Fix assertion in yul interpreter. 2019-03-13 20:58:15 +01:00
Bhargava Shastry
c48cc19fae yulInterpreter: Fix u256 overflow in logMemory. 2019-02-28 16:42:50 +01:00
chriseth
514c9910aa Fix implementation of signextend. 2019-02-26 17:56:32 +01:00
chriseth
cc88c517a2 Review changes. 2019-02-25 11:58:37 +01:00
Bhargava Shastry
d564c24f30 POP is actually a valid instruction. 2019-02-25 11:58:37 +01:00
chriseth
0e471ab811 Review comments. 2019-02-25 11:58:37 +01:00
chriseth
e91be8222c Yul interpreter executable. 2019-02-25 11:57:48 +01:00
chriseth
0c432a861c Yul interpreter. 2019-02-25 11:57:48 +01:00