// InitAddrOffset writes the static name symbol lsym to n, it does not modify n. // It's the caller responsibility to make sure lsym is from ONAME/PEXTERN node. func InitAddrOffset(n *ir.Name, noff int64, lsym *obj.LSym, off int64) { … } // InitAddr is InitAddrOffset, with offset fixed to 0. func InitAddr(n *ir.Name, noff int64, lsym *obj.LSym) { … } // InitSlice writes a static slice symbol {lsym, lencap, lencap} to n+noff, it does not modify n. // It's the caller responsibility to make sure lsym is from ONAME node. func InitSlice(n *ir.Name, noff int64, lsym *obj.LSym, lencap int64) { … } func InitSliceBytes(nam *ir.Name, off int64, s string) { … } const stringSymPrefix … const stringSymPattern … // shortHashString converts the hash to a string for use with stringSymPattern. // We cut it to 16 bytes and then base64-encode to make it even smaller. func shortHashString(hash []byte) string { … } // StringSym returns a symbol containing the string s. // The symbol contains the string data, not a string header. func StringSym(pos src.XPos, s string) (data *obj.LSym) { … } // StringSymNoCommon is like StringSym, but produces a symbol that is not content- // addressable. This symbol is not supposed to appear in the final binary, it is // only used to pass string arguments to the linker like R_USENAMEDMETHOD does. func StringSymNoCommon(s string) (data *obj.LSym) { … } const maxFileSize … // fileStringSym returns a symbol for the contents and the size of file. // If readonly is true, the symbol shares storage with any literal string // or other file with the same content and is placed in a read-only section. // If readonly is false, the symbol is a read-write copy separate from any other, // for use as the backing store of a []byte. // The content hash of file is copied into hashBytes. (If hash is nil, nothing is copied.) // The returned symbol contains the data itself, not a string header. func fileStringSym(pos src.XPos, file string, readonly bool, hashBytes []byte) (*obj.LSym, int64, error) { … } var slicedataGen … func slicedata(pos src.XPos, s string) *obj.LSym { … } func dstringdata(s *obj.LSym, off int, t string, pos src.XPos, what string) int { … } var funcsymsmu … var funcsyms … // FuncLinksym returns n·f, the function value symbol for n. func FuncLinksym(n *ir.Name) *obj.LSym { … } func GlobalLinksym(n *ir.Name) *obj.LSym { … } func WriteFuncSyms() { … } // InitConst writes the static literal c to n. // Neither n nor c is modified. func InitConst(n *ir.Name, noff int64, c ir.Node, wid int) { … }