zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit fda75f53fa19ed561a8fc0d7d5ed0e6a26ee3b1d (tree)
parent 3beef5a94f0bb15e39dff7c817c6c98f2b87010e
Author: Luuk de Gram <luuk@degram.dev>
Date:   Sun,  2 Oct 2022 18:39:47 +0200

test/link: Add linker test for producers section

This also turns off non-debug modes for the bss linker tests for
Wasm. This is done as it's not required to guarantee to zero out
the bss section for non-debug modes.

Diffstat:
Mtest/link.zig | 7++++++-
Atest/link/wasm/producers/build.zig | 36++++++++++++++++++++++++++++++++++++
Atest/link/wasm/producers/lib.zig | 1+
3 files changed, 43 insertions(+), 1 deletion(-)

diff --git a/test/link.zig b/test/link.zig @@ -34,7 +34,7 @@ fn addWasmCases(cases: *tests.StandaloneContext) void { }); cases.addBuildFile("test/link/wasm/bss/build.zig", .{ - .build_modes = true, + .build_modes = false, .requires_stage2 = true, }); @@ -44,6 +44,11 @@ fn addWasmCases(cases: *tests.StandaloneContext) void { .use_emulation = true, }); + cases.addBuildFile("test/link/wasm/producers/build.zig", .{ + .build_modes = true, + .requires_stage2 = true, + }); + cases.addBuildFile("test/link/wasm/segments/build.zig", .{ .build_modes = true, .requires_stage2 = true, diff --git a/test/link/wasm/producers/build.zig b/test/link/wasm/producers/build.zig @@ -0,0 +1,36 @@ +const std = @import("std"); +const builtin = @import("builtin"); +const Builder = std.build.Builder; + +pub fn build(b: *Builder) void { + const mode = b.standardReleaseOptions(); + + const test_step = b.step("test", "Test"); + test_step.dependOn(b.getInstallStep()); + + const lib = b.addSharedLibrary("lib", "lib.zig", .unversioned); + lib.setBuildMode(mode); + lib.setTarget(.{ .cpu_arch = .wasm32, .os_tag = .freestanding }); + lib.use_llvm = false; + lib.use_stage1 = false; + lib.use_lld = false; + lib.install(); + + const zig_version = builtin.zig_version; + var version_buf: [100]u8 = undefined; + const version_fmt = std.fmt.bufPrint(&version_buf, "version {}", .{zig_version}) catch unreachable; + + const check_lib = lib.checkObject(.wasm); + check_lib.checkStart("name producers"); + check_lib.checkNext("fields 2"); + check_lib.checkNext("field_name language"); + check_lib.checkNext("values 1"); + check_lib.checkNext("value_name Zig"); + check_lib.checkNext(version_fmt); + check_lib.checkNext("field_name processed-by"); + check_lib.checkNext("values 1"); + check_lib.checkNext("value_name Zig"); + check_lib.checkNext(version_fmt); + + test_step.dependOn(&check_lib.step); +} diff --git a/test/link/wasm/producers/lib.zig b/test/link/wasm/producers/lib.zig @@ -0,0 +1 @@ +export fn foo() void {}