]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link: use ctxt.{Lookup,ROLookup} in favour of function versions of same
authorMichael Hudson-Doyle <michael.hudson@canonical.com>
Tue, 20 Sep 2016 03:06:08 +0000 (15:06 +1200)
committerMichael Hudson-Doyle <michael.hudson@canonical.com>
Tue, 20 Sep 2016 04:12:43 +0000 (04:12 +0000)
Done with two eg templates:

package p

import (
"cmd/link/internal/ld"
)

func before(ctxt *ld.Link, name string, v int) *ld.Symbol {
return ld.Linklookup(ctxt, name, v)
}
func after(ctxt *ld.Link, name string, v int) *ld.Symbol {
return ctxt.Syms.Lookup(name, v)
}

package p

import (
"cmd/link/internal/ld"
)

func before(ctxt *ld.Link, name string, v int) *ld.Symbol {
return ld.Linkrlookup(ctxt, name, v)
}
func after(ctxt *ld.Link, name string, v int) *ld.Symbol {
return ctxt.Syms.ROLookup(name, v)
}

Change-Id: I00647dbf62294557bd24c29ad1f108fc786335f1
Reviewed-on: https://go-review.googlesource.com/29343
Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
21 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/deadcode.go
src/cmd/link/internal/ld/dwarf.go
src/cmd/link/internal/ld/elf.go
src/cmd/link/internal/ld/go.go
src/cmd/link/internal/ld/ldelf.go
src/cmd/link/internal/ld/ldmacho.go
src/cmd/link/internal/ld/ldpe.go
src/cmd/link/internal/ld/lib.go
src/cmd/link/internal/ld/macho.go
src/cmd/link/internal/ld/objfile.go
src/cmd/link/internal/ld/pcln.go
src/cmd/link/internal/ld/pe.go
src/cmd/link/internal/ld/symtab.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 2de86ea1dbdc3b008bab57452a0540cc33e5a276..63fca9a14dc99b9f6d8800d3c9dc30e14dce2f5b 100644 (file)
@@ -58,14 +58,14 @@ func gentext(ctxt *ld.Link) {
        if !ctxt.DynlinkingGo() {
                return
        }
-       addmoduledata := ld.Linklookup(ctxt, "runtime.addmoduledata", 0)
+       addmoduledata := ctxt.Syms.Lookup("runtime.addmoduledata", 0)
        if addmoduledata.Type == obj.STEXT && ld.Buildmode != ld.BuildmodePlugin {
                // we're linking a module containing the runtime -> no need for
                // an init function
                return
        }
        addmoduledata.Attr |= ld.AttrReachable
-       initfunc := ld.Linklookup(ctxt, "go.link.addmoduledata", 0)
+       initfunc := ctxt.Syms.Lookup("go.link.addmoduledata", 0)
        initfunc.Type = obj.STEXT
        initfunc.Attr |= ld.AttrLocal
        initfunc.Attr |= ld.AttrReachable
@@ -89,7 +89,7 @@ func gentext(ctxt *ld.Link) {
        if ld.Buildmode == ld.BuildmodePlugin {
                ctxt.Textp = append(ctxt.Textp, addmoduledata)
        }
-       initarray_entry := ld.Linklookup(ctxt, "go.link.addmoduledatainit", 0)
+       initarray_entry := ctxt.Syms.Lookup("go.link.addmoduledatainit", 0)
        initarray_entry.Attr |= ld.AttrReachable
        initarray_entry.Attr |= ld.AttrLocal
        initarray_entry.Type = obj.SINITARR
@@ -123,7 +123,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
                r.Add += 4
                if targ.Type == obj.SDYNIMPORT {
                        addpltsym(ctxt, targ)
-                       r.Sym = ld.Linklookup(ctxt, ".plt", 0)
+                       r.Sym = ctxt.Syms.Lookup(".plt", 0)
                        r.Add += int64(targ.Plt)
                }
 
@@ -147,7 +147,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
                addgotsym(ctxt, targ)
 
                r.Type = obj.R_PCREL
-               r.Sym = ld.Linklookup(ctxt, ".got", 0)
+               r.Sym = ctxt.Syms.Lookup(".got", 0)
                r.Add += 4
                r.Add += int64(targ.Got)
                return true
@@ -174,7 +174,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
        case 512 + ld.MACHO_X86_64_RELOC_BRANCH*2 + 1:
                if targ.Type == obj.SDYNIMPORT {
                        addpltsym(ctxt, targ)
-                       r.Sym = ld.Linklookup(ctxt, ".plt", 0)
+                       r.Sym = ctxt.Syms.Lookup(".plt", 0)
                        r.Add = int64(targ.Plt)
                        r.Type = obj.R_PCREL
                        return true
@@ -216,7 +216,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
                }
                addgotsym(ctxt, targ)
                r.Type = obj.R_PCREL
-               r.Sym = ld.Linklookup(ctxt, ".got", 0)
+               r.Sym = ctxt.Syms.Lookup(".got", 0)
                r.Add += int64(targ.Got)
                return true
        }
@@ -234,7 +234,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
                } else {
                        // for both ELF and Mach-O
                        addpltsym(ctxt, targ)
-                       r.Sym = ld.Linklookup(ctxt, ".plt", 0)
+                       r.Sym = ctxt.Syms.Lookup(".plt", 0)
                        r.Add = int64(targ.Plt)
                        return true
                }
@@ -243,7 +243,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
                if s.Type == obj.STEXT && ld.Iself {
                        if ld.Headtype == obj.Hsolaris {
                                addpltsym(ctxt, targ)
-                               r.Sym = ld.Linklookup(ctxt, ".plt", 0)
+                               r.Sym = ctxt.Syms.Lookup(".plt", 0)
                                r.Add += int64(targ.Plt)
                                return true
                        }
@@ -252,7 +252,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
                        // correspondent GOT symbol.
                        addgotsym(ctxt, targ)
 
-                       r.Sym = ld.Linklookup(ctxt, ".got", 0)
+                       r.Sym = ctxt.Syms.Lookup(".got", 0)
                        r.Add += int64(targ.Got)
                        return true
                }
@@ -304,7 +304,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
                        // though it would be more efficient (for the dynamic linker) if we
                        // generated R_X86_RELATIVE instead.
                        ld.Adddynsym(ctxt, targ)
-                       rela := ld.Linklookup(ctxt, ".rela", 0)
+                       rela := ctxt.Syms.Lookup(".rela", 0)
                        ld.Addaddrplus(ctxt, rela, s, int64(r.Off))
                        if r.Siz == 8 {
                                ld.Adduint64(ctxt, rela, ld.ELF64_R_INFO(uint32(targ.Dynid), ld.R_X86_64_64))
@@ -330,14 +330,14 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
                        // but we only need to support cgo and that's all it needs.
                        ld.Adddynsym(ctxt, targ)
 
-                       got := ld.Linklookup(ctxt, ".got", 0)
+                       got := ctxt.Syms.Lookup(".got", 0)
                        s.Type = got.Type | obj.SSUB
                        s.Outer = got
                        s.Sub = got.Sub
                        got.Sub = s
                        s.Value = got.Size
                        ld.Adduint64(ctxt, got, 0)
-                       ld.Adduint32(ctxt, ld.Linklookup(ctxt, ".linkedit.got", 0), uint32(targ.Dynid))
+                       ld.Adduint32(ctxt, ctxt.Syms.Lookup(".linkedit.got", 0), uint32(targ.Dynid))
                        r.Type = 256 // ignore during relocsym
                        return true
                }
