authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2021-11-18 21:41:44+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2021-11-18 21:41:44+01:00
log6cf8a49bb0e5a6df3154aa7c41602ef21057ce50
treea9d07fddfb602e5abc8d11ef434e54d80002b9bd
parent7747bf07c73a174dbd8c976dca8a94114c49349d

macho: sync .variable decl handling with elf linker


1 files changed, 9 insertions(+), 2 deletions(-)

src/link/MachO.zig+9-2
...@@ -3235,6 +3235,12 @@ pub fn updateDecl(self: *MachO, module: *Module, decl: *Module.Decl) !void {...@@ -3235,6 +3235,12 @@ pub fn updateDecl(self: *MachO, module: *Module, decl: *Module.Decl) !void {
3235 if (decl.val.tag() == .extern_fn) {3235 if (decl.val.tag() == .extern_fn) {
3236 return; // TODO Should we do more when front-end analyzed extern decl?3236 return; // TODO Should we do more when front-end analyzed extern decl?
3237 }3237 }
3238 if (decl.val.castTag(.variable)) |payload| {
3239 const variable = payload.data;
3240 if (variable.is_extern) {
3241 return; // TODO Should we do more when front-end analyzed extern decl?
3242 }
3243 }
32383244
3239 var code_buffer = std.ArrayList(u8).init(self.base.allocator);3245 var code_buffer = std.ArrayList(u8).init(self.base.allocator);
3240 defer code_buffer.deinit();3246 defer code_buffer.deinit();
...@@ -3258,10 +3264,11 @@ pub fn updateDecl(self: *MachO, module: *Module, decl: *Module.Decl) !void {...@@ -3258,10 +3264,11 @@ pub fn updateDecl(self: *MachO, module: *Module, decl: *Module.Decl) !void {
32583264
3259 self.active_decl = decl;3265 self.active_decl = decl;
32603266
3267 const decl_val = if (decl.val.castTag(.variable)) |payload| payload.data.init else decl.val;
3261 const res = if (debug_buffers) |dbg|3268 const res = if (debug_buffers) |dbg|
3262 try codegen.generateSymbol(&self.base, decl.srcLoc(), .{3269 try codegen.generateSymbol(&self.base, decl.srcLoc(), .{
3263 .ty = decl.ty,3270 .ty = decl.ty,
3264 .val = decl.val,3271 .val = decl_val,
3265 }, &code_buffer, .{3272 }, &code_buffer, .{
3266 .dwarf = .{3273 .dwarf = .{
3267 .dbg_line = &dbg.dbg_line_buffer,3274 .dbg_line = &dbg.dbg_line_buffer,
...@@ -3272,7 +3279,7 @@ pub fn updateDecl(self: *MachO, module: *Module, decl: *Module.Decl) !void {...@@ -3272,7 +3279,7 @@ pub fn updateDecl(self: *MachO, module: *Module, decl: *Module.Decl) !void {
3272 else3279 else
3273 try codegen.generateSymbol(&self.base, decl.srcLoc(), .{3280 try codegen.generateSymbol(&self.base, decl.srcLoc(), .{
3274 .ty = decl.ty,3281 .ty = decl.ty,
3275 .val = decl.val,3282 .val = decl_val,
3276 }, &code_buffer, .none);3283 }, &code_buffer, .none);
32773284
3278 const code = blk: {3285 const code = blk: {