diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2022-02-05 17:41:03 +0100 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2022-02-06 08:42:14 +0100 |
| commit | 556f0ce5bfb962764bb68d9d9c16765cf9e1b9ba (patch) | |
| tree | e3ddbc2240c99a089906a10c4c40dcc83a883f17 /src/arch/aarch64/CodeGen.zig | |
| parent | 04f379dd414184a42412f4497b0573d7612d6730 (diff) | |
| download | zig-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.zig | 11 |
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, |
