zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

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:
Msrc/link/Elf.zig | 2+-
Mtest/cases.zig | 32++++++++++++++++++++++++++++++++
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; + \\} + , ""); + } }