From 5659964d67c9e0b74d8335ea7288fe6facb0d00b Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Wed, 22 Jul 2015 18:02:52 -0400 Subject: [PATCH] cmd/link: write combined dwarf file to same directory as output file Fixes #11681. Change-Id: I679d71ed25ac585af7d43611be01c1a0c4807871 Reviewed-on: https://go-review.googlesource.com/12554 Run-TryBot: Russ Cox TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- src/cmd/link/internal/ld/lib.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go index 74e4445b86..bd0fbc567d 100644 --- a/src/cmd/link/internal/ld/lib.go +++ b/src/cmd/link/internal/ld/lib.go @@ -1083,16 +1083,16 @@ func hostlink() { Ctxt.Cursym = nil Exitf("%s: running dsymutil failed: %v\n%s", os.Args[0], err, out) } - combinedOutput := fmt.Sprintf("%s/go.combined", tmpdir) + // For os.Rename to work reliably, must be in same directory as outfile. + combinedOutput := outfile + "~" if err := machoCombineDwarf(outfile, dsym, combinedOutput); err != nil { Ctxt.Cursym = nil Exitf("%s: combining dwarf failed: %v", os.Args[0], err) } - origOutput := fmt.Sprintf("%s/go.orig", tmpdir) - os.Rename(outfile, origOutput) + os.Remove(outfile) if err := os.Rename(combinedOutput, outfile); err != nil { Ctxt.Cursym = nil - Exitf("%s: rename(%s, %s) failed: %v", os.Args[0], combinedOutput, outfile, err) + Exitf("%s: %v", os.Args[0], err) } } }