diff options
| -rw-r--r-- | test/link/elf.zig | 238 |
1 files changed, 129 insertions, 109 deletions
diff --git a/test/link/elf.zig b/test/link/elf.zig index 97b67f6cdf..9c08677429 100644 --- a/test/link/elf.zig +++ b/test/link/elf.zig @@ -20,30 +20,142 @@ pub fn testAll(b: *Build, build_opts: BuildOptions) *Step { .os_tag = .linux, .abi = .gnu, }); - const aarch64_musl = b.resolveTargetQuery(.{ - .cpu_arch = .aarch64, - .os_tag = .linux, - .abi = .musl, - }); + // const aarch64_musl = b.resolveTargetQuery(.{ + // .cpu_arch = .aarch64, + // .os_tag = .linux, + // .abi = .musl, + // }); + // const aarch64_gnu = b.resolveTargetQuery(.{ + // .cpu_arch = .aarch64, + // .os_tag = .linux, + // .abi = .gnu, + // }); const riscv64_musl = b.resolveTargetQuery(.{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .musl, }); - // x86_64 tests - // Exercise linker in -r mode - elf_step.dependOn(testEmitRelocatable(b, .{ .use_llvm = false, .target = x86_64_musl })); - elf_step.dependOn(testEmitRelocatable(b, .{ .target = x86_64_musl })); - elf_step.dependOn(testRelocatableArchive(b, .{ .target = x86_64_musl })); - elf_step.dependOn(testRelocatableEhFrame(b, .{ .target = x86_64_musl })); - elf_step.dependOn(testRelocatableNoEhFrame(b, .{ .target = x86_64_musl })); + // Common tests + for (&[_]std.Target.Cpu.Arch{ + .x86_64, + .aarch64, + }) |cpu_arch| { + const musl_target = b.resolveTargetQuery(.{ + .cpu_arch = cpu_arch, + .os_tag = .linux, + .abi = .musl, + }); + const gnu_target = b.resolveTargetQuery(.{ + .cpu_arch = cpu_arch, + .os_tag = .linux, + .abi = .gnu, + }); - // Exercise linker in ar mode - elf_step.dependOn(testEmitStaticLib(b, .{ .target = x86_64_musl })); - elf_step.dependOn(testEmitStaticLibZig(b, .{ .use_llvm = false, .target = x86_64_musl })); + // Exercise linker in -r mode + 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(testRelocatableNoEhFrame(b, .{ .target = musl_target })); + + // Exercise linker in ar mode + elf_step.dependOn(testEmitStaticLib(b, .{ .target = musl_target })); + + // Exercise linker with LLVM backend + // musl tests + elf_step.dependOn(testAbsSymbols(b, .{ .target = musl_target })); + elf_step.dependOn(testCommonSymbols(b, .{ .target = musl_target })); + elf_step.dependOn(testCommonSymbolsInArchive(b, .{ .target = musl_target })); + elf_step.dependOn(testEmptyObject(b, .{ .target = musl_target })); + elf_step.dependOn(testEntryPoint(b, .{ .target = musl_target })); + elf_step.dependOn(testGcSections(b, .{ .target = musl_target })); + elf_step.dependOn(testImageBase(b, .{ .target = musl_target })); + elf_step.dependOn(testInitArrayOrder(b, .{ .target = musl_target })); + elf_step.dependOn(testLargeAlignmentExe(b, .{ .target = musl_target })); + // https://github.com/ziglang/zig/issues/17449 + // elf_step.dependOn(testLargeBss(b, .{ .target = musl_target })); + elf_step.dependOn(testLinkingC(b, .{ .target = musl_target })); + elf_step.dependOn(testLinkingCpp(b, .{ .target = musl_target })); + elf_step.dependOn(testLinkingZig(b, .{ .target = musl_target })); + // https://github.com/ziglang/zig/issues/17451 + // elf_step.dependOn(testNoEhFrameHdr(b, .{ .target = musl_target })); + elf_step.dependOn(testTlsStatic(b, .{ .target = musl_target })); + elf_step.dependOn(testStrip(b, .{ .target = musl_target })); + + // glibc tests + elf_step.dependOn(testAsNeeded(b, .{ .target = gnu_target })); + // https://github.com/ziglang/zig/issues/17430 + // elf_step.dependOn(testCanonicalPlt(b, .{ .target = gnu_target })); + elf_step.dependOn(testCopyrel(b, .{ .target = gnu_target })); + // https://github.com/ziglang/zig/issues/17430 + // elf_step.dependOn(testCopyrelAlias(b, .{ .target = gnu_target })); + // https://github.com/ziglang/zig/issues/17430 + // elf_step.dependOn(testCopyrelAlignment(b, .{ .target = gnu_target })); + elf_step.dependOn(testDsoPlt(b, .{ .target = gnu_target })); + elf_step.dependOn(testDsoUndef(b, .{ .target = gnu_target })); + elf_step.dependOn(testExportDynamic(b, .{ .target = gnu_target })); + elf_step.dependOn(testExportSymbolsFromExe(b, .{ .target = gnu_target })); + // https://github.com/ziglang/zig/issues/17430 + // elf_step.dependOn(testFuncAddress(b, .{ .target = gnu_target })); + elf_step.dependOn(testHiddenWeakUndef(b, .{ .target = gnu_target })); + elf_step.dependOn(testIFuncAlias(b, .{ .target = gnu_target })); + // https://github.com/ziglang/zig/issues/17430 + // elf_step.dependOn(testIFuncDlopen(b, .{ .target = gnu_target })); + elf_step.dependOn(testIFuncDso(b, .{ .target = gnu_target })); + elf_step.dependOn(testIFuncDynamic(b, .{ .target = gnu_target })); + elf_step.dependOn(testIFuncExport(b, .{ .target = gnu_target })); + elf_step.dependOn(testIFuncFuncPtr(b, .{ .target = gnu_target })); + elf_step.dependOn(testIFuncNoPlt(b, .{ .target = gnu_target })); + // https://github.com/ziglang/zig/issues/17430 ?? + // elf_step.dependOn(testIFuncStatic(b, .{ .target = gnu_target })); + // elf_step.dependOn(testIFuncStaticPie(b, .{ .target = gnu_target })); + elf_step.dependOn(testInitArrayOrder(b, .{ .target = gnu_target })); + elf_step.dependOn(testLargeAlignmentDso(b, .{ .target = gnu_target })); + elf_step.dependOn(testLargeAlignmentExe(b, .{ .target = gnu_target })); + elf_step.dependOn(testLargeBss(b, .{ .target = gnu_target })); + elf_step.dependOn(testLinkOrder(b, .{ .target = gnu_target })); + elf_step.dependOn(testLdScript(b, .{ .target = gnu_target })); + elf_step.dependOn(testLdScriptPathError(b, .{ .target = gnu_target })); + elf_step.dependOn(testLdScriptAllowUndefinedVersion(b, .{ .target = gnu_target, .use_lld = true })); + elf_step.dependOn(testLdScriptDisallowUndefinedVersion(b, .{ .target = gnu_target, .use_lld = true })); + // https://github.com/ziglang/zig/issues/17451 + // elf_step.dependOn(testNoEhFrameHdr(b, .{ .target = gnu_target })); + elf_step.dependOn(testPie(b, .{ .target = gnu_target })); + elf_step.dependOn(testPltGot(b, .{ .target = gnu_target })); + elf_step.dependOn(testPreinitArray(b, .{ .target = gnu_target })); + elf_step.dependOn(testSharedAbsSymbol(b, .{ .target = gnu_target })); + elf_step.dependOn(testTlsDfStaticTls(b, .{ .target = gnu_target })); + elf_step.dependOn(testTlsDso(b, .{ .target = gnu_target })); + elf_step.dependOn(testTlsGd(b, .{ .target = gnu_target })); + elf_step.dependOn(testTlsGdNoPlt(b, .{ .target = gnu_target })); + elf_step.dependOn(testTlsGdToIe(b, .{ .target = gnu_target })); + elf_step.dependOn(testTlsIe(b, .{ .target = gnu_target })); + elf_step.dependOn(testTlsLargeAlignment(b, .{ .target = gnu_target })); + elf_step.dependOn(testTlsLargeTbss(b, .{ .target = gnu_target })); + elf_step.dependOn(testTlsLargeStaticImage(b, .{ .target = gnu_target })); + elf_step.dependOn(testTlsLd(b, .{ .target = gnu_target })); + elf_step.dependOn(testTlsLdDso(b, .{ .target = gnu_target })); + elf_step.dependOn(testTlsLdNoPlt(b, .{ .target = gnu_target })); + // https://github.com/ziglang/zig/issues/17430 + // elf_step.dependOn(testTlsNoPic(b, .{ .target = gnu_target })); + elf_step.dependOn(testTlsOffsetAlignment(b, .{ .target = gnu_target })); + elf_step.dependOn(testTlsPic(b, .{ .target = gnu_target })); + elf_step.dependOn(testTlsSmallAlignment(b, .{ .target = gnu_target })); + elf_step.dependOn(testUnknownFileTypeError(b, .{ .target = gnu_target })); + elf_step.dependOn(testUnresolvedError(b, .{ .target = gnu_target })); + elf_step.dependOn(testWeakExports(b, .{ .target = gnu_target })); + elf_step.dependOn(testWeakUndefsDso(b, .{ .target = gnu_target })); + elf_step.dependOn(testZNow(b, .{ .target = gnu_target })); + elf_step.dependOn(testZStackSize(b, .{ .target = gnu_target })); + } - // Exercise linker with self-hosted backend (no LLVM) + // x86_64 specific tests + elf_step.dependOn(testMismatchedCpuArchitectureError(b, .{ .target = x86_64_musl })); + elf_step.dependOn(testZText(b, .{ .target = x86_64_gnu })); + + // x86_64 self-hosted backend + elf_step.dependOn(testEmitRelocatable(b, .{ .use_llvm = false, .target = x86_64_musl })); + elf_step.dependOn(testEmitStaticLibZig(b, .{ .use_llvm = false, .target = x86_64_musl })); elf_step.dependOn(testGcSectionsZig(b, .{ .use_llvm = false, .target = default_target })); elf_step.dependOn(testLinkingObj(b, .{ .use_llvm = false, .target = default_target })); elf_step.dependOn(testLinkingStaticLib(b, .{ .use_llvm = false, .target = default_target })); @@ -51,99 +163,7 @@ pub fn testAll(b: *Build, build_opts: BuildOptions) *Step { elf_step.dependOn(testImportingDataDynamic(b, .{ .use_llvm = false, .target = x86_64_gnu })); elf_step.dependOn(testImportingDataStatic(b, .{ .use_llvm = false, .target = x86_64_musl })); - // Exercise linker with LLVM backend - // musl tests - elf_step.dependOn(testAbsSymbols(b, .{ .target = x86_64_musl })); - elf_step.dependOn(testCommonSymbols(b, .{ .target = x86_64_musl })); - elf_step.dependOn(testCommonSymbolsInArchive(b, .{ .target = x86_64_musl })); - elf_step.dependOn(testEmptyObject(b, .{ .target = x86_64_musl })); - elf_step.dependOn(testEntryPoint(b, .{ .target = x86_64_musl })); - elf_step.dependOn(testGcSections(b, .{ .target = x86_64_musl })); - elf_step.dependOn(testImageBase(b, .{ .target = x86_64_musl })); - elf_step.dependOn(testInitArrayOrder(b, .{ .target = x86_64_musl })); - elf_step.dependOn(testLargeAlignmentExe(b, .{ .target = x86_64_musl })); - // https://github.com/ziglang/zig/issues/17449 - // elf_step.dependOn(testLargeBss(b, .{ .target = x86_64_musl })); - elf_step.dependOn(testLinkingC(b, .{ .target = x86_64_musl })); - elf_step.dependOn(testLinkingCpp(b, .{ .target = x86_64_musl })); - elf_step.dependOn(testLinkingZig(b, .{ .target = x86_64_musl })); - // https://github.com/ziglang/zig/issues/17451 - // elf_step.dependOn(testNoEhFrameHdr(b, .{ .target = x86_64_musl })); - elf_step.dependOn(testTlsStatic(b, .{ .target = x86_64_musl })); - elf_step.dependOn(testStrip(b, .{ .target = x86_64_musl })); - - // glibc tests - elf_step.dependOn(testAsNeeded(b, .{ .target = x86_64_gnu })); - // https://github.com/ziglang/zig/issues/17430 - // elf_step.dependOn(testCanonicalPlt(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testCopyrel(b, .{ .target = x86_64_gnu })); - // https://github.com/ziglang/zig/issues/17430 - // elf_step.dependOn(testCopyrelAlias(b, .{ .target = x86_64_gnu })); - // https://github.com/ziglang/zig/issues/17430 - // elf_step.dependOn(testCopyrelAlignment(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testDsoPlt(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testDsoUndef(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testExportDynamic(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testExportSymbolsFromExe(b, .{ .target = x86_64_gnu })); - // https://github.com/ziglang/zig/issues/17430 - // elf_step.dependOn(testFuncAddress(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testHiddenWeakUndef(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testIFuncAlias(b, .{ .target = x86_64_gnu })); - // https://github.com/ziglang/zig/issues/17430 - // elf_step.dependOn(testIFuncDlopen(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testIFuncDso(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testIFuncDynamic(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testIFuncExport(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testIFuncFuncPtr(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testIFuncNoPlt(b, .{ .target = x86_64_gnu })); - // https://github.com/ziglang/zig/issues/17430 ?? - // elf_step.dependOn(testIFuncStatic(b, .{ .target = x86_64_gnu })); - // elf_step.dependOn(testIFuncStaticPie(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testInitArrayOrder(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testLargeAlignmentDso(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testLargeAlignmentExe(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testLargeBss(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testLinkOrder(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testLdScript(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testLdScriptPathError(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testLdScriptAllowUndefinedVersion(b, .{ .target = x86_64_gnu, .use_lld = true })); - elf_step.dependOn(testLdScriptDisallowUndefinedVersion(b, .{ .target = x86_64_gnu, .use_lld = true })); - elf_step.dependOn(testMismatchedCpuArchitectureError(b, .{ .target = x86_64_gnu })); - // https://github.com/ziglang/zig/issues/17451 - // elf_step.dependOn(testNoEhFrameHdr(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testPie(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testPltGot(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testPreinitArray(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testSharedAbsSymbol(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testTlsDfStaticTls(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testTlsDso(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testTlsGd(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testTlsGdNoPlt(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testTlsGdToIe(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testTlsIe(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testTlsLargeAlignment(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testTlsLargeTbss(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testTlsLargeStaticImage(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testTlsLd(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testTlsLdDso(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testTlsLdNoPlt(b, .{ .target = x86_64_gnu })); - // https://github.com/ziglang/zig/issues/17430 - // elf_step.dependOn(testTlsNoPic(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testTlsOffsetAlignment(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testTlsPic(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testTlsSmallAlignment(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testUnknownFileTypeError(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testUnresolvedError(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testWeakExports(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testWeakUndefsDso(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testZNow(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testZStackSize(b, .{ .target = x86_64_gnu })); - elf_step.dependOn(testZText(b, .{ .target = x86_64_gnu })); - - // aarch64 tests - elf_step.dependOn(testLinkingC(b, .{ .target = aarch64_musl })); - - // riscv64 tests + // riscv64 linker backend is currently not complete enough to support more elf_step.dependOn(testLinkingC(b, .{ .target = riscv64_musl })); return elf_step; |
