authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2023-10-04 13:12:56+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2023-10-16 19:33:04+02:00
log2ee221328f1aa1e34a37f38ac8426c1e8e8ec204
treeb41ad9938bcca80f9beef16d35a9460b6ef4e870
parentf1b9c365f2bcf4e2e00e221d34f43bb343367c4d

elf: test garbage collection of sections


1 files changed, 30 insertions(+), 28 deletions(-)

test/link/elf.zig+30-28
......@@ -94,34 +94,36 @@ fn testGcSections(b: *Build, opts: Options) *Step {
9494 test_step.dependOn(&check.step);
9595 }
9696
97 // {
98 // const exe = cc(b, opts);
99 // exe.addFileSource(obj_out.file);
100 // exe.addArg("-Wl,-gc-sections");
101
102 // const run = exe.run();
103 // run.expectStdOutEqual("1 2\n");
104 // test_step.dependOn(run.step());
105
106 // const check = exe.check();
107 // check.checkInSymtab();
108 // check.checkContains("live_var1");
109 // check.checkInSymtab();
110 // check.checkContains("live_var2");
111 // check.checkInSymtab();
112 // check.checkNotPresent("dead_var1");
113 // check.checkInSymtab();
114 // check.checkNotPresent("dead_var2");
115 // check.checkInSymtab();
116 // check.checkContains("live_fn1");
117 // check.checkInSymtab();
118 // check.checkContains("live_fn2");
119 // check.checkInSymtab();
120 // check.checkNotPresent("dead_fn1");
121 // check.checkInSymtab();
122 // check.checkNotPresent("dead_fn2");
123 // test_step.dependOn(&check.step);
124 // }
97 {
98 const exe = addExecutable(b, opts);
99 exe.addObject(obj);
100 exe.link_gc_sections = true;
101 exe.is_linking_libc = true;
102 exe.is_linking_libcpp = true;
103
104 const run = addRunArtifact(exe);
105 run.expectStdOutEqual("1 2\n");
106 test_step.dependOn(&run.step);
107
108 const check = exe.checkObject();
109 check.checkInSymtab();
110 check.checkContains("live_var1");
111 check.checkInSymtab();
112 check.checkContains("live_var2");
113 check.checkInSymtab();
114 check.checkNotPresent("dead_var1");
115 check.checkInSymtab();
116 check.checkNotPresent("dead_var2");
117 check.checkInSymtab();
118 check.checkContains("live_fn1");
119 check.checkInSymtab();
120 check.checkContains("live_fn2");
121 check.checkInSymtab();
122 check.checkNotPresent("dead_fn1");
123 check.checkInSymtab();
124 check.checkNotPresent("dead_fn2");
125 test_step.dependOn(&check.step);
126 }
125127
126128 return test_step;
127129}