@@ -58,12 +58,12 @@ func Flushplist(ctxt *Link, plist *Plist, newprog ProgAlloc, myimportpath string
58
58
switch p .To .Sym .Name {
59
59
case "go_args_stackmap" :
60
60
if p .From .Type != TYPE_CONST || p .From .Offset != objabi .FUNCDATA_ArgsPointerMaps {
61
- ctxt .Diag ("FUNCDATA use of go_args_stackmap(SB) without FUNCDATA_ArgsPointerMaps" )
61
+ ctxt .Diag ("%s: FUNCDATA use of go_args_stackmap(SB) without FUNCDATA_ArgsPointerMaps" , p . Pos )
62
62
}
63
63
p .To .Sym = ctxt .LookupDerived (curtext , curtext .Name + ".args_stackmap" )
64
64
case "no_pointers_stackmap" :
65
65
if p .From .Type != TYPE_CONST || p .From .Offset != objabi .FUNCDATA_LocalsPointerMaps {
66
- ctxt .Diag ("FUNCDATA use of no_pointers_stackmap(SB) without FUNCDATA_LocalsPointerMaps" )
66
+ ctxt .Diag ("%s: FUNCDATA use of no_pointers_stackmap(SB) without FUNCDATA_LocalsPointerMaps" , p . Pos )
67
67
}
68
68
// funcdata for functions with no local variables in frame.
69
69
// Define two zero-length bitmaps, because the same index is used
@@ -166,11 +166,13 @@ func (ctxt *Link) InitTextSym(s *LSym, flag int, start src.XPos) {
166
166
return
167
167
}
168
168
if s .Func () != nil {
169
- ctxt .Diag ("InitTextSym double init for %s" , s .Name )
169
+ ctxt .Diag ("%s: symbol %s redeclared\n \t %s: other declaration of symbol %s" , ctxt .PosTable .Pos (start ), s .Name , ctxt .PosTable .Pos (s .Func ().Text .Pos ), s .Name )
170
+ return
170
171
}
171
172
s .NewFuncInfo ()
172
173
if s .OnList () {
173
- ctxt .Diag ("symbol %s listed multiple times" , s .Name )
174
+ ctxt .Diag ("%s: symbol %s redeclared" , ctxt .PosTable .Pos (start ), s .Name )
175
+ return
174
176
}
175
177
176
178
// startLine should be the same line number that would be displayed via
@@ -210,8 +212,12 @@ func (ctxt *Link) toFuncFlag(flag int) objabi.FuncFlag {
210
212
}
211
213
212
214
func (ctxt * Link ) Globl (s * LSym , size int64 , flag int ) {
215
+ ctxt .GloblPos (s , size , flag , src .NoXPos )
216
+ }
217
+ func (ctxt * Link ) GloblPos (s * LSym , size int64 , flag int , pos src.XPos ) {
213
218
if s .OnList () {
214
- ctxt .Diag ("symbol %s listed multiple times" , s .Name )
219
+ // TODO: print where the first declaration was.
220
+ ctxt .Diag ("%s: symbol %s redeclared" , ctxt .PosTable .Pos (pos ), s .Name )
215
221
}
216
222
s .Set (AttrOnList , true )
217
223
ctxt .Data = append (ctxt .Data , s )
0 commit comments