diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2020-12-26 21:16:53 +0100 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2020-12-31 10:19:04 +0100 |
| commit | 0ff56e8bb14273fa8abe4503855e9f53d699c8cd (patch) | |
| tree | fe601218cccefa19aaf4b2f4ff427cd8dd35c35d /src/link/MachO.zig | |
| parent | e1451f92f8e49f844c528386c4463c9b6fc9a0f3 (diff) | |
| download | zig-0ff56e8bb14273fa8abe4503855e9f53d699c8cd.tar.gz zig-0ff56e8bb14273fa8abe4503855e9f53d699c8cd.zip | |
macho: add and populate UUID load command
Diffstat (limited to 'src/link/MachO.zig')
| -rw-r--r-- | src/link/MachO.zig | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/link/MachO.zig b/src/link/MachO.zig index 04702807b7..5f35b26f22 100644 --- a/src/link/MachO.zig +++ b/src/link/MachO.zig @@ -74,6 +74,8 @@ main_cmd_index: ?u16 = null, version_min_cmd_index: ?u16 = null, /// Source version source_version_cmd_index: ?u16 = null, +/// UUID load command +uuid_cmd_index: ?u16 = null, /// Code signature code_signature_cmd_index: ?u16 = null, @@ -1609,6 +1611,18 @@ pub fn populateMissingMetadata(self: *MachO) !void { self.header_dirty = true; self.load_commands_dirty = true; } + if (self.uuid_cmd_index == null) { + self.uuid_cmd_index = @intCast(u16, self.load_commands.items.len); + var uuid_cmd: macho.uuid_command = .{ + .cmd = macho.LC_UUID, + .cmdsize = @sizeOf(macho.uuid_command), + .uuid = undefined, + }; + std.crypto.random.bytes(&uuid_cmd.uuid); + try self.load_commands.append(self.base.allocator, .{ .Uuid = uuid_cmd }); + self.header_dirty = true; + self.load_commands_dirty = true; + } if (self.code_signature_cmd_index == null) { self.code_signature_cmd_index = @intCast(u16, self.load_commands.items.len); try self.load_commands.append(self.base.allocator, .{ @@ -2347,6 +2361,9 @@ fn parseFromFile(self: *MachO, file: fs.File) !void { macho.LC_SOURCE_VERSION => { self.source_version_cmd_index = i; }, + macho.LC_UUID => { + self.uuid_cmd_index = i; + }, macho.LC_MAIN => { self.main_cmd_index = i; }, |
