Skip to content

Commit

Permalink
link/elf: simplify how we test thunks
Browse files Browse the repository at this point in the history
  • Loading branch information
kubkon committed Aug 21, 2024
1 parent 8fc15f1 commit ca417e1
Showing 1 changed file with 20 additions and 37 deletions.
57 changes: 20 additions & 37 deletions test/link/elf.zig
Original file line number Diff line number Diff line change
Expand Up @@ -2973,44 +2973,27 @@ fn testStrip(b: *Build, opts: Options) *Step {
fn testThunks(b: *Build, opts: Options) *Step {
const test_step = addTestStep(b, "thunks", opts);

const src =
\\#include <stdio.h>
\\__attribute__((aligned(0x8000000))) int bar() {
\\ return 42;
\\}
\\int foobar();
\\int foo() {
\\ return bar() - foobar();
\\}
\\__attribute__((aligned(0x8000000))) int foobar() {
\\ return 42;
\\}
\\int main() {
\\ printf("bar=%d, foo=%d, foobar=%d", bar(), foo(), foobar());
\\ return foo();
\\}
;

{
const exe = addExecutable(b, opts, .{ .name = "main", .c_source_bytes = src });
exe.link_function_sections = true;
exe.linkLibC();

const run = addRunArtifact(exe);
run.expectStdOutEqual("bar=42, foo=0, foobar=42");
run.expectExitCode(0);
test_step.dependOn(&run.step);
}

{
const exe = addExecutable(b, opts, .{ .name = "main2", .c_source_bytes = src });
exe.linkLibC();
const exe = addExecutable(b, opts, .{ .name = "main", .c_source_bytes =
\\void foo();
\\__attribute__((section(".bar"))) void bar() {
\\ return foo();
\\}
\\__attribute__((section(".foo"))) void foo() {
\\ return bar();
\\}
\\int main() {
\\ foo();
\\ bar();
\\ return 0;
\\}
});

const run = addRunArtifact(exe);
run.expectStdOutEqual("bar=42, foo=0, foobar=42");
run.expectExitCode(0);
test_step.dependOn(&run.step);
}
const check = exe.checkObject();
check.checkInSymtab();
check.checkContains("foo$thunk");
check.checkInSymtab();
check.checkContains("bar$thunk");
test_step.dependOn(&check.step);

return test_step;
}
Expand Down

0 comments on commit ca417e1

Please sign in to comment.