diff options
Diffstat (limited to 'src/cmd/internal/obj/data.go')
| -rw-r--r-- | src/cmd/internal/obj/data.go | 56 |
1 files changed, 28 insertions, 28 deletions
diff --git a/src/cmd/internal/obj/data.go b/src/cmd/internal/obj/data.go index bcba53c3a4..361ea05a0f 100644 --- a/src/cmd/internal/obj/data.go +++ b/src/cmd/internal/obj/data.go @@ -118,15 +118,16 @@ func (s *LSym) writeAddr(ctxt *Link, off int64, siz int, rsym *LSym, roff int64, ctxt.Diag("WriteAddr: bad address size %d in %s", siz, s.Name) } s.prepwrite(ctxt, off, siz) - r := Addrel(s) - r.Off = int32(off) - if int64(r.Off) != off { + if int64(int32(off)) != off { ctxt.Diag("WriteAddr: off overflow %d in %s", off, s.Name) } - r.Siz = uint8(siz) - r.Sym = rsym - r.Type = rtype - r.Add = roff + s.AddRel(ctxt, Reloc{ + Type: rtype, + Off: int32(off), + Siz: uint8(siz), + Sym: rsym, + Add: roff, + }) } // WriteAddr writes an address of size siz into s at offset off. @@ -155,15 +156,16 @@ func (s *LSym) WriteCURelativeAddr(ctxt *Link, off int64, rsym *LSym, roff int64 // rsym+roff-(start of section that s is in). func (s *LSym) WriteOff(ctxt *Link, off int64, rsym *LSym, roff int64) { s.prepwrite(ctxt, off, 4) - r := Addrel(s) - r.Off = int32(off) - if int64(r.Off) != off { + if int64(int32(off)) != off { ctxt.Diag("WriteOff: off overflow %d in %s", off, s.Name) } - r.Siz = 4 - r.Sym = rsym - r.Type = objabi.R_ADDROFF - r.Add = roff + s.AddRel(ctxt, Reloc{ + Type: objabi.R_ADDROFF, + Off: int32(off), + Siz: 4, + Sym: rsym, + Add: roff, + }) } // WriteWeakOff writes a weak 4 byte offset to rsym+roff into s at offset off. @@ -171,15 +173,16 @@ func (s *LSym) WriteOff(ctxt *Link, off int64, rsym *LSym, roff int64) { // rsym+roff-(start of section that s is in). func (s *LSym) WriteWeakOff(ctxt *Link, off int64, rsym *LSym, roff int64) { s.prepwrite(ctxt, off, 4) - r := Addrel(s) - r.Off = int32(off) - if int64(r.Off) != off { - ctxt.Diag("WriteOff: off overflow %d in %s", off, s.Name) + if int64(int32(off)) != off { + ctxt.Diag("WriteWeakOff: off overflow %d in %s", off, s.Name) } - r.Siz = 4 - r.Sym = rsym - r.Type = objabi.R_WEAKADDROFF - r.Add = roff + s.AddRel(ctxt, Reloc{ + Type: objabi.R_WEAKADDROFF, + Off: int32(off), + Siz: 4, + Sym: rsym, + Add: roff, + }) } // WriteString writes a string of size siz into s at offset off. @@ -198,10 +201,7 @@ func (s *LSym) WriteBytes(ctxt *Link, off int64, b []byte) int64 { return off + int64(len(b)) } -func Addrel(s *LSym) *Reloc { - if s.R == nil { - s.R = make([]Reloc, 0, 4) - } - s.R = append(s.R, Reloc{}) - return &s.R[len(s.R)-1] +// AddRel adds the relocation rel to s. +func (s *LSym) AddRel(ctxt *Link, rel Reloc) { + s.R = append(s.R, rel) } |
