mirror of
https://github.com/ziglang/zig.git
synced 2025-12-17 19:53:06 +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
|
// Exercise linker in -r mode
|
||||||
elf_step.dependOn(testEmitRelocatable(b, .{ .use_llvm = false, .target = musl_target }));
|
elf_step.dependOn(testEmitRelocatable(b, .{ .use_llvm = false, .target = musl_target }));
|
||||||
elf_step.dependOn(testEmitRelocatable(b, .{ .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 }));
|
elf_step.dependOn(testRelocatableEhFrame(b, .{ .target = musl_target }));
|
||||||
|
|
||||||
// Exercise linker in ar mode
|
// Exercise linker in ar mode
|
||||||
@ -2141,6 +2142,56 @@ fn testPreinitArray(b: *Build, opts: Options) *Step {
|
|||||||
return test_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 {
|
fn testRelocatableEhFrame(b: *Build, opts: Options) *Step {
|
||||||
const test_step = addTestStep(b, "relocatable-eh-frame", opts);
|
const test_step = addTestStep(b, "relocatable-eh-frame", opts);
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user