aboutsummaryrefslogtreecommitdiff
path: root/src/link/MachO.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2020-12-26 21:16:53 +0100
committerJakub Konka <kubkon@jakubkonka.com>2020-12-31 10:19:04 +0100
commit0ff56e8bb14273fa8abe4503855e9f53d699c8cd (patch)
treefe601218cccefa19aaf4b2f4ff427cd8dd35c35d /src/link/MachO.zig
parente1451f92f8e49f844c528386c4463c9b6fc9a0f3 (diff)
downloadzig-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.zig17
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;
},