package goobj
import "cmd/internal/goobj"
Index ¶
- Constants
- func BuiltinIdx(name string, abi int) int
- func BuiltinName(i int) (string, int)
- func NBuiltin() int
- type Aux
- func (a *Aux) SetSym(x SymRef)
- func (a *Aux) SetType(x uint8)
- func (a *Aux) Sym() SymRef
- func (a *Aux) Type() uint8
- func (a *Aux) Write(w *Writer)
- type CUFileIndex
- type FingerprintType
- type FuncInfo
- func (*FuncInfo) ReadArgs(b []byte) uint32
- func (*FuncInfo) ReadFile(b []byte, filesoff uint32, k uint32) CUFileIndex
- func (*FuncInfo) ReadFuncFlag(b []byte) abi.FuncFlag
- func (*FuncInfo) ReadFuncID(b []byte) abi.FuncID
- func (*FuncInfo) ReadFuncInfoLengths(b []byte) FuncInfoLengths
- func (*FuncInfo) ReadInlTree(b []byte, inltreeoff uint32, k uint32) InlTreeNode
- func (*FuncInfo) ReadLocals(b []byte) uint32
- func (*FuncInfo) ReadStartLine(b []byte) int32
- func (a *FuncInfo) Write(w *bytes.Buffer)
- type FuncInfoLengths
- type Hash64Type
- type HashType
- type Header
- func (h *Header) Read(r *Reader) error
- func (h *Header) Size() int
- func (h *Header) Write(w *Writer)
- type ImportedPkg
- type InlTreeNode
- type Reader
- func NewReaderFromBytes(b []byte, readonly bool) *Reader
- func (r *Reader) Autolib() []ImportedPkg
- func (r *Reader) Aux(i uint32, j int) *Aux
- func (r *Reader) AuxOff(i uint32, j int) uint32
- func (r *Reader) Auxs(i uint32) []Aux
- func (r *Reader) BytesAt(off uint32, len int) []byte
- func (r *Reader) Data(i uint32) []byte
- func (r *Reader) DataOff(i uint32) uint32
- func (r *Reader) DataSize(i uint32) int
- func (r *Reader) DataString(i uint32) string
- func (r *Reader) File(i int) string
- func (r *Reader) Fingerprint() FingerprintType
- func (r *Reader) Flags() uint32
- func (r *Reader) FromAssembly() bool
- func (r *Reader) Hash(i uint32) *HashType
- func (r *Reader) Hash64(i uint32) uint64
- func (r *Reader) NAux(i uint32) int
- func (r *Reader) NFile() int
- func (r *Reader) NHashed64def() int
- func (r *Reader) NHasheddef() int
- func (r *Reader) NNonpkgdef() int
- func (r *Reader) NNonpkgref() int
- func (r *Reader) NPkg() int
- func (r *Reader) NRefFlags() int
- func (r *Reader) NRefName() int
- func (r *Reader) NReloc(i uint32) int
- func (r *Reader) NSym() int
- func (r *Reader) Pkg(i int) string
- func (r *Reader) Pkglist() []string
- func (r *Reader) ReadOnly() bool
- func (r *Reader) RefFlags(i int) *RefFlags
- func (r *Reader) RefName(i int) *RefName
- func (r *Reader) Reloc(i uint32, j int) *Reloc
- func (r *Reader) RelocOff(i uint32, j int) uint32
- func (r *Reader) Relocs(i uint32) []Reloc
- func (r *Reader) Shared() bool
- func (r *Reader) Std() bool
- func (r *Reader) StringAt(off uint32, len uint32) string
- func (r *Reader) StringRef(off uint32) string
- func (r *Reader) Sym(i uint32) *Sym
- func (r *Reader) SymOff(i uint32) uint32
- func (r *Reader) Unlinkable() bool
- type RefFlags
- func (r *RefFlags) Flag() uint8
- func (r *RefFlags) Flag2() uint8
- func (r *RefFlags) SetFlag(x uint8)
- func (r *RefFlags) SetFlag2(x uint8)
- func (r *RefFlags) SetSym(x SymRef)
- func (r *RefFlags) Sym() SymRef
- func (r *RefFlags) Write(w *Writer)
- type RefName
- func (n *RefName) Name(r *Reader) string
- func (n *RefName) SetName(x string, w *Writer)
- func (n *RefName) SetSym(x SymRef)
- func (n *RefName) Sym() SymRef
- func (n *RefName) Write(w *Writer)
- type Reloc
- func (r *Reloc) Add() int64
- func (r *Reloc) Off() int32
- func (r *Reloc) Set(off int32, size uint8, typ uint16, add int64, sym SymRef)
- func (r *Reloc) SetAdd(x int64)
- func (r *Reloc) SetOff(x int32)
- func (r *Reloc) SetSiz(x uint8)
- func (r *Reloc) SetSym(x SymRef)
- func (r *Reloc) SetType(x uint16)
- func (r *Reloc) Siz() uint8
- func (r *Reloc) Sym() SymRef
- func (r *Reloc) Type() uint16
- func (r *Reloc) Write(w *Writer)
- type Sym
- func (s *Sym) ABI() uint16
- func (s *Sym) ABIWrapper() bool
- func (s *Sym) Align() uint32
- func (s *Sym) Dupok() bool
- func (s *Sym) Flag() uint8
- func (s *Sym) Flag2() uint8
- func (s *Sym) IsDict() bool
- func (s *Sym) IsGoType() bool
- func (s *Sym) IsItab() bool
- func (s *Sym) IsLinkname() bool
- func (s *Sym) IsPkgInit() bool
- func (s *Sym) Leaf() bool
- func (s *Sym) Local() bool
- func (s *Sym) Name(r *Reader) string
- func (s *Sym) NameLen(r *Reader) int
- func (s *Sym) NoSplit() bool
- func (s *Sym) ReflectMethod() bool
- func (s *Sym) SetABI(x uint16)
- func (s *Sym) SetAlign(x uint32)
- func (s *Sym) SetFlag(x uint8)
- func (s *Sym) SetFlag2(x uint8)
- func (s *Sym) SetName(x string, w *Writer)
- func (s *Sym) SetSiz(x uint32)
- func (s *Sym) SetType(x uint8)
- func (s *Sym) Siz() uint32
- func (s *Sym) Type() uint8
- func (s *Sym) Typelink() bool
- func (s *Sym) UsedInIface() bool
- func (s *Sym) WasmExport() bool
- func (s *Sym) Write(w *Writer)
- type SymRef
- type Writer
- func NewWriter(wr *bio.Writer) *Writer
- func (w *Writer) AddString(s string)
- func (w *Writer) Bytes(s []byte)
- func (w *Writer) Offset() uint32
- func (w *Writer) RawString(s string)
- func (w *Writer) StringRef(s string)
- func (w *Writer) Uint16(x uint16)
- func (w *Writer) Uint32(x uint32)
- func (w *Writer) Uint64(x uint64)
- func (w *Writer) Uint8(x uint8)
Constants ¶
const ( PkgIdxNone = (1<<31 - 1) - iota // Non-package symbols PkgIdxHashed64 // Short hashed (content-addressable) symbols PkgIdxHashed // Hashed (content-addressable) symbols PkgIdxBuiltin // Predefined runtime symbols (ex: runtime.newobject) PkgIdxSelf // Symbols defined in the current package PkgIdxSpecial = PkgIdxSelf // Indices above it has special meanings PkgIdxInvalid = 0 )
Package Index.
const ( BlkAutolib = iota BlkPkgIdx BlkFile BlkSymdef BlkHashed64def BlkHasheddef BlkNonpkgdef BlkNonpkgref BlkRefFlags BlkHash64 BlkHash BlkRelocIdx BlkAuxIdx BlkDataIdx BlkReloc BlkAux BlkData BlkRefName BlkEnd NBlk )
Blocks
const ( = 1 << iota // this object is built with -shared ObjFlagFromAssembly // object is from asm src, not go ObjFlagUnlinkable // unlinkable package (linker will emit an error) ObjFlagStd // standard library package )
const ( SymFlagDupok = 1 << iota SymFlagLocal SymFlagTypelink SymFlagLeaf SymFlagNoSplit SymFlagReflectMethod SymFlagGoType )
Sym.Flag
const ( SymFlagUsedInIface = 1 << iota SymFlagItab SymFlagDict SymFlagPkgInit SymFlagLinkname SymFlagABIWrapper SymFlagWasmExport )
Sym.Flag2
const ( AuxGotype = iota AuxFuncInfo AuxFuncdata AuxDwarfInfo AuxDwarfLoc AuxDwarfRanges AuxDwarfLines AuxPcsp AuxPcfile AuxPcline AuxPcinline AuxPcdata AuxWasmImport AuxWasmType AuxSehUnwindInfo )
Aux Type
const AuxSize = 1 + 8
const Hash64Size = 8
const HashSize = 16 // truncated SHA256
const Magic = "\x00go120ld"
const RefFlagsSize = 8 + 1 + 1
const RefNameSize = 8 + stringRefSize
const RelocSize = 4 + 1 + 2 + 8 + 8
const SymABIstatic = ^uint16(0)
const SymSize = stringRefSize + 2 + 1 + 1 + 1 + 4 + 4
Functions ¶
func BuiltinIdx ¶
BuiltinIdx returns the index of the builtin with the given name and abi, or -1 if it is not a builtin.
func BuiltinName ¶
BuiltinName returns the name and ABI of the i-th builtin symbol.
func NBuiltin ¶
func NBuiltin() int
NBuiltin returns the number of listed builtin symbols.
Types ¶
type Aux ¶
type Aux [AuxSize]byte
Aux symbol info.
Serialized format:
Aux struct {
Type uint8
Sym SymRef
}
func (*Aux) SetSym ¶
func (*Aux) SetType ¶
func (*Aux) Sym ¶
func (*Aux) Type ¶
func (*Aux) Write ¶
type CUFileIndex ¶
type CUFileIndex uint32
CUFileIndex is used to index the filenames that are stored in the per-package/per-CU FileList.
type FingerprintType ¶
type FingerprintType [8]byte
func (FingerprintType) IsZero ¶
func (fp FingerprintType) IsZero() bool
type FuncInfo ¶
type FuncInfo struct {
Args uint32
Locals uint32
FuncID abi.FuncID
FuncFlag abi.FuncFlag
StartLine int32
File []CUFileIndex
InlTree []InlTreeNode
}
FuncInfo is serialized as a symbol (aux symbol). The symbol data is the binary encoding of the struct below.
func (*FuncInfo) ReadArgs ¶
func (*FuncInfo) ReadFile ¶
func (*FuncInfo) ReadFile(b []byte, filesoff uint32, k uint32) CUFileIndex
func (*FuncInfo) ReadFuncFlag ¶
func (*FuncInfo) ReadFuncID ¶
func (*FuncInfo) ReadFuncInfoLengths ¶
func (*FuncInfo) ReadFuncInfoLengths(b []byte) FuncInfoLengths
func (*FuncInfo) ReadInlTree ¶
func (*FuncInfo) ReadInlTree(b []byte, inltreeoff uint32, k uint32) InlTreeNode
func (*FuncInfo) ReadLocals ¶
func (*FuncInfo) ReadStartLine ¶
func (*FuncInfo) Write ¶
type FuncInfoLengths ¶
type FuncInfoLengths struct {
NumFile uint32
FileOff uint32
NumInlTree uint32
InlTreeOff uint32
Initialized bool
}
FuncInfoLengths is a cache containing a roadmap of offsets and lengths for things within a serialized FuncInfo. Each length field stores the number of items (e.g. files, inltree nodes, etc), and the corresponding "off" field stores the byte offset of the start of the items in question.
type Hash64Type ¶
type Hash64Type [Hash64Size]byte
Hash64
type HashType ¶
type HashType [HashSize]byte
Hash
type Header ¶
type Header struct {
Magic string
Fingerprint FingerprintType
Flags uint32
Offsets [NBlk]uint32
}
File header. TODO: probably no need to export this.
func (*Header) Read ¶
func (*Header) Size ¶
func (*Header) Write ¶
type ImportedPkg ¶
type ImportedPkg struct {
Pkg string
Fingerprint FingerprintType
}
Autolib
func (*ImportedPkg) Write ¶
func (p *ImportedPkg) Write(w *Writer)
type InlTreeNode ¶
type InlTreeNode struct {
Parent int32
File CUFileIndex
Line int32
Func SymRef
ParentPC int32
}
InlTreeNode is the serialized form of FileInfo.InlTree.
func (*InlTreeNode) Read ¶
func (inl *InlTreeNode) Read(b []byte) []byte
Read an InlTreeNode from b, return the remaining bytes.
func (*InlTreeNode) Write ¶
func (inl *InlTreeNode) Write(w *bytes.Buffer)
type Reader ¶
type Reader struct {
// contains filtered or unexported fields
}
func NewReaderFromBytes ¶
func (*Reader) Autolib ¶
func (r *Reader) Autolib() []ImportedPkg
func (*Reader) Aux ¶
Aux returns a pointer to the j-th aux symbol of the i-th symbol.
func (*Reader) AuxOff ¶
AuxOff returns the offset of the j-th aux symbol of the i-th symbol.
func (*Reader) Auxs ¶
Auxs returns the aux symbols of the i-th symbol.
func (*Reader) BytesAt ¶
func (*Reader) Data ¶
Data returns the i-th symbol's data.
func (*Reader) DataOff ¶
DataOff returns the offset of the i-th symbol's data.
func (*Reader) DataSize ¶
DataSize returns the size of the i-th symbol's data.
func (*Reader) DataString ¶
DataString returns the i-th symbol's data as a string.
func (*Reader) File ¶
func (*Reader) Fingerprint ¶
func (r *Reader) Fingerprint() FingerprintType
func (*Reader) Flags ¶
Flags returns the flag bits read from the object file header.
func (*Reader) FromAssembly ¶
func (*Reader) Hash ¶
Hash returns a pointer to the i-th hashed symbol's hash. Note: here i is the index of hashed symbols, not all symbols (unlike other accessors).
func (*Reader) Hash64 ¶
Hash64 returns the i-th short hashed symbol's hash. Note: here i is the index of short hashed symbols, not all symbols (unlike other accessors).
func (*Reader) NAux ¶
NAux returns the number of aux symbols of the i-th symbol.
func (*Reader) NFile ¶
func (*Reader) NHashed64def ¶
func (*Reader) NHasheddef ¶
func (*Reader) NNonpkgdef ¶
func (*Reader) NNonpkgref ¶
func (*Reader) NPkg ¶
func (*Reader) NRefFlags ¶
NRefFlags returns the number of referenced symbol flags.
func (*Reader) NRefName ¶
NRefName returns the number of referenced symbol names.
func (*Reader) NReloc ¶
NReloc returns the number of relocations of the i-th symbol.
func (*Reader) NSym ¶
func (*Reader) Pkg ¶
func (*Reader) Pkglist ¶
func (*Reader) ReadOnly ¶
ReadOnly returns whether r.BytesAt returns read-only bytes.
func (*Reader) RefFlags ¶
RefFlags returns a pointer to the i-th referenced symbol flags. Note: here i is not a local symbol index, just a counter.
func (*Reader) RefName ¶
RefName returns a pointer to the i-th referenced symbol name. Note: here i is not a local symbol index, just a counter.
func (*Reader) Reloc ¶
Reloc returns a pointer to the j-th relocation of the i-th symbol.
func (*Reader) RelocOff ¶
RelocOff returns the offset of the j-th relocation of the i-th symbol.
func (*Reader) Relocs ¶
Relocs returns a pointer to the relocations of the i-th symbol.
func (*Reader) Shared ¶
func (*Reader) Std ¶
func (*Reader) StringAt ¶
func (*Reader) StringRef ¶
func (*Reader) Sym ¶
Sym returns a pointer to the i-th symbol.
func (*Reader) SymOff ¶
SymOff returns the offset of the i-th symbol.
func (*Reader) Unlinkable ¶
type RefFlags ¶
type RefFlags [RefFlagsSize]byte
Referenced symbol flags.
Serialized format:
RefFlags struct {
Sym symRef
Flag uint8
Flag2 uint8
}
func (*RefFlags) Flag ¶
func (*RefFlags) Flag2 ¶
func (*RefFlags) SetFlag ¶
func (*RefFlags) SetFlag2 ¶
func (*RefFlags) SetSym ¶
func (*RefFlags) Sym ¶
func (*RefFlags) Write ¶
type RefName ¶
type RefName [RefNameSize]byte
Referenced symbol name.
Serialized format:
RefName struct {
Sym symRef
Name string
}
func (*RefName) Name ¶
func (*RefName) SetName ¶
func (*RefName) SetSym ¶
func (*RefName) Sym ¶
func (*RefName) Write ¶
type Reloc ¶
type Reloc [RelocSize]byte
Relocation.
Serialized format:
Reloc struct {
Off int32
Siz uint8
Type uint16
Add int64
Sym SymRef
}
func (*Reloc) Add ¶
func (*Reloc) Off ¶
func (*Reloc) Set ¶
func (*Reloc) SetAdd ¶
func (*Reloc) SetOff ¶
func (*Reloc) SetSiz ¶
func (*Reloc) SetSym ¶
func (*Reloc) SetType ¶
func (*Reloc) Siz ¶
func (*Reloc) Sym ¶
func (*Reloc) Type ¶
func (*Reloc) Write ¶
type Sym ¶
type Sym [SymSize]byte
Symbol definition.
Serialized format:
Sym struct {
Name string
ABI uint16
Type uint8
Flag uint8
Flag2 uint8
Siz uint32
Align uint32
}
func (*Sym) ABI ¶
func (*Sym) ABIWrapper ¶
func (*Sym) Align ¶
func (*Sym) Dupok ¶
func (*Sym) Flag ¶
func (*Sym) Flag2 ¶
func (*Sym) IsDict ¶
func (*Sym) IsGoType ¶
func (*Sym) IsItab ¶
func (*Sym) IsLinkname ¶
func (*Sym) IsPkgInit ¶
func (*Sym) Leaf ¶
func (*Sym) Local ¶
func (*Sym) Name ¶
func (*Sym) NameLen ¶
Returns the length of the name of the symbol.
func (*Sym) NoSplit ¶
func (*Sym) ReflectMethod ¶
func (*Sym) SetABI ¶
func (*Sym) SetAlign ¶
func (*Sym) SetFlag ¶
func (*Sym) SetFlag2 ¶
func (*Sym) SetName ¶
func (*Sym) SetSiz ¶
func (*Sym) SetType ¶
func (*Sym) Siz ¶
func (*Sym) Type ¶
func (*Sym) Typelink ¶
func (*Sym) UsedInIface ¶
func (*Sym) WasmExport ¶
func (*Sym) Write ¶
type SymRef ¶
Symbol reference.
func (SymRef) IsZero ¶
type Writer ¶
type Writer struct {
// contains filtered or unexported fields
}
func NewWriter ¶
func (*Writer) AddString ¶
func (*Writer) Bytes ¶
func (*Writer) Offset ¶
func (*Writer) RawString ¶
func (*Writer) StringRef ¶
func (*Writer) Uint16 ¶
func (*Writer) Uint32 ¶
func (*Writer) Uint64 ¶
func (*Writer) Uint8 ¶
Source Files ¶
builtin.go builtinlist.go funcinfo.go objfile.go
- Version
- v1.26.0-rc.3
- Published
- Feb 3, 2026
- Platform
- linux/amd64
- Imports
- 8 packages
- Last checked
- 10 minutes ago –
Tools for package owners.