diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2020-12-01 17:49:38 +0100 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2020-12-01 18:03:04 +0100 |
| commit | abb697e751cb0febf4e5e26f0190c01d7c5fd922 (patch) | |
| tree | 90e863418f37e9333b11cc9bdd788b36f4db06ba /src/link/MachO/Parser.zig | |
| parent | 1f7fb560ab5a3a82af24ab7abe11dce8f877c7fe (diff) | |
| download | zig-abb697e751cb0febf4e5e26f0190c01d7c5fd922.tar.gz zig-abb697e751cb0febf4e5e26f0190c01d7c5fd922.zip | |
macho: unify code signature between stage1 and stage2
Diffstat (limited to 'src/link/MachO/Parser.zig')
| -rw-r--r-- | src/link/MachO/Parser.zig | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/link/MachO/Parser.zig b/src/link/MachO/Parser.zig index 2f2e74933e..de2a466f1f 100644 --- a/src/link/MachO/Parser.zig +++ b/src/link/MachO/Parser.zig @@ -18,9 +18,9 @@ header: ?macho.mach_header_64 = null, /// Load commands load_commands: std.ArrayListUnmanaged(LoadCommand) = .{}, -text_cmd_index: ?usize = null, +text_cmd_index: ?u16 = null, -linkedit_cmd_index: ?usize = null, +linkedit_cmd_index: ?u16 = null, linkedit_cmd_offset: ?u64 = null, code_sig_cmd_offset: ?u64 = null, @@ -28,9 +28,7 @@ code_sig_cmd_offset: ?u64 = null, end_pos: ?u64 = null, pub fn init(allocator: *Allocator) Parser { - return .{ - .allocator = allocator, - }; + return .{ .allocator = allocator }; } pub fn parse(self: *Parser, reader: anytype) !void { @@ -46,10 +44,10 @@ pub fn parse(self: *Parser, reader: anytype) !void { switch (cmd.cmd()) { macho.LC_SEGMENT_64 => { const x = cmd.Segment; - if (mem.eql(u8, mem.trimRight(u8, x.inner.segname[0..], &[_]u8{0}), "__LINKEDIT")) { + if (mem.eql(u8, parseName(&x.inner.segname), "__LINKEDIT")) { self.linkedit_cmd_index = i; self.linkedit_cmd_offset = off; - } else if (mem.eql(u8, mem.trimRight(u8, x.inner.segname[0..], &[_]u8{0}), "__TEXT")) { + } else if (mem.eql(u8, parseName(&x.inner.segname), "__TEXT")) { self.text_cmd_index = i; } }, @@ -78,3 +76,7 @@ pub fn deinit(self: *Parser) void { } self.load_commands.deinit(self.allocator); } + +fn parseName(name: *const [16]u8) []const u8 { + return mem.trimRight(u8, name.*[0..], &[_]u8{0}); +} |
