cmd/disasm, cmd/evm: integrate disasm tool into evm tool. (#3729)
This commit is contained in:
		
				
					committed by
					
						
						Jeffrey Wilcke
					
				
			
			
				
	
			
			
			
						parent
						
							230cf2ec91
						
					
				
				
					commit
					c52ab932e6
				
			@@ -1,4 +1,4 @@
 | 
				
			|||||||
// Copyright 2015 The go-ethereum Authors
 | 
					// Copyright 2017 The go-ethereum Authors
 | 
				
			||||||
// This file is part of go-ethereum.
 | 
					// This file is part of go-ethereum.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// go-ethereum is free software: you can redistribute it and/or modify
 | 
					// go-ethereum is free software: you can redistribute it and/or modify
 | 
				
			||||||
@@ -14,29 +14,40 @@
 | 
				
			|||||||
// You should have received a copy of the GNU General Public License
 | 
					// You should have received a copy of the GNU General Public License
 | 
				
			||||||
// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
 | 
					// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// disasm is a pretty-printer for EVM bytecode.
 | 
					 | 
				
			||||||
package main
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"io/ioutil"
 | 
						"io/ioutil"
 | 
				
			||||||
	"os"
 | 
					 | 
				
			||||||
	"strings"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/ethereum/go-ethereum/core/asm"
 | 
						"github.com/ethereum/go-ethereum/core/asm"
 | 
				
			||||||
 | 
						cli "gopkg.in/urfave/cli.v1"
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func main() {
 | 
					var disasmCommand = cli.Command{
 | 
				
			||||||
	in, err := ioutil.ReadAll(os.Stdin)
 | 
						Action:    disasmCmd,
 | 
				
			||||||
	if err != nil {
 | 
						Name:      "disasm",
 | 
				
			||||||
		fmt.Println(err)
 | 
						Usage:     "disassembles evm binary",
 | 
				
			||||||
		os.Exit(1)
 | 
						ArgsUsage: "<file>",
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func disasmCmd(ctx *cli.Context) error {
 | 
				
			||||||
 | 
						if len(ctx.Args().First()) == 0 {
 | 
				
			||||||
 | 
							return errors.New("filename required")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fn := ctx.Args().First()
 | 
				
			||||||
 | 
						in, err := ioutil.ReadFile(fn)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	code := strings.TrimSpace(string(in[:]))
 | 
						code := strings.TrimSpace(string(in[:]))
 | 
				
			||||||
	fmt.Printf("%v\n", code)
 | 
						fmt.Printf("%v\n", code)
 | 
				
			||||||
	err = asm.PrintDisassembled(code)
 | 
						if err = asm.PrintDisassembled(code); err != nil {
 | 
				
			||||||
	if err != nil {
 | 
							return err
 | 
				
			||||||
		fmt.Printf("Error: %v\n", err)
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -101,6 +101,7 @@ func init() {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	app.Commands = []cli.Command{
 | 
						app.Commands = []cli.Command{
 | 
				
			||||||
		compileCommand,
 | 
							compileCommand,
 | 
				
			||||||
 | 
							disasmCommand,
 | 
				
			||||||
		runCommand,
 | 
							runCommand,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user