diff --git a/src/cmd/link/internal/amd64/asm.go b/src/cmd/link/internal/amd64/asm.go index 0f9775ed77..dde47ac7c5 100644 --- a/src/cmd/link/internal/amd64/asm.go +++ b/src/cmd/link/internal/amd64/asm.go @@ -250,7 +250,7 @@ func adddynrel(ctxt *ld.Link, s *sym.Symbol, r *sym.Reloc) bool { return true case objabi.R_ADDR: - if s.Type == sym.STEXT && ld.Iself { + if s.Type == sym.STEXT && ctxt.IsELF { if ld.Headtype == objabi.Hsolaris { addpltsym(ctxt, targ) r.Sym = ctxt.Syms.Lookup(".plt", 0) @@ -316,7 +316,7 @@ func adddynrel(ctxt *ld.Link, s *sym.Symbol, r *sym.Reloc) bool { } } - if ld.Iself { + if ctxt.IsELF { // TODO: We generate a R_X86_64_64 relocation for every R_ADDR, even // though it would be more efficient (for the dynamic linker) if we // generated R_X86_RELATIVE instead. @@ -569,7 +569,7 @@ func addpltsym(ctxt *ld.Link, s *sym.Symbol) { ld.Adddynsym(ctxt, s) - if ld.Iself { + if ctxt.IsELF { plt := ctxt.Syms.Lookup(".plt", 0) got := ctxt.Syms.Lookup(".got.plt", 0) rela := ctxt.Syms.Lookup(".rela.plt", 0) @@ -640,7 +640,7 @@ func addgotsym(ctxt *ld.Link, s *sym.Symbol) { s.Got = int32(got.Size) got.AddUint64(ctxt.Arch, 0) - if ld.Iself { + if ctxt.IsELF { rela := ctxt.Syms.Lookup(".rela", 0) rela.AddAddrPlus(ctxt.Arch, got, int64(s.Got)) rela.AddUint64(ctxt.Arch, ld.ELF64_R_INFO(uint32(s.Dynid), uint32(elf.R_X86_64_GLOB_DAT))) @@ -661,7 +661,7 @@ func asmb(ctxt *ld.Link) { ctxt.Logf("%5.2f codeblk\n", ld.Cputime()) } - if ld.Iself { + if ctxt.IsELF { ld.Asmbelfsetup() } @@ -763,7 +763,7 @@ func asmb(ctxt *ld.Link) { ctxt.Out.SeekSet(symo) switch ld.Headtype { default: - if ld.Iself { + if ctxt.IsELF { ctxt.Out.SeekSet(symo) ld.Asmelfsym(ctxt) ctxt.Out.Flush() diff --git a/src/cmd/link/internal/arm/asm.go b/src/cmd/link/internal/arm/asm.go index 8e980dcd9d..cbb97c3b6b 100644 --- a/src/cmd/link/internal/arm/asm.go +++ b/src/cmd/link/internal/arm/asm.go @@ -238,7 +238,7 @@ func adddynrel(ctxt *ld.Link, s *sym.Symbol, r *sym.Reloc) bool { if s.Type != sym.SDATA { break } - if ld.Iself { + if ctxt.IsELF { ld.Adddynsym(ctxt, targ) rel := ctxt.Syms.Lookup(".rel", 0) rel.AddAddrPlus(ctxt.Arch, s, int64(r.Off)) @@ -671,7 +671,7 @@ func addpltsym(ctxt *ld.Link, s *sym.Symbol) { ld.Adddynsym(ctxt, s) - if ld.Iself { + if ctxt.IsELF { plt := ctxt.Syms.Lookup(".plt", 0) got := ctxt.Syms.Lookup(".got.plt", 0) rel := ctxt.Syms.Lookup(".rel.plt", 0) @@ -713,7 +713,7 @@ func addgotsyminternal(ctxt *ld.Link, s *sym.Symbol) { got.AddAddrPlus(ctxt.Arch, s, 0) - if ld.Iself { + if ctxt.IsELF { } else { ld.Errorf(s, "addgotsyminternal: unsupported binary format") } @@ -729,7 +729,7 @@ func addgotsym(ctxt *ld.Link, s *sym.Symbol) { s.Got = int32(got.Size) got.AddUint32(ctxt.Arch, 0) - if ld.Iself { + if ctxt.IsELF { rel := ctxt.Syms.Lookup(".rel", 0) rel.AddAddrPlus(ctxt.Arch, got, int64(s.Got)) rel.AddUint32(ctxt.Arch, ld.ELF32_R_INFO(uint32(s.Dynid), uint32(elf.R_ARM_GLOB_DAT))) @@ -743,7 +743,7 @@ func asmb(ctxt *ld.Link) { ctxt.Logf("%5.2f asmb\n", ld.Cputime()) } - if ld.Iself { + if ctxt.IsELF { ld.Asmbelfsetup() } @@ -797,7 +797,7 @@ func asmb(ctxt *ld.Link) { } switch ld.Headtype { default: - if ld.Iself { + if ctxt.IsELF { symo = uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen) symo = uint32(ld.Rnd(int64(symo), int64(*ld.FlagRound))) } @@ -812,7 +812,7 @@ func asmb(ctxt *ld.Link) { ctxt.Out.SeekSet(int64(symo)) switch ld.Headtype { default: - if ld.Iself { + if ctxt.IsELF { if ctxt.Debugvlog != 0 { ctxt.Logf("%5.2f elfsym\n", ld.Cputime()) } diff --git a/src/cmd/link/internal/arm64/asm.go b/src/cmd/link/internal/arm64/asm.go index 324151e40e..cc7f4d1abf 100644 --- a/src/cmd/link/internal/arm64/asm.go +++ b/src/cmd/link/internal/arm64/asm.go @@ -379,7 +379,7 @@ func asmb(ctxt *ld.Link) { ctxt.Logf("%5.2f asmb\n", ld.Cputime()) } - if ld.Iself { + if ctxt.IsELF { ld.Asmbelfsetup() } @@ -433,7 +433,7 @@ func asmb(ctxt *ld.Link) { } switch ld.Headtype { default: - if ld.Iself { + if ctxt.IsELF { symo = uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen) symo = uint32(ld.Rnd(int64(symo), int64(*ld.FlagRound))) } @@ -448,7 +448,7 @@ func asmb(ctxt *ld.Link) { ctxt.Out.SeekSet(int64(symo)) switch ld.Headtype { default: - if ld.Iself { + if ctxt.IsELF { if ctxt.Debugvlog != 0 { ctxt.Logf("%5.2f elfsym\n", ld.Cputime()) } diff --git a/src/cmd/link/internal/ld/data.go b/src/cmd/link/internal/ld/data.go index 3851aa77a0..11bdf9ce41 100644 --- a/src/cmd/link/internal/ld/data.go +++ b/src/cmd/link/internal/ld/data.go @@ -189,7 +189,7 @@ func relocsym(ctxt *Link, s *sym.Symbol) { case objabi.R_TLS_LE: isAndroidX86 := objabi.GOOS == "android" && (ctxt.Arch.InFamily(sys.AMD64, sys.I386)) - if ctxt.LinkMode == LinkExternal && Iself && !isAndroidX86 { + if ctxt.LinkMode == LinkExternal && ctxt.IsELF && !isAndroidX86 { r.Done = false if r.Sym == nil { r.Sym = ctxt.Tlsg @@ -203,7 +203,7 @@ func relocsym(ctxt *Link, s *sym.Symbol) { break } - if Iself && ctxt.Arch.Family == sys.ARM { + if ctxt.IsELF && ctxt.Arch.Family == sys.ARM { // On ELF ARM, the thread pointer is 8 bytes before // the start of the thread-local data block, so add 8 // to the actual TLS offset (r->sym->value). @@ -212,7 +212,7 @@ func relocsym(ctxt *Link, s *sym.Symbol) { // related to the fact that our own TLS storage happens // to take up 8 bytes. o = 8 + r.Sym.Value - } else if Iself || Headtype == objabi.Hplan9 || Headtype == objabi.Hdarwin || isAndroidX86 { + } else if ctxt.IsELF || Headtype == objabi.Hplan9 || Headtype == objabi.Hdarwin || isAndroidX86 { o = int64(ctxt.Tlsoffset) + r.Add } else if Headtype == objabi.Hwindows { o = r.Add @@ -222,7 +222,7 @@ func relocsym(ctxt *Link, s *sym.Symbol) { case objabi.R_TLS_IE: isAndroidX86 := objabi.GOOS == "android" && (ctxt.Arch.InFamily(sys.AMD64, sys.I386)) - if ctxt.LinkMode == LinkExternal && Iself && !isAndroidX86 { + if ctxt.LinkMode == LinkExternal && ctxt.IsELF && !isAndroidX86 { r.Done = false if r.Sym == nil { r.Sym = ctxt.Tlsg @@ -235,7 +235,7 @@ func relocsym(ctxt *Link, s *sym.Symbol) { } break } - if ctxt.BuildMode == BuildModePIE && Iself { + if ctxt.BuildMode == BuildModePIE && ctxt.IsELF { // We are linking the final executable, so we // can optimize any TLS IE relocation to LE. if Thearch.TLSIEtoLE == nil { @@ -268,7 +268,7 @@ func relocsym(ctxt *Link, s *sym.Symbol) { r.Xsym = rs o = r.Xadd - if Iself { + if ctxt.IsELF { if ctxt.Arch.Family == sys.AMD64 { o = 0 } @@ -336,7 +336,7 @@ func relocsym(ctxt *Link, s *sym.Symbol) { r.Xadd = r.Add + Symaddr(r.Sym) - int64(r.Sym.Sect.Vaddr) o = r.Xadd - if Iself && ctxt.Arch.Family == sys.AMD64 { + if ctxt.IsELF && ctxt.Arch.Family == sys.AMD64 { o = 0 } break @@ -390,7 +390,7 @@ func relocsym(ctxt *Link, s *sym.Symbol) { r.Xsym = rs o = r.Xadd - if Iself { + if ctxt.IsELF { if ctxt.Arch.Family == sys.AMD64 { o = 0 } @@ -576,7 +576,7 @@ func dynreloc(ctxt *Link, data *[sym.SXREF][]*sym.Symbol) { dynrelocsym(ctxt, s) } } - if Iself { + if ctxt.IsELF { elfdynhash(ctxt) } } @@ -1289,7 +1289,7 @@ func (ctxt *Link) dodata() { if len(data[sym.STLSBSS]) > 0 { var sect *sym.Section - if Iself && (ctxt.LinkMode == LinkExternal || !*FlagD) { + if ctxt.IsELF && (ctxt.LinkMode == LinkExternal || !*FlagD) { sect = addsection(ctxt.Arch, &Segdata, ".tbss", 06) sect.Align = int32(ctxt.Arch.PtrSize) sect.Vaddr = 0 @@ -1320,7 +1320,7 @@ func (ctxt *Link) dodata() { * segtext. */ var segro *sym.Segment - if Iself && ctxt.LinkMode == LinkInternal { + if ctxt.IsELF && ctxt.LinkMode == LinkInternal { segro = &Segrodata } else { segro = &Segtext @@ -1690,7 +1690,7 @@ func dodataSect(ctxt *Link, symn sym.SymKind, syms []*sym.Symbol) (result []*sym syms[len(syms)-1] = tail } - if Iself && symn == sym.SELFROSECT { + if ctxt.IsELF && symn == sym.SELFROSECT { // Make .rela and .rela.plt contiguous, the ELF ABI requires this // and Solaris actually cares. reli, plti := -1, -1 @@ -1732,7 +1732,7 @@ func dodataSect(ctxt *Link, symn sym.SymKind, syms []*sym.Symbol) (result []*sym // at the very beginning of the text segment. // This ``header'' is read by cmd/go. func (ctxt *Link) textbuildid() { - if Iself || ctxt.BuildMode == BuildModePlugin || *flagBuildid == "" { + if ctxt.IsELF || ctxt.BuildMode == BuildModePlugin || *flagBuildid == "" { return } @@ -1840,7 +1840,7 @@ func assignAddress(ctxt *Link, sect *sym.Section, n int, s *sym.Symbol, va uint6 // Only break at outermost syms. - if ctxt.Arch.InFamily(sys.PPC64) && s.Outer == nil && Iself && ctxt.LinkMode == LinkExternal && va-sect.Vaddr+funcsize+maxSizeTrampolinesPPC64(s, isTramp) > 0x1c00000 { + if ctxt.Arch.InFamily(sys.PPC64) && s.Outer == nil && ctxt.IsELF && ctxt.LinkMode == LinkExternal && va-sect.Vaddr+funcsize+maxSizeTrampolinesPPC64(s, isTramp) > 0x1c00000 { // Set the length for the previous text section sect.Length = va - sect.Vaddr @@ -1941,11 +1941,11 @@ func (ctxt *Link) address() { var bss *sym.Section var noptrbss *sym.Section for i, s := range Segdata.Sections { - if Iself && s.Name == ".tbss" { + if ctxt.IsELF && s.Name == ".tbss" { continue } vlen := int64(s.Length) - if i+1 < len(Segdata.Sections) && !(Iself && Segdata.Sections[i+1].Name == ".tbss") { + if i+1 < len(Segdata.Sections) && !(ctxt.IsELF && Segdata.Sections[i+1].Name == ".tbss") { vlen = int64(Segdata.Sections[i+1].Vaddr - s.Vaddr) } s.Vaddr = va diff --git a/src/cmd/link/internal/ld/dwarf.go b/src/cmd/link/internal/ld/dwarf.go index 3059e7caf1..f4987bd23a 100644 --- a/src/cmd/link/internal/ld/dwarf.go +++ b/src/cmd/link/internal/ld/dwarf.go @@ -1508,7 +1508,7 @@ func dwarfgeneratedebugsyms(ctxt *Link) { if ctxt.LinkMode == LinkExternal { switch { - case Iself: + case ctxt.IsELF: case Headtype == objabi.Hdarwin: case Headtype == objabi.Hwindows: default: diff --git a/src/cmd/link/internal/ld/elf.go b/src/cmd/link/internal/ld/elf.go index 470eadf7a0..4f7162f9af 100644 --- a/src/cmd/link/internal/ld/elf.go +++ b/src/cmd/link/internal/ld/elf.go @@ -453,8 +453,6 @@ const ( ) var ( - Iself bool - Nelfsym = 1 elf64 bool @@ -485,7 +483,7 @@ var buildinfo []byte we write section and prog headers. */ func Elfinit(ctxt *Link) { - Iself = true + ctxt.IsELF = true if ctxt.Arch.InFamily(sys.AMD64, sys.ARM64, sys.MIPS64, sys.PPC64, sys.S390X) { elfRelType = ".rela" @@ -1008,7 +1006,7 @@ havelib: } func elfdynhash(ctxt *Link) { - if !Iself { + if !ctxt.IsELF { return } @@ -1429,7 +1427,7 @@ func addgonote(ctxt *Link, sectionName string, tag uint32, desc []byte) { } func (ctxt *Link) doelf() { - if !Iself { + if !ctxt.IsELF { return } diff --git a/src/cmd/link/internal/ld/go.go b/src/cmd/link/internal/ld/go.go index 537b2e90ba..c4e6bf6f2f 100644 --- a/src/cmd/link/internal/ld/go.go +++ b/src/cmd/link/internal/ld/go.go @@ -298,7 +298,7 @@ func adddynlib(ctxt *Link, lib string) { } seenlib[lib] = true - if Iself { + if ctxt.IsELF { s := ctxt.Syms.Lookup(".dynstr", 0) if s.Size == 0 { Addstring(s, "") @@ -314,7 +314,7 @@ func Adddynsym(ctxt *Link, s *sym.Symbol) { return } - if Iself { + if ctxt.IsELF { elfadddynsym(ctxt, s) } else if Headtype == objabi.Hdarwin { Errorf(s, "adddynsym: missed symbol (Extname=%s)", s.Extname) diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go index 53e53c7e91..913b70ec93 100644 --- a/src/cmd/link/internal/ld/lib.go +++ b/src/cmd/link/internal/ld/lib.go @@ -154,7 +154,7 @@ func (ctxt *Link) CanUsePlugins() bool { func (ctxt *Link) UseRelro() bool { switch ctxt.BuildMode { case BuildModeCArchive, BuildModeCShared, BuildModeShared, BuildModePIE, BuildModePlugin: - return Iself + return ctxt.IsELF default: return ctxt.linkShared } @@ -594,7 +594,7 @@ func (ctxt *Link) loadlib() { } if ctxt.Arch == sys.Arch386 { - if (ctxt.BuildMode == BuildModeCArchive && Iself) || (ctxt.BuildMode == BuildModeCShared && Headtype != objabi.Hwindows) || ctxt.BuildMode == BuildModePIE || ctxt.DynlinkingGo() { + if (ctxt.BuildMode == BuildModeCArchive && ctxt.IsELF) || (ctxt.BuildMode == BuildModeCShared && Headtype != objabi.Hwindows) || ctxt.BuildMode == BuildModePIE || ctxt.DynlinkingGo() { got := ctxt.Syms.Lookup("_GLOBAL_OFFSET_TABLE_", 0) got.Type = sym.SDYNIMPORT got.Attr |= sym.AttrReachable @@ -1151,7 +1151,7 @@ func (ctxt *Link) hostlink() { } } - if Iself && ctxt.DynlinkingGo() { + if ctxt.IsELF && ctxt.DynlinkingGo() { // We force all symbol resolution to be done at program startup // because lazy PLT resolution can use large amounts of stack at // times we cannot allow it to do so. @@ -1185,7 +1185,7 @@ func (ctxt *Link) hostlink() { } } - if Iself && len(buildinfo) > 0 { + if ctxt.IsELF && len(buildinfo) > 0 { argv = append(argv, fmt.Sprintf("-Wl,--build-id=0x%x", buildinfo)) } @@ -1207,7 +1207,7 @@ func (ctxt *Link) hostlink() { } // Force global symbols to be exported for dlopen, etc. - if Iself { + if ctxt.IsELF { argv = append(argv, "-rdynamic") } @@ -1291,7 +1291,7 @@ func (ctxt *Link) hostlink() { // we added it. We do it in this order, rather than // only adding -rdynamic later, so that -*extldflags // can override -rdynamic without using -static. - if Iself && p == "-static" { + if ctxt.IsELF && p == "-static" { for i := range argv { if argv[i] == "-rdynamic" { argv[i] = "-static" @@ -2043,7 +2043,7 @@ func genasmsym(ctxt *Link, put func(*Link, *sym.Symbol, string, SymbolType, int6 put(ctxt, s, s.Name, BSSSym, Symaddr(s), s.Gotype) case sym.SHOSTOBJ: - if Headtype == objabi.Hwindows || Iself { + if Headtype == objabi.Hwindows || ctxt.IsELF { put(ctxt, s, s.Name, UndefinedSym, s.Value, nil) } diff --git a/src/cmd/link/internal/ld/link.go b/src/cmd/link/internal/ld/link.go index ea8dba363f..65afd49db9 100644 --- a/src/cmd/link/internal/ld/link.go +++ b/src/cmd/link/internal/ld/link.go @@ -60,6 +60,8 @@ type Link struct { Loaded bool // set after all inputs have been loaded as symbols + IsELF bool + linkShared bool // link against installed Go shared libraries LinkMode LinkMode BuildMode BuildMode diff --git a/src/cmd/link/internal/ld/main.go b/src/cmd/link/internal/ld/main.go index 4a1e27e382..8c69d297c0 100644 --- a/src/cmd/link/internal/ld/main.go +++ b/src/cmd/link/internal/ld/main.go @@ -166,7 +166,7 @@ func Main(arch *sys.Arch, theArch Arch) { ctxt.computeTLSOffset() Thearch.Archinit(ctxt) - if ctxt.linkShared && !Iself { + if ctxt.linkShared && !ctxt.IsELF { Exitf("-linkshared can only be used on elf systems") } diff --git a/src/cmd/link/internal/mips/asm.go b/src/cmd/link/internal/mips/asm.go index 1da85c0079..4c1be5250a 100644 --- a/src/cmd/link/internal/mips/asm.go +++ b/src/cmd/link/internal/mips/asm.go @@ -172,7 +172,7 @@ func asmb(ctxt *ld.Link) { ctxt.Logf("%5.2f asmb\n", ld.Cputime()) } - if ld.Iself { + if ctxt.IsELF { ld.Asmbelfsetup() } @@ -209,7 +209,7 @@ func asmb(ctxt *ld.Link) { ld.Lcsize = 0 symo := uint32(0) if !*ld.FlagS { - if !ld.Iself { + if !ctxt.IsELF { ld.Errorf(nil, "unsupported executable format") } if ctxt.Debugvlog != 0 { diff --git a/src/cmd/link/internal/mips64/asm.go b/src/cmd/link/internal/mips64/asm.go index eb47757748..98ddcad5a3 100644 --- a/src/cmd/link/internal/mips64/asm.go +++ b/src/cmd/link/internal/mips64/asm.go @@ -179,7 +179,7 @@ func asmb(ctxt *ld.Link) { ctxt.Logf("%5.2f asmb\n", ld.Cputime()) } - if ld.Iself { + if ctxt.IsELF { ld.Asmbelfsetup() } @@ -228,7 +228,7 @@ func asmb(ctxt *ld.Link) { } switch ld.Headtype { default: - if ld.Iself { + if ctxt.IsELF { symo = uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen) symo = uint32(ld.Rnd(int64(symo), int64(*ld.FlagRound))) } @@ -240,7 +240,7 @@ func asmb(ctxt *ld.Link) { ctxt.Out.SeekSet(int64(symo)) switch ld.Headtype { default: - if ld.Iself { + if ctxt.IsELF { if ctxt.Debugvlog != 0 { ctxt.Logf("%5.2f elfsym\n", ld.Cputime()) } diff --git a/src/cmd/link/internal/ppc64/asm.go b/src/cmd/link/internal/ppc64/asm.go index 41f0c31cd0..ff011c170c 100644 --- a/src/cmd/link/internal/ppc64/asm.go +++ b/src/cmd/link/internal/ppc64/asm.go @@ -806,7 +806,7 @@ func addpltsym(ctxt *ld.Link, s *sym.Symbol) { ld.Adddynsym(ctxt, s) - if ld.Iself { + if ctxt.IsELF { plt := ctxt.Syms.Lookup(".plt", 0) rela := ctxt.Syms.Lookup(".rela.plt", 0) if plt.Size == 0 { @@ -909,7 +909,7 @@ func asmb(ctxt *ld.Link) { ctxt.Logf("%5.2f asmb\n", ld.Cputime()) } - if ld.Iself { + if ctxt.IsELF { ld.Asmbelfsetup() } @@ -960,7 +960,7 @@ func asmb(ctxt *ld.Link) { } switch ld.Headtype { default: - if ld.Iself { + if ctxt.IsELF { symo = uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen) symo = uint32(ld.Rnd(int64(symo), int64(*ld.FlagRound))) } @@ -972,7 +972,7 @@ func asmb(ctxt *ld.Link) { ctxt.Out.SeekSet(int64(symo)) switch ld.Headtype { default: - if ld.Iself { + if ctxt.IsELF { if ctxt.Debugvlog != 0 { ctxt.Logf("%5.2f elfsym\n", ld.Cputime()) } diff --git a/src/cmd/link/internal/s390x/asm.go b/src/cmd/link/internal/s390x/asm.go index d6d73bf88f..d6dc91cd04 100644 --- a/src/cmd/link/internal/s390x/asm.go +++ b/src/cmd/link/internal/s390x/asm.go @@ -425,7 +425,7 @@ func addpltsym(ctxt *ld.Link, s *sym.Symbol) { ld.Adddynsym(ctxt, s) - if ld.Iself { + if ctxt.IsELF { plt := ctxt.Syms.Lookup(".plt", 0) got := ctxt.Syms.Lookup(".got", 0) rela := ctxt.Syms.Lookup(".rela.plt", 0) @@ -491,7 +491,7 @@ func addgotsym(ctxt *ld.Link, s *sym.Symbol) { s.Got = int32(got.Size) got.AddUint64(ctxt.Arch, 0) - if ld.Iself { + if ctxt.IsELF { rela := ctxt.Syms.Lookup(".rela", 0) rela.AddAddrPlus(ctxt.Arch, got, int64(s.Got)) rela.AddUint64(ctxt.Arch, ld.ELF64_R_INFO(uint32(s.Dynid), uint32(elf.R_390_GLOB_DAT))) @@ -506,7 +506,7 @@ func asmb(ctxt *ld.Link) { ctxt.Logf("%5.2f asmb\n", ld.Cputime()) } - if ld.Iself { + if ctxt.IsELF { ld.Asmbelfsetup() } @@ -549,7 +549,7 @@ func asmb(ctxt *ld.Link) { ld.Lcsize = 0 symo := uint32(0) if !*ld.FlagS { - if !ld.Iself { + if !ctxt.IsELF { ld.Errorf(nil, "unsupported executable format") } if ctxt.Debugvlog != 0 { diff --git a/src/cmd/link/internal/x86/asm.go b/src/cmd/link/internal/x86/asm.go index d2928d2706..208e26aad1 100644 --- a/src/cmd/link/internal/x86/asm.go +++ b/src/cmd/link/internal/x86/asm.go @@ -58,7 +58,7 @@ func gentext(ctxt *ld.Link) { } else { switch ctxt.BuildMode { case ld.BuildModeCArchive: - if !ld.Iself { + if !ctxt.IsELF { return } case ld.BuildModePIE, ld.BuildModeCShared, ld.BuildModePlugin: @@ -306,7 +306,7 @@ func adddynrel(ctxt *ld.Link, s *sym.Symbol, r *sym.Reloc) bool { if s.Type != sym.SDATA { break } - if ld.Iself { + if ctxt.IsELF { ld.Adddynsym(ctxt, targ) rel := ctxt.Syms.Lookup(".rel", 0) rel.AddAddrPlus(ctxt.Arch, s, int64(r.Off)) @@ -541,7 +541,7 @@ func addpltsym(ctxt *ld.Link, s *sym.Symbol) { ld.Adddynsym(ctxt, s) - if ld.Iself { + if ctxt.IsELF { plt := ctxt.Syms.Lookup(".plt", 0) got := ctxt.Syms.Lookup(".got.plt", 0) rel := ctxt.Syms.Lookup(".rel.plt", 0) @@ -604,7 +604,7 @@ func addgotsym(ctxt *ld.Link, s *sym.Symbol) { s.Got = int32(got.Size) got.AddUint32(ctxt.Arch, 0) - if ld.Iself { + if ctxt.IsELF { rel := ctxt.Syms.Lookup(".rel", 0) rel.AddAddrPlus(ctxt.Arch, got, int64(s.Got)) rel.AddUint32(ctxt.Arch, ld.ELF32_R_INFO(uint32(s.Dynid), uint32(elf.R_386_GLOB_DAT))) @@ -620,7 +620,7 @@ func asmb(ctxt *ld.Link) { ctxt.Logf("%5.2f asmb\n", ld.Cputime()) } - if ld.Iself { + if ctxt.IsELF { ld.Asmbelfsetup() } @@ -675,7 +675,7 @@ func asmb(ctxt *ld.Link) { } switch ld.Headtype { default: - if ld.Iself { + if ctxt.IsELF { symo = uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen) symo = uint32(ld.Rnd(int64(symo), int64(*ld.FlagRound))) } @@ -694,7 +694,7 @@ func asmb(ctxt *ld.Link) { ctxt.Out.SeekSet(int64(symo)) switch ld.Headtype { default: - if ld.Iself { + if ctxt.IsELF { if ctxt.Debugvlog != 0 { ctxt.Logf("%5.2f elfsym\n", ld.Cputime()) }