mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/link/internal/ld: bump macOS and macOS SDK version to 10.9
Satisfies the Apple Notary. Fixes #30488 Change-Id: I91cf2d706a3ebe79bafdb759a0d32266ed6b9096 Reviewed-on: https://go-review.googlesource.com/c/go/+/175918 Run-TryBot: Elias Naur <mail@eliasnaur.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
parent
bc0c077094
commit
4cd6c3bac7
2 changed files with 69 additions and 2 deletions
|
|
@ -414,9 +414,11 @@ func (ctxt *Link) domacho() {
|
||||||
// and we can assume OS X.
|
// and we can assume OS X.
|
||||||
//
|
//
|
||||||
// See golang.org/issues/12941.
|
// 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 := newMachoLoad(ctxt.Arch, LC_VERSION_MIN_MACOSX, 2)
|
||||||
ml.data[0] = 10<<16 | 7<<8 | 0<<0 // OS X version 10.7.0
|
ml.data[0] = 10<<16 | 9<<8 | 0<<0 // OS X version 10.9.0
|
||||||
ml.data[1] = 10<<16 | 7<<8 | 0<<0 // SDK 10.7.0
|
ml.data[1] = 10<<16 | 9<<8 | 0<<0 // SDK 10.9.0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"debug/macho"
|
||||||
"internal/testenv"
|
"internal/testenv"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
|
|
@ -257,3 +258,67 @@ func TestXFlag(t *testing.T) {
|
||||||
t.Errorf("%v: %v:\n%s", cmd.Args, err, out)
|
t.Errorf("%v: %v:\n%s", cmd.Args, err, out)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var testMacOSVersionSrc = `
|
||||||
|
package main
|
||||||
|
func main() { }
|
||||||
|
`
|
||||||
|
|
||||||
|
func TestMacOSVersion(t *testing.T) {
|
||||||
|
testenv.MustHaveGoBuild(t)
|
||||||
|
|
||||||
|
tmpdir, err := ioutil.TempDir("", "TestMacOSVersion")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
defer os.RemoveAll(tmpdir)
|
||||||
|
|
||||||
|
src := filepath.Join(tmpdir, "main.go")
|
||||||
|
err = ioutil.WriteFile(src, []byte(testMacOSVersionSrc), 0666)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
exe := filepath.Join(tmpdir, "main")
|
||||||
|
cmd := exec.Command(testenv.GoToolPath(t), "build", "-ldflags=-linkmode=internal", "-o", exe, src)
|
||||||
|
cmd.Env = append(os.Environ(),
|
||||||
|
"CGO_ENABLED=0",
|
||||||
|
"GOOS=darwin",
|
||||||
|
"GOARCH=amd64",
|
||||||
|
)
|
||||||
|
if out, err := cmd.CombinedOutput(); err != nil {
|
||||||
|
t.Fatalf("%v: %v:\n%s", cmd.Args, err, out)
|
||||||
|
}
|
||||||
|
exef, err := os.Open(exe)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
exem, err := macho.NewFile(exef)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
found := false
|
||||||
|
const LC_VERSION_MIN_MACOSX = 0x24
|
||||||
|
checkMin := func(ver uint32) {
|
||||||
|
major, minor := (ver>>16)&0xff, (ver>>8)&0xff
|
||||||
|
if major != 10 || minor < 9 {
|
||||||
|
t.Errorf("LC_VERSION_MIN_MACOSX version %d.%d < 10.9", major, minor)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, cmd := range exem.Loads {
|
||||||
|
raw := cmd.Raw()
|
||||||
|
type_ := exem.ByteOrder.Uint32(raw)
|
||||||
|
if type_ != LC_VERSION_MIN_MACOSX {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
osVer := exem.ByteOrder.Uint32(raw[8:])
|
||||||
|
checkMin(osVer)
|
||||||
|
sdkVer := exem.ByteOrder.Uint32(raw[12:])
|
||||||
|
checkMin(sdkVer)
|
||||||
|
found = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if !found {
|
||||||
|
t.Errorf("no LC_VERSION_MIN_MACOSX load command found")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue