{"record":{"id":"3a789e227acb7db7","repo":"golang/go","slug":"unknown-load-address-3a789e","errorCode":null,"errorMessage":"unknown load address","messagePattern":"unknown load address","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"info","filePath":"src/cmd/internal/objfile/plan9obj.go","lineNumber":145,"sourceCode":"\t}\n\ttextStart := f.LoadAddress + f.HdrSize\n\treturn data[ssym.Value-textStart : esym.Value-textStart], nil\n}\n\nfunc (f *plan9File) goarch() string {\n\tswitch f.plan9.Magic {\n\tcase plan9obj.Magic386:\n\t\treturn \"386\"\n\tcase plan9obj.MagicAMD64:\n\t\treturn \"amd64\"\n\tcase plan9obj.MagicARM:\n\t\treturn \"arm\"\n\t}\n\treturn \"\"\n}\n\nfunc (f *plan9File) loadAddress() (uint64, error) {\n\treturn 0, fmt.Errorf(\"unknown load address\")\n}\n\nfunc (f *plan9File) dwarf() (*dwarf.Data, error) {\n\treturn nil, errors.New(\"no DWARF data in Plan 9 file\")\n}\n","sourceCodeStart":127,"sourceCodeEnd":151,"githubUrl":"https://github.com/golang/go/blob/b6b368adc57c96c3151d224d172029f233ead2c3/src/cmd/internal/objfile/plan9obj.go#L127-L151","documentation":"plan9File.loadAddress() unconditionally returns 'unknown load address'. A Plan 9 a.out does not encode a recoverable fixed load base the way PE/ELF do, so the loader declines rather than fabricate one. Callers that need a base must use textStart from text() instead.","triggerScenarios":"Any call to plan9File.loadAddress() — this is a permanent limitation of the Plan 9 backend, not a recoverable runtime condition.","commonSituations":"A tool that uniformly calls loadAddress on every backend will always see this error for Plan 9 binaries. It is expected behavior, not a defect.","solutions":["Do not rely on loadAddress for Plan 9; use the textStart value returned from text().","Handle this specific error as non-fatal in the caller."],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":"// Plan 9 has no recoverable load address; detect the backend and skip loadAddress.\n// switch pf.(type) {\n// case *plan9File:\n//     // use textStart from text() instead\n// default:\n//     base, err = pf.loadAddress()\n// }","tryCatchPattern":"// base, err := pf.loadAddress()\n// if err != nil && err.Error() == \"unknown load address\" {\n//     // expected for plan9; fall back to textStart\n// }","preventionTips":["Never rely on loadAddress for Plan 9 binaries.","Use textStart from text() as the base address instead.","Treat 'unknown load address' as informational for Plan 9."],"tags":["plan9","objfile","load-address","permanent-limitation"],"analyzedSha":"b6b368adc57c96c3151d224d172029f233ead2c3","analyzedAt":"2026-08-12T00:22:02.250Z","schemaVersion":2},"datasetVersion":"2026-08-12T12:17:08.281Z"}