aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCherry Mui <cherryyz@google.com>2024-06-21 11:56:45 -0400
committerCarlos Amedee <carlos@golang.org>2024-07-10 19:31:27 +0000
commit4e548f2c8e489a408033c8aab336077b16bc8cf7 (patch)
tree520575eb6946ccf8af65e5e2a6350d8c4d37c904
parent45f9ded1df582eb87e06d7fc8cab905ee68f8aa7 (diff)
downloadgo-upstream-release-branch.go1.22.tar.gz
[release-branch.go1.22] cmd/link: don't let dsymutil delete our temp directoryupstream-release-branch.go1.22
To work around #59026, where dsymutil may not clean up its temp directory at exit, we set DSYMUTIL_REPRODUCER_PATH to our temp directory so it uses that, and we can delete it at the end. In Xcode 16 beta, dsymutil deletes the DSYMUTIL_REPRODUCER_PATH directory even if it is not empty. We still need our tmpdir at the point, so give a subdirectory to dsymutil instead. Updates #68088. Fixes #68198. Change-Id: I18759cc39512819bbd0511793ce917eae72245d6 Reviewed-on: https://go-review.googlesource.com/c/go/+/593659 Reviewed-by: Than McIntosh <thanm@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> (cherry picked from commit 5f319b75075a62ab176ab8c25f0e45f2ae4f0704) Reviewed-on: https://go-review.googlesource.com/c/go/+/596455
-rw-r--r--src/cmd/link/internal/ld/lib.go10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go
index eab74dc328..7af88869d2 100644
--- a/src/cmd/link/internal/ld/lib.go
+++ b/src/cmd/link/internal/ld/lib.go
@@ -1954,7 +1954,15 @@ func (ctxt *Link) hostlink() {
cmd := exec.Command(dsymutilCmd, "-f", *flagOutfile, "-o", dsym)
// dsymutil may not clean up its temp directory at exit.
// Set DSYMUTIL_REPRODUCER_PATH to work around. see issue 59026.
- cmd.Env = append(os.Environ(), "DSYMUTIL_REPRODUCER_PATH="+*flagTmpdir)
+ // dsymutil (Apple LLVM version 16.0.0) deletes the directory
+ // even if it is not empty. We still need our tmpdir, so give a
+ // subdirectory to dsymutil.
+ dsymDir := filepath.Join(*flagTmpdir, "dsymutil")
+ err = os.MkdirAll(dsymDir, 0777)
+ if err != nil {
+ Exitf("fail to create temp dir: %v", err)
+ }
+ cmd.Env = append(os.Environ(), "DSYMUTIL_REPRODUCER_PATH="+dsymDir)
if ctxt.Debugvlog != 0 {
ctxt.Logf("host link dsymutil:")
for _, v := range cmd.Args {