authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2023-11-16 10:54:39+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2023-11-16 10:54:39+01:00
log85c0485fd9ccc89dae97a8fed6d503b0e8c9e519
tree4c7130b9bd68e9db57f4f57175ad8cbf09f455bb
parentf6bf3353b14682dab395f40ae3d2354a0ee64aed

elf: test -r mode does not create unneeded .eh_frame section


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

test/link/elf.zig+28
...@@ -25,6 +25,7 @@ pub fn testAll(b: *Build) *Step {...@@ -25,6 +25,7 @@ pub fn testAll(b: *Build) *Step {
25 elf_step.dependOn(testEmitRelocatable(b, .{ .target = musl_target }));25 elf_step.dependOn(testEmitRelocatable(b, .{ .target = musl_target }));
26 elf_step.dependOn(testRelocatableArchive(b, .{ .target = musl_target }));26 elf_step.dependOn(testRelocatableArchive(b, .{ .target = musl_target }));
27 elf_step.dependOn(testRelocatableEhFrame(b, .{ .target = musl_target }));27 elf_step.dependOn(testRelocatableEhFrame(b, .{ .target = musl_target }));
28 elf_step.dependOn(testRelocatableNoEhFrame(b, .{ .target = musl_target }));
2829
29 // Exercise linker in ar mode30 // Exercise linker in ar mode
30 elf_step.dependOn(testEmitStaticLib(b, .{ .target = musl_target }));31 elf_step.dependOn(testEmitStaticLib(b, .{ .target = musl_target }));
...@@ -2275,6 +2276,33 @@ fn testRelocatableEhFrame(b: *Build, opts: Options) *Step {...@@ -2275,6 +2276,33 @@ fn testRelocatableEhFrame(b: *Build, opts: Options) *Step {
2275 return test_step;2276 return test_step;
2276}2277}
22772278
2279fn testRelocatableNoEhFrame(b: *Build, opts: Options) *Step {
2280 const test_step = addTestStep(b, "relocatable-no-eh-frame", opts);
2281
2282 const obj1 = addObject(b, "obj1", opts);
2283 addCSourceBytes(obj1, "int bar() { return 42; }", &.{
2284 "-fno-unwind-tables",
2285 "-fno-asynchronous-unwind-tables",
2286 });
2287
2288 const obj2 = addObject(b, "obj2", opts);
2289 obj2.addObject(obj1);
2290
2291 const check1 = obj1.checkObject();
2292 check1.checkStart();
2293 check1.checkExact("section headers");
2294 check1.checkNotPresent(".eh_frame");
2295 test_step.dependOn(&check1.step);
2296
2297 const check2 = obj2.checkObject();
2298 check2.checkStart();
2299 check2.checkExact("section headers");
2300 check2.checkNotPresent(".eh_frame");
2301 test_step.dependOn(&check2.step);
2302
2303 return test_step;
2304}
2305
2278fn testSharedAbsSymbol(b: *Build, opts: Options) *Step {2306fn testSharedAbsSymbol(b: *Build, opts: Options) *Step {
2279 const test_step = addTestStep(b, "shared-abs-symbol", opts);2307 const test_step = addTestStep(b, "shared-abs-symbol", opts);
22802308