authorgravatar for luuk@degram.devLuuk de Gram <luuk@degram.dev> 2022-10-02 18:39:47+02:00
committergravatar for luuk@degram.devLuuk de Gram <luuk@degram.dev> 2022-10-08 09:43:40+02:00
logfda75f53fa19ed561a8fc0d7d5ed0e6a26ee3b1d
treeffb6ffb6bf9a92a01c13a232dcdee9211f4be6c1
parent3beef5a94f0bb15e39dff7c817c6c98f2b87010e
signaturelock-open Commit is signed but in an unrecognized format.

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.

3 files changed, 43 insertions(+), 1 deletions(-)

test/link.zig+6-1
...@@ -34,7 +34,7 @@ fn addWasmCases(cases: *tests.StandaloneContext) void {...@@ -34,7 +34,7 @@ fn addWasmCases(cases: *tests.StandaloneContext) void {
34 });34 });
3535
36 cases.addBuildFile("test/link/wasm/bss/build.zig", .{36 cases.addBuildFile("test/link/wasm/bss/build.zig", .{
37 .build_modes = true,37 .build_modes = false,
38 .requires_stage2 = true,38 .requires_stage2 = true,
39 });39 });
4040
...@@ -44,6 +44,11 @@ fn addWasmCases(cases: *tests.StandaloneContext) void {...@@ -44,6 +44,11 @@ fn addWasmCases(cases: *tests.StandaloneContext) void {
44 .use_emulation = true,44 .use_emulation = true,
45 });45 });
4646
47 cases.addBuildFile("test/link/wasm/producers/build.zig", .{
48 .build_modes = true,
49 .requires_stage2 = true,
50 });
51
47 cases.addBuildFile("test/link/wasm/segments/build.zig", .{52 cases.addBuildFile("test/link/wasm/segments/build.zig", .{
48 .build_modes = true,53 .build_modes = true,
49 .requires_stage2 = true,54 .requires_stage2 = true,
test/link/wasm/producers/build.zig created+36
...@@ -0,0 +1,36 @@
1const std = @import("std");
2const builtin = @import("builtin");
3const Builder = std.build.Builder;
4
5pub fn build(b: *Builder) void {
6 const mode = b.standardReleaseOptions();
7
8 const test_step = b.step("test", "Test");
9 test_step.dependOn(b.getInstallStep());
10
11 const lib = b.addSharedLibrary("lib", "lib.zig", .unversioned);
12 lib.setBuildMode(mode);
13 lib.setTarget(.{ .cpu_arch = .wasm32, .os_tag = .freestanding });
14 lib.use_llvm = false;
15 lib.use_stage1 = false;
16 lib.use_lld = false;
17 lib.install();
18
19 const zig_version = builtin.zig_version;
20 var version_buf: [100]u8 = undefined;
21 const version_fmt = std.fmt.bufPrint(&version_buf, "version {}", .{zig_version}) catch unreachable;
22
23 const check_lib = lib.checkObject(.wasm);
24 check_lib.checkStart("name producers");
25 check_lib.checkNext("fields 2");
26 check_lib.checkNext("field_name language");
27 check_lib.checkNext("values 1");
28 check_lib.checkNext("value_name Zig");
29 check_lib.checkNext(version_fmt);
30 check_lib.checkNext("field_name processed-by");
31 check_lib.checkNext("values 1");
32 check_lib.checkNext("value_name Zig");
33 check_lib.checkNext(version_fmt);
34
35 test_step.dependOn(&check_lib.step);
36}
test/link/wasm/producers/lib.zig created+1
...@@ -0,0 +1 @@
1export fn foo() void {}