]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link: remove Cursym
authorDavid Crawshaw <crawshaw@golang.org>
Sat, 17 Sep 2016 14:01:17 +0000 (10:01 -0400)
committerDavid Crawshaw <crawshaw@golang.org>
Tue, 20 Sep 2016 02:42:16 +0000 (02:42 +0000)
Change-Id: I58253a6cd2d77a9319c0783afb0d92cd5a88a7f7
Reviewed-on: https://go-review.googlesource.com/29370
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Michael Hudson-Doyle <michael.hudson@canonical.com>
13 files changed:
src/cmd/link/internal/amd64/asm.go
src/cmd/link/internal/arm/asm.go
src/cmd/link/internal/arm64/asm.go
src/cmd/link/internal/ld/data.go
src/cmd/link/internal/ld/dwarf.go
src/cmd/link/internal/ld/elf.go
src/cmd/link/internal/ld/link.go
src/cmd/link/internal/ld/pcln.go
src/cmd/link/internal/ld/pe.go
src/cmd/link/internal/mips64/asm.go
src/cmd/link/internal/ppc64/asm.go
src/cmd/link/internal/s390x/asm.go
src/cmd/link/internal/x86/asm.go

index 104d37e4cbbb03a6d3803b13103da76935f3b9fb..f074dbe6f97c2f1d3b3530c51d59f4e92493b974 100644 (file)
@@ -98,7 +98,6 @@ func gentext(ctxt *ld.Link) {
 
 func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
        targ := r.Sym
-       ctxt.Cursym = s
 
        switch r.Type {
        default:
index 6aa24932b42abebd8cd68cc063e75ff8314f03f0..d822c20f439ec5c7b94ec5a3322afe5911f7dd12 100644 (file)
@@ -114,7 +114,6 @@ func braddoff(a int32, b int32) int32 {
 
 func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
        targ := r.Sym
-       ctxt.Cursym = s
 
        switch r.Type {
        default:
@@ -691,7 +690,6 @@ func asmb(ctxt *ld.Link) {
                }
        }
 
-       ctxt.Cursym = nil
        if ctxt.Debugvlog != 0 {
                ctxt.Logf("%5.2f header\n", obj.Cputime())
        }
index 8b22eaebb17ab31d80f5098023cba9210535c614..65f598fad5d341360eb10817ec8ab254a6bb3258 100644 (file)
@@ -499,7 +499,6 @@ func asmb(ctxt *ld.Link) {
                }
        }
 
-       ctxt.Cursym = nil
        if ctxt.Debugvlog != 0 {
                ctxt.Logf("%5.2f header\n", obj.Cputime())
        }
index 52e2efbb8e3e84e2b9131afba774cbbe5a628ece..c9a2e13f2ef04a328e11382b87dadbfcd5ae7b1c 100644 (file)
@@ -323,7 +323,6 @@ func relocsym(ctxt *Link, s *Symbol) {
        var fl int32
        var o int64
 
-       ctxt.Cursym = s
        for ri := int32(0); ri < int32(len(s.R)); ri++ {
                r = &s.R[ri]
                r.Done = 1
@@ -549,7 +548,7 @@ func relocsym(ctxt *Link, s *Symbol) {
 
                        // r->sym can be null when CALL $(constant) is transformed from absolute PC to relative PC call.
                case obj.R_CALL, obj.R_GOTPCREL, obj.R_PCREL:
-                       if Linkmode == LinkExternal && r.Sym != nil && r.Sym.Type != obj.SCONST && (r.Sym.Sect != ctxt.Cursym.Sect || r.Type == obj.R_GOTPCREL) {
+                       if Linkmode == LinkExternal && r.Sym != nil && r.Sym.Type != obj.SCONST && (r.Sym.Sect != s.Sect || r.Type == obj.R_GOTPCREL) {
                                r.Done = 0
 
                                // set up addend for eventual relocation via outer symbol.
@@ -580,7 +579,7 @@ func relocsym(ctxt *Link, s *Symbol) {
                                                o -= int64(r.Off) // relative to section offset, not symbol
                                        } else if SysArch.Family == sys.ARM {
                                                // see ../arm/asm.go:/machoreloc1
-                                               o += Symaddr(rs) - int64(ctxt.Cursym.Value) - int64(r.Off)
+                                               o += Symaddr(rs) - int64(s.Value) - int64(r.Off)
                                        } else {
                                                o += int64(r.Siz)
                                        }
@@ -622,7 +621,6 @@ func relocsym(ctxt *Link, s *Symbol) {
                }
                switch siz {
                default:
-                       ctxt.Cursym = s
                        Errorf(s, "bad reloc size %#x for %s", uint32(siz), r.Sym.Name)
                        fallthrough
 
@@ -842,7 +840,6 @@ func blk(ctxt *Link, syms []*Symbol, addr, size int64, pad []byte) {
                if s.Value >= eaddr {
                        break
                }
-               ctxt.Cursym = s
                if s.Value < addr {
                        Errorf(s, "phase error: addr=%#x but sym=%#x type=%d", addr, s.Value, s.Type)
                        errorexit()
@@ -1904,9 +1901,6 @@ func (ctxt *Link) textaddress() {
                for sub := sym; sub != nil; sub = sub.Sub {
                        sub.Value += int64(va)
                }
-               if sym.Size == 0 && sym.Sub != nil {
-                       ctxt.Cursym = sym
-               }
                if sym.Size < MINFUNC {
                        va += MINFUNC // spacing required for findfunctab
                } else {
@@ -2060,7 +2054,6 @@ func (ctxt *Link) address() {
        )
 
        for _, s := range datap {
-               ctxt.Cursym = s
                if s.Sect != nil {
                        s.Value += int64(s.Sect.Vaddr)
                }
@@ -2070,7 +2063,6 @@ func (ctxt *Link) address() {
        }
 
        for _, sym := range dwarfp {
-               ctxt.Cursym = sym
                if sym.Sect != nil {
                        sym.Value += int64(sym.Sect.Vaddr)
                }
index 4b78184a25d8846110024f0205bf92db24211e27..8fd6f3f7a2f7f1b1193e66000a218fb771bbd366 100644 (file)
@@ -999,8 +999,7 @@ func writelines(ctxt *Link, syms []*Symbol) ([]*Symbol, []*Symbol) {
 
        var pcfile Pciter
        var pcline Pciter
-       for _, ctxt.Cursym = range ctxt.Textp {
-               s := ctxt.Cursym
+       for _, s := range ctxt.Textp {
 
                epc = s.Value + s.Size
                epcs = s
@@ -1152,8 +1151,7 @@ func writeframes(ctxt *Link, syms []*Symbol) []*Symbol {
 
        var deltaBuf []byte
        var pcsp Pciter
-       for _, ctxt.Cursym = range ctxt.Textp {
-               s := ctxt.Cursym
+       for _, s := range ctxt.Textp {
                if s.FuncInfo == nil {
                        continue
                }
index 5603df6f2ee7f6525f9be5e9d4799f4a4067ebc2..a3d3360c7e1ed06d25b0b62f390d1285ea8f720d 100644 (file)
@@ -1759,8 +1759,6 @@ func elfrelocsect(ctxt *Link, sect *Section, syms []*Symbol) {
                if sym.Value >= int64(eaddr) {
                        break
                }
-               ctxt.Cursym = sym
-
                for ri := 0; ri < len(sym.R); ri++ {
                        r := &sym.R[ri]
                        if r.Done != 0 {
index 480c6e36c5972b0e82e286e5be357e78556ee758..877fa8979efa734e237faf37733d856cb4e4bde7 100644 (file)
@@ -189,7 +189,6 @@ type Link struct {
        Shlibs    []Shlib
        Tlsoffset int
 
-       Cursym      *Symbol
        Version     int
        Textp       []*Symbol
        Filesyms    []*Symbol
index 05ef1371007ca0d7315e8155756e2c9127817a2a..c587d7652eb99785be2060b55d69ea929b9aa385 100644 (file)
@@ -243,24 +243,24 @@ func (ctxt *Link) pclntab() {
 
        nfunc = 0
        var last *Symbol
-       for _, ctxt.Cursym = range ctxt.Textp {
-               last = ctxt.Cursym
-               if container(ctxt.Cursym) != 0 {
+       for _, s := range ctxt.Textp {
+               last = s
+               if container(s) != 0 {
                        continue
                }
-               pcln := ctxt.Cursym.FuncInfo
+               pcln := s.FuncInfo
                if pcln == nil {
                        pcln = &pclntabZpcln
                }
 
                if pclntabFirstFunc == nil {
-                       pclntabFirstFunc = ctxt.Cursym
+                       pclntabFirstFunc = s
                }
 
                funcstart := int32(len(ftab.P))
                funcstart += int32(-len(ftab.P)) & (int32(SysArch.PtrSize) - 1)
 
-               setaddr(ctxt, ftab, 8+int64(SysArch.PtrSize)+int64(nfunc)*2*int64(SysArch.PtrSize), ctxt.Cursym)
+               setaddr(ctxt, ftab, 8+int64(SysArch.PtrSize)+int64(nfunc)*2*int64(SysArch.PtrSize), s)
                setuintxx(ctxt, ftab, 8+int64(SysArch.PtrSize)+int64(nfunc)*2*int64(SysArch.PtrSize)+int64(SysArch.PtrSize), uint64(funcstart), int64(SysArch.PtrSize))
 
                // fixed size of struct, checked below
@@ -273,16 +273,16 @@ func (ctxt *Link) pclntab() {
                Symgrow(ctxt, ftab, int64(end))
 
                // entry uintptr
-               off = int32(setaddr(ctxt, ftab, int64(off), ctxt.Cursym))
+               off = int32(setaddr(ctxt, ftab, int64(off), s))
 
                // name int32
-               off = int32(setuint32(ctxt, ftab, int64(off), uint32(ftabaddstring(ctxt, ftab, ctxt.Cursym.Name))))
+               off = int32(setuint32(ctxt, ftab, int64(off), uint32(ftabaddstring(ctxt, ftab, s.Name))))
 
                // args int32
                // TODO: Move into funcinfo.
                args := uint32(0)
-               if ctxt.Cursym.FuncInfo != nil {
-                       args = uint32(ctxt.Cursym.FuncInfo.Args)
+               if s.FuncInfo != nil {
+                       args = uint32(s.FuncInfo.Args)
                }
                off = int32(setuint32(ctxt, ftab, int64(off), args))
 
@@ -300,7 +300,7 @@ func (ctxt *Link) pclntab() {
                                var it Pciter
                                for pciterinit(ctxt, &it, &pcln.Pcfile); it.done == 0; pciternext(&it) {
                                        if it.value < 1 || it.value > int32(len(ctxt.Filesyms)) {
-                                               Errorf(ctxt.Cursym, "bad file number in pcfile: %d not in range [1, %d]\n", it.value, len(ctxt.Filesyms))
+                                               Errorf(s, "bad file number in pcfile: %d not in range [1, %d]\n", it.value, len(ctxt.Filesyms))
                                                errorexit()
                                        }
                                }
@@ -339,7 +339,7 @@ func (ctxt *Link) pclntab() {
                }
 
                if off != end {
-                       Errorf(ctxt.Cursym, "bad math in functab: funcstart=%d off=%d but end=%d (npcdata=%d nfuncdata=%d ptrsize=%d)", funcstart, off, end, len(pcln.Pcdata), len(pcln.Funcdata), SysArch.PtrSize)
+                       Errorf(s, "bad math in functab: funcstart=%d off=%d but end=%d (npcdata=%d nfuncdata=%d ptrsize=%d)", funcstart, off, end, len(pcln.Pcdata), len(pcln.Funcdata), SysArch.PtrSize)
                        errorexit()
                }
 
index ca968e7adf212065c08000c9bf5517a5ddb165cc..6f23592e656d359f05f92c26a37e5aaa3e8c3a12 100644 (file)
@@ -790,8 +790,6 @@ func perelocsect(ctxt *Link, sect *Section, syms []*Symbol) int {
                if sym.Value >= int64(eaddr) {
                        break
                }
-               ctxt.Cursym = sym
-
                for ri := 0; ri < len(sym.R); ri++ {
                        r := &sym.R[ri]
                        if r.Done != 0 {
index 0a48a3e5316b5a21121ff9f442f3be79beac7204..dc015ee0d6d76d857b1af11be4d1804cd27233bb 100644 (file)
@@ -278,7 +278,6 @@ func asmb(ctxt *ld.Link) {
                }
        }
 
-       ctxt.Cursym = nil
        if ctxt.Debugvlog != 0 {
                ctxt.Logf("%5.2f header\n", obj.Cputime())
        }
index 73f675190fce376cee93f1bd22fd7ab1a7514d36..f8892727cfcf693d5277d01f5a4f02e0138c42ac 100644 (file)
@@ -242,7 +242,6 @@ func gencallstub(ctxt *ld.Link, abicase int, stub *ld.Symbol, targ *ld.Symbol) {
 
 func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
        targ := r.Sym
-       ctxt.Cursym = s
 
        switch r.Type {
        default:
@@ -898,7 +897,6 @@ func asmb(ctxt *ld.Link) {
                }
        }
 
-       ctxt.Cursym = nil
        if ctxt.Debugvlog != 0 {
                ctxt.Logf("%5.2f header\n", obj.Cputime())
        }
index d25e2b26c546f2620b524cd7e5ddb216f8bb4123..5e194974e3af0aa880311ab4c57f1348f52014b4 100644 (file)
@@ -575,7 +575,6 @@ func asmb(ctxt *ld.Link) {
                }
        }
 
-       ctxt.Cursym = nil
        if ctxt.Debugvlog != 0 {
                ctxt.Logf("%5.2f header\n", obj.Cputime())
        }
index 5db34893701c3c4df9629a1f2691a088d3633ee7..34fec5263e73e0fcd2c1e1c36f3e16ffcd391982 100644 (file)
@@ -164,7 +164,6 @@ func gentext(ctxt *ld.Link) {
 
 func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
        targ := r.Sym
-       ctxt.Cursym = s
 
        switch r.Type {
        default: