From 2ee221328f1aa1e34a37f38ac8426c1e8e8ec204 Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Wed, 4 Oct 2023 13:12:56 +0200 Subject: [PATCH] elf: test garbage collection of sections --- test/link/elf.zig | 54 ++++++++++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/test/link/elf.zig b/test/link/elf.zig index 6c8e03a21c..8b0db9deba 100644 --- 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 exe = addExecutable(b, opts); + exe.addObject(obj); + exe.link_gc_sections = true; + exe.is_linking_libc = true; + exe.is_linking_libcpp = true; - // const run = exe.run(); - // run.expectStdOutEqual("1 2\n"); - // test_step.dependOn(run.step()); + const run = addRunArtifact(exe); + 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 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; }