zig

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

commit 2ee221328f1aa1e34a37f38ac8426c1e8e8ec204 (tree)
parent f1b9c365f2bcf4e2e00e221d34f43bb343367c4d
Author: Jakub Konka <kubkon@jakubkonka.com>
Date:   Wed,  4 Oct 2023 13:12:56 +0200

elf: test garbage collection of sections

Diffstat:
Mtest/link/elf.zig | 58++++++++++++++++++++++++++++++----------------------------
1 file changed, 30 insertions(+), 28 deletions(-)

diff --git a/test/link/elf.zig b/test/link/elf.zig @@ -94,34 +94,36 @@ fn testGcSections(b: *Build, opts: Options) *Step { test_step.dependOn(&check.step); } - // { - // const exe = cc(b, opts); - // exe.addFileSource(obj_out.file); - // exe.addArg("-Wl,-gc-sections"); - - // const run = exe.run(); - // run.expectStdOutEqual("1 2\n"); - // test_step.dependOn(run.step()); - - // const check = exe.check(); - // check.checkInSymtab(); - // check.checkContains("live_var1"); - // check.checkInSymtab(); - // check.checkContains("live_var2"); - // check.checkInSymtab(); - // check.checkNotPresent("dead_var1"); - // check.checkInSymtab(); - // check.checkNotPresent("dead_var2"); - // check.checkInSymtab(); - // check.checkContains("live_fn1"); - // check.checkInSymtab(); - // check.checkContains("live_fn2"); - // check.checkInSymtab(); - // check.checkNotPresent("dead_fn1"); - // check.checkInSymtab(); - // check.checkNotPresent("dead_fn2"); - // test_step.dependOn(&check.step); - // } + { + const exe = addExecutable(b, opts); + exe.addObject(obj); + exe.link_gc_sections = true; + exe.is_linking_libc = true; + exe.is_linking_libcpp = true; + + const run = addRunArtifact(exe); + run.expectStdOutEqual("1 2\n"); + test_step.dependOn(&run.step); + + const check = exe.checkObject(); + check.checkInSymtab(); + check.checkContains("live_var1"); + check.checkInSymtab(); + check.checkContains("live_var2"); + check.checkInSymtab(); + check.checkNotPresent("dead_var1"); + check.checkInSymtab(); + check.checkNotPresent("dead_var2"); + check.checkInSymtab(); + check.checkContains("live_fn1"); + check.checkInSymtab(); + check.checkContains("live_fn2"); + check.checkInSymtab(); + check.checkNotPresent("dead_fn1"); + check.checkInSymtab(); + check.checkNotPresent("dead_fn2"); + test_step.dependOn(&check.step); + } return test_step; }