Commit cd75cf4b authored by Cherry Zhang's avatar Cherry Zhang

[dev.link] cmd/compile, cmd/asm: use bio.Writer for object file writing

It is convenient to have a seekable writer. A later CL will make
use of Seek.

Change-Id: Iba0107ce2975d9a451d97f16aa91a318dd4c90e2
Reviewed-on: https://go-review.googlesource.com/c/go/+/196028
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarJeremy Faller <jeremy@golang.org>
parent dc845396
...@@ -46,12 +46,11 @@ func main() { ...@@ -46,12 +46,11 @@ func main() {
architecture.Init(ctxt) architecture.Init(ctxt)
// Create object file, write header. // Create object file, write header.
out, err := os.Create(*flags.OutputFile) buf, err := bio.Create(*flags.OutputFile)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
defer bio.MustClose(out) defer buf.Close()
buf := bufio.NewWriter(bio.MustWriter(out))
if !*flags.SymABIs { if !*flags.SymABIs {
fmt.Fprintf(buf, "go object %s %s %s\n", objabi.GOOS, objabi.GOARCH, objabi.Version) fmt.Fprintf(buf, "go object %s %s %s\n", objabi.GOOS, objabi.GOARCH, objabi.Version)
...@@ -91,9 +90,8 @@ func main() { ...@@ -91,9 +90,8 @@ func main() {
} else { } else {
log.Print("assembly failed") log.Print("assembly failed")
} }
out.Close() buf.Close()
os.Remove(*flags.OutputFile) os.Remove(*flags.OutputFile)
os.Exit(1) os.Exit(1)
} }
buf.Flush()
} }
...@@ -166,7 +166,7 @@ func dumpLinkerObj(bout *bio.Writer) { ...@@ -166,7 +166,7 @@ func dumpLinkerObj(bout *bio.Writer) {
fmt.Fprintf(bout, "\n!\n") fmt.Fprintf(bout, "\n!\n")
obj.WriteObjFile(Ctxt, bout.Writer, myimportpath) obj.WriteObjFile(Ctxt, bout, myimportpath)
} }
func addptabs() { func addptabs() {
......
...@@ -8,6 +8,7 @@ package obj ...@@ -8,6 +8,7 @@ package obj
import ( import (
"bufio" "bufio"
"cmd/internal/bio"
"cmd/internal/dwarf" "cmd/internal/dwarf"
"cmd/internal/objabi" "cmd/internal/objabi"
"cmd/internal/sys" "cmd/internal/sys"
...@@ -80,7 +81,8 @@ func newObjWriter(ctxt *Link, b *bufio.Writer, pkgpath string) *objWriter { ...@@ -80,7 +81,8 @@ func newObjWriter(ctxt *Link, b *bufio.Writer, pkgpath string) *objWriter {
} }
} }
func WriteObjFile(ctxt *Link, b *bufio.Writer, pkgpath string) { func WriteObjFile(ctxt *Link, bout *bio.Writer, pkgpath string) {
b := bout.Writer
w := newObjWriter(ctxt, b, pkgpath) w := newObjWriter(ctxt, b, pkgpath)
// Magic header // Magic header
......
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