From: Cherry Zhang Date: Sat, 1 May 2021 00:53:14 +0000 (-0400) Subject: cmd/link: emit better error for duplicated definition X-Git-Tag: go1.17beta1~304 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=053fe2f485;p=gostls13.git cmd/link: emit better error for duplicated definition Print the packages where the duplicates come from. Change-Id: Ib3dc9aa0a3f5ddd97b03744be6d01d4bfcb33996 Reviewed-on: https://go-review.googlesource.com/c/go/+/315949 Trust: Cherry Zhang Run-TryBot: Cherry Zhang TryBot-Result: Go Bot Reviewed-by: Than McIntosh --- diff --git a/src/cmd/link/internal/loader/loader.go b/src/cmd/link/internal/loader/loader.go index 1bfcfe435a..1b71a66c6f 100644 --- a/src/cmd/link/internal/loader/loader.go +++ b/src/cmd/link/internal/loader/loader.go @@ -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