diff --git a/src/cmd/link/internal/ld/macho.go b/src/cmd/link/internal/ld/macho.go index d6c28e4790..e43a1aa002 100644 --- a/src/cmd/link/internal/ld/macho.go +++ b/src/cmd/link/internal/ld/macho.go @@ -710,6 +710,7 @@ func asmbMacho(ctxt *Link) { /* text */ v := Rnd(int64(uint64(HEADR)+Segtext.Length), int64(*FlagRound)) + var mstext *MachoSeg if ctxt.LinkMode != LinkExternal { ms = newMachoSeg("__TEXT", 20) ms.vaddr = uint64(va) @@ -718,6 +719,7 @@ func asmbMacho(ctxt *Link) { ms.filesize = uint64(v) ms.prot1 = 7 ms.prot2 = 5 + mstext = ms } for _, sect := range Segtext.Sections { @@ -868,7 +870,7 @@ func asmbMacho(ctxt *Link) { if int64(len(data)) != codesigOff { panic("wrong size") } - codesign.Sign(ldr.Data(cs), bytes.NewReader(data), "a.out", codesigOff, int64(Segtext.Fileoff), int64(Segtext.Filelen), ctxt.IsExe() || ctxt.IsPIE()) + codesign.Sign(ldr.Data(cs), bytes.NewReader(data), "a.out", codesigOff, int64(mstext.fileoffset), int64(mstext.filesize), ctxt.IsExe() || ctxt.IsPIE()) ctxt.Out.SeekSet(codesigOff) ctxt.Out.Write(ldr.Data(cs)) }