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;...@@ -20,6 +20,7 @@ const assert = std.debug.assert;
20const LibCTarget = struct {20const LibCTarget = struct {
21 name: []const u8,21 name: []const u8,
22 arch: MultiArch,22 arch: MultiArch,
23 abi: MultiAbi,
23};24};
2425
25const MultiArch = union(enum) {26const MultiArch = union(enum) {
...@@ -39,396 +40,129 @@ const MultiArch = union(enum) {...@@ -39,396 +40,129 @@ const MultiArch = union(enum) {
39 }40 }
40};41};
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
42const glibc_targets = [_]LibCTarget{56const glibc_targets = [_]LibCTarget{
43 LibCTarget{57 LibCTarget{
44 .name = "aarch64_be-linux-gnu",58 .name = "aarch64_be-linux-gnu",
45 .zig_arch = Arch.aarch64_be,59 .arch = MultiArch {.specific = Arch.aarch64_be},
46 .zig_abi = Abi.gnu,60 .abi = MultiAbi {.specific = Abi.gnu},
47 },61 },
48 LibCTarget{62 LibCTarget{
49 .name = "aarch64-linux-gnu",63 .name = "aarch64-linux-gnu",
50 .zig_arch = Arch.aarch64,64 .arch = MultiArch {.specific = Arch.aarch64},
51 .zig_abi = Abi.gnu,65 .abi = MultiAbi {.specific = 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,
62 },66 },
63 LibCTarget{67 LibCTarget{
64 .name = "armeb-linux-gnueabi",68 .name = "armeb-linux-gnueabi",
65 .zig_arch = Arch.armeb,69 .arch = MultiArch {.specific = Arch.armeb},
66 .zig_abi = Abi.gnueabi,70 .abi = MultiAbi {.specific = Abi.gnueabi},
67 },
68 LibCTarget{
69 .name = "armeb-linux-gnueabi-be8",
70 .zig_arch = Arch.armeb,
71 .zig_abi = null,
72 },71 },
73 LibCTarget{72 LibCTarget{
74 .name = "armeb-linux-gnueabihf",73 .name = "armeb-linux-gnueabihf",
75 .zig_arch = Arch.armeb,74 .arch = MultiArch {.specific = Arch.armeb},
76 .zig_abi = Abi.gnueabihf,75 .abi = MultiAbi {.specific = Abi.gnueabihf},
77 },
78 LibCTarget{
79 .name = "armeb-linux-gnueabihf-be8",
80 .zig_arch = Arch.armeb,
81 .zig_abi = null,
82 },76 },
83 LibCTarget{77 LibCTarget{
84 .name = "arm-linux-gnueabi",78 .name = "arm-linux-gnueabi",
85 .zig_arch = Arch.arm,79 .arch = MultiArch {.specific = Arch.arm},
86 .zig_abi = Abi.gnueabi,80 .abi = MultiAbi {.specific = Abi.gnueabi},
87 },81 },
88 LibCTarget{82 LibCTarget{
89 .name = "arm-linux-gnueabihf",83 .name = "arm-linux-gnueabihf",
90 .zig_arch = Arch.arm,84 .arch = MultiArch {.specific = Arch.arm},
91 .zig_abi = Abi.gnueabihf,85 .abi = MultiAbi {.specific = 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,
122 },86 },
123 LibCTarget{87 LibCTarget{
124 .name = "i686-linux-gnu",88 .name = "i686-linux-gnu",
125 .zig_arch = Arch.i386,89 .arch = MultiArch {.specific = Arch.i386},
126 .zig_abi = Abi.gnu,90 .abi = MultiAbi {.specific = 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,
172 },91 },
173 LibCTarget{92 LibCTarget{
174 .name = "mips64el-linux-gnu-n32",93 .name = "mips64el-linux-gnu-n32",
175 .zig_arch = Arch.mips64el,94 .arch = MultiArch {.specific = Arch.mips64el},
176 .zig_abi = Abi.gnuabin32,95 .abi = MultiAbi {.specific = 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,
192 },96 },
193 LibCTarget{97 LibCTarget{
194 .name = "mips64el-linux-gnu-n64",98 .name = "mips64el-linux-gnu-n64",
195 .zig_arch = Arch.mips64el,99 .arch = MultiArch {.specific = Arch.mips64el},
196 .zig_abi = Abi.gnuabi64,100 .abi = MultiAbi {.specific = 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,
212 },101 },
213 LibCTarget{102 LibCTarget{
214 .name = "mips64-linux-gnu-n32",103 .name = "mips64-linux-gnu-n32",
215 .zig_arch = Arch.mips64,104 .arch = MultiArch {.specific = Arch.mips64},
216 .zig_abi = Abi.gnuabin32,105 .abi = MultiAbi {.specific = 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,
232 },106 },
233 LibCTarget{107 LibCTarget{
234 .name = "mips64-linux-gnu-n64",108 .name = "mips64-linux-gnu-n64",
235 .zig_arch = Arch.mips64,109 .arch = MultiArch {.specific = Arch.mips64},
236 .zig_abi = Abi.gnuabi64,110 .abi = MultiAbi {.specific = 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,
252 },111 },
253 LibCTarget{112 LibCTarget{
254 .name = "mipsel-linux-gnu",113 .name = "mipsel-linux-gnu",
255 .zig_arch = Arch.mipsel,114 .arch = MultiArch {.specific = Arch.mipsel},
256 .zig_abi = Abi.gnu,115 .abi = MultiAbi {.specific = 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,
272 },116 },
273 LibCTarget{117 LibCTarget{
274 .name = "mips-linux-gnu",118 .name = "mips-linux-gnu",
275 .zig_arch = Arch.mips,119 .arch = MultiArch {.specific = Arch.mips},
276 .zig_abi = Abi.gnu,120 .abi = MultiAbi {.specific = 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,
292 },121 },
293 LibCTarget{122 LibCTarget{
294 .name = "powerpc64le-linux-gnu",123 .name = "powerpc64le-linux-gnu",
295 .zig_arch = Arch.powerpc64le,124 .arch = MultiArch {.specific = Arch.powerpc64le},
296 .zig_abi = Abi.gnu,125 .abi = MultiAbi {.specific = Abi.gnu},
297 },126 },
298 LibCTarget{127 LibCTarget{
299 .name = "powerpc64-linux-gnu",128 .name = "powerpc64-linux-gnu",
300 .zig_arch = Arch.powerpc64,129 .arch = MultiArch {.specific = Arch.powerpc64},
301 .zig_abi = Abi.gnu,130 .abi = MultiAbi {.specific = Abi.gnu},
302 },131 },
303 LibCTarget{132 LibCTarget{
304 .name = "powerpc-linux-gnu",133 .name = "powerpc-linux-gnu",
305 .zig_arch = Arch.powerpc,134 .arch = MultiArch {.specific = Arch.powerpc},
306 .zig_abi = Abi.gnu,135 .abi = MultiAbi {.specific = 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,
327 },136 },
328 LibCTarget{137 LibCTarget{
329 .name = "riscv64-linux-gnu-rv64imac-lp64",138 .name = "riscv64-linux-gnu-rv64imac-lp64",
330 .zig_arch = Arch.riscv64,139 .arch = MultiArch {.specific = Arch.riscv64},
331 .zig_abi = Abi.gnu,140 .abi = MultiAbi {.specific = 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,
347 },141 },
348 LibCTarget{142 LibCTarget{
349 .name = "s390x-linux-gnu",143 .name = "s390x-linux-gnu",
350 .zig_arch = Arch.s390x,144 .arch = MultiArch {.specific = Arch.s390x},
351 .zig_abi = Abi.gnu,145 .abi = MultiAbi {.specific = 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,
382 },146 },
383 LibCTarget{147 LibCTarget{
384 .name = "sparc64-linux-gnu",148 .name = "sparc64-linux-gnu",
385 .zig_arch = Arch.sparc,149 .arch = MultiArch {.specific = Arch.sparc},
386 .zig_abi = Abi.gnu,150 .abi = MultiAbi {.specific = Abi.gnu},
387 },
388 LibCTarget{
389 .name = "sparc64-linux-gnu-disable-multi-arch",
390 .zig_arch = Arch.sparc,
391 .zig_abi = null,
392 },151 },
393 LibCTarget{152 LibCTarget{
394 .name = "sparcv9-linux-gnu",153 .name = "sparcv9-linux-gnu",
395 .zig_arch = Arch.sparcv9,154 .arch = MultiArch {.specific = Arch.sparcv9},
396 .zig_abi = Abi.gnu,155 .abi = MultiAbi {.specific = Abi.gnu},
397 },
398 LibCTarget{
399 .name = "sparcv9-linux-gnu-disable-multi-arch",
400 .zig_arch = Arch.sparcv9,
401 .zig_abi = null,
402 },156 },
403 LibCTarget{157 LibCTarget{
404 .name = "x86_64-linux-gnu",158 .name = "x86_64-linux-gnu",
405 .zig_arch = Arch.x86_64,159 .arch = MultiArch {.specific = Arch.x86_64},
406 .zig_abi = Abi.gnu,160 .abi = MultiAbi {.specific = 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,
422 },161 },
423 LibCTarget{162 LibCTarget{
424 .name = "x86_64-linux-gnu-x32",163 .name = "x86_64-linux-gnu-x32",
425 .zig_arch = Arch.x86_64,164 .arch = MultiArch {.specific = Arch.x86_64},
426 .zig_abi = Abi.gnux32,165 .abi = MultiAbi {.specific = Abi.gnux32},
427 },
428 LibCTarget{
429 .name = "x86_64-linux-gnu-x32-static-pie",
430 .zig_arch = Arch.x86_64,
431 .zig_abi = null,
432 },166 },
433};167};
434168
...@@ -436,42 +170,52 @@ const musl_targets = [_]LibCTarget{...@@ -436,42 +170,52 @@ const musl_targets = [_]LibCTarget{
436 LibCTarget{170 LibCTarget{
437 .name = "aarch64",171 .name = "aarch64",
438 .arch = MultiArch.aarch64,172 .arch = MultiArch.aarch64,
173 .abi = MultiAbi.musl,
439 },174 },
440 LibCTarget{175 LibCTarget{
441 .name = "arm",176 .name = "arm",
442 .arch = MultiArch.arm,177 .arch = MultiArch.arm,
178 .abi = MultiAbi.musl,
443 },179 },
444 LibCTarget{180 LibCTarget{
445 .name = "i386",181 .name = "i386",
446 .arch = MultiArch{ .specific = .i386 },182 .arch = MultiArch{ .specific = .i386 },
183 .abi = MultiAbi.musl,
447 },184 },
448 LibCTarget{185 LibCTarget{
449 .name = "mips",186 .name = "mips",
450 .arch = MultiArch.mips,187 .arch = MultiArch.mips,
188 .abi = MultiAbi.musl,
451 },189 },
452 LibCTarget{190 LibCTarget{
453 .name = "mips64",191 .name = "mips64",
454 .arch = MultiArch.mips64,192 .arch = MultiArch.mips64,
193 .abi = MultiAbi.musl,
455 },194 },
456 LibCTarget{195 LibCTarget{
457 .name = "powerpc",196 .name = "powerpc",
458 .arch = MultiArch{ .specific = .powerpc },197 .arch = MultiArch{ .specific = .powerpc },
198 .abi = MultiAbi.musl,
459 },199 },
460 LibCTarget{200 LibCTarget{
461 .name = "powerpc64",201 .name = "powerpc64",
462 .arch = MultiArch.powerpc64,202 .arch = MultiArch.powerpc64,
203 .abi = MultiAbi.musl,
463 },204 },
464 LibCTarget{205 LibCTarget{
465 .name = "riscv64",206 .name = "riscv64",
466 .arch = MultiArch{ .specific = .riscv64 },207 .arch = MultiArch{ .specific = .riscv64 },
208 .abi = MultiAbi.musl,
467 },209 },
468 LibCTarget{210 LibCTarget{
469 .name = "s390x",211 .name = "s390x",
470 .arch = MultiArch{ .specific = .s390x },212 .arch = MultiArch{ .specific = .s390x },
213 .abi = MultiAbi.musl,
471 },214 },
472 LibCTarget{215 LibCTarget{
473 .name = "x86_64",216 .name = "x86_64",
474 .arch = MultiArch{ .specific = .x86_64 },217 .arch = MultiArch{ .specific = .x86_64 },
218 .abi = MultiAbi.musl,
475 },219 },
476};220};
477221
...@@ -562,7 +306,7 @@ pub fn main() !void {...@@ -562,7 +306,7 @@ pub fn main() !void {
562 var libc_targets: []const LibCTarget = undefined;306 var libc_targets: []const LibCTarget = undefined;
563 switch (vendor) {307 switch (vendor) {
564 .musl => libc_targets = musl_targets,308 .musl => libc_targets = musl_targets,
565 .glibc => @panic("TODO this regressed"), // glibc_targets,309 .glibc => libc_targets = glibc_targets,
566 }310 }
567311
568 var path_table = PathTable.init(allocator);312 var path_table = PathTable.init(allocator);
...@@ -577,7 +321,7 @@ pub fn main() !void {...@@ -577,7 +321,7 @@ pub fn main() !void {
577 .arch = libc_target.arch,321 .arch = libc_target.arch,
578 .abi = switch (vendor) {322 .abi = switch (vendor) {
579 .musl => .musl,323 .musl => .musl,
580 else => @panic("TODO this regressed"),324 .glibc => libc_target.abi.specific,
581 },325 },
582 .os = .linux,326 .os = .linux,
583 };327 };