From: Than McIntosh Date: Thu, 19 Dec 2024 17:58:40 +0000 (-0500) Subject: internal/buildcfg: enable DWARF version 5 by default X-Git-Tag: go1.25rc1~754 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=ca19f987ca74605ef977c7a8619a344504c72272;p=gostls13.git internal/buildcfg: enable DWARF version 5 by default 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 LUCI-TryBot-Result: Go LUCI Reviewed-by: David Chase --- diff --git a/src/internal/buildcfg/exp.go b/src/internal/buildcfg/exp.go index 9c9ec2c711..2dd6045979 100644 --- a/src/internal/buildcfg/exp.go +++ b/src/internal/buildcfg/exp.go @@ -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.