mirror of
https://github.com/ziglang/zig.git
synced 2025-12-16 03:03:09 +00:00
elf: test -r mode with archive on the linker line
This commit is contained in:
parent
359842f8d5
commit
f6bf3353b1
@ -23,6 +23,7 @@ pub fn testAll(b: *Build) *Step {
|
||||
// Exercise linker in -r mode
|
||||
elf_step.dependOn(testEmitRelocatable(b, .{ .use_llvm = false, .target = musl_target }));
|
||||
elf_step.dependOn(testEmitRelocatable(b, .{ .target = musl_target }));
|
||||
elf_step.dependOn(testRelocatableArchive(b, .{ .target = musl_target }));
|
||||
elf_step.dependOn(testRelocatableEhFrame(b, .{ .target = musl_target }));
|
||||
|
||||
// Exercise linker in ar mode
|
||||
@ -2141,6 +2142,56 @@ fn testPreinitArray(b: *Build, opts: Options) *Step {
|
||||
return test_step;
|
||||
}
|
||||
|
||||
fn testRelocatableArchive(b: *Build, opts: Options) *Step {
|
||||
const test_step = addTestStep(b, "relocatable-archive", opts);
|
||||
|
||||
const obj1 = addObject(b, "obj1", opts);
|
||||
addCSourceBytes(obj1,
|
||||
\\void bar();
|
||||
\\void foo() {
|
||||
\\ bar();
|
||||
\\}
|
||||
, &.{});
|
||||
|
||||
const obj2 = addObject(b, "obj2", opts);
|
||||
addCSourceBytes(obj2,
|
||||
\\void bar() {}
|
||||
, &.{});
|
||||
|
||||
const obj3 = addObject(b, "obj3", opts);
|
||||
addCSourceBytes(obj3,
|
||||
\\void baz();
|
||||
, &.{});
|
||||
|
||||
const obj4 = addObject(b, "obj4", opts);
|
||||
addCSourceBytes(obj4,
|
||||
\\void foo();
|
||||
\\int main() {
|
||||
\\ foo();
|
||||
\\}
|
||||
, &.{});
|
||||
|
||||
const lib = addStaticLibrary(b, "lib", opts);
|
||||
lib.addObject(obj1);
|
||||
lib.addObject(obj2);
|
||||
lib.addObject(obj3);
|
||||
|
||||
const obj5 = addObject(b, "obj5", opts);
|
||||
obj5.addObject(obj4);
|
||||
obj5.linkLibrary(lib);
|
||||
|
||||
const check = obj5.checkObject();
|
||||
check.checkInSymtab();
|
||||
check.checkContains("foo");
|
||||
check.checkInSymtab();
|
||||
check.checkContains("bar");
|
||||
check.checkInSymtab();
|
||||
check.checkNotPresent("baz");
|
||||
test_step.dependOn(&check.step);
|
||||
|
||||
return test_step;
|
||||
}
|
||||
|
||||
fn testRelocatableEhFrame(b: *Build, opts: Options) *Step {
|
||||
const test_step = addTestStep(b, "relocatable-eh-frame", opts);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user