Commit 64f5023e authored by Michael Matloob's avatar Michael Matloob

cmd/link: remove global Bso variable

Bso is already a member on ld.Link. Use that instead of
the global.

Updates #16818

Change-Id: Icfc0f6cb1ff551e8129253fb6b5e0d6a94479f51
Reviewed-on: https://go-review.googlesource.com/27470
Run-TryBot: Michael Matloob <matloob@golang.org>
Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
parent 1756b665
...@@ -600,14 +600,14 @@ func addgotsym(ctxt *ld.Link, s *ld.Symbol) { ...@@ -600,14 +600,14 @@ func addgotsym(ctxt *ld.Link, s *ld.Symbol) {
func asmb(ctxt *ld.Link) { func asmb(ctxt *ld.Link) {
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f asmb\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f asmb\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f codeblk\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f codeblk\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
if ld.Iself { if ld.Iself {
ld.Asmbelfsetup(ctxt) ld.Asmbelfsetup(ctxt)
...@@ -624,18 +624,18 @@ func asmb(ctxt *ld.Link) { ...@@ -624,18 +624,18 @@ func asmb(ctxt *ld.Link) {
if ld.Segrodata.Filelen > 0 { if ld.Segrodata.Filelen > 0 {
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f rodatblk\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f rodatblk\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
ld.Cseek(int64(ld.Segrodata.Fileoff)) ld.Cseek(int64(ld.Segrodata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen)) ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen))
} }
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f datblk\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f datblk\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
ld.Cseek(int64(ld.Segdata.Fileoff)) ld.Cseek(int64(ld.Segdata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen)) ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen))
...@@ -678,9 +678,9 @@ func asmb(ctxt *ld.Link) { ...@@ -678,9 +678,9 @@ func asmb(ctxt *ld.Link) {
symo := int64(0) symo := int64(0)
if ld.Debug['s'] == 0 { if ld.Debug['s'] == 0 {
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f sym\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f sym\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
switch ld.HEADTYPE { switch ld.HEADTYPE {
default: default:
case obj.Hplan9: case obj.Hplan9:
...@@ -715,7 +715,7 @@ func asmb(ctxt *ld.Link) { ...@@ -715,7 +715,7 @@ func asmb(ctxt *ld.Link) {
ld.Cwrite(ld.Elfstrdat) ld.Cwrite(ld.Elfstrdat)
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f dwarf\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f dwarf\n", obj.Cputime())
} }
if ld.Linkmode == ld.LinkExternal { if ld.Linkmode == ld.LinkExternal {
...@@ -739,7 +739,7 @@ func asmb(ctxt *ld.Link) { ...@@ -739,7 +739,7 @@ func asmb(ctxt *ld.Link) {
case obj.Hwindows: case obj.Hwindows:
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f dwarf\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f dwarf\n", obj.Cputime())
} }
case obj.Hdarwin: case obj.Hdarwin:
...@@ -750,9 +750,9 @@ func asmb(ctxt *ld.Link) { ...@@ -750,9 +750,9 @@ func asmb(ctxt *ld.Link) {
} }
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f headr\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f headr\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
ld.Cseek(0) ld.Cseek(0)
switch ld.HEADTYPE { switch ld.HEADTYPE {
default: default:
......
...@@ -583,9 +583,9 @@ func addgotsym(ctxt *ld.Link, s *ld.Symbol) { ...@@ -583,9 +583,9 @@ func addgotsym(ctxt *ld.Link, s *ld.Symbol) {
func asmb(ctxt *ld.Link) { func asmb(ctxt *ld.Link) {
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f asmb\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f asmb\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
if ld.Iself { if ld.Iself {
ld.Asmbelfsetup(ctxt) ld.Asmbelfsetup(ctxt)
...@@ -601,18 +601,18 @@ func asmb(ctxt *ld.Link) { ...@@ -601,18 +601,18 @@ func asmb(ctxt *ld.Link) {
if ld.Segrodata.Filelen > 0 { if ld.Segrodata.Filelen > 0 {
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f rodatblk\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f rodatblk\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
ld.Cseek(int64(ld.Segrodata.Fileoff)) ld.Cseek(int64(ld.Segrodata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen)) ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen))
} }
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f datblk\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f datblk\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
ld.Cseek(int64(ld.Segdata.Fileoff)) ld.Cseek(int64(ld.Segdata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen)) ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen))
...@@ -633,9 +633,9 @@ func asmb(ctxt *ld.Link) { ...@@ -633,9 +633,9 @@ func asmb(ctxt *ld.Link) {
if ld.Debug['s'] == 0 { if ld.Debug['s'] == 0 {
// TODO: rationalize // TODO: rationalize
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f sym\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f sym\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
switch ld.HEADTYPE { switch ld.HEADTYPE {
default: default:
if ld.Iself { if ld.Iself {
...@@ -655,7 +655,7 @@ func asmb(ctxt *ld.Link) { ...@@ -655,7 +655,7 @@ func asmb(ctxt *ld.Link) {
default: default:
if ld.Iself { if ld.Iself {
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f elfsym\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f elfsym\n", obj.Cputime())
} }
ld.Asmelfsym(ctxt) ld.Asmelfsym(ctxt)
ld.Cflush() ld.Cflush()
...@@ -689,9 +689,9 @@ func asmb(ctxt *ld.Link) { ...@@ -689,9 +689,9 @@ func asmb(ctxt *ld.Link) {
ctxt.Cursym = nil ctxt.Cursym = nil
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f header\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f header\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
ld.Cseek(0) ld.Cseek(0)
switch ld.HEADTYPE { switch ld.HEADTYPE {
default: default:
......
...@@ -392,9 +392,9 @@ func archrelocvariant(ctxt *ld.Link, r *ld.Reloc, s *ld.Symbol, t int64) int64 { ...@@ -392,9 +392,9 @@ func archrelocvariant(ctxt *ld.Link, r *ld.Reloc, s *ld.Symbol, t int64) int64 {
func asmb(ctxt *ld.Link) { func asmb(ctxt *ld.Link) {
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f asmb\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f asmb\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
if ld.Iself { if ld.Iself {
ld.Asmbelfsetup(ctxt) ld.Asmbelfsetup(ctxt)
...@@ -410,18 +410,18 @@ func asmb(ctxt *ld.Link) { ...@@ -410,18 +410,18 @@ func asmb(ctxt *ld.Link) {
if ld.Segrodata.Filelen > 0 { if ld.Segrodata.Filelen > 0 {
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f rodatblk\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f rodatblk\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
ld.Cseek(int64(ld.Segrodata.Fileoff)) ld.Cseek(int64(ld.Segrodata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen)) ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen))
} }
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f datblk\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f datblk\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
ld.Cseek(int64(ld.Segdata.Fileoff)) ld.Cseek(int64(ld.Segdata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen)) ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen))
...@@ -442,9 +442,9 @@ func asmb(ctxt *ld.Link) { ...@@ -442,9 +442,9 @@ func asmb(ctxt *ld.Link) {
if ld.Debug['s'] == 0 { if ld.Debug['s'] == 0 {
// TODO: rationalize // TODO: rationalize
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f sym\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f sym\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
switch ld.HEADTYPE { switch ld.HEADTYPE {
default: default:
if ld.Iself { if ld.Iself {
...@@ -464,7 +464,7 @@ func asmb(ctxt *ld.Link) { ...@@ -464,7 +464,7 @@ func asmb(ctxt *ld.Link) {
default: default:
if ld.Iself { if ld.Iself {
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f elfsym\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f elfsym\n", obj.Cputime())
} }
ld.Asmelfsym(ctxt) ld.Asmelfsym(ctxt)
ld.Cflush() ld.Cflush()
...@@ -498,9 +498,9 @@ func asmb(ctxt *ld.Link) { ...@@ -498,9 +498,9 @@ func asmb(ctxt *ld.Link) {
ctxt.Cursym = nil ctxt.Cursym = nil
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f header\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f header\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
ld.Cseek(0) ld.Cseek(0)
switch ld.HEADTYPE { switch ld.HEADTYPE {
default: default:
......
...@@ -69,7 +69,7 @@ func hostArchive(ctxt *Link, name string) { ...@@ -69,7 +69,7 @@ func hostArchive(ctxt *Link, name string) {
if os.IsNotExist(err) { if os.IsNotExist(err) {
// It's OK if we don't have a libgcc file at all. // It's OK if we don't have a libgcc file at all.
if Debug['v'] != 0 { if Debug['v'] != 0 {
fmt.Fprintf(Bso, "skipping libgcc file: %v\n", err) fmt.Fprintf(ctxt.Bso, "skipping libgcc file: %v\n", err)
} }
return return
} }
......
...@@ -653,9 +653,9 @@ func relocsym(ctxt *Link, s *Symbol) { ...@@ -653,9 +653,9 @@ func relocsym(ctxt *Link, s *Symbol) {
func (ctxt *Link) reloc() { func (ctxt *Link) reloc() {
if Debug['v'] != 0 { if Debug['v'] != 0 {
fmt.Fprintf(Bso, "%5.2f reloc\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f reloc\n", obj.Cputime())
} }
Bso.Flush() ctxt.Bso.Flush()
for _, s := range ctxt.Textp { for _, s := range ctxt.Textp {
relocsym(ctxt, s) relocsym(ctxt, s)
...@@ -729,9 +729,9 @@ func dynreloc(ctxt *Link, data *[obj.SXREF][]*Symbol) { ...@@ -729,9 +729,9 @@ func dynreloc(ctxt *Link, data *[obj.SXREF][]*Symbol) {
return return
} }
if Debug['v'] != 0 { if Debug['v'] != 0 {
fmt.Fprintf(Bso, "%5.2f reloc\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f reloc\n", obj.Cputime())
} }
Bso.Flush() ctxt.Bso.Flush()
for _, s := range ctxt.Textp { for _, s := range ctxt.Textp {
dynrelocsym(ctxt, s) dynrelocsym(ctxt, s)
...@@ -800,7 +800,7 @@ func Codeblk(ctxt *Link, addr int64, size int64) { ...@@ -800,7 +800,7 @@ func Codeblk(ctxt *Link, addr int64, size int64) {
} }
func CodeblkPad(ctxt *Link, addr int64, size int64, pad []byte) { func CodeblkPad(ctxt *Link, addr int64, size int64, pad []byte) {
if Debug['a'] != 0 { if Debug['a'] != 0 {
fmt.Fprintf(Bso, "codeblk [%#x,%#x) at offset %#x\n", addr, addr+size, Cpos()) fmt.Fprintf(ctxt.Bso, "codeblk [%#x,%#x) at offset %#x\n", addr, addr+size, Cpos())
} }
blkSlice(ctxt, ctxt.Textp, addr, size, pad) blkSlice(ctxt, ctxt.Textp, addr, size, pad)
...@@ -832,36 +832,36 @@ func CodeblkPad(ctxt *Link, addr int64, size int64, pad []byte) { ...@@ -832,36 +832,36 @@ func CodeblkPad(ctxt *Link, addr int64, size int64, pad []byte) {
} }
if addr < sym.Value { if addr < sym.Value {
fmt.Fprintf(Bso, "%-20s %.8x|", "_", uint64(addr)) fmt.Fprintf(ctxt.Bso, "%-20s %.8x|", "_", uint64(addr))
for ; addr < sym.Value; addr++ { for ; addr < sym.Value; addr++ {
fmt.Fprintf(Bso, " %.2x", 0) fmt.Fprintf(ctxt.Bso, " %.2x", 0)
} }
fmt.Fprintf(Bso, "\n") fmt.Fprintf(ctxt.Bso, "\n")
} }
fmt.Fprintf(Bso, "%.6x\t%-20s\n", uint64(addr), sym.Name) fmt.Fprintf(ctxt.Bso, "%.6x\t%-20s\n", uint64(addr), sym.Name)
q = sym.P q = sym.P
for len(q) >= 16 { for len(q) >= 16 {
fmt.Fprintf(Bso, "%.6x\t% x\n", uint64(addr), q[:16]) fmt.Fprintf(ctxt.Bso, "%.6x\t% x\n", uint64(addr), q[:16])
addr += 16 addr += 16
q = q[16:] q = q[16:]
} }
if len(q) > 0 { if len(q) > 0 {
fmt.Fprintf(Bso, "%.6x\t% x\n", uint64(addr), q) fmt.Fprintf(ctxt.Bso, "%.6x\t% x\n", uint64(addr), q)
addr += int64(len(q)) addr += int64(len(q))
} }
} }
if addr < eaddr { if addr < eaddr {
fmt.Fprintf(Bso, "%-20s %.8x|", "_", uint64(addr)) fmt.Fprintf(ctxt.Bso, "%-20s %.8x|", "_", uint64(addr))
for ; addr < eaddr; addr++ { for ; addr < eaddr; addr++ {
fmt.Fprintf(Bso, " %.2x", 0) fmt.Fprintf(ctxt.Bso, " %.2x", 0)
} }
} }
Bso.Flush() ctxt.Bso.Flush()
} }
// blkSlice is a variant of blk that processes slices. // blkSlice is a variant of blk that processes slices.
...@@ -915,7 +915,7 @@ func blkSlice(ctxt *Link, syms []*Symbol, addr, size int64, pad []byte) { ...@@ -915,7 +915,7 @@ func blkSlice(ctxt *Link, syms []*Symbol, addr, size int64, pad []byte) {
func Datblk(ctxt *Link, addr int64, size int64) { func Datblk(ctxt *Link, addr int64, size int64) {
if Debug['a'] != 0 { if Debug['a'] != 0 {
fmt.Fprintf(Bso, "datblk [%#x,%#x) at offset %#x\n", addr, addr+size, Cpos()) fmt.Fprintf(ctxt.Bso, "datblk [%#x,%#x) at offset %#x\n", addr, addr+size, Cpos())
} }
blkSlice(ctxt, datap, addr, size, zeros[:]) blkSlice(ctxt, datap, addr, size, zeros[:])
...@@ -939,23 +939,23 @@ func Datblk(ctxt *Link, addr int64, size int64) { ...@@ -939,23 +939,23 @@ func Datblk(ctxt *Link, addr int64, size int64) {
break break
} }
if addr < sym.Value { if addr < sym.Value {
fmt.Fprintf(Bso, "\t%.8x| 00 ...\n", uint64(addr)) fmt.Fprintf(ctxt.Bso, "\t%.8x| 00 ...\n", uint64(addr))
addr = sym.Value addr = sym.Value
} }
fmt.Fprintf(Bso, "%s\n\t%.8x|", sym.Name, uint64(addr)) fmt.Fprintf(ctxt.Bso, "%s\n\t%.8x|", sym.Name, uint64(addr))
for i, b := range sym.P { for i, b := range sym.P {
if i > 0 && i%16 == 0 { if i > 0 && i%16 == 0 {
fmt.Fprintf(Bso, "\n\t%.8x|", uint64(addr)+uint64(i)) fmt.Fprintf(ctxt.Bso, "\n\t%.8x|", uint64(addr)+uint64(i))
} }
fmt.Fprintf(Bso, " %.2x", b) fmt.Fprintf(ctxt.Bso, " %.2x", b)
} }
addr += int64(len(sym.P)) addr += int64(len(sym.P))
for ; addr < sym.Value+sym.Size; addr++ { for ; addr < sym.Value+sym.Size; addr++ {
fmt.Fprintf(Bso, " %.2x", 0) fmt.Fprintf(ctxt.Bso, " %.2x", 0)
} }
fmt.Fprintf(Bso, "\n") fmt.Fprintf(ctxt.Bso, "\n")
if Linkmode != LinkExternal { if Linkmode != LinkExternal {
continue continue
...@@ -974,19 +974,19 @@ func Datblk(ctxt *Link, addr int64, size int64) { ...@@ -974,19 +974,19 @@ func Datblk(ctxt *Link, addr int64, size int64) {
case obj.R_CALL: case obj.R_CALL:
typ = "call" typ = "call"
} }
fmt.Fprintf(Bso, "\treloc %.8x/%d %s %s+%#x [%#x]\n", uint(sym.Value+int64(r.Off)), r.Siz, typ, rsname, r.Add, r.Sym.Value+r.Add) fmt.Fprintf(ctxt.Bso, "\treloc %.8x/%d %s %s+%#x [%#x]\n", uint(sym.Value+int64(r.Off)), r.Siz, typ, rsname, r.Add, r.Sym.Value+r.Add)
} }
} }
if addr < eaddr { if addr < eaddr {
fmt.Fprintf(Bso, "\t%.8x| 00 ...\n", uint(addr)) fmt.Fprintf(ctxt.Bso, "\t%.8x| 00 ...\n", uint(addr))
} }
fmt.Fprintf(Bso, "\t%.8x|\n", uint(eaddr)) fmt.Fprintf(ctxt.Bso, "\t%.8x|\n", uint(eaddr))
} }
func Dwarfblk(ctxt *Link, addr int64, size int64) { func Dwarfblk(ctxt *Link, addr int64, size int64) {
if Debug['a'] != 0 { if Debug['a'] != 0 {
fmt.Fprintf(Bso, "dwarfblk [%#x,%#x) at offset %#x\n", addr, addr+size, Cpos()) fmt.Fprintf(ctxt.Bso, "dwarfblk [%#x,%#x) at offset %#x\n", addr, addr+size, Cpos())
} }
blk(ctxt, dwarfp, addr, size) blk(ctxt, dwarfp, addr, size)
...@@ -1255,9 +1255,9 @@ var datap []*Symbol ...@@ -1255,9 +1255,9 @@ var datap []*Symbol
func (ctxt *Link) dodata() { func (ctxt *Link) dodata() {
if Debug['v'] != 0 { if Debug['v'] != 0 {
fmt.Fprintf(Bso, "%5.2f dodata\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f dodata\n", obj.Cputime())
} }
Bso.Flush() ctxt.Bso.Flush()
// Collect data symbols by type into data. // Collect data symbols by type into data.
var data [obj.SXREF][]*Symbol var data [obj.SXREF][]*Symbol
......
...@@ -1415,7 +1415,7 @@ func dwarfgeneratedebugsyms(ctxt *Link) { ...@@ -1415,7 +1415,7 @@ func dwarfgeneratedebugsyms(ctxt *Link) {
} }
if Debug['v'] != 0 { if Debug['v'] != 0 {
fmt.Fprintf(Bso, "%5.2f dwarf\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f dwarf\n", obj.Cputime())
} }
// Forctxt.Diagnostic messages. // Forctxt.Diagnostic messages.
......
...@@ -399,13 +399,13 @@ func (a *elfAttributeList) done() bool { ...@@ -399,13 +399,13 @@ func (a *elfAttributeList) done() bool {
// find the one we are looking for. This format is slightly documented in "ELF // find the one we are looking for. This format is slightly documented in "ELF
// for the ARM Architecture" but mostly this is derived from reading the source // for the ARM Architecture" but mostly this is derived from reading the source
// to gold and readelf. // to gold and readelf.
func parseArmAttributes(e binary.ByteOrder, data []byte) { func parseArmAttributes(ctxt *Link, e binary.ByteOrder, data []byte) {
// We assume the soft-float ABI unless we see a tag indicating otherwise. // We assume the soft-float ABI unless we see a tag indicating otherwise.
if ehdr.flags == 0x5000002 { if ehdr.flags == 0x5000002 {
ehdr.flags = 0x5000202 ehdr.flags = 0x5000202
} }
if data[0] != 'A' { if data[0] != 'A' {
fmt.Fprintf(Bso, ".ARM.attributes has unexpected format %c\n", data[0]) fmt.Fprintf(ctxt.Bso, ".ARM.attributes has unexpected format %c\n", data[0])
return return
} }
data = data[1:] data = data[1:]
...@@ -416,7 +416,7 @@ func parseArmAttributes(e binary.ByteOrder, data []byte) { ...@@ -416,7 +416,7 @@ func parseArmAttributes(e binary.ByteOrder, data []byte) {
nulIndex := bytes.IndexByte(sectiondata, 0) nulIndex := bytes.IndexByte(sectiondata, 0)
if nulIndex < 0 { if nulIndex < 0 {
fmt.Fprintf(Bso, "corrupt .ARM.attributes (section name not NUL-terminated)\n") fmt.Fprintf(ctxt.Bso, "corrupt .ARM.attributes (section name not NUL-terminated)\n")
return return
} }
name := string(sectiondata[:nulIndex]) name := string(sectiondata[:nulIndex])
...@@ -440,7 +440,7 @@ func parseArmAttributes(e binary.ByteOrder, data []byte) { ...@@ -440,7 +440,7 @@ func parseArmAttributes(e binary.ByteOrder, data []byte) {
} }
} }
if attrList.err != nil { if attrList.err != nil {
fmt.Fprintf(Bso, "could not parse .ARM.attributes\n") fmt.Fprintf(ctxt.Bso, "could not parse .ARM.attributes\n")
} }
} }
} }
...@@ -449,7 +449,7 @@ func parseArmAttributes(e binary.ByteOrder, data []byte) { ...@@ -449,7 +449,7 @@ func parseArmAttributes(e binary.ByteOrder, data []byte) {
func ldelf(ctxt *Link, f *bio.Reader, pkg string, length int64, pn string) { func ldelf(ctxt *Link, f *bio.Reader, pkg string, length int64, pn string) {
if Debug['v'] != 0 { if Debug['v'] != 0 {
fmt.Fprintf(Bso, "%5.2f ldelf %s\n", obj.Cputime(), pn) fmt.Fprintf(ctxt.Bso, "%5.2f ldelf %s\n", obj.Cputime(), pn)
} }
ctxt.IncVersion() ctxt.IncVersion()
...@@ -697,7 +697,7 @@ func ldelf(ctxt *Link, f *bio.Reader, pkg string, length int64, pn string) { ...@@ -697,7 +697,7 @@ func ldelf(ctxt *Link, f *bio.Reader, pkg string, length int64, pn string) {
if err = elfmap(elfobj, sect); err != nil { if err = elfmap(elfobj, sect); err != nil {
goto bad goto bad
} }
parseArmAttributes(e, sect.base[:sect.size]) parseArmAttributes(ctxt, e, sect.base[:sect.size])
} }
if (sect.type_ != ElfSectProgbits && sect.type_ != ElfSectNobits) || sect.flags&ElfSectFlagAlloc == 0 { if (sect.type_ != ElfSectProgbits && sect.type_ != ElfSectNobits) || sect.flags&ElfSectFlagAlloc == 0 {
continue continue
......
...@@ -132,7 +132,7 @@ type PeObj struct { ...@@ -132,7 +132,7 @@ type PeObj struct {
func ldpe(ctxt *Link, f *bio.Reader, pkg string, length int64, pn string) { func ldpe(ctxt *Link, f *bio.Reader, pkg string, length int64, pn string) {
if Debug['v'] != 0 { if Debug['v'] != 0 {
fmt.Fprintf(Bso, "%5.2f ldpe %s\n", obj.Cputime(), pn) fmt.Fprintf(ctxt.Bso, "%5.2f ldpe %s\n", obj.Cputime(), pn)
} }
var sect *PeSect var sect *PeSect
......
...@@ -239,8 +239,6 @@ const ( ...@@ -239,8 +239,6 @@ const (
var ( var (
headstring string headstring string
// buffered output
Bso *bufio.Writer
) )
// TODO(dfc) outBuf duplicates bio.Writer // TODO(dfc) outBuf duplicates bio.Writer
...@@ -468,7 +466,7 @@ func loadinternal(ctxt *Link, name string) { ...@@ -468,7 +466,7 @@ func loadinternal(ctxt *Link, name string) {
if Linkshared { if Linkshared {
shlibname := filepath.Join(ctxt.Libdir[i], name+".shlibname") shlibname := filepath.Join(ctxt.Libdir[i], name+".shlibname")
if Debug['v'] != 0 { if Debug['v'] != 0 {
fmt.Fprintf(Bso, "searching for %s.a in %s\n", name, shlibname) fmt.Fprintf(ctxt.Bso, "searching for %s.a in %s\n", name, shlibname)
} }
if _, err := os.Stat(shlibname); err == nil { if _, err := os.Stat(shlibname); err == nil {
addlibpath(ctxt, "internal", "internal", "", name, shlibname) addlibpath(ctxt, "internal", "internal", "", name, shlibname)
...@@ -478,7 +476,7 @@ func loadinternal(ctxt *Link, name string) { ...@@ -478,7 +476,7 @@ func loadinternal(ctxt *Link, name string) {
} }
pname := filepath.Join(ctxt.Libdir[i], name+".a") pname := filepath.Join(ctxt.Libdir[i], name+".a")
if Debug['v'] != 0 { if Debug['v'] != 0 {
fmt.Fprintf(Bso, "searching for %s.a in %s\n", name, pname) fmt.Fprintf(ctxt.Bso, "searching for %s.a in %s\n", name, pname)
} }
if _, err := os.Stat(pname); err == nil { if _, err := os.Stat(pname); err == nil {
addlibpath(ctxt, "internal", "internal", pname, name, "") addlibpath(ctxt, "internal", "internal", pname, name, "")
...@@ -488,7 +486,7 @@ func loadinternal(ctxt *Link, name string) { ...@@ -488,7 +486,7 @@ func loadinternal(ctxt *Link, name string) {
} }
if found == 0 { if found == 0 {
fmt.Fprintf(Bso, "warning: unable to find %s.a\n", name) fmt.Fprintf(ctxt.Bso, "warning: unable to find %s.a\n", name)
} }
} }
...@@ -520,7 +518,7 @@ func (ctxt *Link) loadlib() { ...@@ -520,7 +518,7 @@ func (ctxt *Link) loadlib() {
iscgo = iscgo || ctxt.Library[i].Pkg == "runtime/cgo" iscgo = iscgo || ctxt.Library[i].Pkg == "runtime/cgo"
if ctxt.Library[i].Shlib == "" { if ctxt.Library[i].Shlib == "" {
if Debug['v'] > 1 { if Debug['v'] > 1 {
fmt.Fprintf(Bso, "%5.2f autolib: %s (from %s)\n", obj.Cputime(), ctxt.Library[i].File, ctxt.Library[i].Objref) fmt.Fprintf(ctxt.Bso, "%5.2f autolib: %s (from %s)\n", obj.Cputime(), ctxt.Library[i].File, ctxt.Library[i].Objref)
} }
objfile(ctxt, ctxt.Library[i]) objfile(ctxt, ctxt.Library[i])
} }
...@@ -529,7 +527,7 @@ func (ctxt *Link) loadlib() { ...@@ -529,7 +527,7 @@ func (ctxt *Link) loadlib() {
for i = 0; i < len(ctxt.Library); i++ { for i = 0; i < len(ctxt.Library); i++ {
if ctxt.Library[i].Shlib != "" { if ctxt.Library[i].Shlib != "" {
if Debug['v'] > 1 { if Debug['v'] > 1 {
fmt.Fprintf(Bso, "%5.2f autolib: %s (from %s)\n", obj.Cputime(), ctxt.Library[i].Shlib, ctxt.Library[i].Objref) fmt.Fprintf(ctxt.Bso, "%5.2f autolib: %s (from %s)\n", obj.Cputime(), ctxt.Library[i].Shlib, ctxt.Library[i].Objref)
} }
ldshlibsyms(ctxt, ctxt.Library[i].Shlib) ldshlibsyms(ctxt, ctxt.Library[i].Shlib)
} }
...@@ -699,13 +697,13 @@ func (ctxt *Link) loadlib() { ...@@ -699,13 +697,13 @@ func (ctxt *Link) loadlib() {
args := hostlinkArchArgs() args := hostlinkArchArgs()
args = append(args, "--print-libgcc-file-name") args = append(args, "--print-libgcc-file-name")
if Debug['v'] != 0 { if Debug['v'] != 0 {
fmt.Fprintf(Bso, "%s %v\n", extld, args) fmt.Fprintf(ctxt.Bso, "%s %v\n", extld, args)
} }
out, err := exec.Command(extld, args...).Output() out, err := exec.Command(extld, args...).Output()
if err != nil { if err != nil {
if Debug['v'] != 0 { if Debug['v'] != 0 {
fmt.Fprintln(Bso, "not using a libgcc file because compiler failed") fmt.Fprintln(ctxt.Bso, "not using a libgcc file because compiler failed")
fmt.Fprintf(Bso, "%v\n%s\n", err, out) fmt.Fprintf(ctxt.Bso, "%v\n%s\n", err, out)
} }
libgccfile = "none" libgccfile = "none"
} else { } else {
...@@ -778,9 +776,9 @@ func objfile(ctxt *Link, lib *Library) { ...@@ -778,9 +776,9 @@ func objfile(ctxt *Link, lib *Library) {
pkg := pathtoprefix(lib.Pkg) pkg := pathtoprefix(lib.Pkg)
if Debug['v'] > 1 { if Debug['v'] > 1 {
fmt.Fprintf(Bso, "%5.2f ldobj: %s (%s)\n", obj.Cputime(), lib.File, pkg) fmt.Fprintf(ctxt.Bso, "%5.2f ldobj: %s (%s)\n", obj.Cputime(), lib.File, pkg)
} }
Bso.Flush() ctxt.Bso.Flush()
f, err := bio.Open(lib.File) f, err := bio.Open(lib.File)
if err != nil { if err != nil {
Exitf("cannot open file %s: %v", lib.File, err) Exitf("cannot open file %s: %v", lib.File, err)
...@@ -1022,7 +1020,7 @@ func hostobjCopy() (paths []string) { ...@@ -1022,7 +1020,7 @@ func hostobjCopy() (paths []string) {
} }
// archive builds a .a archive from the hostobj object files. // archive builds a .a archive from the hostobj object files.
func archive() { func (ctxt *Link) archive() {
if Buildmode != BuildmodeCArchive { if Buildmode != BuildmodeCArchive {
return return
} }
...@@ -1046,8 +1044,8 @@ func archive() { ...@@ -1046,8 +1044,8 @@ func archive() {
argv = append(argv, hostobjCopy()...) argv = append(argv, hostobjCopy()...)
if Debug['v'] != 0 { if Debug['v'] != 0 {
fmt.Fprintf(Bso, "archive: %s\n", strings.Join(argv, " ")) fmt.Fprintf(ctxt.Bso, "archive: %s\n", strings.Join(argv, " "))
Bso.Flush() ctxt.Bso.Flush()
} }
if out, err := exec.Command(argv[0], argv[1:]...).CombinedOutput(); err != nil { if out, err := exec.Command(argv[0], argv[1:]...).CombinedOutput(); err != nil {
...@@ -1272,19 +1270,19 @@ func (l *Link) hostlink() { ...@@ -1272,19 +1270,19 @@ func (l *Link) hostlink() {
} }
if Debug['v'] != 0 { if Debug['v'] != 0 {
fmt.Fprintf(Bso, "host link:") fmt.Fprintf(l.Bso, "host link:")
for _, v := range argv { for _, v := range argv {
fmt.Fprintf(Bso, " %q", v) fmt.Fprintf(l.Bso, " %q", v)
} }
fmt.Fprintf(Bso, "\n") fmt.Fprintf(l.Bso, "\n")
Bso.Flush() l.Bso.Flush()
} }
if out, err := exec.Command(argv[0], argv[1:]...).CombinedOutput(); err != nil { if out, err := exec.Command(argv[0], argv[1:]...).CombinedOutput(); err != nil {
Exitf("running %s failed: %v\n%s", argv[0], err, out) Exitf("running %s failed: %v\n%s", argv[0], err, out)
} else if Debug['v'] != 0 && len(out) > 0 { } else if Debug['v'] != 0 && len(out) > 0 {
fmt.Fprintf(Bso, "%s", out) fmt.Fprintf(l.Bso, "%s", out)
Bso.Flush() l.Bso.Flush()
} }
if Debug['s'] == 0 && debug_s == 0 && HEADTYPE == obj.Hdarwin { if Debug['s'] == 0 && debug_s == 0 && HEADTYPE == obj.Hdarwin {
...@@ -2073,9 +2071,9 @@ func genasmsym(ctxt *Link, put func(*Link, *Symbol, string, int, int64, int64, i ...@@ -2073,9 +2071,9 @@ func genasmsym(ctxt *Link, put func(*Link, *Symbol, string, int, int64, int64, i
// Otherwise, off is addressing the saved program counter. // Otherwise, off is addressing the saved program counter.
// Something underhanded is going on. Say nothing. // Something underhanded is going on. Say nothing.
if Debug['v'] != 0 || Debug['n'] != 0 { if Debug['v'] != 0 || Debug['n'] != 0 {
fmt.Fprintf(Bso, "%5.2f symsize = %d\n", obj.Cputime(), uint32(Symsize)) fmt.Fprintf(ctxt.Bso, "%5.2f symsize = %d\n", obj.Cputime(), uint32(Symsize))
} }
Bso.Flush() ctxt.Bso.Flush()
} }
func Symaddr(ctxt *Link, s *Symbol) int64 { func Symaddr(ctxt *Link, s *Symbol) int64 {
...@@ -2164,7 +2162,7 @@ func (ctxt *Link) callgraph() { ...@@ -2164,7 +2162,7 @@ func (ctxt *Link) callgraph() {
continue continue
} }
if (r.Type == obj.R_CALL || r.Type == obj.R_CALLARM || r.Type == obj.R_CALLPOWER || r.Type == obj.R_CALLMIPS) && r.Sym.Type == obj.STEXT { if (r.Type == obj.R_CALL || r.Type == obj.R_CALLARM || r.Type == obj.R_CALLPOWER || r.Type == obj.R_CALLMIPS) && r.Sym.Type == obj.STEXT {
fmt.Fprintf(Bso, "%s calls %s\n", s.Name, r.Sym.Name) fmt.Fprintf(ctxt.Bso, "%s calls %s\n", s.Name, r.Sym.Name)
} }
} }
} }
......
...@@ -368,7 +368,7 @@ func (ctxt *Link) pclntab() { ...@@ -368,7 +368,7 @@ func (ctxt *Link) pclntab() {
ftab.Size = int64(len(ftab.P)) ftab.Size = int64(len(ftab.P))
if Debug['v'] != 0 { if Debug['v'] != 0 {
fmt.Fprintf(Bso, "%5.2f pclntab=%d bytes, funcdata total %d bytes\n", obj.Cputime(), ftab.Size, funcdata_bytes) fmt.Fprintf(ctxt.Bso, "%5.2f pclntab=%d bytes, funcdata total %d bytes\n", obj.Cputime(), ftab.Size, funcdata_bytes)
} }
} }
......
...@@ -46,10 +46,8 @@ var ( ...@@ -46,10 +46,8 @@ var (
) )
func Ldmain() { func Ldmain() {
Bso = bufio.NewWriter(os.Stdout)
ctxt := linknew(SysArch) ctxt := linknew(SysArch)
ctxt.Bso = Bso ctxt.Bso = bufio.NewWriter(os.Stdout)
Debug = [128]int{} Debug = [128]int{}
nerrors = 0 nerrors = 0
...@@ -123,7 +121,7 @@ func Ldmain() { ...@@ -123,7 +121,7 @@ func Ldmain() {
obj.Flagparse(usage) obj.Flagparse(usage)
startProfile() startProfile()
ctxt.Bso = Bso ctxt.Bso = ctxt.Bso
ctxt.Debugvlog = int32(Debug['v']) ctxt.Debugvlog = int32(Debug['v'])
if flagShared != 0 { if flagShared != 0 {
if Buildmode == BuildmodeUnset { if Buildmode == BuildmodeUnset {
...@@ -164,9 +162,9 @@ func Ldmain() { ...@@ -164,9 +162,9 @@ func Ldmain() {
} }
if Debug['v'] != 0 { if Debug['v'] != 0 {
fmt.Fprintf(Bso, "HEADER = -H%d -T0x%x -D0x%x -R0x%x\n", HEADTYPE, uint64(INITTEXT), uint64(INITDAT), uint32(INITRND)) fmt.Fprintf(ctxt.Bso, "HEADER = -H%d -T0x%x -D0x%x -R0x%x\n", HEADTYPE, uint64(INITTEXT), uint64(INITDAT), uint32(INITRND))
} }
Bso.Flush() ctxt.Bso.Flush()
if Buildmode == BuildmodeShared { if Buildmode == BuildmodeShared {
for i := 0; i < flag.NArg(); i++ { for i := 0; i < flag.NArg(); i++ {
...@@ -213,14 +211,14 @@ func Ldmain() { ...@@ -213,14 +211,14 @@ func Ldmain() {
Thearch.Asmb(ctxt) Thearch.Asmb(ctxt)
ctxt.undef() ctxt.undef()
ctxt.hostlink() ctxt.hostlink()
archive() ctxt.archive()
if Debug['v'] != 0 { if Debug['v'] != 0 {
fmt.Fprintf(Bso, "%5.2f cpu time\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f cpu time\n", obj.Cputime())
fmt.Fprintf(Bso, "%d symbols\n", len(ctxt.Allsym)) fmt.Fprintf(ctxt.Bso, "%d symbols\n", len(ctxt.Allsym))
fmt.Fprintf(Bso, "%d liveness data\n", liveness) fmt.Fprintf(ctxt.Bso, "%d liveness data\n", liveness)
} }
Bso.Flush() ctxt.Bso.Flush()
errorexit() errorexit()
} }
...@@ -184,9 +184,9 @@ func archrelocvariant(ctxt *ld.Link, r *ld.Reloc, s *ld.Symbol, t int64) int64 { ...@@ -184,9 +184,9 @@ func archrelocvariant(ctxt *ld.Link, r *ld.Reloc, s *ld.Symbol, t int64) int64 {
func asmb(ctxt *ld.Link) { func asmb(ctxt *ld.Link) {
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f asmb\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f asmb\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
if ld.Iself { if ld.Iself {
ld.Asmbelfsetup(ctxt) ld.Asmbelfsetup(ctxt)
...@@ -202,18 +202,18 @@ func asmb(ctxt *ld.Link) { ...@@ -202,18 +202,18 @@ func asmb(ctxt *ld.Link) {
if ld.Segrodata.Filelen > 0 { if ld.Segrodata.Filelen > 0 {
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f rodatblk\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f rodatblk\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
ld.Cseek(int64(ld.Segrodata.Fileoff)) ld.Cseek(int64(ld.Segrodata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen)) ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen))
} }
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f datblk\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f datblk\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
ld.Cseek(int64(ld.Segdata.Fileoff)) ld.Cseek(int64(ld.Segdata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen)) ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen))
...@@ -229,9 +229,9 @@ func asmb(ctxt *ld.Link) { ...@@ -229,9 +229,9 @@ func asmb(ctxt *ld.Link) {
if ld.Debug['s'] == 0 { if ld.Debug['s'] == 0 {
// TODO: rationalize // TODO: rationalize
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f sym\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f sym\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
switch ld.HEADTYPE { switch ld.HEADTYPE {
default: default:
if ld.Iself { if ld.Iself {
...@@ -248,7 +248,7 @@ func asmb(ctxt *ld.Link) { ...@@ -248,7 +248,7 @@ func asmb(ctxt *ld.Link) {
default: default:
if ld.Iself { if ld.Iself {
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f elfsym\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f elfsym\n", obj.Cputime())
} }
ld.Asmelfsym(ctxt) ld.Asmelfsym(ctxt)
ld.Cflush() ld.Cflush()
...@@ -277,9 +277,9 @@ func asmb(ctxt *ld.Link) { ...@@ -277,9 +277,9 @@ func asmb(ctxt *ld.Link) {
ctxt.Cursym = nil ctxt.Cursym = nil
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f header\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f header\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
ld.Cseek(0) ld.Cseek(0)
switch ld.HEADTYPE { switch ld.HEADTYPE {
default: default:
......
...@@ -805,9 +805,9 @@ func ensureglinkresolver(ctxt *ld.Link) *ld.Symbol { ...@@ -805,9 +805,9 @@ func ensureglinkresolver(ctxt *ld.Link) *ld.Symbol {
func asmb(ctxt *ld.Link) { func asmb(ctxt *ld.Link) {
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f asmb\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f asmb\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
if ld.Iself { if ld.Iself {
ld.Asmbelfsetup(ctxt) ld.Asmbelfsetup(ctxt)
...@@ -823,18 +823,18 @@ func asmb(ctxt *ld.Link) { ...@@ -823,18 +823,18 @@ func asmb(ctxt *ld.Link) {
if ld.Segrodata.Filelen > 0 { if ld.Segrodata.Filelen > 0 {
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f rodatblk\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f rodatblk\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
ld.Cseek(int64(ld.Segrodata.Fileoff)) ld.Cseek(int64(ld.Segrodata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen)) ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen))
} }
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f datblk\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f datblk\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
ld.Cseek(int64(ld.Segdata.Fileoff)) ld.Cseek(int64(ld.Segdata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen)) ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen))
...@@ -850,9 +850,9 @@ func asmb(ctxt *ld.Link) { ...@@ -850,9 +850,9 @@ func asmb(ctxt *ld.Link) {
if ld.Debug['s'] == 0 { if ld.Debug['s'] == 0 {
// TODO: rationalize // TODO: rationalize
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f sym\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f sym\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
switch ld.HEADTYPE { switch ld.HEADTYPE {
default: default:
if ld.Iself { if ld.Iself {
...@@ -869,7 +869,7 @@ func asmb(ctxt *ld.Link) { ...@@ -869,7 +869,7 @@ func asmb(ctxt *ld.Link) {
default: default:
if ld.Iself { if ld.Iself {
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f elfsym\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f elfsym\n", obj.Cputime())
} }
ld.Asmelfsym(ctxt) ld.Asmelfsym(ctxt)
ld.Cflush() ld.Cflush()
...@@ -898,9 +898,9 @@ func asmb(ctxt *ld.Link) { ...@@ -898,9 +898,9 @@ func asmb(ctxt *ld.Link) {
ctxt.Cursym = nil ctxt.Cursym = nil
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f header\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f header\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
ld.Cseek(0) ld.Cseek(0)
switch ld.HEADTYPE { switch ld.HEADTYPE {
default: default:
......
...@@ -500,9 +500,9 @@ func addgotsym(ctxt *ld.Link, s *ld.Symbol) { ...@@ -500,9 +500,9 @@ func addgotsym(ctxt *ld.Link, s *ld.Symbol) {
func asmb(ctxt *ld.Link) { func asmb(ctxt *ld.Link) {
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f asmb\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f asmb\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
if ld.Iself { if ld.Iself {
ld.Asmbelfsetup(ctxt) ld.Asmbelfsetup(ctxt)
...@@ -518,18 +518,18 @@ func asmb(ctxt *ld.Link) { ...@@ -518,18 +518,18 @@ func asmb(ctxt *ld.Link) {
if ld.Segrodata.Filelen > 0 { if ld.Segrodata.Filelen > 0 {
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f rodatblk\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f rodatblk\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
ld.Cseek(int64(ld.Segrodata.Fileoff)) ld.Cseek(int64(ld.Segrodata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen)) ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen))
} }
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f datblk\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f datblk\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
ld.Cseek(int64(ld.Segdata.Fileoff)) ld.Cseek(int64(ld.Segdata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen)) ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen))
...@@ -547,22 +547,22 @@ func asmb(ctxt *ld.Link) { ...@@ -547,22 +547,22 @@ func asmb(ctxt *ld.Link) {
ctxt.Diag("unsupported executable format") ctxt.Diag("unsupported executable format")
} }
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f sym\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f sym\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
symo = uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen) symo = uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen)
symo = uint32(ld.Rnd(int64(symo), int64(ld.INITRND))) symo = uint32(ld.Rnd(int64(symo), int64(ld.INITRND)))
ld.Cseek(int64(symo)) ld.Cseek(int64(symo))
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f elfsym\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f elfsym\n", obj.Cputime())
} }
ld.Asmelfsym(ctxt) ld.Asmelfsym(ctxt)
ld.Cflush() ld.Cflush()
ld.Cwrite(ld.Elfstrdat) ld.Cwrite(ld.Elfstrdat)
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f dwarf\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f dwarf\n", obj.Cputime())
} }
if ld.Linkmode == ld.LinkExternal { if ld.Linkmode == ld.LinkExternal {
...@@ -572,9 +572,9 @@ func asmb(ctxt *ld.Link) { ...@@ -572,9 +572,9 @@ func asmb(ctxt *ld.Link) {
ctxt.Cursym = nil ctxt.Cursym = nil
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f header\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f header\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
ld.Cseek(0) ld.Cseek(0)
switch ld.HEADTYPE { switch ld.HEADTYPE {
default: default:
......
...@@ -615,9 +615,9 @@ func addgotsym(ctxt *ld.Link, s *ld.Symbol) { ...@@ -615,9 +615,9 @@ func addgotsym(ctxt *ld.Link, s *ld.Symbol) {
func asmb(ctxt *ld.Link) { func asmb(ctxt *ld.Link) {
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f asmb\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f asmb\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
if ld.Iself { if ld.Iself {
ld.Asmbelfsetup(ctxt) ld.Asmbelfsetup(ctxt)
...@@ -634,18 +634,18 @@ func asmb(ctxt *ld.Link) { ...@@ -634,18 +634,18 @@ func asmb(ctxt *ld.Link) {
if ld.Segrodata.Filelen > 0 { if ld.Segrodata.Filelen > 0 {
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f rodatblk\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f rodatblk\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
ld.Cseek(int64(ld.Segrodata.Fileoff)) ld.Cseek(int64(ld.Segrodata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen)) ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen))
} }
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f datblk\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f datblk\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
ld.Cseek(int64(ld.Segdata.Fileoff)) ld.Cseek(int64(ld.Segdata.Fileoff))
ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen)) ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen))
...@@ -665,9 +665,9 @@ func asmb(ctxt *ld.Link) { ...@@ -665,9 +665,9 @@ func asmb(ctxt *ld.Link) {
if ld.Debug['s'] == 0 { if ld.Debug['s'] == 0 {
// TODO: rationalize // TODO: rationalize
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f sym\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f sym\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
switch ld.HEADTYPE { switch ld.HEADTYPE {
default: default:
if ld.Iself { if ld.Iself {
...@@ -691,7 +691,7 @@ func asmb(ctxt *ld.Link) { ...@@ -691,7 +691,7 @@ func asmb(ctxt *ld.Link) {
default: default:
if ld.Iself { if ld.Iself {
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f elfsym\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f elfsym\n", obj.Cputime())
} }
ld.Asmelfsym(ctxt) ld.Asmelfsym(ctxt)
ld.Cflush() ld.Cflush()
...@@ -718,7 +718,7 @@ func asmb(ctxt *ld.Link) { ...@@ -718,7 +718,7 @@ func asmb(ctxt *ld.Link) {
case obj.Hwindows: case obj.Hwindows:
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f dwarf\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f dwarf\n", obj.Cputime())
} }
case obj.Hdarwin: case obj.Hdarwin:
...@@ -729,9 +729,9 @@ func asmb(ctxt *ld.Link) { ...@@ -729,9 +729,9 @@ func asmb(ctxt *ld.Link) {
} }
if ld.Debug['v'] != 0 { if ld.Debug['v'] != 0 {
fmt.Fprintf(ld.Bso, "%5.2f headr\n", obj.Cputime()) fmt.Fprintf(ctxt.Bso, "%5.2f headr\n", obj.Cputime())
} }
ld.Bso.Flush() ctxt.Bso.Flush()
ld.Cseek(0) ld.Cseek(0)
switch ld.HEADTYPE { switch ld.HEADTYPE {
default: default:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment