diff --git a/src/cmd/link/internal/ld/errors.go b/src/cmd/link/internal/ld/errors.go index d6e8ff236d..b553d682d9 100644 --- a/src/cmd/link/internal/ld/errors.go +++ b/src/cmd/link/internal/ld/errors.go @@ -21,7 +21,6 @@ type symNameFn func(s loader.Sym) string // ErrorReporter is used to make error reporting thread safe. type ErrorReporter struct { loader.ErrorReporter - unresOnce sync.Once unresSyms map[unresolvedSymKey]bool unresMutex sync.Mutex SymName symNameFn @@ -29,11 +28,13 @@ type ErrorReporter struct { // errorUnresolved prints unresolved symbol error for rs that is referenced from s. func (reporter *ErrorReporter) errorUnresolved(ldr *loader.Loader, s, rs loader.Sym) { - reporter.unresOnce.Do(func() { reporter.unresSyms = make(map[unresolvedSymKey]bool) }) - - k := unresolvedSymKey{from: s, to: rs} reporter.unresMutex.Lock() defer reporter.unresMutex.Unlock() + + if reporter.unresSyms == nil { + reporter.unresSyms = make(map[unresolvedSymKey]bool) + } + k := unresolvedSymKey{from: s, to: rs} if !reporter.unresSyms[k] { reporter.unresSyms[k] = true name := ldr.SymName(rs)