authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-03-03 22:52:03-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-03-03 22:52:03-05:00
log74fef9db6e520cdcdd8b6e0a32c94c73460ef0d0
tree7d90f80e337ab8c233bc1d596d4b6bc03a94b49e
parent67480cd5157fbea664fa392b1d8a0911579be5a3
signaturelock-open Commit is signed but in an unrecognized format.

update update_glibc tool to latest zig


2 files changed, 34 insertions(+), 36 deletions(-)

tools/process_headers.zig-1
......@@ -11,7 +11,6 @@
1111// You'll then have to manually update Zig source repo with these new files.
1212
1313const std = @import("std");
14const builtin = std.builtin;
1514const Arch = std.Target.Cpu.Arch;
1615const Abi = std.Target.Abi;
1716const OsTag = std.Target.Os.Tag;
tools/update_glibc.zig+34-35
......@@ -1,5 +1,4 @@
11const std = @import("std");
2const builtin = @import("builtin");
32const fs = std.fs;
43const fmt = std.fmt;
54const assert = std.debug.assert;
......@@ -11,8 +10,8 @@ const AbiList = struct {
1110 path: []const u8,
1211};
1312const ZigTarget = struct {
14 arch: @TagType(builtin.Arch),
15 abi: builtin.Abi,
13 arch: std.Target.Cpu.Arch,
14 abi: std.Target.Abi,
1615};
1716
1817const lib_names = [_][]const u8{
......@@ -27,18 +26,18 @@ const lib_names = [_][]const u8{
2726// n64/n32 are hardcoded elsewhere, based on .gnuabi64/.gnuabin32
2827const abi_lists = [_]AbiList{
2928 AbiList{
30 .targets = [_]ZigTarget{
29 .targets = &[_]ZigTarget{
3130 ZigTarget{ .arch = .aarch64, .abi = .gnu },
3231 ZigTarget{ .arch = .aarch64_be, .abi = .gnu },
3332 },
3433 .path = "aarch64",
3534 },
3635 AbiList{
37 .targets = [_]ZigTarget{ZigTarget{ .arch = .s390x, .abi = .gnu }},
36 .targets = &[_]ZigTarget{ZigTarget{ .arch = .s390x, .abi = .gnu }},
3837 .path = "s390/s390-64",
3938 },
4039 AbiList{
41 .targets = [_]ZigTarget{
40 .targets = &[_]ZigTarget{
4241 ZigTarget{ .arch = .arm, .abi = .gnueabi },
4342 ZigTarget{ .arch = .armeb, .abi = .gnueabi },
4443 ZigTarget{ .arch = .arm, .abi = .gnueabihf },
......@@ -47,66 +46,66 @@ const abi_lists = [_]AbiList{
4746 .path = "arm",
4847 },
4948 AbiList{
50 .targets = [_]ZigTarget{
49 .targets = &[_]ZigTarget{
5150 ZigTarget{ .arch = .sparc, .abi = .gnu },
5251 ZigTarget{ .arch = .sparcel, .abi = .gnu },
5352 },
5453 .path = "sparc/sparc32",
5554 },
5655 AbiList{
57 .targets = [_]ZigTarget{ZigTarget{ .arch = .sparcv9, .abi = .gnu }},
56 .targets = &[_]ZigTarget{ZigTarget{ .arch = .sparcv9, .abi = .gnu }},
5857 .path = "sparc/sparc64",
5958 },
6059 AbiList{
61 .targets = [_]ZigTarget{
60 .targets = &[_]ZigTarget{
6261 ZigTarget{ .arch = .mips64el, .abi = .gnuabi64 },
6362 ZigTarget{ .arch = .mips64, .abi = .gnuabi64 },
6463 },
6564 .path = "mips/mips64",
6665 },
6766 AbiList{
68 .targets = [_]ZigTarget{
67 .targets = &[_]ZigTarget{
6968 ZigTarget{ .arch = .mips64el, .abi = .gnuabin32 },
7069 ZigTarget{ .arch = .mips64, .abi = .gnuabin32 },
7170 },
7271 .path = "mips/mips64",
7372 },
7473 AbiList{
75 .targets = [_]ZigTarget{
74 .targets = &[_]ZigTarget{
7675 ZigTarget{ .arch = .mipsel, .abi = .gnueabihf },
7776 ZigTarget{ .arch = .mips, .abi = .gnueabihf },
7877 },
7978 .path = "mips/mips32",
8079 },
8180 AbiList{
82 .targets = [_]ZigTarget{
81 .targets = &[_]ZigTarget{
8382 ZigTarget{ .arch = .mipsel, .abi = .gnueabi },
8483 ZigTarget{ .arch = .mips, .abi = .gnueabi },
8584 },
8685 .path = "mips/mips32",
8786 },
8887 AbiList{
89 .targets = [_]ZigTarget{ZigTarget{ .arch = .x86_64, .abi = .gnu }},
88 .targets = &[_]ZigTarget{ZigTarget{ .arch = .x86_64, .abi = .gnu }},
9089 .path = "x86_64/64",
9190 },
9291 AbiList{
93 .targets = [_]ZigTarget{ZigTarget{ .arch = .x86_64, .abi = .gnux32 }},
92 .targets = &[_]ZigTarget{ZigTarget{ .arch = .x86_64, .abi = .gnux32 }},
9493 .path = "x86_64/x32",
9594 },
9695 AbiList{
97 .targets = [_]ZigTarget{ZigTarget{ .arch = .i386, .abi = .gnu }},
96 .targets = &[_]ZigTarget{ZigTarget{ .arch = .i386, .abi = .gnu }},
9897 .path = "i386",
9998 },
10099 AbiList{
101 .targets = [_]ZigTarget{ZigTarget{ .arch = .powerpc64le, .abi = .gnu }},
100 .targets = &[_]ZigTarget{ZigTarget{ .arch = .powerpc64le, .abi = .gnu }},
102101 .path = "powerpc/powerpc64/le",
103102 },
104103 AbiList{
105 .targets = [_]ZigTarget{ZigTarget{ .arch = .powerpc64, .abi = .gnu }},
104 .targets = &[_]ZigTarget{ZigTarget{ .arch = .powerpc64, .abi = .gnu }},
106105 .path = "powerpc/powerpc64/be",
107106 },
108107 AbiList{
109 .targets = [_]ZigTarget{
108 .targets = &[_]ZigTarget{
110109 ZigTarget{ .arch = .powerpc, .abi = .gnueabi },
111110 ZigTarget{ .arch = .powerpc, .abi = .gnueabihf },
112111 },
......@@ -137,8 +136,8 @@ pub fn main() !void {
137136 const in_glibc_dir = args[1]; // path to the unzipped tarball of glibc, e.g. ~/downloads/glibc-2.25
138137 const zig_src_dir = args[2]; // path to the source checkout of zig, lib dir, e.g. ~/zig-src/lib
139138
140 const prefix = try fs.path.join(allocator, [_][]const u8{ in_glibc_dir, "sysdeps", "unix", "sysv", "linux" });
141 const glibc_out_dir = try fs.path.join(allocator, [_][]const u8{ zig_src_dir, "libc", "glibc" });
139 const prefix = try fs.path.join(allocator, &[_][]const u8{ in_glibc_dir, "sysdeps", "unix", "sysv", "linux" });
140 const glibc_out_dir = try fs.path.join(allocator, &[_][]const u8{ zig_src_dir, "libc", "glibc" });
142141
143142 var global_fn_set = std.StringHashMap(Function).init(allocator);
144143 var global_ver_set = std.StringHashMap(usize).init(allocator);
......@@ -158,26 +157,26 @@ pub fn main() !void {
158157 const basename = try fmt.allocPrint(allocator, "lib{}.abilist", .{lib_name});
159158 const abi_list_filename = blk: {
160159 if (abi_list.targets[0].abi == .gnuabi64 and std.mem.eql(u8, lib_name, "c")) {
161 break :blk try fs.path.join(allocator, [_][]const u8{ prefix, abi_list.path, "n64", basename });
160 break :blk try fs.path.join(allocator, &[_][]const u8{ prefix, abi_list.path, "n64", basename });
162161 } else if (abi_list.targets[0].abi == .gnuabin32 and std.mem.eql(u8, lib_name, "c")) {
163 break :blk try fs.path.join(allocator, [_][]const u8{ prefix, abi_list.path, "n32", basename });
162 break :blk try fs.path.join(allocator, &[_][]const u8{ prefix, abi_list.path, "n32", basename });
164163 } else if (abi_list.targets[0].arch != .arm and
165164 abi_list.targets[0].abi == .gnueabihf and
166165 (std.mem.eql(u8, lib_name, "c") or
167166 (std.mem.eql(u8, lib_name, "m") and abi_list.targets[0].arch == .powerpc)))
168167 {
169 break :blk try fs.path.join(allocator, [_][]const u8{ prefix, abi_list.path, "fpu", basename });
168 break :blk try fs.path.join(allocator, &[_][]const u8{ prefix, abi_list.path, "fpu", basename });
170169 } else if (abi_list.targets[0].arch != .arm and
171170 abi_list.targets[0].abi == .gnueabi and
172171 (std.mem.eql(u8, lib_name, "c") or
173172 (std.mem.eql(u8, lib_name, "m") and abi_list.targets[0].arch == .powerpc)))
174173 {
175 break :blk try fs.path.join(allocator, [_][]const u8{ prefix, abi_list.path, "nofpu", basename });
174 break :blk try fs.path.join(allocator, &[_][]const u8{ prefix, abi_list.path, "nofpu", basename });
176175 }
177 break :blk try fs.path.join(allocator, [_][]const u8{ prefix, abi_list.path, basename });
176 break :blk try fs.path.join(allocator, &[_][]const u8{ prefix, abi_list.path, basename });
178177 };
179178 const contents = std.io.readFileAlloc(allocator, abi_list_filename) catch |err| {
180 std.debug.warn("unable to open {}: {}\n", .{abi_list_filename, err});
179 std.debug.warn("unable to open {}: {}\n", .{ abi_list_filename, err });
181180 std.process.exit(1);
182181 };
183182 var lines_it = std.mem.tokenize(contents, "\n");
......@@ -228,8 +227,8 @@ pub fn main() !void {
228227 break :blk list.toSliceConst();
229228 };
230229 {
231 const vers_txt_path = try fs.path.join(allocator, [_][]const u8{ glibc_out_dir, "vers.txt" });
232 const vers_txt_file = try fs.File.openWrite(vers_txt_path);
230 const vers_txt_path = try fs.path.join(allocator, &[_][]const u8{ glibc_out_dir, "vers.txt" });
231 const vers_txt_file = try fs.cwd().createFile(vers_txt_path, .{});
233232 defer vers_txt_file.close();
234233 var buffered = std.io.BufferedOutStream(fs.File.WriteError).init(&vers_txt_file.outStream().stream);
235234 const vers_txt = &buffered.stream;
......@@ -240,15 +239,15 @@ pub fn main() !void {
240239 try buffered.flush();
241240 }
242241 {
243 const fns_txt_path = try fs.path.join(allocator, [_][]const u8{ glibc_out_dir, "fns.txt" });
244 const fns_txt_file = try fs.File.openWrite(fns_txt_path);
242 const fns_txt_path = try fs.path.join(allocator, &[_][]const u8{ glibc_out_dir, "fns.txt" });
243 const fns_txt_file = try fs.cwd().createFile(fns_txt_path, .{});
245244 defer fns_txt_file.close();
246245 var buffered = std.io.BufferedOutStream(fs.File.WriteError).init(&fns_txt_file.outStream().stream);
247246 const fns_txt = &buffered.stream;
248247 for (global_fn_list) |name, i| {
249248 const kv = global_fn_set.get(name).?;
250249 kv.value.index = i;
251 try fns_txt.print("{} {}\n", .{name, kv.value.lib});
250 try fns_txt.print("{} {}\n", .{ name, kv.value.lib });
252251 }
253252 try buffered.flush();
254253 }
......@@ -271,8 +270,8 @@ pub fn main() !void {
271270 }
272271
273272 {
274 const abilist_txt_path = try fs.path.join(allocator, [_][]const u8{ glibc_out_dir, "abi.txt" });
275 const abilist_txt_file = try fs.File.openWrite(abilist_txt_path);
273 const abilist_txt_path = try fs.path.join(allocator, &[_][]const u8{ glibc_out_dir, "abi.txt" });
274 const abilist_txt_file = try fs.cwd().createFile(abilist_txt_path, .{});
276275 defer abilist_txt_file.close();
277276 var buffered = std.io.BufferedOutStream(fs.File.WriteError).init(&abilist_txt_file.outStream().stream);
278277 const abilist_txt = &buffered.stream;
......@@ -282,7 +281,7 @@ pub fn main() !void {
282281 const fn_vers_list = &target_functions.get(@ptrToInt(abi_list)).?.value.fn_vers_list;
283282 for (abi_list.targets) |target, it_i| {
284283 if (it_i != 0) try abilist_txt.writeByte(' ');
285 try abilist_txt.print("{}-linux-{}", .{@tagName(target.arch), @tagName(target.abi)});
284 try abilist_txt.print("{}-linux-{}", .{ @tagName(target.arch), @tagName(target.abi) });
286285 }
287286 try abilist_txt.writeByte('\n');
288287 // next, each line implicitly corresponds to a function
......@@ -304,7 +303,7 @@ pub fn main() !void {
304303}
305304
306305pub fn strCmpLessThan(a: []const u8, b: []const u8) bool {
307 return std.mem.compare(u8, a, b) == .LessThan;
306 return std.mem.order(u8, a, b) == .lt;
308307}
309308
310309pub fn versionLessThan(a: []const u8, b: []const u8) bool {