return int32(ftab.SetUint32(ctxt.Arch, int64(off), uint32(start)))
}
-func ftabaddstring(ctxt *Link, ftab *sym.Symbol, s string) int32 {
- n := int32(len(s)) + 1
- start := int32(len(ftab.P))
- ftab.Grow(int64(start) + int64(n) + 1)
+func ftabaddstring(ftab *sym.Symbol, s string) int32 {
+ start := len(ftab.P)
+ ftab.Grow(int64(start + len(s) + 1)) // make room for s plus trailing NUL
copy(ftab.P[start:], s)
- return start
+ return int32(start)
}
// numberfile assigns a file number to the file if it hasn't been assigned already.
nameToOffset := func(name string) int32 {
nameoff, ok := funcnameoff[name]
if !ok {
- nameoff = ftabaddstring(ctxt, ftab, name)
+ nameoff = ftabaddstring(ftab, name)
funcnameoff[name] = nameoff
}
return nameoff
ftab.SetUint32(ctxt.Arch, int64(start), uint32(len(ctxt.Filesyms)+1))
for i := len(ctxt.Filesyms) - 1; i >= 0; i-- {
s := ctxt.Filesyms[i]
- ftab.SetUint32(ctxt.Arch, int64(start)+s.Value*4, uint32(ftabaddstring(ctxt, ftab, s.Name)))
+ ftab.SetUint32(ctxt.Arch, int64(start)+s.Value*4, uint32(ftabaddstring(ftab, s.Name)))
}
ftab.Size = int64(len(ftab.P))