golang/go · error
no %s symbol found
Error message
no %s symbol found
What it means
findPlan9Symbol walks the Plan 9 symbol table looking for an exact Name match and returns it; if no symbol matches, the lookup failed. This is used to locate 'pclntab'/'epclntab' (and the legacy 'pclntab' fallback) needed to recover function metadata.
Source
Thrown at src/cmd/internal/objfile/plan9obj.go:108
return 0, nil, fmt.Errorf("text section not found")
}
textStart = f.plan9.LoadAddress + f.plan9.HdrSize
text, err = sect.Data()
return
}
func findPlan9Symbol(f *plan9obj.File, name string) (*plan9obj.Sym, error) {
syms, err := f.Symbols()
if err != nil {
return nil, err
}
for _, s := range syms {
if s.Name != name {
continue
}
return &s, nil
}
return nil, fmt.Errorf("no %s symbol found", name)
}
func loadPlan9Table(f *plan9obj.File, sname, ename string) ([]byte, error) {
ssym, err := findPlan9Symbol(f, sname)
if err != nil {
return nil, err
}
esym, err := findPlan9Symbol(f, ename)
if err != nil {
return nil, err
}
sect := f.Section("text")
if sect == nil {
return nil, err
}
data, err := sect.Data()
if err != nil {
return nil, errView on GitHub (pinned to b6b368adc5)
Solutions
- Rebuild the binary without aggressive stripping so pclntab/epclntab are retained.
- For very old Go 1.3 binaries, rely on the caller's existing legacy-symbol fallback rather than the new names.
- Verify you are pointing the tool at a Plan 9 Go binary, not an unrelated object.
Defensive patterns
Strategy: try-catch
Try / catch
// sym, err := findPlan9Symbol(f, name)
// if err != nil {
// // 'no <name> symbol found' -> stripped/legacy binary
// return nil, err
// } Prevention
- Retain pclntab/epclntab symbols when stripping Plan 9 binaries.
- Match the symbol names to the binary's Go version.
- For Go 1.3 binaries, rely on the caller's legacy-symbol fallback.
When it happens
Trigger: Calling findPlan9Symbol with a name that does not exist in the Plan 9 object's symbol table — most commonly 'runtime.pclntab' / 'runtime.epclntab' on a stripped binary.
Common situations: A Plan 9 Go binary stripped of its pclntab symbols (e.g. via -ldflags '-s -w' on a Go version that removes them), or an old Go 1.3 binary without the new symbol names.
Related errors
- no %s symbol found
- pcln not available in go object file
- symbol %s: invalid section number %d
- no %s symbol found
- %s and %s symbols must be in the same section
AI-assisted analysis of golang/go@b6b368adc5 (2026-08-12).
Data as JSON: /api/errors/25437b97d3974267.
Report an issue: GitHub.