aboutsummaryrefslogtreecommitdiff
path: root/src/link/MachO/CodeSignature.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2022-08-04 14:24:00 -0700
committerAndrew Kelley <andrew@ziglang.org>2022-08-04 14:24:00 -0700
commitba70eee8bb81da0d44982a84395aee660635e5ba (patch)
tree40f4ef036ab60572f9b19e94dc84415993ed3fa8 /src/link/MachO/CodeSignature.zig
parenta3045b8abbba896da34a02266f2be89dd6c90ecc (diff)
parent616f65df750f53e6334cc5ed2c8f4b5668d573f2 (diff)
downloadzig-ba70eee8bb81da0d44982a84395aee660635e5ba.tar.gz
zig-ba70eee8bb81da0d44982a84395aee660635e5ba.zip
Merge remote-tracking branch 'origin/master' into llvm15
Diffstat (limited to 'src/link/MachO/CodeSignature.zig')
-rw-r--r--src/link/MachO/CodeSignature.zig12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/link/MachO/CodeSignature.zig b/src/link/MachO/CodeSignature.zig
index fbfd487ce2..530a13dc51 100644
--- a/src/link/MachO/CodeSignature.zig
+++ b/src/link/MachO/CodeSignature.zig
@@ -252,7 +252,7 @@ pub const WriteOpts = struct {
file: fs.File,
exec_seg_base: u64,
exec_seg_limit: u64,
- code_sig_cmd: macho.linkedit_data_command,
+ file_size: u32,
output_mode: std.builtin.OutputMode,
};
@@ -274,10 +274,9 @@ pub fn writeAdhocSignature(
self.code_directory.inner.execSegBase = opts.exec_seg_base;
self.code_directory.inner.execSegLimit = opts.exec_seg_limit;
self.code_directory.inner.execSegFlags = if (opts.output_mode == .Exe) macho.CS_EXECSEG_MAIN_BINARY else 0;
- const file_size = opts.code_sig_cmd.dataoff;
- self.code_directory.inner.codeLimit = file_size;
+ self.code_directory.inner.codeLimit = opts.file_size;
- const total_pages = mem.alignForward(file_size, self.page_size) / self.page_size;
+ const total_pages = mem.alignForward(opts.file_size, self.page_size) / self.page_size;
var buffer = try allocator.alloc(u8, self.page_size);
defer allocator.free(buffer);
@@ -289,7 +288,10 @@ pub fn writeAdhocSignature(
var i: usize = 0;
while (i < total_pages) : (i += 1) {
const fstart = i * self.page_size;
- const fsize = if (fstart + self.page_size > file_size) file_size - fstart else self.page_size;
+ const fsize = if (fstart + self.page_size > opts.file_size)
+ opts.file_size - fstart
+ else
+ self.page_size;
const len = try opts.file.preadAll(buffer, fstart);
assert(fsize <= len);