From d02838b71a0b0fd3495c1b714ab3c6da05441980 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Sat, 4 Apr 2020 14:43:51 -0400 Subject: [PATCH] add libutil to zig's glibc support --- lib/libc/glibc/abi.txt | 90 ++++++++++++++++++++++++++++++++++++++++++ lib/libc/glibc/fns.txt | 6 +++ src/glibc.cpp | 1 + src/target.cpp | 2 + tools/update_glibc.zig | 4 +- 5 files changed, 102 insertions(+), 1 deletion(-) diff --git a/lib/libc/glibc/abi.txt b/lib/libc/glibc/abi.txt index 4d8d6f5255..4832449214 100644 --- a/lib/libc/glibc/abi.txt +++ b/lib/libc/glibc/abi.txt @@ -1856,6 +1856,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu 29 29 29 +29 37 37 37 @@ -2422,6 +2423,10 @@ aarch64-linux-gnu aarch64_be-linux-gnu 29 29 29 +29 +29 +29 +29 37 37 37 @@ -2625,6 +2630,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu 29 29 29 +29 @@ -5572,6 +5578,7 @@ s390x-linux-gnu 5 5 5 +5 5 16 5 5 @@ -6151,7 +6158,11 @@ s390x-linux-gnu 37 37 37 +5 +5 5 16 +5 +5 31 5 5 5 @@ -6361,6 +6372,7 @@ s390x-linux-gnu 5 5 5 +5 @@ -9328,6 +9340,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf 16 16 16 +16 37 37 @@ -9894,6 +9907,10 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf 16 16 16 +16 +16 +16 +16 37 37 @@ -10108,6 +10125,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf 16 16 16 +16 21 16 37 @@ -13044,6 +13062,7 @@ sparc-linux-gnu sparcel-linux-gnu 0 5 0 0 +0 0 16 0 0 @@ -13623,10 +13642,14 @@ sparc-linux-gnu sparcel-linux-gnu 37 37 37 +0 +0 0 16 0 0 0 +0 +0 12 1 1 @@ -13833,6 +13856,7 @@ sparc-linux-gnu sparcel-linux-gnu 0 0 0 +0 @@ -16779,6 +16803,7 @@ sparcv9-linux-gnu 5 5 5 +0 5 5 5 @@ -17359,7 +17384,11 @@ sparcv9-linux-gnu 37 37 37 +0 +0 5 +0 +0 5 5 5 @@ -17565,6 +17594,7 @@ sparcv9-linux-gnu 16 5 5 +0 5 5 5 @@ -20520,6 +20550,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64 0 0 0 +0 5 5 5 @@ -21099,6 +21130,10 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64 0 0 0 +0 +0 +0 +0 12 5 5 @@ -21305,6 +21340,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64 0 0 0 +0 @@ -24256,6 +24292,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32 0 0 0 +0 5 5 5 @@ -24835,6 +24872,10 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32 0 0 0 +0 +0 +0 +0 12 5 5 @@ -25041,6 +25082,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32 0 0 0 +0 @@ -27992,6 +28034,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf 0 0 0 +0 5 5 5 @@ -28567,6 +28610,10 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf 37 37 +0 +0 +0 +0 0 0 0 @@ -28777,6 +28824,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf 0 0 0 +0 @@ -31728,6 +31776,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi 0 0 0 +0 5 5 5 @@ -32303,6 +32352,10 @@ mipsel-linux-gnueabi mips-linux-gnueabi 37 37 +0 +0 +0 +0 0 0 0 @@ -32513,6 +32566,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi 0 0 0 +0 @@ -35473,6 +35527,7 @@ x86_64-linux-gnu 10 10 10 +10 12 12 12 @@ -36043,6 +36098,10 @@ x86_64-linux-gnu 10 10 10 +10 +10 +10 +10 12 10 10 @@ -36249,6 +36308,7 @@ x86_64-linux-gnu 10 10 10 +10 @@ -39216,6 +39276,7 @@ x86_64-linux-gnux32 28 28 28 +28 36 37 37 @@ -39782,6 +39843,10 @@ x86_64-linux-gnux32 28 28 28 +28 +28 +28 +28 36 37 37 @@ -39985,6 +40050,7 @@ x86_64-linux-gnux32 28 28 28 +28 @@ -42936,6 +43002,7 @@ i386-linux-gnu 0 0 0 +0 1 5 5 @@ -43515,6 +43582,10 @@ i386-linux-gnu 0 0 0 +0 +0 +0 +0 12 1 1 @@ -43721,6 +43792,7 @@ i386-linux-gnu 0 0 0 +0 @@ -46688,6 +46760,7 @@ powerpc64le-linux-gnu 29 29 29 +29 36 37 37 @@ -47254,6 +47327,10 @@ powerpc64le-linux-gnu 29 29 29 +29 +29 +29 +29 36 37 37 @@ -47457,6 +47534,7 @@ powerpc64le-linux-gnu 29 29 29 +29 @@ -50404,6 +50482,7 @@ powerpc64-linux-gnu 12 12 12 +12 12 16 12 12 @@ -50983,7 +51062,11 @@ powerpc64-linux-gnu 37 37 +12 +12 12 16 +12 +12 12 15 12 12 @@ -51193,6 +51276,7 @@ powerpc64-linux-gnu 12 12 12 +12 @@ -54140,6 +54224,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf 0 5 0 0 +0 0 16 0 0 @@ -54719,7 +54804,11 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf 37 37 +0 +0 0 16 +0 +0 0 15 0 0 @@ -54929,6 +55018,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf 0 0 0 +0 diff --git a/lib/libc/glibc/fns.txt b/lib/libc/glibc/fns.txt index 4e2e126b0e..a1dd9b18e1 100644 --- a/lib/libc/glibc/fns.txt +++ b/lib/libc/glibc/fns.txt @@ -1834,6 +1834,7 @@ fopen c fopen64 c fopencookie c fork c +forkpty util fpathconf c fprintf c fputc c @@ -2414,7 +2415,11 @@ logf32 m logf32x m logf64 m logf64x m +login util +login_tty util logl m +logout util +logwtmp util longjmp c lrand48 c lrand48_r c @@ -2620,6 +2625,7 @@ openat c openat64 c opendir c openlog c +openpty util optarg c opterr c optind c diff --git a/src/glibc.cpp b/src/glibc.cpp index 75b77ec122..b78e140e1d 100644 --- a/src/glibc.cpp +++ b/src/glibc.cpp @@ -17,6 +17,7 @@ static const ZigGLibCLib glibc_libs[] = { {"dl", 2}, {"rt", 1}, {"ld", 2}, + {"util", 1}, }; Error glibc_load_metadata(ZigGLibCAbi **out_result, Buf *zig_lib_dir, bool verbose) { diff --git a/src/target.cpp b/src/target.cpp index da19f76f45..73c0924ab8 100644 --- a/src/target.cpp +++ b/src/target.cpp @@ -1238,6 +1238,8 @@ bool target_is_libc_lib_name(const ZigTarget *target, const char *name) { return true; if (strcmp(name, "dl") == 0) return true; + if (strcmp(name, "util") == 0) + return true; } return false; diff --git a/tools/update_glibc.zig b/tools/update_glibc.zig index d118b1482e..38a7810579 100644 --- a/tools/update_glibc.zig +++ b/tools/update_glibc.zig @@ -21,6 +21,7 @@ const lib_names = [_][]const u8{ "pthread", "rt", "ld", + "util", }; // fpu/nofpu are hardcoded elsewhere, based on .gnueabi/.gnueabihf with an exception for .arm @@ -182,7 +183,8 @@ pub fn main() !void { } break :blk try fs.path.join(allocator, &[_][]const u8{ prefix, abi_list.path, basename }); }; - const contents = std.io.readFileAlloc(allocator, abi_list_filename) catch |err| { + const max_bytes = 10 * 1024 * 1024; + const contents = std.fs.cwd().readFileAlloc(allocator, abi_list_filename, max_bytes) catch |err| { std.debug.warn("unable to open {}: {}\n", .{ abi_list_filename, err }); std.process.exit(1); };