[Assembler] Yul code compiled for EVM <= byzantium returns invalid instruction status code on EVMC call
- Dominant language
- C++
- Stars
- 25.7k
- Forks
- 6.2k
- Avg merge
- 2d 19h
- Merged PRs (30d)
- 29
Description
```
{
function f() {
sstore(sload(caller()), exp(0xffffffffff,0xffff))
}
f()
f()
f()
}
```
fails https://github.com/ethereum/solidity/blob/597426bd1c93e1d75940d5e9dacdb55123228a01/test/tools/ossfuzz/StackReuseCodegenFuzzer.cpp#L99-L102
To reproduce, one would have to assemble the Yul code targeted at tangerine whistle, deploy and issue a call and print status code of the call.
Contributor guide
Research direction
Start with test/tools/ossfuzz/StackReuseCodegenFuzzer.cpp at lines 99-102 and reproduce the supplied Yul program assembled for Tangerine Whistle. Deploy it, issue an EVMC call, and print the status code; the issue is done when the invalid-instruction result is explained and the reproduced call behaves correctly.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- solidity
- Domain
- blockchain, compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100