From ca19f987ca74605ef977c7a8619a344504c72272 Mon Sep 17 00:00:00 2001 From: Than McIntosh Date: Thu, 19 Dec 2024 12:58:40 -0500 Subject: [PATCH] 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 --- src/internal/buildcfg/exp.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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. -- 2.50.0