Commit f32681033d

Jakub Konka <kubkon@jakubkonka.com>
2020-12-18 17:47:03
macho: auto-coerce to slice
1 parent 99578e8
Changed files (4)
src/link/MachO/CodeSignature.zig
@@ -126,7 +126,7 @@ pub fn calcAdhocSignature(
 
         Sha256.hash(buffer[0..fsize], &hash, .{});
 
-        cdir.data.appendSliceAssumeCapacity(hash[0..]);
+        cdir.data.appendSliceAssumeCapacity(&hash);
         cdir.inner.nCodeSlots += 1;
     }
 
@@ -174,10 +174,10 @@ test "CodeSignature header" {
     defer code_sig.deinit();
 
     var buffer: [@sizeOf(macho.SuperBlob)]u8 = undefined;
-    code_sig.writeHeader(buffer[0..]);
+    code_sig.writeHeader(&buffer);
 
     const expected = &[_]u8{ 0xfa, 0xde, 0x0c, 0xc0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0x0 };
-    testing.expect(mem.eql(u8, expected[0..], buffer[0..]));
+    testing.expect(mem.eql(u8, expected, &buffer));
 }
 
 pub fn calcCodeSignaturePadding(id: []const u8, file_size: u64) u32 {
src/link/MachO/commands.zig
@@ -26,9 +26,9 @@ pub const LoadCommand = union(enum) {
         const header = try reader.readStruct(macho.load_command);
         var buffer = try allocator.alloc(u8, header.cmdsize);
         defer allocator.free(buffer);
-        mem.copy(u8, buffer[0..], mem.asBytes(&header));
+        mem.copy(u8, buffer, mem.asBytes(&header));
         try reader.readNoEof(buffer[@sizeOf(macho.load_command)..]);
-        var stream = io.fixedBufferStream(buffer[0..]);
+        var stream = io.fixedBufferStream(buffer);
 
         return switch (header.cmd) {
             macho.LC_SEGMENT_64 => LoadCommand{
@@ -216,7 +216,7 @@ pub fn GenericCommandWithData(comptime Cmd: type) type {
             const inner = try reader.readStruct(Cmd);
             var data = try allocator.alloc(u8, inner.cmdsize - @sizeOf(Cmd));
             errdefer allocator.free(data);
-            try reader.readNoEof(data[0..]);
+            try reader.readNoEof(data);
             return Self{
                 .inner = inner,
                 .data = data,
@@ -309,10 +309,10 @@ test "read-write segment command" {
         .reserved3 = 0,
     });
     defer cmd.deinit(gpa);
-    try testRead(gpa, in_buffer[0..], LoadCommand{ .Segment = cmd });
+    try testRead(gpa, in_buffer, LoadCommand{ .Segment = cmd });
 
     var out_buffer: [in_buffer.len]u8 = undefined;
-    try testWrite(out_buffer[0..], LoadCommand{ .Segment = cmd }, in_buffer[0..]);
+    try testWrite(&out_buffer, LoadCommand{ .Segment = cmd }, in_buffer);
 }
 
 test "read-write generic command with data" {
@@ -348,10 +348,10 @@ test "read-write generic command with data" {
     cmd.data[5] = 0x0;
     cmd.data[6] = 0x0;
     cmd.data[7] = 0x0;
-    try testRead(gpa, in_buffer[0..], LoadCommand{ .Dylib = cmd });
+    try testRead(gpa, in_buffer, LoadCommand{ .Dylib = cmd });
 
     var out_buffer: [in_buffer.len]u8 = undefined;
-    try testWrite(out_buffer[0..], LoadCommand{ .Dylib = cmd }, in_buffer[0..]);
+    try testWrite(&out_buffer, LoadCommand{ .Dylib = cmd }, in_buffer);
 }
 
 test "read-write C struct command" {
@@ -368,8 +368,8 @@ test "read-write C struct command" {
         .entryoff = 16644,
         .stacksize = 0,
     };
-    try testRead(gpa, in_buffer[0..], LoadCommand{ .Main = cmd });
+    try testRead(gpa, in_buffer, LoadCommand{ .Main = cmd });
 
     var out_buffer: [in_buffer.len]u8 = undefined;
-    try testWrite(out_buffer[0..], LoadCommand{ .Main = cmd }, in_buffer[0..]);
+    try testWrite(&out_buffer, LoadCommand{ .Main = cmd }, in_buffer);
 }
src/link/MachO/Trie.zig
@@ -531,14 +531,14 @@ test "write Trie to a byte stream" {
     {
         const nwritten = try trie.write(stream.writer());
         testing.expect(nwritten == trie.size);
-        testing.expect(mem.eql(u8, buffer, exp_buffer[0..]));
+        testing.expect(mem.eql(u8, buffer, &exp_buffer));
     }
     {
         // Writing finalized trie again should yield the same result.
         try stream.seekTo(0);
         const nwritten = try trie.write(stream.writer());
         testing.expect(nwritten == trie.size);
-        testing.expect(mem.eql(u8, buffer, exp_buffer[0..]));
+        testing.expect(mem.eql(u8, buffer, &exp_buffer));
     }
 }
 
@@ -556,7 +556,7 @@ test "parse Trie from byte stream" {
         0x3, 0x0, 0x80, 0x20, 0x0, // terminal node
     };
 
-    var in_stream = std.io.fixedBufferStream(in_buffer[0..]);
+    var in_stream = std.io.fixedBufferStream(&in_buffer);
     var trie = Trie.init(gpa);
     defer trie.deinit();
     const nread = try trie.read(in_stream.reader());
@@ -571,5 +571,5 @@ test "parse Trie from byte stream" {
     const nwritten = try trie.write(out_stream.writer());
 
     testing.expect(nwritten == trie.size);
-    testing.expect(mem.eql(u8, in_buffer[0..], out_buffer));
+    testing.expect(mem.eql(u8, &in_buffer, out_buffer));
 }
src/link/MachO.zig
@@ -1674,7 +1674,7 @@ fn allocateTextBlock(self: *MachO, text_block: *TextBlock, new_block_size: u64,
 pub fn makeStaticString(comptime bytes: []const u8) [16]u8 {
     var buf = [_]u8{0} ** 16;
     if (bytes.len > buf.len) @compileError("string too long; max 16 bytes");
-    mem.copy(u8, buf[0..], bytes);
+    mem.copy(u8, &buf, bytes);
     return buf;
 }
 
@@ -2048,18 +2048,18 @@ fn parseFromFile(self: *MachO, file: fs.File) !void {
         switch (cmd.cmd()) {
             macho.LC_SEGMENT_64 => {
                 const x = cmd.Segment;
-                if (parseAndCmpName(x.inner.segname[0..], "__PAGEZERO")) {
+                if (parseAndCmpName(&x.inner.segname, "__PAGEZERO")) {
                     self.pagezero_segment_cmd_index = i;
-                } else if (parseAndCmpName(x.inner.segname[0..], "__LINKEDIT")) {
+                } else if (parseAndCmpName(&x.inner.segname, "__LINKEDIT")) {
                     self.linkedit_segment_cmd_index = i;
-                } else if (parseAndCmpName(x.inner.segname[0..], "__TEXT")) {
+                } else if (parseAndCmpName(&x.inner.segname, "__TEXT")) {
                     self.text_segment_cmd_index = i;
                     for (x.sections.items) |sect, j| {
-                        if (parseAndCmpName(sect.sectname[0..], "__text")) {
+                        if (parseAndCmpName(&sect.sectname, "__text")) {
                             self.text_section_index = @intCast(u16, j);
                         }
                     }
-                } else if (parseAndCmpName(x.inner.segname[0..], "__DATA")) {
+                } else if (parseAndCmpName(&x.inner.segname, "__DATA")) {
                     self.data_segment_cmd_index = i;
                 }
             },
@@ -2109,7 +2109,7 @@ fn parseFromFile(self: *MachO, file: fs.File) !void {
 }
 
 fn parseAndCmpName(name: []const u8, needle: []const u8) bool {
-    const len = mem.indexOfScalar(u8, name[0..], @as(u8, 0)) orelse name.len;
+    const len = mem.indexOfScalar(u8, name, @as(u8, 0)) orelse name.len;
     return mem.eql(u8, name[0..len], needle);
 }