diff options
| author | Jacob Young <jacobly0@users.noreply.github.com> | 2023-10-31 04:26:57 -0400 |
|---|---|---|
| committer | Jacob Young <jacobly0@users.noreply.github.com> | 2023-10-31 21:37:35 -0400 |
| commit | d890e817610dd75feef55c1f7983190852c622a5 (patch) | |
| tree | 679d13309da35aa957a9d20d28671d9b8673b5a1 /src/link/Plan9.zig | |
| parent | 50cdb65784937965b5871037ff40bc34d8eb14af (diff) | |
| download | zig-d890e817610dd75feef55c1f7983190852c622a5.tar.gz zig-d890e817610dd75feef55c1f7983190852c622a5.zip | |
mem: fix ub in writeInt
Use inline to vastly simplify the exposed API. This allows a
comptime-known endian parameter to be propogated, making extra functions
for a specific endianness completely unnecessary.
Diffstat (limited to 'src/link/Plan9.zig')
| -rw-r--r-- | src/link/Plan9.zig | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/link/Plan9.zig b/src/link/Plan9.zig index 96d2bdf7b4..04c8c9abe7 100644 --- a/src/link/Plan9.zig +++ b/src/link/Plan9.zig @@ -348,7 +348,7 @@ fn putFn(self: *Plan9, decl_index: Module.Decl.Index, out: FnDeclOutput) !void { // every 'z' starts with 0 try a.append(0); // path component value of '/' - try a.writer().writeIntBig(u16, 1); + try a.writer().writeInt(u16, 1, .Big); // getting the full file path var buf: [std.fs.MAX_PATH_BYTES]u8 = undefined; @@ -381,11 +381,11 @@ fn addPathComponents(self: *Plan9, path: []const u8, a: *std.ArrayList(u8)) !voi var it = std.mem.tokenizeScalar(u8, path, sep); while (it.next()) |component| { if (self.file_segments.get(component)) |num| { - try a.writer().writeIntBig(u16, num); + try a.writer().writeInt(u16, num, .Big); } else { self.file_segments_i += 1; try self.file_segments.put(self.base.allocator, component, self.file_segments_i); - try a.writer().writeIntBig(u16, self.file_segments_i); + try a.writer().writeInt(u16, self.file_segments_i, .Big); } } } @@ -607,7 +607,7 @@ pub fn changeLine(l: *std.ArrayList(u8), delta_line: i32) !void { try l.append(toadd); } else if (delta_line != 0) { try l.append(0); - try l.writer().writeIntBig(i32, delta_line); + try l.writer().writeInt(i32, delta_line, .Big); } } @@ -922,7 +922,7 @@ pub fn flushModule(self: *Plan9, comp: *Compilation, prog_node: *std.Progress.No @memcpy(hdr_slice, self.hdr.toU8s()[0..hdr_size]); // write the fat header for 64 bit entry points if (self.sixtyfour_bit) { - mem.writeIntSliceBig(u64, hdr_buf[32..40], self.entry_val.?); + mem.writeInt(u64, hdr_buf[32..40], self.entry_val.?, .Big); } // perform the relocs { @@ -1311,9 +1311,9 @@ pub fn writeSym(self: *Plan9, w: anytype, sym: aout.Sym) !void { // log.debug("write sym{{name: {s}, value: {x}}}", .{ sym.name, sym.value }); if (sym.type == .bad) return; // we don't want to write free'd symbols if (!self.sixtyfour_bit) { - try w.writeIntBig(u32, @as(u32, @intCast(sym.value))); + try w.writeInt(u32, @as(u32, @intCast(sym.value)), .Big); } else { - try w.writeIntBig(u64, sym.value); + try w.writeInt(u64, sym.value, .Big); } try w.writeByte(@intFromEnum(sym.type)); try w.writeAll(sym.name); |
