diff options
| author | Than McIntosh <thanm@google.com> | 2019-11-01 10:44:44 -0400 |
|---|---|---|
| committer | Than McIntosh <thanm@google.com> | 2019-11-01 10:45:24 -0400 |
| commit | c0555a2a7a0ca83fdbb55219299fcfe1ff33e4df (patch) | |
| tree | 25c35dc6bf5b8134906338df0f612fbe75089ca7 /src/cmd/link/internal | |
| parent | 219922e95b8e49cfb94da9de0c48edb22a2e7054 (diff) | |
| parent | 8405cd3005a5274e80e41676146629c4086b6380 (diff) | |
| download | go-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')
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: |
