golang/go · error
%s: invalid symbol type %d
Error message
%s: invalid symbol type %d
What it means
Error "%s: invalid symbol type %d" thrown in golang/go.
Source
Thrown at src/cmd/link/internal/loadpe/ldpe.go:732
// details on this problem.
if state.arch.Family == sys.I386 && name[0] == '_' && name != "_main" && !strings.HasPrefix(name, "__imp_") {
name = name[1:] // _Name => Name
}
}
// remove last @XXX
if i := strings.LastIndex(name, "@"); i >= 0 {
name = name[:i]
}
var s loader.Sym
var bld *loader.SymbolBuilder
// Microsoft's PE documentation is contradictory. It says that the symbol's complex type
// is stored in the pesym.Type most significant byte, but MSVC, LLVM, and mingw store it
// in the 4 high bits of the less significant byte.
switch uint8(pesym.Type&0xf0) >> 4 {
default:
return nil, 0, fmt.Errorf("%s: invalid symbol type %d", symname, pesym.Type)
case IMAGE_SYM_DTYPE_FUNCTION, IMAGE_SYM_DTYPE_NULL:
switch pesym.StorageClass {
case IMAGE_SYM_CLASS_EXTERNAL: //global
s = state.l.LookupOrCreateCgoExport(name, 0)
case IMAGE_SYM_CLASS_NULL, IMAGE_SYM_CLASS_STATIC, IMAGE_SYM_CLASS_LABEL:
s = state.l.LookupOrCreateCgoExport(name, state.localSymVersion)
bld = makeUpdater(state.l, bld, s)
bld.SetDuplicateOK(true)
default:
return nil, 0, fmt.Errorf("%s: invalid symbol binding %d", symname, pesym.StorageClass)
}
}
if s != 0 && state.l.SymType(s) == 0 && (pesym.StorageClass != IMAGE_SYM_CLASS_STATIC || pesym.Value != 0) {
bld = makeUpdater(state.l, bld, s)View on GitHub (pinned to b6b368adc5)
When it happens
Trigger: Thrown at src/cmd/link/internal/loadpe/ldpe.go:732 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of golang/go@b6b368adc5 (2026-08-12).
Data as JSON: /api/errors/e6205e04e71573db.
Report an issue: GitHub.