erigon-pulse/cmd
Suhabe Bugrara b18727911f
CFG analysis (#1327)
* First

* More on SA interpreter

* Fixup

* Add cfg action to hack binary that invokes the SaInterpreter. Added an operation handler for PUSH1

* refactor cfg tests into separate file

* Move cfg tests into separate file

* More refactoring into new file

* dataflow interpreter

* work on cfg0

* finish cfg0

* df works on base examples

* refactor into dataflow spec

* add bounded stack

* add harder example

* fix switch pass thru

* fix switch pass thru

* bug fix, and better printing

* manual merge

* restore call to test gencfg

* abstract interpretation based cfg analysis

* fix post signature

* use uint256 instead uint64, add post function

* preprocess stmts

* initial implementation of resolve

* fix resolve

* fix resolve

* print stmts for edges

* print stmts for edges

* print states

* print states

* bug fixes, debugging

* fix jumpi dest - first working impl

* reachability analysis to filter out dead edges

* add all transfer functions

* larger contract bytecodes from solc compiler

* simple solidity contract goes thru

* add deposit contract bytecode

* rename deposit contract test

* fix new contract arg

* Address non-determinism leading to imprecise results

* improve debugging output

* improve debugging output

* improve debugging output

* fix for bug causing incorrect analysis results

* fix for bug causing incorrect analysis results

* fix for bug causing incorrect analysis results

* add more test cases

* fix coverage bug

* debugging for non-termination

* fix bad fixpoint check

* fix data inference

* fix transfer function for halting stmts

* switch to deposit contract test, disable debugging

* add anly counter to viz, fix stmt.valid check

* show all preds, adjust anlycounter behavior

* dfs instead of bfs to fail earlier

* viz improvements

* add worklist size to viz

* add test case for private functions

* valueset analysis

* add more checks to fail earlier in the analysis to help debugging, improve debugging output, catch additional bad jumps

* delete old code

* delete old code

* delete old code

* fix up minor changes to jump table

* copy over comments from cgf-1 branch

* remove minor diffs

* add recompiled deposit contract

* graph viz

* cleanup/refactoring

* initial impl of viz

* script to run cfg anly and generate dot file

* div example

* accept bytecode from cmd line

* add minimal deposit contract example

* replace valueset analysis with stackset analysis

* get in sync with master

* sync with master

* fix linting

* fix linting

* fix linting

* reformatting

* fix linting

* fix linting

* fix linting

* fix linting

* fix linting

* fix linting

* fix linting

* harness for running over all contracts

* refactor anly, track coverage metrics

* breakdown unresolved into different types, fix bad opcode bug

* sort programs by frequency

* ingest used contracts from bigquery

* performance, concurrency, bug fixes

* more test cases, handle invalid jumps differently, remove duplicate edges, report analytics limit

* simplify concurrency

* correctly track short stack

* add new transfer function, fix stack len

* variable stack length, perf opts, inc anly count limit

* profiling

* test case for large state size

* use custom hash function for control

* timeouts

* cfg.sh

* increase to 5 min timeout

* track elpased time

* use ptr

* increase limits

* increase limits

* fix mem leak

* debug mem leak

* debug mem leak

* lower resource limits

* fix nil error

* add new lattice element

* re-enable

* cut down limits

* preliminary proof checker

* refactor batch mode to run cfg in subprocess,put memory limit

* remove hard wiring

* adjust limits

* update metrics tracking

* more succinct proof checker

* rewrite checker

* bug fixes on checker

* bug fix

* remove print stmts

* track proof size

* print proof size

* don't panic on process error

* compress proof

* go mody tidy

* code formatting

* fix capitalization

* fix linting

* fix linting

* fix linting

* fix linting

* fix linting

* remove unnecessary files

* fix typo

Co-authored-by: Alexey Akhunov <akhounov@gmail.com>
2020-10-30 12:24:14 +00:00
..
abidump post-merge fixups 2020-02-27 17:22:25 +03:00
abigen Rpcdaemon as lib (#940) 2020-08-19 12:46:20 +01:00
bootnode cmd/bootnode,internal/debug: fix some comments (#21623) 2020-10-26 17:16:00 +01:00
checkpoint-admin Fixes 'too many other files opened' problem with Generate Storage History stage on Mac (#1217) 2020-10-10 22:15:07 +01:00
clef accounts, signer: implement gnosis safe support (#21593) 2020-10-26 17:16:00 +01:00
devp2p geth-1.9.23: post-rebase fixups 2020-10-26 17:16:00 +01:00
ethkey geth 1.9.18 post-rebase fixups 2020-08-08 17:33:35 +02:00
evm Store receipts separately - one record per tx (#1271) 2020-10-25 08:38:55 +00:00
hack CFG analysis (#1327) 2020-10-30 12:24:14 +00:00
headers [WIP] add interfaces subtree and switch headers POC to using shared proto files (#1315) 2020-10-29 16:38:46 +00:00
integration Method delete to accept second param: allow delete dupsort values (#1297) 2020-10-29 13:19:31 +00:00
p2psim node: refactor package node (#21105) 2020-08-14 16:33:59 +02:00
pics Some additions to the DB walkthrough (#1309) 2020-10-28 07:18:48 +00:00
prometheus prometheus docs for developers 2020-10-24 10:15:53 +07:00
puppeth cmd/geth, cmd/puppeth: replace deprecated rpc and ws flags in tests and docs (#21317) 2020-08-07 12:54:50 +02:00
restapi lmdb_readonly_dont_create_folder (#1293) 2020-10-25 08:39:09 +00:00
rlpdump Apply Turbo-Geth modifications to go-ethereum codebase 2019-11-01 21:52:03 +01:00
rpcdaemon add snapshot support for rpcdaemon (#1304) 2020-10-27 22:31:47 +00:00
rpctest Method delete to accept second param: allow delete dupsort values (#1297) 2020-10-29 13:19:31 +00:00
state Move batch management into the writeReceipts case (#1321) 2020-10-30 08:41:35 +00:00
tester geth-1.9.23: post-rebase fixups 2020-10-26 17:16:00 +01:00
tg turbo-api: add a plug-in mechanism for possible Bloom and other filters (#1229) 2020-10-12 14:58:45 +01:00
tgcustom Method delete to accept second param: allow delete dupsort values (#1297) 2020-10-29 13:19:31 +00:00
utils Exclusive lock manual (#1302) 2020-10-28 09:52:15 +00:00