From e4869eeac11eccdbb6cf4d8a4e60a272ca179d55 Mon Sep 17 00:00:00 2001 From: Luuk de Gram Date: Sat, 31 Dec 2022 15:29:02 +0100 Subject: test/link: linker tests for all export cases Adds a linker test case for each possible export case. This means one where no exports are done (i.e. no flags set), when the -dynamic flag is set, and finally when --export= flag(s) are set. --- test/link/wasm/bss/build.zig | 3 +-- test/link/wasm/export/build.zig | 48 +++++++++++++++++++++++++++++++++++++++++ test/link/wasm/export/main.zig | 1 + 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 test/link/wasm/export/build.zig create mode 100644 test/link/wasm/export/main.zig (limited to 'test/link') diff --git a/test/link/wasm/bss/build.zig b/test/link/wasm/bss/build.zig index c9bc1aa106..e234a3f402 100644 --- a/test/link/wasm/bss/build.zig +++ b/test/link/wasm/bss/build.zig @@ -26,8 +26,7 @@ pub fn build(b: *Builder) void { check_lib.checkNext("name memory"); // as per linker specification // since we are importing memory, ensure it's not exported - check_lib.checkStart("Section export"); - check_lib.checkNext("entries 1"); // we're exporting function 'foo' so only 1 entry + check_lib.checkNotPresent("Section export"); // validate the name of the stack pointer check_lib.checkStart("Section custom"); diff --git a/test/link/wasm/export/build.zig b/test/link/wasm/export/build.zig new file mode 100644 index 0000000000..181e77e296 --- /dev/null +++ b/test/link/wasm/export/build.zig @@ -0,0 +1,48 @@ +const std = @import("std"); + +pub fn build(b: *std.build.Builder) void { + const mode = b.standardReleaseOptions(); + + const no_export = b.addSharedLibrary("no-export", "main.zig", .unversioned); + no_export.setTarget(.{ .cpu_arch = .wasm32, .os_tag = .freestanding }); + no_export.setBuildMode(mode); + no_export.use_llvm = false; + no_export.use_lld = false; + + const dynamic_export = b.addSharedLibrary("dynamic", "main.zig", .unversioned); + dynamic_export.setTarget(.{ .cpu_arch = .wasm32, .os_tag = .freestanding }); + dynamic_export.setBuildMode(mode); + dynamic_export.rdynamic = true; + dynamic_export.use_llvm = false; + dynamic_export.use_lld = false; + + const force_export = b.addSharedLibrary("force", "main.zig", .unversioned); + force_export.setTarget(.{ .cpu_arch = .wasm32, .os_tag = .freestanding }); + force_export.setBuildMode(mode); + force_export.export_symbol_names = &.{"foo"}; + force_export.use_llvm = false; + force_export.use_lld = false; + + const check_no_export = no_export.checkObject(.wasm); + check_no_export.checkStart("Section export"); + check_no_export.checkNext("entries 1"); + check_no_export.checkNext("name memory"); + check_no_export.checkNext("kind memory"); + + const check_dynamic_export = dynamic_export.checkObject(.wasm); + check_dynamic_export.checkStart("Section export"); + check_dynamic_export.checkNext("entries 2"); + check_dynamic_export.checkNext("name foo"); + check_dynamic_export.checkNext("kind function"); + + const check_force_export = force_export.checkObject(.wasm); + check_force_export.checkStart("Section export"); + check_force_export.checkNext("entries 2"); + check_force_export.checkNext("name foo"); + check_force_export.checkNext("kind function"); + + const test_step = b.step("test", "Run linker test"); + test_step.dependOn(&check_no_export.step); + test_step.dependOn(&check_dynamic_export.step); + test_step.dependOn(&check_force_export.step); +} diff --git a/test/link/wasm/export/main.zig b/test/link/wasm/export/main.zig new file mode 100644 index 0000000000..0e416dbf18 --- /dev/null +++ b/test/link/wasm/export/main.zig @@ -0,0 +1 @@ +export fn foo() void {} -- cgit v1.2.3