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:
| M | test/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; }