From 24c56f2a4fed4eb1652ce898eaa76e4379960441 Mon Sep 17 00:00:00 2001 From: Danno Ferrin Date: Fri, 2 Aug 2024 07:43:52 -0600 Subject: [PATCH] Fix std.out issues with eofparse * In stdin mode ack good code with OK * remove or feature flag stray printlns. * use reader to accept potentially larget contracts --- cmd/eofdump/eofparser.go | 23 ++++++++++++++++------- core/vm/validate.go | 2 +- core/vm/validate_linear.go | 8 ++++++-- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/cmd/eofdump/eofparser.go b/cmd/eofdump/eofparser.go index a50a1f0170..6e63734db2 100644 --- a/cmd/eofdump/eofparser.go +++ b/cmd/eofdump/eofparser.go @@ -91,7 +91,7 @@ func eofParser(ctx *cli.Context) error { } return fmt.Errorf("err(%d): %w", errorMap[err.Error()], err) } - fmt.Println("ok.") + fmt.Println("OK") return nil } @@ -138,19 +138,28 @@ func eofParser(ctx *cli.Context) error { } // If neither are passed in, read input from stdin. - scanner := bufio.NewScanner(os.Stdin) - for scanner.Scan() { - t := strings.TrimSpace(scanner.Text()) - if len(t) == 0 || t[0] == '#' { + reader := bufio.NewReaderSize(os.Stdin, 1024*1024) + t, err := reader.ReadString('\n') + for err == nil { + l := len(t) + if l == 0 || t[0] == '#' { continue } - if _, err := parseAndValidate(t, false); err != nil { + if t[l-1] == '\n' { + t = t[:l-1] // remove newline + } + _, err := parseAndValidate(t, false) + if err != nil { if err2 := errors.Unwrap(err); err2 != nil { err = err2 } - fmt.Fprintf(os.Stderr, "err(%d): %v\n", errorMap[err.Error()], err) + fmt.Printf("err(%d): %v\n", errorMap[err.Error()], err) + } else { + fmt.Println("OK") } + t, err = reader.ReadString('\n') } + println(err.Error()) return nil } diff --git a/core/vm/validate.go b/core/vm/validate.go index 434751b171..11d8a61252 100644 --- a/core/vm/validate.go +++ b/core/vm/validate.go @@ -180,7 +180,7 @@ func validateCode(code []byte, section int, container *Container, jt *JumpTable, if paths, err := validateControlFlow2(code, section, container.Types, jt); err != nil { return nil, err } else if paths != count { - fmt.Printf("Paths: %v Count: %v\n", paths, count) + //fmt.Printf("Paths: %v Count: %v\n", paths, count) // TODO(matt): return actual position of unreachable code return nil, ErrUnreachableCode } diff --git a/core/vm/validate_linear.go b/core/vm/validate_linear.go index 2c2c4bc76d..a779123260 100644 --- a/core/vm/validate_linear.go +++ b/core/vm/validate_linear.go @@ -30,7 +30,9 @@ func validateControlFlow2(code []byte, section int, metadata []*FunctionMetadata op := OpCode(code[pos]) currentBounds := stackBounds[pos] if currentBounds == nil { - fmt.Printf("Stack bounds not set: %v at %v \n", op, pos) + if debugging { + fmt.Printf("Stack bounds not set: %v at %v \n", op, pos) + } return 0, ErrUnreachableCode } @@ -196,7 +198,9 @@ func validateControlFlow2(code []byte, section int, metadata []*FunctionMetadata return 0, ErrStackOverflow{maxStackHeight, int(params.StackLimit)} } if maxStackHeight != int(metadata[section].MaxStackHeight) { - fmt.Print(maxStackHeight, metadata[section].MaxStackHeight) + if debugging { + fmt.Print(maxStackHeight, metadata[section].MaxStackHeight) + } return 0, fmt.Errorf("%w in code section %d: have %d, want %d", ErrInvalidMaxStackHeight, section, maxStackHeight, metadata[section].MaxStackHeight) } return len(stackBounds), nil