]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link/internal/ld: unify OS/SDK versions for macOS linking
authorDmitri Shuralyov <dmitshur@golang.org>
Wed, 14 Feb 2024 16:52:22 +0000 (11:52 -0500)
committerGopher Robot <gobot@golang.org>
Wed, 14 Feb 2024 20:25:19 +0000 (20:25 +0000)
Go 1.23 will require macOS 11 Big Sur or later, even on AMD64.
The comment here suggests the main requirement for the OS and
SDK version is to be recent enough not to break Apple signing,
and recent enough not to cause other problems.

For now, this CL simplifies the code by merging the ARM64 and
AMD64 cases into one, given 1.23 will be the first Go release
with a common minimum macOS version for both architectures so
there's no need to treat them separately here.

For #64207.

Change-Id: I821fcb9a2a316de0703833c8a75abcbaa10b17a3
Cq-Include-Trybots: luci.golang.try:gotip-darwin-amd64_11,gotip-darwin-amd64_14,gotip-darwin-arm64_11,gotip-darwin-arm64_13
Reviewed-on: https://go-review.googlesource.com/c/go/+/563857
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
src/cmd/link/internal/ld/macho.go
src/cmd/link/link_test.go

index fc38b0d99d9a390f48271bb381c67b7bb31f2df3..91e908c97fd33a6b1f14abccd89d7cc8c48546b6 100644 (file)
@@ -478,13 +478,11 @@ func (ctxt *Link) domacho() {
                if ctxt.LinkMode == LinkInternal && machoPlatform == PLATFORM_MACOS {
                        var version uint32
                        switch ctxt.Arch.Family {
-                       case sys.AMD64:
+                       case sys.ARM64, sys.AMD64:
                                // This must be fairly recent for Apple signing (go.dev/issue/30488).
                                // Having too old a version here was also implicated in some problems
                                // calling into macOS libraries (go.dev/issue/56784).
                                // In general this can be the most recent supported macOS version.
-                               version = 10<<16 | 13<<8 | 0<<0 // 10.13.0
-                       case sys.ARM64:
                                version = 11<<16 | 0<<8 | 0<<0 // 11.0.0
                        }
                        ml := newMachoLoad(ctxt.Arch, LC_BUILD_VERSION, 4)
index 897607c4fad5e06f5af410fbf9f6b23e15502cfc..7029d3213fa7a7cf9e7409f9c9d3a93029471218 100644 (file)
@@ -388,9 +388,9 @@ func TestMachOBuildVersion(t *testing.T) {
        found := false
        const LC_BUILD_VERSION = 0x32
        checkMin := func(ver uint32) {
-               major, minor := (ver>>16)&0xff, (ver>>8)&0xff
-               if major != 10 || minor < 9 {
-                       t.Errorf("LC_BUILD_VERSION version %d.%d < 10.9", major, minor)
+               major, minor, patch := (ver>>16)&0xff, (ver>>8)&0xff, (ver>>0)&0xff
+               if major < 11 {
+                       t.Errorf("LC_BUILD_VERSION version %d.%d.%d < 11.0.0", major, minor, patch)
                }
        }
        for _, cmd := range exem.Loads {