mirror of
https://github.com/ziglang/zig.git
synced 2025-12-25 23:53:15 +00:00
macho: make MachO.requiresCodeSignature accept link.Options
This commit is contained in:
parent
052984c5ae
commit
ec03619dcf
@ -530,7 +530,7 @@ pub fn flushModule(self: *MachO, comp: *Compilation, prog_node: *std.Progress.No
|
||||
|
||||
try self.writeLinkeditSegmentData();
|
||||
|
||||
var codesig: ?CodeSignature = if (self.requiresCodeSignature()) blk: {
|
||||
var codesig: ?CodeSignature = if (requiresCodeSignature(&self.base.options)) blk: {
|
||||
// Preallocate space for the code signature.
|
||||
// We need to do this at this stage so that we have the load commands with proper values
|
||||
// written out to the file.
|
||||
@ -4767,11 +4767,11 @@ pub inline fn getPageSize(cpu_arch: std.Target.Cpu.Arch) u16 {
|
||||
};
|
||||
}
|
||||
|
||||
pub fn requiresCodeSignature(self: MachO) bool {
|
||||
if (self.base.options.entitlements) |_| return true;
|
||||
const cpu_arch = self.base.options.target.cpu.arch;
|
||||
const os_tag = self.base.options.target.os.tag;
|
||||
const abi = self.base.options.target.abi;
|
||||
pub fn requiresCodeSignature(options: *const link.Options) bool {
|
||||
if (options.entitlements) |_| return true;
|
||||
const cpu_arch = options.target.cpu.arch;
|
||||
const os_tag = options.target.os.tag;
|
||||
const abi = options.target.abi;
|
||||
if (cpu_arch == .aarch64 and (os_tag == .macos or abi == .simulator)) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -91,17 +91,8 @@ fn calcLCsSize(gpa: Allocator, options: *const link.Options, ctx: CalcLCsSizeCtx
|
||||
);
|
||||
}
|
||||
// LC_CODE_SIGNATURE
|
||||
{
|
||||
const target = options.target;
|
||||
const requires_codesig = blk: {
|
||||
if (options.entitlements) |_| break :blk true;
|
||||
if (target.cpu.arch == .aarch64 and (target.os.tag == .macos or target.abi == .simulator))
|
||||
break :blk true;
|
||||
break :blk false;
|
||||
};
|
||||
if (requires_codesig) {
|
||||
sizeofcmds += @sizeOf(macho.linkedit_data_command);
|
||||
}
|
||||
if (MachO.requiresCodeSignature(options)) {
|
||||
sizeofcmds += @sizeOf(macho.linkedit_data_command);
|
||||
}
|
||||
|
||||
return @as(u32, @intCast(sizeofcmds));
|
||||
@ -374,3 +365,4 @@ const mem = std.mem;
|
||||
|
||||
const Allocator = mem.Allocator;
|
||||
const Dylib = @import("Dylib.zig");
|
||||
const MachO = @import("../MachO.zig");
|
||||
|
||||
@ -529,7 +529,7 @@ pub fn linkWithZld(
|
||||
}
|
||||
|
||||
// Write code signature padding if required
|
||||
var codesig: ?CodeSignature = if (macho_file.requiresCodeSignature()) blk: {
|
||||
var codesig: ?CodeSignature = if (MachO.requiresCodeSignature(&macho_file.base.options)) blk: {
|
||||
// Preallocate space for the code signature.
|
||||
// We need to do this at this stage so that we have the load commands with proper values
|
||||
// written out to the file.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user