commit 149bc79486907745c8ffb12a69f65189b26c6dbe (tree)
parent 8fc3a707a44368f3f5c0ded0cc1b7080bf056761
Author: Jacob G-W <jacoblevgw@gmail.com>
Date: Sat, 13 Nov 2021 12:52:17 -0500
add tests for previous commit
Diffstat:
2 files changed, 33 insertions(+), 1 deletion(-)
diff --git a/src/link/Elf.zig b/src/link/Elf.zig
@@ -2604,7 +2604,7 @@ fn addDbgInfoType(self: *Elf, ty: Type, dbg_info_buffer: *std.ArrayList(u8)) !vo
// DW.AT.name, DW.FORM.string
try dbg_info_buffer.writer().print("{}\x00", .{ty});
} else {
- log.err("TODO implement .debug_info for type '{}'", .{ty});
+ log.warn("TODO implement .debug_info for type '{}'", .{ty});
try dbg_info_buffer.append(abbrev_pad1);
}
},
diff --git a/test/cases.zig b/test/cases.zig
@@ -1819,4 +1819,36 @@ pub fn addCases(ctx: *TestContext) !void {
":2:28: error: cannot set address space of local variable 'foo'",
});
}
+ {
+ var case = ctx.exe("issue 10138: callee preserved regs working", linux_x64);
+ case.addCompareOutput(
+ \\pub fn main() void {
+ \\ const fd = open();
+ \\ _ = write(fd, "a", 1);
+ \\ _ = close(fd);
+ \\}
+ \\
+ \\fn open() usize {
+ \\ return 42;
+ \\}
+ \\
+ \\fn write(fd: usize, a: [*]const u8, len: usize) usize {
+ \\ return syscall4(.WRITE, fd, @ptrToInt(a), len);
+ \\}
+ \\
+ \\fn syscall4(n: enum { WRITE }, a: usize, b: usize, c: usize) usize {
+ \\ _ = n;
+ \\ _ = a;
+ \\ _ = b;
+ \\ _ = c;
+ \\ return 23;
+ \\}
+ \\
+ \\fn close(fd: usize) usize {
+ \\ if (fd != 42)
+ \\ unreachable;
+ \\ return 0;
+ \\}
+ , "");
+ }
}