cmd/disasm, cmd/evm: integrate disasm tool into evm tool. (#3729)
This commit is contained in:
		
							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, | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user