aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorLuuk de Gram <luuk@degram.dev>2022-08-26 17:29:43 +0200
committerLuuk de Gram <luuk@degram.dev>2022-08-30 18:32:08 +0200
commit8627858bbc2fee848e2f3e3ca64dc944f39591e5 (patch)
treeb4281f9734c65855a9a3f7eb50f1b44a0ef23088 /test
parent4f72ac265acac682541f170a1189a06350009431 (diff)
downloadzig-8627858bbc2fee848e2f3e3ca64dc944f39591e5.tar.gz
zig-8627858bbc2fee848e2f3e3ca64dc944f39591e5.zip
test/link: add test for extern resolution
Adds a linker tests to verify extern/undefined symbols representing non-functions are being resolved correctly.
Diffstat (limited to 'test')
-rw-r--r--test/link.zig6
-rw-r--r--test/link/wasm/extern/build.zig17
-rw-r--r--test/link/wasm/extern/foo.c1
-rw-r--r--test/link/wasm/extern/main.zig8
4 files changed, 32 insertions, 0 deletions
diff --git a/test/link.zig b/test/link.zig
index 215a0511fc..b68353122c 100644
--- a/test/link.zig
+++ b/test/link.zig
@@ -52,6 +52,12 @@ fn addWasmCases(cases: *tests.StandaloneContext) void {
.build_modes = true,
.requires_stage2 = true,
});
+
+ cases.addBuildFile("test/link/wasm/extern/build.zig", .{
+ .build_modes = true,
+ .requires_stage2 = true,
+ .use_emulation = true,
+ });
}
fn addMachOCases(cases: *tests.StandaloneContext) void {
diff --git a/test/link/wasm/extern/build.zig b/test/link/wasm/extern/build.zig
new file mode 100644
index 0000000000..88cce88d98
--- /dev/null
+++ b/test/link/wasm/extern/build.zig
@@ -0,0 +1,17 @@
+const std = @import("std");
+
+pub fn build(b: *std.build.Builder) void {
+ const mode = b.standardReleaseOptions();
+ const exe = b.addExecutable("extern", "main.zig");
+ exe.setTarget(.{ .cpu_arch = .wasm32, .os_tag = .wasi });
+ exe.setBuildMode(mode);
+ exe.addCSourceFile("foo.c", &.{});
+ exe.use_llvm = false;
+ exe.use_lld = false;
+
+ const run = exe.runEmulatable();
+ run.expectStdOutEqual("Result: 30");
+
+ const test_step = b.step("test", "Run linker test");
+ test_step.dependOn(&run.step);
+}
diff --git a/test/link/wasm/extern/foo.c b/test/link/wasm/extern/foo.c
new file mode 100644
index 0000000000..0dafd7e112
--- /dev/null
+++ b/test/link/wasm/extern/foo.c
@@ -0,0 +1 @@
+int foo = 30;
diff --git a/test/link/wasm/extern/main.zig b/test/link/wasm/extern/main.zig
new file mode 100644
index 0000000000..b9fa1226eb
--- /dev/null
+++ b/test/link/wasm/extern/main.zig
@@ -0,0 +1,8 @@
+const std = @import("std");
+
+extern const foo: u32;
+
+pub fn main() void {
+ const std_out = std.io.getStdOut();
+ std_out.writer().print("Result: {d}", .{foo}) catch {};
+}