]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/internal/obj: use panic instead of log.Fatalf for two messages
authorRuss Cox <rsc@golang.org>
Thu, 29 Oct 2020 17:57:12 +0000 (13:57 -0400)
committerRuss Cox <rsc@golang.org>
Thu, 29 Oct 2020 20:50:02 +0000 (20:50 +0000)
These messages can happen if there are
duplicate body-less function declarations.
Using panic gives the panic handler
a chance to handle the panic by printing the
queued error messages instead of an internal error.

And if there are no queued error messages,
using panic pinpoints the stack trace leading
to the incorrect use of NewFuncInfo/NewFileInfo.

Change-Id: I7e7ea9822ff9a1e7140f5e5b7cfd6437ff9318a7
Reviewed-on: https://go-review.googlesource.com/c/go/+/266338
Trust: Russ Cox <rsc@golang.org>
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Go Bot <gobot@golang.org>

src/cmd/internal/obj/link.go

index b578b6a09ac98dc44400e3e0da6e5b04c56c33c4..c652e3adbbaaead2c0e6ad404b19a0829c3970f4 100644 (file)
@@ -38,7 +38,6 @@ import (
        "cmd/internal/src"
        "cmd/internal/sys"
        "fmt"
-       "log"
        "sync"
 )
 
@@ -471,7 +470,7 @@ type FuncInfo struct {
 // NewFuncInfo allocates and returns a FuncInfo for LSym.
 func (s *LSym) NewFuncInfo() *FuncInfo {
        if s.Extra != nil {
-               log.Fatalf("invalid use of LSym - NewFuncInfo with Extra of type %T", *s.Extra)
+               panic(fmt.Sprintf("invalid use of LSym - NewFuncInfo with Extra of type %T", *s.Extra))
        }
        f := new(FuncInfo)
        s.Extra = new(interface{})
@@ -498,7 +497,7 @@ type FileInfo struct {
 // NewFileInfo allocates and returns a FileInfo for LSym.
 func (s *LSym) NewFileInfo() *FileInfo {
        if s.Extra != nil {
-               log.Fatalf("invalid use of LSym - NewFileInfo with Extra of type %T", *s.Extra)
+               panic(fmt.Sprintf("invalid use of LSym - NewFileInfo with Extra of type %T", *s.Extra))
        }
        f := new(FileInfo)
        s.Extra = new(interface{})