aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/link/internal
diff options
context:
space:
mode:
authorThan McIntosh <thanm@google.com>2019-11-01 10:44:44 -0400
committerThan McIntosh <thanm@google.com>2019-11-01 10:45:24 -0400
commitc0555a2a7a0ca83fdbb55219299fcfe1ff33e4df (patch)
tree25c35dc6bf5b8134906338df0f612fbe75089ca7 /src/cmd/link/internal
parent219922e95b8e49cfb94da9de0c48edb22a2e7054 (diff)
parent8405cd3005a5274e80e41676146629c4086b6380 (diff)
downloadgo-c0555a2a7a0ca83fdbb55219299fcfe1ff33e4df.tar.xz
[dev.link] all: merge branch 'master' into dev.link
Fixed a couple of minor conflicts in lib.go and deadcode.go relating to debug logging. Change-Id: I58335fc42ab1f1f3409fd8354da4f26419e8fb22
Diffstat (limited to 'src/cmd/link/internal')
-rw-r--r--src/cmd/link/internal/amd64/asm.go32
-rw-r--r--src/cmd/link/internal/arm/asm.go29
-rw-r--r--src/cmd/link/internal/arm64/asm.go23
-rw-r--r--src/cmd/link/internal/ld/data.go29
-rw-r--r--src/cmd/link/internal/ld/deadcode.go2
-rw-r--r--src/cmd/link/internal/ld/dwarf.go4
-rw-r--r--src/cmd/link/internal/ld/go.go18
-rw-r--r--src/cmd/link/internal/ld/ld.go6
-rw-r--r--src/cmd/link/internal/ld/lib.go50
-rw-r--r--src/cmd/link/internal/ld/macho.go4
-rw-r--r--src/cmd/link/internal/ld/main.go1
-rw-r--r--src/cmd/link/internal/ld/pcln.go2
-rw-r--r--src/cmd/link/internal/ld/pe.go10
-rw-r--r--src/cmd/link/internal/ld/symtab.go2
-rw-r--r--src/cmd/link/internal/ld/util.go17
-rw-r--r--src/cmd/link/internal/ld/xcoff.go2
-rw-r--r--src/cmd/link/internal/mips/asm.go26
-rw-r--r--src/cmd/link/internal/mips64/asm.go23
-rw-r--r--src/cmd/link/internal/ppc64/asm.go25
-rw-r--r--src/cmd/link/internal/s390x/asm.go27
-rw-r--r--src/cmd/link/internal/sym/symkind.go1
-rw-r--r--src/cmd/link/internal/sym/symkind_string.go19
-rw-r--r--src/cmd/link/internal/wasm/asm.go4
-rw-r--r--src/cmd/link/internal/x86/asm.go28
24 files changed, 98 insertions, 286 deletions
diff --git a/src/cmd/link/internal/amd64/asm.go b/src/cmd/link/internal/amd64/asm.go
index 71e230e533..991f5523ed 100644
--- a/src/cmd/link/internal/amd64/asm.go
+++ b/src/cmd/link/internal/amd64/asm.go
@@ -659,14 +659,6 @@ func addgotsym(ctxt *ld.Link, s *sym.Symbol) {
}
func asmb(ctxt *ld.Link) {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f asmb\n", ld.Cputime())
- }
-
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f codeblk\n", ld.Cputime())
- }
-
if ctxt.IsELF {
ld.Asmbelfsetup()
}
@@ -681,24 +673,14 @@ func asmb(ctxt *ld.Link) {
}
if ld.Segrodata.Filelen > 0 {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f rodatblk\n", ld.Cputime())
- }
ctxt.Out.SeekSet(int64(ld.Segrodata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen))
}
if ld.Segrelrodata.Filelen > 0 {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f relrodatblk\n", ld.Cputime())
- }
ctxt.Out.SeekSet(int64(ld.Segrelrodata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segrelrodata.Vaddr), int64(ld.Segrelrodata.Filelen))
}
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f datblk\n", ld.Cputime())
- }
-
ctxt.Out.SeekSet(int64(ld.Segdata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen))
@@ -740,9 +722,6 @@ func asmb2(ctxt *ld.Link) {
ld.Lcsize = 0
symo := int64(0)
if !*ld.FlagS {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f sym\n", ld.Cputime())
- }
switch ctxt.HeadType {
default:
case objabi.Hplan9:
@@ -775,10 +754,6 @@ func asmb2(ctxt *ld.Link) {
ctxt.Out.Flush()
ctxt.Out.Write(ld.Elfstrdat)
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f dwarf\n", ld.Cputime())
- }
-
if ctxt.LinkMode == ld.LinkExternal {
ld.Elfemitreloc(ctxt)
}
@@ -796,9 +771,7 @@ func asmb2(ctxt *ld.Link) {
}
case objabi.Hwindows:
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f dwarf\n", ld.Cputime())
- }
+ // Do nothing
case objabi.Hdarwin:
if ctxt.LinkMode == ld.LinkExternal {
@@ -807,9 +780,6 @@ func asmb2(ctxt *ld.Link) {
}
}
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f headr\n", ld.Cputime())
- }
ctxt.Out.SeekSet(0)
switch ctxt.HeadType {
default:
diff --git a/src/cmd/link/internal/arm/asm.go b/src/cmd/link/internal/arm/asm.go
index d8d01f6d27..f2fb6543d0 100644
--- a/src/cmd/link/internal/arm/asm.go
+++ b/src/cmd/link/internal/arm/asm.go
@@ -613,7 +613,7 @@ func archreloc(ctxt *ld.Link, r *sym.Reloc, s *sym.Symbol, val int64) (int64, bo
rs = rs.Outer
}
- if rs.Type != sym.SHOSTOBJ && rs.Type != sym.SDYNIMPORT && rs.Sect == nil {
+ if rs.Type != sym.SHOSTOBJ && rs.Type != sym.SDYNIMPORT && rs.Type != sym.SUNDEFEXT && rs.Sect == nil {
ld.Errorf(s, "missing section for %s", rs.Name)
}
r.Xsym = rs
@@ -760,10 +760,6 @@ func addgotsym(ctxt *ld.Link, s *sym.Symbol) {
}
func asmb(ctxt *ld.Link) {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f asmb\n", ld.Cputime())
- }
-
if ctxt.IsELF {
ld.Asmbelfsetup()
}
@@ -777,24 +773,14 @@ func asmb(ctxt *ld.Link) {
}
if ld.Segrodata.Filelen > 0 {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f rodatblk\n", ld.Cputime())
- }
ctxt.Out.SeekSet(int64(ld.Segrodata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen))
}
if ld.Segrelrodata.Filelen > 0 {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f relrodatblk\n", ld.Cputime())
- }
ctxt.Out.SeekSet(int64(ld.Segrelrodata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segrelrodata.Vaddr), int64(ld.Segrelrodata.Filelen))
}
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f datblk\n", ld.Cputime())
- }
-
ctxt.Out.SeekSet(int64(ld.Segdata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen))
@@ -815,9 +801,6 @@ func asmb2(ctxt *ld.Link) {
symo := uint32(0)
if !*ld.FlagS {
// TODO: rationalize
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f sym\n", ld.Cputime())
- }
switch ctxt.HeadType {
default:
if ctxt.IsELF {
@@ -840,9 +823,6 @@ func asmb2(ctxt *ld.Link) {
switch ctxt.HeadType {
default:
if ctxt.IsELF {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f elfsym\n", ld.Cputime())
- }
ld.Asmelfsym(ctxt)
ctxt.Out.Flush()
ctxt.Out.Write(ld.Elfstrdat)
@@ -864,9 +844,7 @@ func asmb2(ctxt *ld.Link) {
}
case objabi.Hwindows:
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f dwarf\n", ld.Cputime())
- }
+ // Do nothing
case objabi.Hdarwin:
if ctxt.LinkMode == ld.LinkExternal {
@@ -875,9 +853,6 @@ func asmb2(ctxt *ld.Link) {
}
}
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f header\n", ld.Cputime())
- }
ctxt.Out.SeekSet(0)
switch ctxt.HeadType {
default:
diff --git a/src/cmd/link/internal/arm64/asm.go b/src/cmd/link/internal/arm64/asm.go
index e824627bf7..9fccf73a59 100644
--- a/src/cmd/link/internal/arm64/asm.go
+++ b/src/cmd/link/internal/arm64/asm.go
@@ -803,10 +803,6 @@ func addgotsym(ctxt *ld.Link, s *sym.Symbol) {
}
func asmb(ctxt *ld.Link) {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f asmb\n", ld.Cputime())
- }
-
if ctxt.IsELF {
ld.Asmbelfsetup()
}
@@ -820,24 +816,14 @@ func asmb(ctxt *ld.Link) {
}
if ld.Segrodata.Filelen > 0 {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f rodatblk\n", ld.Cputime())
- }
ctxt.Out.SeekSet(int64(ld.Segrodata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen))
}
if ld.Segrelrodata.Filelen > 0 {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f relrodatblk\n", ld.Cputime())
- }
ctxt.Out.SeekSet(int64(ld.Segrelrodata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segrelrodata.Vaddr), int64(ld.Segrelrodata.Filelen))
}
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f datblk\n", ld.Cputime())
- }
-
ctxt.Out.SeekSet(int64(ld.Segdata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen))
@@ -858,9 +844,6 @@ func asmb2(ctxt *ld.Link) {
symo := uint32(0)
if !*ld.FlagS {
// TODO: rationalize
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f sym\n", ld.Cputime())
- }
switch ctxt.HeadType {
default:
if ctxt.IsELF {
@@ -879,9 +862,6 @@ func asmb2(ctxt *ld.Link) {
switch ctxt.HeadType {
default:
if ctxt.IsELF {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f elfsym\n", ld.Cputime())
- }
ld.Asmelfsym(ctxt)
ctxt.Out.Flush()
ctxt.Out.Write(ld.Elfstrdat)
@@ -909,9 +889,6 @@ func asmb2(ctxt *ld.Link) {
}
}
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f header\n", ld.Cputime())
- }
ctxt.Out.SeekSet(0)
switch ctxt.HeadType {
default:
diff --git a/src/cmd/link/internal/ld/data.go b/src/cmd/link/internal/ld/data.go
index dbc7a59a1e..ea238f7916 100644
--- a/src/cmd/link/internal/ld/data.go
+++ b/src/cmd/link/internal/ld/data.go
@@ -96,7 +96,7 @@ func trampoline(ctxt *Link, s *sym.Symbol) {
if !r.Type.IsDirectJump() {
continue
}
- if Symaddr(r.Sym) == 0 && r.Sym.Type != sym.SDYNIMPORT {
+ if Symaddr(r.Sym) == 0 && (r.Sym.Type != sym.SDYNIMPORT && r.Sym.Type != sym.SUNDEFEXT) {
if r.Sym.File != s.File {
if !isRuntimeDepPkg(s.File) || !isRuntimeDepPkg(r.Sym.File) {
ctxt.ErrorUnresolved(s, r)
@@ -298,7 +298,7 @@ func relocsym(ctxt *Link, s *sym.Symbol) {
rs = rs.Outer
}
- if rs.Type != sym.SHOSTOBJ && rs.Type != sym.SDYNIMPORT && rs.Sect == nil {
+ if rs.Type != sym.SHOSTOBJ && rs.Type != sym.SDYNIMPORT && rs.Type != sym.SUNDEFEXT && rs.Sect == nil {
Errorf(s, "missing section for relocation target %s", rs.Name)
}
r.Xsym = rs
@@ -418,6 +418,17 @@ func relocsym(ctxt *Link, s *sym.Symbol) {
}
fallthrough
case objabi.R_CALL, objabi.R_PCREL:
+ if ctxt.LinkMode == LinkExternal && r.Sym != nil && r.Sym.Type == sym.SUNDEFEXT {
+ // pass through to the external linker.
+ r.Done = false
+ r.Xadd = 0
+ if ctxt.IsELF {
+ r.Xadd -= int64(r.Siz)
+ }
+ r.Xsym = r.Sym
+ o = 0
+ break
+ }
if ctxt.LinkMode == LinkExternal && r.Sym != nil && r.Sym.Type != sym.SCONST && (r.Sym.Sect != s.Sect || r.Type == objabi.R_GOTPCREL) {
r.Done = false
@@ -559,10 +570,6 @@ func relocsym(ctxt *Link, s *sym.Symbol) {
}
func (ctxt *Link) reloc() {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f reloc\n", Cputime())
- }
-
for _, s := range ctxt.Textp {
relocsym(ctxt, s)
}
@@ -623,9 +630,6 @@ func (ctxt *Link) windynrelocsyms() {
if !(ctxt.HeadType == objabi.Hwindows && iscgo && ctxt.LinkMode == LinkInternal) {
return
}
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f windynrelocsyms\n", Cputime())
- }
/* relocation table */
rel := ctxt.Syms.Lookup(".rel", 0)
@@ -672,9 +676,6 @@ func dynreloc(ctxt *Link, data *[sym.SXREF][]*sym.Symbol) {
if *FlagD {
return
}
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f dynreloc\n", Cputime())
- }
for _, s := range ctxt.Textp {
dynrelocsym(ctxt, s)
@@ -1143,10 +1144,6 @@ func checkdatsize(ctxt *Link, datsize int64, symn sym.SymKind) {
var datap []*sym.Symbol
func (ctxt *Link) dodata() {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f dodata\n", Cputime())
- }
-
if (ctxt.DynlinkingGo() && ctxt.HeadType == objabi.Hdarwin) || (ctxt.HeadType == objabi.Haix && ctxt.LinkMode == LinkExternal) {
// The values in moduledata are filled out by relocations
// pointing to the addresses of these special symbols.
diff --git a/src/cmd/link/internal/ld/deadcode.go b/src/cmd/link/internal/ld/deadcode.go
index 1ff34fec5f..e79207e2b8 100644
--- a/src/cmd/link/internal/ld/deadcode.go
+++ b/src/cmd/link/internal/ld/deadcode.go
@@ -47,7 +47,7 @@ import (
// Any unreached text symbols are removed from ctxt.Textp.
func deadcode(ctxt *Link) {
if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f deadcode\n", Cputime())
+ ctxt.Logf("deadcode\n")
}
if *flagNewobj {
diff --git a/src/cmd/link/internal/ld/dwarf.go b/src/cmd/link/internal/ld/dwarf.go
index ebbfbb8ed2..f5af90b028 100644
--- a/src/cmd/link/internal/ld/dwarf.go
+++ b/src/cmd/link/internal/ld/dwarf.go
@@ -1798,10 +1798,6 @@ func dwarfGenerateDebugSyms(ctxt *Link) {
return
}
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f dwarf\n", Cputime())
- }
-
abbrev := writeabbrev(ctxt)
syms := []*sym.Symbol{abbrev}
diff --git a/src/cmd/link/internal/ld/go.go b/src/cmd/link/internal/ld/go.go
index 6c61869ed8..3246747bb7 100644
--- a/src/cmd/link/internal/ld/go.go
+++ b/src/cmd/link/internal/ld/go.go
@@ -365,6 +365,24 @@ func fieldtrack(ctxt *Link) {
}
func (ctxt *Link) addexport() {
+ // Track undefined external symbols during external link.
+ if ctxt.LinkMode == LinkExternal {
+ for _, s := range ctxt.Syms.Allsym {
+ if !s.Attr.Reachable() || s.Attr.Special() || s.Attr.SubSymbol() {
+ continue
+ }
+ if s.Type != sym.STEXT {
+ continue
+ }
+ for i := range s.R {
+ r := &s.R[i]
+ if r.Sym != nil && r.Sym.Type == sym.Sxxx {
+ r.Sym.Type = sym.SUNDEFEXT
+ }
+ }
+ }
+ }
+
// TODO(aix)
if ctxt.HeadType == objabi.Hdarwin || ctxt.HeadType == objabi.Haix {
return
diff --git a/src/cmd/link/internal/ld/ld.go b/src/cmd/link/internal/ld/ld.go
index 9e5e2f9872..dae75a4c1a 100644
--- a/src/cmd/link/internal/ld/ld.go
+++ b/src/cmd/link/internal/ld/ld.go
@@ -148,7 +148,7 @@ func findlib(ctxt *Link, lib string) (string, bool) {
}
}
}
- pname = path.Clean(pname)
+ pname = filepath.Clean(pname)
}
return pname, isshlib
@@ -165,7 +165,7 @@ func addlib(ctxt *Link, src string, obj string, lib string) *sym.Library {
pname, isshlib := findlib(ctxt, lib)
if ctxt.Debugvlog > 1 {
- ctxt.Logf("%5.2f addlib: %s %s pulls in %s isshlib %v\n", elapsed(), obj, src, pname, isshlib)
+ ctxt.Logf("addlib: %s %s pulls in %s isshlib %v\n", obj, src, pname, isshlib)
}
if isshlib {
@@ -188,7 +188,7 @@ func addlibpath(ctxt *Link, srcref string, objref string, file string, pkg strin
}
if ctxt.Debugvlog > 1 {
- ctxt.Logf("%5.2f addlibpath: srcref: %s objref: %s file: %s pkg: %s shlib: %s\n", Cputime(), srcref, objref, file, pkg, shlib)
+ ctxt.Logf("addlibpath: srcref: %s objref: %s file: %s pkg: %s shlib: %s\n", srcref, objref, file, pkg, shlib)
}
l := &sym.Library{}
diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go
index 811dd0f9ef..a0f85b85c7 100644
--- a/src/cmd/link/internal/ld/lib.go
+++ b/src/cmd/link/internal/ld/lib.go
@@ -400,7 +400,7 @@ func (ctxt *Link) loadlib() {
lib := ctxt.Library[i]
if lib.Shlib == "" {
if ctxt.Debugvlog > 1 {
- ctxt.Logf("%5.2f autolib: %s (from %s)\n", Cputime(), lib.File, lib.Objref)
+ ctxt.Logf("autolib: %s (from %s)\n", lib.File, lib.Objref)
}
loadobjfile(ctxt, lib)
}
@@ -437,7 +437,7 @@ func (ctxt *Link) loadlib() {
for _, lib := range ctxt.Library {
if lib.Shlib != "" {
if ctxt.Debugvlog > 1 {
- ctxt.Logf("%5.2f autolib: %s (from %s)\n", Cputime(), lib.Shlib, lib.Objref)
+ ctxt.Logf("autolib: %s (from %s)\n", lib.Shlib, lib.Objref)
}
ldshlibsyms(ctxt, lib.Shlib)
}
@@ -832,7 +832,7 @@ func loadobjfile(ctxt *Link, lib *sym.Library) {
pkg := objabi.PathToPrefix(lib.Pkg)
if ctxt.Debugvlog > 1 {
- ctxt.Logf("%5.2f ldobj: %s (%s)\n", Cputime(), lib.File, pkg)
+ ctxt.Logf("ldobj: %s (%s)\n", lib.File, pkg)
}
f, err := bio.Open(lib.File)
if err != nil {
@@ -1162,13 +1162,13 @@ func (ctxt *Link) hostlink() {
switch ctxt.HeadType {
case objabi.Hdarwin:
- argv = append(argv, "-Wl,-headerpad,1144")
+ if !ctxt.Arch.InFamily(sys.ARM, sys.ARM64) {
+ // -headerpad is incompatible with -fembed-bitcode.
+ argv = append(argv, "-Wl,-headerpad,1144")
+ }
if ctxt.DynlinkingGo() && !ctxt.Arch.InFamily(sys.ARM, sys.ARM64) {
argv = append(argv, "-Wl,-flat_namespace")
}
- if ctxt.BuildMode == BuildModeExe && !ctxt.Arch.InFamily(sys.ARM64) {
- argv = append(argv, "-Wl,-no_pie")
- }
case objabi.Hopenbsd:
argv = append(argv, "-Wl,-nopie")
case objabi.Hwindows:
@@ -1181,6 +1181,9 @@ func (ctxt *Link) hostlink() {
// ancient compatibility hacks.
argv = append(argv, "-Wl,--tsaware")
+ // Enable DEP
+ argv = append(argv, "-Wl,--nxcompat")
+
argv = append(argv, fmt.Sprintf("-Wl,--major-os-version=%d", PeMinimumTargetMajorVersion))
argv = append(argv, fmt.Sprintf("-Wl,--minor-os-version=%d", PeMinimumTargetMinorVersion))
argv = append(argv, fmt.Sprintf("-Wl,--major-subsystem-version=%d", PeMinimumTargetMajorVersion))
@@ -1199,11 +1202,10 @@ func (ctxt *Link) hostlink() {
switch ctxt.BuildMode {
case BuildModeExe:
if ctxt.HeadType == objabi.Hdarwin {
- if ctxt.Arch.Family == sys.ARM64 {
- // __PAGEZERO segment size determined empirically.
- // XCode 9.0.1 successfully uploads an iOS app with this value.
- argv = append(argv, "-Wl,-pagezero_size,100000000")
- } else {
+ if ctxt.Arch.Family != sys.ARM64 {
+ argv = append(argv, "-Wl,-no_pie")
+ }
+ if !ctxt.Arch.InFamily(sys.ARM, sys.ARM64) {
argv = append(argv, "-Wl,-pagezero_size,4000000")
}
}
@@ -1284,6 +1286,19 @@ func (ctxt *Link) hostlink() {
}
}
+ if ctxt.Arch.Family == sys.ARM64 && objabi.GOOS == "freebsd" {
+ // Switch to ld.bfd on freebsd/arm64.
+ argv = append(argv, "-fuse-ld=bfd")
+
+ // Provide a useful error if ld.bfd is missing.
+ cmd := exec.Command(*flagExtld, "-fuse-ld=bfd", "-Wl,--version")
+ if out, err := cmd.CombinedOutput(); err == nil {
+ if !bytes.Contains(out, []byte("GNU ld")) {
+ log.Fatalf("ARM64 external linker must be ld.bfd (issue #35197), please install devel/binutils")
+ }
+ }
+ }
+
if ctxt.IsELF && len(buildinfo) > 0 {
argv = append(argv, fmt.Sprintf("-Wl,--build-id=0x%x", buildinfo))
}
@@ -1432,7 +1447,7 @@ func (ctxt *Link) hostlink() {
}
if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f host link:", Cputime())
+ ctxt.Logf("host link:")
for _, v := range argv {
ctxt.Logf(" %q", v)
}
@@ -1900,7 +1915,7 @@ func ldshlibsyms(ctxt *Link, shlib string) {
}
}
if ctxt.Debugvlog > 1 {
- ctxt.Logf("%5.2f ldshlibsyms: found library with name %s at %s\n", Cputime(), shlib, libpath)
+ ctxt.Logf("ldshlibsyms: found library with name %s at %s\n", shlib, libpath)
}
f, err := elf.Open(libpath)
@@ -2396,6 +2411,11 @@ func genasmsym(ctxt *Link, put func(*Link, *sym.Symbol, string, SymbolType, int6
}
put(ctxt, s, s.Name, BSSSym, Symaddr(s), s.Gotype)
+ case sym.SUNDEFEXT:
+ if ctxt.HeadType == objabi.Hwindows || ctxt.HeadType == objabi.Haix || ctxt.IsELF {
+ put(ctxt, s, s.Name, UndefinedSym, s.Value, nil)
+ }
+
case sym.SHOSTOBJ:
if !s.Attr.Reachable() {
continue
@@ -2433,7 +2453,7 @@ func genasmsym(ctxt *Link, put func(*Link, *sym.Symbol, string, SymbolType, int6
}
if ctxt.Debugvlog != 0 || *flagN {
- ctxt.Logf("%5.2f symsize = %d\n", Cputime(), uint32(Symsize))
+ ctxt.Logf("symsize = %d\n", uint32(Symsize))
}
}
diff --git a/src/cmd/link/internal/ld/macho.go b/src/cmd/link/internal/ld/macho.go
index 7453f37c62..e9e48768c1 100644
--- a/src/cmd/link/internal/ld/macho.go
+++ b/src/cmd/link/internal/ld/macho.go
@@ -809,7 +809,7 @@ func machogenasmsym(ctxt *Link) {
}
}
- if s.Type == sym.SDYNIMPORT || s.Type == sym.SHOSTOBJ {
+ if s.Type == sym.SDYNIMPORT || s.Type == sym.SHOSTOBJ || s.Type == sym.SUNDEFEXT {
if s.Attr.Reachable() {
addsym(ctxt, s, "", DataSym, 0, nil)
}
@@ -886,7 +886,7 @@ func machosymtab(ctxt *Link) {
// replace "·" as ".", because DTrace cannot handle it.
Addstring(symstr, strings.Replace(s.Extname(), "·", ".", -1))
- if s.Type == sym.SDYNIMPORT || s.Type == sym.SHOSTOBJ {
+ if s.Type == sym.SDYNIMPORT || s.Type == sym.SHOSTOBJ || s.Type == sym.SUNDEFEXT {
symtab.AddUint8(0x01) // type N_EXT, external symbol
symtab.AddUint8(0) // no section
symtab.AddUint16(ctxt.Arch, 0) // desc
diff --git a/src/cmd/link/internal/ld/main.go b/src/cmd/link/internal/ld/main.go
index 3d8bc069af..10717f603d 100644
--- a/src/cmd/link/internal/ld/main.go
+++ b/src/cmd/link/internal/ld/main.go
@@ -280,7 +280,6 @@ func Main(arch *sys.Arch, theArch Arch) {
ctxt.hostlink()
ctxt.archive()
if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f cpu time\n", Cputime())
ctxt.Logf("%d symbols\n", len(ctxt.Syms.Allsym))
ctxt.Logf("%d liveness data\n", liveness)
}
diff --git a/src/cmd/link/internal/ld/pcln.go b/src/cmd/link/internal/ld/pcln.go
index 008adfbc97..818da34d6d 100644
--- a/src/cmd/link/internal/ld/pcln.go
+++ b/src/cmd/link/internal/ld/pcln.go
@@ -393,7 +393,7 @@ func (ctxt *Link) pclntab() {
ftab.Size = int64(len(ftab.P))
if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f pclntab=%d bytes, funcdata total %d bytes\n", Cputime(), ftab.Size, funcdataBytes)
+ ctxt.Logf("pclntab=%d bytes, funcdata total %d bytes\n", ftab.Size, funcdataBytes)
}
}
diff --git a/src/cmd/link/internal/ld/pe.go b/src/cmd/link/internal/ld/pe.go
index 12363626ae..4ab346e733 100644
--- a/src/cmd/link/internal/ld/pe.go
+++ b/src/cmd/link/internal/ld/pe.go
@@ -685,7 +685,7 @@ func (f *peFile) writeSymbols(ctxt *Link) {
// Only windows/386 requires underscore prefix on external symbols.
if ctxt.Arch.Family == sys.I386 &&
ctxt.LinkMode == LinkExternal &&
- (s.Type == sym.SHOSTOBJ || s.Attr.CgoExport()) {
+ (s.Type == sym.SHOSTOBJ || s.Type == sym.SUNDEFEXT || s.Attr.CgoExport()) {
s.Name = "_" + s.Name
}
@@ -861,14 +861,18 @@ func (f *peFile) writeOptionalHeader(ctxt *Link) {
switch ctxt.Arch.Family {
case sys.ARM:
- oh64.DllCharacteristics = IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE | IMAGE_DLLCHARACTERISTICS_NX_COMPAT
- oh.DllCharacteristics = IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE | IMAGE_DLLCHARACTERISTICS_NX_COMPAT
+ oh64.DllCharacteristics = IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
+ oh.DllCharacteristics = IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
}
// Mark as having awareness of terminal services, to avoid ancient compatibility hacks.
oh64.DllCharacteristics |= IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE
oh.DllCharacteristics |= IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE
+ // Enable DEP
+ oh64.DllCharacteristics |= IMAGE_DLLCHARACTERISTICS_NX_COMPAT
+ oh.DllCharacteristics |= IMAGE_DLLCHARACTERISTICS_NX_COMPAT
+
// Disable stack growth as we don't want Windows to
// fiddle with the thread stack limits, which we set
// ourselves to circumvent the stack checks in the
diff --git a/src/cmd/link/internal/ld/symtab.go b/src/cmd/link/internal/ld/symtab.go
index f36f6e9740..bba623eb48 100644
--- a/src/cmd/link/internal/ld/symtab.go
+++ b/src/cmd/link/internal/ld/symtab.go
@@ -110,7 +110,7 @@ func putelfsym(ctxt *Link, x *sym.Symbol, s string, t SymbolType, addr int64, go
}
var elfshnum int
- if xo.Type == sym.SDYNIMPORT || xo.Type == sym.SHOSTOBJ {
+ if xo.Type == sym.SDYNIMPORT || xo.Type == sym.SHOSTOBJ || xo.Type == sym.SUNDEFEXT {
elfshnum = SHN_UNDEF
} else {
if xo.Sect == nil {
diff --git a/src/cmd/link/internal/ld/util.go b/src/cmd/link/internal/ld/util.go
index 488386fec2..e42c8ce645 100644
--- a/src/cmd/link/internal/ld/util.go
+++ b/src/cmd/link/internal/ld/util.go
@@ -9,19 +9,8 @@ import (
"encoding/binary"
"fmt"
"os"
- "time"
)
-var startTime time.Time
-
-// TODO(josharian): delete. See issue 19865.
-func Cputime() float64 {
- if startTime.IsZero() {
- startTime = time.Now()
- }
- return time.Since(startTime).Seconds()
-}
-
var atExitFuncs []func()
func AtExit(f func()) {
@@ -84,12 +73,6 @@ func stringtouint32(x []uint32, s string) {
}
}
-var start = time.Now()
-
-func elapsed() float64 {
- return time.Since(start).Seconds()
-}
-
// contains reports whether v is in s.
func contains(s []string, v string) bool {
for _, x := range s {
diff --git a/src/cmd/link/internal/ld/xcoff.go b/src/cmd/link/internal/ld/xcoff.go
index c64066acec..fe35578225 100644
--- a/src/cmd/link/internal/ld/xcoff.go
+++ b/src/cmd/link/internal/ld/xcoff.go
@@ -955,7 +955,7 @@ func putaixsym(ctxt *Link, x *sym.Symbol, str string, t SymbolType, addr int64,
syms = append(syms, a4)
case UndefinedSym:
- if x.Type != sym.SDYNIMPORT && x.Type != sym.SHOSTOBJ {
+ if x.Type != sym.SDYNIMPORT && x.Type != sym.SHOSTOBJ && x.Type != sym.SUNDEFEXT {
return
}
s := &XcoffSymEnt64{
diff --git a/src/cmd/link/internal/mips/asm.go b/src/cmd/link/internal/mips/asm.go
index f05455e520..16c94c147a 100644
--- a/src/cmd/link/internal/mips/asm.go
+++ b/src/cmd/link/internal/mips/asm.go
@@ -163,10 +163,6 @@ func archrelocvariant(ctxt *ld.Link, r *sym.Reloc, s *sym.Symbol, t int64) int64
}
func asmb(ctxt *ld.Link) {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f asmb\n", ld.Cputime())
- }
-
if ctxt.IsELF {
ld.Asmbelfsetup()
}
@@ -180,18 +176,10 @@ func asmb(ctxt *ld.Link) {
}
if ld.Segrodata.Filelen > 0 {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f rodatblk\n", ld.Cputime())
- }
-
ctxt.Out.SeekSet(int64(ld.Segrodata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen))
}
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f datblk\n", ld.Cputime())
- }
-
ctxt.Out.SeekSet(int64(ld.Segdata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen))
@@ -209,33 +197,19 @@ func asmb2(ctxt *ld.Link) {
if !ctxt.IsELF {
ld.Errorf(nil, "unsupported executable format")
}
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f sym\n", ld.Cputime())
- }
symo = uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen)
symo = uint32(ld.Rnd(int64(symo), int64(*ld.FlagRound)))
ctxt.Out.SeekSet(int64(symo))
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f elfsym\n", ld.Cputime())
- }
ld.Asmelfsym(ctxt)
ctxt.Out.Flush()
ctxt.Out.Write(ld.Elfstrdat)
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f dwarf\n", ld.Cputime())
- }
-
if ctxt.LinkMode == ld.LinkExternal {
ld.Elfemitreloc(ctxt)
}
}
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f header\n", ld.Cputime())
- }
-
ctxt.Out.SeekSet(0)
switch ctxt.HeadType {
default:
diff --git a/src/cmd/link/internal/mips64/asm.go b/src/cmd/link/internal/mips64/asm.go
index 9697ea511b..5c6fef9c5b 100644
--- a/src/cmd/link/internal/mips64/asm.go
+++ b/src/cmd/link/internal/mips64/asm.go
@@ -169,10 +169,6 @@ func archrelocvariant(ctxt *ld.Link, r *sym.Reloc, s *sym.Symbol, t int64) int64
}
func asmb(ctxt *ld.Link) {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f asmb\n", ld.Cputime())
- }
-
if ctxt.IsELF {
ld.Asmbelfsetup()
}
@@ -186,24 +182,14 @@ func asmb(ctxt *ld.Link) {
}
if ld.Segrodata.Filelen > 0 {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f rodatblk\n", ld.Cputime())
- }
ctxt.Out.SeekSet(int64(ld.Segrodata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen))
}
if ld.Segrelrodata.Filelen > 0 {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f rodatblk\n", ld.Cputime())
- }
ctxt.Out.SeekSet(int64(ld.Segrelrodata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segrelrodata.Vaddr), int64(ld.Segrelrodata.Filelen))
}
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f datblk\n", ld.Cputime())
- }
-
ctxt.Out.SeekSet(int64(ld.Segdata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen))
@@ -219,9 +205,6 @@ func asmb2(ctxt *ld.Link) {
symo := uint32(0)
if !*ld.FlagS {
// TODO: rationalize
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f sym\n", ld.Cputime())
- }
switch ctxt.HeadType {
default:
if ctxt.IsELF {
@@ -237,9 +220,6 @@ func asmb2(ctxt *ld.Link) {
switch ctxt.HeadType {
default:
if ctxt.IsELF {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f elfsym\n", ld.Cputime())
- }
ld.Asmelfsym(ctxt)
ctxt.Out.Flush()
ctxt.Out.Write(ld.Elfstrdat)
@@ -262,9 +242,6 @@ func asmb2(ctxt *ld.Link) {
}
}
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f header\n", ld.Cputime())
- }
ctxt.Out.SeekSet(0)
switch ctxt.HeadType {
default:
diff --git a/src/cmd/link/internal/ppc64/asm.go b/src/cmd/link/internal/ppc64/asm.go
index cf6a2846de..9fbcff551a 100644
--- a/src/cmd/link/internal/ppc64/asm.go
+++ b/src/cmd/link/internal/ppc64/asm.go
@@ -801,7 +801,7 @@ func archreloc(ctxt *ld.Link, r *sym.Reloc, s *sym.Symbol, val int64) (int64, bo
rs = rs.Outer
}
- if rs.Type != sym.SHOSTOBJ && rs.Type != sym.SDYNIMPORT && rs.Sect == nil {
+ if rs.Type != sym.SHOSTOBJ && rs.Type != sym.SDYNIMPORT && rs.Type != sym.SUNDEFEXT && rs.Sect == nil {
ld.Errorf(s, "missing section for %s", rs.Name)
}
r.Xsym = rs
@@ -1062,10 +1062,6 @@ func ensureglinkresolver(ctxt *ld.Link) *sym.Symbol {
}
func asmb(ctxt *ld.Link) {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f asmb\n", ld.Cputime())
- }
-
if ctxt.IsELF {
ld.Asmbelfsetup()
}
@@ -1081,24 +1077,14 @@ func asmb(ctxt *ld.Link) {
}
if ld.Segrodata.Filelen > 0 {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f rodatblk\n", ld.Cputime())
- }
ctxt.Out.SeekSet(int64(ld.Segrodata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen))
}
if ld.Segrelrodata.Filelen > 0 {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f relrodatblk\n", ld.Cputime())
- }
ctxt.Out.SeekSet(int64(ld.Segrelrodata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segrelrodata.Vaddr), int64(ld.Segrelrodata.Filelen))
}
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f datblk\n", ld.Cputime())
- }
-
ctxt.Out.SeekSet(int64(ld.Segdata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen))
@@ -1114,9 +1100,6 @@ func asmb2(ctxt *ld.Link) {
symo := uint32(0)
if !*ld.FlagS {
// TODO: rationalize
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f sym\n", ld.Cputime())
- }
switch ctxt.HeadType {
default:
if ctxt.IsELF {
@@ -1135,9 +1118,6 @@ func asmb2(ctxt *ld.Link) {
switch ctxt.HeadType {
default:
if ctxt.IsELF {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f elfsym\n", ld.Cputime())
- }
ld.Asmelfsym(ctxt)
ctxt.Out.Flush()
ctxt.Out.Write(ld.Elfstrdat)
@@ -1164,9 +1144,6 @@ func asmb2(ctxt *ld.Link) {
}
}
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f header\n", ld.Cputime())
- }
ctxt.Out.SeekSet(0)
switch ctxt.HeadType {
default:
diff --git a/src/cmd/link/internal/s390x/asm.go b/src/cmd/link/internal/s390x/asm.go
index ebaf760edf..94a5a2f86c 100644
--- a/src/cmd/link/internal/s390x/asm.go
+++ b/src/cmd/link/internal/s390x/asm.go
@@ -503,10 +503,6 @@ func addgotsym(ctxt *ld.Link, s *sym.Symbol) {
}
func asmb(ctxt *ld.Link) {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f asmb\n", ld.Cputime())
- }
-
if ctxt.IsELF {
ld.Asmbelfsetup()
}
@@ -520,24 +516,14 @@ func asmb(ctxt *ld.Link) {
}
if ld.Segrodata.Filelen > 0 {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f rodatblk\n", ld.Cputime())
- }
ctxt.Out.SeekSet(int64(ld.Segrodata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen))
}
if ld.Segrelrodata.Filelen > 0 {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f rodatblk\n", ld.Cputime())
- }
ctxt.Out.SeekSet(int64(ld.Segrelrodata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segrelrodata.Vaddr), int64(ld.Segrelrodata.Filelen))
}
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f datblk\n", ld.Cputime())
- }
-
ctxt.Out.SeekSet(int64(ld.Segdata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen))
@@ -555,32 +541,19 @@ func asmb2(ctxt *ld.Link) {
if !ctxt.IsELF {
ld.Errorf(nil, "unsupported executable format")
}
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f sym\n", ld.Cputime())
- }
symo = uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen)
symo = uint32(ld.Rnd(int64(symo), int64(*ld.FlagRound)))
ctxt.Out.SeekSet(int64(symo))
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f elfsym\n", ld.Cputime())
- }
ld.Asmelfsym(ctxt)
ctxt.Out.Flush()
ctxt.Out.Write(ld.Elfstrdat)
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f dwarf\n", ld.Cputime())
- }
-
if ctxt.LinkMode == ld.LinkExternal {
ld.Elfemitreloc(ctxt)
}
}
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f header\n", ld.Cputime())
- }
ctxt.Out.SeekSet(0)
switch ctxt.HeadType {
default:
diff --git a/src/cmd/link/internal/sym/symkind.go b/src/cmd/link/internal/sym/symkind.go
index a81070f253..97d8963978 100644
--- a/src/cmd/link/internal/sym/symkind.go
+++ b/src/cmd/link/internal/sym/symkind.go
@@ -104,6 +104,7 @@ const (
SCONST
SDYNIMPORT
SHOSTOBJ
+ SUNDEFEXT // Undefined symbol for resolution by external linker
// Sections for debugging information
SDWARFSECT
diff --git a/src/cmd/link/internal/sym/symkind_string.go b/src/cmd/link/internal/sym/symkind_string.go
index 2732ec7654..e48d90c511 100644
--- a/src/cmd/link/internal/sym/symkind_string.go
+++ b/src/cmd/link/internal/sym/symkind_string.go
@@ -1,4 +1,4 @@
-// Code generated by "stringer -type=SymKind"; DO NOT EDIT.
+// Code generated by "stringer -type=SymKind symkind.go"; DO NOT EDIT.
package sym
@@ -54,17 +54,18 @@ func _() {
_ = x[SCONST-43]
_ = x[SDYNIMPORT-44]
_ = x[SHOSTOBJ-45]
- _ = x[SDWARFSECT-46]
- _ = x[SDWARFINFO-47]
- _ = x[SDWARFRANGE-48]
- _ = x[SDWARFLOC-49]
- _ = x[SDWARFLINES-50]
- _ = x[SABIALIAS-51]
+ _ = x[SUNDEFEXT-46]
+ _ = x[SDWARFSECT-47]
+ _ = x[SDWARFINFO-48]
+ _ = x[SDWARFRANGE-49]
+ _ = x[SDWARFLOC-50]
+ _ = x[SDWARFLINES-51]
+ _ = x[SABIALIAS-52]
}
-const _SymKind_name = "SxxxSTEXTSELFRXSECTSTYPESSTRINGSGOSTRINGSGOFUNCSGCBITSSRODATASFUNCTABSELFROSECTSMACHOPLTSTYPERELROSSTRINGRELROSGOSTRINGRELROSGOFUNCRELROSGCBITSRELROSRODATARELROSFUNCTABRELROSTYPELINKSITABLINKSSYMTABSPCLNTABSFirstWritableSBUILDINFOSELFSECTSMACHOSMACHOGOTSWINDOWSSELFGOTSNOPTRDATASINITARRSDATASXCOFFTOCSBSSSNOPTRBSSSTLSBSSSXREFSMACHOSYMSTRSMACHOSYMTABSMACHOINDIRECTPLTSMACHOINDIRECTGOTSFILEPATHSCONSTSDYNIMPORTSHOSTOBJSDWARFSECTSDWARFINFOSDWARFRANGESDWARFLOCSDWARFLINESSABIALIAS"
+const _SymKind_name = "SxxxSTEXTSELFRXSECTSTYPESSTRINGSGOSTRINGSGOFUNCSGCBITSSRODATASFUNCTABSELFROSECTSMACHOPLTSTYPERELROSSTRINGRELROSGOSTRINGRELROSGOFUNCRELROSGCBITSRELROSRODATARELROSFUNCTABRELROSTYPELINKSITABLINKSSYMTABSPCLNTABSFirstWritableSBUILDINFOSELFSECTSMACHOSMACHOGOTSWINDOWSSELFGOTSNOPTRDATASINITARRSDATASXCOFFTOCSBSSSNOPTRBSSSTLSBSSSXREFSMACHOSYMSTRSMACHOSYMTABSMACHOINDIRECTPLTSMACHOINDIRECTGOTSFILEPATHSCONSTSDYNIMPORTSHOSTOBJSUNDEFEXTSDWARFSECTSDWARFINFOSDWARFRANGESDWARFLOCSDWARFLINESSABIALIAS"
-var _SymKind_index = [...]uint16{0, 4, 9, 19, 24, 31, 40, 47, 54, 61, 69, 79, 88, 98, 110, 124, 136, 148, 160, 173, 182, 191, 198, 206, 220, 230, 238, 244, 253, 261, 268, 278, 286, 291, 300, 304, 313, 320, 325, 337, 349, 366, 383, 392, 398, 408, 416, 426, 436, 447, 456, 467, 476}
+var _SymKind_index = [...]uint16{0, 4, 9, 19, 24, 31, 40, 47, 54, 61, 69, 79, 88, 98, 110, 124, 136, 148, 160, 173, 182, 191, 198, 206, 220, 230, 238, 244, 253, 261, 268, 278, 286, 291, 300, 304, 313, 320, 325, 337, 349, 366, 383, 392, 398, 408, 416, 425, 435, 445, 456, 465, 476, 485}
func (i SymKind) String() string {
if i >= SymKind(len(_SymKind_index)-1) {
diff --git a/src/cmd/link/internal/wasm/asm.go b/src/cmd/link/internal/wasm/asm.go
index aaaa93f355..d70b0569a6 100644
--- a/src/cmd/link/internal/wasm/asm.go
+++ b/src/cmd/link/internal/wasm/asm.go
@@ -96,10 +96,6 @@ func asmb(ctxt *ld.Link) {} // dummy
// asmb writes the final WebAssembly module binary.
// Spec: https://webassembly.github.io/spec/core/binary/modules.html
func asmb2(ctxt *ld.Link) {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f asmb\n", ld.Cputime())
- }
-
types := []*wasmFuncType{
// For normal Go functions, the single parameter is PC_B,
// the return value is
diff --git a/src/cmd/link/internal/x86/asm.go b/src/cmd/link/internal/x86/asm.go
index aa4f99e9da..3fe36db64d 100644
--- a/src/cmd/link/internal/x86/asm.go
+++ b/src/cmd/link/internal/x86/asm.go
@@ -620,10 +620,6 @@ func addgotsym(ctxt *ld.Link, s *sym.Symbol) {
}
func asmb(ctxt *ld.Link) {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f asmb\n", ld.Cputime())
- }
-
if ctxt.IsELF {
ld.Asmbelfsetup()
}
@@ -638,25 +634,14 @@ func asmb(ctxt *ld.Link) {
}
if ld.Segrodata.Filelen > 0 {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f rodatblk\n", ld.Cputime())
- }
-
ctxt.Out.SeekSet(int64(ld.Segrodata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen))
}
if ld.Segrelrodata.Filelen > 0 {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f relrodatblk\n", ld.Cputime())
- }
ctxt.Out.SeekSet(int64(ld.Segrelrodata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segrelrodata.Vaddr), int64(ld.Segrelrodata.Filelen))
}
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f datblk\n", ld.Cputime())
- }
-
ctxt.Out.SeekSet(int64(ld.Segdata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen))
@@ -676,9 +661,6 @@ func asmb2(ctxt *ld.Link) {
symo := uint32(0)
if !*ld.FlagS {
// TODO: rationalize
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f sym\n", ld.Cputime())
- }
switch ctxt.HeadType {
default:
if ctxt.IsELF {
@@ -701,9 +683,6 @@ func asmb2(ctxt *ld.Link) {
switch ctxt.HeadType {
default:
if ctxt.IsELF {
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f elfsym\n", ld.Cputime())
- }
ld.Asmelfsym(ctxt)
ctxt.Out.Flush()
ctxt.Out.Write(ld.Elfstrdat)
@@ -725,9 +704,7 @@ func asmb2(ctxt *ld.Link) {
}
case objabi.Hwindows:
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f dwarf\n", ld.Cputime())
- }
+ // Do nothing
case objabi.Hdarwin:
if ctxt.LinkMode == ld.LinkExternal {
@@ -736,9 +713,6 @@ func asmb2(ctxt *ld.Link) {
}
}
- if ctxt.Debugvlog != 0 {
- ctxt.Logf("%5.2f headr\n", ld.Cputime())
- }
ctxt.Out.SeekSet(0)
switch ctxt.HeadType {
default: