]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link/internal/ld: set MachO platform to PLATFORM_IOS on iOS
authorElias Naur <mail@eliasnaur.com>
Sun, 10 Nov 2019 07:42:54 +0000 (08:42 +0100)
committerElias Naur <mail@eliasnaur.com>
Fri, 15 Nov 2019 21:02:07 +0000 (21:02 +0000)
CL 205340 changed the linker to skip certain flags when linking
for iOS. However, for host linking on iOS (such as on the Corellium
darwin/arm64 builders) the MachO platform defaults to PLATFORM_MACOS,
and the flags are not skipped.

Avoids warnings such as

    ld: warning: -no_pie ignored for arm64

Updates #32963

Change-Id: Ib6b4c2375fd14cf89410bf5ff1537b692b7a1c15
Reviewed-on: https://go-review.googlesource.com/c/go/+/206337
Run-TryBot: Elias Naur <mail@eliasnaur.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/cmd/link/internal/ld/macho.go

index 8756da4fd8c87dd007f3ce97c122b3fe7c00cda7..e50eddd96c55e8a319bd68f4e8f18c7a1399d59f 100644 (file)
@@ -404,21 +404,26 @@ func (ctxt *Link) domacho() {
                }
        }
        if machoPlatform == 0 {
-               machoPlatform = PLATFORM_MACOS
-               if ctxt.LinkMode == LinkInternal {
-                       // For lldb, must say LC_VERSION_MIN_MACOSX or else
-                       // it won't know that this Mach-O binary is from OS X
-                       // (could be iOS or WatchOS instead).
-                       // Go on iOS uses linkmode=external, and linkmode=external
-                       // adds this itself. So we only need this code for linkmode=internal
-                       // and we can assume OS X.
-                       //
-                       // See golang.org/issues/12941.
-                       //
-                       // The version must be at least 10.9; see golang.org/issues/30488.
-                       ml := newMachoLoad(ctxt.Arch, LC_VERSION_MIN_MACOSX, 2)
-                       ml.data[0] = 10<<16 | 9<<8 | 0<<0 // OS X version 10.9.0
-                       ml.data[1] = 10<<16 | 9<<8 | 0<<0 // SDK 10.9.0
+               switch ctxt.Arch.Family {
+               default:
+                       machoPlatform = PLATFORM_MACOS
+                       if ctxt.LinkMode == LinkInternal {
+                               // For lldb, must say LC_VERSION_MIN_MACOSX or else
+                               // it won't know that this Mach-O binary is from OS X
+                               // (could be iOS or WatchOS instead).
+                               // Go on iOS uses linkmode=external, and linkmode=external
+                               // adds this itself. So we only need this code for linkmode=internal
+                               // and we can assume OS X.
+                               //
+                               // See golang.org/issues/12941.
+                               //
+                               // The version must be at least 10.9; see golang.org/issues/30488.
+                               ml := newMachoLoad(ctxt.Arch, LC_VERSION_MIN_MACOSX, 2)
+                               ml.data[0] = 10<<16 | 9<<8 | 0<<0 // OS X version 10.9.0
+                               ml.data[1] = 10<<16 | 9<<8 | 0<<0 // SDK 10.9.0
+                       }
+               case sys.ARM, sys.ARM64:
+                       machoPlatform = PLATFORM_IOS
                }
        }