aboutsummaryrefslogtreecommitdiff
path: root/src/arch/aarch64/CodeGen.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2022-02-05 17:41:03 +0100
committerJakub Konka <kubkon@jakubkonka.com>2022-02-06 08:42:14 +0100
commit556f0ce5bfb962764bb68d9d9c16765cf9e1b9ba (patch)
treee3ddbc2240c99a089906a10c4c40dcc83a883f17 /src/arch/aarch64/CodeGen.zig
parent04f379dd414184a42412f4497b0573d7612d6730 (diff)
downloadzig-556f0ce5bfb962764bb68d9d9c16765cf9e1b9ba.tar.gz
zig-556f0ce5bfb962764bb68d9d9c16765cf9e1b9ba.zip
stage2: add new Decl subtype, ExternFn
`ExternFn` will contain a maybe-lib-name if it was defined with the `extern` keyword like so ```zig extern "c" fn write(usize, usize, usize) usize; ``` `lib_name` will live as long as `ExternFn` decl does.
Diffstat (limited to 'src/arch/aarch64/CodeGen.zig')
-rw-r--r--src/arch/aarch64/CodeGen.zig11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/arch/aarch64/CodeGen.zig b/src/arch/aarch64/CodeGen.zig
index 6202d2e74f..0292497df7 100644
--- a/src/arch/aarch64/CodeGen.zig
+++ b/src/arch/aarch64/CodeGen.zig
@@ -1574,8 +1574,15 @@ fn airCall(self: *Self, inst: Air.Inst.Index) !void {
.data = .{ .reg = .x30 },
});
} else if (func_value.castTag(.extern_fn)) |func_payload| {
- const decl = func_payload.data;
- const n_strx = try macho_file.addExternFn(mem.sliceTo(decl.name, 0));
+ const extern_fn = func_payload.data;
+ const decl_name = extern_fn.owner_decl.name;
+ if (extern_fn.lib_name) |lib_name| {
+ log.debug("TODO enforce that '{s}' is expected in '{s}' library", .{
+ decl_name,
+ lib_name,
+ });
+ }
+ const n_strx = try macho_file.addExternFn(mem.sliceTo(decl_name, 0));
_ = try self.addInst(.{
.tag = .call_extern,