]> Cypherpunks repositories - gostls13.git/commitdiff
internal/buildcfg: enable DWARF version 5 by default
authorThan McIntosh <thanm@golang.org>
Thu, 19 Dec 2024 17:58:40 +0000 (12:58 -0500)
committerThan McIntosh <thanm@golang.org>
Wed, 12 Mar 2025 00:24:39 +0000 (17:24 -0700)
This patch enables the DWARF version 5 experiment by default for most
platforms that support DWARF. Note that MacOS is kept at version 4,
due to problems with CGO builds; the "dsymutil" tool from older
versions of Xcode (prior to V16) can't handle DWARF5. Similar we keep
DWARF 4 for GOOS=aix, where XCOFF doesn't appear to support the new
section subtypes in DWARF 5.

Updates #26379.

Change-Id: I5edd600c611f03ce8e11be3ca18c1e6686ac74ef
Reviewed-on: https://go-review.googlesource.com/c/go/+/637895
Reviewed-by: Cherry Mui <cherryyz@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
src/internal/buildcfg/exp.go

index 9c9ec2c711c150b4ed6679c054c1fafee32e8cd7..2dd6045979a199ae7b776b8947c5d76f43d1ecae 100644 (file)
@@ -73,6 +73,17 @@ func ParseGOEXPERIMENT(goos, goarch, goexp string) (*ExperimentFlags, error) {
                haveXchg8 = true
        }
 
+       // Older versions (anything before V16) of dsymutil don't handle
+       // the .debug_rnglists section in DWARF5. See
+       // https://github.com/golang/go/issues/26379#issuecomment-2677068742
+       // for more context. This disables all DWARF5 on mac, which is not
+       // ideal (would be better to disable just for cases where we know
+       // the build will use external linking). In the GOOS=aix case, the
+       // XCOFF format (as far as can be determined) doesn't seem to
+       // support the necessary section subtypes for DWARF-specific
+       // things like .debug_addr (needed for DWARF 5).
+       dwarf5Supported := (goos != "dwarwin" && goos != "ios" && goos != "aix")
+
        baseline := goexperiment.Flags{
                RegabiWrappers:  regabiSupported,
                RegabiArgs:      regabiSupported,
@@ -80,6 +91,7 @@ func ParseGOEXPERIMENT(goos, goarch, goexp string) (*ExperimentFlags, error) {
                SwissMap:        true,
                SpinbitMutex:    haveXchg8,
                SyncHashTrieMap: true,
+               Dwarf5:          dwarf5Supported,
        }
 
        // Start with the statically enabled set of experiments.