aboutsummaryrefslogtreecommitdiff
path: root/src/link/Plan9.zig
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2023-10-31 04:26:57 -0400
committerJacob Young <jacobly0@users.noreply.github.com>2023-10-31 21:37:35 -0400
commitd890e817610dd75feef55c1f7983190852c622a5 (patch)
tree679d13309da35aa957a9d20d28671d9b8673b5a1 /src/link/Plan9.zig
parent50cdb65784937965b5871037ff40bc34d8eb14af (diff)
downloadzig-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.zig14
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);