aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2019-09-07 15:08:47 -0400
committerAndrew Kelley <andrew@ziglang.org>2019-09-07 15:08:47 -0400
commitd3cf040c900c14feec427f3835f247b6a4c616bb (patch)
tree37b4ec4a4409f96627a307d6432e0196ee5f6056
parent9a18db8a80c96d206297e865d203b2a7d8a803ba (diff)
parentb21ad07767822070903633476f74f167c1793758 (diff)
downloadzig-d3cf040c900c14feec427f3835f247b6a4c616bb.tar.gz
zig-d3cf040c900c14feec427f3835f247b6a4c616bb.zip
Merge branch 'glibc-2.30'
closes #3098
-rw-r--r--lib/libc/glibc/abi.txt330
-rw-r--r--lib/libc/glibc/fns.txt22
-rw-r--r--lib/libc/glibc/vers.txt1
-rw-r--r--lib/libc/include/aarch64-linux-gnu/bits/hwcap.h5
-rw-r--r--lib/libc/include/aarch64-linux-gnu/gnu/stubs-lp64.h6
-rw-r--r--lib/libc/include/aarch64_be-linux-gnu/bits/hwcap.h5
-rw-r--r--lib/libc/include/aarch64_be-linux-gnu/gnu/stubs-lp64_be.h6
-rw-r--r--lib/libc/include/generic-glibc/bits/dirent_ext.h (renamed from lib/libc/include/i386-linux-gnu/bits/xtitypes.h)26
-rw-r--r--lib/libc/include/generic-glibc/bits/fcntl-linux.h2
-rw-r--r--lib/libc/include/generic-glibc/bits/in.h1
-rw-r--r--lib/libc/include/generic-glibc/bits/signal_ext.h (renamed from lib/libc/include/generic-glibc/bits/xtitypes.h)24
-rw-r--r--lib/libc/include/generic-glibc/bits/socket-constants.h (renamed from lib/libc/include/x86_64-linux-gnu/bits/xtitypes.h)35
-rw-r--r--lib/libc/include/generic-glibc/bits/socket.h98
-rw-r--r--lib/libc/include/generic-glibc/bits/statx-generic.h60
-rw-r--r--lib/libc/include/generic-glibc/bits/statx.h80
-rw-r--r--lib/libc/include/generic-glibc/bits/stropts.h230
-rw-r--r--lib/libc/include/generic-glibc/bits/syscall.h156
-rw-r--r--lib/libc/include/generic-glibc/bits/types.h19
-rw-r--r--lib/libc/include/generic-glibc/bits/types/struct_statx.h55
-rw-r--r--lib/libc/include/generic-glibc/bits/types/struct_statx_timestamp.h (renamed from lib/libc/include/s390x-linux-gnu/bits/xtitypes.h)26
-rw-r--r--lib/libc/include/generic-glibc/dirent.h2
-rw-r--r--lib/libc/include/generic-glibc/dlfcn.h12
-rw-r--r--lib/libc/include/generic-glibc/elf.h32
-rw-r--r--lib/libc/include/generic-glibc/features.h2
-rw-r--r--lib/libc/include/generic-glibc/finclude/math-vector-fortran.h (renamed from lib/libc/include/generic-glibc/bits/math-vector-fortran.h)0
-rw-r--r--lib/libc/include/generic-glibc/gconv.h11
-rw-r--r--lib/libc/include/generic-glibc/gnu/stubs-32.h2
-rw-r--r--lib/libc/include/generic-glibc/gnu/stubs-64.h (renamed from lib/libc/include/s390x-linux-gnu/gnu/stubs-64.h)6
-rw-r--r--lib/libc/include/generic-glibc/gnu/stubs-hard.h6
-rw-r--r--lib/libc/include/generic-glibc/gnu/stubs-n32_hard.h2
-rw-r--r--lib/libc/include/generic-glibc/gnu/stubs-n64_hard.h2
-rw-r--r--lib/libc/include/generic-glibc/gnu/stubs-o32_hard.h2
-rw-r--r--lib/libc/include/generic-glibc/gnu/stubs-soft.h6
-rw-r--r--lib/libc/include/generic-glibc/malloc.h20
-rw-r--r--lib/libc/include/generic-glibc/math.h17
-rw-r--r--lib/libc/include/generic-glibc/netinet/igmp.h1
-rw-r--r--lib/libc/include/generic-glibc/netinet/in.h1
-rw-r--r--lib/libc/include/generic-glibc/netinet/udp.h1
-rw-r--r--lib/libc/include/generic-glibc/pthread.h36
-rw-r--r--lib/libc/include/generic-glibc/resolv.h4
-rw-r--r--lib/libc/include/generic-glibc/search.h7
-rw-r--r--lib/libc/include/generic-glibc/semaphore.h30
-rw-r--r--lib/libc/include/generic-glibc/signal.h3
-rw-r--r--lib/libc/include/generic-glibc/stdlib.h13
-rw-r--r--lib/libc/include/generic-glibc/stropts.h92
-rw-r--r--lib/libc/include/generic-glibc/sys/cdefs.h8
-rw-r--r--lib/libc/include/generic-glibc/sys/ifunc.h42
-rw-r--r--lib/libc/include/generic-glibc/sys/io.h166
-rw-r--r--lib/libc/include/generic-glibc/sys/stropts.h1
-rw-r--r--lib/libc/include/generic-glibc/sys/sysctl.h5
-rw-r--r--lib/libc/include/generic-glibc/sys/types.h33
-rw-r--r--lib/libc/include/i386-linux-gnu/finclude/math-vector-fortran.h (renamed from lib/libc/include/i386-linux-gnu/bits/math-vector-fortran.h)0
-rw-r--r--lib/libc/include/i386-linux-gnu/sys/io.h183
-rw-r--r--lib/libc/include/mips-linux-gnu/bits/socket-constants.h38
-rw-r--r--lib/libc/include/mips64-linux-gnuabi64/bits/socket-constants.h38
-rw-r--r--lib/libc/include/mips64-linux-gnuabin32/bits/socket-constants.h38
-rw-r--r--lib/libc/include/mips64el-linux-gnuabi64/bits/socket-constants.h38
-rw-r--r--lib/libc/include/mips64el-linux-gnuabin32/bits/socket-constants.h38
-rw-r--r--lib/libc/include/mipsel-linux-gnu/bits/socket-constants.h38
-rw-r--r--lib/libc/include/powerpc-linux-gnu/bits/fenvinline.h37
-rw-r--r--lib/libc/include/powerpc-linux-gnu/bits/socket-constants.h38
-rw-r--r--lib/libc/include/powerpc-linux-gnu/fpu_control.h72
-rw-r--r--lib/libc/include/powerpc64-linux-gnu/bits/fenvinline.h37
-rw-r--r--lib/libc/include/powerpc64-linux-gnu/bits/socket-constants.h38
-rw-r--r--lib/libc/include/powerpc64-linux-gnu/fpu_control.h72
-rw-r--r--lib/libc/include/powerpc64-linux-gnu/gnu/stubs-64-v1.h2
-rw-r--r--lib/libc/include/powerpc64le-linux-gnu/bits/fenvinline.h37
-rw-r--r--lib/libc/include/powerpc64le-linux-gnu/bits/socket-constants.h38
-rw-r--r--lib/libc/include/powerpc64le-linux-gnu/fpu_control.h72
-rw-r--r--lib/libc/include/powerpc64le-linux-gnu/gnu/stubs-64-v2.h2
-rw-r--r--lib/libc/include/riscv64-linux-gnu/gnu/stubs-lp64.h6
-rw-r--r--lib/libc/include/s390x-linux-gnu/bits/hwcap.h6
-rw-r--r--lib/libc/include/sparc-linux-gnu/bits/socket-constants.h38
-rw-r--r--lib/libc/include/sparc-linux-gnu/gnu/stubs-64.h26
-rw-r--r--lib/libc/include/sparcv9-linux-gnu/bits/socket-constants.h38
-rw-r--r--lib/libc/include/sparcv9-linux-gnu/gnu/stubs-32.h26
-rw-r--r--lib/libc/include/x86_64-linux-gnu/finclude/math-vector-fortran.h (renamed from lib/libc/include/x86_64-linux-gnu/bits/math-vector-fortran.h)0
-rw-r--r--lib/libc/include/x86_64-linux-gnu/gnu/stubs-64.h4
-rw-r--r--lib/libc/include/x86_64-linux-gnu/sys/io.h183
-rw-r--r--lib/libc/include/x86_64-linux-gnux32/bits/xtitypes.h33
-rw-r--r--lib/libc/include/x86_64-linux-gnux32/finclude/math-vector-fortran.h (renamed from lib/libc/include/x86_64-linux-gnux32/bits/math-vector-fortran.h)0
-rw-r--r--lib/libc/include/x86_64-linux-gnux32/gnu/stubs-x32.h4
-rw-r--r--lib/libc/include/x86_64-linux-gnux32/sys/io.h183
-rw-r--r--tools/process_headers.zig396
-rw-r--r--tools/update_glibc.zig2
85 files changed, 1761 insertions, 1792 deletions
diff --git a/lib/libc/glibc/abi.txt b/lib/libc/glibc/abi.txt
index 244596c4e3..c2a19e8c91 100644
--- a/lib/libc/glibc/abi.txt
+++ b/lib/libc/glibc/abi.txt
@@ -514,6 +514,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
29
29
29
+
29
29
@@ -668,6 +669,18 @@ aarch64-linux-gnu aarch64_be-linux-gnu
+
+
+
+
+
+
+
+
+
+
+
+
29
29
29
@@ -1928,6 +1941,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
29
29
29
+40
29
29
29
@@ -2048,6 +2062,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
29
29
29
+40
29
29
29
@@ -2721,6 +2736,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
29
29
29
+40
29
29
29
@@ -2749,6 +2765,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
29
29
29
+40
29
29
29
@@ -2776,6 +2793,8 @@ aarch64-linux-gnu aarch64_be-linux-gnu
29
29
29
+40
+40
29
29
29
@@ -3002,6 +3021,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
29
29
29
+40
29
29
29
@@ -3370,6 +3390,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
37
37
29
+40
38
38
38
@@ -3443,6 +3464,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
29
29
29
+40
29
29
29
@@ -4218,6 +4240,7 @@ s390x-linux-gnu
5
5
5
+
27
27
@@ -4330,12 +4353,18 @@ s390x-linux-gnu
16
16
16
+40
+40
16
38
38
38
16
38
+40
+40
+40
+40
16
16
16
@@ -4356,6 +4385,8 @@ s390x-linux-gnu
16
16
16
+40
+40
16
16
16
@@ -4368,8 +4399,12 @@ s390x-linux-gnu
16
16
16
+40
+40
16
16
+40
+40
16
16
5
@@ -5632,6 +5667,7 @@ s390x-linux-gnu
5
5
5
+40
5
5
5
@@ -5752,6 +5788,7 @@ s390x-linux-gnu
5
5
5
+40
5
5
5
@@ -6425,6 +6462,7 @@ s390x-linux-gnu
5
5
5 13
+40
5 13
5 13
5 13
@@ -6453,6 +6491,7 @@ s390x-linux-gnu
5
5
5
+40
24
16
5
@@ -6480,6 +6519,8 @@ s390x-linux-gnu
16
5
5
+40
+40
5
5
5
@@ -6706,6 +6747,7 @@ s390x-linux-gnu
5
5
5
+40
5
5
5
@@ -7074,6 +7116,7 @@ s390x-linux-gnu
37
37
5 16
+40
38
38
38
@@ -7147,6 +7190,7 @@ s390x-linux-gnu
5
5
5
+40
5
5
5
@@ -7922,6 +7966,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
16
16
16
+
27
27
@@ -8076,6 +8121,18 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
+
+
+
+
+
+
+
+
+
+
+
+
16
16
16
@@ -9336,6 +9393,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
16
16
16
+40
16
16
16
@@ -9456,6 +9514,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
16
16
16
+40
16
16
16
@@ -10129,6 +10188,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
16
16
16
+40
16
16
16
@@ -10157,6 +10217,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
16
16
16
+40
24
16
16
@@ -10184,6 +10245,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
16
16
16
+40
+40
16
16
16
@@ -10410,6 +10473,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
16
16
16
+40
16
16
16
@@ -10778,6 +10842,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
37
16
+40
38
38
38
@@ -10851,6 +10916,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
16
16
16
+40
16
16
16
@@ -11626,6 +11692,7 @@ sparc-linux-gnu sparcel-linux-gnu
1
0
0
+3
27
27
@@ -11738,12 +11805,18 @@ sparc-linux-gnu sparcel-linux-gnu
16
16
16
+40
+40
16
38
38
38
16
38
+40
+40
+40
+40
16
16
16
@@ -11764,6 +11837,8 @@ sparc-linux-gnu sparcel-linux-gnu
16
16
16
+40
+40
16
16
16
@@ -11776,8 +11851,12 @@ sparc-linux-gnu sparcel-linux-gnu
16
16
16
+40
+40
16
16
+40
+40
16
16
0
@@ -13040,6 +13119,7 @@ sparc-linux-gnu sparcel-linux-gnu
1
1
0
+40
0
5
0
@@ -13160,6 +13240,7 @@ sparc-linux-gnu sparcel-linux-gnu
0 3
0
0
+40
0
0
0
@@ -13833,6 +13914,7 @@ sparc-linux-gnu sparcel-linux-gnu
5
0
0 13
+40
0 13
0 13
0 13
@@ -13861,6 +13943,7 @@ sparc-linux-gnu sparcel-linux-gnu
0
0
0
+40
24
16
0
@@ -13888,6 +13971,8 @@ sparc-linux-gnu sparcel-linux-gnu
16
1
0
+40
+40
1
1
1
@@ -14114,6 +14199,7 @@ sparc-linux-gnu sparcel-linux-gnu
0
0
0
+40
2
0 1
0 1
@@ -14482,6 +14568,7 @@ sparc-linux-gnu sparcel-linux-gnu
37
37
1 16
+40
38
38
38
@@ -14555,6 +14642,7 @@ sparc-linux-gnu sparcel-linux-gnu
0
0
0
+40
0
0
0
@@ -15330,6 +15418,7 @@ sparcv9-linux-gnu
5
5
5
+
27
27
@@ -15484,6 +15573,18 @@ sparcv9-linux-gnu
+
+
+
+
+
+
+
+
+
+
+
+
5
5
5
@@ -16744,6 +16845,7 @@ sparcv9-linux-gnu
5
5
5
+40
5
5
5
@@ -16864,6 +16966,7 @@ sparcv9-linux-gnu
5
5
5
+40
5
5
5
@@ -17537,6 +17640,7 @@ sparcv9-linux-gnu
5
5
5 13
+40
5 13
5 13
5 13
@@ -17565,6 +17669,7 @@ sparcv9-linux-gnu
5
5
5
+40
24
16
5
@@ -17592,6 +17697,8 @@ sparcv9-linux-gnu
16
5
5
+40
+40
5
5
5
@@ -17818,6 +17925,7 @@ sparcv9-linux-gnu
5
5
5
+40
5
5
5
@@ -18186,6 +18294,7 @@ sparcv9-linux-gnu
37
37
5
+40
38
38
38
@@ -18259,6 +18368,7 @@ sparcv9-linux-gnu
5
5
5
+40
5
5
5
@@ -19034,6 +19144,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
5
0
0
+
27
27
@@ -19188,6 +19299,18 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
+
+
+
+
+
+
+
+
+
+
+
+
0
0
0
@@ -20448,6 +20571,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
5
5
0
+40
0
5
0
@@ -20568,6 +20692,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
0 5
0
0
+40
0
0
0
@@ -21241,6 +21366,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
5
0
0 13
+40
0 13
0 13
0 13
@@ -21269,6 +21395,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
0
0
0
+40
24
16
0
@@ -21296,6 +21423,8 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
16
5
0
+40
+40
5
5
5
@@ -21522,6 +21651,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
0
0
0
+40
5
0 5
0 5
@@ -21890,6 +22020,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
37
37
5
+40
38
38
38
@@ -21963,6 +22094,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
0
0
0
+40
0
0
0
@@ -22738,6 +22870,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
5
0
0
+
27
27
@@ -22892,6 +23025,18 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
+
+
+
+
+
+
+
+
+
+
+
+
0
0
0
@@ -24152,6 +24297,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
5
5
0
+40
0
5
0
@@ -24272,6 +24418,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
0 5
0
0
+40
0
0
0
@@ -24945,6 +25092,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
5
0
0 13
+40
0 13
0 13
0 13
@@ -24973,6 +25121,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
0
0
0
+40
24
16
0
@@ -25000,6 +25149,8 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
16
5
0
+40
+40
5
5
5
@@ -25226,6 +25377,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
0
0
0
+40
5
0 5
0 5
@@ -25594,6 +25746,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
37
37
5
+40
38
38
38
@@ -25667,6 +25820,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
0
0
0
+40
0
0
0
@@ -26442,6 +26596,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
5
0
0
+
27
27
@@ -26596,6 +26751,18 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
+
+
+
+
+
+
+
+
+
+
+
+
0
0
0
@@ -27856,6 +28023,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
5
5
0
+40
0
5
0
@@ -27976,6 +28144,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
0 5
0
0
+40
0
0
0
@@ -28649,6 +28818,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
5
0
0 13
+40
0 13
0 13
0 13
@@ -28677,6 +28847,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
0
0
0
+40
24
16
0
@@ -28704,6 +28875,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
16
5
0
+40
+40
5
5
5
@@ -28930,6 +29103,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
0
0
0
+40
5
0 5
0 5
@@ -29298,6 +29472,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
37
5
+40
38
38
38
@@ -29371,6 +29546,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
0
0
0
+40
0
0
0
@@ -30146,6 +30322,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
5
0
0
+
27
27
@@ -30300,6 +30477,18 @@ mipsel-linux-gnueabi mips-linux-gnueabi
+
+
+
+
+
+
+
+
+
+
+
+
0
0
0
@@ -31560,6 +31749,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
5
5
0
+40
0
5
0
@@ -31680,6 +31870,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
0 5
0
0
+40
0
0
0
@@ -32353,6 +32544,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
5
0
0 13
+40
0 13
0 13
0 13
@@ -32381,6 +32573,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
0
0
0
+40
24
16
0
@@ -32408,6 +32601,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi
16
5
0
+40
+40
5
5
5
@@ -32634,6 +32829,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
0
0
0
+40
5
0 5
0 5
@@ -33002,6 +33198,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
37
5
+40
38
38
38
@@ -33075,6 +33272,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
0
0
0
+40
0
0
0
@@ -33850,6 +34048,7 @@ x86_64-linux-gnu
10
10
10
+
27
36
27
@@ -34004,6 +34203,18 @@ x86_64-linux-gnu
+
+
+
+
+
+
+
+
+
+
+
+
10
10
10
@@ -35264,6 +35475,7 @@ x86_64-linux-gnu
10
10
10
+40
10
10
10
@@ -35384,6 +35596,7 @@ x86_64-linux-gnu
10
10
10
+40
10
10
10
@@ -36057,6 +36270,7 @@ x86_64-linux-gnu
10
10
10 13
+40
10 13
10 13
10 13
@@ -36085,6 +36299,7 @@ x86_64-linux-gnu
10
10
10
+40
24
16
10
@@ -36112,6 +36327,8 @@ x86_64-linux-gnu
16
10
10
+40
+40
10
10
10
@@ -36338,6 +36555,7 @@ x86_64-linux-gnu
10
10
10
+40
10
10
10
@@ -36706,6 +36924,7 @@ x86_64-linux-gnu
37
37
10
+40
38
38
38
@@ -36779,6 +36998,7 @@ x86_64-linux-gnu
10
10
10
+40
10
10
10
@@ -37554,6 +37774,7 @@ x86_64-linux-gnux32
28
28
28
+
28
36
28
@@ -37708,6 +37929,18 @@ x86_64-linux-gnux32
+
+
+
+
+
+
+
+
+
+
+
+
28
28
28
@@ -38968,6 +39201,7 @@ x86_64-linux-gnux32
28
28
28
+40
28
28
28
@@ -39088,6 +39322,7 @@ x86_64-linux-gnux32
28
28
28
+40
28
28
28
@@ -39761,6 +39996,7 @@ x86_64-linux-gnux32
28
28
28
+40
28
28
28
@@ -39789,6 +40025,7 @@ x86_64-linux-gnux32
28
28
28
+40
28
28
28
@@ -39816,6 +40053,8 @@ x86_64-linux-gnux32
28
28
28
+40
+40
28
28
28
@@ -40042,6 +40281,7 @@ x86_64-linux-gnux32
28
28
28
+40
28
28
28
@@ -40410,6 +40650,7 @@ x86_64-linux-gnux32
37
37
28
+40
38
38
38
@@ -40483,6 +40724,7 @@ x86_64-linux-gnux32
28
28
28
+40
28
28
28
@@ -41258,6 +41500,7 @@ i386-linux-gnu
1
0
0
+3
27
36
27
@@ -41412,6 +41655,18 @@ i386-linux-gnu
+
+
+
+
+
+
+
+
+
+
+
+
0
0
0
@@ -42672,6 +42927,7 @@ i386-linux-gnu
1
1
0
+40
0
5
0
@@ -42792,6 +43048,7 @@ i386-linux-gnu
0 3
0
0
+40
0
0
0
@@ -43465,6 +43722,7 @@ i386-linux-gnu
5
0
0 13
+40
0 13
0 13
0 13
@@ -43493,6 +43751,7 @@ i386-linux-gnu
0
0
0
+40
24
16
0
@@ -43520,6 +43779,8 @@ i386-linux-gnu
16
1
0
+40
+40
1
1
1
@@ -43746,6 +44007,7 @@ i386-linux-gnu
0
0
0
+40
2
0 1
0 1
@@ -44114,6 +44376,7 @@ i386-linux-gnu
37
37
1
+40
38
38
38
@@ -44187,6 +44450,7 @@ i386-linux-gnu
0
0
0
+40
0
0
0
@@ -44962,6 +45226,7 @@ powerpc64le-linux-gnu
29
29
29
+
29
36
29
@@ -45074,12 +45339,18 @@ powerpc64le-linux-gnu
29
29
29
+40
+40
29
38
38
38
29
38
+40
+40
+40
+40
29
29
29
@@ -45100,6 +45371,8 @@ powerpc64le-linux-gnu
29
29
29
+40
+40
29
29
29
@@ -45112,8 +45385,12 @@ powerpc64le-linux-gnu
29
29
29
+40
+40
29
29
+40
+40
29
29
29
@@ -46376,6 +46653,7 @@ powerpc64le-linux-gnu
29
29
29
+40
29
29
29
@@ -46496,6 +46774,7 @@ powerpc64le-linux-gnu
29
29
29
+40
29
29
29
@@ -47169,6 +47448,7 @@ powerpc64le-linux-gnu
29
29
29
+40
29
29
29
@@ -47197,6 +47477,7 @@ powerpc64le-linux-gnu
29
29
29
+40
29
29
29
@@ -47224,6 +47505,8 @@ powerpc64le-linux-gnu
29
29
29
+40
+40
29
29
29
@@ -47450,6 +47733,7 @@ powerpc64le-linux-gnu
29
29
29
+40
29
29
29
@@ -47818,6 +48102,7 @@ powerpc64le-linux-gnu
37
37
29
+40
38
38
38
@@ -47891,6 +48176,7 @@ powerpc64le-linux-gnu
29
29
29
+40
29
29
29
@@ -48666,6 +48952,7 @@ powerpc64-linux-gnu
12
12
12
+
27
27
@@ -48778,12 +49065,18 @@ powerpc64-linux-gnu
16
16
16
+40
+40
16
38
38
38
16
38
+40
+40
+40
+40
16
16
16
@@ -48804,6 +49097,8 @@ powerpc64-linux-gnu
16
16
16
+40
+40
16
16
16
@@ -48816,8 +49111,12 @@ powerpc64-linux-gnu
16
16
16
+40
+40
16
16
+40
+40
16
16
12
@@ -50080,6 +50379,7 @@ powerpc64-linux-gnu
12
12
12
+40
12
12
12
@@ -50200,6 +50500,7 @@ powerpc64-linux-gnu
12
12
12
+40
12
12
12
@@ -50873,6 +51174,7 @@ powerpc64-linux-gnu
12
12
12 13
+40
12 13
12 13
12 13
@@ -50901,6 +51203,7 @@ powerpc64-linux-gnu
12
12
12
+40
24
16
12
@@ -50928,6 +51231,8 @@ powerpc64-linux-gnu
16
12
12
+40
+40
12
12
12
@@ -51154,6 +51459,7 @@ powerpc64-linux-gnu
12
12
12
+40
12
12
12
@@ -51522,6 +51828,7 @@ powerpc64-linux-gnu
37
12 16
+40
38
38
38
@@ -51595,6 +51902,7 @@ powerpc64-linux-gnu
12
12
12
+40
12
12
12
@@ -52370,6 +52678,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
1
0
0
+3
27
27
@@ -52482,12 +52791,18 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
16
16
16
+40
+40
16
38
38
38
16
38
+40
+40
+40
+40
16
16
16
@@ -52508,6 +52823,8 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
16
16
16
+40
+40
16
16
16
@@ -52520,8 +52837,12 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
16
16
16
+40
+40
16
16
+40
+40
16
16
0
@@ -53784,6 +54105,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
1
1
0
+40
0
5
0
@@ -53904,6 +54226,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
0 3
0
0
+40
0
0
0
@@ -54577,6 +54900,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
5
0
0 13
+40
0 13
0 13
0 13
@@ -54605,6 +54929,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
0
0
0
+40
24
16
0
@@ -54632,6 +54957,8 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
16
1
0
+40
+40
1
1
1
@@ -54858,6 +55185,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
0
0
0
+40
2
0 1
0 1
@@ -55226,6 +55554,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
37
1 16
+40
38
38
38
@@ -55299,6 +55628,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
0
0
0
+40
0
0
0
diff --git a/lib/libc/glibc/fns.txt b/lib/libc/glibc/fns.txt
index 566f6f9aee..028892f3ea 100644
--- a/lib/libc/glibc/fns.txt
+++ b/lib/libc/glibc/fns.txt
@@ -513,6 +513,7 @@ __libc_realloc c
__libc_sa_len c
__libc_start_main c
__libc_valloc c
+__libpthread_version_placeholder pthread
__log10_finite m
__log10f128_finite m
__log10f_finite m
@@ -625,12 +626,18 @@ __nldbl___vswprintf_chk c
__nldbl___vsyslog_chk c
__nldbl___vwprintf_chk c
__nldbl___wprintf_chk c
+__nldbl_argp_error c
+__nldbl_argp_failure c
__nldbl_asprintf c
__nldbl_daddl m
__nldbl_ddivl m
__nldbl_dmull m
__nldbl_dprintf c
__nldbl_dsubl m
+__nldbl_err c
+__nldbl_error c
+__nldbl_error_at_line c
+__nldbl_errx c
__nldbl_fprintf c
__nldbl_fscanf c
__nldbl_fwprintf c
@@ -651,6 +658,8 @@ __nldbl_swscanf c
__nldbl_syslog c
__nldbl_vasprintf c
__nldbl_vdprintf c
+__nldbl_verr c
+__nldbl_verrx c
__nldbl_vfprintf c
__nldbl_vfscanf c
__nldbl_vfwprintf c
@@ -663,8 +672,12 @@ __nldbl_vsscanf c
__nldbl_vswprintf c
__nldbl_vswscanf c
__nldbl_vsyslog c
+__nldbl_vwarn c
+__nldbl_vwarnx c
__nldbl_vwprintf c
__nldbl_vwscanf c
+__nldbl_warn c
+__nldbl_warnx c
__nldbl_wprintf c
__nldbl_wscanf c
__nss_configure_lookup c
@@ -1927,6 +1940,7 @@ getdate c
getdate_err c
getdate_r c
getdelim c
+getdents64 c
getdirentries c
getdirentries64 c
getdomainname c
@@ -2047,6 +2061,7 @@ getspnam c
getspnam_r c
getsubopt c
gettext c
+gettid c
gettimeofday c
getttyent c
getttynam c
@@ -2720,6 +2735,7 @@ pthread_barrierattr_init pthread
pthread_barrierattr_setpshared pthread
pthread_cancel pthread
pthread_cond_broadcast c
+pthread_cond_clockwait pthread
pthread_cond_destroy c
pthread_cond_init c
pthread_cond_signal c
@@ -2748,6 +2764,7 @@ pthread_key_create pthread
pthread_key_delete pthread
pthread_kill pthread
pthread_kill_other_threads_np pthread
+pthread_mutex_clocklock pthread
pthread_mutex_consistent pthread
pthread_mutex_consistent_np pthread
pthread_mutex_destroy c
@@ -2775,6 +2792,8 @@ pthread_mutexattr_setrobust pthread
pthread_mutexattr_setrobust_np pthread
pthread_mutexattr_settype pthread
pthread_once pthread
+pthread_rwlock_clockrdlock pthread
+pthread_rwlock_clockwrlock pthread
pthread_rwlock_destroy pthread
pthread_rwlock_init pthread
pthread_rwlock_rdlock pthread
@@ -3001,6 +3020,7 @@ seed48 c
seed48_r c
seekdir c
select c
+sem_clockwait pthread
sem_close pthread
sem_destroy pthread
sem_getvalue pthread
@@ -3369,6 +3389,7 @@ tgammaf32x m
tgammaf64 m
tgammaf64x m
tgammal m
+tgkill c
thrd_create pthread
thrd_current c
thrd_detach pthread
@@ -3442,6 +3463,7 @@ ttyname c
ttyname_r c
ttyslot c
twalk c
+twalk_r c
tzname c
tzset c
ualarm c
diff --git a/lib/libc/glibc/vers.txt b/lib/libc/glibc/vers.txt
index bffe5b890a..a81ba864c4 100644
--- a/lib/libc/glibc/vers.txt
+++ b/lib/libc/glibc/vers.txt
@@ -38,3 +38,4 @@ GLIBC_2.26
GLIBC_2.27
GLIBC_2.28
GLIBC_2.29
+GLIBC_2.30
diff --git a/lib/libc/include/aarch64-linux-gnu/bits/hwcap.h b/lib/libc/include/aarch64-linux-gnu/bits/hwcap.h
index bdeaa1e1d4..629784d923 100644
--- a/lib/libc/include/aarch64-linux-gnu/bits/hwcap.h
+++ b/lib/libc/include/aarch64-linux-gnu/bits/hwcap.h
@@ -50,4 +50,7 @@
#define HWCAP_USCAT (1 << 25)
#define HWCAP_ILRCPC (1 << 26)
#define HWCAP_FLAGM (1 << 27)
-#define HWCAP_SSBS (1 << 28) \ No newline at end of file
+#define HWCAP_SSBS (1 << 28)
+#define HWCAP_SB (1 << 29)
+#define HWCAP_PACA (1 << 30)
+#define HWCAP_PACG (1UL << 31) \ No newline at end of file
diff --git a/lib/libc/include/aarch64-linux-gnu/gnu/stubs-lp64.h b/lib/libc/include/aarch64-linux-gnu/gnu/stubs-lp64.h
index 9a016fc113..342cde4c98 100644
--- a/lib/libc/include/aarch64-linux-gnu/gnu/stubs-lp64.h
+++ b/lib/libc/include/aarch64-linux-gnu/gnu/stubs-lp64.h
@@ -13,15 +13,9 @@
#define __stub___compat_query_module
#define __stub___compat_uselib
#define __stub_chflags
-#define __stub_fattach
#define __stub_fchflags
-#define __stub_fdetach
-#define __stub_getmsg
-#define __stub_getpmsg
#define __stub_gtty
#define __stub_lchmod
-#define __stub_putmsg
-#define __stub_putpmsg
#define __stub_revoke
#define __stub_setlogin
#define __stub_sigreturn
diff --git a/lib/libc/include/aarch64_be-linux-gnu/bits/hwcap.h b/lib/libc/include/aarch64_be-linux-gnu/bits/hwcap.h
index bdeaa1e1d4..629784d923 100644
--- a/lib/libc/include/aarch64_be-linux-gnu/bits/hwcap.h
+++ b/lib/libc/include/aarch64_be-linux-gnu/bits/hwcap.h
@@ -50,4 +50,7 @@
#define HWCAP_USCAT (1 << 25)
#define HWCAP_ILRCPC (1 << 26)
#define HWCAP_FLAGM (1 << 27)
-#define HWCAP_SSBS (1 << 28) \ No newline at end of file
+#define HWCAP_SSBS (1 << 28)
+#define HWCAP_SB (1 << 29)
+#define HWCAP_PACA (1 << 30)
+#define HWCAP_PACG (1UL << 31) \ No newline at end of file
diff --git a/lib/libc/include/aarch64_be-linux-gnu/gnu/stubs-lp64_be.h b/lib/libc/include/aarch64_be-linux-gnu/gnu/stubs-lp64_be.h
index 9a016fc113..342cde4c98 100644
--- a/lib/libc/include/aarch64_be-linux-gnu/gnu/stubs-lp64_be.h
+++ b/lib/libc/include/aarch64_be-linux-gnu/gnu/stubs-lp64_be.h
@@ -13,15 +13,9 @@
#define __stub___compat_query_module
#define __stub___compat_uselib
#define __stub_chflags
-#define __stub_fattach
#define __stub_fchflags
-#define __stub_fdetach
-#define __stub_getmsg
-#define __stub_getpmsg
#define __stub_gtty
#define __stub_lchmod
-#define __stub_putmsg
-#define __stub_putpmsg
#define __stub_revoke
#define __stub_setlogin
#define __stub_sigreturn
diff --git a/lib/libc/include/i386-linux-gnu/bits/xtitypes.h b/lib/libc/include/generic-glibc/bits/dirent_ext.h
index 1eb0c84d8f..fd2a6ebfde 100644
--- a/lib/libc/include/i386-linux-gnu/bits/xtitypes.h
+++ b/lib/libc/include/generic-glibc/bits/dirent_ext.h
@@ -1,5 +1,5 @@
-/* bits/xtitypes.h -- Define some types used by <bits/stropts.h>. x86-64.
- Copyright (C) 2002-2019 Free Software Foundation, Inc.
+/* System-specific extensions of <dirent.h>. Linux version.
+ Copyright (C) 2019 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -16,18 +16,18 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _STROPTS_H
-# error "Never include <bits/xtitypes.h> directly; use <stropts.h> instead."
+#ifndef _DIRENT_H
+# error "Never include <bits/dirent_ext.h> directly; use <dirent.h> instead."
#endif
-#ifndef _BITS_XTITYPES_H
-#define _BITS_XTITYPES_H 1
-
-#include <bits/types.h>
-
-/* This type is used by some structs in <bits/stropts.h>. */
-typedef __SLONG32_TYPE __t_scalar_t;
-typedef __ULONG32_TYPE __t_uscalar_t;
+__BEGIN_DECLS
+#ifdef __USE_GNU
+/* Read from the directory descriptor FD into LENGTH bytes at BUFFER.
+ Return the number of bytes read on success (0 for end of
+ directory), and -1 for failure. */
+extern __ssize_t getdents64 (int __fd, void *__buffer, size_t __length)
+ __THROW __nonnull ((2));
+#endif
-#endif /* bits/xtitypes.h */ \ No newline at end of file
+__END_DECLS \ No newline at end of file
diff --git a/lib/libc/include/generic-glibc/bits/fcntl-linux.h b/lib/libc/include/generic-glibc/bits/fcntl-linux.h
index f993e3b6f3..869be9f8ab 100644
--- a/lib/libc/include/generic-glibc/bits/fcntl-linux.h
+++ b/lib/libc/include/generic-glibc/bits/fcntl-linux.h
@@ -284,6 +284,8 @@ struct f_owner_ex
# define F_SEAL_SHRINK 0x0002 /* Prevent file from shrinking. */
# define F_SEAL_GROW 0x0004 /* Prevent file from growing. */
# define F_SEAL_WRITE 0x0008 /* Prevent writes. */
+# define F_SEAL_FUTURE_WRITE 0x0010 /* Prevent future writes while
+ mapped. */
#endif
#ifdef __USE_GNU
diff --git a/lib/libc/include/generic-glibc/bits/in.h b/lib/libc/include/generic-glibc/bits/in.h
index a33b7e7f14..08757c8eab 100644
--- a/lib/libc/include/generic-glibc/bits/in.h
+++ b/lib/libc/include/generic-glibc/bits/in.h
@@ -192,6 +192,7 @@ struct in_pktinfo
#define IPV6_JOIN_ANYCAST 27
#define IPV6_LEAVE_ANYCAST 28
#define IPV6_MULTICAST_ALL 29
+#define IPV6_ROUTER_ALERT_ISOLATE 30
#define IPV6_IPSEC_POLICY 34
#define IPV6_XFRM_POLICY 35
#define IPV6_HDRINCL 36
diff --git a/lib/libc/include/generic-glibc/bits/xtitypes.h b/lib/libc/include/generic-glibc/bits/signal_ext.h
index a84ace3507..1a937faf9b 100644
--- a/lib/libc/include/generic-glibc/bits/xtitypes.h
+++ b/lib/libc/include/generic-glibc/bits/signal_ext.h
@@ -1,5 +1,5 @@
-/* bits/xtitypes.h -- Define some types used by <bits/stropts.h>. Generic.
- Copyright (C) 2002-2019 Free Software Foundation, Inc.
+/* System-specific extensions of <signal.h>, Linux version.
+ Copyright (C) 2019 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -16,18 +16,16 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _STROPTS_H
-# error "Never include <bits/xtitypes.h> directly; use <stropts.h> instead."
+#ifndef _SIGNAL_H
+# error "Never include <bits/signal_ext.h> directly; use <signal.h> instead."
#endif
-#ifndef _BITS_XTITYPES_H
-#define _BITS_XTITYPES_H 1
+#ifdef __USE_GNU
-#include <bits/types.h>
+/* Send SIGNAL to the thread TID in the thread group (process)
+ identified by TGID. This function behaves like kill, but also
+ fails with ESRCH if the specified TID does not belong to the
+ specified thread group. */
+extern int tgkill (__pid_t __tgid, __pid_t __tid, int __signal);
-/* This type is used by some structs in <bits/stropts.h>. */
-typedef __SLONGWORD_TYPE __t_scalar_t;
-typedef __ULONGWORD_TYPE __t_uscalar_t;
-
-
-#endif /* bits/xtitypes.h */ \ No newline at end of file
+#endif /* __USE_GNU */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-linux-gnu/bits/xtitypes.h b/lib/libc/include/generic-glibc/bits/socket-constants.h
index 1eb0c84d8f..b5dd49b6df 100644
--- a/lib/libc/include/x86_64-linux-gnu/bits/xtitypes.h
+++ b/lib/libc/include/generic-glibc/bits/socket-constants.h
@@ -1,5 +1,5 @@
-/* bits/xtitypes.h -- Define some types used by <bits/stropts.h>. x86-64.
- Copyright (C) 2002-2019 Free Software Foundation, Inc.
+/* Socket constants which vary among Linux architectures.
+ Copyright (C) 2019 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -16,18 +16,23 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _STROPTS_H
-# error "Never include <bits/xtitypes.h> directly; use <stropts.h> instead."
+#ifndef _SYS_SOCKET_H
+# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead."
#endif
-#ifndef _BITS_XTITYPES_H
-#define _BITS_XTITYPES_H 1
-
-#include <bits/types.h>
-
-/* This type is used by some structs in <bits/stropts.h>. */
-typedef __SLONG32_TYPE __t_scalar_t;
-typedef __ULONG32_TYPE __t_uscalar_t;
-
-
-#endif /* bits/xtitypes.h */ \ No newline at end of file
+#define SOL_SOCKET 1
+#define SO_ACCEPTCONN 30
+#define SO_BROADCAST 6
+#define SO_DONTROUTE 5
+#define SO_ERROR 4
+#define SO_KEEPALIVE 9
+#define SO_LINGER 13
+#define SO_OOBINLINE 10
+#define SO_RCVBUF 8
+#define SO_RCVLOWAT 18
+#define SO_RCVTIMEO 20
+#define SO_REUSEADDR 2
+#define SO_SNDBUF 7
+#define SO_SNDLOWAT 19
+#define SO_SNDTIMEO 21
+#define SO_TYPE 3 \ No newline at end of file
diff --git a/lib/libc/include/generic-glibc/bits/socket.h b/lib/libc/include/generic-glibc/bits/socket.h
index 75c0b750a1..6702cca140 100644
--- a/lib/libc/include/generic-glibc/bits/socket.h
+++ b/lib/libc/include/generic-glibc/bits/socket.h
@@ -349,98 +349,12 @@ struct ucred
};
#endif
-/* Ugly workaround for unclean kernel headers. */
-#ifndef __USE_MISC
-# ifndef FIOGETOWN
-# define __SYS_SOCKET_H_undef_FIOGETOWN
-# endif
-# ifndef FIOSETOWN
-# define __SYS_SOCKET_H_undef_FIOSETOWN
-# endif
-# ifndef SIOCATMARK
-# define __SYS_SOCKET_H_undef_SIOCATMARK
-# endif
-# ifndef SIOCGPGRP
-# define __SYS_SOCKET_H_undef_SIOCGPGRP
-# endif
-# ifndef SIOCGSTAMP
-# define __SYS_SOCKET_H_undef_SIOCGSTAMP
-# endif
-# ifndef SIOCGSTAMPNS
-# define __SYS_SOCKET_H_undef_SIOCGSTAMPNS
-# endif
-# ifndef SIOCSPGRP
-# define __SYS_SOCKET_H_undef_SIOCSPGRP
-# endif
-#endif
-#ifndef IOCSIZE_MASK
-# define __SYS_SOCKET_H_undef_IOCSIZE_MASK
-#endif
-#ifndef IOCSIZE_SHIFT
-# define __SYS_SOCKET_H_undef_IOCSIZE_SHIFT
-#endif
-#ifndef IOC_IN
-# define __SYS_SOCKET_H_undef_IOC_IN
-#endif
-#ifndef IOC_INOUT
-# define __SYS_SOCKET_H_undef_IOC_INOUT
-#endif
-#ifndef IOC_OUT
-# define __SYS_SOCKET_H_undef_IOC_OUT
-#endif
-
-/* Get socket manipulation related informations from kernel headers. */
-#include <asm/socket.h>
-
-#ifndef __USE_MISC
-# ifdef __SYS_SOCKET_H_undef_FIOGETOWN
-# undef __SYS_SOCKET_H_undef_FIOGETOWN
-# undef FIOGETOWN
-# endif
-# ifdef __SYS_SOCKET_H_undef_FIOSETOWN
-# undef __SYS_SOCKET_H_undef_FIOSETOWN
-# undef FIOSETOWN
-# endif
-# ifdef __SYS_SOCKET_H_undef_SIOCATMARK
-# undef __SYS_SOCKET_H_undef_SIOCATMARK
-# undef SIOCATMARK
-# endif
-# ifdef __SYS_SOCKET_H_undef_SIOCGPGRP
-# undef __SYS_SOCKET_H_undef_SIOCGPGRP
-# undef SIOCGPGRP
-# endif
-# ifdef __SYS_SOCKET_H_undef_SIOCGSTAMP
-# undef __SYS_SOCKET_H_undef_SIOCGSTAMP
-# undef SIOCGSTAMP
-# endif
-# ifdef __SYS_SOCKET_H_undef_SIOCGSTAMPNS
-# undef __SYS_SOCKET_H_undef_SIOCGSTAMPNS
-# undef SIOCGSTAMPNS
-# endif
-# ifdef __SYS_SOCKET_H_undef_SIOCSPGRP
-# undef __SYS_SOCKET_H_undef_SIOCSPGRP
-# undef SIOCSPGRP
-# endif
-#endif
-#ifdef __SYS_SOCKET_H_undef_IOCSIZE_MASK
-# undef __SYS_SOCKET_H_undef_IOCSIZE_MASK
-# undef IOCSIZE_MASK
-#endif
-#ifdef __SYS_SOCKET_H_undef_IOCSIZE_SHIFT
-# undef __SYS_SOCKET_H_undef_IOCSIZE_SHIFT
-# undef IOCSIZE_SHIFT
-#endif
-#ifdef __SYS_SOCKET_H_undef_IOC_IN
-# undef __SYS_SOCKET_H_undef_IOC_IN
-# undef IOC_IN
-#endif
-#ifdef __SYS_SOCKET_H_undef_IOC_INOUT
-# undef __SYS_SOCKET_H_undef_IOC_INOUT
-# undef IOC_INOUT
-#endif
-#ifdef __SYS_SOCKET_H_undef_IOC_OUT
-# undef __SYS_SOCKET_H_undef_IOC_OUT
-# undef IOC_OUT
+#ifdef __USE_MISC
+# include <bits/types/time_t.h>
+# include <asm/socket.h>
+#else
+# define SO_DEBUG 1
+# include <bits/socket-constants.h>
#endif
/* Structure used to manipulate the SO_LINGER option. */
diff --git a/lib/libc/include/generic-glibc/bits/statx-generic.h b/lib/libc/include/generic-glibc/bits/statx-generic.h
new file mode 100644
index 0000000000..f2c2e208b1
--- /dev/null
+++ b/lib/libc/include/generic-glibc/bits/statx-generic.h
@@ -0,0 +1,60 @@
+/* Generic statx-related definitions and declarations.
+ Copyright (C) 2018-2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* This interface is based on <linux/stat.h> in Linux. */
+
+#ifndef _SYS_STAT_H
+# error Never include <bits/statx-generic.h> directly, include <sys/stat.h> instead.
+#endif
+
+#include <bits/types/struct_statx_timestamp.h>
+#include <bits/types/struct_statx.h>
+
+#ifndef STATX_TYPE
+# define STATX_TYPE 0x0001U
+# define STATX_MODE 0x0002U
+# define STATX_NLINK 0x0004U
+# define STATX_UID 0x0008U
+# define STATX_GID 0x0010U
+# define STATX_ATIME 0x0020U
+# define STATX_MTIME 0x0040U
+# define STATX_CTIME 0x0080U
+# define STATX_INO 0x0100U
+# define STATX_SIZE 0x0200U
+# define STATX_BLOCKS 0x0400U
+# define STATX_BASIC_STATS 0x07ffU
+# define STATX_ALL 0x0fffU
+# define STATX_BTIME 0x0800U
+# define STATX__RESERVED 0x80000000U
+
+# define STATX_ATTR_COMPRESSED 0x0004
+# define STATX_ATTR_IMMUTABLE 0x0010
+# define STATX_ATTR_APPEND 0x0020
+# define STATX_ATTR_NODUMP 0x0040
+# define STATX_ATTR_ENCRYPTED 0x0800
+# define STATX_ATTR_AUTOMOUNT 0x1000
+#endif /* !STATX_TYPE */
+
+__BEGIN_DECLS
+
+/* Fill *BUF with information about PATH in DIRFD. */
+int statx (int __dirfd, const char *__restrict __path, int __flags,
+ unsigned int __mask, struct statx *__restrict __buf)
+ __THROW __nonnull ((2, 5));
+
+__END_DECLS \ No newline at end of file
diff --git a/lib/libc/include/generic-glibc/bits/statx.h b/lib/libc/include/generic-glibc/bits/statx.h
index 552e8cd16b..dbfe1127fe 100644
--- a/lib/libc/include/generic-glibc/bits/statx.h
+++ b/lib/libc/include/generic-glibc/bits/statx.h
@@ -1,4 +1,4 @@
-/* statx-related definitions and declarations.
+/* statx-related definitions and declarations. Linux version.
Copyright (C) 2018-2019 Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -19,73 +19,19 @@
/* This interface is based on <linux/stat.h> in Linux. */
#ifndef _SYS_STAT_H
-# error Never include <bits/stat.x.h> directly, include <sys/stat.h> instead.
+# error Never include <bits/statx.h> directly, include <sys/stat.h> instead.
#endif
-struct statx_timestamp
-{
- __int64_t tv_sec;
- __uint32_t tv_nsec;
- __int32_t __statx_timestamp_pad1[1];
-};
+/* Use the Linux kernel header if available. */
-/* Warning: The kernel may add additional fields to this struct in the
- future. Only use this struct for calling the statx function, not
- for storing data. (Expansion will be controlled by the mask
- argument of the statx function.) */
-struct statx
-{
- __uint32_t stx_mask;
- __uint32_t stx_blksize;
- __uint64_t stx_attributes;
- __uint32_t stx_nlink;
- __uint32_t stx_uid;
- __uint32_t stx_gid;
- __uint16_t stx_mode;
- __uint16_t __statx_pad1[1];
- __uint64_t stx_ino;
- __uint64_t stx_size;
- __uint64_t stx_blocks;
- __uint64_t stx_attributes_mask;
- struct statx_timestamp stx_atime;
- struct statx_timestamp stx_btime;
- struct statx_timestamp stx_ctime;
- struct statx_timestamp stx_mtime;
- __uint32_t stx_rdev_major;
- __uint32_t stx_rdev_minor;
- __uint32_t stx_dev_major;
- __uint32_t stx_dev_minor;
- __uint64_t __statx_pad2[14];
-};
-
-#define STATX_TYPE 0x0001U
-#define STATX_MODE 0x0002U
-#define STATX_NLINK 0x0004U
-#define STATX_UID 0x0008U
-#define STATX_GID 0x0010U
-#define STATX_ATIME 0x0020U
-#define STATX_MTIME 0x0040U
-#define STATX_CTIME 0x0080U
-#define STATX_INO 0x0100U
-#define STATX_SIZE 0x0200U
-#define STATX_BLOCKS 0x0400U
-#define STATX_BASIC_STATS 0x07ffU
-#define STATX_ALL 0x0fffU
-#define STATX_BTIME 0x0800U
-#define STATX__RESERVED 0x80000000U
-
-#define STATX_ATTR_COMPRESSED 0x0004
-#define STATX_ATTR_IMMUTABLE 0x0010
-#define STATX_ATTR_APPEND 0x0020
-#define STATX_ATTR_NODUMP 0x0040
-#define STATX_ATTR_ENCRYPTED 0x0800
-#define STATX_ATTR_AUTOMOUNT 0x1000
-
-__BEGIN_DECLS
-
-/* Fill *BUF with information about PATH in DIRFD. */
-int statx (int __dirfd, const char *__restrict __path, int __flags,
- unsigned int __mask, struct statx *__restrict __buf)
- __THROW __nonnull ((2, 5));
+/* Use "" to work around incorrect macro expansion of the
+ __has_include argument (GCC PR 80005). */
+#if __glibc_has_include ("linux/stat.h")
+# include "linux/stat.h"
+# ifdef STATX_TYPE
+# define __statx_timestamp_defined 1
+# define __statx_defined 1
+# endif
+#endif
-__END_DECLS \ No newline at end of file
+#include <bits/statx-generic.h> \ No newline at end of file
diff --git a/lib/libc/include/generic-glibc/bits/stropts.h b/lib/libc/include/generic-glibc/bits/stropts.h
deleted file mode 100644
index 7248aae1c8..0000000000
--- a/lib/libc/include/generic-glibc/bits/stropts.h
+++ /dev/null
@@ -1,230 +0,0 @@
-/* Copyright (C) 1998-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#ifndef _STROPTS_H
-# error "Never include <bits/stropts.h> directly; use <stropts.h> instead."
-#endif
-
-#ifndef _BITS_STROPTS_H
-#define _BITS_STROPTS_H 1
-
-#include <bits/types.h>
-
-/* Macros used as `request' argument to `ioctl'. */
-#define __SID ('S' << 8)
-
-#define I_NREAD (__SID | 1) /* Counts the number of data bytes in the data
- block in the first message. */
-#define I_PUSH (__SID | 2) /* Push STREAMS module onto top of the current
- STREAM, just below the STREAM head. */
-#define I_POP (__SID | 3) /* Remove STREAMS module from just below the
- STREAM head. */
-#define I_LOOK (__SID | 4) /* Retrieve the name of the module just below
- the STREAM head and place it in a character
- string. */
-#define I_FLUSH (__SID | 5) /* Flush all input and/or output. */
-#define I_SRDOPT (__SID | 6) /* Sets the read mode. */
-#define I_GRDOPT (__SID | 7) /* Returns the current read mode setting. */
-#define I_STR (__SID | 8) /* Construct an internal STREAMS `ioctl'
- message and send that message downstream. */
-#define I_SETSIG (__SID | 9) /* Inform the STREAM head that the process
- wants the SIGPOLL signal issued. */
-#define I_GETSIG (__SID |10) /* Return the events for which the calling
- process is currently registered to be sent
- a SIGPOLL signal. */
-#define I_FIND (__SID |11) /* Compares the names of all modules currently
- present in the STREAM to the name pointed to
- by `arg'. */
-#define I_LINK (__SID |12) /* Connect two STREAMs. */
-#define I_UNLINK (__SID |13) /* Disconnects the two STREAMs. */
-#define I_PEEK (__SID |15) /* Allows a process to retrieve the information
- in the first message on the STREAM head read
- queue without taking the message off the
- queue. */
-#define I_FDINSERT (__SID |16) /* Create a message from the specified
- buffer(s), adds information about another
- STREAM, and send the message downstream. */
-#define I_SENDFD (__SID |17) /* Requests the STREAM associated with `fildes'
- to send a message, containing a file
- pointer, to the STREAM head at the other end
- of a STREAMS pipe. */
-#define I_RECVFD (__SID |14) /* Non-EFT definition. */
-#define I_SWROPT (__SID |19) /* Set the write mode. */
-#define I_GWROPT (__SID |20) /* Return the current write mode setting. */
-#define I_LIST (__SID |21) /* List all the module names on the STREAM, up
- to and including the topmost driver name. */
-#define I_PLINK (__SID |22) /* Connect two STREAMs with a persistent
- link. */
-#define I_PUNLINK (__SID |23) /* Disconnect the two STREAMs that were
- connected with a persistent link. */
-#define I_FLUSHBAND (__SID |28) /* Flush only band specified. */
-#define I_CKBAND (__SID |29) /* Check if the message of a given priority
- band exists on the STREAM head read
- queue. */
-#define I_GETBAND (__SID |30) /* Return the priority band of the first
- message on the STREAM head read queue. */
-#define I_ATMARK (__SID |31) /* See if the current message on the STREAM
- head read queue is "marked" by some module
- downstream. */
-#define I_SETCLTIME (__SID |32) /* Set the time the STREAM head will delay when
- a STREAM is closing and there is data on
- the write queues. */
-#define I_GETCLTIME (__SID |33) /* Get current value for closing timeout. */
-#define I_CANPUT (__SID |34) /* Check if a certain band is writable. */
-
-
-/* Used in `I_LOOK' request. */
-#define FMNAMESZ 8 /* compatibility w/UnixWare/Solaris. */
-
-/* Flush options. */
-#define FLUSHR 0x01 /* Flush read queues. */
-#define FLUSHW 0x02 /* Flush write queues. */
-#define FLUSHRW 0x03 /* Flush read and write queues. */
-#ifdef __USE_GNU
-# define FLUSHBAND 0x04 /* Flush only specified band. */
-#endif
-
-/* Possible arguments for `I_SETSIG'. */
-#define S_INPUT 0x0001 /* A message, other than a high-priority
- message, has arrived. */
-#define S_HIPRI 0x0002 /* A high-priority message is present. */
-#define S_OUTPUT 0x0004 /* The write queue for normal data is no longer
- full. */
-#define S_MSG 0x0008 /* A STREAMS signal message that contains the
- SIGPOLL signal reaches the front of the
- STREAM head read queue. */
-#define S_ERROR 0x0010 /* Notification of an error condition. */
-#define S_HANGUP 0x0020 /* Notification of a hangup. */
-#define S_RDNORM 0x0040 /* A normal message has arrived. */
-#define S_WRNORM S_OUTPUT
-#define S_RDBAND 0x0080 /* A message with a non-zero priority has
- arrived. */
-#define S_WRBAND 0x0100 /* The write queue for a non-zero priority
- band is no longer full. */
-#define S_BANDURG 0x0200 /* When used in conjunction with S_RDBAND,
- SIGURG is generated instead of SIGPOLL when
- a priority message reaches the front of the
- STREAM head read queue. */
-
-/* Option for `I_PEEK'. */
-#define RS_HIPRI 0x01 /* Only look for high-priority messages. */
-
-/* Options for `I_SRDOPT'. */
-#define RNORM 0x0000 /* Byte-STREAM mode, the default. */
-#define RMSGD 0x0001 /* Message-discard mode. */
-#define RMSGN 0x0002 /* Message-nondiscard mode. */
-#define RPROTDAT 0x0004 /* Deliver the control part of a message as
- data. */
-#define RPROTDIS 0x0008 /* Discard the control part of a message,
- delivering any data part. */
-#define RPROTNORM 0x0010 /* Fail `read' with EBADMSG if a message
- containing a control part is at the front
- of the STREAM head read queue. */
-#ifdef __USE_GNU
-# define RPROTMASK 0x001C /* The RPROT bits */
-#endif
-
-/* Possible mode for `I_SWROPT'. */
-#define SNDZERO 0x001 /* Send a zero-length message downstream when a
- `write' of 0 bytes occurs. */
-#ifdef __USE_GNU
-# define SNDPIPE 0x002 /* Send SIGPIPE on write and putmsg if
- sd_werror is set. */
-#endif
-
-/* Arguments for `I_ATMARK'. */
-#define ANYMARK 0x01 /* Check if the message is marked. */
-#define LASTMARK 0x02 /* Check if the message is the last one marked
- on the queue. */
-
-/* Argument for `I_UNLINK'. */
-#ifdef __USE_GNU
-# define MUXID_ALL (-1) /* Unlink all STREAMs linked to the STREAM
- associated with `fildes'. */
-#endif
-
-
-/* Macros for `getmsg', `getpmsg', `putmsg' and `putpmsg'. */
-#define MSG_HIPRI 0x01 /* Send/receive high priority message. */
-#define MSG_ANY 0x02 /* Receive any message. */
-#define MSG_BAND 0x04 /* Receive message from specified band. */
-
-/* Values returned by getmsg and getpmsg */
-#define MORECTL 1 /* More control information is left in
- message. */
-#define MOREDATA 2 /* More data is left in message. */
-
-
-/* Structure used for the I_FLUSHBAND ioctl on streams. */
-struct bandinfo
- {
- unsigned char bi_pri;
- int bi_flag;
- };
-
-struct strbuf
- {
- int maxlen; /* Maximum buffer length. */
- int len; /* Length of data. */
- char *buf; /* Pointer to buffer. */
- };
-
-struct strpeek
- {
- struct strbuf ctlbuf;
- struct strbuf databuf;
- t_uscalar_t flags; /* UnixWare/Solaris compatibility. */
- };
-
-struct strfdinsert
- {
- struct strbuf ctlbuf;
- struct strbuf databuf;
- t_uscalar_t flags; /* UnixWare/Solaris compatibility. */
- int fildes;
- int offset;
- };
-
-struct strioctl
- {
- int ic_cmd;
- int ic_timout;
- int ic_len;
- char *ic_dp;
- };
-
-struct strrecvfd
- {
- int fd;
- uid_t uid;
- gid_t gid;
- char __fill[8]; /* UnixWare/Solaris compatibility */
- };
-
-
-struct str_mlist
- {
- char l_name[FMNAMESZ + 1];
- };
-
-struct str_list
- {
- int sl_nmods;
- struct str_mlist *sl_modlist;
- };
-
-#endif /* bits/stropts.h */ \ No newline at end of file
diff --git a/lib/libc/include/generic-glibc/bits/syscall.h b/lib/libc/include/generic-glibc/bits/syscall.h
index 6ac44124c1..0fb3664008 100644
--- a/lib/libc/include/generic-glibc/bits/syscall.h
+++ b/lib/libc/include/generic-glibc/bits/syscall.h
@@ -1,11 +1,11 @@
/* Generated at libc build time from syscall list. */
-/* The system call list corresponds to kernel 4.20. */
+/* The system call list corresponds to kernel 5.2. */
#ifndef _SYSCALL_H
# error "Never use <bits/syscall.h> directly; include <sys/syscall.h> instead."
#endif
-#define __GLIBC_LINUX_VERSION_CODE 267264
+#define __GLIBC_LINUX_VERSION_CODE 328192
#ifdef __NR_FAST_atomic_update
# define SYS_FAST_atomic_update __NR_FAST_atomic_update
@@ -115,6 +115,10 @@
# define SYS_break __NR_break
#endif
+#ifdef __NR_breakpoint
+# define SYS_breakpoint __NR_breakpoint
+#endif
+
#ifdef __NR_brk
# define SYS_brk __NR_brk
#endif
@@ -159,22 +163,42 @@
# define SYS_clock_adjtime __NR_clock_adjtime
#endif
+#ifdef __NR_clock_adjtime64
+# define SYS_clock_adjtime64 __NR_clock_adjtime64
+#endif
+
#ifdef __NR_clock_getres
# define SYS_clock_getres __NR_clock_getres
#endif
+#ifdef __NR_clock_getres_time64
+# define SYS_clock_getres_time64 __NR_clock_getres_time64
+#endif
+
#ifdef __NR_clock_gettime
# define SYS_clock_gettime __NR_clock_gettime
#endif
+#ifdef __NR_clock_gettime64
+# define SYS_clock_gettime64 __NR_clock_gettime64
+#endif
+
#ifdef __NR_clock_nanosleep
# define SYS_clock_nanosleep __NR_clock_nanosleep
#endif
+#ifdef __NR_clock_nanosleep_time64
+# define SYS_clock_nanosleep_time64 __NR_clock_nanosleep_time64
+#endif
+
#ifdef __NR_clock_settime
# define SYS_clock_settime __NR_clock_settime
#endif
+#ifdef __NR_clock_settime64
+# define SYS_clock_settime64 __NR_clock_settime64
+#endif
+
#ifdef __NR_clone
# define SYS_clone __NR_clone
#endif
@@ -367,6 +391,10 @@
# define SYS_fork __NR_fork
#endif
+#ifdef __NR_fp_udfiex_crtl
+# define SYS_fp_udfiex_crtl __NR_fp_udfiex_crtl
+#endif
+
#ifdef __NR_free_hugepages
# define SYS_free_hugepages __NR_free_hugepages
#endif
@@ -375,10 +403,26 @@
# define SYS_fremovexattr __NR_fremovexattr
#endif
+#ifdef __NR_fsconfig
+# define SYS_fsconfig __NR_fsconfig
+#endif
+
#ifdef __NR_fsetxattr
# define SYS_fsetxattr __NR_fsetxattr
#endif
+#ifdef __NR_fsmount
+# define SYS_fsmount __NR_fsmount
+#endif
+
+#ifdef __NR_fsopen
+# define SYS_fsopen __NR_fsopen
+#endif
+
+#ifdef __NR_fspick
+# define SYS_fspick __NR_fspick
+#endif
+
#ifdef __NR_fstat
# define SYS_fstat __NR_fstat
#endif
@@ -419,6 +463,10 @@
# define SYS_futex __NR_futex
#endif
+#ifdef __NR_futex_time64
+# define SYS_futex_time64 __NR_futex_time64
+#endif
+
#ifdef __NR_futimesat
# define SYS_futimesat __NR_futimesat
#endif
@@ -439,6 +487,10 @@
# define SYS_get_thread_area __NR_get_thread_area
#endif
+#ifdef __NR_get_tls
+# define SYS_get_tls __NR_get_tls
+#endif
+
#ifdef __NR_getcpu
# define SYS_getcpu __NR_getcpu
#endif
@@ -655,6 +707,10 @@
# define SYS_io_pgetevents __NR_io_pgetevents
#endif
+#ifdef __NR_io_pgetevents_time64
+# define SYS_io_pgetevents_time64 __NR_io_pgetevents_time64
+#endif
+
#ifdef __NR_io_setup
# define SYS_io_setup __NR_io_setup
#endif
@@ -663,6 +719,18 @@
# define SYS_io_submit __NR_io_submit
#endif
+#ifdef __NR_io_uring_enter
+# define SYS_io_uring_enter __NR_io_uring_enter
+#endif
+
+#ifdef __NR_io_uring_register
+# define SYS_io_uring_register __NR_io_uring_register
+#endif
+
+#ifdef __NR_io_uring_setup
+# define SYS_io_uring_setup __NR_io_uring_setup
+#endif
+
#ifdef __NR_ioctl
# define SYS_ioctl __NR_ioctl
#endif
@@ -847,6 +915,10 @@
# define SYS_mount __NR_mount
#endif
+#ifdef __NR_move_mount
+# define SYS_move_mount __NR_move_mount
+#endif
+
#ifdef __NR_move_pages
# define SYS_move_pages __NR_move_pages
#endif
@@ -875,10 +947,18 @@
# define SYS_mq_timedreceive __NR_mq_timedreceive
#endif
+#ifdef __NR_mq_timedreceive_time64
+# define SYS_mq_timedreceive_time64 __NR_mq_timedreceive_time64
+#endif
+
#ifdef __NR_mq_timedsend
# define SYS_mq_timedsend __NR_mq_timedsend
#endif
+#ifdef __NR_mq_timedsend_time64
+# define SYS_mq_timedsend_time64 __NR_mq_timedsend_time64
+#endif
+
#ifdef __NR_mq_unlink
# define SYS_mq_unlink __NR_mq_unlink
#endif
@@ -951,6 +1031,10 @@
# define SYS_old_adjtimex __NR_old_adjtimex
#endif
+#ifdef __NR_old_getpagesize
+# define SYS_old_getpagesize __NR_old_getpagesize
+#endif
+
#ifdef __NR_oldfstat
# define SYS_oldfstat __NR_oldfstat
#endif
@@ -983,6 +1067,10 @@
# define SYS_open_by_handle_at __NR_open_by_handle_at
#endif
+#ifdef __NR_open_tree
+# define SYS_open_tree __NR_open_tree
+#endif
+
#ifdef __NR_openat
# define SYS_openat __NR_openat
#endif
@@ -1459,6 +1547,10 @@
# define SYS_personality __NR_personality
#endif
+#ifdef __NR_pidfd_send_signal
+# define SYS_pidfd_send_signal __NR_pidfd_send_signal
+#endif
+
#ifdef __NR_pipe
# define SYS_pipe __NR_pipe
#endif
@@ -1491,6 +1583,10 @@
# define SYS_ppoll __NR_ppoll
#endif
+#ifdef __NR_ppoll_time64
+# define SYS_ppoll_time64 __NR_ppoll_time64
+#endif
+
#ifdef __NR_prctl
# define SYS_prctl __NR_prctl
#endif
@@ -1531,6 +1627,10 @@
# define SYS_pselect6 __NR_pselect6
#endif
+#ifdef __NR_pselect6_time64
+# define SYS_pselect6_time64 __NR_pselect6_time64
+#endif
+
#ifdef __NR_ptrace
# define SYS_ptrace __NR_ptrace
#endif
@@ -1599,6 +1699,10 @@
# define SYS_recvmmsg __NR_recvmmsg
#endif
+#ifdef __NR_recvmmsg_time64
+# define SYS_recvmmsg_time64 __NR_recvmmsg_time64
+#endif
+
#ifdef __NR_recvmsg
# define SYS_recvmsg __NR_recvmsg
#endif
@@ -1671,6 +1775,10 @@
# define SYS_rt_sigtimedwait __NR_rt_sigtimedwait
#endif
+#ifdef __NR_rt_sigtimedwait_time64
+# define SYS_rt_sigtimedwait_time64 __NR_rt_sigtimedwait_time64
+#endif
+
#ifdef __NR_rt_tgsigqueueinfo
# define SYS_rt_tgsigqueueinfo __NR_rt_tgsigqueueinfo
#endif
@@ -1731,6 +1839,10 @@
# define SYS_sched_rr_get_interval __NR_sched_rr_get_interval
#endif
+#ifdef __NR_sched_rr_get_interval_time64
+# define SYS_sched_rr_get_interval_time64 __NR_sched_rr_get_interval_time64
+#endif
+
#ifdef __NR_sched_set_affinity
# define SYS_sched_set_affinity __NR_sched_set_affinity
#endif
@@ -1783,6 +1895,10 @@
# define SYS_semtimedop __NR_semtimedop
#endif
+#ifdef __NR_semtimedop_time64
+# define SYS_semtimedop_time64 __NR_semtimedop_time64
+#endif
+
#ifdef __NR_send
# define SYS_send __NR_send
#endif
@@ -1823,6 +1939,10 @@
# define SYS_set_tid_address __NR_set_tid_address
#endif
+#ifdef __NR_set_tls
+# define SYS_set_tls __NR_set_tls
+#endif
+
#ifdef __NR_setdomainname
# define SYS_setdomainname __NR_setdomainname
#endif
@@ -2171,10 +2291,18 @@
# define SYS_timer_gettime __NR_timer_gettime
#endif
+#ifdef __NR_timer_gettime64
+# define SYS_timer_gettime64 __NR_timer_gettime64
+#endif
+
#ifdef __NR_timer_settime
# define SYS_timer_settime __NR_timer_settime
#endif
+#ifdef __NR_timer_settime64
+# define SYS_timer_settime64 __NR_timer_settime64
+#endif
+
#ifdef __NR_timerfd
# define SYS_timerfd __NR_timerfd
#endif
@@ -2187,10 +2315,18 @@
# define SYS_timerfd_gettime __NR_timerfd_gettime
#endif
+#ifdef __NR_timerfd_gettime64
+# define SYS_timerfd_gettime64 __NR_timerfd_gettime64
+#endif
+
#ifdef __NR_timerfd_settime
# define SYS_timerfd_settime __NR_timerfd_settime
#endif
+#ifdef __NR_timerfd_settime64
+# define SYS_timerfd_settime64 __NR_timerfd_settime64
+#endif
+
#ifdef __NR_times
# define SYS_times __NR_times
#endif
@@ -2211,6 +2347,10 @@
# define SYS_tuxcall __NR_tuxcall
#endif
+#ifdef __NR_udftrap
+# define SYS_udftrap __NR_udftrap
+#endif
+
#ifdef __NR_ugetrlimit
# define SYS_ugetrlimit __NR_ugetrlimit
#endif
@@ -2255,6 +2395,14 @@
# define SYS_userfaultfd __NR_userfaultfd
#endif
+#ifdef __NR_usr26
+# define SYS_usr26 __NR_usr26
+#endif
+
+#ifdef __NR_usr32
+# define SYS_usr32 __NR_usr32
+#endif
+
#ifdef __NR_ustat
# define SYS_ustat __NR_ustat
#endif
@@ -2267,6 +2415,10 @@
# define SYS_utimensat __NR_utimensat
#endif
+#ifdef __NR_utimensat_time64
+# define SYS_utimensat_time64 __NR_utimensat_time64
+#endif
+
#ifdef __NR_utimes
# define SYS_utimes __NR_utimes
#endif
diff --git a/lib/libc/include/generic-glibc/bits/types.h b/lib/libc/include/generic-glibc/bits/types.h
index 124eb5cb58..3548ed5a4a 100644
--- a/lib/libc/include/generic-glibc/bits/types.h
+++ b/lib/libc/include/generic-glibc/bits/types.h
@@ -87,7 +87,7 @@ __extension__ typedef unsigned long long int __uintmax_t;
32 -- "natural" 32-bit type (always int)
64 -- "natural" 64-bit type (long or long long)
LONG32 -- 32-bit type, traditionally long
- QUAD -- 64-bit type, always long long
+ QUAD -- 64-bit type, traditionally long long
WORD -- natural type of __WORDSIZE bits (int or long)
LONGWORD -- type of __WORDSIZE bits, traditionally long
@@ -113,14 +113,14 @@ __extension__ typedef unsigned long long int __uintmax_t;
#define __SLONGWORD_TYPE long int
#define __ULONGWORD_TYPE unsigned long int
#if __WORDSIZE == 32
-# define __SQUAD_TYPE __quad_t
-# define __UQUAD_TYPE __u_quad_t
+# define __SQUAD_TYPE __int64_t
+# define __UQUAD_TYPE __uint64_t
# define __SWORD_TYPE int
# define __UWORD_TYPE unsigned int
# define __SLONG32_TYPE long int
# define __ULONG32_TYPE unsigned long int
-# define __S64_TYPE __quad_t
-# define __U64_TYPE __u_quad_t
+# define __S64_TYPE __int64_t
+# define __U64_TYPE __uint64_t
/* We want __extension__ before typedef's that use nonstandard base types
such as `long long' in C89 mode. */
# define __STD_TYPE __extension__ typedef
@@ -213,10 +213,13 @@ __STD_TYPE __U32_TYPE __socklen_t;
It is not currently necessary for this to be machine-specific. */
typedef int __sig_atomic_t;
-#if __TIMESIZE == 64
+/* Seconds since the Epoch, visible to user code when time_t is too
+ narrow only for consistency with the old way of widening too-narrow
+ types. User code should never use __time64_t. */
+#if __TIMESIZE == 64 && defined __LIBC
# define __time64_t __time_t
-#else
-__STD_TYPE __TIME64_T_TYPE __time64_t; /* Seconds since the Epoch. */
+#elif __TIMESIZE != 64
+__STD_TYPE __TIME64_T_TYPE __time64_t;
#endif
#undef __STD_TYPE
diff --git a/lib/libc/include/generic-glibc/bits/types/struct_statx.h b/lib/libc/include/generic-glibc/bits/types/struct_statx.h
new file mode 100644
index 0000000000..52ae740099
--- /dev/null
+++ b/lib/libc/include/generic-glibc/bits/types/struct_statx.h
@@ -0,0 +1,55 @@
+/* Definition of the generic version of struct statx.
+ Copyright (C) 2018-2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _SYS_STAT_H
+# error Never include <bits/types/struct_statx.h> directly, include <sys/stat.h> instead.
+#endif
+
+#ifndef __statx_defined
+#define __statx_defined 1
+
+/* Warning: The kernel may add additional fields to this struct in the
+ future. Only use this struct for calling the statx function, not
+ for storing data. (Expansion will be controlled by the mask
+ argument of the statx function.) */
+struct statx
+{
+ __uint32_t stx_mask;
+ __uint32_t stx_blksize;
+ __uint64_t stx_attributes;
+ __uint32_t stx_nlink;
+ __uint32_t stx_uid;
+ __uint32_t stx_gid;
+ __uint16_t stx_mode;
+ __uint16_t __statx_pad1[1];
+ __uint64_t stx_ino;
+ __uint64_t stx_size;
+ __uint64_t stx_blocks;
+ __uint64_t stx_attributes_mask;
+ struct statx_timestamp stx_atime;
+ struct statx_timestamp stx_btime;
+ struct statx_timestamp stx_ctime;
+ struct statx_timestamp stx_mtime;
+ __uint32_t stx_rdev_major;
+ __uint32_t stx_rdev_minor;
+ __uint32_t stx_dev_major;
+ __uint32_t stx_dev_minor;
+ __uint64_t __statx_pad2[14];
+};
+
+#endif /* __statx_defined */ \ No newline at end of file
diff --git a/lib/libc/include/s390x-linux-gnu/bits/xtitypes.h b/lib/libc/include/generic-glibc/bits/types/struct_statx_timestamp.h
index 5a67a56a51..786c2b5f9b 100644
--- a/lib/libc/include/s390x-linux-gnu/bits/xtitypes.h
+++ b/lib/libc/include/generic-glibc/bits/types/struct_statx_timestamp.h
@@ -1,5 +1,5 @@
-/* bits/xtitypes.h -- Define some types used by <bits/stropts.h>. S390/S390x
- Copyright (C) 2002-2019 Free Software Foundation, Inc.
+/* Definition of the generic version of struct statx_timestamp.
+ Copyright (C) 2018-2019 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -16,18 +16,18 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _STROPTS_H
-# error "Never include <bits/xtitypes.h> directly; use <stropts.h> instead."
+#ifndef _SYS_STAT_H
+# error Never include <bits/types/struct_statx_timestamp.h> directly, include <sys/stat.h> instead.
#endif
-#ifndef _BITS_XTITYPES_H
-#define _BITS_XTITYPES_H 1
+#ifndef __statx_timestamp_defined
+#define __statx_timestamp_defined 1
-#include <bits/types.h>
+struct statx_timestamp
+{
+ __int64_t tv_sec;
+ __uint32_t tv_nsec;
+ __int32_t __statx_timestamp_pad1[1];
+};
-/* This type is used by some structs in <bits/stropts.h>. */
-typedef __S32_TYPE __t_scalar_t;
-typedef __U32_TYPE __t_uscalar_t;
-
-
-#endif /* bits/xtitypes.h */ \ No newline at end of file
+#endif /* __statx_timestamp_defined */ \ No newline at end of file
diff --git a/lib/libc/include/generic-glibc/dirent.h b/lib/libc/include/generic-glibc/dirent.h
index ae3518630e..a74737d55c 100644
--- a/lib/libc/include/generic-glibc/dirent.h
+++ b/lib/libc/include/generic-glibc/dirent.h
@@ -401,4 +401,6 @@ extern int versionsort64 (const struct dirent64 **__e1,
__END_DECLS
+#include <bits/dirent_ext.h>
+
#endif /* dirent.h */ \ No newline at end of file
diff --git a/lib/libc/include/generic-glibc/dlfcn.h b/lib/libc/include/generic-glibc/dlfcn.h
index ae3e773941..8fb19d4cb3 100644
--- a/lib/libc/include/generic-glibc/dlfcn.h
+++ b/lib/libc/include/generic-glibc/dlfcn.h
@@ -180,7 +180,19 @@ typedef struct
{
size_t dls_size; /* Size in bytes of the whole buffer. */
unsigned int dls_cnt; /* Number of elements in `dls_serpath'. */
+# if __GNUC_PREREQ (3, 0)
+ /* The zero-length array avoids an unwanted array subscript check by
+ the compiler, while the surrounding anonymous union preserves the
+ historic size of the type. At the time of writing, GNU C does
+ not support structs with flexible array members in unions. */
+ __extension__ union
+ {
+ Dl_serpath dls_serpath[0]; /* Actually longer, dls_cnt elements. */
+ Dl_serpath __dls_serpath_pad[1];
+ };
+# else
Dl_serpath dls_serpath[1]; /* Actually longer, dls_cnt elements. */
+# endif
} Dl_serinfo;
#endif /* __USE_GNU */
diff --git a/lib/libc/include/generic-glibc/elf.h b/lib/libc/include/generic-glibc/elf.h
index 6ad2855896..70a52f4318 100644
--- a/lib/libc/include/generic-glibc/elf.h
+++ b/lib/libc/include/generic-glibc/elf.h
@@ -360,7 +360,7 @@ typedef struct
#define EM_RISCV 243 /* RISC-V */
#define EM_BPF 247 /* Linux BPF -- in-kernel virtual machine */
-#define EM_CSKY 252 /* C_SKY */
+#define EM_CSKY 252 /* C-SKY */
#define EM_NUM 253
@@ -809,9 +809,16 @@ typedef struct
#define NT_ARM_SYSTEM_CALL 0x404 /* ARM system call number */
#define NT_ARM_SVE 0x405 /* ARM Scalable Vector Extension
registers */
+#define NT_ARM_PAC_MASK 0x406 /* ARM pointer authentication
+ code masks. */
+#define NT_ARM_PACA_KEYS 0x407 /* ARM pointer authentication
+ address keys. */
+#define NT_ARM_PACG_KEYS 0x408 /* ARM pointer authentication
+ generic key. */
#define NT_VMCOREDD 0x700 /* Vmcore Device Dump Note. */
#define NT_MIPS_DSP 0x800 /* MIPS DSP ASE registers. */
#define NT_MIPS_FP_MODE 0x801 /* MIPS floating-point mode. */
+#define NT_MIPS_MSA 0x802 /* MIPS SIMD registers. */
/* Legal values for the note segment descriptor types for object files. */
@@ -987,6 +994,9 @@ typedef struct
#define DF_1_SINGLETON 0x02000000 /* Singleton symbols are used. */
#define DF_1_STUB 0x04000000
#define DF_1_PIE 0x08000000
+#define DF_1_KMOD 0x10000000
+#define DF_1_WEAKFILTER 0x20000000
+#define DF_1_NOCOMMON 0x40000000
/* Flags for the feature selection in DT_FEATURE_1. */
#define DTF_1_PARINIT 0x00000001
@@ -2854,6 +2864,13 @@ enum
#define R_AARCH64_TLSDESC 1031 /* TLS Descriptor. */
#define R_AARCH64_IRELATIVE 1032 /* STT_GNU_IFUNC relocation. */
+/* AArch64 specific values for the Dyn d_tag field. */
+#define DT_AARCH64_VARIANT_PCS (DT_LOPROC + 5)
+#define DT_AARCH64_NUM 6
+
+/* AArch64 specific values for the st_other field. */
+#define STO_AARCH64_VARIANT_PCS 0x80
+
/* ARM relocs. */
#define R_ARM_NONE 0 /* No reloc */
@@ -3022,7 +3039,7 @@ enum
/* Keep this the last entry. */
#define R_ARM_NUM 256
-/* csky */
+/* C-SKY */
#define R_CKCORE_NONE 0 /* no reloc */
#define R_CKCORE_ADDR32 1 /* direct 32 bit (S + A) */
#define R_CKCORE_PCRELIMM8BY4 2 /* disp ((S + A - P) >> 2) & 0xff */
@@ -3086,6 +3103,17 @@ enum
#define R_CKCORE_TLS_DTPOFF32 57
#define R_CKCORE_TLS_TPOFF32 58
+/* C-SKY elf header definition. */
+#define EF_CSKY_ABIMASK 0XF0000000
+#define EF_CSKY_OTHER 0X0FFF0000
+#define EF_CSKY_PROCESSOR 0X0000FFFF
+
+#define EF_CSKY_ABIV1 0X10000000
+#define EF_CSKY_ABIV2 0X20000000
+
+/* C-SKY attributes section. */
+#define SHT_CSKY_ATTRIBUTES (SHT_LOPROC + 1)
+
/* IA-64 specific declarations. */
/* Processor specific flags for the Ehdr e_flags field. */
diff --git a/lib/libc/include/generic-glibc/features.h b/lib/libc/include/generic-glibc/features.h
index 0a952454ef..b95876b732 100644
--- a/lib/libc/include/generic-glibc/features.h
+++ b/lib/libc/include/generic-glibc/features.h
@@ -439,7 +439,7 @@
/* Major and minor version number of the GNU C library package. Use
these macros to test for features in specific releases. */
#define __GLIBC__ 2
-#define __GLIBC_MINOR__ 29
+#define __GLIBC_MINOR__ 30
#define __GLIBC_PREREQ(maj, min) \
((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
diff --git a/lib/libc/include/generic-glibc/bits/math-vector-fortran.h b/lib/libc/include/generic-glibc/finclude/math-vector-fortran.h
index 2209132e2c..2209132e2c 100644
--- a/lib/libc/include/generic-glibc/bits/math-vector-fortran.h
+++ b/lib/libc/include/generic-glibc/finclude/math-vector-fortran.h
diff --git a/lib/libc/include/generic-glibc/gconv.h b/lib/libc/include/generic-glibc/gconv.h
index 700ee97ee9..d5500cf7ca 100644
--- a/lib/libc/include/generic-glibc/gconv.h
+++ b/lib/libc/include/generic-glibc/gconv.h
@@ -86,6 +86,8 @@ struct __gconv_step
struct __gconv_loaded_object *__shlib_handle;
const char *__modname;
+ /* For internal use by glibc. (Accesses to this member must occur
+ when the internal __gconv_lock mutex is acquired). */
int __counter;
char *__from_name;
@@ -142,13 +144,4 @@ typedef struct __gconv_info
__extension__ struct __gconv_step_data __data[0];
} *__gconv_t;
-/* Transliteration using the locale's data. */
-extern int __gconv_transliterate (struct __gconv_step *step,
- struct __gconv_step_data *step_data,
- const unsigned char *inbufstart,
- const unsigned char **inbufp,
- const unsigned char *inbufend,
- unsigned char **outbufstart,
- size_t *irreversible);
-
#endif /* gconv.h */ \ No newline at end of file
diff --git a/lib/libc/include/generic-glibc/gnu/stubs-32.h b/lib/libc/include/generic-glibc/gnu/stubs-32.h
index f5b3f7db15..12c0d956e8 100644
--- a/lib/libc/include/generic-glibc/gnu/stubs-32.h
+++ b/lib/libc/include/generic-glibc/gnu/stubs-32.h
@@ -8,9 +8,7 @@
#endif
#define __stub_chflags
-#define __stub_fattach
#define __stub_fchflags
-#define __stub_fdetach
#define __stub_gtty
#define __stub_lchmod
#define __stub_revoke
diff --git a/lib/libc/include/s390x-linux-gnu/gnu/stubs-64.h b/lib/libc/include/generic-glibc/gnu/stubs-64.h
index b7ab3fcab4..12c0d956e8 100644
--- a/lib/libc/include/s390x-linux-gnu/gnu/stubs-64.h
+++ b/lib/libc/include/generic-glibc/gnu/stubs-64.h
@@ -8,15 +8,9 @@
#endif
#define __stub_chflags
-#define __stub_fattach
#define __stub_fchflags
-#define __stub_fdetach
-#define __stub_getmsg
#define __stub_gtty
#define __stub_lchmod
-#define __stub_pkey_alloc
-#define __stub_pkey_free
-#define __stub_putmsg
#define __stub_revoke
#define __stub_setlogin
#define __stub_sigreturn
diff --git a/lib/libc/include/generic-glibc/gnu/stubs-hard.h b/lib/libc/include/generic-glibc/gnu/stubs-hard.h
index 8fa59209a2..add0d4871d 100644
--- a/lib/libc/include/generic-glibc/gnu/stubs-hard.h
+++ b/lib/libc/include/generic-glibc/gnu/stubs-hard.h
@@ -11,15 +11,9 @@
#define __stub___compat_get_kernel_syms
#define __stub___compat_query_module
#define __stub_chflags
-#define __stub_fattach
#define __stub_fchflags
-#define __stub_fdetach
-#define __stub_getmsg
-#define __stub_getpmsg
#define __stub_gtty
#define __stub_lchmod
-#define __stub_putmsg
-#define __stub_putpmsg
#define __stub_revoke
#define __stub_setlogin
#define __stub_sigreturn
diff --git a/lib/libc/include/generic-glibc/gnu/stubs-n32_hard.h b/lib/libc/include/generic-glibc/gnu/stubs-n32_hard.h
index a09b281b5e..d4c69865ed 100644
--- a/lib/libc/include/generic-glibc/gnu/stubs-n32_hard.h
+++ b/lib/libc/include/generic-glibc/gnu/stubs-n32_hard.h
@@ -10,9 +10,7 @@
#define __stub___compat_bdflush
#define __stub___compat_uselib
#define __stub_chflags
-#define __stub_fattach
#define __stub_fchflags
-#define __stub_fdetach
#define __stub_gtty
#define __stub_lchmod
#define __stub_revoke
diff --git a/lib/libc/include/generic-glibc/gnu/stubs-n64_hard.h b/lib/libc/include/generic-glibc/gnu/stubs-n64_hard.h
index a09b281b5e..d4c69865ed 100644
--- a/lib/libc/include/generic-glibc/gnu/stubs-n64_hard.h
+++ b/lib/libc/include/generic-glibc/gnu/stubs-n64_hard.h
@@ -10,9 +10,7 @@
#define __stub___compat_bdflush
#define __stub___compat_uselib
#define __stub_chflags
-#define __stub_fattach
#define __stub_fchflags
-#define __stub_fdetach
#define __stub_gtty
#define __stub_lchmod
#define __stub_revoke
diff --git a/lib/libc/include/generic-glibc/gnu/stubs-o32_hard.h b/lib/libc/include/generic-glibc/gnu/stubs-o32_hard.h
index f5b3f7db15..12c0d956e8 100644
--- a/lib/libc/include/generic-glibc/gnu/stubs-o32_hard.h
+++ b/lib/libc/include/generic-glibc/gnu/stubs-o32_hard.h
@@ -8,9 +8,7 @@
#endif
#define __stub_chflags
-#define __stub_fattach
#define __stub_fchflags
-#define __stub_fdetach
#define __stub_gtty
#define __stub_lchmod
#define __stub_revoke
diff --git a/lib/libc/include/generic-glibc/gnu/stubs-soft.h b/lib/libc/include/generic-glibc/gnu/stubs-soft.h
index 8fa59209a2..add0d4871d 100644
--- a/lib/libc/include/generic-glibc/gnu/stubs-soft.h
+++ b/lib/libc/include/generic-glibc/gnu/stubs-soft.h
@@ -11,15 +11,9 @@
#define __stub___compat_get_kernel_syms
#define __stub___compat_query_module
#define __stub_chflags
-#define __stub_fattach
#define __stub_fchflags
-#define __stub_fdetach
-#define __stub_getmsg
-#define __stub_getpmsg
#define __stub_gtty
#define __stub_lchmod
-#define __stub_putmsg
-#define __stub_putpmsg
#define __stub_revoke
#define __stub_setlogin
#define __stub_sigreturn
diff --git a/lib/libc/include/generic-glibc/malloc.h b/lib/libc/include/generic-glibc/malloc.h
index 79b8e4aded..684e19581d 100644
--- a/lib/libc/include/generic-glibc/malloc.h
+++ b/lib/libc/include/generic-glibc/malloc.h
@@ -35,11 +35,12 @@
__BEGIN_DECLS
/* Allocate SIZE bytes of memory. */
-extern void *malloc (size_t __size) __THROW __attribute_malloc__ __wur;
+extern void *malloc (size_t __size) __THROW __attribute_malloc__
+ __attribute_alloc_size__ ((1)) __wur;
/* Allocate NMEMB elements of SIZE bytes each, all initialized to 0. */
extern void *calloc (size_t __nmemb, size_t __size)
-__THROW __attribute_malloc__ __wur;
+__THROW __attribute_malloc__ __attribute_alloc_size__ ((1, 2)) __wur;
/* Re-allocate the previously allocated block in __ptr, making the new
block SIZE bytes long. */
@@ -47,7 +48,7 @@ __THROW __attribute_malloc__ __wur;
the same pointer that was passed to it, aliasing needs to be allowed
between objects pointed by the old and new pointers. */
extern void *realloc (void *__ptr, size_t __size)
-__THROW __attribute_warn_unused_result__;
+__THROW __attribute_warn_unused_result__ __attribute_alloc_size__ ((2));
/* Re-allocate the previously allocated block in PTR, making the new
block large enough for NMEMB elements of SIZE bytes each. */
@@ -55,21 +56,23 @@ __THROW __attribute_warn_unused_result__;
the same pointer that was passed to it, aliasing needs to be allowed
between objects pointed by the old and new pointers. */
extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size)
-__THROW __attribute_warn_unused_result__;
+__THROW __attribute_warn_unused_result__ __attribute_alloc_size__ ((2, 3));
/* Free a block allocated by `malloc', `realloc' or `calloc'. */
extern void free (void *__ptr) __THROW;
/* Allocate SIZE bytes allocated to ALIGNMENT bytes. */
extern void *memalign (size_t __alignment, size_t __size)
-__THROW __attribute_malloc__ __wur;
+__THROW __attribute_malloc__ __attribute_alloc_size__ ((2)) __wur;
/* Allocate SIZE bytes on a page boundary. */
-extern void *valloc (size_t __size) __THROW __attribute_malloc__ __wur;
+extern void *valloc (size_t __size) __THROW __attribute_malloc__
+ __attribute_alloc_size__ ((1)) __wur;
/* Equivalent to valloc(minimum-page-that-holds(n)), that is, round up
__size to nearest pagesize. */
-extern void *pvalloc (size_t __size) __THROW __attribute_malloc__ __wur;
+extern void *pvalloc (size_t __size) __THROW __attribute_malloc__
+ __attribute_alloc_size__ ((1)) __wur;
/* Underlying allocation function; successive calls should return
contiguous pieces of memory. */
@@ -156,9 +159,6 @@ extern void *(*__MALLOC_HOOK_VOLATILE __memalign_hook)(size_t __alignment,
__MALLOC_DEPRECATED;
extern void (*__MALLOC_HOOK_VOLATILE __after_morecore_hook) (void);
-/* Activate a standard set of debugging hooks. */
-extern void __malloc_check_init (void) __THROW __MALLOC_DEPRECATED;
-
__END_DECLS
#endif /* malloc.h */ \ No newline at end of file
diff --git a/lib/libc/include/generic-glibc/math.h b/lib/libc/include/generic-glibc/math.h
index 4a9cc395f8..a4b822ece8 100644
--- a/lib/libc/include/generic-glibc/math.h
+++ b/lib/libc/include/generic-glibc/math.h
@@ -874,7 +874,8 @@ enum
the __SUPPORT_SNAN__ check may be skipped for those versions. */
/* Return number of classification appropriate for X. */
-# if __GNUC_PREREQ (4,4) && !defined __SUPPORT_SNAN__ \
+# if ((__GNUC_PREREQ (4,4) && !defined __SUPPORT_SNAN__) \
+ || __glibc_clang_prereq (2,8)) \
&& (!defined __OPTIMIZE_SIZE__ || defined __cplusplus)
/* The check for __cplusplus allows the use of the builtin, even
when optimization for size is on. This is provided for
@@ -889,7 +890,7 @@ enum
# endif
/* Return nonzero value if sign of X is negative. */
-# if __GNUC_PREREQ (6,0)
+# if __GNUC_PREREQ (6,0) || __glibc_clang_prereq (3,3)
# define signbit(x) __builtin_signbit (x)
# elif defined __cplusplus
/* In C++ mode, __MATH_TG cannot be used, because it relies on
@@ -907,14 +908,16 @@ enum
# endif
/* Return nonzero value if X is not +-Inf or NaN. */
-# if __GNUC_PREREQ (4,4) && !defined __SUPPORT_SNAN__
+# if (__GNUC_PREREQ (4,4) && !defined __SUPPORT_SNAN__) \
+ || __glibc_clang_prereq (2,8)
# define isfinite(x) __builtin_isfinite (x)
# else
# define isfinite(x) __MATH_TG ((x), __finite, (x))
# endif
/* Return nonzero value if X is neither zero, subnormal, Inf, nor NaN. */
-# if __GNUC_PREREQ (4,4) && !defined __SUPPORT_SNAN__
+# if (__GNUC_PREREQ (4,4) && !defined __SUPPORT_SNAN__) \
+ || __glibc_clang_prereq (2,8)
# define isnormal(x) __builtin_isnormal (x)
# else
# define isnormal(x) (fpclassify (x) == FP_NORMAL)
@@ -922,7 +925,8 @@ enum
/* Return nonzero value if X is a NaN. We could use `fpclassify' but
we already have this functions `__isnan' and it is faster. */
-# if __GNUC_PREREQ (4,4) && !defined __SUPPORT_SNAN__
+# if (__GNUC_PREREQ (4,4) && !defined __SUPPORT_SNAN__) \
+ || __glibc_clang_prereq (2,8)
# define isnan(x) __builtin_isnan (x)
# else
# define isnan(x) __MATH_TG ((x), __isnan, (x))
@@ -939,7 +943,8 @@ enum
# define isinf(x) \
(__builtin_types_compatible_p (__typeof (x), _Float128) \
? __isinff128 (x) : __builtin_isinf_sign (x))
-# elif __GNUC_PREREQ (4,4) && !defined __SUPPORT_SNAN__
+# elif (__GNUC_PREREQ (4,4) && !defined __SUPPORT_SNAN__) \
+ || __glibc_clang_prereq (3,7)
# define isinf(x) __builtin_isinf_sign (x)
# else
# define isinf(x) __MATH_TG ((x), __isinf, (x))
diff --git a/lib/libc/include/generic-glibc/netinet/igmp.h b/lib/libc/include/generic-glibc/netinet/igmp.h
index f4052af414..1502d9ab03 100644
--- a/lib/libc/include/generic-glibc/netinet/igmp.h
+++ b/lib/libc/include/generic-glibc/netinet/igmp.h
@@ -86,6 +86,7 @@ struct igmp {
#define IGMP_MTRACE_RESP 0x1e /* traceroute resp.(to sender)*/
#define IGMP_MTRACE 0x1f /* mcast traceroute messages */
+#define IGMP_MRDISC_ADV 0x30 /* From RFC4286. */
#define IGMP_MAX_HOST_REPORT_DELAY 10 /* max delay for response to */
/* query (in seconds) according */
diff --git a/lib/libc/include/generic-glibc/netinet/in.h b/lib/libc/include/generic-glibc/netinet/in.h
index 8d0a0e2dcb..d02bbd5caf 100644
--- a/lib/libc/include/generic-glibc/netinet/in.h
+++ b/lib/libc/include/generic-glibc/netinet/in.h
@@ -204,6 +204,7 @@ enum
#define INADDR_UNSPEC_GROUP ((in_addr_t) 0xe0000000) /* 224.0.0.0 */
#define INADDR_ALLHOSTS_GROUP ((in_addr_t) 0xe0000001) /* 224.0.0.1 */
#define INADDR_ALLRTRS_GROUP ((in_addr_t) 0xe0000002) /* 224.0.0.2 */
+#define INADDR_ALLSNOOPERS_GROUP ((in_addr_t) 0xe000006a) /* 224.0.0.106 */
#define INADDR_MAX_LOCAL_GROUP ((in_addr_t) 0xe00000ff) /* 224.0.0.255 */
#if !__USE_KERNEL_IPV6_DEFS
diff --git a/lib/libc/include/generic-glibc/netinet/udp.h b/lib/libc/include/generic-glibc/netinet/udp.h
index 409f88b2cf..c2c87b3201 100644
--- a/lib/libc/include/generic-glibc/netinet/udp.h
+++ b/lib/libc/include/generic-glibc/netinet/udp.h
@@ -82,6 +82,7 @@ struct udphdr
#define UDP_NO_CHECK6_RX 102 /* Disable accepting checksum for UDP
over IPv6. */
#define UDP_SEGMENT 103 /* Set GSO segmentation size. */
+#define UDP_GRO 104 /* This socket can receive UDP GRO packets. */
/* UDP encapsulation types */
#define UDP_ENCAP_ESPINUDP_NON_IKE 1 /* draft-ietf-ipsec-nat-t-ike-00/01 */
diff --git a/lib/libc/include/generic-glibc/pthread.h b/lib/libc/include/generic-glibc/pthread.h
index 0edb831a05..2a93e215c4 100644
--- a/lib/libc/include/generic-glibc/pthread.h
+++ b/lib/libc/include/generic-glibc/pthread.h
@@ -770,6 +770,13 @@ extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
__abstime) __THROWNL __nonnull ((1, 2));
#endif
+#ifdef __USE_GNU
+extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex,
+ clockid_t __clockid,
+ const struct timespec *__restrict
+ __abstime) __THROWNL __nonnull ((1, 3));
+#endif
+
/* Unlock a mutex. */
extern int pthread_mutex_unlock (pthread_mutex_t *__mutex)
__THROWNL __nonnull ((1));
@@ -909,6 +916,13 @@ extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
__abstime) __THROWNL __nonnull ((1, 2));
# endif
+# ifdef __USE_GNU
+extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock,
+ clockid_t __clockid,
+ const struct timespec *__restrict
+ __abstime) __THROWNL __nonnull ((1, 3));
+# endif
+
/* Acquire write lock for RWLOCK. */
extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock)
__THROWNL __nonnull ((1));
@@ -924,6 +938,13 @@ extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
__abstime) __THROWNL __nonnull ((1, 2));
# endif
+# ifdef __USE_GNU
+extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock,
+ clockid_t __clockid,
+ const struct timespec *__restrict
+ __abstime) __THROWNL __nonnull ((1, 3));
+# endif
+
/* Unlock RWLOCK. */
extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock)
__THROWNL __nonnull ((1));
@@ -1003,6 +1024,21 @@ extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
const struct timespec *__restrict __abstime)
__nonnull ((1, 2, 3));
+# ifdef __USE_GNU
+/* Wait for condition variable COND to be signaled or broadcast until
+ ABSTIME measured by the specified clock. MUTEX is assumed to be
+ locked before. CLOCK is the clock to use. ABSTIME is an absolute
+ time specification against CLOCK's epoch.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond,
+ pthread_mutex_t *__restrict __mutex,
+ __clockid_t __clock_id,
+ const struct timespec *__restrict __abstime)
+ __nonnull ((1, 2, 4));
+# endif
+
/* Functions for handling condition variable attributes. */
/* Initialize condition variable attribute ATTR. */
diff --git a/lib/libc/include/generic-glibc/resolv.h b/lib/libc/include/generic-glibc/resolv.h
index 8dba91c802..184e6a0074 100644
--- a/lib/libc/include/generic-glibc/resolv.h
+++ b/lib/libc/include/generic-glibc/resolv.h
@@ -115,11 +115,7 @@ struct res_sym {
#define RES_DEFNAMES 0x00000080 /* use default domain name */
#define RES_STAYOPEN 0x00000100 /* Keep TCP socket open */
#define RES_DNSRCH 0x00000200 /* search up local domain tree */
-#define RES_INSECURE1 0x00000400 /* type 1 security disabled */
-#define RES_INSECURE2 0x00000800 /* type 2 security disabled */
#define RES_NOALIASES 0x00001000 /* shuts off HOSTALIASES feature */
-#define RES_USE_INET6 \
- __glibc_macro_warning ("RES_USE_INET6 is deprecated") 0x00002000
#define RES_ROTATE 0x00004000 /* rotate ns list after each query */
#define RES_NOCHECKNAME \
__glibc_macro_warning ("RES_NOCHECKNAME is deprecated") 0x00008000
diff --git a/lib/libc/include/generic-glibc/search.h b/lib/libc/include/generic-glibc/search.h
index f0dd98bc79..8ea7603891 100644
--- a/lib/libc/include/generic-glibc/search.h
+++ b/lib/libc/include/generic-glibc/search.h
@@ -150,6 +150,13 @@ typedef void (*__action_fn_t) (const void *__nodep, VISIT __value,
extern void twalk (const void *__root, __action_fn_t __action);
#ifdef __USE_GNU
+/* Like twalk, but pass down a closure parameter instead of the
+ level. */
+extern void twalk_r (const void *__root,
+ void (*) (const void *__nodep, VISIT __value,
+ void *__closure),
+ void *__closure);
+
/* Callback type for function to free a tree node. If the keys are atomic
data this function should do nothing. */
typedef void (*__free_fn_t) (void *__nodep);
diff --git a/lib/libc/include/generic-glibc/semaphore.h b/lib/libc/include/generic-glibc/semaphore.h
index c3d78053e9..595dec7abd 100644
--- a/lib/libc/include/generic-glibc/semaphore.h
+++ b/lib/libc/include/generic-glibc/semaphore.h
@@ -33,24 +33,26 @@ __BEGIN_DECLS
/* Initialize semaphore object SEM to VALUE. If PSHARED then share it
with other processes. */
extern int sem_init (sem_t *__sem, int __pshared, unsigned int __value)
- __THROW;
+ __THROW __nonnull ((1));
+
/* Free resources associated with semaphore object SEM. */
-extern int sem_destroy (sem_t *__sem) __THROW;
+extern int sem_destroy (sem_t *__sem) __THROW __nonnull ((1));
/* Open a named semaphore NAME with open flags OFLAG. */
-extern sem_t *sem_open (const char *__name, int __oflag, ...) __THROW;
+extern sem_t *sem_open (const char *__name, int __oflag, ...)
+ __THROW __nonnull ((1));
/* Close descriptor for named semaphore SEM. */
-extern int sem_close (sem_t *__sem) __THROW;
+extern int sem_close (sem_t *__sem) __THROW __nonnull ((1));
/* Remove named semaphore NAME. */
-extern int sem_unlink (const char *__name) __THROW;
+extern int sem_unlink (const char *__name) __THROW __nonnull ((1));
/* Wait for SEM being posted.
This function is a cancellation point and therefore not marked with
__THROW. */
-extern int sem_wait (sem_t *__sem);
+extern int sem_wait (sem_t *__sem) __nonnull ((1));
#ifdef __USE_XOPEN2K
/* Similar to `sem_wait' but wait only until ABSTIME.
@@ -58,18 +60,26 @@ extern int sem_wait (sem_t *__sem);
This function is a cancellation point and therefore not marked with
__THROW. */
extern int sem_timedwait (sem_t *__restrict __sem,
- const struct timespec *__restrict __abstime);
+ const struct timespec *__restrict __abstime)
+ __nonnull ((1, 2));
+#endif
+
+#ifdef __USE_GNU
+extern int sem_clockwait (sem_t *__restrict __sem,
+ clockid_t clock,
+ const struct timespec *__restrict __abstime)
+ __nonnull ((1, 3));
#endif
/* Test whether SEM is posted. */
-extern int sem_trywait (sem_t *__sem) __THROWNL;
+extern int sem_trywait (sem_t *__sem) __THROWNL __nonnull ((1));
/* Post SEM. */
-extern int sem_post (sem_t *__sem) __THROWNL;
+extern int sem_post (sem_t *__sem) __THROWNL __nonnull ((1));
/* Get current value of SEM and store it in *SVAL. */
extern int sem_getvalue (sem_t *__restrict __sem, int *__restrict __sval)
- __THROW;
+ __THROW __nonnull ((1, 2));
__END_DECLS
diff --git a/lib/libc/include/generic-glibc/signal.h b/lib/libc/include/generic-glibc/signal.h
index 944f3179aa..12999bc8de 100644
--- a/lib/libc/include/generic-glibc/signal.h
+++ b/lib/libc/include/generic-glibc/signal.h
@@ -370,6 +370,9 @@ extern int __libc_current_sigrtmax (void) __THROW;
#define SIGRTMIN (__libc_current_sigrtmin ())
#define SIGRTMAX (__libc_current_sigrtmax ())
+/* System-specific extensions. */
+#include <bits/signal_ext.h>
+
__END_DECLS
#endif /* not signal.h */ \ No newline at end of file
diff --git a/lib/libc/include/generic-glibc/stdlib.h b/lib/libc/include/generic-glibc/stdlib.h
index 152d7c0148..cfe0bf3318 100644
--- a/lib/libc/include/generic-glibc/stdlib.h
+++ b/lib/libc/include/generic-glibc/stdlib.h
@@ -536,10 +536,11 @@ extern int lcong48_r (unsigned short int __param[7],
#endif /* Use misc or X/Open. */
/* Allocate SIZE bytes of memory. */
-extern void *malloc (size_t __size) __THROW __attribute_malloc__ __wur;
+extern void *malloc (size_t __size) __THROW __attribute_malloc__
+ __attribute_alloc_size__ ((1)) __wur;
/* Allocate NMEMB elements of SIZE bytes each, all initialized to 0. */
extern void *calloc (size_t __nmemb, size_t __size)
- __THROW __attribute_malloc__ __wur;
+ __THROW __attribute_malloc__ __attribute_alloc_size__ ((1, 2)) __wur;
/* Re-allocate the previously allocated block
in PTR, making the new block SIZE bytes long. */
@@ -547,7 +548,7 @@ extern void *calloc (size_t __nmemb, size_t __size)
the same pointer that was passed to it, aliasing needs to be allowed
between objects pointed by the old and new pointers. */
extern void *realloc (void *__ptr, size_t __size)
- __THROW __attribute_warn_unused_result__;
+ __THROW __attribute_warn_unused_result__ __attribute_alloc_size__ ((2));
#ifdef __USE_MISC
/* Re-allocate the previously allocated block in PTR, making the new
@@ -556,7 +557,8 @@ extern void *realloc (void *__ptr, size_t __size)
the same pointer that was passed to it, aliasing needs to be allowed
between objects pointed by the old and new pointers. */
extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size)
- __THROW __attribute_warn_unused_result__;
+ __THROW __attribute_warn_unused_result__
+ __attribute_alloc_size__ ((2, 3));
#endif
/* Free a block allocated by `malloc', `realloc' or `calloc'. */
@@ -569,7 +571,8 @@ extern void free (void *__ptr) __THROW;
#if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K) \
|| defined __USE_MISC
/* Allocate SIZE bytes on a page boundary. The storage cannot be freed. */
-extern void *valloc (size_t __size) __THROW __attribute_malloc__ __wur;
+extern void *valloc (size_t __size) __THROW __attribute_malloc__
+ __attribute_alloc_size__ ((1)) __wur;
#endif
#ifdef __USE_XOPEN2K
diff --git a/lib/libc/include/generic-glibc/stropts.h b/lib/libc/include/generic-glibc/stropts.h
deleted file mode 100644
index 4f13402a1b..0000000000
--- a/lib/libc/include/generic-glibc/stropts.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/* Copyright (C) 1998-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#ifndef _STROPTS_H
-#define _STROPTS_H 1
-
-#include <features.h>
-#include <bits/types.h>
-#include <bits/xtitypes.h>
-
-#ifndef __gid_t_defined
-typedef __gid_t gid_t;
-# define __gid_t_defined
-#endif
-
-#ifndef __uid_t_defined
-typedef __uid_t uid_t;
-# define __uid_t_defined
-#endif
-
-typedef __t_scalar_t t_scalar_t;
-typedef __t_uscalar_t t_uscalar_t;
-
-/* Get system specific constants. */
-#include <bits/stropts.h>
-
-
-__BEGIN_DECLS
-
-/* Test whether FILDES is associated with a STREAM-based file. */
-extern int isastream (int __fildes) __THROW;
-
-/* Receive next message from a STREAMS file.
-
- This function is a cancellation point and therefore not marked with
- __THROW. */
-extern int getmsg (int __fildes, struct strbuf *__restrict __ctlptr,
- struct strbuf *__restrict __dataptr,
- int *__restrict __flagsp);
-
-/* Receive next message from a STREAMS file, with *FLAGSP allowing to
- control which message.
-
- This function is a cancellation point and therefore not marked with
- __THROW. */
-extern int getpmsg (int __fildes, struct strbuf *__restrict __ctlptr,
- struct strbuf *__restrict __dataptr,
- int *__restrict __bandp, int *__restrict __flagsp);
-
-/* Perform the I/O control operation specified by REQUEST on FD.
- One argument may follow; its presence and type depend on REQUEST.
- Return value depends on REQUEST. Usually -1 indicates error. */
-extern int ioctl (int __fd, unsigned long int __request, ...) __THROW;
-
-/* Send a message on a STREAM.
-
- This function is a cancellation point and therefore not marked with
- __THROW. */
-extern int putmsg (int __fildes, const struct strbuf *__ctlptr,
- const struct strbuf *__dataptr, int __flags);
-
-/* Send a message on a STREAM to the BAND.
-
- This function is a cancellation point and therefore not marked with
- __THROW. */
-extern int putpmsg (int __fildes, const struct strbuf *__ctlptr,
- const struct strbuf *__dataptr, int __band, int __flags);
-
-/* Attach a STREAMS-based file descriptor FILDES to a file PATH in the
- file system name space. */
-extern int fattach (int __fildes, const char *__path) __THROW;
-
-/* Detach a name PATH from a STREAMS-based file descriptor. */
-extern int fdetach (const char *__path) __THROW;
-
-__END_DECLS
-
-#endif /* stropts.h */ \ No newline at end of file
diff --git a/lib/libc/include/generic-glibc/sys/cdefs.h b/lib/libc/include/generic-glibc/sys/cdefs.h
index 5b813a0f44..fad2256537 100644
--- a/lib/libc/include/generic-glibc/sys/cdefs.h
+++ b/lib/libc/include/generic-glibc/sys/cdefs.h
@@ -412,6 +412,14 @@
# define __glibc_has_attribute(attr) 0
#endif
+#ifdef __has_include
+/* Do not use a function-like macro, so that __has_include can inhibit
+ macro expansion. */
+# define __glibc_has_include __has_include
+#else
+# define __glibc_has_include(header) 0
+#endif
+
#if (!defined _Noreturn \
&& (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112 \
&& !__GNUC_PREREQ (4,7))
diff --git a/lib/libc/include/generic-glibc/sys/ifunc.h b/lib/libc/include/generic-glibc/sys/ifunc.h
new file mode 100644
index 0000000000..06e9a42847
--- /dev/null
+++ b/lib/libc/include/generic-glibc/sys/ifunc.h
@@ -0,0 +1,42 @@
+/* Definitions used by AArch64 indirect function resolvers.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _SYS_IFUNC_H
+#define _SYS_IFUNC_H
+
+/* A second argument is passed to the ifunc resolver. */
+#define _IFUNC_ARG_HWCAP (1ULL << 62)
+
+/* The prototype of a gnu indirect function resolver on AArch64 is
+
+ ElfW(Addr) ifunc_resolver (uint64_t, const __ifunc_arg_t *);
+
+ the first argument should have the _IFUNC_ARG_HWCAP bit set and
+ the remaining bits should match the AT_HWCAP settings. */
+
+/* Second argument to an ifunc resolver. */
+struct __ifunc_arg_t
+{
+ unsigned long _size; /* Size of the struct, so it can grow. */
+ unsigned long _hwcap;
+ unsigned long _hwcap2;
+};
+
+typedef struct __ifunc_arg_t __ifunc_arg_t;
+
+#endif \ No newline at end of file
diff --git a/lib/libc/include/generic-glibc/sys/io.h b/lib/libc/include/generic-glibc/sys/io.h
index ba1a73b093..c27e96f4af 100644
--- a/lib/libc/include/generic-glibc/sys/io.h
+++ b/lib/libc/include/generic-glibc/sys/io.h
@@ -12,36 +12,172 @@
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library. If not, see
+ License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#ifndef _SYS_IO_H
-
#define _SYS_IO_H 1
+
#include <features.h>
__BEGIN_DECLS
/* If TURN_ON is TRUE, request for permission to do direct i/o on the
port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
- permission off for that range. This call requires root privileges. */
+ permission off for that range. This call requires root privileges.
+
+ Portability note: not all Linux platforms support this call. Most
+ platforms based on the PC I/O architecture probably will, however.
+ E.g., Linux/Alpha for Alpha PCs supports this. */
extern int ioperm (unsigned long int __from, unsigned long int __num,
- int __turn_on) __THROW;
+ int __turn_on) __THROW;
-/* Set the I/O privilege level to LEVEL. If LEVEL is nonzero,
- permission to access any I/O port is granted. This call requires
- root privileges. */
+/* Set the I/O privilege level to LEVEL. If LEVEL>3, permission to
+ access any I/O port is granted. This call requires root
+ privileges. */
extern int iopl (int __level) __THROW;
-/* The functions that actually perform reads and writes. */
-extern unsigned char inb (unsigned long int __port) __THROW;
-extern unsigned short int inw (unsigned long int __port) __THROW;
-extern unsigned long int inl (unsigned long int __port) __THROW;
+#if defined __GNUC__ && __GNUC__ >= 2
-extern void outb (unsigned char __value, unsigned long int __port) __THROW;
-extern void outw (unsigned short __value, unsigned long int __port) __THROW;
-extern void outl (unsigned long __value, unsigned long int __port) __THROW;
+static __inline unsigned char
+inb (unsigned short int __port)
+{
+ unsigned char _v;
-__END_DECLS
+ __asm__ __volatile__ ("inb %w1,%0":"=a" (_v):"Nd" (__port));
+ return _v;
+}
+
+static __inline unsigned char
+inb_p (unsigned short int __port)
+{
+ unsigned char _v;
+
+ __asm__ __volatile__ ("inb %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (__port));
+ return _v;
+}
+
+static __inline unsigned short int
+inw (unsigned short int __port)
+{
+ unsigned short _v;
+
+ __asm__ __volatile__ ("inw %w1,%0":"=a" (_v):"Nd" (__port));
+ return _v;
+}
+
+static __inline unsigned short int
+inw_p (unsigned short int __port)
+{
+ unsigned short int _v;
+
+ __asm__ __volatile__ ("inw %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (__port));
+ return _v;
+}
+
+static __inline unsigned int
+inl (unsigned short int __port)
+{
+ unsigned int _v;
+
+ __asm__ __volatile__ ("inl %w1,%0":"=a" (_v):"Nd" (__port));
+ return _v;
+}
+
+static __inline unsigned int
+inl_p (unsigned short int __port)
+{
+ unsigned int _v;
+ __asm__ __volatile__ ("inl %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (__port));
+ return _v;
+}
+
+static __inline void
+outb (unsigned char __value, unsigned short int __port)
+{
+ __asm__ __volatile__ ("outb %b0,%w1": :"a" (__value), "Nd" (__port));
+}
+static __inline void
+outb_p (unsigned char __value, unsigned short int __port)
+{
+ __asm__ __volatile__ ("outb %b0,%w1\noutb %%al,$0x80": :"a" (__value),
+ "Nd" (__port));
+}
+
+static __inline void
+outw (unsigned short int __value, unsigned short int __port)
+{
+ __asm__ __volatile__ ("outw %w0,%w1": :"a" (__value), "Nd" (__port));
+
+}
+
+static __inline void
+outw_p (unsigned short int __value, unsigned short int __port)
+{
+ __asm__ __volatile__ ("outw %w0,%w1\noutb %%al,$0x80": :"a" (__value),
+ "Nd" (__port));
+}
+
+static __inline void
+outl (unsigned int __value, unsigned short int __port)
+{
+ __asm__ __volatile__ ("outl %0,%w1": :"a" (__value), "Nd" (__port));
+}
+
+static __inline void
+outl_p (unsigned int __value, unsigned short int __port)
+{
+ __asm__ __volatile__ ("outl %0,%w1\noutb %%al,$0x80": :"a" (__value),
+ "Nd" (__port));
+}
+
+static __inline void
+insb (unsigned short int __port, void *__addr, unsigned long int __count)
+{
+ __asm__ __volatile__ ("cld ; rep ; insb":"=D" (__addr), "=c" (__count)
+ :"d" (__port), "0" (__addr), "1" (__count));
+}
+
+static __inline void
+insw (unsigned short int __port, void *__addr, unsigned long int __count)
+{
+ __asm__ __volatile__ ("cld ; rep ; insw":"=D" (__addr), "=c" (__count)
+ :"d" (__port), "0" (__addr), "1" (__count));
+}
+
+static __inline void
+insl (unsigned short int __port, void *__addr, unsigned long int __count)
+{
+ __asm__ __volatile__ ("cld ; rep ; insl":"=D" (__addr), "=c" (__count)
+ :"d" (__port), "0" (__addr), "1" (__count));
+}
+
+static __inline void
+outsb (unsigned short int __port, const void *__addr,
+ unsigned long int __count)
+{
+ __asm__ __volatile__ ("cld ; rep ; outsb":"=S" (__addr), "=c" (__count)
+ :"d" (__port), "0" (__addr), "1" (__count));
+}
+
+static __inline void
+outsw (unsigned short int __port, const void *__addr,
+ unsigned long int __count)
+{
+ __asm__ __volatile__ ("cld ; rep ; outsw":"=S" (__addr), "=c" (__count)
+ :"d" (__port), "0" (__addr), "1" (__count));
+}
+
+static __inline void
+outsl (unsigned short int __port, const void *__addr,
+ unsigned long int __count)
+{
+ __asm__ __volatile__ ("cld ; rep ; outsl":"=S" (__addr), "=c" (__count)
+ :"d" (__port), "0" (__addr), "1" (__count));
+}
+
+#endif /* GNU C */
+
+__END_DECLS
#endif /* _SYS_IO_H */ \ No newline at end of file
diff --git a/lib/libc/include/generic-glibc/sys/stropts.h b/lib/libc/include/generic-glibc/sys/stropts.h
deleted file mode 100644
index 2715213842..0000000000
--- a/lib/libc/include/generic-glibc/sys/stropts.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <stropts.h> \ No newline at end of file
diff --git a/lib/libc/include/generic-glibc/sys/sysctl.h b/lib/libc/include/generic-glibc/sys/sysctl.h
index b1ebb39054..9af38782b6 100644
--- a/lib/libc/include/generic-glibc/sys/sysctl.h
+++ b/lib/libc/include/generic-glibc/sys/sysctl.h
@@ -18,6 +18,8 @@
#ifndef _SYS_SYSCTL_H
#define _SYS_SYSCTL_H 1
+#warning "The <sys/sysctl.h> header is deprecated and will be removed."
+
#include <features.h>
#define __need_size_t
#include <stddef.h>
@@ -66,7 +68,8 @@ __BEGIN_DECLS
/* Read or write system parameters. */
extern int sysctl (int *__name, int __nlen, void *__oldval,
- size_t *__oldlenp, void *__newval, size_t __newlen) __THROW;
+ size_t *__oldlenp, void *__newval, size_t __newlen) __THROW
+ __attribute_deprecated__;
__END_DECLS
diff --git a/lib/libc/include/generic-glibc/sys/types.h b/lib/libc/include/generic-glibc/sys/types.h
index 9122889780..c7728532fd 100644
--- a/lib/libc/include/generic-glibc/sys/types.h
+++ b/lib/libc/include/generic-glibc/sys/types.h
@@ -154,37 +154,20 @@ typedef unsigned int uint;
#include <bits/stdint-intn.h>
-#if !__GNUC_PREREQ (2, 7)
-
/* These were defined by ISO C without the first `_'. */
-typedef unsigned char u_int8_t;
-typedef unsigned short int u_int16_t;
-typedef unsigned int u_int32_t;
-# if __WORDSIZE == 64
-typedef unsigned long int u_int64_t;
-# else
-__extension__ typedef unsigned long long int u_int64_t;
-# endif
-
-typedef int register_t;
-
-#else
-
-/* For GCC 2.7 and later, we can use specific type-size attributes. */
-# define __u_intN_t(N, MODE) \
- typedef unsigned int u_int##N##_t __attribute__ ((__mode__ (MODE)))
-
-__u_intN_t (8, __QI__);
-__u_intN_t (16, __HI__);
-__u_intN_t (32, __SI__);
-__u_intN_t (64, __DI__);
+typedef __uint8_t u_int8_t;
+typedef __uint16_t u_int16_t;
+typedef __uint32_t u_int32_t;
+typedef __uint64_t u_int64_t;
+#if __GNUC_PREREQ (2, 7)
typedef int register_t __attribute__ ((__mode__ (__word__)));
-
+#else
+typedef int register_t;
+#endif
/* Some code from BIND tests this macro to see if the types above are
defined. */
-#endif
#define __BIT_TYPES_DEFINED__ 1
diff --git a/lib/libc/include/i386-linux-gnu/bits/math-vector-fortran.h b/lib/libc/include/i386-linux-gnu/finclude/math-vector-fortran.h
index fc3aa3e3b2..fc3aa3e3b2 100644
--- a/lib/libc/include/i386-linux-gnu/bits/math-vector-fortran.h
+++ b/lib/libc/include/i386-linux-gnu/finclude/math-vector-fortran.h
diff --git a/lib/libc/include/i386-linux-gnu/sys/io.h b/lib/libc/include/i386-linux-gnu/sys/io.h
deleted file mode 100644
index c27e96f4af..0000000000
--- a/lib/libc/include/i386-linux-gnu/sys/io.h
+++ /dev/null
@@ -1,183 +0,0 @@
-/* Copyright (C) 1996-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#ifndef _SYS_IO_H
-#define _SYS_IO_H 1
-
-#include <features.h>
-
-__BEGIN_DECLS
-
-/* If TURN_ON is TRUE, request for permission to do direct i/o on the
- port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
- permission off for that range. This call requires root privileges.
-
- Portability note: not all Linux platforms support this call. Most
- platforms based on the PC I/O architecture probably will, however.
- E.g., Linux/Alpha for Alpha PCs supports this. */
-extern int ioperm (unsigned long int __from, unsigned long int __num,
- int __turn_on) __THROW;
-
-/* Set the I/O privilege level to LEVEL. If LEVEL>3, permission to
- access any I/O port is granted. This call requires root
- privileges. */
-extern int iopl (int __level) __THROW;
-
-#if defined __GNUC__ && __GNUC__ >= 2
-
-static __inline unsigned char
-inb (unsigned short int __port)
-{
- unsigned char _v;
-
- __asm__ __volatile__ ("inb %w1,%0":"=a" (_v):"Nd" (__port));
- return _v;
-}
-
-static __inline unsigned char
-inb_p (unsigned short int __port)
-{
- unsigned char _v;
-
- __asm__ __volatile__ ("inb %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (__port));
- return _v;
-}
-
-static __inline unsigned short int
-inw (unsigned short int __port)
-{
- unsigned short _v;
-
- __asm__ __volatile__ ("inw %w1,%0":"=a" (_v):"Nd" (__port));
- return _v;
-}
-
-static __inline unsigned short int
-inw_p (unsigned short int __port)
-{
- unsigned short int _v;
-
- __asm__ __volatile__ ("inw %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (__port));
- return _v;
-}
-
-static __inline unsigned int
-inl (unsigned short int __port)
-{
- unsigned int _v;
-
- __asm__ __volatile__ ("inl %w1,%0":"=a" (_v):"Nd" (__port));
- return _v;
-}
-
-static __inline unsigned int
-inl_p (unsigned short int __port)
-{
- unsigned int _v;
- __asm__ __volatile__ ("inl %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (__port));
- return _v;
-}
-
-static __inline void
-outb (unsigned char __value, unsigned short int __port)
-{
- __asm__ __volatile__ ("outb %b0,%w1": :"a" (__value), "Nd" (__port));
-}
-
-static __inline void
-outb_p (unsigned char __value, unsigned short int __port)
-{
- __asm__ __volatile__ ("outb %b0,%w1\noutb %%al,$0x80": :"a" (__value),
- "Nd" (__port));
-}
-
-static __inline void
-outw (unsigned short int __value, unsigned short int __port)
-{
- __asm__ __volatile__ ("outw %w0,%w1": :"a" (__value), "Nd" (__port));
-
-}
-
-static __inline void
-outw_p (unsigned short int __value, unsigned short int __port)
-{
- __asm__ __volatile__ ("outw %w0,%w1\noutb %%al,$0x80": :"a" (__value),
- "Nd" (__port));
-}
-
-static __inline void
-outl (unsigned int __value, unsigned short int __port)
-{
- __asm__ __volatile__ ("outl %0,%w1": :"a" (__value), "Nd" (__port));
-}
-
-static __inline void
-outl_p (unsigned int __value, unsigned short int __port)
-{
- __asm__ __volatile__ ("outl %0,%w1\noutb %%al,$0x80": :"a" (__value),
- "Nd" (__port));
-}
-
-static __inline void
-insb (unsigned short int __port, void *__addr, unsigned long int __count)
-{
- __asm__ __volatile__ ("cld ; rep ; insb":"=D" (__addr), "=c" (__count)
- :"d" (__port), "0" (__addr), "1" (__count));
-}
-
-static __inline void
-insw (unsigned short int __port, void *__addr, unsigned long int __count)
-{
- __asm__ __volatile__ ("cld ; rep ; insw":"=D" (__addr), "=c" (__count)
- :"d" (__port), "0" (__addr), "1" (__count));
-}
-
-static __inline void
-insl (unsigned short int __port, void *__addr, unsigned long int __count)
-{
- __asm__ __volatile__ ("cld ; rep ; insl":"=D" (__addr), "=c" (__count)
- :"d" (__port), "0" (__addr), "1" (__count));
-}
-
-static __inline void
-outsb (unsigned short int __port, const void *__addr,
- unsigned long int __count)
-{
- __asm__ __volatile__ ("cld ; rep ; outsb":"=S" (__addr), "=c" (__count)
- :"d" (__port), "0" (__addr), "1" (__count));
-}
-
-static __inline void
-outsw (unsigned short int __port, const void *__addr,
- unsigned long int __count)
-{
- __asm__ __volatile__ ("cld ; rep ; outsw":"=S" (__addr), "=c" (__count)
- :"d" (__port), "0" (__addr), "1" (__count));
-}
-
-static __inline void
-outsl (unsigned short int __port, const void *__addr,
- unsigned long int __count)
-{
- __asm__ __volatile__ ("cld ; rep ; outsl":"=S" (__addr), "=c" (__count)
- :"d" (__port), "0" (__addr), "1" (__count));
-}
-
-#endif /* GNU C */
-
-__END_DECLS
-#endif /* _SYS_IO_H */ \ No newline at end of file
diff --git a/lib/libc/include/mips-linux-gnu/bits/socket-constants.h b/lib/libc/include/mips-linux-gnu/bits/socket-constants.h
new file mode 100644
index 0000000000..cfd1839b98
--- /dev/null
+++ b/lib/libc/include/mips-linux-gnu/bits/socket-constants.h
@@ -0,0 +1,38 @@
+/* Socket constants which vary among Linux architectures. Version for MIPS.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _SYS_SOCKET_H
+# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead."
+#endif
+
+#define SOL_SOCKET 65535
+#define SO_ACCEPTCONN 4105
+#define SO_BROADCAST 32
+#define SO_DONTROUTE 16
+#define SO_ERROR 4103
+#define SO_KEEPALIVE 8
+#define SO_LINGER 128
+#define SO_OOBINLINE 256
+#define SO_RCVBUF 4098
+#define SO_RCVLOWAT 4100
+#define SO_RCVTIMEO 4102
+#define SO_REUSEADDR 4
+#define SO_SNDBUF 4097
+#define SO_SNDLOWAT 4099
+#define SO_SNDTIMEO 4101
+#define SO_TYPE 4104 \ No newline at end of file
diff --git a/lib/libc/include/mips64-linux-gnuabi64/bits/socket-constants.h b/lib/libc/include/mips64-linux-gnuabi64/bits/socket-constants.h
new file mode 100644
index 0000000000..cfd1839b98
--- /dev/null
+++ b/lib/libc/include/mips64-linux-gnuabi64/bits/socket-constants.h
@@ -0,0 +1,38 @@
+/* Socket constants which vary among Linux architectures. Version for MIPS.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _SYS_SOCKET_H
+# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead."
+#endif
+
+#define SOL_SOCKET 65535
+#define SO_ACCEPTCONN 4105
+#define SO_BROADCAST 32
+#define SO_DONTROUTE 16
+#define SO_ERROR 4103
+#define SO_KEEPALIVE 8
+#define SO_LINGER 128
+#define SO_OOBINLINE 256
+#define SO_RCVBUF 4098
+#define SO_RCVLOWAT 4100
+#define SO_RCVTIMEO 4102
+#define SO_REUSEADDR 4
+#define SO_SNDBUF 4097
+#define SO_SNDLOWAT 4099
+#define SO_SNDTIMEO 4101
+#define SO_TYPE 4104 \ No newline at end of file
diff --git a/lib/libc/include/mips64-linux-gnuabin32/bits/socket-constants.h b/lib/libc/include/mips64-linux-gnuabin32/bits/socket-constants.h
new file mode 100644
index 0000000000..cfd1839b98
--- /dev/null
+++ b/lib/libc/include/mips64-linux-gnuabin32/bits/socket-constants.h
@@ -0,0 +1,38 @@
+/* Socket constants which vary among Linux architectures. Version for MIPS.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _SYS_SOCKET_H
+# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead."
+#endif
+
+#define SOL_SOCKET 65535
+#define SO_ACCEPTCONN 4105
+#define SO_BROADCAST 32
+#define SO_DONTROUTE 16
+#define SO_ERROR 4103
+#define SO_KEEPALIVE 8
+#define SO_LINGER 128
+#define SO_OOBINLINE 256
+#define SO_RCVBUF 4098
+#define SO_RCVLOWAT 4100
+#define SO_RCVTIMEO 4102
+#define SO_REUSEADDR 4
+#define SO_SNDBUF 4097
+#define SO_SNDLOWAT 4099
+#define SO_SNDTIMEO 4101
+#define SO_TYPE 4104 \ No newline at end of file
diff --git a/lib/libc/include/mips64el-linux-gnuabi64/bits/socket-constants.h b/lib/libc/include/mips64el-linux-gnuabi64/bits/socket-constants.h
new file mode 100644
index 0000000000..cfd1839b98
--- /dev/null
+++ b/lib/libc/include/mips64el-linux-gnuabi64/bits/socket-constants.h
@@ -0,0 +1,38 @@
+/* Socket constants which vary among Linux architectures. Version for MIPS.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _SYS_SOCKET_H
+# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead."
+#endif
+
+#define SOL_SOCKET 65535
+#define SO_ACCEPTCONN 4105
+#define SO_BROADCAST 32
+#define SO_DONTROUTE 16
+#define SO_ERROR 4103
+#define SO_KEEPALIVE 8
+#define SO_LINGER 128
+#define SO_OOBINLINE 256
+#define SO_RCVBUF 4098
+#define SO_RCVLOWAT 4100
+#define SO_RCVTIMEO 4102
+#define SO_REUSEADDR 4
+#define SO_SNDBUF 4097
+#define SO_SNDLOWAT 4099
+#define SO_SNDTIMEO 4101
+#define SO_TYPE 4104 \ No newline at end of file
diff --git a/lib/libc/include/mips64el-linux-gnuabin32/bits/socket-constants.h b/lib/libc/include/mips64el-linux-gnuabin32/bits/socket-constants.h
new file mode 100644
index 0000000000..cfd1839b98
--- /dev/null
+++ b/lib/libc/include/mips64el-linux-gnuabin32/bits/socket-constants.h
@@ -0,0 +1,38 @@
+/* Socket constants which vary among Linux architectures. Version for MIPS.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _SYS_SOCKET_H
+# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead."
+#endif
+
+#define SOL_SOCKET 65535
+#define SO_ACCEPTCONN 4105
+#define SO_BROADCAST 32
+#define SO_DONTROUTE 16
+#define SO_ERROR 4103
+#define SO_KEEPALIVE 8
+#define SO_LINGER 128
+#define SO_OOBINLINE 256
+#define SO_RCVBUF 4098
+#define SO_RCVLOWAT 4100
+#define SO_RCVTIMEO 4102
+#define SO_REUSEADDR 4
+#define SO_SNDBUF 4097
+#define SO_SNDLOWAT 4099
+#define SO_SNDTIMEO 4101
+#define SO_TYPE 4104 \ No newline at end of file
diff --git a/lib/libc/include/mipsel-linux-gnu/bits/socket-constants.h b/lib/libc/include/mipsel-linux-gnu/bits/socket-constants.h
new file mode 100644
index 0000000000..cfd1839b98
--- /dev/null
+++ b/lib/libc/include/mipsel-linux-gnu/bits/socket-constants.h
@@ -0,0 +1,38 @@
+/* Socket constants which vary among Linux architectures. Version for MIPS.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _SYS_SOCKET_H
+# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead."
+#endif
+
+#define SOL_SOCKET 65535
+#define SO_ACCEPTCONN 4105
+#define SO_BROADCAST 32
+#define SO_DONTROUTE 16
+#define SO_ERROR 4103
+#define SO_KEEPALIVE 8
+#define SO_LINGER 128
+#define SO_OOBINLINE 256
+#define SO_RCVBUF 4098
+#define SO_RCVLOWAT 4100
+#define SO_RCVTIMEO 4102
+#define SO_REUSEADDR 4
+#define SO_SNDBUF 4097
+#define SO_SNDLOWAT 4099
+#define SO_SNDTIMEO 4101
+#define SO_TYPE 4104 \ No newline at end of file
diff --git a/lib/libc/include/powerpc-linux-gnu/bits/fenvinline.h b/lib/libc/include/powerpc-linux-gnu/bits/fenvinline.h
index 1552e48c7a..efb8a356e2 100644
--- a/lib/libc/include/powerpc-linux-gnu/bits/fenvinline.h
+++ b/lib/libc/include/powerpc-linux-gnu/bits/fenvinline.h
@@ -18,13 +18,36 @@
#if defined __GNUC__ && !defined _SOFT_FLOAT && !defined __NO_FPRS__
-/* Inline definition for fegetround. */
-# define __fegetround() \
- (__extension__ ({ int __fegetround_result; \
- __asm__ __volatile__ \
- ("mcrfs 7,7 ; mfcr %0" \
- : "=r"(__fegetround_result) : : "cr7"); \
- __fegetround_result & 3; }))
+/* Inline definitions for fegetround. */
+# define __fegetround_ISA300() \
+ (__extension__ ({ \
+ union { double __d; unsigned long long __ll; } __u; \
+ __asm__ __volatile__ ( \
+ ".machine push; .machine \"power9\"; mffsl %0; .machine pop" \
+ : "=f" (__u.__d)); \
+ __u.__ll & 0x0000000000000003LL; \
+ }))
+
+# define __fegetround_ISA2() \
+ (__extension__ ({ \
+ int __fegetround_result; \
+ __asm__ __volatile__ ("mcrfs 7,7 ; mfcr %0" \
+ : "=r"(__fegetround_result) : : "cr7"); \
+ __fegetround_result & 3; \
+ }))
+
+# ifdef _ARCH_PWR9
+# define __fegetround() __fegetround_ISA300()
+# elif defined __BUILTIN_CPU_SUPPORTS__
+# define __fegetround() \
+ (__glibc_likely (__builtin_cpu_supports ("arch_3_00")) \
+ ? __fegetround_ISA300() \
+ : __fegetround_ISA2() \
+ )
+# else
+# define __fegetround() __fegetround_ISA2()
+# endif
+
# define fegetround() __fegetround ()
# ifndef __NO_MATH_INLINES
diff --git a/lib/libc/include/powerpc-linux-gnu/bits/socket-constants.h b/lib/libc/include/powerpc-linux-gnu/bits/socket-constants.h
new file mode 100644
index 0000000000..705f575fe0
--- /dev/null
+++ b/lib/libc/include/powerpc-linux-gnu/bits/socket-constants.h
@@ -0,0 +1,38 @@
+/* Socket constants which vary among Linux architectures. Version for POWER.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _SYS_SOCKET_H
+# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead."
+#endif
+
+#define SOL_SOCKET 1
+#define SO_ACCEPTCONN 30
+#define SO_BROADCAST 6
+#define SO_DONTROUTE 5
+#define SO_ERROR 4
+#define SO_KEEPALIVE 9
+#define SO_LINGER 13
+#define SO_OOBINLINE 10
+#define SO_RCVBUF 8
+#define SO_RCVLOWAT 16
+#define SO_RCVTIMEO 18
+#define SO_REUSEADDR 2
+#define SO_SNDBUF 7
+#define SO_SNDLOWAT 17
+#define SO_SNDTIMEO 19
+#define SO_TYPE 3 \ No newline at end of file
diff --git a/lib/libc/include/powerpc-linux-gnu/fpu_control.h b/lib/libc/include/powerpc-linux-gnu/fpu_control.h
index 78a7a291ac..db5055a812 100644
--- a/lib/libc/include/powerpc-linux-gnu/fpu_control.h
+++ b/lib/libc/include/powerpc-linux-gnu/fpu_control.h
@@ -19,6 +19,10 @@
#ifndef _FPU_CONTROL_H
#define _FPU_CONTROL_H
+#if defined __SPE__ || (defined __NO_FPRS__ && !defined _SOFT_FLOAT)
+# error "SPE/e500 is no longer supported"
+#endif
+
#ifdef _SOFT_FLOAT
# define _FPU_RESERVED 0xffffffff
@@ -28,41 +32,6 @@ typedef unsigned int fpu_control_t;
# define _FPU_SETCW(cw) (void) (cw)
extern fpu_control_t __fpu_control;
-#elif defined __NO_FPRS__ /* e500 */
-
-/* rounding control */
-# define _FPU_RC_NEAREST 0x00 /* RECOMMENDED */
-# define _FPU_RC_DOWN 0x03
-# define _FPU_RC_UP 0x02
-# define _FPU_RC_ZERO 0x01
-
-/* masking of interrupts */
-# define _FPU_MASK_ZM 0x10 /* zero divide */
-# define _FPU_MASK_OM 0x04 /* overflow */
-# define _FPU_MASK_UM 0x08 /* underflow */
-# define _FPU_MASK_XM 0x40 /* inexact */
-# define _FPU_MASK_IM 0x20 /* invalid operation */
-
-# define _FPU_RESERVED 0x00c10080 /* These bits are reserved and not changed. */
-
-/* Correct IEEE semantics require traps to be enabled at the hardware
- level; the kernel then does the emulation and determines whether
- generation of signals from those traps was enabled using prctl. */
-# define _FPU_DEFAULT 0x0000003c /* Default value. */
-# define _FPU_IEEE _FPU_DEFAULT
-
-/* Type of the control word. */
-typedef unsigned int fpu_control_t;
-
-/* Macros for accessing the hardware control word. */
-# define _FPU_GETCW(cw) \
- __asm__ volatile ("mfspefscr %0" : "=r" (cw))
-# define _FPU_SETCW(cw) \
- __asm__ volatile ("mtspefscr %0" : : "r" (cw))
-
-/* Default control word set at startup. */
-extern fpu_control_t __fpu_control;
-
#else /* PowerPC 6xx floating-point. */
/* rounding control */
@@ -71,6 +40,8 @@ extern fpu_control_t __fpu_control;
# define _FPU_RC_UP 0x02
# define _FPU_RC_ZERO 0x01
+# define _FPU_MASK_RC (_FPU_RC_NEAREST|_FPU_RC_DOWN|_FPU_RC_UP|_FPU_RC_ZERO)
+
# define _FPU_MASK_NI 0x04 /* non-ieee mode */
/* masking of interrupts */
@@ -96,20 +67,43 @@ typedef unsigned int fpu_control_t;
/* Macros for accessing the hardware control word. */
# define _FPU_GETCW(cw) \
({union { double __d; unsigned long long __ll; } __u; \
- register double __fr; \
- __asm__ ("mffs %0" : "=f" (__fr)); \
- __u.__d = __fr; \
+ __asm__ __volatile__("mffs %0" : "=f" (__u.__d)); \
(cw) = (fpu_control_t) __u.__ll; \
(fpu_control_t) __u.__ll; \
})
+# define _FPU_GET_RC_ISA300() \
+ ({union { double __d; unsigned long long __ll; } __u; \
+ __asm__ __volatile__( \
+ ".machine push; .machine \"power9\"; mffsl %0; .machine pop" \
+ : "=f" (__u.__d)); \
+ (fpu_control_t) (__u.__ll & _FPU_MASK_RC); \
+ })
+
+# ifdef _ARCH_PWR9
+# define _FPU_GET_RC() _FPU_GET_RC_ISA300()
+# elif defined __BUILTIN_CPU_SUPPORTS__
+# define _FPU_GET_RC() \
+ ({fpu_control_t __rc; \
+ __rc = __glibc_likely (__builtin_cpu_supports ("arch_3_00")) \
+ ? _FPU_GET_RC_ISA300 () \
+ : _FPU_GETCW (__rc) & _FPU_MASK_RC; \
+ __rc; \
+ })
+# else
+# define _FPU_GET_RC() \
+ ({fpu_control_t __rc = _FPU_GETCW (__rc) & _FPU_MASK_RC; \
+ __rc; \
+ })
+# endif
+
# define _FPU_SETCW(cw) \
{ union { double __d; unsigned long long __ll; } __u; \
register double __fr; \
__u.__ll = 0xfff80000LL << 32; /* This is a QNaN. */ \
__u.__ll |= (cw) & 0xffffffffLL; \
__fr = __u.__d; \
- __asm__ ("mtfsf 255,%0" : : "f" (__fr)); \
+ __asm__ __volatile__("mtfsf 255,%0" : : "f" (__fr)); \
}
/* Default control word set at startup. */
diff --git a/lib/libc/include/powerpc64-linux-gnu/bits/fenvinline.h b/lib/libc/include/powerpc64-linux-gnu/bits/fenvinline.h
index 1552e48c7a..efb8a356e2 100644
--- a/lib/libc/include/powerpc64-linux-gnu/bits/fenvinline.h
+++ b/lib/libc/include/powerpc64-linux-gnu/bits/fenvinline.h
@@ -18,13 +18,36 @@
#if defined __GNUC__ && !defined _SOFT_FLOAT && !defined __NO_FPRS__
-/* Inline definition for fegetround. */
-# define __fegetround() \
- (__extension__ ({ int __fegetround_result; \
- __asm__ __volatile__ \
- ("mcrfs 7,7 ; mfcr %0" \
- : "=r"(__fegetround_result) : : "cr7"); \
- __fegetround_result & 3; }))
+/* Inline definitions for fegetround. */
+# define __fegetround_ISA300() \
+ (__extension__ ({ \
+ union { double __d; unsigned long long __ll; } __u; \
+ __asm__ __volatile__ ( \
+ ".machine push; .machine \"power9\"; mffsl %0; .machine pop" \
+ : "=f" (__u.__d)); \
+ __u.__ll & 0x0000000000000003LL; \
+ }))
+
+# define __fegetround_ISA2() \
+ (__extension__ ({ \
+ int __fegetround_result; \
+ __asm__ __volatile__ ("mcrfs 7,7 ; mfcr %0" \
+ : "=r"(__fegetround_result) : : "cr7"); \
+ __fegetround_result & 3; \
+ }))
+
+# ifdef _ARCH_PWR9
+# define __fegetround() __fegetround_ISA300()
+# elif defined __BUILTIN_CPU_SUPPORTS__
+# define __fegetround() \
+ (__glibc_likely (__builtin_cpu_supports ("arch_3_00")) \
+ ? __fegetround_ISA300() \
+ : __fegetround_ISA2() \
+ )
+# else
+# define __fegetround() __fegetround_ISA2()
+# endif
+
# define fegetround() __fegetround ()
# ifndef __NO_MATH_INLINES
diff --git a/lib/libc/include/powerpc64-linux-gnu/bits/socket-constants.h b/lib/libc/include/powerpc64-linux-gnu/bits/socket-constants.h
new file mode 100644
index 0000000000..705f575fe0
--- /dev/null
+++ b/lib/libc/include/powerpc64-linux-gnu/bits/socket-constants.h
@@ -0,0 +1,38 @@
+/* Socket constants which vary among Linux architectures. Version for POWER.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _SYS_SOCKET_H
+# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead."
+#endif
+
+#define SOL_SOCKET 1
+#define SO_ACCEPTCONN 30
+#define SO_BROADCAST 6
+#define SO_DONTROUTE 5
+#define SO_ERROR 4
+#define SO_KEEPALIVE 9
+#define SO_LINGER 13
+#define SO_OOBINLINE 10
+#define SO_RCVBUF 8
+#define SO_RCVLOWAT 16
+#define SO_RCVTIMEO 18
+#define SO_REUSEADDR 2
+#define SO_SNDBUF 7
+#define SO_SNDLOWAT 17
+#define SO_SNDTIMEO 19
+#define SO_TYPE 3 \ No newline at end of file
diff --git a/lib/libc/include/powerpc64-linux-gnu/fpu_control.h b/lib/libc/include/powerpc64-linux-gnu/fpu_control.h
index 78a7a291ac..db5055a812 100644
--- a/lib/libc/include/powerpc64-linux-gnu/fpu_control.h
+++ b/lib/libc/include/powerpc64-linux-gnu/fpu_control.h
@@ -19,6 +19,10 @@
#ifndef _FPU_CONTROL_H
#define _FPU_CONTROL_H
+#if defined __SPE__ || (defined __NO_FPRS__ && !defined _SOFT_FLOAT)
+# error "SPE/e500 is no longer supported"
+#endif
+
#ifdef _SOFT_FLOAT
# define _FPU_RESERVED 0xffffffff
@@ -28,41 +32,6 @@ typedef unsigned int fpu_control_t;
# define _FPU_SETCW(cw) (void) (cw)
extern fpu_control_t __fpu_control;
-#elif defined __NO_FPRS__ /* e500 */
-
-/* rounding control */
-# define _FPU_RC_NEAREST 0x00 /* RECOMMENDED */
-# define _FPU_RC_DOWN 0x03
-# define _FPU_RC_UP 0x02
-# define _FPU_RC_ZERO 0x01
-
-/* masking of interrupts */
-# define _FPU_MASK_ZM 0x10 /* zero divide */
-# define _FPU_MASK_OM 0x04 /* overflow */
-# define _FPU_MASK_UM 0x08 /* underflow */
-# define _FPU_MASK_XM 0x40 /* inexact */
-# define _FPU_MASK_IM 0x20 /* invalid operation */
-
-# define _FPU_RESERVED 0x00c10080 /* These bits are reserved and not changed. */
-
-/* Correct IEEE semantics require traps to be enabled at the hardware
- level; the kernel then does the emulation and determines whether
- generation of signals from those traps was enabled using prctl. */
-# define _FPU_DEFAULT 0x0000003c /* Default value. */
-# define _FPU_IEEE _FPU_DEFAULT
-
-/* Type of the control word. */
-typedef unsigned int fpu_control_t;
-
-/* Macros for accessing the hardware control word. */
-# define _FPU_GETCW(cw) \
- __asm__ volatile ("mfspefscr %0" : "=r" (cw))
-# define _FPU_SETCW(cw) \
- __asm__ volatile ("mtspefscr %0" : : "r" (cw))
-
-/* Default control word set at startup. */
-extern fpu_control_t __fpu_control;
-
#else /* PowerPC 6xx floating-point. */
/* rounding control */
@@ -71,6 +40,8 @@ extern fpu_control_t __fpu_control;
# define _FPU_RC_UP 0x02
# define _FPU_RC_ZERO 0x01
+# define _FPU_MASK_RC (_FPU_RC_NEAREST|_FPU_RC_DOWN|_FPU_RC_UP|_FPU_RC_ZERO)
+
# define _FPU_MASK_NI 0x04 /* non-ieee mode */
/* masking of interrupts */
@@ -96,20 +67,43 @@ typedef unsigned int fpu_control_t;
/* Macros for accessing the hardware control word. */
# define _FPU_GETCW(cw) \
({union { double __d; unsigned long long __ll; } __u; \
- register double __fr; \
- __asm__ ("mffs %0" : "=f" (__fr)); \
- __u.__d = __fr; \
+ __asm__ __volatile__("mffs %0" : "=f" (__u.__d)); \
(cw) = (fpu_control_t) __u.__ll; \
(fpu_control_t) __u.__ll; \
})
+# define _FPU_GET_RC_ISA300() \
+ ({union { double __d; unsigned long long __ll; } __u; \
+ __asm__ __volatile__( \
+ ".machine push; .machine \"power9\"; mffsl %0; .machine pop" \
+ : "=f" (__u.__d)); \
+ (fpu_control_t) (__u.__ll & _FPU_MASK_RC); \
+ })
+
+# ifdef _ARCH_PWR9
+# define _FPU_GET_RC() _FPU_GET_RC_ISA300()
+# elif defined __BUILTIN_CPU_SUPPORTS__
+# define _FPU_GET_RC() \
+ ({fpu_control_t __rc; \
+ __rc = __glibc_likely (__builtin_cpu_supports ("arch_3_00")) \
+ ? _FPU_GET_RC_ISA300 () \
+ : _FPU_GETCW (__rc) & _FPU_MASK_RC; \
+ __rc; \
+ })
+# else
+# define _FPU_GET_RC() \
+ ({fpu_control_t __rc = _FPU_GETCW (__rc) & _FPU_MASK_RC; \
+ __rc; \
+ })
+# endif
+
# define _FPU_SETCW(cw) \
{ union { double __d; unsigned long long __ll; } __u; \
register double __fr; \
__u.__ll = 0xfff80000LL << 32; /* This is a QNaN. */ \
__u.__ll |= (cw) & 0xffffffffLL; \
__fr = __u.__d; \
- __asm__ ("mtfsf 255,%0" : : "f" (__fr)); \
+ __asm__ __volatile__("mtfsf 255,%0" : : "f" (__fr)); \
}
/* Default control word set at startup. */
diff --git a/lib/libc/include/powerpc64-linux-gnu/gnu/stubs-64-v1.h b/lib/libc/include/powerpc64-linux-gnu/gnu/stubs-64-v1.h
index f5b3f7db15..12c0d956e8 100644
--- a/lib/libc/include/powerpc64-linux-gnu/gnu/stubs-64-v1.h
+++ b/lib/libc/include/powerpc64-linux-gnu/gnu/stubs-64-v1.h
@@ -8,9 +8,7 @@
#endif
#define __stub_chflags
-#define __stub_fattach
#define __stub_fchflags
-#define __stub_fdetach
#define __stub_gtty
#define __stub_lchmod
#define __stub_revoke
diff --git a/lib/libc/include/powerpc64le-linux-gnu/bits/fenvinline.h b/lib/libc/include/powerpc64le-linux-gnu/bits/fenvinline.h
index 1552e48c7a..efb8a356e2 100644
--- a/lib/libc/include/powerpc64le-linux-gnu/bits/fenvinline.h
+++ b/lib/libc/include/powerpc64le-linux-gnu/bits/fenvinline.h
@@ -18,13 +18,36 @@
#if defined __GNUC__ && !defined _SOFT_FLOAT && !defined __NO_FPRS__
-/* Inline definition for fegetround. */
-# define __fegetround() \
- (__extension__ ({ int __fegetround_result; \
- __asm__ __volatile__ \
- ("mcrfs 7,7 ; mfcr %0" \
- : "=r"(__fegetround_result) : : "cr7"); \
- __fegetround_result & 3; }))
+/* Inline definitions for fegetround. */
+# define __fegetround_ISA300() \
+ (__extension__ ({ \
+ union { double __d; unsigned long long __ll; } __u; \
+ __asm__ __volatile__ ( \
+ ".machine push; .machine \"power9\"; mffsl %0; .machine pop" \
+ : "=f" (__u.__d)); \
+ __u.__ll & 0x0000000000000003LL; \
+ }))
+
+# define __fegetround_ISA2() \
+ (__extension__ ({ \
+ int __fegetround_result; \
+ __asm__ __volatile__ ("mcrfs 7,7 ; mfcr %0" \
+ : "=r"(__fegetround_result) : : "cr7"); \
+ __fegetround_result & 3; \
+ }))
+
+# ifdef _ARCH_PWR9
+# define __fegetround() __fegetround_ISA300()
+# elif defined __BUILTIN_CPU_SUPPORTS__
+# define __fegetround() \
+ (__glibc_likely (__builtin_cpu_supports ("arch_3_00")) \
+ ? __fegetround_ISA300() \
+ : __fegetround_ISA2() \
+ )
+# else
+# define __fegetround() __fegetround_ISA2()
+# endif
+
# define fegetround() __fegetround ()
# ifndef __NO_MATH_INLINES
diff --git a/lib/libc/include/powerpc64le-linux-gnu/bits/socket-constants.h b/lib/libc/include/powerpc64le-linux-gnu/bits/socket-constants.h
new file mode 100644
index 0000000000..705f575fe0
--- /dev/null
+++ b/lib/libc/include/powerpc64le-linux-gnu/bits/socket-constants.h
@@ -0,0 +1,38 @@
+/* Socket constants which vary among Linux architectures. Version for POWER.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _SYS_SOCKET_H
+# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead."
+#endif
+
+#define SOL_SOCKET 1
+#define SO_ACCEPTCONN 30
+#define SO_BROADCAST 6
+#define SO_DONTROUTE 5
+#define SO_ERROR 4
+#define SO_KEEPALIVE 9
+#define SO_LINGER 13
+#define SO_OOBINLINE 10
+#define SO_RCVBUF 8
+#define SO_RCVLOWAT 16
+#define SO_RCVTIMEO 18
+#define SO_REUSEADDR 2
+#define SO_SNDBUF 7
+#define SO_SNDLOWAT 17
+#define SO_SNDTIMEO 19
+#define SO_TYPE 3 \ No newline at end of file
diff --git a/lib/libc/include/powerpc64le-linux-gnu/fpu_control.h b/lib/libc/include/powerpc64le-linux-gnu/fpu_control.h
index 78a7a291ac..db5055a812 100644
--- a/lib/libc/include/powerpc64le-linux-gnu/fpu_control.h
+++ b/lib/libc/include/powerpc64le-linux-gnu/fpu_control.h
@@ -19,6 +19,10 @@
#ifndef _FPU_CONTROL_H
#define _FPU_CONTROL_H
+#if defined __SPE__ || (defined __NO_FPRS__ && !defined _SOFT_FLOAT)
+# error "SPE/e500 is no longer supported"
+#endif
+
#ifdef _SOFT_FLOAT
# define _FPU_RESERVED 0xffffffff
@@ -28,41 +32,6 @@ typedef unsigned int fpu_control_t;
# define _FPU_SETCW(cw) (void) (cw)
extern fpu_control_t __fpu_control;
-#elif defined __NO_FPRS__ /* e500 */
-
-/* rounding control */
-# define _FPU_RC_NEAREST 0x00 /* RECOMMENDED */
-# define _FPU_RC_DOWN 0x03
-# define _FPU_RC_UP 0x02
-# define _FPU_RC_ZERO 0x01
-
-/* masking of interrupts */
-# define _FPU_MASK_ZM 0x10 /* zero divide */
-# define _FPU_MASK_OM 0x04 /* overflow */
-# define _FPU_MASK_UM 0x08 /* underflow */
-# define _FPU_MASK_XM 0x40 /* inexact */
-# define _FPU_MASK_IM 0x20 /* invalid operation */
-
-# define _FPU_RESERVED 0x00c10080 /* These bits are reserved and not changed. */
-
-/* Correct IEEE semantics require traps to be enabled at the hardware
- level; the kernel then does the emulation and determines whether
- generation of signals from those traps was enabled using prctl. */
-# define _FPU_DEFAULT 0x0000003c /* Default value. */
-# define _FPU_IEEE _FPU_DEFAULT
-
-/* Type of the control word. */
-typedef unsigned int fpu_control_t;
-
-/* Macros for accessing the hardware control word. */
-# define _FPU_GETCW(cw) \
- __asm__ volatile ("mfspefscr %0" : "=r" (cw))
-# define _FPU_SETCW(cw) \
- __asm__ volatile ("mtspefscr %0" : : "r" (cw))
-
-/* Default control word set at startup. */
-extern fpu_control_t __fpu_control;
-
#else /* PowerPC 6xx floating-point. */
/* rounding control */
@@ -71,6 +40,8 @@ extern fpu_control_t __fpu_control;
# define _FPU_RC_UP 0x02
# define _FPU_RC_ZERO 0x01
+# define _FPU_MASK_RC (_FPU_RC_NEAREST|_FPU_RC_DOWN|_FPU_RC_UP|_FPU_RC_ZERO)
+
# define _FPU_MASK_NI 0x04 /* non-ieee mode */
/* masking of interrupts */
@@ -96,20 +67,43 @@ typedef unsigned int fpu_control_t;
/* Macros for accessing the hardware control word. */
# define _FPU_GETCW(cw) \
({union { double __d; unsigned long long __ll; } __u; \
- register double __fr; \
- __asm__ ("mffs %0" : "=f" (__fr)); \
- __u.__d = __fr; \
+ __asm__ __volatile__("mffs %0" : "=f" (__u.__d)); \
(cw) = (fpu_control_t) __u.__ll; \
(fpu_control_t) __u.__ll; \
})
+# define _FPU_GET_RC_ISA300() \
+ ({union { double __d; unsigned long long __ll; } __u; \
+ __asm__ __volatile__( \
+ ".machine push; .machine \"power9\"; mffsl %0; .machine pop" \
+ : "=f" (__u.__d)); \
+ (fpu_control_t) (__u.__ll & _FPU_MASK_RC); \
+ })
+
+# ifdef _ARCH_PWR9
+# define _FPU_GET_RC() _FPU_GET_RC_ISA300()
+# elif defined __BUILTIN_CPU_SUPPORTS__
+# define _FPU_GET_RC() \
+ ({fpu_control_t __rc; \
+ __rc = __glibc_likely (__builtin_cpu_supports ("arch_3_00")) \
+ ? _FPU_GET_RC_ISA300 () \
+ : _FPU_GETCW (__rc) & _FPU_MASK_RC; \
+ __rc; \
+ })
+# else
+# define _FPU_GET_RC() \
+ ({fpu_control_t __rc = _FPU_GETCW (__rc) & _FPU_MASK_RC; \
+ __rc; \
+ })
+# endif
+
# define _FPU_SETCW(cw) \
{ union { double __d; unsigned long long __ll; } __u; \
register double __fr; \
__u.__ll = 0xfff80000LL << 32; /* This is a QNaN. */ \
__u.__ll |= (cw) & 0xffffffffLL; \
__fr = __u.__d; \
- __asm__ ("mtfsf 255,%0" : : "f" (__fr)); \
+ __asm__ __volatile__("mtfsf 255,%0" : : "f" (__fr)); \
}
/* Default control word set at startup. */
diff --git a/lib/libc/include/powerpc64le-linux-gnu/gnu/stubs-64-v2.h b/lib/libc/include/powerpc64le-linux-gnu/gnu/stubs-64-v2.h
index f5b3f7db15..12c0d956e8 100644
--- a/lib/libc/include/powerpc64le-linux-gnu/gnu/stubs-64-v2.h
+++ b/lib/libc/include/powerpc64le-linux-gnu/gnu/stubs-64-v2.h
@@ -8,9 +8,7 @@
#endif
#define __stub_chflags
-#define __stub_fattach
#define __stub_fchflags
-#define __stub_fdetach
#define __stub_gtty
#define __stub_lchmod
#define __stub_revoke
diff --git a/lib/libc/include/riscv64-linux-gnu/gnu/stubs-lp64.h b/lib/libc/include/riscv64-linux-gnu/gnu/stubs-lp64.h
index 90477e3afc..6ac6614fb7 100644
--- a/lib/libc/include/riscv64-linux-gnu/gnu/stubs-lp64.h
+++ b/lib/libc/include/riscv64-linux-gnu/gnu/stubs-lp64.h
@@ -13,9 +13,7 @@
#define __stub___compat_query_module
#define __stub___compat_uselib
#define __stub_chflags
-#define __stub_fattach
#define __stub_fchflags
-#define __stub_fdetach
#define __stub_feclearexcept
#define __stub_fedisableexcept
#define __stub_feenableexcept
@@ -33,12 +31,8 @@
#define __stub_fesetround
#define __stub_fetestexcept
#define __stub_feupdateenv
-#define __stub_getmsg
-#define __stub_getpmsg
#define __stub_gtty
#define __stub_lchmod
-#define __stub_putmsg
-#define __stub_putpmsg
#define __stub_revoke
#define __stub_setlogin
#define __stub_sigreturn
diff --git a/lib/libc/include/s390x-linux-gnu/bits/hwcap.h b/lib/libc/include/s390x-linux-gnu/bits/hwcap.h
index 87b4bd47c6..76ab321e19 100644
--- a/lib/libc/include/s390x-linux-gnu/bits/hwcap.h
+++ b/lib/libc/include/s390x-linux-gnu/bits/hwcap.h
@@ -38,4 +38,8 @@
#define HWCAP_S390_VX 2048
#define HWCAP_S390_VXD 4096
#define HWCAP_S390_VXE 8192
-#define HWCAP_S390_GS 16384 \ No newline at end of file
+#define HWCAP_S390_GS 16384
+#define HWCAP_S390_VXRS_EXT2 32768
+#define HWCAP_S390_VXRS_PDE 65536
+#define HWCAP_S390_SORT 131072
+#define HWCAP_S390_DFLT 262144 \ No newline at end of file
diff --git a/lib/libc/include/sparc-linux-gnu/bits/socket-constants.h b/lib/libc/include/sparc-linux-gnu/bits/socket-constants.h
new file mode 100644
index 0000000000..8334fc24e4
--- /dev/null
+++ b/lib/libc/include/sparc-linux-gnu/bits/socket-constants.h
@@ -0,0 +1,38 @@
+/* Socket constants which vary among Linux architectures. Version for SPARC.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _SYS_SOCKET_H
+# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead."
+#endif
+
+#define SOL_SOCKET 65535
+#define SO_ACCEPTCONN 32768
+#define SO_BROADCAST 32
+#define SO_DONTROUTE 16
+#define SO_ERROR 4103
+#define SO_KEEPALIVE 8
+#define SO_LINGER 128
+#define SO_OOBINLINE 256
+#define SO_RCVBUF 4098
+#define SO_RCVLOWAT 2048
+#define SO_RCVTIMEO 8192
+#define SO_REUSEADDR 4
+#define SO_SNDBUF 4097
+#define SO_SNDLOWAT 4096
+#define SO_SNDTIMEO 16384
+#define SO_TYPE 4104 \ No newline at end of file
diff --git a/lib/libc/include/sparc-linux-gnu/gnu/stubs-64.h b/lib/libc/include/sparc-linux-gnu/gnu/stubs-64.h
deleted file mode 100644
index cab3cfc760..0000000000
--- a/lib/libc/include/sparc-linux-gnu/gnu/stubs-64.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* This file is automatically generated.
- It defines a symbol `__stub_FUNCTION' for each function
- in the C library which is a stub, meaning it will fail
- every time called, usually setting errno to ENOSYS. */
-
-#ifdef _LIBC
- #error Applications may not define the macro _LIBC
-#endif
-
-#define __stub_chflags
-#define __stub_fattach
-#define __stub_fchflags
-#define __stub_fdetach
-#define __stub_getmsg
-#define __stub_getpmsg
-#define __stub_gtty
-#define __stub_lchmod
-#define __stub_pkey_alloc
-#define __stub_pkey_free
-#define __stub_putmsg
-#define __stub_putpmsg
-#define __stub_revoke
-#define __stub_setlogin
-#define __stub_sigreturn
-#define __stub_sstk
-#define __stub_stty \ No newline at end of file
diff --git a/lib/libc/include/sparcv9-linux-gnu/bits/socket-constants.h b/lib/libc/include/sparcv9-linux-gnu/bits/socket-constants.h
new file mode 100644
index 0000000000..8334fc24e4
--- /dev/null
+++ b/lib/libc/include/sparcv9-linux-gnu/bits/socket-constants.h
@@ -0,0 +1,38 @@
+/* Socket constants which vary among Linux architectures. Version for SPARC.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _SYS_SOCKET_H
+# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead."
+#endif
+
+#define SOL_SOCKET 65535
+#define SO_ACCEPTCONN 32768
+#define SO_BROADCAST 32
+#define SO_DONTROUTE 16
+#define SO_ERROR 4103
+#define SO_KEEPALIVE 8
+#define SO_LINGER 128
+#define SO_OOBINLINE 256
+#define SO_RCVBUF 4098
+#define SO_RCVLOWAT 2048
+#define SO_RCVTIMEO 8192
+#define SO_REUSEADDR 4
+#define SO_SNDBUF 4097
+#define SO_SNDLOWAT 4096
+#define SO_SNDTIMEO 16384
+#define SO_TYPE 4104 \ No newline at end of file
diff --git a/lib/libc/include/sparcv9-linux-gnu/gnu/stubs-32.h b/lib/libc/include/sparcv9-linux-gnu/gnu/stubs-32.h
deleted file mode 100644
index cab3cfc760..0000000000
--- a/lib/libc/include/sparcv9-linux-gnu/gnu/stubs-32.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* This file is automatically generated.
- It defines a symbol `__stub_FUNCTION' for each function
- in the C library which is a stub, meaning it will fail
- every time called, usually setting errno to ENOSYS. */
-
-#ifdef _LIBC
- #error Applications may not define the macro _LIBC
-#endif
-
-#define __stub_chflags
-#define __stub_fattach
-#define __stub_fchflags
-#define __stub_fdetach
-#define __stub_getmsg
-#define __stub_getpmsg
-#define __stub_gtty
-#define __stub_lchmod
-#define __stub_pkey_alloc
-#define __stub_pkey_free
-#define __stub_putmsg
-#define __stub_putpmsg
-#define __stub_revoke
-#define __stub_setlogin
-#define __stub_sigreturn
-#define __stub_sstk
-#define __stub_stty \ No newline at end of file
diff --git a/lib/libc/include/x86_64-linux-gnu/bits/math-vector-fortran.h b/lib/libc/include/x86_64-linux-gnu/finclude/math-vector-fortran.h
index fc3aa3e3b2..fc3aa3e3b2 100644
--- a/lib/libc/include/x86_64-linux-gnu/bits/math-vector-fortran.h
+++ b/lib/libc/include/x86_64-linux-gnu/finclude/math-vector-fortran.h
diff --git a/lib/libc/include/x86_64-linux-gnu/gnu/stubs-64.h b/lib/libc/include/x86_64-linux-gnu/gnu/stubs-64.h
index e3f5d47f5f..5ce8c64bba 100644
--- a/lib/libc/include/x86_64-linux-gnu/gnu/stubs-64.h
+++ b/lib/libc/include/x86_64-linux-gnu/gnu/stubs-64.h
@@ -9,13 +9,9 @@
#define __stub___compat_bdflush
#define __stub_chflags
-#define __stub_fattach
#define __stub_fchflags
-#define __stub_fdetach
-#define __stub_getmsg
#define __stub_gtty
#define __stub_lchmod
-#define __stub_putmsg
#define __stub_revoke
#define __stub_setlogin
#define __stub_sigreturn
diff --git a/lib/libc/include/x86_64-linux-gnu/sys/io.h b/lib/libc/include/x86_64-linux-gnu/sys/io.h
deleted file mode 100644
index c27e96f4af..0000000000
--- a/lib/libc/include/x86_64-linux-gnu/sys/io.h
+++ /dev/null
@@ -1,183 +0,0 @@
-/* Copyright (C) 1996-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#ifndef _SYS_IO_H
-#define _SYS_IO_H 1
-
-#include <features.h>
-
-__BEGIN_DECLS
-
-/* If TURN_ON is TRUE, request for permission to do direct i/o on the
- port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
- permission off for that range. This call requires root privileges.
-
- Portability note: not all Linux platforms support this call. Most
- platforms based on the PC I/O architecture probably will, however.
- E.g., Linux/Alpha for Alpha PCs supports this. */
-extern int ioperm (unsigned long int __from, unsigned long int __num,
- int __turn_on) __THROW;
-
-/* Set the I/O privilege level to LEVEL. If LEVEL>3, permission to
- access any I/O port is granted. This call requires root
- privileges. */
-extern int iopl (int __level) __THROW;
-
-#if defined __GNUC__ && __GNUC__ >= 2
-
-static __inline unsigned char
-inb (unsigned short int __port)
-{
- unsigned char _v;
-
- __asm__ __volatile__ ("inb %w1,%0":"=a" (_v):"Nd" (__port));
- return _v;
-}
-
-static __inline unsigned char
-inb_p (unsigned short int __port)
-{
- unsigned char _v;
-
- __asm__ __volatile__ ("inb %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (__port));
- return _v;
-}
-
-static __inline unsigned short int
-inw (unsigned short int __port)
-{
- unsigned short _v;
-
- __asm__ __volatile__ ("inw %w1,%0":"=a" (_v):"Nd" (__port));
- return _v;
-}
-
-static __inline unsigned short int
-inw_p (unsigned short int __port)
-{
- unsigned short int _v;
-
- __asm__ __volatile__ ("inw %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (__port));
- return _v;
-}
-
-static __inline unsigned int
-inl (unsigned short int __port)
-{
- unsigned int _v;
-
- __asm__ __volatile__ ("inl %w1,%0":"=a" (_v):"Nd" (__port));
- return _v;
-}
-
-static __inline unsigned int
-inl_p (unsigned short int __port)
-{
- unsigned int _v;
- __asm__ __volatile__ ("inl %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (__port));
- return _v;
-}
-
-static __inline void
-outb (unsigned char __value, unsigned short int __port)
-{
- __asm__ __volatile__ ("outb %b0,%w1": :"a" (__value), "Nd" (__port));
-}
-
-static __inline void
-outb_p (unsigned char __value, unsigned short int __port)
-{
- __asm__ __volatile__ ("outb %b0,%w1\noutb %%al,$0x80": :"a" (__value),
- "Nd" (__port));
-}
-
-static __inline void
-outw (unsigned short int __value, unsigned short int __port)
-{
- __asm__ __volatile__ ("outw %w0,%w1": :"a" (__value), "Nd" (__port));
-
-}
-
-static __inline void
-outw_p (unsigned short int __value, unsigned short int __port)
-{
- __asm__ __volatile__ ("outw %w0,%w1\noutb %%al,$0x80": :"a" (__value),
- "Nd" (__port));
-}
-
-static __inline void
-outl (unsigned int __value, unsigned short int __port)
-{
- __asm__ __volatile__ ("outl %0,%w1": :"a" (__value), "Nd" (__port));
-}
-
-static __inline void
-outl_p (unsigned int __value, unsigned short int __port)
-{
- __asm__ __volatile__ ("outl %0,%w1\noutb %%al,$0x80": :"a" (__value),
- "Nd" (__port));
-}
-
-static __inline void
-insb (unsigned short int __port, void *__addr, unsigned long int __count)
-{
- __asm__ __volatile__ ("cld ; rep ; insb":"=D" (__addr), "=c" (__count)
- :"d" (__port), "0" (__addr), "1" (__count));
-}
-
-static __inline void
-insw (unsigned short int __port, void *__addr, unsigned long int __count)
-{
- __asm__ __volatile__ ("cld ; rep ; insw":"=D" (__addr), "=c" (__count)
- :"d" (__port), "0" (__addr), "1" (__count));
-}
-
-static __inline void
-insl (unsigned short int __port, void *__addr, unsigned long int __count)
-{
- __asm__ __volatile__ ("cld ; rep ; insl":"=D" (__addr), "=c" (__count)
- :"d" (__port), "0" (__addr), "1" (__count));
-}
-
-static __inline void
-outsb (unsigned short int __port, const void *__addr,
- unsigned long int __count)
-{
- __asm__ __volatile__ ("cld ; rep ; outsb":"=S" (__addr), "=c" (__count)
- :"d" (__port), "0" (__addr), "1" (__count));
-}
-
-static __inline void
-outsw (unsigned short int __port, const void *__addr,
- unsigned long int __count)
-{
- __asm__ __volatile__ ("cld ; rep ; outsw":"=S" (__addr), "=c" (__count)
- :"d" (__port), "0" (__addr), "1" (__count));
-}
-
-static __inline void
-outsl (unsigned short int __port, const void *__addr,
- unsigned long int __count)
-{
- __asm__ __volatile__ ("cld ; rep ; outsl":"=S" (__addr), "=c" (__count)
- :"d" (__port), "0" (__addr), "1" (__count));
-}
-
-#endif /* GNU C */
-
-__END_DECLS
-#endif /* _SYS_IO_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-linux-gnux32/bits/xtitypes.h b/lib/libc/include/x86_64-linux-gnux32/bits/xtitypes.h
deleted file mode 100644
index 1eb0c84d8f..0000000000
--- a/lib/libc/include/x86_64-linux-gnux32/bits/xtitypes.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* bits/xtitypes.h -- Define some types used by <bits/stropts.h>. x86-64.
- Copyright (C) 2002-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#ifndef _STROPTS_H
-# error "Never include <bits/xtitypes.h> directly; use <stropts.h> instead."
-#endif
-
-#ifndef _BITS_XTITYPES_H
-#define _BITS_XTITYPES_H 1
-
-#include <bits/types.h>
-
-/* This type is used by some structs in <bits/stropts.h>. */
-typedef __SLONG32_TYPE __t_scalar_t;
-typedef __ULONG32_TYPE __t_uscalar_t;
-
-
-#endif /* bits/xtitypes.h */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-linux-gnux32/bits/math-vector-fortran.h b/lib/libc/include/x86_64-linux-gnux32/finclude/math-vector-fortran.h
index fc3aa3e3b2..fc3aa3e3b2 100644
--- a/lib/libc/include/x86_64-linux-gnux32/bits/math-vector-fortran.h
+++ b/lib/libc/include/x86_64-linux-gnux32/finclude/math-vector-fortran.h
diff --git a/lib/libc/include/x86_64-linux-gnux32/gnu/stubs-x32.h b/lib/libc/include/x86_64-linux-gnux32/gnu/stubs-x32.h
index 34fab3804a..9f943854b0 100644
--- a/lib/libc/include/x86_64-linux-gnux32/gnu/stubs-x32.h
+++ b/lib/libc/include/x86_64-linux-gnux32/gnu/stubs-x32.h
@@ -14,13 +14,9 @@
#define __stub___compat_query_module
#define __stub___compat_uselib
#define __stub_chflags
-#define __stub_fattach
#define __stub_fchflags
-#define __stub_fdetach
-#define __stub_getmsg
#define __stub_gtty
#define __stub_lchmod
-#define __stub_putmsg
#define __stub_revoke
#define __stub_setlogin
#define __stub_sigreturn
diff --git a/lib/libc/include/x86_64-linux-gnux32/sys/io.h b/lib/libc/include/x86_64-linux-gnux32/sys/io.h
deleted file mode 100644
index c27e96f4af..0000000000
--- a/lib/libc/include/x86_64-linux-gnux32/sys/io.h
+++ /dev/null
@@ -1,183 +0,0 @@
-/* Copyright (C) 1996-2019 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#ifndef _SYS_IO_H
-#define _SYS_IO_H 1
-
-#include <features.h>
-
-__BEGIN_DECLS
-
-/* If TURN_ON is TRUE, request for permission to do direct i/o on the
- port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
- permission off for that range. This call requires root privileges.
-
- Portability note: not all Linux platforms support this call. Most
- platforms based on the PC I/O architecture probably will, however.
- E.g., Linux/Alpha for Alpha PCs supports this. */
-extern int ioperm (unsigned long int __from, unsigned long int __num,
- int __turn_on) __THROW;
-
-/* Set the I/O privilege level to LEVEL. If LEVEL>3, permission to
- access any I/O port is granted. This call requires root
- privileges. */
-extern int iopl (int __level) __THROW;
-
-#if defined __GNUC__ && __GNUC__ >= 2
-
-static __inline unsigned char
-inb (unsigned short int __port)
-{
- unsigned char _v;
-
- __asm__ __volatile__ ("inb %w1,%0":"=a" (_v):"Nd" (__port));
- return _v;
-}
-
-static __inline unsigned char
-inb_p (unsigned short int __port)
-{
- unsigned char _v;
-
- __asm__ __volatile__ ("inb %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (__port));
- return _v;
-}
-
-static __inline unsigned short int
-inw (unsigned short int __port)
-{
- unsigned short _v;
-
- __asm__ __volatile__ ("inw %w1,%0":"=a" (_v):"Nd" (__port));
- return _v;
-}
-
-static __inline unsigned short int
-inw_p (unsigned short int __port)
-{
- unsigned short int _v;
-
- __asm__ __volatile__ ("inw %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (__port));
- return _v;
-}
-
-static __inline unsigned int
-inl (unsigned short int __port)
-{
- unsigned int _v;
-
- __asm__ __volatile__ ("inl %w1,%0":"=a" (_v):"Nd" (__port));
- return _v;
-}
-
-static __inline unsigned int
-inl_p (unsigned short int __port)
-{
- unsigned int _v;
- __asm__ __volatile__ ("inl %w1,%0\noutb %%al,$0x80":"=a" (_v):"Nd" (__port));
- return _v;
-}
-
-static __inline void
-outb (unsigned char __value, unsigned short int __port)
-{
- __asm__ __volatile__ ("outb %b0,%w1": :"a" (__value), "Nd" (__port));
-}
-
-static __inline void
-outb_p (unsigned char __value, unsigned short int __port)
-{
- __asm__ __volatile__ ("outb %b0,%w1\noutb %%al,$0x80": :"a" (__value),
- "Nd" (__port));
-}
-
-static __inline void
-outw (unsigned short int __value, unsigned short int __port)
-{
- __asm__ __volatile__ ("outw %w0,%w1": :"a" (__value), "Nd" (__port));
-
-}
-
-static __inline void
-outw_p (unsigned short int __value, unsigned short int __port)
-{
- __asm__ __volatile__ ("outw %w0,%w1\noutb %%al,$0x80": :"a" (__value),
- "Nd" (__port));
-}
-
-static __inline void
-outl (unsigned int __value, unsigned short int __port)
-{
- __asm__ __volatile__ ("outl %0,%w1": :"a" (__value), "Nd" (__port));
-}
-
-static __inline void
-outl_p (unsigned int __value, unsigned short int __port)
-{
- __asm__ __volatile__ ("outl %0,%w1\noutb %%al,$0x80": :"a" (__value),
- "Nd" (__port));
-}
-
-static __inline void
-insb (unsigned short int __port, void *__addr, unsigned long int __count)
-{
- __asm__ __volatile__ ("cld ; rep ; insb":"=D" (__addr), "=c" (__count)
- :"d" (__port), "0" (__addr), "1" (__count));
-}
-
-static __inline void
-insw (unsigned short int __port, void *__addr, unsigned long int __count)
-{
- __asm__ __volatile__ ("cld ; rep ; insw":"=D" (__addr), "=c" (__count)
- :"d" (__port), "0" (__addr), "1" (__count));
-}
-
-static __inline void
-insl (unsigned short int __port, void *__addr, unsigned long int __count)
-{
- __asm__ __volatile__ ("cld ; rep ; insl":"=D" (__addr), "=c" (__count)
- :"d" (__port), "0" (__addr), "1" (__count));
-}
-
-static __inline void
-outsb (unsigned short int __port, const void *__addr,
- unsigned long int __count)
-{
- __asm__ __volatile__ ("cld ; rep ; outsb":"=S" (__addr), "=c" (__count)
- :"d" (__port), "0" (__addr), "1" (__count));
-}
-
-static __inline void
-outsw (unsigned short int __port, const void *__addr,
- unsigned long int __count)
-{
- __asm__ __volatile__ ("cld ; rep ; outsw":"=S" (__addr), "=c" (__count)
- :"d" (__port), "0" (__addr), "1" (__count));
-}
-
-static __inline void
-outsl (unsigned short int __port, const void *__addr,
- unsigned long int __count)
-{
- __asm__ __volatile__ ("cld ; rep ; outsl":"=S" (__addr), "=c" (__count)
- :"d" (__port), "0" (__addr), "1" (__count));
-}
-
-#endif /* GNU C */
-
-__END_DECLS
-#endif /* _SYS_IO_H */ \ No newline at end of file
diff --git a/tools/process_headers.zig b/tools/process_headers.zig
index d18e25355f..420c118cb9 100644
--- a/tools/process_headers.zig
+++ b/tools/process_headers.zig
@@ -20,6 +20,7 @@ const assert = std.debug.assert;
const LibCTarget = struct {
name: []const u8,
arch: MultiArch,
+ abi: MultiAbi,
};
const MultiArch = union(enum) {
@@ -39,396 +40,129 @@ const MultiArch = union(enum) {
}
};
+const MultiAbi = union(enum) {
+ musl,
+ specific: Abi,
+
+ fn eql(a: MultiAbi, b: MultiAbi) bool {
+ if (@enumToInt(a) != @enumToInt(b))
+ return false;
+ if (@TagType(MultiAbi)(a) != .specific)
+ return true;
+ return a.specific == b.specific;
+ }
+};
+
const glibc_targets = [_]LibCTarget{
LibCTarget{
.name = "aarch64_be-linux-gnu",
- .zig_arch = Arch.aarch64_be,
- .zig_abi = Abi.gnu,
+ .arch = MultiArch {.specific = Arch.aarch64_be},
+ .abi = MultiAbi {.specific = Abi.gnu},
},
LibCTarget{
.name = "aarch64-linux-gnu",
- .zig_arch = Arch.aarch64,
- .zig_abi = Abi.gnu,
- },
- LibCTarget{
- .name = "aarch64-linux-gnu-disable-multi-arch",
- .zig_arch = Arch.aarch64,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "alpha-linux-gnu",
- .zig_arch = null,
- .zig_abi = Abi.gnu,
+ .arch = MultiArch {.specific = Arch.aarch64},
+ .abi = MultiAbi {.specific = Abi.gnu},
},
LibCTarget{
.name = "armeb-linux-gnueabi",
- .zig_arch = Arch.armeb,
- .zig_abi = Abi.gnueabi,
- },
- LibCTarget{
- .name = "armeb-linux-gnueabi-be8",
- .zig_arch = Arch.armeb,
- .zig_abi = null,
+ .arch = MultiArch {.specific = Arch.armeb},
+ .abi = MultiAbi {.specific = Abi.gnueabi},
},
LibCTarget{
.name = "armeb-linux-gnueabihf",
- .zig_arch = Arch.armeb,
- .zig_abi = Abi.gnueabihf,
- },
- LibCTarget{
- .name = "armeb-linux-gnueabihf-be8",
- .zig_arch = Arch.armeb,
- .zig_abi = null,
+ .arch = MultiArch {.specific = Arch.armeb},
+ .abi = MultiAbi {.specific = Abi.gnueabihf},
},
LibCTarget{
.name = "arm-linux-gnueabi",
- .zig_arch = Arch.arm,
- .zig_abi = Abi.gnueabi,
+ .arch = MultiArch {.specific = Arch.arm},
+ .abi = MultiAbi {.specific = Abi.gnueabi},
},
LibCTarget{
.name = "arm-linux-gnueabihf",
- .zig_arch = Arch.arm,
- .zig_abi = Abi.gnueabihf,
- },
- LibCTarget{
- .name = "arm-linux-gnueabihf-v7a",
- .zig_arch = Arch.arm,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "arm-linux-gnueabihf-v7a-disable-multi-arch",
- .zig_arch = null,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "hppa-linux-gnu",
- .zig_arch = null,
- .zig_abi = Abi.gnu,
- },
- LibCTarget{
- .name = "i486-linux-gnu",
- .zig_arch = null,
- .zig_abi = Abi.gnu,
- },
- LibCTarget{
- .name = "i586-linux-gnu",
- .zig_arch = null,
- .zig_abi = Abi.gnu,
- },
- LibCTarget{
- .name = "i686-gnu",
- .zig_arch = Arch.i386,
- .zig_abi = Abi.gnu,
+ .arch = MultiArch {.specific = Arch.arm},
+ .abi = MultiAbi {.specific = Abi.gnueabihf},
},
LibCTarget{
.name = "i686-linux-gnu",
- .zig_arch = Arch.i386,
- .zig_abi = Abi.gnu,
- },
- LibCTarget{
- .name = "i686-linux-gnu-disable-multi-arch",
- .zig_arch = null,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "i686-linux-gnu-enable-obsolete",
- .zig_arch = Arch.i386,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "i686-linux-gnu-static-pie",
- .zig_arch = Arch.i386,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "ia64-linux-gnu",
- .zig_arch = null,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "m68k-linux-gnu",
- .zig_arch = null,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "m68k-linux-gnu-coldfire",
- .zig_arch = null,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "m68k-linux-gnu-coldfire-soft",
- .zig_arch = null,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "microblazeel-linux-gnu",
- .zig_arch = null,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "microblaze-linux-gnu",
- .zig_arch = null,
- .zig_abi = null,
+ .arch = MultiArch {.specific = Arch.i386},
+ .abi = MultiAbi {.specific = Abi.gnu},
},
LibCTarget{
.name = "mips64el-linux-gnu-n32",
- .zig_arch = Arch.mips64el,
- .zig_abi = Abi.gnuabin32,
- },
- LibCTarget{
- .name = "mips64el-linux-gnu-n32-nan2008",
- .zig_arch = Arch.mips64el,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "mips64el-linux-gnu-n32-nan2008-soft",
- .zig_arch = Arch.mips64el,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "mips64el-linux-gnu-n32-soft",
- .zig_arch = Arch.mips64el,
- .zig_abi = null,
+ .arch = MultiArch {.specific = Arch.mips64el},
+ .abi = MultiAbi {.specific = Abi.gnuabin32},
},
LibCTarget{
.name = "mips64el-linux-gnu-n64",
- .zig_arch = Arch.mips64el,
- .zig_abi = Abi.gnuabi64,
- },
- LibCTarget{
- .name = "mips64el-linux-gnu-n64-nan2008",
- .zig_arch = Arch.mips64el,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "mips64el-linux-gnu-n64-nan2008-soft",
- .zig_arch = Arch.mips64el,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "mips64el-linux-gnu-n64-soft",
- .zig_arch = Arch.mips64el,
- .zig_abi = null,
+ .arch = MultiArch {.specific = Arch.mips64el},
+ .abi = MultiAbi {.specific = Abi.gnuabi64},
},
LibCTarget{
.name = "mips64-linux-gnu-n32",
- .zig_arch = Arch.mips64,
- .zig_abi = Abi.gnuabin32,
- },
- LibCTarget{
- .name = "mips64-linux-gnu-n32-nan2008",
- .zig_arch = Arch.mips64,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "mips64-linux-gnu-n32-nan2008-soft",
- .zig_arch = Arch.mips64,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "mips64-linux-gnu-n32-soft",
- .zig_arch = Arch.mips64,
- .zig_abi = null,
+ .arch = MultiArch {.specific = Arch.mips64},
+ .abi = MultiAbi {.specific = Abi.gnuabin32},
},
LibCTarget{
.name = "mips64-linux-gnu-n64",
- .zig_arch = Arch.mips64,
- .zig_abi = Abi.gnuabi64,
- },
- LibCTarget{
- .name = "mips64-linux-gnu-n64-nan2008",
- .zig_arch = Arch.mips64,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "mips64-linux-gnu-n64-nan2008-soft",
- .zig_arch = Arch.mips64,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "mips64-linux-gnu-n64-soft",
- .zig_arch = Arch.mips64,
- .zig_abi = null,
+ .arch = MultiArch {.specific = Arch.mips64},
+ .abi = MultiAbi {.specific = Abi.gnuabi64},
},
LibCTarget{
.name = "mipsel-linux-gnu",
- .zig_arch = Arch.mipsel,
- .zig_abi = Abi.gnu,
- },
- LibCTarget{
- .name = "mipsel-linux-gnu-nan2008",
- .zig_arch = Arch.mipsel,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "mipsel-linux-gnu-nan2008-soft",
- .zig_arch = Arch.mipsel,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "mipsel-linux-gnu-soft",
- .zig_arch = Arch.mipsel,
- .zig_abi = null,
+ .arch = MultiArch {.specific = Arch.mipsel},
+ .abi = MultiAbi {.specific = Abi.gnu},
},
LibCTarget{
.name = "mips-linux-gnu",
- .zig_arch = Arch.mips,
- .zig_abi = Abi.gnu,
- },
- LibCTarget{
- .name = "mips-linux-gnu-nan2008",
- .zig_arch = Arch.mips,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "mips-linux-gnu-nan2008-soft",
- .zig_arch = Arch.mips,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "mips-linux-gnu-soft",
- .zig_arch = Arch.mips,
- .zig_abi = null,
+ .arch = MultiArch {.specific = Arch.mips},
+ .abi = MultiAbi {.specific = Abi.gnu},
},
LibCTarget{
.name = "powerpc64le-linux-gnu",
- .zig_arch = Arch.powerpc64le,
- .zig_abi = Abi.gnu,
+ .arch = MultiArch {.specific = Arch.powerpc64le},
+ .abi = MultiAbi {.specific = Abi.gnu},
},
LibCTarget{
.name = "powerpc64-linux-gnu",
- .zig_arch = Arch.powerpc64,
- .zig_abi = Abi.gnu,
+ .arch = MultiArch {.specific = Arch.powerpc64},
+ .abi = MultiAbi {.specific = Abi.gnu},
},
LibCTarget{
.name = "powerpc-linux-gnu",
- .zig_arch = Arch.powerpc,
- .zig_abi = Abi.gnu,
- },
- LibCTarget{
- .name = "powerpc-linux-gnu-power4",
- .zig_arch = Arch.powerpc,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "powerpc-linux-gnu-soft",
- .zig_arch = Arch.powerpc,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "powerpc-linux-gnuspe",
- .zig_arch = Arch.powerpc,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "powerpc-linux-gnuspe-e500v1",
- .zig_arch = Arch.powerpc,
- .zig_abi = null,
+ .arch = MultiArch {.specific = Arch.powerpc},
+ .abi = MultiAbi {.specific = Abi.gnu},
},
LibCTarget{
.name = "riscv64-linux-gnu-rv64imac-lp64",
- .zig_arch = Arch.riscv64,
- .zig_abi = Abi.gnu,
- },
- LibCTarget{
- .name = "riscv64-linux-gnu-rv64imafdc-lp64",
- .zig_arch = Arch.riscv64,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "riscv64-linux-gnu-rv64imafdc-lp64d",
- .zig_arch = Arch.riscv64,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "s390-linux-gnu",
- .zig_arch = null,
- .zig_abi = Abi.gnu,
+ .arch = MultiArch {.specific = Arch.riscv64},
+ .abi = MultiAbi {.specific = Abi.gnu},
},
LibCTarget{
.name = "s390x-linux-gnu",
- .zig_arch = Arch.s390x,
- .zig_abi = Abi.gnu,
- },
- LibCTarget{
- .name = "sh3eb-linux-gnu",
- .zig_arch = null,
- .zig_abi = Abi.gnu,
- },
- LibCTarget{
- .name = "sh3-linux-gnu",
- .zig_arch = null,
- .zig_abi = Abi.gnu,
- },
- LibCTarget{
- .name = "sh4eb-linux-gnu",
- .zig_arch = null,
- .zig_abi = Abi.gnu,
- },
- LibCTarget{
- .name = "sh4eb-linux-gnu-soft",
- .zig_arch = null,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "sh4-linux-gnu",
- .zig_arch = null,
- .zig_abi = Abi.gnu,
- },
- LibCTarget{
- .name = "sh4-linux-gnu-soft",
- .zig_arch = null,
- .zig_abi = null,
+ .arch = MultiArch {.specific = Arch.s390x},
+ .abi = MultiAbi {.specific = Abi.gnu},
},
LibCTarget{
.name = "sparc64-linux-gnu",
- .zig_arch = Arch.sparc,
- .zig_abi = Abi.gnu,
- },
- LibCTarget{
- .name = "sparc64-linux-gnu-disable-multi-arch",
- .zig_arch = Arch.sparc,
- .zig_abi = null,
+ .arch = MultiArch {.specific = Arch.sparc},
+ .abi = MultiAbi {.specific = Abi.gnu},
},
LibCTarget{
.name = "sparcv9-linux-gnu",
- .zig_arch = Arch.sparcv9,
- .zig_abi = Abi.gnu,
- },
- LibCTarget{
- .name = "sparcv9-linux-gnu-disable-multi-arch",
- .zig_arch = Arch.sparcv9,
- .zig_abi = null,
+ .arch = MultiArch {.specific = Arch.sparcv9},
+ .abi = MultiAbi {.specific = Abi.gnu},
},
LibCTarget{
.name = "x86_64-linux-gnu",
- .zig_arch = Arch.x86_64,
- .zig_abi = Abi.gnu,
- },
- LibCTarget{
- .name = "x86_64-linux-gnu-disable-multi-arch",
- .zig_arch = Arch.x86_64,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "x86_64-linux-gnu-enable-obsolete",
- .zig_arch = Arch.x86_64,
- .zig_abi = null,
- },
- LibCTarget{
- .name = "x86_64-linux-gnu-static-pie",
- .zig_arch = Arch.x86_64,
- .zig_abi = null,
+ .arch = MultiArch {.specific = Arch.x86_64},
+ .abi = MultiAbi {.specific = Abi.gnu},
},
LibCTarget{
.name = "x86_64-linux-gnu-x32",
- .zig_arch = Arch.x86_64,
- .zig_abi = Abi.gnux32,
- },
- LibCTarget{
- .name = "x86_64-linux-gnu-x32-static-pie",
- .zig_arch = Arch.x86_64,
- .zig_abi = null,
+ .arch = MultiArch {.specific = Arch.x86_64},
+ .abi = MultiAbi {.specific = Abi.gnux32},
},
};
@@ -436,42 +170,52 @@ const musl_targets = [_]LibCTarget{
LibCTarget{
.name = "aarch64",
.arch = MultiArch.aarch64,
+ .abi = MultiAbi.musl,
},
LibCTarget{
.name = "arm",
.arch = MultiArch.arm,
+ .abi = MultiAbi.musl,
},
LibCTarget{
.name = "i386",
.arch = MultiArch{ .specific = .i386 },
+ .abi = MultiAbi.musl,
},
LibCTarget{
.name = "mips",
.arch = MultiArch.mips,
+ .abi = MultiAbi.musl,
},
LibCTarget{
.name = "mips64",
.arch = MultiArch.mips64,
+ .abi = MultiAbi.musl,
},
LibCTarget{
.name = "powerpc",
.arch = MultiArch{ .specific = .powerpc },
+ .abi = MultiAbi.musl,
},
LibCTarget{
.name = "powerpc64",
.arch = MultiArch.powerpc64,
+ .abi = MultiAbi.musl,
},
LibCTarget{
.name = "riscv64",
.arch = MultiArch{ .specific = .riscv64 },
+ .abi = MultiAbi.musl,
},
LibCTarget{
.name = "s390x",
.arch = MultiArch{ .specific = .s390x },
+ .abi = MultiAbi.musl,
},
LibCTarget{
.name = "x86_64",
.arch = MultiArch{ .specific = .x86_64 },
+ .abi = MultiAbi.musl,
},
};
@@ -562,7 +306,7 @@ pub fn main() !void {
var libc_targets: []const LibCTarget = undefined;
switch (vendor) {
.musl => libc_targets = musl_targets,
- .glibc => @panic("TODO this regressed"), // glibc_targets,
+ .glibc => libc_targets = glibc_targets,
}
var path_table = PathTable.init(allocator);
@@ -577,7 +321,7 @@ pub fn main() !void {
.arch = libc_target.arch,
.abi = switch (vendor) {
.musl => .musl,
- else => @panic("TODO this regressed"),
+ .glibc => libc_target.abi.specific,
},
.os = .linux,
};
diff --git a/tools/update_glibc.zig b/tools/update_glibc.zig
index 1bca274124..c0a3153aec 100644
--- a/tools/update_glibc.zig
+++ b/tools/update_glibc.zig
@@ -135,7 +135,7 @@ pub fn main() !void {
const allocator = &arena.allocator;
const args = try std.process.argsAlloc(allocator);
const in_glibc_dir = args[1]; // path to the unzipped tarball of glibc, e.g. ~/downloads/glibc-2.25
- const zig_src_dir = args[2]; // path to the source checkout of zig
+ const zig_src_dir = args[2]; // path to the source checkout of zig, lib dir, e.g. ~/zig-src/lib
const prefix = try fs.path.join(allocator, [_][]const u8{ in_glibc_dir, "sysdeps", "unix", "sysv", "linux" });
const glibc_out_dir = try fs.path.join(allocator, [_][]const u8{ zig_src_dir, "libc", "glibc" });