]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/internal/*: only call ctx.Bso.Flush when something has been written
authorDave Cheney <dave@cheney.net>
Wed, 24 Aug 2016 10:44:09 +0000 (20:44 +1000)
committerDave Cheney <dave@cheney.net>
Thu, 25 Aug 2016 01:31:17 +0000 (01:31 +0000)
In many places where ctx.Bso.Flush is used as the target for some debug
logging, ctx.Bso.Flush is called unconditionally. In the majority of
cases where debug logging is not enabled, this means Flush is called
many times when there is nothing to be flushed (it will be called anyway
when ctx.Bso is eventually closed), sometimes in a loop.

Avoid this by moving the ctx.Bso.Flush call into the same condition
block as the debug print. This pattern was previously applied
sporadically.

Change-Id: I0444cb235cc8b9bac51a59b2e44e59872db2be06
Reviewed-on: https://go-review.googlesource.com/27579
Run-TryBot: Dave Cheney <dave@cheney.net>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
14 files changed:
src/cmd/internal/obj/arm64/obj7.go
src/cmd/internal/obj/mips/obj0.go
src/cmd/internal/obj/ppc64/obj9.go
src/cmd/internal/obj/s390x/objz.go
src/cmd/link/internal/amd64/asm.go
src/cmd/link/internal/arm/asm.go
src/cmd/link/internal/arm64/asm.go
src/cmd/link/internal/ld/data.go
src/cmd/link/internal/ld/lib.go
src/cmd/link/internal/ld/main.go
src/cmd/link/internal/mips64/asm.go
src/cmd/link/internal/ppc64/asm.go
src/cmd/link/internal/s390x/asm.go
src/cmd/link/internal/x86/asm.go

index 3f606dd697ad88a04f5f250f459806404bd4717e..e251408aa71b0274e1312a349de6cae413471d6a 100644 (file)
@@ -714,8 +714,8 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
                        if ctxt.Autosize == 0 && !(cursym.Text.Mark&LEAF != 0) {
                                if ctxt.Debugvlog != 0 {
                                        fmt.Fprintf(ctxt.Bso, "save suppressed in: %s\n", cursym.Text.From.Sym.Name)
+                                       ctxt.Bso.Flush()
                                }
-                               ctxt.Bso.Flush()
                                cursym.Text.Mark |= LEAF
                        }
 
index ade1ee566e8f00aaaf2507a91b1ac92ccbac1986..56a47f9c1ba0d7dcfc512fdcd721a8c9e2d57613 100644 (file)
@@ -145,8 +145,8 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
         */
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f noops\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
 
        var q *obj.Prog
        var q1 *obj.Prog
index 5f88307a2f1a107b31a1e54e214c488d3ae87fd0..6a5f050c67197a3e0abbb009f545f03296332a46 100644 (file)
@@ -276,8 +276,8 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
         */
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f noops\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
 
        var q *obj.Prog
        var q1 *obj.Prog
