]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link: emit better error for duplicated definition
authorCherry Zhang <cherryyz@google.com>
Sat, 1 May 2021 00:53:14 +0000 (20:53 -0400)
committerCherry Zhang <cherryyz@google.com>
Sat, 1 May 2021 19:17:47 +0000 (19:17 +0000)
Print the packages where the duplicates come from.

Change-Id: Ib3dc9aa0a3f5ddd97b03744be6d01d4bfcb33996
Reviewed-on: https://go-review.googlesource.com/c/go/+/315949
Trust: Cherry Zhang <cherryyz@google.com>
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
src/cmd/link/internal/loader/loader.go

index 1bfcfe435a99b21a4890d9043f7abf0b09ea187b..1b71a66c6f5c1a1e9f4953007be95392bf4c18b6 100644 (file)
@@ -471,14 +471,14 @@ func (st *loadState) addSym(name string, ver int, r *oReader, li uint32, kind in
                // new symbol overwrites old symbol.
                oldtyp := sym.AbiSymKindToSymKind[objabi.SymKind(oldsym.Type())]
                if !(oldtyp.IsData() && oldr.DataSize(oldli) == 0) {
-                       log.Fatalf("duplicated definition of symbol " + name)
+                       log.Fatalf("duplicated definition of symbol %s, from %s and %s", name, r.unit.Lib.Pkg, oldr.unit.Lib.Pkg)
                }
                l.objSyms[oldi] = objSym{r.objidx, li}
        } else {
                // old symbol overwrites new symbol.
                typ := sym.AbiSymKindToSymKind[objabi.SymKind(oldsym.Type())]
                if !typ.IsData() { // only allow overwriting data symbol
-                       log.Fatalf("duplicated definition of symbol " + name)
+                       log.Fatalf("duplicated definition of symbol %s, from %s and %s", name, r.unit.Lib.Pkg, oldr.unit.Lib.Pkg)
                }
        }
        return oldi