diff options
| author | Luuk de Gram <luuk@degram.dev> | 2022-08-26 17:29:43 +0200 |
|---|---|---|
| committer | Luuk de Gram <luuk@degram.dev> | 2022-08-30 18:32:08 +0200 |
| commit | 8627858bbc2fee848e2f3e3ca64dc944f39591e5 (patch) | |
| tree | b4281f9734c65855a9a3f7eb50f1b44a0ef23088 /test | |
| parent | 4f72ac265acac682541f170a1189a06350009431 (diff) | |
| download | zig-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.zig | 6 | ||||
| -rw-r--r-- | test/link/wasm/extern/build.zig | 17 | ||||
| -rw-r--r-- | test/link/wasm/extern/foo.c | 1 | ||||
| -rw-r--r-- | test/link/wasm/extern/main.zig | 8 |
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 {}; +} |