index 0526a35953719ba8ec6547c63aa9aa10ae0192a3..c9fca1b36f1029b6343aaf0739867da8ba6f1b96 100644 (file)
@@ -243,8 +243,8 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) {
         */
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f noops\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
 
        var q *obj.Prog
        var q1 *obj.Prog
index 3392b4ab007b71e6a5a650d69f9cf1c383a6c41d..f64a309c8c28c797b4966fde1a4a017d7906db9f 100644 (file)
@@ -601,13 +601,13 @@ func addgotsym(ctxt *ld.Link, s *ld.Symbol) {
 func asmb(ctxt *ld.Link) {
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f asmb\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
 
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f codeblk\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
 
        if ld.Iself {
                ld.Asmbelfsetup(ctxt)
@@ -625,8 +625,8 @@ func asmb(ctxt *ld.Link) {
        if ld.Segrodata.Filelen > 0 {
                if ctxt.Debugvlog != 0 {
                        fmt.Fprintf(ctxt.Bso, "%5.2f rodatblk\n", obj.Cputime())
+                       ctxt.Bso.Flush()
                }
-               ctxt.Bso.Flush()
 
                ld.Cseek(int64(ld.Segrodata.Fileoff))
                ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen))
@@ -634,8 +634,8 @@ func asmb(ctxt *ld.Link) {
 
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f datblk\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
 
        ld.Cseek(int64(ld.Segdata.Fileoff))
        ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen))
@@ -679,8 +679,8 @@ func asmb(ctxt *ld.Link) {
        if !*ld.FlagS {
                if ctxt.Debugvlog != 0 {
                        fmt.Fprintf(ctxt.Bso, "%5.2f sym\n", obj.Cputime())
+                       ctxt.Bso.Flush()
                }
-               ctxt.Bso.Flush()
                switch ld.HEADTYPE {
                default:
                case obj.Hplan9:
@@ -751,8 +751,8 @@ func asmb(ctxt *ld.Link) {
 
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f headr\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
        ld.Cseek(0)
        switch ld.HEADTYPE {
        default:
index b1a05453903b0459e4e31c021a8e0db5cc1f84fa..111fe2894e37d97630db4c578cce372b90d1202a 100644 (file)
@@ -584,8 +584,8 @@ func addgotsym(ctxt *ld.Link, s *ld.Symbol) {
 func asmb(ctxt *ld.Link) {
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f asmb\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
 
        if ld.Iself {
                ld.Asmbelfsetup(ctxt)
@@ -602,8 +602,8 @@ func asmb(ctxt *ld.Link) {
        if ld.Segrodata.Filelen > 0 {
                if ctxt.Debugvlog != 0 {
                        fmt.Fprintf(ctxt.Bso, "%5.2f rodatblk\n", obj.Cputime())
+                       ctxt.Bso.Flush()
                }
-               ctxt.Bso.Flush()
 
                ld.Cseek(int64(ld.Segrodata.Fileoff))
                ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen))
@@ -611,8 +611,8 @@ func asmb(ctxt *ld.Link) {
 
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f datblk\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
 
        ld.Cseek(int64(ld.Segdata.Fileoff))
        ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen))
@@ -634,8 +634,8 @@ func asmb(ctxt *ld.Link) {
                // TODO: rationalize
                if ctxt.Debugvlog != 0 {
                        fmt.Fprintf(ctxt.Bso, "%5.2f sym\n", obj.Cputime())
+                       ctxt.Bso.Flush()
                }
-               ctxt.Bso.Flush()
                switch ld.HEADTYPE {
                default:
                        if ld.Iself {
@@ -690,8 +690,8 @@ func asmb(ctxt *ld.Link) {
        ctxt.Cursym = nil
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f header\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
        ld.Cseek(0)
        switch ld.HEADTYPE {
        default:
index a25a01dd49f09cb321ee16025bf5368872c96cf2..5bba3f0e24750457af14e6a3732af4967d853d84 100644 (file)
@@ -393,8 +393,8 @@ func archrelocvariant(ctxt *ld.Link, r *ld.Reloc, s *ld.Symbol, t int64) int64 {
 func asmb(ctxt *ld.Link) {
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f asmb\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
 
        if ld.Iself {
                ld.Asmbelfsetup(ctxt)
@@ -411,8 +411,8 @@ func asmb(ctxt *ld.Link) {
        if ld.Segrodata.Filelen > 0 {
                if ctxt.Debugvlog != 0 {
                        fmt.Fprintf(ctxt.Bso, "%5.2f rodatblk\n", obj.Cputime())
+                       ctxt.Bso.Flush()
                }
-               ctxt.Bso.Flush()
 
                ld.Cseek(int64(ld.Segrodata.Fileoff))
                ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen))
@@ -420,8 +420,8 @@ func asmb(ctxt *ld.Link) {
 
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f datblk\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
 
        ld.Cseek(int64(ld.Segdata.Fileoff))
        ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen))
@@ -443,8 +443,8 @@ func asmb(ctxt *ld.Link) {
                // TODO: rationalize
                if ctxt.Debugvlog != 0 {
                        fmt.Fprintf(ctxt.Bso, "%5.2f sym\n", obj.Cputime())
+                       ctxt.Bso.Flush()
                }
-               ctxt.Bso.Flush()
                switch ld.HEADTYPE {
                default:
                        if ld.Iself {
@@ -499,8 +499,8 @@ func asmb(ctxt *ld.Link) {
        ctxt.Cursym = nil
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f header\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
        ld.Cseek(0)
        switch ld.HEADTYPE {
        default:
index 59617386ab42e7d6c9e93185813f1efd5077e117..aeb7a75f1a9e6be06d08fea1fd98febbb6bf91e6 100644 (file)
@@ -649,8 +649,8 @@ func relocsym(ctxt *Link, s *Symbol) {
 func (ctxt *Link) reloc() {
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f reloc\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
 
        for _, s := range ctxt.Textp {
                relocsym(ctxt, s)
@@ -725,8 +725,8 @@ func dynreloc(ctxt *Link, data *[obj.SXREF][]*Symbol) {
        }
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f reloc\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
 
        for _, s := range ctxt.Textp {
                dynrelocsym(ctxt, s)
@@ -805,9 +805,8 @@ func CodeblkPad(ctxt *Link, addr int64, size int64, pad []byte) {
                for ; addr < eaddr; addr++ {
                        fmt.Fprintf(ctxt.Bso, " %.2x", 0)
                }
+               ctxt.Bso.Flush()
        }
-
-       ctxt.Bso.Flush()
 }
 
 func blk(ctxt *Link, syms []*Symbol, addr, size int64, pad []byte) {
@@ -1191,8 +1190,8 @@ var datap []*Symbol
 func (ctxt *Link) dodata() {
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f dodata\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
 
        // Collect data symbols by type into data.
        var data [obj.SXREF][]*Symbol
index 7603c8131991d8b048f307843fbec6674c1f9176..ba1c6da34fee58b7240529377f855aa2cf66bb14 100644 (file)
@@ -655,8 +655,8 @@ func objfile(ctxt *Link, lib *Library) {
 
        if ctxt.Debugvlog > 1 {
                fmt.Fprintf(ctxt.Bso, "%5.2f ldobj: %s (%s)\n", obj.Cputime(), lib.File, pkg)
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
        f, err := bio.Open(lib.File)
        if err != nil {
                Exitf("cannot open file %s: %v", lib.File, err)
@@ -1945,8 +1945,8 @@ func genasmsym(ctxt *Link, put func(*Link, *Symbol, string, int, int64, int64, i
        // Something underhanded is going on. Say nothing.
        if ctxt.Debugvlog != 0 || *flagN {
                fmt.Fprintf(ctxt.Bso, "%5.2f symsize = %d\n", obj.Cputime(), uint32(Symsize))
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
 }
 
 func Symaddr(ctxt *Link, s *Symbol) int64 {
index 349542bde1f3dea536ceb3de6c342585fcf1d636..ab1160184f2b3e14ba8a3b0de4c9090a4fdf17bd 100644 (file)
@@ -176,8 +176,8 @@ func Main() {
 
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "HEADER = -H%d -T0x%x -D0x%x -R0x%x\n", HEADTYPE, uint64(*FlagTextAddr), uint64(*FlagDataAddr), uint32(*FlagRound))
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
 
        if Buildmode == BuildmodeShared {
                for i := 0; i < flag.NArg(); i++ {
index 0b0479e336de2b7f59e125bd339db9764e654ac6..42c1ecbe5b3952427e20699009c6dec8afcbd272 100644 (file)
@@ -185,8 +185,8 @@ func archrelocvariant(ctxt *ld.Link, r *ld.Reloc, s *ld.Symbol, t int64) int64 {
 func asmb(ctxt *ld.Link) {
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f asmb\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
 
        if ld.Iself {
                ld.Asmbelfsetup(ctxt)
@@ -203,8 +203,8 @@ func asmb(ctxt *ld.Link) {
        if ld.Segrodata.Filelen > 0 {
                if ctxt.Debugvlog != 0 {
                        fmt.Fprintf(ctxt.Bso, "%5.2f rodatblk\n", obj.Cputime())
+                       ctxt.Bso.Flush()
                }
-               ctxt.Bso.Flush()
 
                ld.Cseek(int64(ld.Segrodata.Fileoff))
                ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen))
@@ -212,8 +212,8 @@ func asmb(ctxt *ld.Link) {
 
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f datblk\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
 
        ld.Cseek(int64(ld.Segdata.Fileoff))
        ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen))
@@ -230,8 +230,8 @@ func asmb(ctxt *ld.Link) {
                // TODO: rationalize
                if ctxt.Debugvlog != 0 {
                        fmt.Fprintf(ctxt.Bso, "%5.2f sym\n", obj.Cputime())
+                       ctxt.Bso.Flush()
                }
-               ctxt.Bso.Flush()
                switch ld.HEADTYPE {
                default:
                        if ld.Iself {
@@ -278,8 +278,8 @@ func asmb(ctxt *ld.Link) {
        ctxt.Cursym = nil
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f header\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
        ld.Cseek(0)
        switch ld.HEADTYPE {
        default:
index 3bfa63a27f425e41798d1538ada242e52ef8c96d..996b968d284b1a913c1c0f2704a0d93a823b03ad 100644 (file)
@@ -806,8 +806,8 @@ func ensureglinkresolver(ctxt *ld.Link) *ld.Symbol {
 func asmb(ctxt *ld.Link) {
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f asmb\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
 
        if ld.Iself {
                ld.Asmbelfsetup(ctxt)
@@ -824,8 +824,8 @@ func asmb(ctxt *ld.Link) {
        if ld.Segrodata.Filelen > 0 {
                if ctxt.Debugvlog != 0 {
                        fmt.Fprintf(ctxt.Bso, "%5.2f rodatblk\n", obj.Cputime())
+                       ctxt.Bso.Flush()
                }
-               ctxt.Bso.Flush()
 
                ld.Cseek(int64(ld.Segrodata.Fileoff))
                ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen))
@@ -833,8 +833,8 @@ func asmb(ctxt *ld.Link) {
 
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f datblk\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
 
        ld.Cseek(int64(ld.Segdata.Fileoff))
        ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen))
@@ -851,8 +851,8 @@ func asmb(ctxt *ld.Link) {
                // TODO: rationalize
                if ctxt.Debugvlog != 0 {
                        fmt.Fprintf(ctxt.Bso, "%5.2f sym\n", obj.Cputime())
+                       ctxt.Bso.Flush()
                }
-               ctxt.Bso.Flush()
                switch ld.HEADTYPE {
                default:
                        if ld.Iself {
@@ -899,8 +899,8 @@ func asmb(ctxt *ld.Link) {
        ctxt.Cursym = nil
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f header\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
        ld.Cseek(0)
        switch ld.HEADTYPE {
        default:
index 2e0dfbb64095cc4ed6d56fc5078257b9ab6b019e..4441e3840a9b6df7fe2be253da962a1bfed6c0e3 100644 (file)
@@ -501,8 +501,8 @@ func addgotsym(ctxt *ld.Link, s *ld.Symbol) {
 func asmb(ctxt *ld.Link) {
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f asmb\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
 
        if ld.Iself {
                ld.Asmbelfsetup(ctxt)
@@ -519,8 +519,8 @@ func asmb(ctxt *ld.Link) {
        if ld.Segrodata.Filelen > 0 {
                if ctxt.Debugvlog != 0 {
                        fmt.Fprintf(ctxt.Bso, "%5.2f rodatblk\n", obj.Cputime())
+                       ctxt.Bso.Flush()
                }
-               ctxt.Bso.Flush()
 
                ld.Cseek(int64(ld.Segrodata.Fileoff))
                ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen))
@@ -528,8 +528,8 @@ func asmb(ctxt *ld.Link) {
 
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f datblk\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
 
        ld.Cseek(int64(ld.Segdata.Fileoff))
        ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen))
@@ -548,8 +548,8 @@ func asmb(ctxt *ld.Link) {
                }
                if ctxt.Debugvlog != 0 {
                        fmt.Fprintf(ctxt.Bso, "%5.2f sym\n", obj.Cputime())
+                       ctxt.Bso.Flush()
                }
-               ctxt.Bso.Flush()
                symo = uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen)
                symo = uint32(ld.Rnd(int64(symo), int64(*ld.FlagRound)))
 
@@ -573,8 +573,8 @@ func asmb(ctxt *ld.Link) {
        ctxt.Cursym = nil
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f header\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
        ld.Cseek(0)
        switch ld.HEADTYPE {
        default:
index 63a7e1537e609c10bc13a87252a4b6c0ee8efa6c..28bd247275d08e7fd2a5f0ff4496a0205fa2b405 100644 (file)
@@ -627,8 +627,8 @@ func addgotsym(ctxt *ld.Link, s *ld.Symbol) {
 func asmb(ctxt *ld.Link) {
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f asmb\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
 
        if ld.Iself {
                ld.Asmbelfsetup(ctxt)
@@ -646,8 +646,8 @@ func asmb(ctxt *ld.Link) {
        if ld.Segrodata.Filelen > 0 {
                if ctxt.Debugvlog != 0 {
                        fmt.Fprintf(ctxt.Bso, "%5.2f rodatblk\n", obj.Cputime())
+                       ctxt.Bso.Flush()
                }
-               ctxt.Bso.Flush()
 
                ld.Cseek(int64(ld.Segrodata.Fileoff))
                ld.Datblk(ctxt, int64(ld.Segrodata.Vaddr), int64(ld.Segrodata.Filelen))
@@ -655,8 +655,8 @@ func asmb(ctxt *ld.Link) {
 
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f datblk\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
 
        ld.Cseek(int64(ld.Segdata.Fileoff))
        ld.Datblk(ctxt, int64(ld.Segdata.Vaddr), int64(ld.Segdata.Filelen))
@@ -677,8 +677,8 @@ func asmb(ctxt *ld.Link) {
                // TODO: rationalize
                if ctxt.Debugvlog != 0 {
                        fmt.Fprintf(ctxt.Bso, "%5.2f sym\n", obj.Cputime())
+                       ctxt.Bso.Flush()
                }
-               ctxt.Bso.Flush()
                switch ld.HEADTYPE {
                default:
                        if ld.Iself {
@@ -741,8 +741,8 @@ func asmb(ctxt *ld.Link) {
 
        if ctxt.Debugvlog != 0 {
                fmt.Fprintf(ctxt.Bso, "%5.2f headr\n", obj.Cputime())
+               ctxt.Bso.Flush()
        }
-       ctxt.Bso.Flush()
        ld.Cseek(0)
        switch ld.HEADTYPE {
        default: