Skip to content

Commit c39d7a6

Browse files
committed
fix exported variable not respecting linkage
1 parent 2696c8b commit c39d7a6

File tree

5 files changed

+47
-0
lines changed

5 files changed

+47
-0
lines changed

src/ir.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17841,6 +17841,7 @@ static IrInstGen *ir_analyze_instruction_export(IrAnalyze *ira, IrInstSrcExport
1784117841
}
1784217842
} break;
1784317843
case ZigTypeIdInt:
17844+
want_var_export = true;
1784417845
break;
1784517846
case ZigTypeIdVoid:
1784617847
case ZigTypeIdBool:
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
const Builder = @import("std").build.Builder;
2+
3+
pub fn build(b: *Builder) void {
4+
const mode = b.standardReleaseOptions();
5+
const target = b.standardTargetOptions(null);
6+
7+
const obj1 = b.addStaticLibrary("obj1", "obj1.zig");
8+
obj1.setBuildMode(mode);
9+
obj1.setTheTarget(target);
10+
11+
const obj2 = b.addStaticLibrary("obj2", "obj2.zig");
12+
obj2.setBuildMode(mode);
13+
obj2.setTheTarget(target);
14+
15+
const main = b.addTest("main.zig");
16+
main.setBuildMode(mode);
17+
main.setTheTarget(target);
18+
main.linkLibrary(obj1);
19+
main.linkLibrary(obj2);
20+
21+
const test_step = b.step("test", "Test it");
22+
test_step.dependOn(&main.step);
23+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
const std = @import("std");
2+
3+
extern var obj1_integer: usize;
4+
extern var obj2_integer: usize;
5+
6+
test "access the external integers" {
7+
std.testing.expect(obj1_integer == 421);
8+
std.testing.expect(obj2_integer == 422);
9+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
extern var internal_integer: usize = 1;
2+
extern var obj1_integer: usize = 421;
3+
4+
comptime {
5+
@export(internal_integer, .{ .name = "internal_integer", .linkage = .Internal });
6+
@export(obj1_integer, .{ .name = "obj1_integer", .linkage = .Strong });
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
extern var internal_integer: usize = 2;
2+
extern var obj2_integer: usize = 422;
3+
4+
comptime {
5+
@export(internal_integer, .{ .name = "internal_integer", .linkage = .Internal });
6+
@export(obj2_integer, .{ .name = "obj2_integer", .linkage = .Strong });
7+
}

0 commit comments

Comments
 (0)