diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2021-11-18 21:41:44 +0100 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2021-11-18 21:41:44 +0100 |
| commit | 6cf8a49bb0e5a6df3154aa7c41602ef21057ce50 (patch) | |
| tree | a9d07fddfb602e5abc8d11ef434e54d80002b9bd /src | |
| parent | 7747bf07c73a174dbd8c976dca8a94114c49349d (diff) | |
| download | zig-6cf8a49bb0e5a6df3154aa7c41602ef21057ce50.tar.gz zig-6cf8a49bb0e5a6df3154aa7c41602ef21057ce50.zip | |
macho: sync .variable decl handling with elf linker
Diffstat (limited to 'src')
| -rw-r--r-- | src/link/MachO.zig | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/link/MachO.zig b/src/link/MachO.zig index 5484b9ccfb..20ee1ede62 100644 --- a/src/link/MachO.zig +++ b/src/link/MachO.zig @@ -3235,6 +3235,12 @@ pub fn updateDecl(self: *MachO, module: *Module, decl: *Module.Decl) !void { if (decl.val.tag() == .extern_fn) { return; // TODO Should we do more when front-end analyzed extern decl? } + if (decl.val.castTag(.variable)) |payload| { + const variable = payload.data; + if (variable.is_extern) { + return; // TODO Should we do more when front-end analyzed extern decl? + } + } var code_buffer = std.ArrayList(u8).init(self.base.allocator); defer code_buffer.deinit(); @@ -3258,10 +3264,11 @@ pub fn updateDecl(self: *MachO, module: *Module, decl: *Module.Decl) !void { self.active_decl = decl; + const decl_val = if (decl.val.castTag(.variable)) |payload| payload.data.init else decl.val; const res = if (debug_buffers) |dbg| try codegen.generateSymbol(&self.base, decl.srcLoc(), .{ .ty = decl.ty, - .val = decl.val, + .val = decl_val, }, &code_buffer, .{ .dwarf = .{ .dbg_line = &dbg.dbg_line_buffer, @@ -3272,7 +3279,7 @@ pub fn updateDecl(self: *MachO, module: *Module, decl: *Module.Decl) !void { else try codegen.generateSymbol(&self.base, decl.srcLoc(), .{ .ty = decl.ty, - .val = decl.val, + .val = decl_val, }, &code_buffer, .none); const code = blk: { |
