authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-03-09 19:20:59+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-03-09 19:26:26+01:00
logb7b63855d04c8a757b9c33982cccf538676256ad
treef4da05d390e8bdbdff9186bc8c058bac07399f78
parent229468b7a9a47c08a90684419a5c210ff2af2b4a

test/link/elf: enable tests for aarch64 cpu arch


1 files changed, 129 insertions(+), 109 deletions(-)

test/link/elf.zig+129-109
......@@ -20,30 +20,142 @@ pub fn testAll(b: *Build, build_opts: BuildOptions) *Step {
2020 .os_tag = .linux,
2121 .abi = .gnu,
2222 });
23 const aarch64_musl = b.resolveTargetQuery(.{
24 .cpu_arch = .aarch64,
25 .os_tag = .linux,
26 .abi = .musl,
27 });
23 // const aarch64_musl = b.resolveTargetQuery(.{
24 // .cpu_arch = .aarch64,
25 // .os_tag = .linux,
26 // .abi = .musl,
27 // });
28 // const aarch64_gnu = b.resolveTargetQuery(.{
29 // .cpu_arch = .aarch64,
30 // .os_tag = .linux,
31 // .abi = .gnu,
32 // });
2833 const riscv64_musl = b.resolveTargetQuery(.{
2934 .cpu_arch = .riscv64,
3035 .os_tag = .linux,
3136 .abi = .musl,
3237 });
3338
34 // x86_64 tests
35 // Exercise linker in -r mode
36 elf_step.dependOn(testEmitRelocatable(b, .{ .use_llvm = false, .target = x86_64_musl }));
37 elf_step.dependOn(testEmitRelocatable(b, .{ .target = x86_64_musl }));
38 elf_step.dependOn(testRelocatableArchive(b, .{ .target = x86_64_musl }));
39 elf_step.dependOn(testRelocatableEhFrame(b, .{ .target = x86_64_musl }));
40 elf_step.dependOn(testRelocatableNoEhFrame(b, .{ .target = x86_64_musl }));
39 // Common tests
40 for (&[_]std.Target.Cpu.Arch{
41 .x86_64,
42 .aarch64,
43 }) |cpu_arch| {
44 const musl_target = b.resolveTargetQuery(.{
45 .cpu_arch = cpu_arch,
46 .os_tag = .linux,
47 .abi = .musl,
48 });
49 const gnu_target = b.resolveTargetQuery(.{
50 .cpu_arch = cpu_arch,
51 .os_tag = .linux,
52 .abi = .gnu,
53 });
4154
42 // Exercise linker in ar mode
43 elf_step.dependOn(testEmitStaticLib(b, .{ .target = x86_64_musl }));
44 elf_step.dependOn(testEmitStaticLibZig(b, .{ .use_llvm = false, .target = x86_64_musl }));
55 // Exercise linker in -r mode
56 elf_step.dependOn(testEmitRelocatable(b, .{ .target = musl_target }));
57 elf_step.dependOn(testRelocatableArchive(b, .{ .target = musl_target }));
58 elf_step.dependOn(testRelocatableEhFrame(b, .{ .target = musl_target }));
59 elf_step.dependOn(testRelocatableNoEhFrame(b, .{ .target = musl_target }));
60
61 // Exercise linker in ar mode
62 elf_step.dependOn(testEmitStaticLib(b, .{ .target = musl_target }));
63
64 // Exercise linker with LLVM backend
65 // musl tests
66 elf_step.dependOn(testAbsSymbols(b, .{ .target = musl_target }));
67 elf_step.dependOn(testCommonSymbols(b, .{ .target = musl_target }));
68 elf_step.dependOn(testCommonSymbolsInArchive(b, .{ .target = musl_target }));
69 elf_step.dependOn(testEmptyObject(b, .{ .target = musl_target }));
70 elf_step.dependOn(testEntryPoint(b, .{ .target = musl_target }));
71 elf_step.dependOn(testGcSections(b, .{ .target = musl_target }));
72 elf_step.dependOn(testImageBase(b, .{ .target = musl_target }));
73 elf_step.dependOn(testInitArrayOrder(b, .{ .target = musl_target }));
74 elf_step.dependOn(testLargeAlignmentExe(b, .{ .target = musl_target }));
75 // https://github.com/ziglang/zig/issues/17449
76 // elf_step.dependOn(testLargeBss(b, .{ .target = musl_target }));
77 elf_step.dependOn(testLinkingC(b, .{ .target = musl_target }));
78 elf_step.dependOn(testLinkingCpp(b, .{ .target = musl_target }));
79 elf_step.dependOn(testLinkingZig(b, .{ .target = musl_target }));
80 // https://github.com/ziglang/zig/issues/17451
81 // elf_step.dependOn(testNoEhFrameHdr(b, .{ .target = musl_target }));
82 elf_step.dependOn(testTlsStatic(b, .{ .target = musl_target }));
83 elf_step.dependOn(testStrip(b, .{ .target = musl_target }));
84
85 // glibc tests
86 elf_step.dependOn(testAsNeeded(b, .{ .target = gnu_target }));
87 // https://github.com/ziglang/zig/issues/17430
88 // elf_step.dependOn(testCanonicalPlt(b, .{ .target = gnu_target }));
89 elf_step.dependOn(testCopyrel(b, .{ .target = gnu_target }));
90 // https://github.com/ziglang/zig/issues/17430
91 // elf_step.dependOn(testCopyrelAlias(b, .{ .target = gnu_target }));
92 // https://github.com/ziglang/zig/issues/17430
93 // elf_step.dependOn(testCopyrelAlignment(b, .{ .target = gnu_target }));
94 elf_step.dependOn(testDsoPlt(b, .{ .target = gnu_target }));
95 elf_step.dependOn(testDsoUndef(b, .{ .target = gnu_target }));
96 elf_step.dependOn(testExportDynamic(b, .{ .target = gnu_target }));
97 elf_step.dependOn(testExportSymbolsFromExe(b, .{ .target = gnu_target }));
98 // https://github.com/ziglang/zig/issues/17430
99 // elf_step.dependOn(testFuncAddress(b, .{ .target = gnu_target }));
100 elf_step.dependOn(testHiddenWeakUndef(b, .{ .target = gnu_target }));
101 elf_step.dependOn(testIFuncAlias(b, .{ .target = gnu_target }));
102 // https://github.com/ziglang/zig/issues/17430
103 // elf_step.dependOn(testIFuncDlopen(b, .{ .target = gnu_target }));
104 elf_step.dependOn(testIFuncDso(b, .{ .target = gnu_target }));
105 elf_step.dependOn(testIFuncDynamic(b, .{ .target = gnu_target }));
106 elf_step.dependOn(testIFuncExport(b, .{ .target = gnu_target }));
107 elf_step.dependOn(testIFuncFuncPtr(b, .{ .target = gnu_target }));
108 elf_step.dependOn(testIFuncNoPlt(b, .{ .target = gnu_target }));
109 // https://github.com/ziglang/zig/issues/17430 ??
110 // elf_step.dependOn(testIFuncStatic(b, .{ .target = gnu_target }));
111 // elf_step.dependOn(testIFuncStaticPie(b, .{ .target = gnu_target }));
112 elf_step.dependOn(testInitArrayOrder(b, .{ .target = gnu_target }));
113 elf_step.dependOn(testLargeAlignmentDso(b, .{ .target = gnu_target }));
114 elf_step.dependOn(testLargeAlignmentExe(b, .{ .target = gnu_target }));
115 elf_step.dependOn(testLargeBss(b, .{ .target = gnu_target }));
116 elf_step.dependOn(testLinkOrder(b, .{ .target = gnu_target }));
117 elf_step.dependOn(testLdScript(b, .{ .target = gnu_target }));
118 elf_step.dependOn(testLdScriptPathError(b, .{ .target = gnu_target }));
119 elf_step.dependOn(testLdScriptAllowUndefinedVersion(b, .{ .target = gnu_target, .use_lld = true }));
120 elf_step.dependOn(testLdScriptDisallowUndefinedVersion(b, .{ .target = gnu_target, .use_lld = true }));
121 // https://github.com/ziglang/zig/issues/17451
122 // elf_step.dependOn(testNoEhFrameHdr(b, .{ .target = gnu_target }));
123 elf_step.dependOn(testPie(b, .{ .target = gnu_target }));
124 elf_step.dependOn(testPltGot(b, .{ .target = gnu_target }));
125 elf_step.dependOn(testPreinitArray(b, .{ .target = gnu_target }));
126 elf_step.dependOn(testSharedAbsSymbol(b, .{ .target = gnu_target }));
127 elf_step.dependOn(testTlsDfStaticTls(b, .{ .target = gnu_target }));
128 elf_step.dependOn(testTlsDso(b, .{ .target = gnu_target }));
129 elf_step.dependOn(testTlsGd(b, .{ .target = gnu_target }));
130 elf_step.dependOn(testTlsGdNoPlt(b, .{ .target = gnu_target }));
131 elf_step.dependOn(testTlsGdToIe(b, .{ .target = gnu_target }));
132 elf_step.dependOn(testTlsIe(b, .{ .target = gnu_target }));
133 elf_step.dependOn(testTlsLargeAlignment(b, .{ .target = gnu_target }));
134 elf_step.dependOn(testTlsLargeTbss(b, .{ .target = gnu_target }));
135 elf_step.dependOn(testTlsLargeStaticImage(b, .{ .target = gnu_target }));
136 elf_step.dependOn(testTlsLd(b, .{ .target = gnu_target }));
137 elf_step.dependOn(testTlsLdDso(b, .{ .target = gnu_target }));
138 elf_step.dependOn(testTlsLdNoPlt(b, .{ .target = gnu_target }));
139 // https://github.com/ziglang/zig/issues/17430
140 // elf_step.dependOn(testTlsNoPic(b, .{ .target = gnu_target }));
141 elf_step.dependOn(testTlsOffsetAlignment(b, .{ .target = gnu_target }));
142 elf_step.dependOn(testTlsPic(b, .{ .target = gnu_target }));
143 elf_step.dependOn(testTlsSmallAlignment(b, .{ .target = gnu_target }));
144 elf_step.dependOn(testUnknownFileTypeError(b, .{ .target = gnu_target }));
145 elf_step.dependOn(testUnresolvedError(b, .{ .target = gnu_target }));
146 elf_step.dependOn(testWeakExports(b, .{ .target = gnu_target }));
147 elf_step.dependOn(testWeakUndefsDso(b, .{ .target = gnu_target }));
148 elf_step.dependOn(testZNow(b, .{ .target = gnu_target }));
149 elf_step.dependOn(testZStackSize(b, .{ .target = gnu_target }));
150 }
45151
46 // Exercise linker with self-hosted backend (no LLVM)
152 // x86_64 specific tests
153 elf_step.dependOn(testMismatchedCpuArchitectureError(b, .{ .target = x86_64_musl }));
154 elf_step.dependOn(testZText(b, .{ .target = x86_64_gnu }));
155
156 // x86_64 self-hosted backend
157 elf_step.dependOn(testEmitRelocatable(b, .{ .use_llvm = false, .target = x86_64_musl }));
158 elf_step.dependOn(testEmitStaticLibZig(b, .{ .use_llvm = false, .target = x86_64_musl }));
47159 elf_step.dependOn(testGcSectionsZig(b, .{ .use_llvm = false, .target = default_target }));
48160 elf_step.dependOn(testLinkingObj(b, .{ .use_llvm = false, .target = default_target }));
49161 elf_step.dependOn(testLinkingStaticLib(b, .{ .use_llvm = false, .target = default_target }));
......@@ -51,99 +163,7 @@ pub fn testAll(b: *Build, build_opts: BuildOptions) *Step {
51163 elf_step.dependOn(testImportingDataDynamic(b, .{ .use_llvm = false, .target = x86_64_gnu }));
52164 elf_step.dependOn(testImportingDataStatic(b, .{ .use_llvm = false, .target = x86_64_musl }));
53165
54 // Exercise linker with LLVM backend
55 // musl tests
56 elf_step.dependOn(testAbsSymbols(b, .{ .target = x86_64_musl }));
57 elf_step.dependOn(testCommonSymbols(b, .{ .target = x86_64_musl }));
58 elf_step.dependOn(testCommonSymbolsInArchive(b, .{ .target = x86_64_musl }));
59 elf_step.dependOn(testEmptyObject(b, .{ .target = x86_64_musl }));
60 elf_step.dependOn(testEntryPoint(b, .{ .target = x86_64_musl }));
61 elf_step.dependOn(testGcSections(b, .{ .target = x86_64_musl }));
62 elf_step.dependOn(testImageBase(b, .{ .target = x86_64_musl }));
63 elf_step.dependOn(testInitArrayOrder(b, .{ .target = x86_64_musl }));
64 elf_step.dependOn(testLargeAlignmentExe(b, .{ .target = x86_64_musl }));
65 // https://github.com/ziglang/zig/issues/17449
66 // elf_step.dependOn(testLargeBss(b, .{ .target = x86_64_musl }));
67 elf_step.dependOn(testLinkingC(b, .{ .target = x86_64_musl }));
68 elf_step.dependOn(testLinkingCpp(b, .{ .target = x86_64_musl }));
69 elf_step.dependOn(testLinkingZig(b, .{ .target = x86_64_musl }));
70 // https://github.com/ziglang/zig/issues/17451
71 // elf_step.dependOn(testNoEhFrameHdr(b, .{ .target = x86_64_musl }));
72 elf_step.dependOn(testTlsStatic(b, .{ .target = x86_64_musl }));
73 elf_step.dependOn(testStrip(b, .{ .target = x86_64_musl }));
74
75 // glibc tests
76 elf_step.dependOn(testAsNeeded(b, .{ .target = x86_64_gnu }));
77 // https://github.com/ziglang/zig/issues/17430
78 // elf_step.dependOn(testCanonicalPlt(b, .{ .target = x86_64_gnu }));
79 elf_step.dependOn(testCopyrel(b, .{ .target = x86_64_gnu }));
80 // https://github.com/ziglang/zig/issues/17430
81 // elf_step.dependOn(testCopyrelAlias(b, .{ .target = x86_64_gnu }));
82 // https://github.com/ziglang/zig/issues/17430
83 // elf_step.dependOn(testCopyrelAlignment(b, .{ .target = x86_64_gnu }));
84 elf_step.dependOn(testDsoPlt(b, .{ .target = x86_64_gnu }));
85 elf_step.dependOn(testDsoUndef(b, .{ .target = x86_64_gnu }));
86 elf_step.dependOn(testExportDynamic(b, .{ .target = x86_64_gnu }));
87 elf_step.dependOn(testExportSymbolsFromExe(b, .{ .target = x86_64_gnu }));
88 // https://github.com/ziglang/zig/issues/17430
89 // elf_step.dependOn(testFuncAddress(b, .{ .target = x86_64_gnu }));
90 elf_step.dependOn(testHiddenWeakUndef(b, .{ .target = x86_64_gnu }));
91 elf_step.dependOn(testIFuncAlias(b, .{ .target = x86_64_gnu }));
92 // https://github.com/ziglang/zig/issues/17430
93 // elf_step.dependOn(testIFuncDlopen(b, .{ .target = x86_64_gnu }));
94 elf_step.dependOn(testIFuncDso(b, .{ .target = x86_64_gnu }));
95 elf_step.dependOn(testIFuncDynamic(b, .{ .target = x86_64_gnu }));
96 elf_step.dependOn(testIFuncExport(b, .{ .target = x86_64_gnu }));
97 elf_step.dependOn(testIFuncFuncPtr(b, .{ .target = x86_64_gnu }));
98 elf_step.dependOn(testIFuncNoPlt(b, .{ .target = x86_64_gnu }));
99 // https://github.com/ziglang/zig/issues/17430 ??
100 // elf_step.dependOn(testIFuncStatic(b, .{ .target = x86_64_gnu }));
101 // elf_step.dependOn(testIFuncStaticPie(b, .{ .target = x86_64_gnu }));
102 elf_step.dependOn(testInitArrayOrder(b, .{ .target = x86_64_gnu }));
103 elf_step.dependOn(testLargeAlignmentDso(b, .{ .target = x86_64_gnu }));
104 elf_step.dependOn(testLargeAlignmentExe(b, .{ .target = x86_64_gnu }));
105 elf_step.dependOn(testLargeBss(b, .{ .target = x86_64_gnu }));
106 elf_step.dependOn(testLinkOrder(b, .{ .target = x86_64_gnu }));
107 elf_step.dependOn(testLdScript(b, .{ .target = x86_64_gnu }));
108 elf_step.dependOn(testLdScriptPathError(b, .{ .target = x86_64_gnu }));
109 elf_step.dependOn(testLdScriptAllowUndefinedVersion(b, .{ .target = x86_64_gnu, .use_lld = true }));
110 elf_step.dependOn(testLdScriptDisallowUndefinedVersion(b, .{ .target = x86_64_gnu, .use_lld = true }));
111 elf_step.dependOn(testMismatchedCpuArchitectureError(b, .{ .target = x86_64_gnu }));
112 // https://github.com/ziglang/zig/issues/17451
113 // elf_step.dependOn(testNoEhFrameHdr(b, .{ .target = x86_64_gnu }));
114 elf_step.dependOn(testPie(b, .{ .target = x86_64_gnu }));
115 elf_step.dependOn(testPltGot(b, .{ .target = x86_64_gnu }));
116 elf_step.dependOn(testPreinitArray(b, .{ .target = x86_64_gnu }));
117 elf_step.dependOn(testSharedAbsSymbol(b, .{ .target = x86_64_gnu }));
118 elf_step.dependOn(testTlsDfStaticTls(b, .{ .target = x86_64_gnu }));
119 elf_step.dependOn(testTlsDso(b, .{ .target = x86_64_gnu }));
120 elf_step.dependOn(testTlsGd(b, .{ .target = x86_64_gnu }));
121 elf_step.dependOn(testTlsGdNoPlt(b, .{ .target = x86_64_gnu }));
122 elf_step.dependOn(testTlsGdToIe(b, .{ .target = x86_64_gnu }));
123 elf_step.dependOn(testTlsIe(b, .{ .target = x86_64_gnu }));
124 elf_step.dependOn(testTlsLargeAlignment(b, .{ .target = x86_64_gnu }));
125 elf_step.dependOn(testTlsLargeTbss(b, .{ .target = x86_64_gnu }));
126 elf_step.dependOn(testTlsLargeStaticImage(b, .{ .target = x86_64_gnu }));
127 elf_step.dependOn(testTlsLd(b, .{ .target = x86_64_gnu }));
128 elf_step.dependOn(testTlsLdDso(b, .{ .target = x86_64_gnu }));
129 elf_step.dependOn(testTlsLdNoPlt(b, .{ .target = x86_64_gnu }));
130 // https://github.com/ziglang/zig/issues/17430
131 // elf_step.dependOn(testTlsNoPic(b, .{ .target = x86_64_gnu }));
132 elf_step.dependOn(testTlsOffsetAlignment(b, .{ .target = x86_64_gnu }));
133 elf_step.dependOn(testTlsPic(b, .{ .target = x86_64_gnu }));
134 elf_step.dependOn(testTlsSmallAlignment(b, .{ .target = x86_64_gnu }));
135 elf_step.dependOn(testUnknownFileTypeError(b, .{ .target = x86_64_gnu }));
136 elf_step.dependOn(testUnresolvedError(b, .{ .target = x86_64_gnu }));
137 elf_step.dependOn(testWeakExports(b, .{ .target = x86_64_gnu }));
138 elf_step.dependOn(testWeakUndefsDso(b, .{ .target = x86_64_gnu }));
139 elf_step.dependOn(testZNow(b, .{ .target = x86_64_gnu }));
140 elf_step.dependOn(testZStackSize(b, .{ .target = x86_64_gnu }));
141 elf_step.dependOn(testZText(b, .{ .target = x86_64_gnu }));
142
143 // aarch64 tests
144 elf_step.dependOn(testLinkingC(b, .{ .target = aarch64_musl }));
145
146 // riscv64 tests
166 // riscv64 linker backend is currently not complete enough to support more
147167 elf_step.dependOn(testLinkingC(b, .{ .target = riscv64_musl }));
148168
149169 return elf_step;