authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-04-01 14:33:37+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-04-01 14:33:37+02:00
log8b5d5f44e23c86082fba480f01092f2f7ffb3dfe
treed0e421eb43062060f4a7df937a7171d86f6a5883
parentfd29ddc06c914a994ecb41714a7c4470ceda5af3

macho: set CS_LINKER_SIGNED flag in code signature generated by zld

This way, if the user wants to use `codesign` (or other tool) they will not be forced to `-f` force signature update. This matches the behavior promoted by Apple's `ld64` linker.

2 files changed, 2 insertions(+), 1 deletions(-)

lib/std/macho.zig+1
...@@ -1718,6 +1718,7 @@ pub const CS_SIGNER_TYPE_LEGACYVPN: u32 = 5;...@@ -1718,6 +1718,7 @@ pub const CS_SIGNER_TYPE_LEGACYVPN: u32 = 5;
1718pub const CS_SIGNER_TYPE_MAC_APP_STORE: u32 = 6;1718pub const CS_SIGNER_TYPE_MAC_APP_STORE: u32 = 6;
17191719
1720pub const CS_ADHOC: u32 = 0x2;1720pub const CS_ADHOC: u32 = 0x2;
1721pub const CS_LINKER_SIGNED: u32 = 0x20000;
17211722
1722pub const CS_EXECSEG_MAIN_BINARY: u32 = 0x1;1723pub const CS_EXECSEG_MAIN_BINARY: u32 = 0x1;
17231724
src/link/MachO/CodeSignature.zig+1-1
...@@ -60,7 +60,7 @@ const CodeDirectory = struct {...@@ -60,7 +60,7 @@ const CodeDirectory = struct {
60 .magic = macho.CSMAGIC_CODEDIRECTORY,60 .magic = macho.CSMAGIC_CODEDIRECTORY,
61 .length = @sizeOf(macho.CodeDirectory),61 .length = @sizeOf(macho.CodeDirectory),
62 .version = macho.CS_SUPPORTSEXECSEG,62 .version = macho.CS_SUPPORTSEXECSEG,
63 .flags = macho.CS_ADHOC,63 .flags = macho.CS_ADHOC | macho.CS_LINKER_SIGNED,
64 .hashOffset = 0,64 .hashOffset = 0,
65 .identOffset = @sizeOf(macho.CodeDirectory),65 .identOffset = @sizeOf(macho.CodeDirectory),
66 .nSpecialSlots = 0,66 .nSpecialSlots = 0,