authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-09-07 14:46:59-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-09-07 14:46:59-04:00
log99fd42404a5aa98e15bc1ceaf56bcc0fe570943f
treee5391a40049022b5d53b81dd18027ee029479be3
parent9a18db8a80c96d206297e865d203b2a7d8a803ba
signaturelock-open Commit is signed but in an unrecognized format.

update process_headers tool for glibc 2.30


1 files changed, 70 insertions(+), 326 deletions(-)

tools/process_headers.zig+70-326
......@@ -20,6 +20,7 @@ const assert = std.debug.assert;
2020const LibCTarget = struct {
2121 name: []const u8,
2222 arch: MultiArch,
23 abi: MultiAbi,
2324};
2425
2526const MultiArch = union(enum) {
......@@ -39,396 +40,129 @@ const MultiArch = union(enum) {
3940 }
4041};
4142
43const MultiAbi = union(enum) {
44 musl,
45 specific: Abi,
46
47 fn eql(a: MultiAbi, b: MultiAbi) bool {
48 if (@enumToInt(a) != @enumToInt(b))
49 return false;
50 if (@TagType(MultiAbi)(a) != .specific)
51 return true;
52 return a.specific == b.specific;
53 }
54};
55
4256const glibc_targets = [_]LibCTarget{
4357 LibCTarget{
4458 .name = "aarch64_be-linux-gnu",
45 .zig_arch = Arch.aarch64_be,
46 .zig_abi = Abi.gnu,
59 .arch = MultiArch {.specific = Arch.aarch64_be},
60 .abi = MultiAbi {.specific = Abi.gnu},
4761 },
4862 LibCTarget{
4963 .name = "aarch64-linux-gnu",
50 .zig_arch = Arch.aarch64,
51 .zig_abi = Abi.gnu,
52 },
53 LibCTarget{
54 .name = "aarch64-linux-gnu-disable-multi-arch",
55 .zig_arch = Arch.aarch64,
56 .zig_abi = null,
57 },
58 LibCTarget{
59 .name = "alpha-linux-gnu",
60 .zig_arch = null,
61 .zig_abi = Abi.gnu,
64 .arch = MultiArch {.specific = Arch.aarch64},
65 .abi = MultiAbi {.specific = Abi.gnu},
6266 },
6367 LibCTarget{
6468 .name = "armeb-linux-gnueabi",
65 .zig_arch = Arch.armeb,
66 .zig_abi = Abi.gnueabi,
67 },
68 LibCTarget{
69 .name = "armeb-linux-gnueabi-be8",
70 .zig_arch = Arch.armeb,
71 .zig_abi = null,
69 .arch = MultiArch {.specific = Arch.armeb},
70 .abi = MultiAbi {.specific = Abi.gnueabi},
7271 },
7372 LibCTarget{
7473 .name = "armeb-linux-gnueabihf",
75 .zig_arch = Arch.armeb,
76 .zig_abi = Abi.gnueabihf,
77 },
78 LibCTarget{
79 .name = "armeb-linux-gnueabihf-be8",
80 .zig_arch = Arch.armeb,
81 .zig_abi = null,
74 .arch = MultiArch {.specific = Arch.armeb},
75 .abi = MultiAbi {.specific = Abi.gnueabihf},
8276 },
8377 LibCTarget{
8478 .name = "arm-linux-gnueabi",
85 .zig_arch = Arch.arm,
86 .zig_abi = Abi.gnueabi,
79 .arch = MultiArch {.specific = Arch.arm},
80 .abi = MultiAbi {.specific = Abi.gnueabi},
8781 },
8882 LibCTarget{
8983 .name = "arm-linux-gnueabihf",
90 .zig_arch = Arch.arm,
91 .zig_abi = Abi.gnueabihf,
92 },
93 LibCTarget{
94 .name = "arm-linux-gnueabihf-v7a",
95 .zig_arch = Arch.arm,
96 .zig_abi = null,
97 },
98 LibCTarget{
99 .name = "arm-linux-gnueabihf-v7a-disable-multi-arch",
100 .zig_arch = null,
101 .zig_abi = null,
102 },
103 LibCTarget{
104 .name = "hppa-linux-gnu",
105 .zig_arch = null,
106 .zig_abi = Abi.gnu,
107 },
108 LibCTarget{
109 .name = "i486-linux-gnu",
110 .zig_arch = null,
111 .zig_abi = Abi.gnu,
112 },
113 LibCTarget{
114 .name = "i586-linux-gnu",
115 .zig_arch = null,
116 .zig_abi = Abi.gnu,
117 },
118 LibCTarget{
119 .name = "i686-gnu",
120 .zig_arch = Arch.i386,
121 .zig_abi = Abi.gnu,
84 .arch = MultiArch {.specific = Arch.arm},
85 .abi = MultiAbi {.specific = Abi.gnueabihf},
12286 },
12387 LibCTarget{
12488 .name = "i686-linux-gnu",
125 .zig_arch = Arch.i386,
126 .zig_abi = Abi.gnu,
127 },
128 LibCTarget{
129 .name = "i686-linux-gnu-disable-multi-arch",
130 .zig_arch = null,
131 .zig_abi = null,
132 },
133 LibCTarget{
134 .name = "i686-linux-gnu-enable-obsolete",
135 .zig_arch = Arch.i386,
136 .zig_abi = null,
137 },
138 LibCTarget{
139 .name = "i686-linux-gnu-static-pie",
140 .zig_arch = Arch.i386,
141 .zig_abi = null,
142 },
143 LibCTarget{
144 .name = "ia64-linux-gnu",
145 .zig_arch = null,
146 .zig_abi = null,
147 },
148 LibCTarget{
149 .name = "m68k-linux-gnu",
150 .zig_arch = null,
151 .zig_abi = null,
152 },
153 LibCTarget{
154 .name = "m68k-linux-gnu-coldfire",
155 .zig_arch = null,
156 .zig_abi = null,
157 },
158 LibCTarget{
159 .name = "m68k-linux-gnu-coldfire-soft",
160 .zig_arch = null,
161 .zig_abi = null,
162 },
163 LibCTarget{
164 .name = "microblazeel-linux-gnu",
165 .zig_arch = null,
166 .zig_abi = null,
167 },
168 LibCTarget{
169 .name = "microblaze-linux-gnu",
170 .zig_arch = null,
171 .zig_abi = null,
89 .arch = MultiArch {.specific = Arch.i386},
90 .abi = MultiAbi {.specific = Abi.gnu},
17291 },
17392 LibCTarget{
17493 .name = "mips64el-linux-gnu-n32",
175 .zig_arch = Arch.mips64el,
176 .zig_abi = Abi.gnuabin32,
177 },
178 LibCTarget{
179 .name = "mips64el-linux-gnu-n32-nan2008",
180 .zig_arch = Arch.mips64el,
181 .zig_abi = null,
182 },
183 LibCTarget{
184 .name = "mips64el-linux-gnu-n32-nan2008-soft",
185 .zig_arch = Arch.mips64el,
186 .zig_abi = null,
187 },
188 LibCTarget{
189 .name = "mips64el-linux-gnu-n32-soft",
190 .zig_arch = Arch.mips64el,
191 .zig_abi = null,
94 .arch = MultiArch {.specific = Arch.mips64el},
95 .abi = MultiAbi {.specific = Abi.gnuabin32},
19296 },
19397 LibCTarget{
19498 .name = "mips64el-linux-gnu-n64",
195 .zig_arch = Arch.mips64el,
196 .zig_abi = Abi.gnuabi64,
197 },
198 LibCTarget{
199 .name = "mips64el-linux-gnu-n64-nan2008",
200 .zig_arch = Arch.mips64el,
201 .zig_abi = null,
202 },
203 LibCTarget{
204 .name = "mips64el-linux-gnu-n64-nan2008-soft",
205 .zig_arch = Arch.mips64el,
206 .zig_abi = null,
207 },
208 LibCTarget{
209 .name = "mips64el-linux-gnu-n64-soft",
210 .zig_arch = Arch.mips64el,
211 .zig_abi = null,
99 .arch = MultiArch {.specific = Arch.mips64el},
100 .abi = MultiAbi {.specific = Abi.gnuabi64},
212101 },
213102 LibCTarget{
214103 .name = "mips64-linux-gnu-n32",
215 .zig_arch = Arch.mips64,
216 .zig_abi = Abi.gnuabin32,
217 },
218 LibCTarget{
219 .name = "mips64-linux-gnu-n32-nan2008",
220 .zig_arch = Arch.mips64,
221 .zig_abi = null,
222 },
223 LibCTarget{
224 .name = "mips64-linux-gnu-n32-nan2008-soft",
225 .zig_arch = Arch.mips64,
226 .zig_abi = null,
227 },
228 LibCTarget{
229 .name = "mips64-linux-gnu-n32-soft",
230 .zig_arch = Arch.mips64,
231 .zig_abi = null,
104 .arch = MultiArch {.specific = Arch.mips64},
105 .abi = MultiAbi {.specific = Abi.gnuabin32},
232106 },
233107 LibCTarget{
234108 .name = "mips64-linux-gnu-n64",
235 .zig_arch = Arch.mips64,
236 .zig_abi = Abi.gnuabi64,
237 },
238 LibCTarget{
239 .name = "mips64-linux-gnu-n64-nan2008",
240 .zig_arch = Arch.mips64,
241 .zig_abi = null,
242 },
243 LibCTarget{
244 .name = "mips64-linux-gnu-n64-nan2008-soft",
245 .zig_arch = Arch.mips64,
246 .zig_abi = null,
247 },
248 LibCTarget{
249 .name = "mips64-linux-gnu-n64-soft",
250 .zig_arch = Arch.mips64,
251 .zig_abi = null,
109 .arch = MultiArch {.specific = Arch.mips64},
110 .abi = MultiAbi {.specific = Abi.gnuabi64},
252111 },
253112 LibCTarget{
254113 .name = "mipsel-linux-gnu",
255 .zig_arch = Arch.mipsel,
256 .zig_abi = Abi.gnu,
257 },
258 LibCTarget{
259 .name = "mipsel-linux-gnu-nan2008",
260 .zig_arch = Arch.mipsel,
261 .zig_abi = null,
262 },
263 LibCTarget{
264 .name = "mipsel-linux-gnu-nan2008-soft",
265 .zig_arch = Arch.mipsel,
266 .zig_abi = null,
267 },
268 LibCTarget{
269 .name = "mipsel-linux-gnu-soft",
270 .zig_arch = Arch.mipsel,
271 .zig_abi = null,
114 .arch = MultiArch {.specific = Arch.mipsel},
115 .abi = MultiAbi {.specific = Abi.gnu},
272116 },
273117 LibCTarget{
274118 .name = "mips-linux-gnu",
275 .zig_arch = Arch.mips,
276 .zig_abi = Abi.gnu,
277 },
278 LibCTarget{
279 .name = "mips-linux-gnu-nan2008",
280 .zig_arch = Arch.mips,
281 .zig_abi = null,
282 },
283 LibCTarget{
284 .name = "mips-linux-gnu-nan2008-soft",
285 .zig_arch = Arch.mips,
286 .zig_abi = null,
287 },
288 LibCTarget{
289 .name = "mips-linux-gnu-soft",
290 .zig_arch = Arch.mips,
291 .zig_abi = null,
119 .arch = MultiArch {.specific = Arch.mips},
120 .abi = MultiAbi {.specific = Abi.gnu},
292121 },
293122 LibCTarget{
294123 .name = "powerpc64le-linux-gnu",
295 .zig_arch = Arch.powerpc64le,
296 .zig_abi = Abi.gnu,
124 .arch = MultiArch {.specific = Arch.powerpc64le},
125 .abi = MultiAbi {.specific = Abi.gnu},
297126 },
298127 LibCTarget{
299128 .name = "powerpc64-linux-gnu",
300 .zig_arch = Arch.powerpc64,
301 .zig_abi = Abi.gnu,
129 .arch = MultiArch {.specific = Arch.powerpc64},
130 .abi = MultiAbi {.specific = Abi.gnu},
302131 },
303132 LibCTarget{
304133 .name = "powerpc-linux-gnu",
305 .zig_arch = Arch.powerpc,
306 .zig_abi = Abi.gnu,
307 },
308 LibCTarget{
309 .name = "powerpc-linux-gnu-power4",
310 .zig_arch = Arch.powerpc,
311 .zig_abi = null,
312 },
313 LibCTarget{
314 .name = "powerpc-linux-gnu-soft",
315 .zig_arch = Arch.powerpc,
316 .zig_abi = null,
317 },
318 LibCTarget{
319 .name = "powerpc-linux-gnuspe",
320 .zig_arch = Arch.powerpc,
321 .zig_abi = null,
322 },
323 LibCTarget{
324 .name = "powerpc-linux-gnuspe-e500v1",
325 .zig_arch = Arch.powerpc,
326 .zig_abi = null,
134 .arch = MultiArch {.specific = Arch.powerpc},
135 .abi = MultiAbi {.specific = Abi.gnu},
327136 },
328137 LibCTarget{
329138 .name = "riscv64-linux-gnu-rv64imac-lp64",
330 .zig_arch = Arch.riscv64,
331 .zig_abi = Abi.gnu,
332 },
333 LibCTarget{
334 .name = "riscv64-linux-gnu-rv64imafdc-lp64",
335 .zig_arch = Arch.riscv64,
336 .zig_abi = null,
337 },
338 LibCTarget{
339 .name = "riscv64-linux-gnu-rv64imafdc-lp64d",
340 .zig_arch = Arch.riscv64,
341 .zig_abi = null,
342 },
343 LibCTarget{
344 .name = "s390-linux-gnu",
345 .zig_arch = null,
346 .zig_abi = Abi.gnu,
139 .arch = MultiArch {.specific = Arch.riscv64},
140 .abi = MultiAbi {.specific = Abi.gnu},
347141 },
348142 LibCTarget{
349143 .name = "s390x-linux-gnu",
350 .zig_arch = Arch.s390x,
351 .zig_abi = Abi.gnu,
352 },
353 LibCTarget{
354 .name = "sh3eb-linux-gnu",
355 .zig_arch = null,
356 .zig_abi = Abi.gnu,
357 },
358 LibCTarget{
359 .name = "sh3-linux-gnu",
360 .zig_arch = null,
361 .zig_abi = Abi.gnu,
362 },
363 LibCTarget{
364 .name = "sh4eb-linux-gnu",
365 .zig_arch = null,
366 .zig_abi = Abi.gnu,
367 },
368 LibCTarget{
369 .name = "sh4eb-linux-gnu-soft",
370 .zig_arch = null,
371 .zig_abi = null,
372 },
373 LibCTarget{
374 .name = "sh4-linux-gnu",
375 .zig_arch = null,
376 .zig_abi = Abi.gnu,
377 },
378 LibCTarget{
379 .name = "sh4-linux-gnu-soft",
380 .zig_arch = null,
381 .zig_abi = null,
144 .arch = MultiArch {.specific = Arch.s390x},
145 .abi = MultiAbi {.specific = Abi.gnu},
382146 },
383147 LibCTarget{
384148 .name = "sparc64-linux-gnu",
385 .zig_arch = Arch.sparc,
386 .zig_abi = Abi.gnu,
387 },
388 LibCTarget{
389 .name = "sparc64-linux-gnu-disable-multi-arch",
390 .zig_arch = Arch.sparc,
391 .zig_abi = null,
149 .arch = MultiArch {.specific = Arch.sparc},
150 .abi = MultiAbi {.specific = Abi.gnu},
392151 },
393152 LibCTarget{
394153 .name = "sparcv9-linux-gnu",
395 .zig_arch = Arch.sparcv9,
396 .zig_abi = Abi.gnu,
397 },
398 LibCTarget{
399 .name = "sparcv9-linux-gnu-disable-multi-arch",
400 .zig_arch = Arch.sparcv9,
401 .zig_abi = null,
154 .arch = MultiArch {.specific = Arch.sparcv9},
155 .abi = MultiAbi {.specific = Abi.gnu},
402156 },
403157 LibCTarget{
404158 .name = "x86_64-linux-gnu",
405 .zig_arch = Arch.x86_64,
406 .zig_abi = Abi.gnu,
407 },
408 LibCTarget{
409 .name = "x86_64-linux-gnu-disable-multi-arch",
410 .zig_arch = Arch.x86_64,
411 .zig_abi = null,
412 },
413 LibCTarget{
414 .name = "x86_64-linux-gnu-enable-obsolete",
415 .zig_arch = Arch.x86_64,
416 .zig_abi = null,
417 },
418 LibCTarget{
419 .name = "x86_64-linux-gnu-static-pie",
420 .zig_arch = Arch.x86_64,
421 .zig_abi = null,
159 .arch = MultiArch {.specific = Arch.x86_64},
160 .abi = MultiAbi {.specific = Abi.gnu},
422161 },
423162 LibCTarget{
424163 .name = "x86_64-linux-gnu-x32",
425 .zig_arch = Arch.x86_64,
426 .zig_abi = Abi.gnux32,
427 },
428 LibCTarget{
429 .name = "x86_64-linux-gnu-x32-static-pie",
430 .zig_arch = Arch.x86_64,
431 .zig_abi = null,
164 .arch = MultiArch {.specific = Arch.x86_64},
165 .abi = MultiAbi {.specific = Abi.gnux32},
432166 },
433167};
434168
......@@ -436,42 +170,52 @@ const musl_targets = [_]LibCTarget{
436170 LibCTarget{
437171 .name = "aarch64",
438172 .arch = MultiArch.aarch64,
173 .abi = MultiAbi.musl,
439174 },
440175 LibCTarget{
441176 .name = "arm",
442177 .arch = MultiArch.arm,
178 .abi = MultiAbi.musl,
443179 },
444180 LibCTarget{
445181 .name = "i386",
446182 .arch = MultiArch{ .specific = .i386 },
183 .abi = MultiAbi.musl,
447184 },
448185 LibCTarget{
449186 .name = "mips",
450187 .arch = MultiArch.mips,
188 .abi = MultiAbi.musl,
451189 },
452190 LibCTarget{
453191 .name = "mips64",
454192 .arch = MultiArch.mips64,
193 .abi = MultiAbi.musl,
455194 },
456195 LibCTarget{
457196 .name = "powerpc",
458197 .arch = MultiArch{ .specific = .powerpc },
198 .abi = MultiAbi.musl,
459199 },
460200 LibCTarget{
461201 .name = "powerpc64",
462202 .arch = MultiArch.powerpc64,
203 .abi = MultiAbi.musl,
463204 },
464205 LibCTarget{
465206 .name = "riscv64",
466207 .arch = MultiArch{ .specific = .riscv64 },
208 .abi = MultiAbi.musl,
467209 },
468210 LibCTarget{
469211 .name = "s390x",
470212 .arch = MultiArch{ .specific = .s390x },
213 .abi = MultiAbi.musl,
471214 },
472215 LibCTarget{
473216 .name = "x86_64",
474217 .arch = MultiArch{ .specific = .x86_64 },
218 .abi = MultiAbi.musl,
475219 },
476220};
477221
......@@ -562,7 +306,7 @@ pub fn main() !void {
562306 var libc_targets: []const LibCTarget = undefined;
563307 switch (vendor) {
564308 .musl => libc_targets = musl_targets,
565 .glibc => @panic("TODO this regressed"), // glibc_targets,
309 .glibc => libc_targets = glibc_targets,
566310 }
567311
568312 var path_table = PathTable.init(allocator);
......@@ -577,7 +321,7 @@ pub fn main() !void {
577321 .arch = libc_target.arch,
578322 .abi = switch (vendor) {
579323 .musl => .musl,
580 else => @panic("TODO this regressed"),
324 .glibc => libc_target.abi.specific,
581325 },
582326 .os = .linux,
583327 };