@@ -527,8 +527,8 @@ func archrelocvariant(ctxt *ld.Link, r *ld.Reloc, s *ld.Symbol, t int64) int64 {
 }
 
 func elfsetupplt(ctxt *ld.Link) {
-       plt := ld.Linklookup(ctxt, ".plt", 0)
-       got := ld.Linklookup(ctxt, ".got.plt", 0)
+       plt := ctxt.Syms.Lookup(".plt", 0)
+       got := ctxt.Syms.Lookup(".got.plt", 0)
        if plt.Size == 0 {
                // pushq got+8(IP)
                ld.Adduint8(ctxt, plt, 0xff)
@@ -546,7 +546,7 @@ func elfsetupplt(ctxt *ld.Link) {
                ld.Adduint32(ctxt, plt, 0x00401f0f)
 
                // assume got->size == 0 too
-               ld.Addaddrplus(ctxt, got, ld.Linklookup(ctxt, ".dynamic", 0), 0)
+               ld.Addaddrplus(ctxt, got, ctxt.Syms.Lookup(".dynamic", 0), 0)
 
                ld.Adduint64(ctxt, got, 0)
                ld.Adduint64(ctxt, got, 0)
@@ -561,9 +561,9 @@ func addpltsym(ctxt *ld.Link, s *ld.Symbol) {
        ld.Adddynsym(ctxt, s)
 
        if ld.Iself {
-               plt := ld.Linklookup(ctxt, ".plt", 0)
-               got := ld.Linklookup(ctxt, ".got.plt", 0)
-               rela := ld.Linklookup(ctxt, ".rela.plt", 0)
+               plt := ctxt.Syms.Lookup(".plt", 0)
+               got := ctxt.Syms.Lookup(".got.plt", 0)
+               rela := ctxt.Syms.Lookup(".rela.plt", 0)
                if plt.Size == 0 {
                        elfsetupplt(ctxt)
                }
@@ -606,16 +606,16 @@ func addpltsym(ctxt *ld.Link, s *ld.Symbol) {
                // has details about what we're avoiding.
 
                addgotsym(ctxt, s)
-               plt := ld.Linklookup(ctxt, ".plt", 0)
+               plt := ctxt.Syms.Lookup(".plt", 0)
 
-               ld.Adduint32(ctxt, ld.Linklookup(ctxt, ".linkedit.plt", 0), uint32(s.Dynid))
+               ld.Adduint32(ctxt, ctxt.Syms.Lookup(".linkedit.plt", 0), uint32(s.Dynid))
 
                // jmpq *got+size(IP)
                s.Plt = int32(plt.Size)
 
                ld.Adduint8(ctxt, plt, 0xff)
                ld.Adduint8(ctxt, plt, 0x25)
-               ld.Addpcrelplus(ctxt, plt, ld.Linklookup(ctxt, ".got", 0), int64(s.Got))
+               ld.Addpcrelplus(ctxt, plt, ctxt.Syms.Lookup(".got", 0), int64(s.Got))
        } else {
                ld.Errorf(s, "addpltsym: unsupported binary format")
        }
@@ -627,17 +627,17 @@ func addgotsym(ctxt *ld.Link, s *ld.Symbol) {
        }
 
        ld.Adddynsym(ctxt, s)
-       got := ld.Linklookup(ctxt, ".got", 0)
+       got := ctxt.Syms.Lookup(".got", 0)
        s.Got = int32(got.Size)
        ld.Adduint64(ctxt, got, 0)
 
        if ld.Iself {
-               rela := ld.Linklookup(ctxt, ".rela", 0)
+               rela := ctxt.Syms.Lookup(".rela", 0)
                ld.Addaddrplus(ctxt, rela, got, int64(s.Got))
                ld.Adduint64(ctxt, rela, ld.ELF64_R_INFO(uint32(s.Dynid), ld.R_X86_64_GLOB_DAT))
                ld.Adduint64(ctxt, rela, 0)
        } else if ld.Headtype == obj.Hdarwin {
-               ld.Adduint32(ctxt, ld.Linklookup(ctxt, ".linkedit.got", 0), uint32(s.Dynid))
+               ld.Adduint32(ctxt, ctxt.Syms.Lookup(".linkedit.got", 0), uint32(s.Dynid))
        } else {
                ld.Errorf(s, "addgotsym: unsupported binary format")
        }
@@ -775,7 +775,7 @@ func asmb(ctxt *ld.Link) {
                        ld.Asmplan9sym(ctxt)
                        ld.Cflush()
 
-                       sym := ld.Linklookup(ctxt, "pclntab", 0)
+                       sym := ctxt.Syms.Lookup("pclntab", 0)
                        if sym != nil {
                                ld.Lcsize = int32(len(sym.P))
                                for i := 0; int32(i) < ld.Lcsize; i++ {
index d822c20f439ec5c7b94ec5a3322afe5911f7dd12..5e03827022ef37eef47a03475e4d066eef3eb344 100644 (file)
@@ -62,14 +62,14 @@ func gentext(ctxt *ld.Link) {
        if !ctxt.DynlinkingGo() {
                return
        }
-       addmoduledata := ld.Linklookup(ctxt, "runtime.addmoduledata", 0)
+       addmoduledata := ctxt.Syms.Lookup("runtime.addmoduledata", 0)
        if addmoduledata.Type == obj.STEXT && ld.Buildmode != ld.BuildmodePlugin {
                // we're linking a module containing the runtime -> no need for
                // an init function
                return
        }
        addmoduledata.Attr |= ld.AttrReachable
-       initfunc := ld.Linklookup(ctxt, "go.link.addmoduledata", 0)
+       initfunc := ctxt.Syms.Lookup("go.link.addmoduledata", 0)
        initfunc.Type = obj.STEXT
        initfunc.Attr |= ld.AttrLocal
        initfunc.Attr |= ld.AttrReachable
@@ -83,7 +83,7 @@ func gentext(ctxt *ld.Link) {
        rel := ld.Addrel(initfunc)
        rel.Off = 8
        rel.Siz = 4
-       rel.Sym = ld.Linklookup(ctxt, "runtime.addmoduledata", 0)
+       rel.Sym = ctxt.Syms.Lookup("runtime.addmoduledata", 0)
        rel.Type = obj.R_CALLARM
        rel.Add = 0xeafffffe // vomit
 
@@ -99,7 +99,7 @@ func gentext(ctxt *ld.Link) {
        if ld.Buildmode == ld.BuildmodePlugin {
                ctxt.Textp = append(ctxt.Textp, addmoduledata)
        }
-       initarray_entry := ld.Linklookup(ctxt, "go.link.addmoduledatainit", 0)
+       initarray_entry := ctxt.Syms.Lookup("go.link.addmoduledatainit", 0)
        initarray_entry.Attr |= ld.AttrReachable
        initarray_entry.Attr |= ld.AttrLocal
        initarray_entry.Type = obj.SINITARR
@@ -128,7 +128,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
 
                if targ.Type == obj.SDYNIMPORT {
                        addpltsym(ctxt, targ)
-                       r.Sym = ld.Linklookup(ctxt, ".plt", 0)
+                       r.Sym = ctxt.Syms.Lookup(".plt", 0)
                        r.Add = int64(braddoff(int32(r.Add), targ.Plt/4))
                }
 
@@ -158,7 +158,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
                }
 
                r.Type = obj.R_PCREL
-               r.Sym = ld.Linklookup(ctxt, ".got", 0)
+               r.Sym = ctxt.Syms.Lookup(".got", 0)
                r.Add += int64(targ.Got) + 4
                return true
 
@@ -170,7 +170,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
        case 256 + ld.R_ARM_GOTPC: // R_ARM_BASE_PREL
                r.Type = obj.R_PCREL
 
-               r.Sym = ld.Linklookup(ctxt, ".got", 0)
+               r.Sym = ctxt.Syms.Lookup(".got", 0)
                r.Add += 4
                return true
 
@@ -178,7 +178,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
                r.Type = obj.R_CALLARM
                if targ.Type == obj.SDYNIMPORT {
                        addpltsym(ctxt, targ)
-                       r.Sym = ld.Linklookup(ctxt, ".plt", 0)
+                       r.Sym = ctxt.Syms.Lookup(".plt", 0)
                        r.Add = int64(braddoff(int32(r.Add), targ.Plt/4))
                }
 
@@ -212,7 +212,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
                r.Type = obj.R_CALLARM
                if targ.Type == obj.SDYNIMPORT {
                        addpltsym(ctxt, targ)
-                       r.Sym = ld.Linklookup(ctxt, ".plt", 0)
+                       r.Sym = ctxt.Syms.Lookup(".plt", 0)
                        r.Add = int64(braddoff(int32(r.Add), targ.Plt/4))
                }
 
@@ -227,7 +227,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
        switch r.Type {
        case obj.R_CALLARM:
                addpltsym(ctxt, targ)
-               r.Sym = ld.Linklookup(ctxt, ".plt", 0)
+               r.Sym = ctxt.Syms.Lookup(".plt", 0)
                r.Add = int64(targ.Plt)
                return true
 
@@ -237,7 +237,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
                }
                if ld.Iself {
                        ld.Adddynsym(ctxt, targ)
-                       rel := ld.Linklookup(ctxt, ".rel", 0)
+                       rel := ctxt.Syms.Lookup(".rel", 0)
                        ld.Addaddrplus(ctxt, rel, s, int64(r.Off))
                        ld.Adduint32(ctxt, rel, ld.ELF32_R_INFO(uint32(targ.Dynid), ld.R_ARM_GLOB_DAT)) // we need a nil + A dynamic reloc
                        r.Type = obj.R_CONST                                                            // write r->add during relocsym
@@ -300,8 +300,8 @@ func elfreloc1(ctxt *ld.Link, r *ld.Reloc, sectoff int64) int {
 }
 
 func elfsetupplt(ctxt *ld.Link) {
-       plt := ld.Linklookup(ctxt, ".plt", 0)
-       got := ld.Linklookup(ctxt, ".got.plt", 0)
+       plt := ctxt.Syms.Lookup(".plt", 0)
+       got := ctxt.Syms.Lookup(".got.plt", 0)
        if plt.Size == 0 {
                // str lr, [sp, #-4]!
                ld.Adduint32(ctxt, plt, 0xe52de004)
@@ -457,25 +457,25 @@ func archreloc(ctxt *ld.Link, r *ld.Reloc, s *ld.Symbol, val *int64) int {
                return 0
 
        case obj.R_GOTOFF:
-               *val = ld.Symaddr(r.Sym) + r.Add - ld.Symaddr(ld.Linklookup(ctxt, ".got", 0))
+               *val = ld.Symaddr(r.Sym) + r.Add - ld.Symaddr(ctxt.Syms.Lookup(".got", 0))
                return 0
 
                // The following three arch specific relocations are only for generation of
        // Linux/ARM ELF's PLT entry (3 assembler instruction)
        case obj.R_PLT0: // add ip, pc, #0xXX00000
-               if ld.Symaddr(ld.Linklookup(ctxt, ".got.plt", 0)) < ld.Symaddr(ld.Linklookup(ctxt, ".plt", 0)) {
+               if ld.Symaddr(ctxt.Syms.Lookup(".got.plt", 0)) < ld.Symaddr(ctxt.Syms.Lookup(".plt", 0)) {
                        ld.Errorf(s, ".got.plt should be placed after .plt section.")
                }
-               *val = 0xe28fc600 + (0xff & (int64(uint32(ld.Symaddr(r.Sym)-(ld.Symaddr(ld.Linklookup(ctxt, ".plt", 0))+int64(r.Off))+r.Add)) >> 20))
+               *val = 0xe28fc600 + (0xff & (int64(uint32(ld.Symaddr(r.Sym)-(ld.Symaddr(ctxt.Syms.Lookup(".plt", 0))+int64(r.Off))+r.Add)) >> 20))
                return 0
 
        case obj.R_PLT1: // add ip, ip, #0xYY000
-               *val = 0xe28cca00 + (0xff & (int64(uint32(ld.Symaddr(r.Sym)-(ld.Symaddr(ld.Linklookup(ctxt, ".plt", 0))+int64(r.Off))+r.Add+4)) >> 12))
+               *val = 0xe28cca00 + (0xff & (int64(uint32(ld.Symaddr(r.Sym)-(ld.Symaddr(ctxt.Syms.Lookup(".plt", 0))+int64(r.Off))+r.Add+4)) >> 12))
 
                return 0
 
        case obj.R_PLT2: // ldr pc, [ip, #0xZZZ]!
-               *val = 0xe5bcf000 + (0xfff & int64(uint32(ld.Symaddr(r.Sym)-(ld.Symaddr(ld.Linklookup(ctxt, ".plt", 0))+int64(r.Off))+r.Add+8)))
+               *val = 0xe5bcf000 + (0xfff & int64(uint32(ld.Symaddr(r.Sym)-(ld.Symaddr(ctxt.Syms.Lookup(".plt", 0))+int64(r.Off))+r.Add+8)))
 
                return 0
 
@@ -516,9 +516,9 @@ func addpltsym(ctxt *ld.Link, s *ld.Symbol) {
        ld.Adddynsym(ctxt, s)
 
        if ld.Iself {
-               plt := ld.Linklookup(ctxt, ".plt", 0)
-               got := ld.Linklookup(ctxt, ".got.plt", 0)
-               rel := ld.Linklookup(ctxt, ".rel.plt", 0)
+               plt := ctxt.Syms.Lookup(".plt", 0)
+               got := ctxt.Syms.Lookup(".got.plt", 0)
+               rel := ctxt.Syms.Lookup(".rel.plt", 0)
                if plt.Size == 0 {
                        elfsetupplt(ctxt)
                }
@@ -552,7 +552,7 @@ func addgotsyminternal(ctxt *ld.Link, s *ld.Symbol) {
                return
        }
 
-       got := ld.Linklookup(ctxt, ".got", 0)
+       got := ctxt.Syms.Lookup(".got", 0)
        s.Got = int32(got.Size)
 
        ld.Addaddrplus(ctxt, got, s, 0)
@@ -569,12 +569,12 @@ func addgotsym(ctxt *ld.Link, s *ld.Symbol) {
        }
 
        ld.Adddynsym(ctxt, s)
-       got := ld.Linklookup(ctxt, ".got", 0)
+       got := ctxt.Syms.Lookup(".got", 0)
        s.Got = int32(got.Size)
        ld.Adduint32(ctxt, got, 0)
 
        if ld.Iself {
-               rel := ld.Linklookup(ctxt, ".rel", 0)
+               rel := ctxt.Syms.Lookup(".rel", 0)
                ld.Addaddrplus(ctxt, rel, got, int64(s.Got))
                ld.Adduint32(ctxt, rel, ld.ELF32_R_INFO(uint32(s.Dynid), ld.R_ARM_GLOB_DAT))
        } else {
@@ -673,7 +673,7 @@ func asmb(ctxt *ld.Link) {
                        ld.Asmplan9sym(ctxt)
                        ld.Cflush()
 
-                       sym := ld.Linklookup(ctxt, "pclntab", 0)
+                       sym := ctxt.Syms.Lookup("pclntab", 0)
                        if sym != nil {
                                ld.Lcsize = int32(len(sym.P))
                                for i := 0; int32(i) < ld.Lcsize; i++ {
index 65f598fad5d341360eb10817ec8ab254a6bb3258..4042d4209c2a294d3f6c26f7396ef1e1861497ed 100644 (file)
@@ -42,14 +42,14 @@ func gentext(ctxt *ld.Link) {
        if !ctxt.DynlinkingGo() {
                return
        }
-       addmoduledata := ld.Linklookup(ctxt, "runtime.addmoduledata", 0)
+       addmoduledata := ctxt.Syms.Lookup("runtime.addmoduledata", 0)
        if addmoduledata.Type == obj.STEXT {
                // we're linking a module containing the runtime -> no need for
                // an init function
                return
        }
        addmoduledata.Attr |= ld.AttrReachable
-       initfunc := ld.Linklookup(ctxt, "go.link.addmoduledata", 0)
+       initfunc := ctxt.Syms.Lookup("go.link.addmoduledata", 0)
        initfunc.Type = obj.STEXT
        initfunc.Attr |= ld.AttrLocal
        initfunc.Attr |= ld.AttrReachable
@@ -75,11 +75,11 @@ func gentext(ctxt *ld.Link) {
        rel = ld.Addrel(initfunc)
        rel.Off = 8
        rel.Siz = 4
-       rel.Sym = ld.Linklookup(ctxt, "runtime.addmoduledata", 0)
+       rel.Sym = ctxt.Syms.Lookup("runtime.addmoduledata", 0)
        rel.Type = obj.R_CALLARM64 // Really should be R_AARCH64_JUMP26 but doesn't seem to make any difference
 
        ctxt.Textp = append(ctxt.Textp, initfunc)
-       initarray_entry := ld.Linklookup(ctxt, "go.link.addmoduledatainit", 0)
+       initarray_entry := ctxt.Syms.Lookup("go.link.addmoduledatainit", 0)
        initarray_entry.Attr |= ld.AttrReachable
        initarray_entry.Attr |= ld.AttrLocal
        initarray_entry.Type = obj.SINITARR
@@ -330,7 +330,7 @@ func archreloc(ctxt *ld.Link, r *ld.Reloc, s *ld.Symbol, val *int64) int {
                return 0
 
        case obj.R_GOTOFF:
-               *val = ld.Symaddr(r.Sym) + r.Add - ld.Symaddr(ld.Linklookup(ctxt, ".got", 0))
+               *val = ld.Symaddr(r.Sym) + r.Add - ld.Symaddr(ctxt.Syms.Lookup(".got", 0))
                return 0
 
        case obj.R_ADDRARM64:
@@ -482,7 +482,7 @@ func asmb(ctxt *ld.Link) {
                        ld.Asmplan9sym(ctxt)
                        ld.Cflush()
 
-                       sym := ld.Linklookup(ctxt, "pclntab", 0)
+                       sym := ctxt.Syms.Lookup("pclntab", 0)
                        if sym != nil {
                                ld.Lcsize = int32(len(sym.P))
                                for i := 0; int32(i) < ld.Lcsize; i++ {
index f84e959d809aee7a80ab31649ed8fd1581a5d6f5..9d4966fe2f0250a9e9767001ad5bb4227977a414 100644 (file)
@@ -532,7 +532,7 @@ func relocsym(ctxt *Link, s *Symbol) {
                                r.Done = 0
                                r.Type = obj.R_ADDR
 
-                               r.Xsym = Linkrlookup(ctxt, r.Sym.Sect.Name, 0)
+                               r.Xsym = ctxt.Syms.ROLookup(r.Sym.Sect.Name, 0)
                                r.Xadd = r.Add + Symaddr(r.Sym) - int64(r.Sym.Sect.Vaddr)
                                o = r.Xadd
                                rs = r.Xsym
@@ -673,7 +673,7 @@ func (ctxt *Link) reloc() {
 
 func dynrelocsym(ctxt *Link, s *Symbol) {
        if (Headtype == obj.Hwindows || Headtype == obj.Hwindowsgui) && Linkmode != LinkExternal {
-               rel := Linklookup(ctxt, ".rel", 0)
+               rel := ctxt.Syms.Lookup(".rel", 0)
                if s == rel {
                        return
                }
@@ -987,12 +987,12 @@ func addstrdata1(ctxt *Link, arg string) {
 
 func addstrdata(ctxt *Link, name string, value string) {
        p := fmt.Sprintf("%s.str", name)
-       sp := Linklookup(ctxt, p, 0)
+       sp := ctxt.Syms.Lookup(p, 0)
 
        Addstring(ctxt, sp, value)
        sp.Type = obj.SRODATA
 
-       s := Linklookup(ctxt, name, 0)
+       s := ctxt.Syms.Lookup(name, 0)
        s.Size = 0
        s.Attr |= AttrDuplicateOK
        reachable := s.Attr.Reachable()
@@ -1037,7 +1037,7 @@ func Addstring(ctxt *Link, s *Symbol, str string) int64 {
 // addgostring adds str, as a Go string value, to s. symname is the name of the
 // symbol used to define the string data and must be unique per linked object.
 func addgostring(ctxt *Link, s *Symbol, symname, str string) {
-       sym := Linklookup(ctxt, symname, 0)
+       sym := ctxt.Syms.Lookup(symname, 0)
        if sym.Type != obj.Sxxx {
                Errorf(s, "duplicate symname in addgostring: %s", symname)
        }
@@ -1052,7 +1052,7 @@ func addgostring(ctxt *Link, s *Symbol, symname, str string) {
 
 func addinitarrdata(ctxt *Link, s *Symbol) {
        p := s.Name + ".ptr"
-       sp := Linklookup(ctxt, p, 0)
+       sp := ctxt.Syms.Lookup(p, 0)
        sp.Type = obj.SINITARR
        sp.Size = 0
        sp.Attr |= AttrDuplicateOK
@@ -1114,7 +1114,7 @@ type GCProg struct {
 
 func (p *GCProg) Init(ctxt *Link, name string) {
        p.ctxt = ctxt
-       p.sym = Linklookup(ctxt, name, 0)
+       p.sym = ctxt.Syms.Lookup(name, 0)
        p.w.Init(p.writeByte(ctxt))
        if debugGCProg {
                fmt.Fprintf(os.Stderr, "ld: start GCProg %s\n", name)
@@ -1330,7 +1330,7 @@ func (ctxt *Link) dodata() {
                        s.Value = int64(uint64(datsize) - sect.Vaddr)
 
                        // Resolve .TOC. symbol for this object file (ppc64)
-                       toc = Linkrlookup(ctxt, ".TOC.", int(s.Version))
+                       toc = ctxt.Syms.ROLookup(".TOC.", int(s.Version))
                        if toc != nil {
                                toc.Sect = sect
                                toc.Outer = s
@@ -1351,8 +1351,8 @@ func (ctxt *Link) dodata() {
        sect.Align = dataMaxAlign[obj.SNOPTRDATA]
        datsize = Rnd(datsize, int64(sect.Align))
        sect.Vaddr = uint64(datsize)
-       Linklookup(ctxt, "runtime.noptrdata", 0).Sect = sect
-       Linklookup(ctxt, "runtime.enoptrdata", 0).Sect = sect
+       ctxt.Syms.Lookup("runtime.noptrdata", 0).Sect = sect
+       ctxt.Syms.Lookup("runtime.enoptrdata", 0).Sect = sect
        for _, s := range data[obj.SNOPTRDATA] {
                datsize = aligndatsize(datsize, s)
                s.Sect = sect
@@ -1390,8 +1390,8 @@ func (ctxt *Link) dodata() {
        sect.Align = dataMaxAlign[obj.SDATA]
        datsize = Rnd(datsize, int64(sect.Align))
        sect.Vaddr = uint64(datsize)
-       Linklookup(ctxt, "runtime.data", 0).Sect = sect
-       Linklookup(ctxt, "runtime.edata", 0).Sect = sect
+       ctxt.Syms.Lookup("runtime.data", 0).Sect = sect
+       ctxt.Syms.Lookup("runtime.edata", 0).Sect = sect
        var gc GCProg
        gc.Init(ctxt, "runtime.gcdata")
        for _, s := range data[obj.SDATA] {
@@ -1411,8 +1411,8 @@ func (ctxt *Link) dodata() {
        sect.Align = dataMaxAlign[obj.SBSS]
        datsize = Rnd(datsize, int64(sect.Align))
        sect.Vaddr = uint64(datsize)
-       Linklookup(ctxt, "runtime.bss", 0).Sect = sect
-       Linklookup(ctxt, "runtime.ebss", 0).Sect = sect
+       ctxt.Syms.Lookup("runtime.bss", 0).Sect = sect
+       ctxt.Syms.Lookup("runtime.ebss", 0).Sect = sect
        gc = GCProg{}
        gc.Init(ctxt, "runtime.gcbss")
        for _, s := range data[obj.SBSS] {
@@ -1431,8 +1431,8 @@ func (ctxt *Link) dodata() {
        sect.Align = dataMaxAlign[obj.SNOPTRBSS]
        datsize = Rnd(datsize, int64(sect.Align))
        sect.Vaddr = uint64(datsize)
-       Linklookup(ctxt, "runtime.noptrbss", 0).Sect = sect
-       Linklookup(ctxt, "runtime.enoptrbss", 0).Sect = sect
+       ctxt.Syms.Lookup("runtime.noptrbss", 0).Sect = sect
+       ctxt.Syms.Lookup("runtime.enoptrbss", 0).Sect = sect
        for _, s := range data[obj.SNOPTRBSS] {
                datsize = aligndatsize(datsize, s)
                s.Sect = sect
@@ -1441,7 +1441,7 @@ func (ctxt *Link) dodata() {
        }
 
        sect.Length = uint64(datsize) - sect.Vaddr
-       Linklookup(ctxt, "runtime.end", 0).Sect = sect
+       ctxt.Syms.Lookup("runtime.end", 0).Sect = sect
        checkdatsize(ctxt, datsize, obj.SNOPTRBSS)
 
        if len(data[obj.STLSBSS]) > 0 {
@@ -1506,11 +1506,11 @@ func (ctxt *Link) dodata() {
        sect = addsection(segro, ".rodata", 04)
 
        sect.Vaddr = 0
-       Linklookup(ctxt, "runtime.rodata", 0).Sect = sect
-       Linklookup(ctxt, "runtime.erodata", 0).Sect = sect
+       ctxt.Syms.Lookup("runtime.rodata", 0).Sect = sect
+       ctxt.Syms.Lookup("runtime.erodata", 0).Sect = sect
        if !UseRelro() {
-               Linklookup(ctxt, "runtime.types", 0).Sect = sect
-               Linklookup(ctxt, "runtime.etypes", 0).Sect = sect
+               ctxt.Syms.Lookup("runtime.types", 0).Sect = sect
+               ctxt.Syms.Lookup("runtime.etypes", 0).Sect = sect
        }
        for _, symn := range obj.ReadOnly {
                align := dataMaxAlign[symn]
@@ -1590,8 +1590,8 @@ func (ctxt *Link) dodata() {
                sect = addrelrosection("")
 
                sect.Vaddr = 0
-               Linklookup(ctxt, "runtime.types", 0).Sect = sect
-               Linklookup(ctxt, "runtime.etypes", 0).Sect = sect
+               ctxt.Syms.Lookup("runtime.types", 0).Sect = sect
+               ctxt.Syms.Lookup("runtime.etypes", 0).Sect = sect
                for _, symnro := range obj.ReadOnly {
                        symn := obj.RelROMap[symnro]
                        align := dataMaxAlign[symn]
@@ -1623,8 +1623,8 @@ func (ctxt *Link) dodata() {
        sect.Align = dataMaxAlign[obj.STYPELINK]
        datsize = Rnd(datsize, int64(sect.Align))
        sect.Vaddr = uint64(datsize)
-       Linklookup(ctxt, "runtime.typelink", 0).Sect = sect
-       Linklookup(ctxt, "runtime.etypelink", 0).Sect = sect
+       ctxt.Syms.Lookup("runtime.typelink", 0).Sect = sect
+       ctxt.Syms.Lookup("runtime.etypelink", 0).Sect = sect
        for _, s := range data[obj.STYPELINK] {
                datsize = aligndatsize(datsize, s)
                s.Sect = sect
@@ -1640,8 +1640,8 @@ func (ctxt *Link) dodata() {
        sect.Align = dataMaxAlign[obj.SITABLINK]
        datsize = Rnd(datsize, int64(sect.Align))
        sect.Vaddr = uint64(datsize)
-       Linklookup(ctxt, "runtime.itablink", 0).Sect = sect
-       Linklookup(ctxt, "runtime.eitablink", 0).Sect = sect
+       ctxt.Syms.Lookup("runtime.itablink", 0).Sect = sect
+       ctxt.Syms.Lookup("runtime.eitablink", 0).Sect = sect
        for _, s := range data[obj.SITABLINK] {
                datsize = aligndatsize(datsize, s)
                s.Sect = sect
@@ -1657,8 +1657,8 @@ func (ctxt *Link) dodata() {
        sect.Align = dataMaxAlign[obj.SSYMTAB]
        datsize = Rnd(datsize, int64(sect.Align))
        sect.Vaddr = uint64(datsize)
-       Linklookup(ctxt, "runtime.symtab", 0).Sect = sect
-       Linklookup(ctxt, "runtime.esymtab", 0).Sect = sect
+       ctxt.Syms.Lookup("runtime.symtab", 0).Sect = sect
+       ctxt.Syms.Lookup("runtime.esymtab", 0).Sect = sect
        for _, s := range data[obj.SSYMTAB] {
                datsize = aligndatsize(datsize, s)
                s.Sect = sect
@@ -1674,8 +1674,8 @@ func (ctxt *Link) dodata() {
        sect.Align = dataMaxAlign[obj.SPCLNTAB]
        datsize = Rnd(datsize, int64(sect.Align))
        sect.Vaddr = uint64(datsize)
-       Linklookup(ctxt, "runtime.pclntab", 0).Sect = sect
-       Linklookup(ctxt, "runtime.epclntab", 0).Sect = sect
+       ctxt.Syms.Lookup("runtime.pclntab", 0).Sect = sect
+       ctxt.Syms.Lookup("runtime.epclntab", 0).Sect = sect
        for _, s := range data[obj.SPCLNTAB] {
                datsize = aligndatsize(datsize, s)
                s.Sect = sect
@@ -1856,7 +1856,7 @@ func (ctxt *Link) textbuildid() {
                return
        }
 
-       sym := Linklookup(ctxt, "go.buildid", 0)
+       sym := ctxt.Syms.Lookup("go.buildid", 0)
        sym.Attr |= AttrReachable
        // The \xff is invalid UTF-8, meant to make it less likely
        // to find one of these accidentally.
@@ -1880,10 +1880,10 @@ func (ctxt *Link) textaddress() {
        sect := Segtext.Sect
 
        sect.Align = int32(Funcalign)
-       Linklookup(ctxt, "runtime.text", 0).Sect = sect
-       Linklookup(ctxt, "runtime.etext", 0).Sect = sect
+       ctxt.Syms.Lookup("runtime.text", 0).Sect = sect
+       ctxt.Syms.Lookup("runtime.etext", 0).Sect = sect
        if Headtype == obj.Hwindows || Headtype == obj.Hwindowsgui {
-               Linklookup(ctxt, ".text", 0).Sect = sect
+               ctxt.Syms.Lookup(".text", 0).Sect = sect
        }
        va := uint64(*FlagTextAddr)
        sect.Vaddr = va
@@ -2045,12 +2045,12 @@ func (ctxt *Link) address() {
 
        var (
                text     = Segtext.Sect
-               rodata   = Linklookup(ctxt, "runtime.rodata", 0).Sect
-               typelink = Linklookup(ctxt, "runtime.typelink", 0).Sect
-               itablink = Linklookup(ctxt, "runtime.itablink", 0).Sect
-               symtab   = Linklookup(ctxt, "runtime.symtab", 0).Sect
-               pclntab  = Linklookup(ctxt, "runtime.pclntab", 0).Sect
-               types    = Linklookup(ctxt, "runtime.types", 0).Sect
+               rodata   = ctxt.Syms.Lookup("runtime.rodata", 0).Sect
+               typelink = ctxt.Syms.Lookup("runtime.typelink", 0).Sect
+               itablink = ctxt.Syms.Lookup("runtime.itablink", 0).Sect
+               symtab   = ctxt.Syms.Lookup("runtime.symtab", 0).Sect
+               pclntab  = ctxt.Syms.Lookup("runtime.pclntab", 0).Sect
+               types    = ctxt.Syms.Lookup("runtime.types", 0).Sect
        )
 
        for _, s := range datap {
@@ -2072,8 +2072,8 @@ func (ctxt *Link) address() {
        }
 
        if Buildmode == BuildmodeShared {
-               s := Linklookup(ctxt, "go.link.abihashbytes", 0)
-               sectSym := Linklookup(ctxt, ".note.go.abihash", 0)
+               s := ctxt.Syms.Lookup("go.link.abihashbytes", 0)
+               sectSym := ctxt.Syms.Lookup(".note.go.abihash", 0)
                s.Sect = sectSym.Sect
                s.Value = int64(sectSym.Sect.Vaddr + 16)
        }
@@ -2092,15 +2092,15 @@ func (ctxt *Link) address() {
        ctxt.xdefine("runtime.itablink", obj.SRODATA, int64(itablink.Vaddr))
        ctxt.xdefine("runtime.eitablink", obj.SRODATA, int64(itablink.Vaddr+itablink.Length))
 
-       sym := Linklookup(ctxt, "runtime.gcdata", 0)
+       sym := ctxt.Syms.Lookup("runtime.gcdata", 0)
        sym.Attr |= AttrLocal
        ctxt.xdefine("runtime.egcdata", obj.SRODATA, Symaddr(sym)+sym.Size)
-       Linklookup(ctxt, "runtime.egcdata", 0).Sect = sym.Sect
+       ctxt.Syms.Lookup("runtime.egcdata", 0).Sect = sym.Sect
 
-       sym = Linklookup(ctxt, "runtime.gcbss", 0)
+       sym = ctxt.Syms.Lookup("runtime.gcbss", 0)
        sym.Attr |= AttrLocal
        ctxt.xdefine("runtime.egcbss", obj.SRODATA, Symaddr(sym)+sym.Size)
-       Linklookup(ctxt, "runtime.egcbss", 0).Sect = sym.Sect
+       ctxt.Syms.Lookup("runtime.egcbss", 0).Sect = sym.Sect
 
        ctxt.xdefine("runtime.symtab", obj.SRODATA, int64(symtab.Vaddr))
        ctxt.xdefine("runtime.esymtab", obj.SRODATA, int64(symtab.Vaddr+symtab.Length))
index 0494479bcde1d693e0af44ec99599ff32ec69b8d..7cf47a3c0979ef7dd1e60a7f8e05e7a4f89c069d 100644 (file)
@@ -59,8 +59,8 @@ func deadcode(ctxt *Link) {
        d.init()
        d.flood()
 
-       callSym := Linkrlookup(ctxt, "reflect.Value.Call", 0)
-       methSym := Linkrlookup(ctxt, "reflect.Value.Method", 0)
+       callSym := ctxt.Syms.ROLookup("reflect.Value.Call", 0)
+       methSym := ctxt.Syms.ROLookup("reflect.Value.Method", 0)
        reflectSeen := false
 
        if ctxt.DynlinkingGo() {
@@ -249,7 +249,7 @@ func (d *deadcodepass) init() {
 
                        // We don't keep the go.plugin.exports symbol,
                        // but we do keep the symbols it refers to.
-                       exports := Linkrlookup(d.ctxt, "go.plugin.exports", 0)
+                       exports := d.ctxt.Syms.ROLookup("go.plugin.exports", 0)
                        for _, r := range exports.R {
                                d.mark(r.Sym, nil)
                        }
@@ -263,7 +263,7 @@ func (d *deadcodepass) init() {
        }
 
        for _, name := range names {
-               d.mark(Linkrlookup(d.ctxt, name, 0), nil)
+               d.mark(d.ctxt.Syms.ROLookup(name, 0), nil)
        }
 }
 
index 8fd6f3f7a2f7f1b1193e66000a218fb771bbd366..866103012c398a84a1b5d04c3004e8a3f4ddfcf7 100644 (file)
@@ -82,7 +82,7 @@ var gdbscript string
 var dwarfp []*Symbol
 
 func writeabbrev(ctxt *Link, syms []*Symbol) []*Symbol {
-       s := Linklookup(ctxt, ".debug_abbrev", 0)
+       s := ctxt.Syms.Lookup(".debug_abbrev", 0)
        s.Type = obj.SDWARFSECT
        abbrevsym = s
        Addbytes(ctxt, s, dwarf.GetAbbrev())
@@ -146,7 +146,7 @@ func newdie(ctxt *Link, parent *dwarf.DWDie, abbrev int, name string, version in
 
        if name != "" && (abbrev <= dwarf.DW_ABRV_VARIABLE || abbrev >= dwarf.DW_ABRV_NULLTYPE) {
                if abbrev != dwarf.DW_ABRV_VARIABLE || version == 0 {
-                       sym := Linklookup(ctxt, dwarf.InfoPrefix+name, version)
+                       sym := ctxt.Syms.Lookup(dwarf.InfoPrefix+name, version)
                        sym.Attr |= AttrHidden
                        sym.Type = obj.SDWARFINFO
                        die.Sym = sym
@@ -173,7 +173,7 @@ func walktypedef(die *dwarf.DWDie) *dwarf.DWDie {
 }
 
 func walksymtypedef(ctxt *Link, s *Symbol) *Symbol {
-       if t := Linkrlookup(ctxt, s.Name+"..def", int(s.Version)); t != nil {
+       if t := ctxt.Syms.ROLookup(s.Name+"..def", int(s.Version)); t != nil {
                return t
        }
        return s
@@ -200,7 +200,7 @@ var prefixBuf = []byte(dwarf.InfoPrefix)
 func find(ctxt *Link, name string) *Symbol {
        n := append(prefixBuf, name...)
        // The string allocation below is optimized away because it is only used in a map lookup.
-       s := Linkrlookup(ctxt, string(n), 0)
+       s := ctxt.Syms.ROLookup(string(n), 0)
        prefixBuf = n[:len(dwarf.InfoPrefix)]
        if s != nil && s.Type == obj.SDWARFINFO {
                return s
@@ -312,7 +312,7 @@ func newabslocexprattr(die *dwarf.DWDie, addr int64, sym *Symbol) {
 
 // Lookup predefined types
 func lookupOrDiag(ctxt *Link, n string) *Symbol {
-       s := Linkrlookup(ctxt, n, 0)
+       s := ctxt.Syms.ROLookup(n, 0)
        if s == nil || s.Size == 0 {
                Exitf("dwarf: missing type: %s", n)
        }
@@ -338,7 +338,7 @@ func dotypedef(ctxt *Link, parent *dwarf.DWDie, name string, def *dwarf.DWDie) {
                Errorf(nil, "dwarf: bad def in dotypedef")
        }
 
-       sym := Linklookup(ctxt, dtolsym(def.Sym).Name+"..def", 0)
+       sym := ctxt.Syms.Lookup(dtolsym(def.Sym).Name+"..def", 0)
        sym.Attr |= AttrHidden
        sym.Type = obj.SDWARFINFO
        def.Sym = sym
@@ -658,7 +658,7 @@ const (
 func mkinternaltype(ctxt *Link, abbrev int, typename, keyname, valname string, f func(*dwarf.DWDie)) *Symbol {
        name := mkinternaltypename(typename, keyname, valname)
        symname := dwarf.InfoPrefix + name
-       s := Linkrlookup(ctxt, symname, 0)
+       s := ctxt.Syms.ROLookup(symname, 0)
        if s != nil && s.Type == obj.SDWARFINFO {
                return s
        }
@@ -921,7 +921,7 @@ func getCompilationDir() string {
 func writelines(ctxt *Link, syms []*Symbol) ([]*Symbol, []*Symbol) {
        var dwarfctxt dwarf.Context = dwctxt{ctxt}
        if linesec == nil {
-               linesec = Linklookup(ctxt, ".debug_line", 0)
+               linesec = ctxt.Syms.Lookup(".debug_line", 0)
        }
        linesec.Type = obj.SDWARFSECT
        linesec.R = linesec.R[:0]
@@ -1004,7 +1004,7 @@ func writelines(ctxt *Link, syms []*Symbol) ([]*Symbol, []*Symbol) {
                epc = s.Value + s.Size
                epcs = s
 
-               dsym := Linklookup(ctxt, dwarf.InfoPrefix+s.Name, int(s.Version))
+               dsym := ctxt.Syms.Lookup(dwarf.InfoPrefix+s.Name, int(s.Version))
                dsym.Attr |= AttrHidden
                dsym.Type = obj.SDWARFINFO
                for _, r := range dsym.R {
@@ -1014,7 +1014,7 @@ func writelines(ctxt *Link, syms []*Symbol) ([]*Symbol, []*Symbol) {
                                        continue
                                }
                                n := nameFromDIESym(r.Sym)
-                               defgotype(ctxt, Linklookup(ctxt, "type."+n, 0))
+                               defgotype(ctxt, ctxt.Syms.Lookup("type."+n, 0))
                        }
                }
                funcs = append(funcs, dsym)
@@ -1101,7 +1101,7 @@ func appendPCDeltaCFA(b []byte, deltapc, cfa int64) []byte {
 func writeframes(ctxt *Link, syms []*Symbol) []*Symbol {
        var dwarfctxt dwarf.Context = dwctxt{ctxt}
        if framesec == nil {
-               framesec = Linklookup(ctxt, ".debug_frame", 0)
+               framesec = ctxt.Syms.Lookup(".debug_frame", 0)
        }
        framesec.Type = obj.SDWARFSECT
        framesec.R = framesec.R[:0]
@@ -1222,7 +1222,7 @@ const (
 
 func writeinfo(ctxt *Link, syms []*Symbol, funcs []*Symbol) []*Symbol {
        if infosec == nil {
-               infosec = Linklookup(ctxt, ".debug_info", 0)
+               infosec = ctxt.Syms.Lookup(".debug_info", 0)
        }
        infosec.R = infosec.R[:0]
        infosec.Type = obj.SDWARFINFO
@@ -1230,7 +1230,7 @@ func writeinfo(ctxt *Link, syms []*Symbol, funcs []*Symbol) []*Symbol {
        syms = append(syms, infosec)
 
        if arangessec == nil {
-               arangessec = Linklookup(ctxt, ".dwarfaranges", 0)
+               arangessec = ctxt.Syms.Lookup(".dwarfaranges", 0)
        }
        arangessec.R = arangessec.R[:0]
 
@@ -1290,7 +1290,7 @@ func ispubtype(die *dwarf.DWDie) bool {
 }
 
 func writepub(ctxt *Link, sname string, ispub func(*dwarf.DWDie) bool, syms []*Symbol) []*Symbol {
-       s := Linklookup(ctxt, sname, 0)
+       s := ctxt.Syms.Lookup(sname, 0)
        s.Type = obj.SDWARFSECT
        syms = append(syms, s)
 
@@ -1330,7 +1330,7 @@ func writepub(ctxt *Link, sname string, ispub func(*dwarf.DWDie) bool, syms []*S
  *  because we need die->offs of dwarf.DW_globals.
  */
 func writearanges(ctxt *Link, syms []*Symbol) []*Symbol {
-       s := Linklookup(ctxt, ".debug_aranges", 0)
+       s := ctxt.Syms.Lookup(".debug_aranges", 0)
        s.Type = obj.SDWARFSECT
        // The first tuple is aligned to a multiple of the size of a single tuple
        // (twice the size of an address)
@@ -1374,7 +1374,7 @@ func writearanges(ctxt *Link, syms []*Symbol) []*Symbol {
 func writegdbscript(ctxt *Link, syms []*Symbol) []*Symbol {
 
        if gdbscript != "" {
-               s := Linklookup(ctxt, ".debug_gdb_scripts", 0)
+               s := ctxt.Syms.Lookup(".debug_gdb_scripts", 0)
                s.Type = obj.SDWARFSECT
                syms = append(syms, s)
                Adduint8(ctxt, s, 1) // magic 1 byte?
@@ -1512,13 +1512,13 @@ func dwarfaddelfsectionsyms(ctxt *Link) {
        if Linkmode != LinkExternal {
                return
        }
-       sym := Linklookup(ctxt, ".debug_info", 0)
+       sym := ctxt.Syms.Lookup(".debug_info", 0)
        putelfsectionsym(sym, sym.Sect.Elfsect.shnum)
-       sym = Linklookup(ctxt, ".debug_abbrev", 0)
+       sym = ctxt.Syms.Lookup(".debug_abbrev", 0)
        putelfsectionsym(sym, sym.Sect.Elfsect.shnum)
-       sym = Linklookup(ctxt, ".debug_line", 0)
+       sym = ctxt.Syms.Lookup(".debug_line", 0)
        putelfsectionsym(sym, sym.Sect.Elfsect.shnum)
-       sym = Linklookup(ctxt, ".debug_frame", 0)
+       sym = ctxt.Syms.Lookup(".debug_frame", 0)
        putelfsectionsym(sym, sym.Sect.Elfsect.shnum)
 }
 
index 9d0b5ce325cf9423854909c59610164356a3d481..35fc05f41f3029ef47860112353f3dee12b47f42 100644 (file)
@@ -1445,7 +1445,7 @@ func elfdynhash(ctxt *Link) {
        }
 
        nsym := Nelfsym
-       s := Linklookup(ctxt, ".hash", 0)
+       s := ctxt.Syms.Lookup(".hash", 0)
        s.Type = obj.SELFROSECT
        s.Attr |= AttrReachable
 
@@ -1501,9 +1501,9 @@ func elfdynhash(ctxt *Link) {
        }
 
        // version symbols
-       dynstr := Linklookup(ctxt, ".dynstr", 0)
+       dynstr := ctxt.Syms.Lookup(".dynstr", 0)
 
-       s = Linklookup(ctxt, ".gnu.version_r", 0)
+       s = ctxt.Syms.Lookup(".gnu.version_r", 0)
        i = 2
        nfile := 0
        var j int
@@ -1544,7 +1544,7 @@ func elfdynhash(ctxt *Link) {
        }
 
        // version references
-       s = Linklookup(ctxt, ".gnu.version", 0)
+       s = ctxt.Syms.Lookup(".gnu.version", 0)
 
        for i := 0; i < nsym; i++ {
                if i == 0 {
@@ -1556,15 +1556,15 @@ func elfdynhash(ctxt *Link) {
                }
        }
 
-       s = Linklookup(ctxt, ".dynamic", 0)
+       s = ctxt.Syms.Lookup(".dynamic", 0)
        elfverneed = nfile
        if elfverneed != 0 {
-               elfwritedynentsym(ctxt, s, DT_VERNEED, Linklookup(ctxt, ".gnu.version_r", 0))
+               elfwritedynentsym(ctxt, s, DT_VERNEED, ctxt.Syms.Lookup(".gnu.version_r", 0))
                Elfwritedynent(ctxt, s, DT_VERNEEDNUM, uint64(nfile))
-               elfwritedynentsym(ctxt, s, DT_VERSYM, Linklookup(ctxt, ".gnu.version", 0))
+               elfwritedynentsym(ctxt, s, DT_VERSYM, ctxt.Syms.Lookup(".gnu.version", 0))
        }
 
-       sy := Linklookup(ctxt, elfRelType+".plt", 0)
+       sy := ctxt.Syms.Lookup(elfRelType+".plt", 0)
        if sy.Size > 0 {
                if elfRelType == ".rela" {
                        Elfwritedynent(ctxt, s, DT_PLTREL, DT_RELA)
@@ -1807,7 +1807,7 @@ func Elfemitreloc(ctxt *Link) {
 }
 
 func addgonote(ctxt *Link, sectionName string, tag uint32, desc []byte) {
-       s := Linklookup(ctxt, sectionName, 0)
+       s := ctxt.Syms.Lookup(sectionName, 0)
        s.Attr |= AttrReachable
        s.Type = obj.SELFROSECT
        // namesz
@@ -1835,7 +1835,7 @@ func (ctxt *Link) doelf() {
        }
 
        /* predefine strings we need for section headers */
-       shstrtab := Linklookup(ctxt, ".shstrtab", 0)
+       shstrtab := ctxt.Syms.Lookup(".shstrtab", 0)
 
        shstrtab.Type = obj.SELFROSECT
        shstrtab.Attr |= AttrReachable
@@ -1946,7 +1946,7 @@ func (ctxt *Link) doelf() {
                Addstring(ctxt, shstrtab, ".gnu.version_r")
 
                /* dynamic symbol table - first entry all zeros */
-               s := Linklookup(ctxt, ".dynsym", 0)
+               s := ctxt.Syms.Lookup(".dynsym", 0)
 
                s.Type = obj.SELFROSECT
                s.Attr |= AttrReachable
@@ -1957,7 +1957,7 @@ func (ctxt *Link) doelf() {
                }
 
                /* dynamic string table */
-               s = Linklookup(ctxt, ".dynstr", 0)
+               s = ctxt.Syms.Lookup(".dynstr", 0)
 
                s.Type = obj.SELFROSECT
                s.Attr |= AttrReachable
@@ -1967,34 +1967,34 @@ func (ctxt *Link) doelf() {
                dynstr := s
 
                /* relocation table */
-               s = Linklookup(ctxt, elfRelType, 0)
+               s = ctxt.Syms.Lookup(elfRelType, 0)
                s.Attr |= AttrReachable
                s.Type = obj.SELFROSECT
 
                /* global offset table */
-               s = Linklookup(ctxt, ".got", 0)
+               s = ctxt.Syms.Lookup(".got", 0)
 
                s.Attr |= AttrReachable
                s.Type = obj.SELFGOT // writable
 
                /* ppc64 glink resolver */
                if SysArch.Family == sys.PPC64 {
-                       s := Linklookup(ctxt, ".glink", 0)
+                       s := ctxt.Syms.Lookup(".glink", 0)
                        s.Attr |= AttrReachable
                        s.Type = obj.SELFRXSECT
                }
 
                /* hash */
-               s = Linklookup(ctxt, ".hash", 0)
+               s = ctxt.Syms.Lookup(".hash", 0)
 
                s.Attr |= AttrReachable
                s.Type = obj.SELFROSECT
 
-               s = Linklookup(ctxt, ".got.plt", 0)
+               s = ctxt.Syms.Lookup(".got.plt", 0)
                s.Attr |= AttrReachable
                s.Type = obj.SELFSECT // writable
 
-               s = Linklookup(ctxt, ".plt", 0)
+               s = ctxt.Syms.Lookup(".plt", 0)
 
                s.Attr |= AttrReachable
                if SysArch.Family == sys.PPC64 {
@@ -2007,20 +2007,20 @@ func (ctxt *Link) doelf() {
 
                Thearch.Elfsetupplt(ctxt)
 
-               s = Linklookup(ctxt, elfRelType+".plt", 0)
+               s = ctxt.Syms.Lookup(elfRelType+".plt", 0)
                s.Attr |= AttrReachable
                s.Type = obj.SELFROSECT
 
-               s = Linklookup(ctxt, ".gnu.version", 0)
+               s = ctxt.Syms.Lookup(".gnu.version", 0)
                s.Attr |= AttrReachable
                s.Type = obj.SELFROSECT
 
-               s = Linklookup(ctxt, ".gnu.version_r", 0)
+               s = ctxt.Syms.Lookup(".gnu.version_r", 0)
                s.Attr |= AttrReachable
                s.Type = obj.SELFROSECT
 
                /* define dynamic elf table */
-               s = Linklookup(ctxt, ".dynamic", 0)
+               s = ctxt.Syms.Lookup(".dynamic", 0)
 
                s.Attr |= AttrReachable
                s.Type = obj.SELFSECT // writable
@@ -2028,23 +2028,23 @@ func (ctxt *Link) doelf() {
                /*
                 * .dynamic table
                 */
-               elfwritedynentsym(ctxt, s, DT_HASH, Linklookup(ctxt, ".hash", 0))
+               elfwritedynentsym(ctxt, s, DT_HASH, ctxt.Syms.Lookup(".hash", 0))
 
-               elfwritedynentsym(ctxt, s, DT_SYMTAB, Linklookup(ctxt, ".dynsym", 0))
+               elfwritedynentsym(ctxt, s, DT_SYMTAB, ctxt.Syms.Lookup(".dynsym", 0))
                if elf64 {
                        Elfwritedynent(ctxt, s, DT_SYMENT, ELF64SYMSIZE)
                } else {
                        Elfwritedynent(ctxt, s, DT_SYMENT, ELF32SYMSIZE)
                }
-               elfwritedynentsym(ctxt, s, DT_STRTAB, Linklookup(ctxt, ".dynstr", 0))
-               elfwritedynentsymsize(ctxt, s, DT_STRSZ, Linklookup(ctxt, ".dynstr", 0))
+               elfwritedynentsym(ctxt, s, DT_STRTAB, ctxt.Syms.Lookup(".dynstr", 0))
+               elfwritedynentsymsize(ctxt, s, DT_STRSZ, ctxt.Syms.Lookup(".dynstr", 0))
                if elfRelType == ".rela" {
-                       elfwritedynentsym(ctxt, s, DT_RELA, Linklookup(ctxt, ".rela", 0))
-                       elfwritedynentsymsize(ctxt, s, DT_RELASZ, Linklookup(ctxt, ".rela", 0))
+                       elfwritedynentsym(ctxt, s, DT_RELA, ctxt.Syms.Lookup(".rela", 0))
+                       elfwritedynentsymsize(ctxt, s, DT_RELASZ, ctxt.Syms.Lookup(".rela", 0))
                        Elfwritedynent(ctxt, s, DT_RELAENT, ELF64RELASIZE)
                } else {
-                       elfwritedynentsym(ctxt, s, DT_REL, Linklookup(ctxt, ".rel", 0))
-                       elfwritedynentsymsize(ctxt, s, DT_RELSZ, Linklookup(ctxt, ".rel", 0))
+                       elfwritedynentsym(ctxt, s, DT_REL, ctxt.Syms.Lookup(".rel", 0))
+                       elfwritedynentsymsize(ctxt, s, DT_RELSZ, ctxt.Syms.Lookup(".rel", 0))
                        Elfwritedynent(ctxt, s, DT_RELENT, ELF32RELSIZE)
                }
 
@@ -2053,11 +2053,11 @@ func (ctxt *Link) doelf() {
                }
 
                if SysArch.Family == sys.PPC64 {
-                       elfwritedynentsym(ctxt, s, DT_PLTGOT, Linklookup(ctxt, ".plt", 0))
+                       elfwritedynentsym(ctxt, s, DT_PLTGOT, ctxt.Syms.Lookup(".plt", 0))
                } else if SysArch.Family == sys.S390X {
-                       elfwritedynentsym(ctxt, s, DT_PLTGOT, Linklookup(ctxt, ".got", 0))
+                       elfwritedynentsym(ctxt, s, DT_PLTGOT, ctxt.Syms.Lookup(".got", 0))
                } else {
-                       elfwritedynentsym(ctxt, s, DT_PLTGOT, Linklookup(ctxt, ".got.plt", 0))
+                       elfwritedynentsym(ctxt, s, DT_PLTGOT, ctxt.Syms.Lookup(".got.plt", 0))
                }
 
                if SysArch.Family == sys.PPC64 {
@@ -2074,7 +2074,7 @@ func (ctxt *Link) doelf() {
        if Buildmode == BuildmodeShared {
                // The go.link.abihashbytes symbol will be pointed at the appropriate
                // part of the .note.go.abihash section in data.go:func address().
-               s := Linklookup(ctxt, "go.link.abihashbytes", 0)
+               s := ctxt.Syms.Lookup("go.link.abihashbytes", 0)
                s.Attr |= AttrLocal
                s.Type = obj.SRODATA
                s.Attr |= AttrSpecial
@@ -2321,13 +2321,13 @@ func Asmbelf(ctxt *Link, symo int64) {
                sh.link = uint32(elfshname(".dynstr").shnum)
 
                // sh->info = index of first non-local symbol (number of local symbols)
-               shsym(ctxt, sh, Linklookup(ctxt, ".dynsym", 0))
+               shsym(ctxt, sh, ctxt.Syms.Lookup(".dynsym", 0))
 
                sh = elfshname(".dynstr")
                sh.type_ = SHT_STRTAB
                sh.flags = SHF_ALLOC
                sh.addralign = 1
-               shsym(ctxt, sh, Linklookup(ctxt, ".dynstr", 0))
+               shsym(ctxt, sh, ctxt.Syms.Lookup(".dynstr", 0))
 
                if elfverneed != 0 {
                        sh := elfshname(".gnu.version")
@@ -2336,7 +2336,7 @@ func Asmbelf(ctxt *Link, symo int64) {
                        sh.addralign = 2
                        sh.link = uint32(elfshname(".dynsym").shnum)
                        sh.entsize = 2
-                       shsym(ctxt, sh, Linklookup(ctxt, ".gnu.version", 0))
+                       shsym(ctxt, sh, ctxt.Syms.Lookup(".gnu.version", 0))
 
                        sh = elfshname(".gnu.version_r")
                        sh.type_ = SHT_GNU_VERNEED
@@ -2344,7 +2344,7 @@ func Asmbelf(ctxt *Link, symo int64) {
                        sh.addralign = uint64(SysArch.RegSize)
                        sh.info = uint32(elfverneed)
                        sh.link = uint32(elfshname(".dynstr").shnum)
-                       shsym(ctxt, sh, Linklookup(ctxt, ".gnu.version_r", 0))
+                       shsym(ctxt, sh, ctxt.Syms.Lookup(".gnu.version_r", 0))
                }
 
                if elfRelType == ".rela" {
@@ -2355,7 +2355,7 @@ func Asmbelf(ctxt *Link, symo int64) {
                        sh.addralign = uint64(SysArch.RegSize)
                        sh.link = uint32(elfshname(".dynsym").shnum)
                        sh.info = uint32(elfshname(".plt").shnum)
-                       shsym(ctxt, sh, Linklookup(ctxt, ".rela.plt", 0))
+                       shsym(ctxt, sh, ctxt.Syms.Lookup(".rela.plt", 0))
 
                        sh = elfshname(".rela")
                        sh.type_ = SHT_RELA
@@ -2363,7 +2363,7 @@ func Asmbelf(ctxt *Link, symo int64) {
                        sh.entsize = ELF64RELASIZE
                        sh.addralign = 8
                        sh.link = uint32(elfshname(".dynsym").shnum)
-                       shsym(ctxt, sh, Linklookup(ctxt, ".rela", 0))
+                       shsym(ctxt, sh, ctxt.Syms.Lookup(".rela", 0))
                } else {
                        sh := elfshname(".rel.plt")
                        sh.type_ = SHT_REL
@@ -2371,7 +2371,7 @@ func Asmbelf(ctxt *Link, symo int64) {
                        sh.entsize = ELF32RELSIZE
                        sh.addralign = 4
                        sh.link = uint32(elfshname(".dynsym").shnum)
-                       shsym(ctxt, sh, Linklookup(ctxt, ".rel.plt", 0))
+                       shsym(ctxt, sh, ctxt.Syms.Lookup(".rel.plt", 0))
 
                        sh = elfshname(".rel")
                        sh.type_ = SHT_REL
@@ -2379,7 +2379,7 @@ func Asmbelf(ctxt *Link, symo int64) {
                        sh.entsize = ELF32RELSIZE
                        sh.addralign = 4
                        sh.link = uint32(elfshname(".dynsym").shnum)
-                       shsym(ctxt, sh, Linklookup(ctxt, ".rel", 0))
+                       shsym(ctxt, sh, ctxt.Syms.Lookup(".rel", 0))
                }
 
                if eh.machine == EM_PPC64 {
@@ -2387,7 +2387,7 @@ func Asmbelf(ctxt *Link, symo int64) {
                        sh.type_ = SHT_PROGBITS
                        sh.flags = SHF_ALLOC + SHF_EXECINSTR
                        sh.addralign = 4
-                       shsym(ctxt, sh, Linklookup(ctxt, ".glink", 0))
+                       shsym(ctxt, sh, ctxt.Syms.Lookup(".glink", 0))
                }
 
                sh = elfshname(".plt")
@@ -2408,7 +2408,7 @@ func Asmbelf(ctxt *Link, symo int64) {
                        sh.entsize = 4
                }
                sh.addralign = sh.entsize
-               shsym(ctxt, sh, Linklookup(ctxt, ".plt", 0))
+               shsym(ctxt, sh, ctxt.Syms.Lookup(".plt", 0))
 
                // On ppc64, .got comes from the input files, so don't
                // create it here, and .got.plt is not used.
@@ -2418,14 +2418,14 @@ func Asmbelf(ctxt *Link, symo int64) {
                        sh.flags = SHF_ALLOC + SHF_WRITE
                        sh.entsize = uint64(SysArch.RegSize)
                        sh.addralign = uint64(SysArch.RegSize)
-                       shsym(ctxt, sh, Linklookup(ctxt, ".got", 0))
+                       shsym(ctxt, sh, ctxt.Syms.Lookup(".got", 0))
 
                        sh = elfshname(".got.plt")
                        sh.type_ = SHT_PROGBITS
                        sh.flags = SHF_ALLOC + SHF_WRITE
                        sh.entsize = uint64(SysArch.RegSize)
                        sh.addralign = uint64(SysArch.RegSize)
-                       shsym(ctxt, sh, Linklookup(ctxt, ".got.plt", 0))
+                       shsym(ctxt, sh, ctxt.Syms.Lookup(".got.plt", 0))
                }
 
                sh = elfshname(".hash")
@@ -2434,7 +2434,7 @@ func Asmbelf(ctxt *Link, symo int64) {
                sh.entsize = 4
                sh.addralign = uint64(SysArch.RegSize)
                sh.link = uint32(elfshname(".dynsym").shnum)
-               shsym(ctxt, sh, Linklookup(ctxt, ".hash", 0))
+               shsym(ctxt, sh, ctxt.Syms.Lookup(".hash", 0))
 
                /* sh and PT_DYNAMIC for .dynamic section */
                sh = elfshname(".dynamic")
@@ -2444,7 +2444,7 @@ func Asmbelf(ctxt *Link, symo int64) {
                sh.entsize = 2 * uint64(SysArch.RegSize)
                sh.addralign = uint64(SysArch.RegSize)
                sh.link = uint32(elfshname(".dynstr").shnum)
-               shsym(ctxt, sh, Linklookup(ctxt, ".dynamic", 0))
+               shsym(ctxt, sh, ctxt.Syms.Lookup(".dynamic", 0))
                ph := newElfPhdr()
                ph.type_ = PT_DYNAMIC
                ph.flags = PF_R + PF_W
@@ -2489,7 +2489,7 @@ elfobj:
        sh := elfshname(".shstrtab")
        sh.type_ = SHT_STRTAB
        sh.addralign = 1
-       shsym(ctxt, sh, Linklookup(ctxt, ".shstrtab", 0))
+       shsym(ctxt, sh, ctxt.Syms.Lookup(".shstrtab", 0))
        eh.shstrndx = uint16(sh.shnum)
 
        // put these sections early in the list
@@ -2639,10 +2639,10 @@ func Elfadddynsym(ctxt *Link, s *Symbol) {
                s.Dynid = int32(Nelfsym)
                Nelfsym++
 
-               d := Linklookup(ctxt, ".dynsym", 0)
+               d := ctxt.Syms.Lookup(".dynsym", 0)
 
                name := s.Extname
-               Adduint32(ctxt, d, uint32(Addstring(ctxt, Linklookup(ctxt, ".dynstr", 0), name)))
+               Adduint32(ctxt, d, uint32(Addstring(ctxt, ctxt.Syms.Lookup(".dynstr", 0), name)))
 
                /* type */
                t := STB_GLOBAL << 4
@@ -2675,18 +2675,18 @@ func Elfadddynsym(ctxt *Link, s *Symbol) {
                Adduint64(ctxt, d, uint64(s.Size))
 
                if SysArch.Family == sys.AMD64 && !s.Attr.CgoExportDynamic() && s.Dynimplib != "" && !seenlib[s.Dynimplib] {
-                       Elfwritedynent(ctxt, Linklookup(ctxt, ".dynamic", 0), DT_NEEDED, uint64(Addstring(ctxt, Linklookup(ctxt, ".dynstr", 0), s.Dynimplib)))
+                       Elfwritedynent(ctxt, ctxt.Syms.Lookup(".dynamic", 0), DT_NEEDED, uint64(Addstring(ctxt, ctxt.Syms.Lookup(".dynstr", 0), s.Dynimplib)))
                }
        } else {
                s.Dynid = int32(Nelfsym)
                Nelfsym++
 
-               d := Linklookup(ctxt, ".dynsym", 0)
+               d := ctxt.Syms.Lookup(".dynsym", 0)
 
                /* name */
                name := s.Extname
 
-               Adduint32(ctxt, d, uint32(Addstring(ctxt, Linklookup(ctxt, ".dynstr", 0), name)))
+               Adduint32(ctxt, d, uint32(Addstring(ctxt, ctxt.Syms.Lookup(".dynstr", 0), name)))
 
                /* value */
                if s.Type == obj.SDYNIMPORT {
index 935beb6648deec38ef590b6fd7b54f591f08ea81..663caf7639aee0b0ce9363cb45b1a896418d8296 100644 (file)
@@ -187,7 +187,7 @@ func loadcgo(ctxt *Link, file string, pkg string, p string) {
                        if i := strings.Index(remote, "#"); i >= 0 {
                                remote, q = remote[:i], remote[i+1:]
                        }
-                       s = Linklookup(ctxt, local, 0)
+                       s = ctxt.Syms.Lookup(local, 0)
                        if local != f[1] {
                        }
                        if s.Type == 0 || s.Type == obj.SXREF || s.Type == obj.SHOSTOBJ {
@@ -208,7 +208,7 @@ func loadcgo(ctxt *Link, file string, pkg string, p string) {
                                goto err
                        }
                        local = f[1]
-                       s = Linklookup(ctxt, local, 0)
+                       s = ctxt.Syms.Lookup(local, 0)
                        s.Type = obj.SHOSTOBJ
                        s.Size = 0
                        continue
@@ -225,11 +225,11 @@ func loadcgo(ctxt *Link, file string, pkg string, p string) {
                                remote = local
                        }
                        local = expandpkg(local, pkg)
-                       s = Linklookup(ctxt, local, 0)
+                       s = ctxt.Syms.Lookup(local, 0)
 
                        switch Buildmode {
                        case BuildmodeCShared, BuildmodeCArchive, BuildmodePlugin:
-                               if s == Linklookup(ctxt, "main", 0) {
+                               if s == ctxt.Syms.Lookup("main", 0) {
                                        continue
                                }
                        }
@@ -305,11 +305,11 @@ func adddynlib(ctxt *Link, lib string) {
        seenlib[lib] = true
 
        if Iself {
-               s := Linklookup(ctxt, ".dynstr", 0)
+               s := ctxt.Syms.Lookup(".dynstr", 0)
                if s.Size == 0 {
                        Addstring(ctxt, s, "")
                }
-               Elfwritedynent(ctxt, Linklookup(ctxt, ".dynamic", 0), DT_NEEDED, uint64(Addstring(ctxt, s, lib)))
+               Elfwritedynent(ctxt, ctxt.Syms.Lookup(".dynamic", 0), DT_NEEDED, uint64(Addstring(ctxt, s, lib)))
        } else {
                Errorf(nil, "adddynlib: unsupported binary format")
        }
@@ -355,7 +355,7 @@ func fieldtrack(ctxt *Link) {
        if *flagFieldTrack == "" {
                return
        }
-       s := Linklookup(ctxt, *flagFieldTrack, 0)
+       s := ctxt.Syms.Lookup(*flagFieldTrack, 0)
        if !s.Attr.Reachable() {
                return
        }
index 8468a9102eae45c63544a42e2ee03a12562a4b31..e26be08030be15d20a1dca08d704d80de5b52fa7 100644 (file)
@@ -702,7 +702,7 @@ func ldelf(ctxt *Link, f *bio.Reader, pkg string, length int64, pn string) {
                }
 
                name = fmt.Sprintf("%s(%s)", pkg, sect.name)
-               s = Linklookup(ctxt, name, ctxt.Syms.Version)
+               s = ctxt.Syms.Lookup(name, ctxt.Syms.Version)
 
                switch int(sect.flags) & (ElfSectFlagAlloc | ElfSectFlagWrite | ElfSectFlagExec) {
                default:
@@ -1033,7 +1033,7 @@ func readelfsym(ctxt *Link, elfobj *ElfObj, i int, sym *ElfSym, needSym int) (er
                switch sym.bind {
                case ElfSymBindGlobal:
                        if needSym != 0 {
-                               s = Linklookup(ctxt, sym.name, 0)
+                               s = ctxt.Syms.Lookup(sym.name, 0)
 
                                // for global scoped hidden symbols we should insert it into
                                // symbol hash table, but mark them as hidden.
@@ -1059,7 +1059,7 @@ func readelfsym(ctxt *Link, elfobj *ElfObj, i int, sym *ElfSym, needSym int) (er
                                // We need to be able to look this up,
                                // so put it in the hash table.
                                if needSym != 0 {
-                                       s = Linklookup(ctxt, sym.name, ctxt.Syms.Version)
+                                       s = ctxt.Syms.Lookup(sym.name, ctxt.Syms.Version)
                                        s.Type |= obj.SHIDDEN
                                }
 
@@ -1077,7 +1077,7 @@ func readelfsym(ctxt *Link, elfobj *ElfObj, i int, sym *ElfSym, needSym int) (er
 
                case ElfSymBindWeak:
                        if needSym != 0 {
-                               s = Linklookup(ctxt, sym.name, 0)
+                               s = ctxt.Syms.Lookup(sym.name, 0)
                                if sym.other == 2 {
                                        s.Type |= obj.SHIDDEN
                                }
index e78711014c22f8a393e6f19bbf6b176c67ca06e6..ab160874403c2059f258f5d26f216625b7a8c9de 100644 (file)
@@ -587,7 +587,7 @@ func ldmacho(ctxt *Link, f *bio.Reader, pkg string, length int64, pn string) {
                        continue
                }
                name = fmt.Sprintf("%s(%s/%s)", pkg, sect.segname, sect.name)
-               s = Linklookup(ctxt, name, ctxt.Syms.Version)
+               s = ctxt.Syms.Lookup(name, ctxt.Syms.Version)
                if s.Type != 0 {
                        err = fmt.Errorf("duplicate %s/%s", sect.segname, sect.name)
                        goto bad
@@ -636,7 +636,7 @@ func ldmacho(ctxt *Link, f *bio.Reader, pkg string, length int64, pn string) {
                if sym.type_&N_EXT == 0 {
                        v = ctxt.Syms.Version
                }
-               s = Linklookup(ctxt, name, v)
+               s = ctxt.Syms.Lookup(name, v)
                if sym.type_&N_EXT == 0 {
                        s.Attr |= AttrDuplicateOK
                }
index 56f225f50a1bd196c70450e5106e34d772ed75d6..a0090a160a969594e7864217c4926fee2b72af2b 100644 (file)
@@ -246,7 +246,7 @@ func ldpe(ctxt *Link, f *bio.Reader, pkg string, length int64, pn string) {
                }
 
                name = fmt.Sprintf("%s(%s)", pkg, sect.name)
-               s = Linklookup(ctxt, name, ctxt.Syms.Version)
+               s = ctxt.Syms.Lookup(name, ctxt.Syms.Version)
 
                switch sect.sh.Characteristics & (IMAGE_SCN_CNT_UNINITIALIZED_DATA | IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_WRITE | IMAGE_SCN_CNT_CODE | IMAGE_SCN_MEM_EXECUTE) {
                case IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ: //.rdata
@@ -511,10 +511,10 @@ func readpesym(ctxt *Link, peobj *PeObj, i int, y **PeSym) (err error) {
        case IMAGE_SYM_DTYPE_FUNCTION, IMAGE_SYM_DTYPE_NULL:
                switch sym.sclass {
                case IMAGE_SYM_CLASS_EXTERNAL: //global
-                       s = Linklookup(ctxt, name, 0)
+                       s = ctxt.Syms.Lookup(name, 0)
 
                case IMAGE_SYM_CLASS_NULL, IMAGE_SYM_CLASS_STATIC, IMAGE_SYM_CLASS_LABEL:
-                       s = Linklookup(ctxt, name, ctxt.Syms.Version)
+                       s = ctxt.Syms.Lookup(name, ctxt.Syms.Version)
                        s.Attr |= AttrDuplicateOK
 
                default:
index 0a524a934a2e4e81918ffa1e634d9c4fadeffadf..c288908a860e268021f84082734c0ef69200dd55 100644 (file)
@@ -167,7 +167,7 @@ func (ctxt *Link) DynlinkingGo() bool {
        if !ctxt.Loaded {
                panic("DynlinkingGo called before all symbols loaded")
        }
-       canUsePlugins := Linkrlookup(ctxt, "plugin.Open", 0) != nil
+       canUsePlugins := ctxt.Syms.ROLookup("plugin.Open", 0) != nil
        return Buildmode == BuildmodeShared || *FlagLinkshared || Buildmode == BuildmodePlugin || canUsePlugins
 }
 
@@ -391,11 +391,11 @@ func (ctxt *Link) findLibPath(libname string) string {
 func (ctxt *Link) loadlib() {
        switch Buildmode {
        case BuildmodeCShared, BuildmodePlugin:
-               s := Linklookup(ctxt, "runtime.islibrary", 0)
+               s := ctxt.Syms.Lookup("runtime.islibrary", 0)
                s.Attr |= AttrDuplicateOK
                Adduint8(ctxt, s, 1)
        case BuildmodeCArchive:
-               s := Linklookup(ctxt, "runtime.isarchive", 0)
+               s := ctxt.Syms.Lookup("runtime.isarchive", 0)
                s.Attr |= AttrDuplicateOK
                Adduint8(ctxt, s, 1)
        }
@@ -435,7 +435,7 @@ func (ctxt *Link) loadlib() {
        determineLinkMode(ctxt)
 
        if Linkmode == LinkExternal && SysArch.Family == sys.PPC64 {
-               toc := Linklookup(ctxt, ".TOC.", 0)
+               toc := ctxt.Syms.Lookup(".TOC.", 0)
                toc.Type = obj.SDYNIMPORT
        }
 
@@ -476,7 +476,7 @@ func (ctxt *Link) loadlib() {
                }
        }
 
-       tlsg := Linklookup(ctxt, "runtime.tlsg", 0)
+       tlsg := ctxt.Syms.Lookup("runtime.tlsg", 0)
 
        // runtime.tlsg is used for external linking on platforms that do not define
        // a variable to hold g in assembly (currently only intel).
@@ -491,10 +491,10 @@ func (ctxt *Link) loadlib() {
 
        var moduledata *Symbol
        if Buildmode == BuildmodePlugin {
-               moduledata = Linklookup(ctxt, "local.pluginmoduledata", 0)
+               moduledata = ctxt.Syms.Lookup("local.pluginmoduledata", 0)
                moduledata.Attr |= AttrLocal
        } else {
-               moduledata = Linklookup(ctxt, "runtime.firstmoduledata", 0)
+               moduledata = ctxt.Syms.Lookup("runtime.firstmoduledata", 0)
        }
        if moduledata.Type != 0 && moduledata.Type != obj.SDYNIMPORT {
                // If the module (toolchain-speak for "executable or shared
@@ -507,14 +507,14 @@ func (ctxt *Link) loadlib() {
                // In addition, on ARM, the runtime depends on the linker
                // recording the value of GOARM.
                if SysArch.Family == sys.ARM {
-                       s := Linklookup(ctxt, "runtime.goarm", 0)
+                       s := ctxt.Syms.Lookup("runtime.goarm", 0)
                        s.Type = obj.SRODATA
                        s.Size = 0
                        Adduint8(ctxt, s, uint8(obj.GOARM))
                }
 
                if obj.Framepointer_enabled(obj.GOOS, obj.GOARCH) {
-                       s := Linklookup(ctxt, "runtime.framepointer_enabled", 0)
+                       s := ctxt.Syms.Lookup("runtime.framepointer_enabled", 0)
                        s.Type = obj.SRODATA
                        s.Size = 0
                        Adduint8(ctxt, s, 1)
@@ -522,7 +522,7 @@ func (ctxt *Link) loadlib() {
        } else {
                // If OTOH the module does not contain the runtime package,
                // create a local symbol for the moduledata.
-               moduledata = Linklookup(ctxt, "local.moduledata", 0)
+               moduledata = ctxt.Syms.Lookup("local.moduledata", 0)
                moduledata.Attr |= AttrLocal
        }
        // In all cases way we mark the moduledata as noptrdata to hide it from
@@ -610,7 +610,7 @@ func (ctxt *Link) loadlib() {
 
        if SysArch == sys.Arch386 {
                if (Buildmode == BuildmodeCArchive && Iself) || Buildmode == BuildmodeCShared || Buildmode == BuildmodePIE || ctxt.DynlinkingGo() {
-                       got := Linklookup(ctxt, "_GLOBAL_OFFSET_TABLE_", 0)
+                       got := ctxt.Syms.Lookup("_GLOBAL_OFFSET_TABLE_", 0)
                        got.Type = obj.SDYNIMPORT
                        got.Attr |= AttrReachable
                }
@@ -1414,7 +1414,7 @@ func ldshlibsyms(ctxt *Link, shlib string) {
                if elf.ST_TYPE(elfsym.Info) == elf.STT_NOTYPE || elf.ST_TYPE(elfsym.Info) == elf.STT_SECTION {
                        continue
                }
-               lsym := Linklookup(ctxt, elfsym.Name, 0)
+               lsym := ctxt.Syms.Lookup(elfsym.Name, 0)
                // Because loadlib above loads all .a files before loading any shared
                // libraries, any non-dynimport symbols we find that duplicate symbols
                // already loaded should be ignored (the symbols from the .a files
@@ -1564,7 +1564,7 @@ func callsize(ctxt *Link) int {
 func (ctxt *Link) dostkcheck() {
        var ch chain
 
-       morestack = Linklookup(ctxt, "runtime.morestack", 0)
+       morestack = ctxt.Syms.Lookup("runtime.morestack", 0)
 
        // Every splitting function ensures that there are at least StackLimit
        // bytes available below SP when the splitting prologue finishes.
@@ -1808,11 +1808,11 @@ const (
 func genasmsym(ctxt *Link, put func(*Link, *Symbol, string, SymbolType, int64, *Symbol)) {
        // These symbols won't show up in the first loop below because we
        // skip STEXT symbols. Normal STEXT symbols are emitted by walking textp.
-       s := Linklookup(ctxt, "runtime.text", 0)
+       s := ctxt.Syms.Lookup("runtime.text", 0)
        if s.Type == obj.STEXT {
                put(ctxt, s, s.Name, TextSym, s.Value, nil)
        }
-       s = Linklookup(ctxt, "runtime.etext", 0)
+       s = ctxt.Syms.Lookup("runtime.etext", 0)
        if s.Type == obj.STEXT {
                put(ctxt, s, s.Name, TextSym, s.Value, nil)
        }
@@ -1942,7 +1942,7 @@ func Symaddr(s *Symbol) int64 {
 }
 
 func (ctxt *Link) xdefine(p string, t obj.SymKind, v int64) {
-       s := Linklookup(ctxt, p, 0)
+       s := ctxt.Syms.Lookup(p, 0)
        s.Type = t
        s.Value = v
        s.Attr |= AttrReachable
@@ -1966,7 +1966,7 @@ func Entryvalue(ctxt *Link) int64 {
        if a[0] >= '0' && a[0] <= '9' {
                return atolwhex(a)
        }
-       s := Linklookup(ctxt, a, 0)
+       s := ctxt.Syms.Lookup(a, 0)
        if s.Type == 0 {
                return *FlagTextAddr
        }
index cc4f15a6ff701fd20d03dfe8103adcdbbd155820..8230f5d733f038e7d1e7e0852489e9e1ccebce24 100644 (file)
@@ -300,32 +300,32 @@ func (ctxt *Link) domacho() {
        }
 
        // empirically, string table must begin with " \x00".
-       s := Linklookup(ctxt, ".machosymstr", 0)
+       s := ctxt.Syms.Lookup(".machosymstr", 0)
 
        s.Type = obj.SMACHOSYMSTR
        s.Attr |= AttrReachable
        Adduint8(ctxt, s, ' ')
        Adduint8(ctxt, s, '\x00')
 
-       s = Linklookup(ctxt, ".machosymtab", 0)
+       s = ctxt.Syms.Lookup(".machosymtab", 0)
        s.Type = obj.SMACHOSYMTAB
        s.Attr |= AttrReachable
 
        if Linkmode != LinkExternal {
-               s := Linklookup(ctxt, ".plt", 0) // will be __symbol_stub
+               s := ctxt.Syms.Lookup(".plt", 0) // will be __symbol_stub
                s.Type = obj.SMACHOPLT
                s.Attr |= AttrReachable
 
-               s = Linklookup(ctxt, ".got", 0) // will be __nl_symbol_ptr
+               s = ctxt.Syms.Lookup(".got", 0) // will be __nl_symbol_ptr
                s.Type = obj.SMACHOGOT
                s.Attr |= AttrReachable
                s.Align = 4
 
-               s = Linklookup(ctxt, ".linkedit.plt", 0) // indirect table for .plt
+               s = ctxt.Syms.Lookup(".linkedit.plt", 0) // indirect table for .plt
                s.Type = obj.SMACHOINDIRECTPLT
                s.Attr |= AttrReachable
 
-               s = Linklookup(ctxt, ".linkedit.got", 0) // indirect table for .got
+               s = ctxt.Syms.Lookup(".linkedit.got", 0) // indirect table for .got
                s.Type = obj.SMACHOINDIRECTGOT
                s.Attr |= AttrReachable
        }
@@ -400,7 +400,7 @@ func machoshbits(ctxt *Link, mseg *MachoSeg, sect *Section, segname string) {
        if sect.Name == ".got" {
                msect.name = "__nl_symbol_ptr"
                msect.flag = 6                                                     /* section with nonlazy symbol pointers */
-               msect.res1 = uint32(Linklookup(ctxt, ".linkedit.plt", 0).Size / 4) /* offset into indirect symbol table */
+               msect.res1 = uint32(ctxt.Syms.Lookup(".linkedit.plt", 0).Size / 4) /* offset into indirect symbol table */
        }
 
        if sect.Name == ".init_array" {
@@ -541,10 +541,10 @@ func Asmbmacho(ctxt *Link) {
 
        if !*FlagD {
                // must match domacholink below
-               s1 := Linklookup(ctxt, ".machosymtab", 0)
-               s2 := Linklookup(ctxt, ".linkedit.plt", 0)
-               s3 := Linklookup(ctxt, ".linkedit.got", 0)
-               s4 := Linklookup(ctxt, ".machosymstr", 0)
+               s1 := ctxt.Syms.Lookup(".machosymtab", 0)
+               s2 := ctxt.Syms.Lookup(".linkedit.plt", 0)
+               s3 := ctxt.Syms.Lookup(".linkedit.got", 0)
+               s4 := ctxt.Syms.Lookup(".machosymstr", 0)
 
                if Linkmode != LinkExternal {
                        ms := newMachoSeg("__LINKEDIT", 0)
@@ -685,8 +685,8 @@ func machosymorder(ctxt *Link) {
 }
 
 func machosymtab(ctxt *Link) {
-       symtab := Linklookup(ctxt, ".machosymtab", 0)
-       symstr := Linklookup(ctxt, ".machosymstr", 0)
+       symtab := ctxt.Syms.Lookup(".machosymtab", 0)
+       symstr := ctxt.Syms.Lookup(".machosymstr", 0)
 
        for i := 0; i < nsortsym; i++ {
                s := sortsym[i]
@@ -750,10 +750,10 @@ func machodysymtab(ctxt *Link) {
        ml.data[11] = 0 /* nextrefsyms */
 
        // must match domacholink below
-       s1 := Linklookup(ctxt, ".machosymtab", 0)
+       s1 := ctxt.Syms.Lookup(".machosymtab", 0)
 
-       s2 := Linklookup(ctxt, ".linkedit.plt", 0)
-       s3 := Linklookup(ctxt, ".linkedit.got", 0)
+       s2 := ctxt.Syms.Lookup(".linkedit.plt", 0)
+       s3 := ctxt.Syms.Lookup(".linkedit.got", 0)
        ml.data[12] = uint32(linkoff + s1.Size)       /* indirectsymoff */
        ml.data[13] = uint32((s2.Size + s3.Size) / 4) /* nindirectsyms */
 
@@ -767,11 +767,11 @@ func Domacholink(ctxt *Link) int64 {
        machosymtab(ctxt)
 
        // write data that will be linkedit section
-       s1 := Linklookup(ctxt, ".machosymtab", 0)
+       s1 := ctxt.Syms.Lookup(".machosymtab", 0)
 
-       s2 := Linklookup(ctxt, ".linkedit.plt", 0)
-       s3 := Linklookup(ctxt, ".linkedit.got", 0)
-       s4 := Linklookup(ctxt, ".machosymstr", 0)
+       s2 := ctxt.Syms.Lookup(".linkedit.plt", 0)
+       s3 := ctxt.Syms.Lookup(".linkedit.got", 0)
+       s4 := ctxt.Syms.Lookup(".machosymstr", 0)
 
        // Force the linkedit section to end on a 16-byte
        // boundary. This allows pure (non-cgo) Go binaries
index 8b49aac7cbe06625b556de9c819d5080a6eaed64..0392ebd7cdc7b22a350213a8ceb319233b3f6bf7 100644 (file)
@@ -454,7 +454,7 @@ func (r *objReader) readRef() {
        if v == 1 {
                v = r.ctxt.Syms.Version
        }
-       s := Linklookup(r.ctxt, name, v)
+       s := r.ctxt.Syms.Lookup(name, v)
        r.refs = append(r.refs, s)
 
        if s == nil || v != 0 {
index c587d7652eb99785be2060b55d69ea929b9aa385..0709c0b9847d67b1e536eb8c117c9cf7a5d90b6a 100644 (file)
@@ -208,7 +208,7 @@ var pclntabLastFunc *Symbol
 
 func (ctxt *Link) pclntab() {
        funcdataBytes := int64(0)
-       ftab := Linklookup(ctxt, "runtime.pclntab", 0)
+       ftab := ctxt.Syms.Lookup("runtime.pclntab", 0)
        ftab.Type = obj.SPCLNTAB
        ftab.Attr |= AttrReachable
 
@@ -393,7 +393,7 @@ const (
 // findfunctab generates a lookup table to quickly find the containing
 // function for a pc. See src/runtime/symtab.go:findfunc for details.
 func (ctxt *Link) findfunctab() {
-       t := Linklookup(ctxt, "runtime.findfunctab", 0)
+       t := ctxt.Syms.Lookup("runtime.findfunctab", 0)
        t.Type = obj.SRODATA
        t.Attr |= AttrReachable
        t.Attr |= AttrLocal
index ca0fc7557330f718bd1816e1d794e7bf0d99a433..2a8c77966ddc0dab92739daff7bbcf049f409671 100644 (file)
@@ -527,7 +527,7 @@ func initdynimport(ctxt *Link) *Dll {
                                if SysArch.Family == sys.I386 && m.argsize >= 0 {
                                        dynName += fmt.Sprintf("@%d", m.argsize)
                                }
-                               dynSym := Linklookup(ctxt, dynName, 0)
+                               dynSym := ctxt.Syms.Lookup(dynName, 0)
                                dynSym.Attr |= AttrReachable
                                dynSym.Type = obj.SHOSTOBJ
                                r := Addrel(m.s)
@@ -538,7 +538,7 @@ func initdynimport(ctxt *Link) *Dll {
                        }
                }
        } else {
-               dynamic := Linklookup(ctxt, ".windynamic", 0)
+               dynamic := ctxt.Syms.Lookup(".windynamic", 0)
                dynamic.Attr |= AttrReachable
                dynamic.Type = obj.SWINDOWS
                for d := dr; d != nil; d = d.next {
@@ -571,7 +571,7 @@ func peimporteddlls() []string {
 
 func addimports(ctxt *Link, datsect *IMAGE_SECTION_HEADER) {
        startoff := coutbuf.Offset()
-       dynamic := Linklookup(ctxt, ".windynamic", 0)
+       dynamic := ctxt.Syms.Lookup(".windynamic", 0)
 
        // skip import descriptor table (will write it later)
        n := uint64(0)
@@ -868,7 +868,7 @@ func peemitreloc(ctxt *Link, text, data, ctors *IMAGE_SECTION_HEADER) {
        }
        data.NumberOfRelocations = uint16(n - 1)
 
-       dottext := Linklookup(ctxt, ".text", 0)
+       dottext := ctxt.Syms.Lookup(".text", 0)
        ctors.NumberOfRelocations = 1
        ctors.PointerToRelocations = uint32(coutbuf.Offset())
        sectoff := ctors.VirtualAddress
@@ -887,7 +887,7 @@ func peemitreloc(ctxt *Link, text, data, ctors *IMAGE_SECTION_HEADER) {
 
 func (ctxt *Link) dope() {
        /* relocation table */
-       rel := Linklookup(ctxt, ".rel", 0)
+       rel := ctxt.Syms.Lookup(".rel", 0)
 
        rel.Attr |= AttrReachable
        rel.Type = obj.SELFROSECT
@@ -1002,7 +1002,7 @@ func writePESymTableRecords(ctxt *Link) int {
                        }
                }
 
-               s := Linklookup(ctxt, ".text", 0)
+               s := ctxt.Syms.Lookup(".text", 0)
                if s.Type == obj.STEXT {
                        put(ctxt, s, s.Name, TextSym, s.Value, nil)
                }
@@ -1111,7 +1111,7 @@ func addinitarray(ctxt *Link) (c *IMAGE_SECTION_HEADER) {
 
        Cseek(int64(c.PointerToRawData))
        chksectoff(ctxt, c, coutbuf.Offset())
-       init_entry := Linklookup(ctxt, *flagEntrySymbol, 0)
+       init_entry := ctxt.Syms.Lookup(*flagEntrySymbol, 0)
        addr := uint64(init_entry.Value) - init_entry.Sect.Vaddr
 
        switch obj.GOARCH {
index 06394cb4971a194360fdd11d6d4ee07f771b17d2..10ac961e4ab82f1343151eb7463d9081cf998f8d 100644 (file)
@@ -331,14 +331,14 @@ func (ctxt *Link) symtab() {
        ctxt.xdefine("runtime.esymtab", obj.SRODATA, 0)
 
        // garbage collection symbols
-       s := Linklookup(ctxt, "runtime.gcdata", 0)
+       s := ctxt.Syms.Lookup("runtime.gcdata", 0)
 
        s.Type = obj.SRODATA
        s.Size = 0
        s.Attr |= AttrReachable
        ctxt.xdefine("runtime.egcdata", obj.SRODATA, 0)
 
-       s = Linklookup(ctxt, "runtime.gcbss", 0)
+       s = ctxt.Syms.Lookup("runtime.gcbss", 0)
        s.Type = obj.SRODATA
        s.Size = 0
        s.Attr |= AttrReachable
@@ -348,21 +348,21 @@ func (ctxt *Link) symtab() {
        var symtype *Symbol
        var symtyperel *Symbol
        if UseRelro() && (Buildmode == BuildmodeCArchive || Buildmode == BuildmodeCShared || Buildmode == BuildmodePIE) {
-               s = Linklookup(ctxt, "type.*", 0)
+               s = ctxt.Syms.Lookup("type.*", 0)
 
                s.Type = obj.STYPE
                s.Size = 0
                s.Attr |= AttrReachable
                symtype = s
 
-               s = Linklookup(ctxt, "typerel.*", 0)
+               s = ctxt.Syms.Lookup("typerel.*", 0)
 
                s.Type = obj.STYPERELRO
                s.Size = 0
                s.Attr |= AttrReachable
                symtyperel = s
        } else if !ctxt.DynlinkingGo() {
-               s = Linklookup(ctxt, "type.*", 0)
+               s = ctxt.Syms.Lookup("type.*", 0)
 
                s.Type = obj.STYPE
                s.Size = 0
@@ -372,7 +372,7 @@ func (ctxt *Link) symtab() {
        }
 
        groupSym := func(name string, t obj.SymKind) *Symbol {
-               s := Linklookup(ctxt, name, 0)
+               s := ctxt.Syms.Lookup(name, 0)
                s.Type = t
                s.Size = 0
                s.Attr |= AttrLocal | AttrReachable
@@ -394,13 +394,13 @@ func (ctxt *Link) symtab() {
                }
        }
 
-       symtypelink := Linklookup(ctxt, "runtime.typelink", 0)
+       symtypelink := ctxt.Syms.Lookup("runtime.typelink", 0)
        symtypelink.Type = obj.STYPELINK
 
-       symitablink := Linklookup(ctxt, "runtime.itablink", 0)
+       symitablink := ctxt.Syms.Lookup("runtime.itablink", 0)
        symitablink.Type = obj.SITABLINK
 
-       symt = Linklookup(ctxt, "runtime.symtab", 0)
+       symt = ctxt.Syms.Lookup("runtime.symtab", 0)
        symt.Attr |= AttrLocal
        symt.Type = obj.SSYMTAB
        symt.Size = 0
@@ -484,10 +484,10 @@ func (ctxt *Link) symtab() {
        }
 
        if Buildmode == BuildmodeShared {
-               abihashgostr := Linklookup(ctxt, "go.link.abihash."+filepath.Base(*flagOutfile), 0)
+               abihashgostr := ctxt.Syms.Lookup("go.link.abihash."+filepath.Base(*flagOutfile), 0)
                abihashgostr.Attr |= AttrReachable
                abihashgostr.Type = obj.SRODATA
-               hashsym := Linklookup(ctxt, "go.link.abihashbytes", 0)
+               hashsym := ctxt.Syms.Lookup("go.link.abihashbytes", 0)
                Addaddr(ctxt, abihashgostr, hashsym)
                adduint(ctxt, abihashgostr, uint64(hashsym.Size))
        }
@@ -498,49 +498,49 @@ func (ctxt *Link) symtab() {
        // This code uses several global variables that are set by pcln.go:pclntab.
        moduledata := ctxt.Moduledata
        // The pclntab slice
-       Addaddr(ctxt, moduledata, Linklookup(ctxt, "runtime.pclntab", 0))
-       adduint(ctxt, moduledata, uint64(Linklookup(ctxt, "runtime.pclntab", 0).Size))
-       adduint(ctxt, moduledata, uint64(Linklookup(ctxt, "runtime.pclntab", 0).Size))
+       Addaddr(ctxt, moduledata, ctxt.Syms.Lookup("runtime.pclntab", 0))
+       adduint(ctxt, moduledata, uint64(ctxt.Syms.Lookup("runtime.pclntab", 0).Size))
+       adduint(ctxt, moduledata, uint64(ctxt.Syms.Lookup("runtime.pclntab", 0).Size))
        // The ftab slice
-       Addaddrplus(ctxt, moduledata, Linklookup(ctxt, "runtime.pclntab", 0), int64(pclntabPclntabOffset))
+       Addaddrplus(ctxt, moduledata, ctxt.Syms.Lookup("runtime.pclntab", 0), int64(pclntabPclntabOffset))
        adduint(ctxt, moduledata, uint64(pclntabNfunc+1))
        adduint(ctxt, moduledata, uint64(pclntabNfunc+1))
        // The filetab slice
-       Addaddrplus(ctxt, moduledata, Linklookup(ctxt, "runtime.pclntab", 0), int64(pclntabFiletabOffset))
+       Addaddrplus(ctxt, moduledata, ctxt.Syms.Lookup("runtime.pclntab", 0), int64(pclntabFiletabOffset))
        adduint(ctxt, moduledata, uint64(len(ctxt.Filesyms))+1)
        adduint(ctxt, moduledata, uint64(len(ctxt.Filesyms))+1)
        // findfunctab
-       Addaddr(ctxt, moduledata, Linklookup(ctxt, "runtime.findfunctab", 0))
+       Addaddr(ctxt, moduledata, ctxt.Syms.Lookup("runtime.findfunctab", 0))
        // minpc, maxpc
        Addaddr(ctxt, moduledata, pclntabFirstFunc)
        Addaddrplus(ctxt, moduledata, pclntabLastFunc, pclntabLastFunc.Size)
        // pointers to specific parts of the module
-       Addaddr(ctxt, moduledata, Linklookup(ctxt, "runtime.text", 0))
-       Addaddr(ctxt, moduledata, Linklookup(ctxt, "runtime.etext", 0))
-       Addaddr(ctxt, moduledata, Linklookup(ctxt, "runtime.noptrdata", 0))
-       Addaddr(ctxt, moduledata, Linklookup(ctxt, "runtime.enoptrdata", 0))
-       Addaddr(ctxt, moduledata, Linklookup(ctxt, "runtime.data", 0))
-       Addaddr(ctxt, moduledata, Linklookup(ctxt, "runtime.edata", 0))
-       Addaddr(ctxt, moduledata, Linklookup(ctxt, "runtime.bss", 0))
-       Addaddr(ctxt, moduledata, Linklookup(ctxt, "runtime.ebss", 0))
-       Addaddr(ctxt, moduledata, Linklookup(ctxt, "runtime.noptrbss", 0))
-       Addaddr(ctxt, moduledata, Linklookup(ctxt, "runtime.enoptrbss", 0))
-       Addaddr(ctxt, moduledata, Linklookup(ctxt, "runtime.end", 0))
-       Addaddr(ctxt, moduledata, Linklookup(ctxt, "runtime.gcdata", 0))
-       Addaddr(ctxt, moduledata, Linklookup(ctxt, "runtime.gcbss", 0))
-       Addaddr(ctxt, moduledata, Linklookup(ctxt, "runtime.types", 0))
-       Addaddr(ctxt, moduledata, Linklookup(ctxt, "runtime.etypes", 0))
+       Addaddr(ctxt, moduledata, ctxt.Syms.Lookup("runtime.text", 0))
+       Addaddr(ctxt, moduledata, ctxt.Syms.Lookup("runtime.etext", 0))
+       Addaddr(ctxt, moduledata, ctxt.Syms.Lookup("runtime.noptrdata", 0))
+       Addaddr(ctxt, moduledata, ctxt.Syms.Lookup("runtime.enoptrdata", 0))
+       Addaddr(ctxt, moduledata, ctxt.Syms.Lookup("runtime.data", 0))
+       Addaddr(ctxt, moduledata, ctxt.Syms.Lookup("runtime.edata", 0))
+       Addaddr(ctxt, moduledata, ctxt.Syms.Lookup("runtime.bss", 0))
+       Addaddr(ctxt, moduledata, ctxt.Syms.Lookup("runtime.ebss", 0))
+       Addaddr(ctxt, moduledata, ctxt.Syms.Lookup("runtime.noptrbss", 0))
+       Addaddr(ctxt, moduledata, ctxt.Syms.Lookup("runtime.enoptrbss", 0))
+       Addaddr(ctxt, moduledata, ctxt.Syms.Lookup("runtime.end", 0))
+       Addaddr(ctxt, moduledata, ctxt.Syms.Lookup("runtime.gcdata", 0))
+       Addaddr(ctxt, moduledata, ctxt.Syms.Lookup("runtime.gcbss", 0))
+       Addaddr(ctxt, moduledata, ctxt.Syms.Lookup("runtime.types", 0))
+       Addaddr(ctxt, moduledata, ctxt.Syms.Lookup("runtime.etypes", 0))
        // The typelinks slice
-       Addaddr(ctxt, moduledata, Linklookup(ctxt, "runtime.typelink", 0))
+       Addaddr(ctxt, moduledata, ctxt.Syms.Lookup("runtime.typelink", 0))
        adduint(ctxt, moduledata, uint64(ntypelinks))
        adduint(ctxt, moduledata, uint64(ntypelinks))
        // The itablinks slice
-       Addaddr(ctxt, moduledata, Linklookup(ctxt, "runtime.itablink", 0))
+       Addaddr(ctxt, moduledata, ctxt.Syms.Lookup("runtime.itablink", 0))
        adduint(ctxt, moduledata, uint64(nitablinks))
        adduint(ctxt, moduledata, uint64(nitablinks))
        // The ptab slice
        if Buildmode == BuildmodePlugin {
-               ptab := Linkrlookup(ctxt, "go.plugin.tabs", 0)
+               ptab := ctxt.Syms.ROLookup("go.plugin.tabs", 0)
                ptab.Attr |= AttrReachable
                ptab.Attr |= AttrLocal
                ptab.Type = obj.SRODATA
@@ -564,7 +564,7 @@ func (ctxt *Link) symtab() {
                }
                addgostring(ctxt, moduledata, "go.link.thismodulename", thismodulename)
 
-               modulehashes := Linklookup(ctxt, "go.link.abihashes", 0)
+               modulehashes := ctxt.Syms.Lookup("go.link.abihashes", 0)
                modulehashes.Attr |= AttrReachable
                modulehashes.Attr |= AttrLocal
                modulehashes.Type = obj.SRODATA
@@ -578,7 +578,7 @@ func (ctxt *Link) symtab() {
                        addgostring(ctxt, modulehashes, fmt.Sprintf("go.link.linkhash.%d", i), string(shlib.Hash))
 
                        // modulehashes[i].runtimehash
-                       abihash := Linklookup(ctxt, "go.link.abihash."+modulename, 0)
+                       abihash := ctxt.Syms.Lookup("go.link.abihash."+modulename, 0)
                        abihash.Attr |= AttrReachable
                        Addaddr(ctxt, modulehashes, abihash)
                }
@@ -592,11 +592,11 @@ func (ctxt *Link) symtab() {
        // When linking an object that does not contain the runtime we are
        // creating the moduledata from scratch and it does not have a
        // compiler-provided size, so read it from the type data.
-       moduledatatype := Linkrlookup(ctxt, "type.runtime.moduledata", 0)
+       moduledatatype := ctxt.Syms.ROLookup("type.runtime.moduledata", 0)
        moduledata.Size = decodetypeSize(ctxt.Arch, moduledatatype)
        Symgrow(ctxt, moduledata, moduledata.Size)
 
-       lastmoduledatap := Linklookup(ctxt, "runtime.lastmoduledatap", 0)
+       lastmoduledatap := ctxt.Syms.Lookup("runtime.lastmoduledatap", 0)
        if lastmoduledatap.Type != obj.SDYNIMPORT {
                lastmoduledatap.Type = obj.SNOPTRDATA
                lastmoduledatap.Size = 0 // overwrite existing value
index dc015ee0d6d76d857b1af11be4d1804cd27233bb..0713365254ae5136b2c041591a6ea8131891d608 100644 (file)
@@ -143,7 +143,7 @@ func archreloc(ctxt *ld.Link, r *ld.Reloc, s *ld.Symbol, val *int64) int {
                return 0
 
        case obj.R_GOTOFF:
-               *val = ld.Symaddr(r.Sym) + r.Add - ld.Symaddr(ld.Linklookup(ctxt, ".got", 0))
+               *val = ld.Symaddr(r.Sym) + r.Add - ld.Symaddr(ctxt.Syms.Lookup(".got", 0))
                return 0
 
        case obj.R_ADDRMIPS,
@@ -266,7 +266,7 @@ func asmb(ctxt *ld.Link) {
                        ld.Asmplan9sym(ctxt)
                        ld.Cflush()
 
-                       sym := ld.Linklookup(ctxt, "pclntab", 0)
+                       sym := ctxt.Syms.Lookup("pclntab", 0)
                        if sym != nil {
                                ld.Lcsize = int32(len(sym.P))
                                for i := 0; int32(i) < ld.Lcsize; i++ {
index f8892727cfcf693d5277d01f5a4f02e0138c42ac..dd839fb8ae4750f39079497e397c7f36cc81e419 100644 (file)
@@ -101,7 +101,7 @@ func genplt(ctxt *ld.Link) {
                        // Generate call stub
                        n := fmt.Sprintf("%s.%s", s.Name, r.Sym.Name)
 
-                       stub := ld.Linklookup(ctxt, n, 0)
+                       stub := ctxt.Syms.Lookup(n, 0)
                        if s.Attr.Reachable() {
                                stub.Attr |= ld.AttrReachable
                        }
@@ -124,12 +124,12 @@ func genplt(ctxt *ld.Link) {
 }
 
 func genaddmoduledata(ctxt *ld.Link) {
-       addmoduledata := ld.Linkrlookup(ctxt, "runtime.addmoduledata", 0)
+       addmoduledata := ctxt.Syms.ROLookup("runtime.addmoduledata", 0)
        if addmoduledata.Type == obj.STEXT {
                return
        }
        addmoduledata.Attr |= ld.AttrReachable
-       initfunc := ld.Linklookup(ctxt, "go.link.addmoduledata", 0)
+       initfunc := ctxt.Syms.Lookup("go.link.addmoduledata", 0)
        initfunc.Type = obj.STEXT
        initfunc.Attr |= ld.AttrLocal
        initfunc.Attr |= ld.AttrReachable
@@ -140,7 +140,7 @@ func genaddmoduledata(ctxt *ld.Link) {
        rel := ld.Addrel(initfunc)
        rel.Off = int32(initfunc.Size)
        rel.Siz = 8
-       rel.Sym = ld.Linklookup(ctxt, ".TOC.", 0)
+       rel.Sym = ctxt.Syms.Lookup(".TOC.", 0)
        rel.Type = obj.R_ADDRPOWER_PCREL
        o(0x3c4c0000)
        // addi r2, r2, .TOC.-func@l
@@ -153,7 +153,7 @@ func genaddmoduledata(ctxt *ld.Link) {
        rel = ld.Addrel(initfunc)
        rel.Off = int32(initfunc.Size)
        rel.Siz = 8
-       rel.Sym = ld.Linklookup(ctxt, "local.moduledata", 0)
+       rel.Sym = ctxt.Syms.Lookup("local.moduledata", 0)
        rel.Type = obj.R_ADDRPOWER_GOT
        o(0x3c620000)
        // ld r3, local.moduledata@got@l(r3)
@@ -177,7 +177,7 @@ func genaddmoduledata(ctxt *ld.Link) {
        o(0x4e800020)
 
        ctxt.Textp = append(ctxt.Textp, initfunc)
-       initarray_entry := ld.Linklookup(ctxt, "go.link.addmoduledatainit", 0)
+       initarray_entry := ctxt.Syms.Lookup("go.link.addmoduledatainit", 0)
        initarray_entry.Attr |= ld.AttrReachable
        initarray_entry.Attr |= ld.AttrLocal
        initarray_entry.Type = obj.SINITARR
@@ -203,7 +203,7 @@ func gencallstub(ctxt *ld.Link, abicase int, stub *ld.Symbol, targ *ld.Symbol) {
                log.Fatalf("gencallstub only implements case 1 calls")
        }
 
-       plt := ld.Linklookup(ctxt, ".plt", 0)
+       plt := ctxt.Syms.Lookup(".plt", 0)
 
        stub.Type = obj.STEXT
 
@@ -284,7 +284,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
                        // These happen in .toc sections
                        ld.Adddynsym(ctxt, targ)
 
-                       rela := ld.Linklookup(ctxt, ".rela", 0)
+                       rela := ctxt.Syms.Lookup(".rela", 0)
                        ld.Addaddrplus(ctxt, rela, s, int64(r.Off))
                        ld.Adduint64(ctxt, rela, ld.ELF64_R_INFO(uint32(targ.Dynid), ld.R_PPC64_ADDR64))
                        ld.Adduint64(ctxt, rela, uint64(r.Add))
@@ -432,7 +432,7 @@ func elfreloc1(ctxt *ld.Link, r *ld.Reloc, sectoff int64) int {
 }
 
 func elfsetupplt(ctxt *ld.Link) {
-       plt := ld.Linklookup(ctxt, ".plt", 0)
+       plt := ctxt.Syms.Lookup(".plt", 0)
        if plt.Size == 0 {
                // The dynamic linker stores the address of the
                // dynamic resolver and the DSO identifier in the two
@@ -451,9 +451,9 @@ func symtoc(ctxt *ld.Link, s *ld.Symbol) int64 {
        var toc *ld.Symbol
 
        if s.Outer != nil {
-               toc = ld.Linkrlookup(ctxt, ".TOC.", int(s.Outer.Version))
+               toc = ctxt.Syms.ROLookup(".TOC.", int(s.Outer.Version))
        } else {
-               toc = ld.Linkrlookup(ctxt, ".TOC.", int(s.Version))
+               toc = ctxt.Syms.ROLookup(".TOC.", int(s.Version))
        }
 
        if toc == nil {
@@ -563,7 +563,7 @@ func archreloc(ctxt *ld.Link, r *ld.Reloc, s *ld.Symbol, val *int64) int {
                return 0
 
        case obj.R_GOTOFF:
-               *val = ld.Symaddr(r.Sym) + r.Add - ld.Symaddr(ld.Linklookup(ctxt, ".got", 0))
+               *val = ld.Symaddr(r.Sym) + r.Add - ld.Symaddr(ctxt.Syms.Lookup(".got", 0))
                return 0
 
        case obj.R_ADDRPOWER, obj.R_ADDRPOWER_DS:
@@ -705,8 +705,8 @@ func addpltsym(ctxt *ld.Link, s *ld.Symbol) {
        ld.Adddynsym(ctxt, s)
 
        if ld.Iself {
-               plt := ld.Linklookup(ctxt, ".plt", 0)
-               rela := ld.Linklookup(ctxt, ".rela.plt", 0)
+               plt := ctxt.Syms.Lookup(".plt", 0)
+               rela := ctxt.Syms.Lookup(".rela.plt", 0)
                if plt.Size == 0 {
                        elfsetupplt(ctxt)
                }
@@ -744,7 +744,7 @@ func addpltsym(ctxt *ld.Link, s *ld.Symbol) {
 
 // Generate the glink resolver stub if necessary and return the .glink section
 func ensureglinkresolver(ctxt *ld.Link) *ld.Symbol {
-       glink := ld.Linklookup(ctxt, ".glink", 0)
+       glink := ctxt.Syms.Lookup(".glink", 0)
        if glink.Size != 0 {
                return glink
        }
@@ -774,7 +774,7 @@ func ensureglinkresolver(ctxt *ld.Link) *ld.Symbol {
        r := ld.Addrel(glink)
 
        r.Off = int32(glink.Size)
-       r.Sym = ld.Linklookup(ctxt, ".plt", 0)
+       r.Sym = ctxt.Syms.Lookup(".plt", 0)
        r.Siz = 8
        r.Type = obj.R_ADDRPOWER
 
@@ -795,7 +795,7 @@ func ensureglinkresolver(ctxt *ld.Link) *ld.Symbol {
 
        // Add DT_PPC64_GLINK .dynamic entry, which points to 32 bytes
        // before the first symbol resolver stub.
-       s := ld.Linklookup(ctxt, ".dynamic", 0)
+       s := ctxt.Syms.Lookup(".dynamic", 0)
 
        ld.Elfwritedynentsymplus(ctxt, s, ld.DT_PPC64_GLINK, glink, glink.Size-32)
 
@@ -885,7 +885,7 @@ func asmb(ctxt *ld.Link) {
                        ld.Asmplan9sym(ctxt)
                        ld.Cflush()
 
-                       sym := ld.Linklookup(ctxt, "pclntab", 0)
+                       sym := ctxt.Syms.Lookup("pclntab", 0)
                        if sym != nil {
                                ld.Lcsize = int32(len(sym.P))
                                for i := 0; int32(i) < ld.Lcsize; i++ {
index 5e194974e3af0aa880311ab4c57f1348f52014b4..1c0d377b106f480cb0ee549d8d1fecd274088d2e 100644 (file)
@@ -51,14 +51,14 @@ func gentext(ctxt *ld.Link) {
        if !ctxt.DynlinkingGo() {
                return
        }
-       addmoduledata := ld.Linklookup(ctxt, "runtime.addmoduledata", 0)
+       addmoduledata := ctxt.Syms.Lookup("runtime.addmoduledata", 0)
        if addmoduledata.Type == obj.STEXT {
                // we're linking a module containing the runtime -> no need for
                // an init function
                return
        }
        addmoduledata.Attr |= ld.AttrReachable
-       initfunc := ld.Linklookup(ctxt, "go.link.addmoduledata", 0)
+       initfunc := ctxt.Syms.Lookup("go.link.addmoduledata", 0)
        initfunc.Type = obj.STEXT
        initfunc.Attr |= ld.AttrLocal
        initfunc.Attr |= ld.AttrReachable
@@ -81,7 +81,7 @@ func gentext(ctxt *ld.Link) {
        rel := ld.Addrel(initfunc)
        rel.Off = int32(initfunc.Size)
        rel.Siz = 4
-       rel.Sym = ld.Linklookup(ctxt, "runtime.addmoduledata", 0)
+       rel.Sym = ctxt.Syms.Lookup("runtime.addmoduledata", 0)
        rel.Type = obj.R_CALL
        rel.Variant = ld.RV_390_DBL
        rel.Add = 2 + int64(rel.Siz)
@@ -91,7 +91,7 @@ func gentext(ctxt *ld.Link) {
        ld.Adduint32(ctxt, initfunc, 0)
 
        ctxt.Textp = append(ctxt.Textp, initfunc)
-       initarray_entry := ld.Linklookup(ctxt, "go.link.addmoduledatainit", 0)
+       initarray_entry := ctxt.Syms.Lookup("go.link.addmoduledatainit", 0)
        initarray_entry.Attr |= ld.AttrLocal
        initarray_entry.Attr |= ld.AttrReachable
        initarray_entry.Type = obj.SINITARR
@@ -150,7 +150,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
                r.Add += int64(r.Siz)
                if targ.Type == obj.SDYNIMPORT {
                        addpltsym(ctxt, targ)
-                       r.Sym = ld.Linklookup(ctxt, ".plt", 0)
+                       r.Sym = ctxt.Syms.Lookup(".plt", 0)
                        r.Add += int64(targ.Plt)
                }
                return true
@@ -161,7 +161,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
                r.Add += int64(r.Siz)
                if targ.Type == obj.SDYNIMPORT {
                        addpltsym(ctxt, targ)
-                       r.Sym = ld.Linklookup(ctxt, ".plt", 0)
+                       r.Sym = ctxt.Syms.Lookup(".plt", 0)
                        r.Add += int64(targ.Plt)
                }
                return true
@@ -191,7 +191,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
 
        case 256 + ld.R_390_GOTPC:
                r.Type = obj.R_PCREL
-               r.Sym = ld.Linklookup(ctxt, ".got", 0)
+               r.Sym = ctxt.Syms.Lookup(".got", 0)
                r.Add += int64(r.Siz)
                return true
 
@@ -208,7 +208,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
        case 256 + ld.R_390_GOTPCDBL:
                r.Type = obj.R_PCREL
                r.Variant = ld.RV_390_DBL
-               r.Sym = ld.Linklookup(ctxt, ".got", 0)
+               r.Sym = ctxt.Syms.Lookup(".got", 0)
                r.Add += int64(r.Siz)
                return true
 
@@ -217,7 +217,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
 
                r.Type = obj.R_PCREL
                r.Variant = ld.RV_390_DBL
-               r.Sym = ld.Linklookup(ctxt, ".got", 0)
+               r.Sym = ctxt.Syms.Lookup(".got", 0)
                r.Add += int64(targ.Got)
                r.Add += int64(r.Siz)
                return true
@@ -330,8 +330,8 @@ func elfreloc1(ctxt *ld.Link, r *ld.Reloc, sectoff int64) int {
 }
 
 func elfsetupplt(ctxt *ld.Link) {
-       plt := ld.Linklookup(ctxt, ".plt", 0)
-       got := ld.Linklookup(ctxt, ".got", 0)
+       plt := ctxt.Syms.Lookup(".plt", 0)
+       got := ctxt.Syms.Lookup(".got", 0)
        if plt.Size == 0 {
                // stg     %r1,56(%r15)
                ld.Adduint8(ctxt, plt, 0xe3)
@@ -372,7 +372,7 @@ func elfsetupplt(ctxt *ld.Link) {
                ld.Adduint8(ctxt, plt, 0x00)
 
                // assume got->size == 0 too
-               ld.Addaddrplus(ctxt, got, ld.Linklookup(ctxt, ".dynamic", 0), 0)
+               ld.Addaddrplus(ctxt, got, ctxt.Syms.Lookup(".dynamic", 0), 0)
 
                ld.Adduint64(ctxt, got, 0)
                ld.Adduint64(ctxt, got, 0)
@@ -394,7 +394,7 @@ func archreloc(ctxt *ld.Link, r *ld.Reloc, s *ld.Symbol, val *int64) int {
                return 0
 
        case obj.R_GOTOFF:
-               *val = ld.Symaddr(r.Sym) + r.Add - ld.Symaddr(ld.Linklookup(ctxt, ".got", 0))
+               *val = ld.Symaddr(r.Sym) + r.Add - ld.Symaddr(ctxt.Syms.Lookup(".got", 0))
                return 0
        }
 
@@ -426,9 +426,9 @@ func addpltsym(ctxt *ld.Link, s *ld.Symbol) {
        ld.Adddynsym(ctxt, s)
 
        if ld.Iself {
-               plt := ld.Linklookup(ctxt, ".plt", 0)
-               got := ld.Linklookup(ctxt, ".got", 0)
-               rela := ld.Linklookup(ctxt, ".rela.plt", 0)
+               plt := ctxt.Syms.Lookup(".plt", 0)
+               got := ctxt.Syms.Lookup(".got", 0)
+               rela := ctxt.Syms.Lookup(".rela.plt", 0)
                if plt.Size == 0 {
                        elfsetupplt(ctxt)
                }
@@ -487,12 +487,12 @@ func addgotsym(ctxt *ld.Link, s *ld.Symbol) {
        }
 
        ld.Adddynsym(ctxt, s)
-       got := ld.Linklookup(ctxt, ".got", 0)
+       got := ctxt.Syms.Lookup(".got", 0)
        s.Got = int32(got.Size)
        ld.Adduint64(ctxt, got, 0)
 
        if ld.Iself {
-               rela := ld.Linklookup(ctxt, ".rela", 0)
+               rela := ctxt.Syms.Lookup(".rela", 0)
                ld.Addaddrplus(ctxt, rela, got, int64(s.Got))
                ld.Adduint64(ctxt, rela, ld.ELF64_R_INFO(uint32(s.Dynid), ld.R_390_GLOB_DAT))
                ld.Adduint64(ctxt, rela, 0)
index 34fec5263e73e0fcd2c1e1c36f3e16ffcd391982..ccae05ff63a77de4ea8098c975b1162137834cf7 100644 (file)
@@ -79,7 +79,7 @@ func gentext(ctxt *ld.Link) {
                {"si", 6},
                {"di", 7},
        } {
-               thunkfunc := ld.Linklookup(ctxt, "__x86.get_pc_thunk."+r.name, 0)
+               thunkfunc := ctxt.Syms.Lookup("__x86.get_pc_thunk."+r.name, 0)
                thunkfunc.Type = obj.STEXT
                thunkfunc.Attr |= ld.AttrLocal
                thunkfunc.Attr |= ld.AttrReachable //TODO: remove?
@@ -97,7 +97,7 @@ func gentext(ctxt *ld.Link) {
                ctxt.Textp = append(ctxt.Textp, thunkfunc)
        }
 
-       addmoduledata := ld.Linklookup(ctxt, "runtime.addmoduledata", 0)
+       addmoduledata := ctxt.Syms.Lookup("runtime.addmoduledata", 0)
        if addmoduledata.Type == obj.STEXT && ld.Buildmode != ld.BuildmodePlugin {
                // we're linking a module containing the runtime -> no need for
                // an init function
@@ -106,7 +106,7 @@ func gentext(ctxt *ld.Link) {
 
        addmoduledata.Attr |= ld.AttrReachable
 
-       initfunc := ld.Linklookup(ctxt, "go.link.addmoduledata", 0)
+       initfunc := ctxt.Syms.Lookup("go.link.addmoduledata", 0)
        initfunc.Type = obj.STEXT
        initfunc.Attr |= ld.AttrLocal
        initfunc.Attr |= ld.AttrReachable
@@ -128,7 +128,7 @@ func gentext(ctxt *ld.Link) {
        o(0x53)
 
        o(0xe8)
-       addcall(ctxt, initfunc, ld.Linklookup(ctxt, "__x86.get_pc_thunk.cx", 0))
+       addcall(ctxt, initfunc, ctxt.Syms.Lookup("__x86.get_pc_thunk.cx", 0))
 
        o(0x8d, 0x81)
        ld.Addpcrelplus(ctxt, initfunc, ctxt.Moduledata, 6)
@@ -138,7 +138,7 @@ func gentext(ctxt *ld.Link) {
        initfunc.Size += 4
        ld.Symgrow(ctxt, initfunc, initfunc.Size)
        r := ld.Addrel(initfunc)
-       r.Sym = ld.Linklookup(ctxt, "_GLOBAL_OFFSET_TABLE_", 0)
+       r.Sym = ctxt.Syms.Lookup("_GLOBAL_OFFSET_TABLE_", 0)
        r.Off = int32(i)
        r.Type = obj.R_PCREL
        r.Add = 12
@@ -155,7 +155,7 @@ func gentext(ctxt *ld.Link) {
        if ld.Buildmode == ld.BuildmodePlugin {
                ctxt.Textp = append(ctxt.Textp, addmoduledata)
        }
-       initarray_entry := ld.Linklookup(ctxt, "go.link.addmoduledatainit", 0)
+       initarray_entry := ctxt.Syms.Lookup("go.link.addmoduledatainit", 0)
        initarray_entry.Attr |= ld.AttrReachable
        initarray_entry.Attr |= ld.AttrLocal
        initarray_entry.Type = obj.SINITARR
@@ -189,7 +189,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
                r.Add += 4
                if targ.Type == obj.SDYNIMPORT {
                        addpltsym(ctxt, targ)
-                       r.Sym = ld.Linklookup(ctxt, ".plt", 0)
+                       r.Sym = ctxt.Syms.Lookup(".plt", 0)
                        r.Add += int64(targ.Plt)
                }
 
@@ -232,7 +232,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
 
        case 256 + ld.R_386_GOTPC:
                r.Type = obj.R_PCREL
-               r.Sym = ld.Linklookup(ctxt, ".got", 0)
+               r.Sym = ctxt.Syms.Lookup(".got", 0)
                r.Add += 4
                return true
 
@@ -253,7 +253,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
        case 512 + ld.MACHO_GENERIC_RELOC_VANILLA*2 + 1:
                if targ.Type == obj.SDYNIMPORT {
                        addpltsym(ctxt, targ)
-                       r.Sym = ld.Linklookup(ctxt, ".plt", 0)
+                       r.Sym = ctxt.Syms.Lookup(".plt", 0)
                        r.Add = int64(targ.Plt)
                        r.Type = obj.R_PCREL
                        return true
@@ -277,7 +277,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
                }
 
                addgotsym(ctxt, targ)
-               r.Sym = ld.Linklookup(ctxt, ".got", 0)
+               r.Sym = ctxt.Syms.Lookup(".got", 0)
                r.Add += int64(targ.Got)
                r.Type = obj.R_PCREL
                return true
@@ -291,7 +291,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
        case obj.R_CALL,
                obj.R_PCREL:
                addpltsym(ctxt, targ)
-               r.Sym = ld.Linklookup(ctxt, ".plt", 0)
+               r.Sym = ctxt.Syms.Lookup(".plt", 0)
                r.Add = int64(targ.Plt)
                return true
 
@@ -301,7 +301,7 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
                }
                if ld.Iself {
                        ld.Adddynsym(ctxt, targ)
-                       rel := ld.Linklookup(ctxt, ".rel", 0)
+                       rel := ctxt.Syms.Lookup(".rel", 0)
                        ld.Addaddrplus(ctxt, rel, s, int64(r.Off))
                        ld.Adduint32(ctxt, rel, ld.ELF32_R_INFO(uint32(targ.Dynid), ld.R_386_32))
                        r.Type = obj.R_CONST // write r->add during relocsym
@@ -322,14 +322,14 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool {
                        // but we only need to support cgo and that's all it needs.
                        ld.Adddynsym(ctxt, targ)
 
-                       got := ld.Linklookup(ctxt, ".got", 0)
+                       got := ctxt.Syms.Lookup(".got", 0)
                        s.Type = got.Type | obj.SSUB
                        s.Outer = got
                        s.Sub = got.Sub
                        got.Sub = s
                        s.Value = got.Size
                        ld.Adduint32(ctxt, got, 0)
-                       ld.Adduint32(ctxt, ld.Linklookup(ctxt, ".linkedit.got", 0), uint32(targ.Dynid))
+                       ld.Adduint32(ctxt, ctxt.Syms.Lookup(".linkedit.got", 0), uint32(targ.Dynid))
                        r.Type = 256 // ignore during relocsym
                        return true
                }
@@ -503,7 +503,7 @@ func archreloc(ctxt *ld.Link, r *ld.Reloc, s *ld.Symbol, val *int64) int {
                return 0
 
        case obj.R_GOTOFF:
-               *val = ld.Symaddr(r.Sym) + r.Add - ld.Symaddr(ld.Linklookup(ctxt, ".got", 0))
+               *val = ld.Symaddr(r.Sym) + r.Add - ld.Symaddr(ctxt.Syms.Lookup(".got", 0))
                return 0
        }
 
@@ -516,8 +516,8 @@ func archrelocvariant(ctxt *ld.Link, r *ld.Reloc, s *ld.Symbol, t int64) int64 {
 }
 
 func elfsetupplt(ctxt *ld.Link) {
-       plt := ld.Linklookup(ctxt, ".plt", 0)
-       got := ld.Linklookup(ctxt, ".got.plt", 0)
+       plt := ctxt.Syms.Lookup(".plt", 0)
+       got := ctxt.Syms.Lookup(".got.plt", 0)
        if plt.Size == 0 {
                // pushl got+4
                ld.Adduint8(ctxt, plt, 0xff)
@@ -535,7 +535,7 @@ func elfsetupplt(ctxt *ld.Link) {
                ld.Adduint32(ctxt, plt, 0)
 
                // assume got->size == 0 too
-               ld.Addaddrplus(ctxt, got, ld.Linklookup(ctxt, ".dynamic", 0), 0)
+               ld.Addaddrplus(ctxt, got, ctxt.Syms.Lookup(".dynamic", 0), 0)
 
                ld.Adduint32(ctxt, got, 0)
                ld.Adduint32(ctxt, got, 0)
@@ -550,9 +550,9 @@ func addpltsym(ctxt *ld.Link, s *ld.Symbol) {
        ld.Adddynsym(ctxt, s)
 
        if ld.Iself {
-               plt := ld.Linklookup(ctxt, ".plt", 0)
-               got := ld.Linklookup(ctxt, ".got.plt", 0)
-               rel := ld.Linklookup(ctxt, ".rel.plt", 0)
+               plt := ctxt.Syms.Lookup(".plt", 0)
+               got := ctxt.Syms.Lookup(".got.plt", 0)
+               rel := ctxt.Syms.Lookup(".rel.plt", 0)
                if plt.Size == 0 {
                        elfsetupplt(ctxt)
                }
@@ -585,18 +585,18 @@ func addpltsym(ctxt *ld.Link, s *ld.Symbol) {
        } else if ld.Headtype == obj.Hdarwin {
                // Same laziness as in 6l.
 
-               plt := ld.Linklookup(ctxt, ".plt", 0)
+               plt := ctxt.Syms.Lookup(".plt", 0)
 
                addgotsym(ctxt, s)
 
-               ld.Adduint32(ctxt, ld.Linklookup(ctxt, ".linkedit.plt", 0), uint32(s.Dynid))
+               ld.Adduint32(ctxt, ctxt.Syms.Lookup(".linkedit.plt", 0), uint32(s.Dynid))
 
                // jmpq *got+size(IP)
                s.Plt = int32(plt.Size)
 
                ld.Adduint8(ctxt, plt, 0xff)
                ld.Adduint8(ctxt, plt, 0x25)
-               ld.Addaddrplus(ctxt, plt, ld.Linklookup(ctxt, ".got", 0), int64(s.Got))
+               ld.Addaddrplus(ctxt, plt, ctxt.Syms.Lookup(".got", 0), int64(s.Got))
        } else {
                ld.Errorf(s, "addpltsym: unsupported binary format")
        }
@@ -608,16 +608,16 @@ func addgotsym(ctxt *ld.Link, s *ld.Symbol) {
        }
 
        ld.Adddynsym(ctxt, s)
-       got := ld.Linklookup(ctxt, ".got", 0)
+       got := ctxt.Syms.Lookup(".got", 0)
        s.Got = int32(got.Size)
        ld.Adduint32(ctxt, got, 0)
 
        if ld.Iself {
-               rel := ld.Linklookup(ctxt, ".rel", 0)
+               rel := ctxt.Syms.Lookup(".rel", 0)
                ld.Addaddrplus(ctxt, rel, got, int64(s.Got))
                ld.Adduint32(ctxt, rel, ld.ELF32_R_INFO(uint32(s.Dynid), ld.R_386_GLOB_DAT))
        } else if ld.Headtype == obj.Hdarwin {
-               ld.Adduint32(ctxt, ld.Linklookup(ctxt, ".linkedit.got", 0), uint32(s.Dynid))
+               ld.Adduint32(ctxt, ctxt.Syms.Lookup(".linkedit.got", 0), uint32(s.Dynid))
        } else {
                ld.Errorf(s, "addgotsym: unsupported binary format")
        }
@@ -719,7 +719,7 @@ func asmb(ctxt *ld.Link) {
                        ld.Asmplan9sym(ctxt)
                        ld.Cflush()
 
-                       sym := ld.Linklookup(ctxt, "pclntab", 0)
+                       sym := ctxt.Syms.Lookup("pclntab", 0)
                        if sym != nil {
                                ld.Lcsize = int32(len(sym.P))
                                for i := 0; int32(i) < ld.Lcsize; i++ {