summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am4
-rwxr-xr-xbootstrap4
-rw-r--r--config/arch/arm.in2
-rw-r--r--config/arch/powerpc.in5
-rw-r--r--config/arch/sparc.in1
-rw-r--r--config/arch/x86.in1
-rw-r--r--config/binutils/binutils.in11
-rw-r--r--config/debug/gdb.in.native4
-rw-r--r--config/global/paths.in4
-rw-r--r--config/libc/glibc.in12
-rw-r--r--config/libc/newlib.in7
-rw-r--r--config/target.in5
-rw-r--r--configure.ac2
-rwxr-xr-xmaintainer/git-version-gen4
-rwxr-xr-xmaintainer/manage-packages.sh62
-rw-r--r--maintainer/package-versions.template13
-rw-r--r--packages/binutils/2.33.1/0000-sh-conf.patch34
-rw-r--r--packages/binutils/2.33.1/0001-ld_makefile_patch.patch27
-rw-r--r--packages/binutils/2.33.1/0002-check_ldrunpath_length.patch24
-rw-r--r--packages/binutils/2.33.1/0003-MinGW-w64-winpthreads-doesnt-have-pthread_mutexattr_settype.patch15
-rw-r--r--packages/binutils/2.33.1/0004-Dont-link-to-libfl-as-its-unnecessary.patch105
-rw-r--r--packages/binutils/2.33.1/0005-Darwin-gold-binary-cc-include-string-not-cstring.patch15
-rw-r--r--packages/binutils/2.33.1/0006-Darwin-Two-fixes-from-Android-NDK-PTHREAD_ONCE_INIT-wcsncasecmp.patch70
-rw-r--r--packages/binutils/2.33.1/0007-sysroot.patch41
-rw-r--r--packages/binutils/2.33.1/0008-poison-system-directories.patch279
-rw-r--r--packages/binutils/2.33.1/chksum12
-rw-r--r--packages/binutils/2.33.1/version.desc (renamed from packages/linux/4.9.156/version.desc)0
-rw-r--r--packages/binutils/2.34/0000-sh-conf.patch34
-rw-r--r--packages/binutils/2.34/0001-ld_makefile_patch.patch27
-rw-r--r--packages/binutils/2.34/0002-check_ldrunpath_length.patch24
-rw-r--r--packages/binutils/2.34/0003-MinGW-w64-winpthreads-doesnt-have-pthread_mutexattr_settype.patch15
-rw-r--r--packages/binutils/2.34/0004-Dont-link-to-libfl-as-its-unnecessary.patch105
-rw-r--r--packages/binutils/2.34/0005-Darwin-gold-binary-cc-include-string-not-cstring.patch15
-rw-r--r--packages/binutils/2.34/0006-Darwin-Two-fixes-from-Android-NDK-PTHREAD_ONCE_INIT-wcsncasecmp.patch70
-rw-r--r--packages/binutils/2.34/0007-sysroot.patch41
-rw-r--r--packages/binutils/2.34/0008-poison-system-directories.patch279
-rw-r--r--packages/binutils/2.34/chksum12
-rw-r--r--packages/binutils/2.34/version.desc (renamed from packages/linux/4.20.8/version.desc)0
-rw-r--r--packages/bison/3.4.2/chksum8
-rw-r--r--packages/bison/3.4.2/version.desc (renamed from packages/linux/4.19.21/version.desc)0
-rw-r--r--packages/bison/3.5/chksum8
-rw-r--r--packages/bison/3.5/version.desc (renamed from packages/linux/4.18.19/version.desc)0
-rw-r--r--packages/dtc/1.5.1/chksum8
-rw-r--r--packages/dtc/1.5.1/version.desc (renamed from packages/linux/4.14.99/version.desc)0
-rw-r--r--packages/elf2flt/git-453398f9/0000-support-binutils-2.34.patch447
-rw-r--r--packages/elf2flt/package.desc2
-rw-r--r--packages/expat/2.1.1/version.desc1
-rw-r--r--packages/expat/2.2.6/chksum4
-rw-r--r--packages/expat/2.2.9/chksum16
-rw-r--r--packages/expat/2.2.9/version.desc (renamed from packages/linux/3.16.63/version.desc)0
-rw-r--r--packages/expat/package.desc4
-rw-r--r--packages/gcc/7.4.0/chksum8
-rw-r--r--packages/gcc/7.5.0/0000-libtool-leave-framework-alone.patch (renamed from packages/gcc/8.3.0/0000-libtool-leave-framework-alone.patch)0
-rw-r--r--packages/gcc/7.5.0/0001-uclibc-conf.patch (renamed from packages/gcc/8.3.0/0001-uclibc-conf.patch)0
-rw-r--r--packages/gcc/7.5.0/0002-gcc-plugin-Win-Dont-need-undefined-extern-var-refs-nor-fpic.patch (renamed from packages/gcc/7.4.0/0002-gcc-plugin-Win-Dont-need-undefined-extern-var-refs-nor-fpic.patch)0
-rw-r--r--packages/gcc/7.5.0/0003-gcc-plugin-POSIX-include-sys-select-h.patch (renamed from packages/gcc/8.3.0/0003-gcc-plugin-POSIX-include-sys-select-h.patch)0
-rw-r--r--packages/gcc/7.5.0/0004-arm-softfloat-libgcc.patch (renamed from packages/gcc/8.3.0/0004-arm-softfloat-libgcc.patch)0
-rw-r--r--packages/gcc/7.5.0/0005-cilk-wchar.patch (renamed from packages/gcc/7.4.0/0005-cilk-wchar.patch)0
-rw-r--r--packages/gcc/7.5.0/0006-fix-m68k-uclinux.patch (renamed from packages/gcc/7.4.0/0006-fix-m68k-uclinux.patch)0
-rw-r--r--packages/gcc/7.5.0/0007-libgfortran-missing-include.patch (renamed from packages/gcc/7.4.0/0007-libgfortran-missing-include.patch)0
-rw-r--r--packages/gcc/7.5.0/0008-nios2-bad-multilib-default.patch (renamed from packages/gcc/7.4.0/0008-nios2-bad-multilib-default.patch)0
-rw-r--r--packages/gcc/7.5.0/0009-libgcc-disable-split-stack-nothreads.patch (renamed from packages/gcc/7.4.0/0009-libgcc-disable-split-stack-nothreads.patch)0
-rw-r--r--packages/gcc/7.5.0/0010-bionic-ndk.patch (renamed from packages/gcc/7.4.0/0010-bionic-ndk.patch)0
-rw-r--r--packages/gcc/7.5.0/0011-bionic-errno.patch (renamed from packages/gcc/7.4.0/0011-bionic-errno.patch)0
-rw-r--r--packages/gcc/7.5.0/0012-crystax.patch (renamed from packages/gcc/7.4.0/0012-crystax.patch)8
-rw-r--r--packages/gcc/7.5.0/0013-crystax.patch (renamed from packages/gcc/7.4.0/0013-crystax.patch)0
-rw-r--r--packages/gcc/7.5.0/0014-crystax.patch (renamed from packages/gcc/7.4.0/0014-crystax.patch)0
-rw-r--r--packages/gcc/7.5.0/0015-crystax.patch (renamed from packages/gcc/7.4.0/0015-crystax.patch)2
-rw-r--r--packages/gcc/7.5.0/0016-crystax.patch (renamed from packages/gcc/7.4.0/0016-crystax.patch)0
-rw-r--r--packages/gcc/7.5.0/0017-crystax.patch (renamed from packages/gcc/7.4.0/0017-crystax.patch)2
-rw-r--r--packages/gcc/7.5.0/0018-crystax.patch (renamed from packages/gcc/7.4.0/0018-crystax.patch)0
-rw-r--r--packages/gcc/7.5.0/0019-crystax.patch (renamed from packages/gcc/7.4.0/0019-crystax.patch)0
-rw-r--r--packages/gcc/7.5.0/0020-isl-0.20.patch (renamed from packages/gcc/7.4.0/0020-isl-0.20.patch)0
-rw-r--r--packages/gcc/7.5.0/chksum8
-rw-r--r--packages/gcc/7.5.0/version.desc (renamed from packages/gcc/8.3.0/version.desc)0
-rw-r--r--packages/gcc/8.3.0/chksum8
-rw-r--r--packages/gcc/8.4.0/8.3.0/0000-libtool-leave-framework-alone.patch (renamed from packages/gcc/7.4.0/0000-libtool-leave-framework-alone.patch)0
-rw-r--r--packages/gcc/8.4.0/8.3.0/0001-uclibc-conf.patch (renamed from packages/gcc/7.4.0/0001-uclibc-conf.patch)0
-rw-r--r--packages/gcc/8.4.0/8.3.0/0002-gcc-plugin-Win-Dont-need-undefined-extern-var-refs-nor-fpic.patch (renamed from packages/gcc/8.3.0/0002-gcc-plugin-Win-Dont-need-undefined-extern-var-refs-nor-fpic.patch)0
-rw-r--r--packages/gcc/8.4.0/8.3.0/0003-gcc-plugin-POSIX-include-sys-select-h.patch (renamed from packages/gcc/7.4.0/0003-gcc-plugin-POSIX-include-sys-select-h.patch)0
-rw-r--r--packages/gcc/8.4.0/8.3.0/0004-arm-softfloat-libgcc.patch (renamed from packages/gcc/7.4.0/0004-arm-softfloat-libgcc.patch)0
-rw-r--r--packages/gcc/8.4.0/8.3.0/0005-fix-m68k-uclinux.patch (renamed from packages/gcc/8.3.0/0005-fix-m68k-uclinux.patch)0
-rw-r--r--packages/gcc/8.4.0/8.3.0/0006-libgfortran-missing-include.patch (renamed from packages/gcc/8.3.0/0006-libgfortran-missing-include.patch)0
-rw-r--r--packages/gcc/8.4.0/8.3.0/0007-nios2-bad-multilib-default.patch (renamed from packages/gcc/8.3.0/0007-nios2-bad-multilib-default.patch)0
-rw-r--r--packages/gcc/8.4.0/8.3.0/0008-libgcc-disable-split-stack-nothreads.patch (renamed from packages/gcc/8.3.0/0008-libgcc-disable-split-stack-nothreads.patch)0
-rw-r--r--packages/gcc/8.4.0/8.3.0/0009-bionic-ndk.patch (renamed from packages/gcc/8.3.0/0009-bionic-ndk.patch)0
-rw-r--r--packages/gcc/8.4.0/8.3.0/0010-crystax.patch (renamed from packages/gcc/8.3.0/0010-crystax.patch)0
-rw-r--r--packages/gcc/8.4.0/8.3.0/0011-crystax.patch (renamed from packages/gcc/8.3.0/0011-crystax.patch)0
-rw-r--r--packages/gcc/8.4.0/8.3.0/0012-crystax.patch (renamed from packages/gcc/8.3.0/0012-crystax.patch)0
-rw-r--r--packages/gcc/8.4.0/8.3.0/0013-crystax.patch (renamed from packages/gcc/8.3.0/0013-crystax.patch)0
-rw-r--r--packages/gcc/8.4.0/8.3.0/0014-crystax.patch (renamed from packages/gcc/8.3.0/0014-crystax.patch)0
-rw-r--r--packages/gcc/8.4.0/8.3.0/0015-crystax.patch (renamed from packages/gcc/8.3.0/0015-crystax.patch)0
-rw-r--r--packages/gcc/8.4.0/8.3.0/0016-crystax.patch (renamed from packages/gcc/8.3.0/0016-crystax.patch)0
-rw-r--r--packages/gcc/8.4.0/8.3.0/0017-crystax.patch (renamed from packages/gcc/8.3.0/0017-crystax.patch)0
-rw-r--r--packages/gcc/8.4.0/8.3.0/0018-ARC-Add-multilib-support-for-linux-targets.patch (renamed from packages/gcc/8.3.0/0018-ARC-Add-multilib-support-for-linux-targets.patch)0
-rw-r--r--packages/gcc/8.4.0/8.3.0/0019-isl-0.20.patch (renamed from packages/gcc/8.3.0/0019-isl-0.20.patch)0
-rw-r--r--packages/gcc/8.4.0/8.3.0/0020-ARM-fix-cmse.patch (renamed from packages/gcc/8.3.0/0020-ARM-fix-cmse.patch)0
-rw-r--r--packages/gcc/8.4.0/8.3.0/0021-arm-Make-arm_cmse.h-C99-compatible.patch (renamed from packages/gcc/8.3.0/0021-arm-Make-arm_cmse.h-C99-compatible.patch)0
-rw-r--r--packages/gcc/8.4.0/8.3.0/0022-ARC-Update-fma-expansions.patch (renamed from packages/gcc/8.3.0/0022-ARC-Update-fma-expansions.patch)0
-rw-r--r--packages/gcc/8.4.0/chksum8
-rw-r--r--packages/gcc/8.4.0/version.desc (renamed from packages/gcc/7.4.0/version.desc)0
-rw-r--r--packages/gcc/9.2.0/0000-libtool-leave-framework-alone.patch18
-rw-r--r--packages/gcc/9.2.0/0001-uclibc-conf.patch17
-rw-r--r--packages/gcc/9.2.0/0002-gcc-plugin-Win-Dont-need-undefined-extern-var-refs-nor-fpic.patch163
-rw-r--r--packages/gcc/9.2.0/0003-gcc-plugin-POSIX-include-sys-select-h.patch14
-rw-r--r--packages/gcc/9.2.0/0004-arm-softfloat-libgcc.patch31
-rw-r--r--packages/gcc/9.2.0/0005-fix-m68k-uclinux.patch21
-rw-r--r--packages/gcc/9.2.0/0006-libgfortran-missing-include.patch14
-rw-r--r--packages/gcc/9.2.0/0007-nios2-bad-multilib-default.patch31
-rw-r--r--packages/gcc/9.2.0/0008-libgcc-disable-split-stack-nothreads.patch17
-rw-r--r--packages/gcc/9.2.0/0009-bionic-ndk.patch60
-rw-r--r--packages/gcc/9.2.0/0010-crystax.patch527
-rw-r--r--packages/gcc/9.2.0/0011-crystax.patch27
-rw-r--r--packages/gcc/9.2.0/0012-crystax.patch278
-rw-r--r--packages/gcc/9.2.0/0013-crystax.patch22
-rw-r--r--packages/gcc/9.2.0/0014-crystax.patch26
-rw-r--r--packages/gcc/9.2.0/0015-crystax.patch33
-rw-r--r--packages/gcc/9.2.0/0016-crystax.patch23
-rw-r--r--packages/gcc/9.2.0/0017-crystax.patch34
-rw-r--r--packages/gcc/9.2.0/0018-isl-0.20.patch26
-rw-r--r--packages/gcc/9.2.0/chksum8
-rw-r--r--packages/gcc/9.2.0/version.desc (renamed from packages/expat/2.2.6/version.desc)0
-rw-r--r--packages/gcc/package.desc2
-rw-r--r--packages/gdb/8.3.1/0000-musl_fix.patch33
-rw-r--r--packages/gdb/8.3.1/0001-uclibc-no-gettimeofday-clobber.patch33
-rw-r--r--packages/gdb/8.3.1/0002-xtensa-make-sure-ar_base-is-initialized.patch30
-rw-r--r--packages/gdb/8.3.1/0003-WIP-end-of-prologue-detection-hack.patch26
-rw-r--r--packages/gdb/8.3.1/0004-allow-android.patch45
-rw-r--r--packages/gdb/8.3.1/0005-no-fortify-mingw32.patch43
-rw-r--r--packages/gdb/8.3.1/chksum8
-rw-r--r--packages/gdb/8.3.1/version.desc0
-rw-r--r--packages/gdb/9.1/0000-musl_fix.patch33
-rw-r--r--packages/gdb/9.1/0001-uclibc-no-gettimeofday-clobber.patch33
-rw-r--r--packages/gdb/9.1/0002-xtensa-make-sure-ar_base-is-initialized.patch30
-rw-r--r--packages/gdb/9.1/0003-WIP-end-of-prologue-detection-hack.patch26
-rw-r--r--packages/gdb/9.1/0004-allow-android.patch45
-rw-r--r--packages/gdb/9.1/chksum8
-rw-r--r--packages/gdb/9.1/version.desc0
-rw-r--r--packages/gdb/package.desc2
-rw-r--r--packages/gettext/0.19.7/version.desc1
-rw-r--r--packages/gettext/0.19.8.1/version.desc1
-rw-r--r--packages/gettext/0.20.1/0000-Fix-linker-error-redefinition-of-vasprintf.patch26
-rw-r--r--packages/gettext/0.20.1/0001-pthread_sigmask.c-mingw.patch356
-rw-r--r--packages/gettext/0.20.1/chksum8
-rw-r--r--packages/gettext/0.20.1/version.desc0
-rw-r--r--packages/gettext/package.desc2
-rw-r--r--packages/glibc/2.28/0001-x86-Assume-enable-cet-if-GCC-defaults-to-CET-BZ-2522.patch82
-rw-r--r--packages/glibc/2.29/0001-Add-ARC-architecture.patch16
-rw-r--r--packages/glibc/2.29/0002-x86-Assume-enable-cet-if-GCC-defaults-to-CET-BZ-2522.patch82
-rw-r--r--packages/glibc/2.30/0000-typedef-caddr.patch17
-rw-r--r--packages/glibc/2.30/0001-Add-ARC-architecture.patch7832
-rw-r--r--packages/glibc/2.30/0002-x86-Assume-enable-cet-if-GCC-defaults-to-CET-BZ-2522.patch80
-rw-r--r--packages/glibc/2.30/chksum12
-rw-r--r--packages/glibc/2.30/version.desc1
-rw-r--r--packages/glibc/2.31/0000-typedef-caddr.patch17
-rw-r--r--packages/glibc/2.31/0001-Add-ARC-architecture.patch8329
-rw-r--r--packages/glibc/2.31/chksum12
-rw-r--r--packages/glibc/2.31/version.desc1
-rw-r--r--packages/glibc/package.desc2
-rw-r--r--packages/gmp/6.2.0/chksum12
-rw-r--r--packages/gmp/6.2.0/version.desc0
-rw-r--r--packages/isl/0.20/chksum24
-rw-r--r--packages/isl/0.21/chksum12
-rw-r--r--packages/isl/0.21/version.desc0
-rw-r--r--packages/isl/0.22/chksum12
-rw-r--r--packages/isl/0.22/version.desc0
-rw-r--r--packages/libelf/package.desc2
-rw-r--r--packages/libiconv/1.16/chksum4
-rw-r--r--packages/libiconv/1.16/version.desc0
-rw-r--r--packages/linux/3.16.63/chksum8
-rw-r--r--packages/linux/3.16.82/chksum8
-rw-r--r--packages/linux/3.16.82/version.desc0
-rw-r--r--packages/linux/4.14.171/chksum8
-rw-r--r--packages/linux/4.14.171/version.desc0
-rw-r--r--packages/linux/4.14.99/chksum8
-rw-r--r--packages/linux/4.18.19/chksum8
-rw-r--r--packages/linux/4.18.20/chksum8
-rw-r--r--packages/linux/4.18.20/version.desc0
-rw-r--r--packages/linux/4.19.105/chksum8
-rw-r--r--packages/linux/4.19.105/version.desc0
-rw-r--r--packages/linux/4.19.21/chksum8
-rw-r--r--packages/linux/4.20.8/chksum8
-rw-r--r--packages/linux/4.20.9/chksum8
-rw-r--r--packages/linux/4.20.9/version.desc0
-rw-r--r--packages/linux/4.4.174/chksum8
-rw-r--r--packages/linux/4.4.214/chksum8
-rw-r--r--packages/linux/4.4.214/version.desc (renamed from packages/linux/4.4.174/version.desc)0
-rw-r--r--packages/linux/4.9.156/chksum8
-rw-r--r--packages/linux/4.9.214/chksum8
-rw-r--r--packages/linux/4.9.214/version.desc0
-rw-r--r--packages/linux/5.0.19/chksum8
-rw-r--r--packages/linux/5.0.19/version.desc0
-rw-r--r--packages/linux/5.1.21/chksum8
-rw-r--r--packages/linux/5.1.21/version.desc0
-rw-r--r--packages/linux/5.2.17/chksum8
-rw-r--r--packages/linux/5.2.17/version.desc0
-rw-r--r--packages/linux/5.3.18/chksum8
-rw-r--r--packages/linux/5.3.18/version.desc0
-rw-r--r--packages/linux/5.4.21/chksum8
-rw-r--r--packages/linux/5.4.21/version.desc0
-rw-r--r--packages/linux/5.5.5/chksum8
-rw-r--r--packages/linux/5.5.5/version.desc0
-rw-r--r--packages/make/3.81/version.desc1
-rw-r--r--packages/make/4.0/version.desc1
-rw-r--r--packages/make/4.1/version.desc1
-rw-r--r--packages/make/4.2.1/version.desc2
-rw-r--r--packages/make/4.3/chksum8
-rw-r--r--packages/make/4.3/version.desc0
-rw-r--r--packages/make/package.desc2
-rw-r--r--packages/mingw-w64/v7.0.0/0000-mingw64-malloc.patch58
-rw-r--r--packages/mingw-w64/v7.0.0/chksum8
-rw-r--r--packages/mingw-w64/v7.0.0/version.desc0
-rw-r--r--packages/musl/1.1.23/chksum4
-rw-r--r--packages/musl/1.1.23/version.desc0
-rw-r--r--packages/musl/1.1.24/chksum4
-rw-r--r--packages/musl/1.1.24/version.desc0
-rw-r--r--packages/ncurses/6.2/chksum4
-rw-r--r--packages/ncurses/6.2/version.desc0
-rw-r--r--packages/newlib/3.2.0/0000-fix-unaligned-access-memcpy-m68k.patch25
-rw-r--r--packages/newlib/3.2.0/0001-fix-mt-cflags.patch13
-rw-r--r--packages/newlib/3.2.0/chksum4
-rw-r--r--packages/newlib/3.2.0/version.desc0
-rw-r--r--packages/newlib/3.3.0/0000-fix-unaligned-access-memcpy-m68k.patch25
-rw-r--r--packages/newlib/3.3.0/0001-fix-mt-cflags.patch13
-rw-r--r--packages/newlib/3.3.0/chksum4
-rw-r--r--packages/newlib/3.3.0/version.desc0
-rw-r--r--packages/strace/5.0/chksum4
-rw-r--r--packages/strace/5.0/version.desc0
-rw-r--r--packages/strace/5.1/chksum4
-rw-r--r--packages/strace/5.1/version.desc0
-rw-r--r--packages/strace/5.2/chksum4
-rw-r--r--packages/strace/5.2/version.desc0
-rw-r--r--packages/strace/5.3/chksum4
-rw-r--r--packages/strace/5.3/version.desc0
-rw-r--r--packages/strace/5.4/chksum4
-rw-r--r--packages/strace/5.4/version.desc0
-rw-r--r--packages/strace/5.5/chksum4
-rw-r--r--packages/strace/5.5/version.desc0
-rw-r--r--packages/uClibc-ng/1.0.30/chksum16
-rw-r--r--packages/uClibc-ng/1.0.32/chksum16
-rw-r--r--packages/uClibc-ng/1.0.32/version.desc0
-rw-r--r--packages/uClibc-ng/1.0.33/chksum12
-rw-r--r--packages/uClibc-ng/1.0.33/version.desc0
-rw-r--r--packages/zlib/package.desc2
-rw-r--r--samples/arc-multilib-linux-gnu/crosstool.config7
-rw-r--r--samples/arc-multilib-linux-gnu/reported.by3
-rw-r--r--scripts/build/arch/arc.sh36
-rw-r--r--scripts/build/arch/sparc.sh37
-rw-r--r--scripts/build/binutils/binutils.sh5
-rw-r--r--scripts/build/cc/gcc.sh4
-rw-r--r--scripts/build/companion_tools/500-dtc.sh6
-rw-r--r--scripts/build/internals.sh2
-rw-r--r--scripts/build/libc/glibc.sh5
-rw-r--r--scripts/build/libc/musl.sh3
-rw-r--r--scripts/build/libc/newlib.sh5
-rw-r--r--scripts/crosstool-NG.sh1
-rw-r--r--scripts/functions46
-rw-r--r--testing/docker/alpine3.8/Dockerfile4
-rw-r--r--testing/docker/archlinux/Dockerfile4
-rw-r--r--testing/docker/centos6/Dockerfile4
-rw-r--r--testing/docker/centos7/Dockerfile4
-rwxr-xr-xtesting/docker/dmgr.sh2
-rw-r--r--testing/docker/fedora29/Dockerfile4
-rw-r--r--testing/docker/gentoo-amd64/Dockerfile4
-rw-r--r--testing/docker/mint19-amd64/Dockerfile4
-rw-r--r--testing/docker/ubuntu16.04/Dockerfile4
-rw-r--r--testing/docker/ubuntu18.04/Dockerfile4
-rw-r--r--testing/docker/ubuntu19.10/Dockerfile (renamed from testing/docker/ubuntu18.10/Dockerfile)8
268 files changed, 21071 insertions, 199 deletions
diff --git a/Makefile.am b/Makefile.am
index 37c3239..2e7cd1d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -91,8 +91,8 @@ create-symlinks:
gen-tarball-version:
echo $(VERSION) > $(distdir)/.tarball-version
-DIGESTS = md5 sha1 sha512
-USE_GPG = yes
+DIGESTS ?= md5 sha1 sha512
+USE_GPG ?= yes
dist-create-release: distcheck
for a in $(DIST_ARCHIVES); do \
diff --git a/bootstrap b/bootstrap
index 6c3d6ae..46d6205 100755
--- a/bootstrap
+++ b/bootstrap
@@ -801,7 +801,7 @@ msg "*** Gathering the list of data files to install"
scripts/compile | scripts/missing | scripts/depcomp | scripts/ltmain.sh | scripts/install-sh)
continue
;;
- #
+ #
# will produce. FIXME: create this file at the time of 'ct-ng build'.
config/configure.in.in | config/configure.in)
continue
@@ -818,6 +818,6 @@ msg "*** Gathering the list of data files to install"
} > verbatim-data.mk
msg "*** Running autoreconf"
-autoreconf -Wall --force
+autoreconf -Wall --force -I m4
msg "*** Done!"
diff --git a/config/arch/arm.in b/config/arch/arm.in
index a6b9694..07ad5ed 100644
--- a/config/arch/arm.in
+++ b/config/arch/arm.in
@@ -58,7 +58,7 @@ config ARCH_ARM_INTERWORKING
> [not to use interwork], since slightly larger code is generated
> when [interwork] is specified.
- NOTE: Interworking in crosstool-NG is not sell-tested. Use at your
+ NOTE: Interworking in crosstool-NG is not well-tested. Use at your
own risks, and report success and/or failure.
# Until we only support EABI:
diff --git a/config/arch/powerpc.in b/config/arch/powerpc.in
index 40d88b9..73cdf75 100644
--- a/config/arch/powerpc.in
+++ b/config/arch/powerpc.in
@@ -11,6 +11,7 @@
## select ARCH_SUPPORTS_WITH_CPU
## select ARCH_SUPPORTS_WITH_TUNE
## select ARCH_SUPPORTS_WITH_FLOAT
+## select ARCH_SUPPORTS_WITH_32_64
##
## help The PowerPC architecture, as defined by:
## help http://www.ibm.com/developerworks/eserver/articles/archguide.html
@@ -42,6 +43,8 @@ config ARCH_powerpc_ABI_EABI
config ARCH_powerpc_ABI_SPE
bool
prompt "SPE"
+ select GCC_REQUIRE_8_or_older
+ select GLIBC_REQUIRE_2_29_or_older
help
Add support for the Signal Processing Engine. This will set up
the toolchain so that it supports the SPE ABI extensions. This
@@ -54,4 +57,6 @@ config ARCH_powerpc_ABI_SPE
and "--enable-e500_double" to your CC_EXTRA_CONFIG_ARRAY, so you
do not need to explicitly add them.
+ Support for SPE ABI has been removed in GCC 9.
+
endchoice
diff --git a/config/arch/sparc.in b/config/arch/sparc.in
index 1b4abcc..fe46eaa 100644
--- a/config/arch/sparc.in
+++ b/config/arch/sparc.in
@@ -10,6 +10,7 @@
## select ARCH_SUPPORTS_WITH_CPU
## select ARCH_SUPPORTS_WITH_TUNE
## select ARCH_SUPPORTS_WITH_FLOAT
+## select ARCH_SUPPORTS_WITH_32_64 if GCC_6_or_later
##
## help The SUN SPARC architecture, as defined by:
## help 32 bit: http://www.sparc.org/standards/V8.pdf
diff --git a/config/arch/x86.in b/config/arch/x86.in
index ab89ccd..ec16655 100644
--- a/config/arch/x86.in
+++ b/config/arch/x86.in
@@ -8,6 +8,7 @@
## select ARCH_SUPPORTS_WITH_ARCH
## select ARCH_SUPPORTS_WITH_CPU
## select ARCH_SUPPORTS_WITH_TUNE
+## select ARCH_SUPPORTS_WITH_32_64
##
## help The x86 architecture, as defined by:
## help 32-bit (ia32) : http://www.intel.com/
diff --git a/config/binutils/binutils.in b/config/binutils/binutils.in
index 928659a..a92dec9 100644
--- a/config/binutils/binutils.in
+++ b/config/binutils/binutils.in
@@ -156,6 +156,15 @@ config BINUTILS_RELRO
Setting this option to 'M' configures binutils with their internal
default for the selected architecture.
+config BINUTILS_DETERMINISTIC_ARCHIVES
+ bool
+ prompt "Enable deterministic archives by default" if BINUTILS_2_23_or_later
+ default y if BINUTILS_2_23_or_later
+ help
+ Setting this option will enable deterministic mode by default (-D).
+ ar and ranlib will use zero for UIDs, GIDs,
+ timestamps, and use consistent file modes for all files.
+
config BINUTILS_EXTRA_CONFIG_ARRAY
string
prompt "binutils extra config"
@@ -206,7 +215,7 @@ config ELF2FLT_EXTRA_CONFIG_ARRAY
default ""
help
Extra flags passed onto ./configure when configuring
-
+
You can enter multiple arguments here, and arguments can contain spaces
if they are properly quoted (or escaped, but prefer quotes). Eg.:
--with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space
diff --git a/config/debug/gdb.in.native b/config/debug/gdb.in.native
index 101e824..917a770 100644
--- a/config/debug/gdb.in.native
+++ b/config/debug/gdb.in.native
@@ -6,7 +6,8 @@ config GDB_NATIVE
depends on ! BARE_METAL
depends on ! LIBC_BIONIC
depends on CC_LANG_CXX || !GDB_8_0_or_later
- select LIBC_UCLIBC_WCHAR if LIBC_UCLIBC
+ select LIBC_UCLIBC_WCHAR if LIBC_UCLIBC && GDB_8_0_or_later
+ select LIBC_UCLIBC_IPV6 if LIBC_UCLIBC && GDB_8_3_or_later
select EXPAT_TARGET
select NCURSES_TARGET
help
@@ -18,6 +19,7 @@ config GDB_GDBSERVER
default y
depends on ! BARE_METAL
select LIBC_UCLIBC_WCHAR if LIBC_UCLIBC && GDB_8_0_or_later
+ select LIBC_UCLIBC_IPV6 if LIBC_UCLIBC && GDB_8_3_or_later
help
Build and install a gdbserver for the target, to run on the target.
diff --git a/config/global/paths.in b/config/global/paths.in
index 0bf43d9..82ee4b3 100644
--- a/config/global/paths.in
+++ b/config/global/paths.in
@@ -55,6 +55,10 @@ config BUILD_TOP_DIR
string
default "${CT_WORK_DIR:-${CT_TOP_DIR}/.build}/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET}"
+config BUILD_DIR
+ string
+ default "${CT_BUILD_TOP_DIR}/build"
+
config PREFIX_DIR
string
prompt "Prefix directory"
diff --git a/config/libc/glibc.in b/config/libc/glibc.in
index 4138707..f891392 100644
--- a/config/libc/glibc.in
+++ b/config/libc/glibc.in
@@ -35,12 +35,16 @@ config GLIBC_DEP_BINUTILS
select BINUTILS_REQUIRE_2_25_or_later if GLIBC_2_26_or_later
select BINUTILS_REQUIRE_older_than_2_30 if GLIBC_older_than_2_26 && ARCH_ARM && ARCH_64
+# Glibc 2.26 requires GCC4.9 or newer
# Glibc 2.29 requires GCC5+ or, for ppc64le, GCC6.2+. We only support the latest
# release on GCC6 branch, so just assume it is newer than 6.2
+# Glibc 2.30 uncondtionally requires GCC 6.2+
config GLIBC_DEP_GCC
def_bool y
+ select GCC_REQUIRE_4_9_or_later if GLIBC_2_26_or_later
select GCC_REQUIRE_5_or_later if GLIBC_2_29_or_later
select GCC_REQUIRE_6_or_later if GLIBC_2_29_or_later && ARCH_POWERPC && ARCH_64 && ARCH_LE
+ select GCC_REQUIRE_6_or_later if GLIBC_2_30_or_later
# Glibc 2.29 requires bison 2.7 or later. All versions in ct-ng satisfy that
# version requirement.
@@ -57,14 +61,16 @@ config GLIBC_DEP_PYTHON
config GLIBC_DEP_MAKE_4_0
def_bool y
- depends on GLIBC_2_29_or_later && !CONFIGURE_has_make_4_0_or_newer
+ depends on GLIBC_2_28_or_later && !CONFIGURE_has_make_4_0_or_newer
select COMP_TOOLS_MAKE
select MAKE_REQUIRE_4_0_or_later
select MAKE_GNUMAKE_SYMLINK # Override old host make in .build/tools/bin
-config GLIBC_DEP_GCC
+# Glibc 2.31 removed support for pre-v8 SPARC in 32-bit mode (64-bit mode always
+# required UltraSPARC)
+config GLIBC_SPARC_ALLOW_V7
def_bool y
- select GCC_REQUIRE_4_9_or_later if GLIBC_2_26_or_later
+ depends on GLIBC_2_30_or_older
config THREADS
default "nptl"
diff --git a/config/libc/newlib.in b/config/libc/newlib.in
index 268f956..199eff2 100644
--- a/config/libc/newlib.in
+++ b/config/libc/newlib.in
@@ -152,6 +152,13 @@ config LIBC_NEWLIB_MULTITHREAD
help
Enable support for multiple threads.
+config LIBC_NEWLIB_RETARGETABLE_LOCKING
+ bool
+ prompt "Enable retargetable locking"
+ help
+ Enable retargetable locking to allow the operating system to override
+ the dummy lock functions defined within the newlib.
+
config LIBC_NEWLIB_EXTRA_SECTIONS
bool
prompt "Place each function & data element in their own section"
diff --git a/config/target.in b/config/target.in
index 8549c5b..995457a 100644
--- a/config/target.in
+++ b/config/target.in
@@ -236,6 +236,11 @@ config ARCH_64
endchoice
+# Whether this architecture supports passing --with-{cpu,arch,tune}-{32,64}=
+# to GCC configure.
+config ARCH_SUPPORTS_WITH_32_64
+ bool
+
#--------------------------------------
comment "Target optimisations"
diff --git a/configure.ac b/configure.ac
index ae4a027..096ebb7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -287,7 +287,7 @@ AC_FUNC_REALLOC
AC_FUNC_ALLOCA
AM_GNU_GETTEXT([external])
-AM_GNU_GETTEXT_VERSION([0.19.8])
+AM_GNU_GETTEXT_VERSION([0.19.7])
# For now, curses are needed to build kconfig. We may support a command-line
# only configuration without curses later. For now, fail in configure but
diff --git a/maintainer/git-version-gen b/maintainer/git-version-gen
index 4a6d331..0ca6bd3 100755
--- a/maintainer/git-version-gen
+++ b/maintainer/git-version-gen
@@ -215,6 +215,10 @@ if test "x$v_from_git" != x; then
esac
fi
+# Replace any dashes with underscores in the resulting version, to keep
+# rpmbuild happy. See https://github.com/semver/semver/issues/145.
+v=`echo "$v" | sed 's/-/_/g'`
+
# Omit the trailing newline, so that m4_esyscmd can use the result directly.
printf %s "$v"
diff --git a/maintainer/manage-packages.sh b/maintainer/manage-packages.sh
index becc05e..c370719 100755
--- a/maintainer/manage-packages.sh
+++ b/maintainer/manage-packages.sh
@@ -91,10 +91,11 @@ CT_LIB_DIR=`pwd`
CT_TOP_DIR=`pwd`
CT_TARBALLS_DIR=`pwd`/temp.tarballs
CT_COMMON_SRC_DIR=`pwd`/temp.src
+CT_WORK_DIR=`pwd`/temp.work
CT_SRC_DIR=`pwd`/temp.src
CT_LOG_LEVEL_MAX=EXTRA
CT_TEMP_PATCH_DIR=`pwd`/temp.patches
-mkdir -p ${CT_TARBALLS_DIR}
+mkdir -p "${CT_TARBALLS_DIR}" "${CT_WORK_DIR}"
# Does not matter, just to make the scripts load
CT_ARCH=arm
@@ -223,6 +224,8 @@ matched=0
run_pkgversion()
{
+ local descr
+
while [ -n "${1}" ]; do
eval "local ${1}"
shift
@@ -237,8 +240,13 @@ run_pkgversion()
;;
esac
fi
+ if [ -n "${ver}" ]; then
+ descr="${pkg_name}-${ver}"
+ else
+ descr="${pkg_name} revision ${repository_cset}"
+ fi
- CT_DoStep INFO "Handling ${pkg_name}-${ver}"
+ CT_DoStep INFO "Handling ${descr}"
matched=$[matched+1]
# Create a temporary configuration head file
@@ -249,6 +257,9 @@ config OBSOLETE
config EXPERIMENTAL
def_bool y
+config CONFIGURE_has_lzip
+ def_bool y
+
config CONFIGURE_has_wget
def_bool y
@@ -265,30 +276,53 @@ source "config/global/build-behave.in"
source "config/versions/${master}.in"
EOF
+ # Common part of the config file
cat >temp.defconfig <<EOF
CT_${masterpfx}_USE_${originpfx}=y
-CT_${pfx}_SRC_RELEASE=y
-CT_${pfx}_V_${kcfg}=y
CT_SAVE_TARBALLS=y
+CT_WORK_DIR="${CT_WORK_DIR}"
+# CT_OVERRIDE_CONFIG_GUESS_SUB is not set
# CT_VERIFY_DOWNLOAD_DIGEST is not set
${signature+CT_VERIFY_DOWNLOAD_SIGNATURE=y}
-# CT_OVERRIDE_CONFIG_GUESS_SUB is not set
EOF
+ if [ -n "${kcfg}" ]; then
+ # Regular tarball
+ cat >>temp.defconfig <<EOF
+CT_${pfx}_SRC_RELEASE=y
+CT_${pfx}_V_${kcfg}=y
+EOF
+ else
+ # VCS-based release
+ cat >>temp.defconfig <<EOF
+CT_${pfx}_SRC_DEVEL=y
+CT_${pfx}_DEVEL_VCS="${vcs}"
+CT_${pfx}_DEVEL_URL="${repository_url}"
+CT_${pfx}_DEVEL_BRANCH="${repository_branch}"
+CT_${pfx}_DEVEL_REVISION="${repository_cset}"
+CT_${pfx}_DEVEL_SUBDIR="${repository_subdir}"
+EOF
+ fi
+
./kconfig/conf --defconfig=temp.defconfig temp.in >/dev/null
CT_LoadConfig
+ CT_DoExecLog ALL mkdir -p "${CT_BUILD_DIR}"
rm -f .config .config.old temp.defconfig temp.in
- if [ -n "${verify_urls}" ]; then
- CT_DoLog EXTRA "Verifying URLs for ${pkg_name}-${ver}"
- CT_PackageRun "${masterpfx}" check_pkg_urls
- fi
- if [ -n "${create_digests}" ]; then
- CT_DoLog EXTRA "Creating digests for ${pkg_name}-${ver}"
- CT_PackageRun "${masterpfx}" create_digests
+ if [ -n "${ver}" ]; then
+ if [ -n "${verify_urls}" ]; then
+ CT_DoLog EXTRA "Verifying URLs for ${descr}"
+ CT_PackageRun "${masterpfx}" check_pkg_urls
+ fi
+ if [ -n "${create_digests}" ]; then
+ CT_DoLog EXTRA "Creating digests for ${descr}"
+ CT_PackageRun "${masterpfx}" create_digests
+ fi
+ else
+ CT_DoLog EXTRA "Not verifying URLs or creating digests for ${descr} (devel release)"
fi
if [ -n "${download_pkgs}" ]; then
- CT_DoLog EXTRA "Downloading ${pkg_name}-${ver}"
+ CT_DoLog EXTRA "Downloading ${descr}"
CT_Fetch "${masterpfx}"
fi
if [ -n "${apply_patches}" ]; then
@@ -312,4 +346,4 @@ CT_EndStep
CT_DoLog INFO "Handled ${matched} packages/versions"
[ -r .config-saved ] && mv .config-saved .config
-CT_DoExecLog ALL rm -rf ${CT_TARBALLS_DIR} ${CT_COMMON_SRC_DIR} ${CT_TEMP_PATCH_DIR}
+CT_DoExecLog ALL rm -rf "${CT_TARBALLS_DIR}" "${CT_COMMON_SRC_DIR}" "${CT_TEMP_PATCH_DIR}" "${CT_WORK_DIR}"
diff --git a/maintainer/package-versions.template b/maintainer/package-versions.template
index 61f938f..ea78417 100644
--- a/maintainer/package-versions.template
+++ b/maintainer/package-versions.template
@@ -10,4 +10,17 @@ run_pkgversion \
ver=@@ver@@ \
kcfg=@@ver_sel|@@
#!end-foreach
+#!if [ -n "@@repository_cset@@" ]
+run_pkgversion \
+ master=@@master@@ \
+ masterpfx=@@master|@@ \
+ originpfx=@@origin|@@ \
+ pkg_name=@@pkg_name@@ \
+ pfx=@@fork|@@ \
+ vcs=@@vcs@@ \
+ repository_url=@@repository_url@@ \
+ repository_branch=@@repository_branch@@ \
+ repository_cset=@@repository_cset@@ \
+ repository_subdir=@@repository_subdir@@
+#!end-if
#!end-foreach
diff --git a/packages/binutils/2.33.1/0000-sh-conf.patch b/packages/binutils/2.33.1/0000-sh-conf.patch
new file mode 100644
index 0000000..f636289
--- /dev/null
+++ b/packages/binutils/2.33.1/0000-sh-conf.patch
@@ -0,0 +1,34 @@
+r10231 | lethal | 2005-05-02 09:58:00 -0400 (Mon, 02 May 2005) | 13 lines
+
+Likewise, binutils has no idea about any of these new targets either, so we
+fix that up too.. now we're able to actually build a real toolchain for
+sh2a_nofpu- and other more ineptly named toolchains (and yes, there are more
+inept targets than that one, really. Go look, I promise).
+
+---
+ configure | 2 +-
+ configure.ac | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+--- a/configure
++++ b/configure
+@@ -3865,7 +3865,7 @@ case "${target}" in
+ nvptx*-*-*)
+ noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc"
+ ;;
+- sh-*-*)
++ sh*-*-*)
+ case "${target}" in
+ sh*-*-elf)
+ ;;
+--- a/configure.ac
++++ b/configure.ac
+@@ -1158,7 +1158,7 @@ case "${target}" in
+ nvptx*-*-*)
+ noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc"
+ ;;
+- sh-*-*)
++ sh*-*-*)
+ case "${target}" in
+ sh*-*-elf)
+ ;;
diff --git a/packages/binutils/2.33.1/0001-ld_makefile_patch.patch b/packages/binutils/2.33.1/0001-ld_makefile_patch.patch
new file mode 100644
index 0000000..e76207e
--- /dev/null
+++ b/packages/binutils/2.33.1/0001-ld_makefile_patch.patch
@@ -0,0 +1,27 @@
+---
+ ld/Makefile.am | 2 +-
+ ld/Makefile.in | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+--- a/ld/Makefile.am
++++ b/ld/Makefile.am
+@@ -57,7 +57,7 @@ endif
+ # We put the scripts in the directory $(scriptdir)/ldscripts.
+ # We can't put the scripts in $(datadir) because the SEARCH_DIR
+ # directives need to be different for native and cross linkers.
+-scriptdir = $(tooldir)/lib
++scriptdir = $(libdir)
+
+ EMUL = @EMUL@
+ EMULATION_OFILES = @EMULATION_OFILES@
+--- a/ld/Makefile.in
++++ b/ld/Makefile.in
+@@ -563,7 +563,7 @@ AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS)
+ # We put the scripts in the directory $(scriptdir)/ldscripts.
+ # We can't put the scripts in $(datadir) because the SEARCH_DIR
+ # directives need to be different for native and cross linkers.
+-scriptdir = $(tooldir)/lib
++scriptdir = $(libdir)
+ BASEDIR = $(srcdir)/..
+ BFDDIR = $(BASEDIR)/bfd
+ INCDIR = $(BASEDIR)/include
diff --git a/packages/binutils/2.33.1/0002-check_ldrunpath_length.patch b/packages/binutils/2.33.1/0002-check_ldrunpath_length.patch
new file mode 100644
index 0000000..131c6bf
--- /dev/null
+++ b/packages/binutils/2.33.1/0002-check_ldrunpath_length.patch
@@ -0,0 +1,24 @@
+---
+ ld/emultempl/elf32.em | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/ld/emultempl/elf32.em
++++ b/ld/emultempl/elf32.em
+@@ -1470,6 +1470,8 @@ fragment <<EOF
+ && command_line.rpath == NULL)
+ {
+ path = (const char *) getenv ("LD_RUN_PATH");
++ if ((path) && (strlen (path) == 0))
++ path = NULL;
+ if (path
+ && gld${EMULATION_NAME}_search_needed (path, &n, force))
+ break;
+@@ -1745,6 +1747,8 @@ gld${EMULATION_NAME}_before_allocation (
+ rpath = command_line.rpath;
+ if (rpath == NULL)
+ rpath = (const char *) getenv ("LD_RUN_PATH");
++ if ((rpath) && (*rpath == '\0'))
++ rpath = NULL;
+
+ for (abfd = link_info.input_bfds; abfd; abfd = abfd->link.next)
+ if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
diff --git a/packages/binutils/2.33.1/0003-MinGW-w64-winpthreads-doesnt-have-pthread_mutexattr_settype.patch b/packages/binutils/2.33.1/0003-MinGW-w64-winpthreads-doesnt-have-pthread_mutexattr_settype.patch
new file mode 100644
index 0000000..c712df5
--- /dev/null
+++ b/packages/binutils/2.33.1/0003-MinGW-w64-winpthreads-doesnt-have-pthread_mutexattr_settype.patch
@@ -0,0 +1,15 @@
+---
+ gold/gold-threads.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/gold/gold-threads.cc
++++ b/gold/gold-threads.cc
+@@ -101,7 +101,7 @@ Lock_impl_threads::Lock_impl_threads()
+ int err = pthread_mutexattr_init(&attr);
+ if (err != 0)
+ gold_fatal(_("pthead_mutexattr_init failed: %s"), strerror(err));
+-#ifdef PTHREAD_MUTEX_ADAPTIVE_NP
++#if defined(PTHREAD_MUTEX_ADAPTIVE_NP) && !defined(_WIN32)
+ err = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ADAPTIVE_NP);
+ if (err != 0)
+ gold_fatal(_("pthread_mutexattr_settype failed: %s"), strerror(err));
diff --git a/packages/binutils/2.33.1/0004-Dont-link-to-libfl-as-its-unnecessary.patch b/packages/binutils/2.33.1/0004-Dont-link-to-libfl-as-its-unnecessary.patch
new file mode 100644
index 0000000..582983f
--- /dev/null
+++ b/packages/binutils/2.33.1/0004-Dont-link-to-libfl-as-its-unnecessary.patch
@@ -0,0 +1,105 @@
+---
+ binutils/configure | 3 +++
+ binutils/configure.ac | 3 +++
+ gas/configure | 3 +++
+ gas/configure.ac | 3 +++
+ ld/configure | 3 +++
+ ld/configure.ac | 3 +++
+ 6 files changed, 18 insertions(+)
+
+--- a/binutils/configure
++++ b/binutils/configure
+@@ -12449,6 +12449,7 @@ fi
+ done
+ test -n "$YACC" || YACC="yacc"
+
++save_LIBS=$LIBS
+ for ac_prog in flex lex
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+@@ -12612,6 +12613,8 @@ esac
+ if test "$LEX" = :; then
+ LEX=${am_missing_run}flex
+ fi
++LIBS=$save_LIBS
++LEXLIB=
+
+ ALL_LINGUAS="bg ca da es fi fr hr id it ja pt ro ru rw sk sr sv tr uk vi zh_CN zh_TW"
+ # If we haven't got the data from the intl directory,
+--- a/binutils/configure.ac
++++ b/binutils/configure.ac
+@@ -86,7 +86,10 @@ if test -z "$host" ; then
+ fi
+
+ AC_PROG_YACC
++save_LIBS=$LIBS
+ AM_PROG_LEX
++LIBS=$save_LIBS
++LEXLIB=
+
+ ALL_LINGUAS="bg ca da es fi fr hr id it ja pt ro ru rw sk sr sv tr uk vi zh_CN zh_TW"
+ ZW_GNU_GETTEXT_SISTER_DIR
+--- a/gas/configure
++++ b/gas/configure
+@@ -13469,6 +13469,7 @@ fi
+ done
+ test -n "$YACC" || YACC="yacc"
+
++save_LIBS=$LIBS
+ for ac_prog in flex lex
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+@@ -13632,6 +13633,8 @@ esac
+ if test "$LEX" = :; then
+ LEX=${am_missing_run}flex
+ fi
++LIBS=$save_LIBS
++LEXLIB=
+
+ ALL_LINGUAS="es fi fr id ja ru rw sv tr uk zh_CN"
+ # If we haven't got the data from the intl directory,
+--- a/gas/configure.ac
++++ b/gas/configure.ac
+@@ -893,7 +893,10 @@ AC_DEFINE_UNQUOTED(TARGET_VENDOR, "${tar
+ AC_DEFINE_UNQUOTED(TARGET_OS, "${target_os}", [Target OS.])
+
+ AC_PROG_YACC
++save_LIBS=$LIBS
+ AM_PROG_LEX
++LIBS=$save_LIBS
++LEXLIB=
+
+ ALL_LINGUAS="es fi fr id ja ru rw sv tr uk zh_CN"
+ ZW_GNU_GETTEXT_SISTER_DIR
+--- a/ld/configure
++++ b/ld/configure
+@@ -16537,6 +16537,7 @@ fi
+ done
+ test -n "$YACC" || YACC="yacc"
+
++save_LIBS=$LIBS
+ for ac_prog in flex lex
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+@@ -16700,6 +16701,8 @@ esac
+ if test "$LEX" = :; then
+ LEX=${am_missing_run}flex
+ fi
++LIBS=$save_LIBS
++LEXLIB=
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+--- a/ld/configure.ac
++++ b/ld/configure.ac
+@@ -243,7 +243,10 @@ AM_PO_SUBDIRS
+ AC_EXEEXT
+
+ AC_PROG_YACC
++save_LIBS=$LIBS
+ AM_PROG_LEX
++LIBS=$save_LIBS
++LEXLIB=
+
+ AM_MAINTAINER_MODE
+ AM_CONDITIONAL(GENINSRC_NEVER, false)
diff --git a/packages/binutils/2.33.1/0005-Darwin-gold-binary-cc-include-string-not-cstring.patch b/packages/binutils/2.33.1/0005-Darwin-gold-binary-cc-include-string-not-cstring.patch
new file mode 100644
index 0000000..fbc4041
--- /dev/null
+++ b/packages/binutils/2.33.1/0005-Darwin-gold-binary-cc-include-string-not-cstring.patch
@@ -0,0 +1,15 @@
+---
+ gold/binary.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/gold/binary.cc
++++ b/gold/binary.cc
+@@ -23,7 +23,7 @@
+ #include "gold.h"
+
+ #include <cerrno>
+-#include <cstring>
++#include <string>
+
+ #include "elfcpp.h"
+ #include "stringpool.h"
diff --git a/packages/binutils/2.33.1/0006-Darwin-Two-fixes-from-Android-NDK-PTHREAD_ONCE_INIT-wcsncasecmp.patch b/packages/binutils/2.33.1/0006-Darwin-Two-fixes-from-Android-NDK-PTHREAD_ONCE_INIT-wcsncasecmp.patch
new file mode 100644
index 0000000..0537aa4
--- /dev/null
+++ b/packages/binutils/2.33.1/0006-Darwin-Two-fixes-from-Android-NDK-PTHREAD_ONCE_INIT-wcsncasecmp.patch
@@ -0,0 +1,70 @@
+From c39479f4ab4d372b518957871e1f205a03e7c3d6 Mon Sep 17 00:00:00 2001
+From: Andrew Hsieh <andrewhsieh@google.com>
+Date: Wed, 18 Mar 2015 10:57:24 +0800
+Subject: [PATCH] Fix darwin build
+
+1. In Drawin PTHREAD_ONCE_INIT is {0x30B1BCBA, {0}} and the GCC < 4.4
+ doesn't support ended initializer list
+2. wcsncasecmp doesn't exist in MacSDK10.6.x
+
+Change-Id: I69204a72f853f5263dffedc448379d75ed4eca2e
+---
+ bfd/peXXigen.c | 22 ++++++++++++++++++++++
+ gold/gold-threads.cc | 15 ++++++++++++---
+ 2 files changed, 34 insertions(+), 3 deletions(-)
+
+--- a/bfd/peXXigen.c
++++ b/bfd/peXXigen.c
+@@ -3623,6 +3623,28 @@ u16_mbtouc (wchar_t * puc, const unsigne
+ }
+ #endif /* HAVE_WCHAR_H and not Cygwin/Mingw */
+
++#if defined __APPLE__ && __DARWIN_C_LEVEL < 200809L
++/* wcsncasecmp isn't always defined in Mac SDK */
++static int
++wcsncasecmp(const wchar_t *s1, const wchar_t *s2, size_t n)
++{
++ wchar_t c1, c2;
++
++ if (n == 0)
++ return (0);
++ for (; *s1; s1++, s2++)
++ {
++ c1 = towlower(*s1);
++ c2 = towlower(*s2);
++ if (c1 != c2)
++ return ((int)c1 - c2);
++ if (--n == 0)
++ return (0);
++ }
++ return (-*s2);
++}
++#endif
++
+ /* Perform a comparison of two entries. */
+ static signed int
+ rsrc_cmp (bfd_boolean is_name, rsrc_entry * a, rsrc_entry * b)
+--- a/gold/gold-threads.cc
++++ b/gold/gold-threads.cc
+@@ -284,9 +284,18 @@ Condvar::~Condvar()
+ class Once_initialize
+ {
+ public:
+- Once_initialize()
+- : once_(PTHREAD_ONCE_INIT)
+- { }
++ Once_initialize()
++#if !defined(__APPLE__)
++ : once_(PTHREAD_ONCE_INIT)
++ { }
++#else
++// In Drawin PTHREAD_ONCE_INIT is {0x30B1BCBA, {0}} and the GCC < 4.4 doesn't support
++// extended initializer list as above */
++ {
++ pthread_once_t once_2 = PTHREAD_ONCE_INIT;
++ once_ = once_2;
++ }
++#endif
+
+ // Return a pointer to the pthread_once_t variable.
+ pthread_once_t*
diff --git a/packages/binutils/2.33.1/0007-sysroot.patch b/packages/binutils/2.33.1/0007-sysroot.patch
new file mode 100644
index 0000000..bcf6f34
--- /dev/null
+++ b/packages/binutils/2.33.1/0007-sysroot.patch
@@ -0,0 +1,41 @@
+Signed-off-by: Sven Rebhan <odinshorse@googlemail.com>
+
+Always try to prepend the sysroot prefix to absolute filenames first.
+
+http://bugs.gentoo.org/275666
+http://sourceware.org/bugzilla/show_bug.cgi?id=10340
+
+---
+ ld/ldfile.c | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+--- a/ld/ldfile.c
++++ b/ld/ldfile.c
+@@ -338,18 +338,25 @@ ldfile_open_file_search (const char *arc
+ directory first. */
+ if (!entry->flags.maybe_archive)
+ {
+- if (entry->flags.sysrooted && IS_ABSOLUTE_PATH (entry->filename))
++ /* For absolute pathnames, try to always open the file in the
++ sysroot first. If this fails, try to open the file at the
++ given location. */
++ entry->flags.sysrooted = is_sysrooted_pathname (entry->filename);
++ if (!entry->flags.sysrooted && IS_ABSOLUTE_PATH (entry->filename)
++ && ld_sysroot)
+ {
+ char *name = concat (ld_sysroot, entry->filename,
+ (const char *) NULL);
+ if (ldfile_try_open_bfd (name, entry))
+ {
+ entry->filename = name;
++ entry->flags.sysrooted = TRUE;
+ return TRUE;
+ }
+ free (name);
+ }
+- else if (ldfile_try_open_bfd (entry->filename, entry))
++
++ if (ldfile_try_open_bfd (entry->filename, entry))
+ return TRUE;
+
+ if (IS_ABSOLUTE_PATH (entry->filename))
diff --git a/packages/binutils/2.33.1/0008-poison-system-directories.patch b/packages/binutils/2.33.1/0008-poison-system-directories.patch
new file mode 100644
index 0000000..907036c
--- /dev/null
+++ b/packages/binutils/2.33.1/0008-poison-system-directories.patch
@@ -0,0 +1,279 @@
+Patch adapted to binutils 2.23.2 and extended to use
+BR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni.
+
+[Gustavo: adapt to binutils 2.25]
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
+
+Upstream-Status: Inappropriate [distribution: codesourcery]
+
+Patch originally created by Mark Hatle, forward-ported to
+binutils 2.21 by Scott Garman.
+
+purpose: warn for uses of system directories when cross linking
+
+Code Merged from Sourcery G++ binutils 2.19 - 4.4-277
+
+2008-07-02 Joseph Myers <joseph@codesourcery.com>
+
+ ld/
+ * ld.h (args_type): Add error_poison_system_directories.
+ * ld.texinfo (--error-poison-system-directories): Document.
+ * ldfile.c (ldfile_add_library_path): Check
+ command_line.error_poison_system_directories.
+ * ldmain.c (main): Initialize
+ command_line.error_poison_system_directories.
+ * lexsup.c (enum option_values): Add
+ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES.
+ (ld_options): Add --error-poison-system-directories.
+ (parse_args): Handle new option.
+
+2007-06-13 Joseph Myers <joseph@codesourcery.com>
+
+ ld/
+ * config.in: Regenerate.
+ * ld.h (args_type): Add poison_system_directories.
+ * ld.texinfo (--no-poison-system-directories): Document.
+ * ldfile.c (ldfile_add_library_path): Check
+ command_line.poison_system_directories.
+ * ldmain.c (main): Initialize
+ command_line.poison_system_directories.
+ * lexsup.c (enum option_values): Add
+ OPTION_NO_POISON_SYSTEM_DIRECTORIES.
+ (ld_options): Add --no-poison-system-directories.
+ (parse_args): Handle new option.
+
+2007-04-20 Joseph Myers <joseph@codesourcery.com>
+
+ Merge from Sourcery G++ binutils 2.17:
+
+ 2007-03-20 Joseph Myers <joseph@codesourcery.com>
+ Based on patch by Mark Hatle <mark.hatle@windriver.com>.
+ ld/
+ * configure.ac (--enable-poison-system-directories): New option.
+ * configure, config.in: Regenerate.
+ * ldfile.c (ldfile_add_library_path): If
+ ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib,
+ /usr/lib, /usr/local/lib or /usr/X11R6/lib.
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+Signed-off-by: Scott Garman <scott.a.garman@intel.com>
+
+---
+ ld/config.in | 3 +++
+ ld/configure | 14 ++++++++++++++
+ ld/configure.ac | 10 ++++++++++
+ ld/ld.h | 8 ++++++++
+ ld/ld.texi | 12 ++++++++++++
+ ld/ldfile.c | 17 +++++++++++++++++
+ ld/ldlex.h | 2 ++
+ ld/ldmain.c | 2 ++
+ ld/lexsup.c | 21 +++++++++++++++++++++
+ 9 files changed, 89 insertions(+)
+
+--- a/ld/config.in
++++ b/ld/config.in
+@@ -31,6 +31,9 @@
+ language is requested. */
+ #undef ENABLE_NLS
+
++/* Define to warn for use of native system library directories */
++#undef ENABLE_POISON_SYSTEM_DIRECTORIES
++
+ /* Additional extension a shared object might have. */
+ #undef EXTRA_SHLIB_EXTENSION
+
+--- a/ld/configure
++++ b/ld/configure
+@@ -823,6 +823,7 @@ with_lib_path
+ enable_targets
+ enable_64_bit_bfd
+ with_sysroot
++enable_poison_system_directories
+ enable_gold
+ enable_got
+ enable_compressed_debug_sections
+@@ -1487,6 +1488,8 @@ Optional Features:
+ --disable-largefile omit support for large files
+ --enable-targets alternative target configurations
+ --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes)
++ --enable-poison-system-directories
++ warn for use of native system library directories
+ --enable-gold[=ARG] build gold [ARG={default,yes,no}]
+ --enable-got=<type> GOT handling scheme (target, single, negative,
+ multigot)
+@@ -15804,7 +15807,18 @@ else
+ fi
+
+
++# Check whether --enable-poison-system-directories was given.
++if test "${enable_poison_system_directories+set}" = set; then :
++ enableval=$enable_poison_system_directories;
++else
++ enable_poison_system_directories=no
++fi
++
++if test "x${enable_poison_system_directories}" = "xyes"; then
+
++$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
++
++fi
+
+ # Check whether --enable-got was given.
+ if test "${enable_got+set}" = set; then :
+--- a/ld/configure.ac
++++ b/ld/configure.ac
+@@ -94,6 +94,16 @@ AC_SUBST(use_sysroot)
+ AC_SUBST(TARGET_SYSTEM_ROOT)
+ AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
+
++AC_ARG_ENABLE([poison-system-directories],
++ AS_HELP_STRING([--enable-poison-system-directories],
++ [warn for use of native system library directories]),,
++ [enable_poison_system_directories=no])
++if test "x${enable_poison_system_directories}" = "xyes"; then
++ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
++ [1],
++ [Define to warn for use of native system library directories])
++fi
++
+ dnl Use --enable-gold to decide if this linker should be the default.
+ dnl "install_as_default" is set to false if gold is the default linker.
+ dnl "installed_linker" is the installed BFD linker name.
+--- a/ld/ld.h
++++ b/ld/ld.h
+@@ -175,6 +175,14 @@ typedef struct
+ /* If set, display the target memory usage (per memory region). */
+ bfd_boolean print_memory_usage;
+
++ /* If TRUE (the default) warn for uses of system directories when
++ cross linking. */
++ bfd_boolean poison_system_directories;
++
++ /* If TRUE (default FALSE) give an error for uses of system
++ directories when cross linking instead of a warning. */
++ bfd_boolean error_poison_system_directories;
++
+ /* Should we force section groups to be resolved? Controlled with
+ --force-group-allocation on the command line or FORCE_GROUP_ALLOCATION
+ in the linker script. */
+--- a/ld/ld.texi
++++ b/ld/ld.texi
+@@ -2557,6 +2557,18 @@ string identifying the original linked f
+
+ Passing @code{none} for @var{style} disables the setting from any
+ @code{--build-id} options earlier on the command line.
++
++@kindex --no-poison-system-directories
++@item --no-poison-system-directories
++Do not warn for @option{-L} options using system directories such as
++@file{/usr/lib} when cross linking. This option is intended for use
++in chroot environments when such directories contain the correct
++libraries for the target system rather than the host.
++
++@kindex --error-poison-system-directories
++@item --error-poison-system-directories
++Give an error instead of a warning for @option{-L} options using
++system directories when cross linking.
+ @end table
+
+ @c man end
+--- a/ld/ldfile.c
++++ b/ld/ldfile.c
+@@ -116,6 +116,23 @@ ldfile_add_library_path (const char *nam
+ new_dirs->name = concat (ld_sysroot, name + strlen ("$SYSROOT"), (const char *) NULL);
+ else
+ new_dirs->name = xstrdup (name);
++
++#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
++ if (command_line.poison_system_directories
++ && ((!strncmp (name, "/lib", 4))
++ || (!strncmp (name, "/usr/lib", 8))
++ || (!strncmp (name, "/usr/local/lib", 14))
++ || (!strncmp (name, "/usr/X11R6/lib", 14))))
++ {
++ if (command_line.error_poison_system_directories)
++ einfo (_("%X%P: error: library search path \"%s\" is unsafe for "
++ "cross-compilation\n"), name);
++ else
++ einfo (_("%P: warning: library search path \"%s\" is unsafe for "
++ "cross-compilation\n"), name);
++ }
++#endif
++
+ }
+
+ /* Try to open a BFD for a lang_input_statement. */
+--- a/ld/ldlex.h
++++ b/ld/ldlex.h
+@@ -150,6 +150,8 @@ enum option_values
+ OPTION_FORCE_GROUP_ALLOCATION,
+ OPTION_PRINT_MAP_DISCARDED,
+ OPTION_NO_PRINT_MAP_DISCARDED,
++ OPTION_NO_POISON_SYSTEM_DIRECTORIES,
++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES,
+ };
+
+ /* The initial parser states. */
+--- a/ld/ldmain.c
++++ b/ld/ldmain.c
+@@ -270,6 +270,8 @@ main (int argc, char **argv)
+ command_line.warn_mismatch = TRUE;
+ command_line.warn_search_mismatch = TRUE;
+ command_line.check_section_addresses = -1;
++ command_line.poison_system_directories = TRUE;
++ command_line.error_poison_system_directories = FALSE;
+
+ /* We initialize DEMANGLING based on the environment variable
+ COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the
+--- a/ld/lexsup.c
++++ b/ld/lexsup.c
+@@ -549,6 +549,14 @@ static const struct ld_option ld_options
+ { {"no-print-map-discarded", no_argument, NULL, OPTION_NO_PRINT_MAP_DISCARDED},
+ '\0', NULL, N_("Do not show discarded sections in map file output"),
+ TWO_DASHES },
++ { {"no-poison-system-directories", no_argument, NULL,
++ OPTION_NO_POISON_SYSTEM_DIRECTORIES},
++ '\0', NULL, N_("Do not warn for -L options using system directories"),
++ TWO_DASHES },
++ { {"error-poison-system-directories", no_argument, NULL,
++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES},
++ '\0', NULL, N_("Give an error for -L options using system directories"),
++ TWO_DASHES },
+ };
+
+ #define OPTION_COUNT ARRAY_SIZE (ld_options)
+@@ -561,6 +569,7 @@ parse_args (unsigned argc, char **argv)
+ int ingroup = 0;
+ char *default_dirlist = NULL;
+ char *shortopts;
++ char *BR_paranoid_env;
+ struct option *longopts;
+ struct option *really_longopts;
+ int last_optind;
+@@ -1549,6 +1558,14 @@ parse_args (unsigned argc, char **argv)
+ }
+ break;
+
++ case OPTION_NO_POISON_SYSTEM_DIRECTORIES:
++ command_line.poison_system_directories = FALSE;
++ break;
++
++ case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES:
++ command_line.error_poison_system_directories = TRUE;
++ break;
++
+ case OPTION_PUSH_STATE:
+ input_flags.pushed = xmemdup (&input_flags,
+ sizeof (input_flags),
+@@ -1600,6 +1617,10 @@ parse_args (unsigned argc, char **argv)
+ command_line.soname = NULL;
+ }
+
++ BR_paranoid_env = getenv("BR_COMPILER_PARANOID_UNSAFE_PATH");
++ if (BR_paranoid_env && strlen(BR_paranoid_env) > 0)
++ command_line.error_poison_system_directories = TRUE;
++
+ while (ingroup)
+ {
+ einfo (_("%P: missing --end-group; added as last command line option\n"));
diff --git a/packages/binutils/2.33.1/chksum b/packages/binutils/2.33.1/chksum
new file mode 100644
index 0000000..d1a25ca
--- /dev/null
+++ b/packages/binutils/2.33.1/chksum
@@ -0,0 +1,12 @@
+md5 binutils-2.33.1.tar.xz 9406231b7d9dd93731c2d06cefe8aaf1
+sha1 binutils-2.33.1.tar.xz 06598868f5fa8efc98427dcb790d42c664f1a1a4
+sha256 binutils-2.33.1.tar.xz ab66fc2d1c3ec0359b8e08843c9f33b63e8707efdff5e4cc5c200eae24722cbf
+sha512 binutils-2.33.1.tar.xz b7a6767c6c7ca6b5cafa7080e6820b7bb3a53b7148348c438d99905defbdf0d30c9744a484ee01c9441a8153901808513366b15ba9533e20c9673c262ade36ac
+md5 binutils-2.33.1.tar.bz2 56a3be5f8f8ee874417a4f19ef3f10c8
+sha1 binutils-2.33.1.tar.bz2 332c7df7e1830c1e756cf4a5542a7952200210c1
+sha256 binutils-2.33.1.tar.bz2 0cb4843da15a65a953907c96bad658283f3c4419d6bcc56bf2789db16306adb2
+sha512 binutils-2.33.1.tar.bz2 bfdbb49a9002dd9bae8ab3c9347e05bd968ad97837c3e71b046eb8721c45a73db01f880dbdf0911bb37a97be37d6cc3b26d0855964a011f593ccbf1d08641c87
+md5 binutils-2.33.1.tar.gz 1a6b16bcc926e312633fcc3fae14ba0a
+sha1 binutils-2.33.1.tar.gz 4a4d191dcb03f3f80db2050a702292425a810651
+sha256 binutils-2.33.1.tar.gz 98aba5f673280451a09df3a8d8eddb3aa0c505ac183f1e2f9d00c67aa04c6f7d
+sha512 binutils-2.33.1.tar.gz 67f97a480f1e25313bbe826d4bcfaf0cd66a39e3bc724ba137bf81c146c119827b5d07b98789f5cba0bbe296a7c065b68f377e82f5eb2063350594c34079cbc8
diff --git a/packages/linux/4.9.156/version.desc b/packages/binutils/2.33.1/version.desc
index e69de29..e69de29 100644
--- a/packages/linux/4.9.156/version.desc
+++ b/packages/binutils/2.33.1/version.desc
diff --git a/packages/binutils/2.34/0000-sh-conf.patch b/packages/binutils/2.34/0000-sh-conf.patch
new file mode 100644
index 0000000..ad5e09f
--- /dev/null
+++ b/packages/binutils/2.34/0000-sh-conf.patch
@@ -0,0 +1,34 @@
+r10231 | lethal | 2005-05-02 09:58:00 -0400 (Mon, 02 May 2005) | 13 lines
+
+Likewise, binutils has no idea about any of these new targets either, so we
+fix that up too.. now we're able to actually build a real toolchain for
+sh2a_nofpu- and other more ineptly named toolchains (and yes, there are more
+inept targets than that one, really. Go look, I promise).
+
+---
+ configure | 2 +-
+ configure.ac | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+--- a/configure
++++ b/configure
+@@ -3915,7 +3915,7 @@
+ nvptx*-*-*)
+ noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc"
+ ;;
+- sh-*-*)
++ sh*-*-*)
+ case "${target}" in
+ sh*-*-elf)
+ ;;
+--- a/configure.ac
++++ b/configure.ac
+@@ -1159,7 +1159,7 @@
+ nvptx*-*-*)
+ noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc"
+ ;;
+- sh-*-*)
++ sh*-*-*)
+ case "${target}" in
+ sh*-*-elf)
+ ;;
diff --git a/packages/binutils/2.34/0001-ld_makefile_patch.patch b/packages/binutils/2.34/0001-ld_makefile_patch.patch
new file mode 100644
index 0000000..93aa1c4
--- /dev/null
+++ b/packages/binutils/2.34/0001-ld_makefile_patch.patch
@@ -0,0 +1,27 @@
+---
+ ld/Makefile.am | 2 +-
+ ld/Makefile.in | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+--- a/ld/Makefile.am
++++ b/ld/Makefile.am
+@@ -63,7 +63,7 @@
+ # We put the scripts in the directory $(scriptdir)/ldscripts.
+ # We can't put the scripts in $(datadir) because the SEARCH_DIR
+ # directives need to be different for native and cross linkers.
+-scriptdir = $(tooldir)/lib
++scriptdir = $(libdir)
+
+ EMUL = @EMUL@
+ EMULATION_OFILES = @EMULATION_OFILES@
+--- a/ld/Makefile.in
++++ b/ld/Makefile.in
+@@ -572,7 +572,7 @@
+ # We put the scripts in the directory $(scriptdir)/ldscripts.
+ # We can't put the scripts in $(datadir) because the SEARCH_DIR
+ # directives need to be different for native and cross linkers.
+-scriptdir = $(tooldir)/lib
++scriptdir = $(libdir)
+ BASEDIR = $(srcdir)/..
+ BFDDIR = $(BASEDIR)/bfd
+ INCDIR = $(BASEDIR)/include
diff --git a/packages/binutils/2.34/0002-check_ldrunpath_length.patch b/packages/binutils/2.34/0002-check_ldrunpath_length.patch
new file mode 100644
index 0000000..1a88eaf
--- /dev/null
+++ b/packages/binutils/2.34/0002-check_ldrunpath_length.patch
@@ -0,0 +1,24 @@
+---
+ ld/ldelf.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/ld/ldelf.c
++++ b/ld/ldelf.c
+@@ -1229,6 +1229,8 @@
+ && command_line.rpath == NULL)
+ {
+ path = (const char *) getenv ("LD_RUN_PATH");
++ if (path && *path == '\0')
++ path = NULL;
+ if (path
+ && ldelf_search_needed (path, &n, force,
+ is_linux, elfsize))
+@@ -1573,6 +1575,8 @@
+ rpath = command_line.rpath;
+ if (rpath == NULL)
+ rpath = (const char *) getenv ("LD_RUN_PATH");
++ if (rpath && *rpath == '\0')
++ rpath = NULL;
+
+ for (abfd = link_info.input_bfds; abfd; abfd = abfd->link.next)
+ if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
diff --git a/packages/binutils/2.34/0003-MinGW-w64-winpthreads-doesnt-have-pthread_mutexattr_settype.patch b/packages/binutils/2.34/0003-MinGW-w64-winpthreads-doesnt-have-pthread_mutexattr_settype.patch
new file mode 100644
index 0000000..99dee96
--- /dev/null
+++ b/packages/binutils/2.34/0003-MinGW-w64-winpthreads-doesnt-have-pthread_mutexattr_settype.patch
@@ -0,0 +1,15 @@
+---
+ gold/gold-threads.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/gold/gold-threads.cc
++++ b/gold/gold-threads.cc
+@@ -101,7 +101,7 @@
+ int err = pthread_mutexattr_init(&attr);
+ if (err != 0)
+ gold_fatal(_("pthead_mutexattr_init failed: %s"), strerror(err));
+-#ifdef PTHREAD_MUTEX_ADAPTIVE_NP
++#if defined(PTHREAD_MUTEX_ADAPTIVE_NP) && !defined(_WIN32)
+ err = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ADAPTIVE_NP);
+ if (err != 0)
+ gold_fatal(_("pthread_mutexattr_settype failed: %s"), strerror(err));
diff --git a/packages/binutils/2.34/0004-Dont-link-to-libfl-as-its-unnecessary.patch b/packages/binutils/2.34/0004-Dont-link-to-libfl-as-its-unnecessary.patch
new file mode 100644
index 0000000..25557de
--- /dev/null
+++ b/packages/binutils/2.34/0004-Dont-link-to-libfl-as-its-unnecessary.patch
@@ -0,0 +1,105 @@
+---
+ binutils/configure | 3 +++
+ binutils/configure.ac | 3 +++
+ gas/configure | 3 +++
+ gas/configure.ac | 3 +++
+ ld/configure | 3 +++
+ ld/configure.ac | 3 +++
+ 6 files changed, 18 insertions(+)
+
+--- a/binutils/configure
++++ b/binutils/configure
+@@ -12537,6 +12537,7 @@
+ done
+ test -n "$YACC" || YACC="yacc"
+
++save_LIBS=$LIBS
+ for ac_prog in flex lex
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+@@ -12700,6 +12701,8 @@
+ if test "$LEX" = :; then
+ LEX=${am_missing_run}flex
+ fi
++LIBS=$save_LIBS
++LEXLIB=
+
+ ALL_LINGUAS="bg ca da es fi fr hr id it ja pt ro ru rw sk sr sv tr uk vi zh_CN zh_TW"
+ # If we haven't got the data from the intl directory,
+--- a/binutils/configure.ac
++++ b/binutils/configure.ac
+@@ -89,7 +89,10 @@
+ fi
+
+ AC_PROG_YACC
++save_LIBS=$LIBS
+ AM_PROG_LEX
++LIBS=$save_LIBS
++LEXLIB=
+
+ ALL_LINGUAS="bg ca da es fi fr hr id it ja pt ro ru rw sk sr sv tr uk vi zh_CN zh_TW"
+ ZW_GNU_GETTEXT_SISTER_DIR
+--- a/gas/configure
++++ b/gas/configure
+@@ -13469,6 +13469,7 @@
+ done
+ test -n "$YACC" || YACC="yacc"
+
++save_LIBS=$LIBS
+ for ac_prog in flex lex
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+@@ -13632,6 +13633,8 @@
+ if test "$LEX" = :; then
+ LEX=${am_missing_run}flex
+ fi
++LIBS=$save_LIBS
++LEXLIB=
+
+ ALL_LINGUAS="es fi fr id ja ru rw sv tr uk zh_CN"
+ # If we haven't got the data from the intl directory,
+--- a/gas/configure.ac
++++ b/gas/configure.ac
+@@ -893,7 +893,10 @@
+ AC_DEFINE_UNQUOTED(TARGET_OS, "${target_os}", [Target OS.])
+
+ AC_PROG_YACC
++save_LIBS=$LIBS
+ AM_PROG_LEX
++LIBS=$save_LIBS
++LEXLIB=
+
+ ALL_LINGUAS="es fi fr id ja ru rw sv tr uk zh_CN"
+ ZW_GNU_GETTEXT_SISTER_DIR
+--- a/ld/configure
++++ b/ld/configure
+@@ -16542,6 +16542,7 @@
+ done
+ test -n "$YACC" || YACC="yacc"
+
++save_LIBS=$LIBS
+ for ac_prog in flex lex
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+@@ -16705,6 +16706,8 @@
+ if test "$LEX" = :; then
+ LEX=${am_missing_run}flex
+ fi
++LIBS=$save_LIBS
++LEXLIB=
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+--- a/ld/configure.ac
++++ b/ld/configure.ac
+@@ -243,7 +243,10 @@
+ AC_EXEEXT
+
+ AC_PROG_YACC
++save_LIBS=$LIBS
+ AM_PROG_LEX
++LIBS=$save_LIBS
++LEXLIB=
+
+ AM_MAINTAINER_MODE
+ AM_CONDITIONAL(GENINSRC_NEVER, false)
diff --git a/packages/binutils/2.34/0005-Darwin-gold-binary-cc-include-string-not-cstring.patch b/packages/binutils/2.34/0005-Darwin-gold-binary-cc-include-string-not-cstring.patch
new file mode 100644
index 0000000..fbc4041
--- /dev/null
+++ b/packages/binutils/2.34/0005-Darwin-gold-binary-cc-include-string-not-cstring.patch
@@ -0,0 +1,15 @@
+---
+ gold/binary.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/gold/binary.cc
++++ b/gold/binary.cc
+@@ -23,7 +23,7 @@
+ #include "gold.h"
+
+ #include <cerrno>
+-#include <cstring>
++#include <string>
+
+ #include "elfcpp.h"
+ #include "stringpool.h"
diff --git a/packages/binutils/2.34/0006-Darwin-Two-fixes-from-Android-NDK-PTHREAD_ONCE_INIT-wcsncasecmp.patch b/packages/binutils/2.34/0006-Darwin-Two-fixes-from-Android-NDK-PTHREAD_ONCE_INIT-wcsncasecmp.patch
new file mode 100644
index 0000000..10961a6
--- /dev/null
+++ b/packages/binutils/2.34/0006-Darwin-Two-fixes-from-Android-NDK-PTHREAD_ONCE_INIT-wcsncasecmp.patch
@@ -0,0 +1,70 @@
+From c39479f4ab4d372b518957871e1f205a03e7c3d6 Mon Sep 17 00:00:00 2001
+From: Andrew Hsieh <andrewhsieh@google.com>
+Date: Wed, 18 Mar 2015 10:57:24 +0800
+Subject: [PATCH] Fix darwin build
+
+1. In Drawin PTHREAD_ONCE_INIT is {0x30B1BCBA, {0}} and the GCC < 4.4
+ doesn't support ended initializer list
+2. wcsncasecmp doesn't exist in MacSDK10.6.x
+
+Change-Id: I69204a72f853f5263dffedc448379d75ed4eca2e
+---
+ bfd/peXXigen.c | 22 ++++++++++++++++++++++
+ gold/gold-threads.cc | 15 ++++++++++++---
+ 2 files changed, 34 insertions(+), 3 deletions(-)
+
+--- a/bfd/peXXigen.c
++++ b/bfd/peXXigen.c
+@@ -3618,6 +3618,28 @@
+ }
+ #endif /* HAVE_WCHAR_H and not Cygwin/Mingw */
+
++#if defined __APPLE__ && __DARWIN_C_LEVEL < 200809L
++/* wcsncasecmp isn't always defined in Mac SDK */
++static int
++wcsncasecmp(const wchar_t *s1, const wchar_t *s2, size_t n)
++{
++ wchar_t c1, c2;
++
++ if (n == 0)
++ return (0);
++ for (; *s1; s1++, s2++)
++ {
++ c1 = towlower(*s1);
++ c2 = towlower(*s2);
++ if (c1 != c2)
++ return ((int)c1 - c2);
++ if (--n == 0)
++ return (0);
++ }
++ return (-*s2);
++}
++#endif
++
+ /* Perform a comparison of two entries. */
+ static signed int
+ rsrc_cmp (bfd_boolean is_name, rsrc_entry * a, rsrc_entry * b)
+--- a/gold/gold-threads.cc
++++ b/gold/gold-threads.cc
+@@ -284,9 +284,18 @@
+ class Once_initialize
+ {
+ public:
+- Once_initialize()
+- : once_(PTHREAD_ONCE_INIT)
+- { }
++ Once_initialize()
++#if !defined(__APPLE__)
++ : once_(PTHREAD_ONCE_INIT)
++ { }
++#else
++// In Drawin PTHREAD_ONCE_INIT is {0x30B1BCBA, {0}} and the GCC < 4.4 doesn't support
++// extended initializer list as above */
++ {
++ pthread_once_t once_2 = PTHREAD_ONCE_INIT;
++ once_ = once_2;
++ }
++#endif
+
+ // Return a pointer to the pthread_once_t variable.
+ pthread_once_t*
diff --git a/packages/binutils/2.34/0007-sysroot.patch b/packages/binutils/2.34/0007-sysroot.patch
new file mode 100644
index 0000000..3ddf687
--- /dev/null
+++ b/packages/binutils/2.34/0007-sysroot.patch
@@ -0,0 +1,41 @@
+Signed-off-by: Sven Rebhan <odinshorse@googlemail.com>
+
+Always try to prepend the sysroot prefix to absolute filenames first.
+
+http://bugs.gentoo.org/275666
+http://sourceware.org/bugzilla/show_bug.cgi?id=10340
+
+---
+ ld/ldfile.c | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+--- a/ld/ldfile.c
++++ b/ld/ldfile.c
+@@ -339,18 +339,25 @@
+ directory first. */
+ if (!entry->flags.maybe_archive)
+ {
+- if (entry->flags.sysrooted && IS_ABSOLUTE_PATH (entry->filename))
++ /* For absolute pathnames, try to always open the file in the
++ sysroot first. If this fails, try to open the file at the
++ given location. */
++ entry->flags.sysrooted = is_sysrooted_pathname (entry->filename);
++ if (!entry->flags.sysrooted && IS_ABSOLUTE_PATH (entry->filename)
++ && ld_sysroot)
+ {
+ char *name = concat (ld_sysroot, entry->filename,
+ (const char *) NULL);
+ if (ldfile_try_open_bfd (name, entry))
+ {
+ entry->filename = name;
++ entry->flags.sysrooted = TRUE;
+ return TRUE;
+ }
+ free (name);
+ }
+- else if (ldfile_try_open_bfd (entry->filename, entry))
++
++ if (ldfile_try_open_bfd (entry->filename, entry))
+ return TRUE;
+
+ if (IS_ABSOLUTE_PATH (entry->filename))
diff --git a/packages/binutils/2.34/0008-poison-system-directories.patch b/packages/binutils/2.34/0008-poison-system-directories.patch
new file mode 100644
index 0000000..aa585bf
--- /dev/null
+++ b/packages/binutils/2.34/0008-poison-system-directories.patch
@@ -0,0 +1,279 @@
+Patch adapted to binutils 2.23.2 and extended to use
+BR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni.
+
+[Gustavo: adapt to binutils 2.25]
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
+
+Upstream-Status: Inappropriate [distribution: codesourcery]
+
+Patch originally created by Mark Hatle, forward-ported to
+binutils 2.21 by Scott Garman.
+
+purpose: warn for uses of system directories when cross linking
+
+Code Merged from Sourcery G++ binutils 2.19 - 4.4-277
+
+2008-07-02 Joseph Myers <joseph@codesourcery.com>
+
+ ld/
+ * ld.h (args_type): Add error_poison_system_directories.
+ * ld.texinfo (--error-poison-system-directories): Document.
+ * ldfile.c (ldfile_add_library_path): Check
+ command_line.error_poison_system_directories.
+ * ldmain.c (main): Initialize
+ command_line.error_poison_system_directories.
+ * lexsup.c (enum option_values): Add
+ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES.
+ (ld_options): Add --error-poison-system-directories.
+ (parse_args): Handle new option.
+
+2007-06-13 Joseph Myers <joseph@codesourcery.com>
+
+ ld/
+ * config.in: Regenerate.
+ * ld.h (args_type): Add poison_system_directories.
+ * ld.texinfo (--no-poison-system-directories): Document.
+ * ldfile.c (ldfile_add_library_path): Check
+ command_line.poison_system_directories.
+ * ldmain.c (main): Initialize
+ command_line.poison_system_directories.
+ * lexsup.c (enum option_values): Add
+ OPTION_NO_POISON_SYSTEM_DIRECTORIES.
+ (ld_options): Add --no-poison-system-directories.
+ (parse_args): Handle new option.
+
+2007-04-20 Joseph Myers <joseph@codesourcery.com>
+
+ Merge from Sourcery G++ binutils 2.17:
+
+ 2007-03-20 Joseph Myers <joseph@codesourcery.com>
+ Based on patch by Mark Hatle <mark.hatle@windriver.com>.
+ ld/
+ * configure.ac (--enable-poison-system-directories): New option.
+ * configure, config.in: Regenerate.
+ * ldfile.c (ldfile_add_library_path): If
+ ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib,
+ /usr/lib, /usr/local/lib or /usr/X11R6/lib.
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+Signed-off-by: Scott Garman <scott.a.garman@intel.com>
+
+---
+ ld/config.in | 3 +++
+ ld/configure | 14 ++++++++++++++
+ ld/configure.ac | 10 ++++++++++
+ ld/ld.h | 8 ++++++++
+ ld/ld.texi | 12 ++++++++++++
+ ld/ldfile.c | 17 +++++++++++++++++
+ ld/ldlex.h | 2 ++
+ ld/ldmain.c | 2 ++
+ ld/lexsup.c | 21 +++++++++++++++++++++
+ 9 files changed, 89 insertions(+)
+
+--- a/ld/config.in
++++ b/ld/config.in
+@@ -31,6 +31,9 @@
+ language is requested. */
+ #undef ENABLE_NLS
+
++/* Define to warn for use of native system library directories */
++#undef ENABLE_POISON_SYSTEM_DIRECTORIES
++
+ /* Additional extension a shared object might have. */
+ #undef EXTRA_SHLIB_EXTENSION
+
+--- a/ld/configure
++++ b/ld/configure
+@@ -826,6 +826,7 @@
+ enable_targets
+ enable_64_bit_bfd
+ with_sysroot
++enable_poison_system_directories
+ enable_gold
+ enable_got
+ enable_compressed_debug_sections
+@@ -1491,6 +1492,8 @@
+ --disable-largefile omit support for large files
+ --enable-targets alternative target configurations
+ --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes)
++ --enable-poison-system-directories
++ warn for use of native system library directories
+ --enable-gold[=ARG] build gold [ARG={default,yes,no}]
+ --enable-got=<type> GOT handling scheme (target, single, negative,
+ multigot)
+@@ -15809,7 +15812,18 @@
+ fi
+
+
++# Check whether --enable-poison-system-directories was given.
++if test "${enable_poison_system_directories+set}" = set; then :
++ enableval=$enable_poison_system_directories;
++else
++ enable_poison_system_directories=no
++fi
++
++if test "x${enable_poison_system_directories}" = "xyes"; then
+
++$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
++
++fi
+
+ # Check whether --enable-got was given.
+ if test "${enable_got+set}" = set; then :
+--- a/ld/configure.ac
++++ b/ld/configure.ac
+@@ -94,6 +94,16 @@
+ AC_SUBST(TARGET_SYSTEM_ROOT)
+ AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
+
++AC_ARG_ENABLE([poison-system-directories],
++ AS_HELP_STRING([--enable-poison-system-directories],
++ [warn for use of native system library directories]),,
++ [enable_poison_system_directories=no])
++if test "x${enable_poison_system_directories}" = "xyes"; then
++ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
++ [1],
++ [Define to warn for use of native system library directories])
++fi
++
+ dnl Use --enable-gold to decide if this linker should be the default.
+ dnl "install_as_default" is set to false if gold is the default linker.
+ dnl "installed_linker" is the installed BFD linker name.
+--- a/ld/ld.h
++++ b/ld/ld.h
+@@ -161,6 +161,14 @@
+ /* If set, display the target memory usage (per memory region). */
+ bfd_boolean print_memory_usage;
+
++ /* If TRUE (the default) warn for uses of system directories when
++ cross linking. */
++ bfd_boolean poison_system_directories;
++
++ /* If TRUE (default FALSE) give an error for uses of system
++ directories when cross linking instead of a warning. */
++ bfd_boolean error_poison_system_directories;
++
+ /* Should we force section groups to be resolved? Controlled with
+ --force-group-allocation on the command line or FORCE_GROUP_ALLOCATION
+ in the linker script. */
+--- a/ld/ld.texi
++++ b/ld/ld.texi
+@@ -2551,6 +2551,18 @@
+
+ Passing @code{none} for @var{style} disables the setting from any
+ @code{--build-id} options earlier on the command line.
++
++@kindex --no-poison-system-directories
++@item --no-poison-system-directories
++Do not warn for @option{-L} options using system directories such as
++@file{/usr/lib} when cross linking. This option is intended for use
++in chroot environments when such directories contain the correct
++libraries for the target system rather than the host.
++
++@kindex --error-poison-system-directories
++@item --error-poison-system-directories
++Give an error instead of a warning for @option{-L} options using
++system directories when cross linking.
+ @end table
+
+ @c man end
+--- a/ld/ldfile.c
++++ b/ld/ldfile.c
+@@ -117,6 +117,23 @@
+ new_dirs->name = concat (ld_sysroot, name + strlen ("$SYSROOT"), (const char *) NULL);
+ else
+ new_dirs->name = xstrdup (name);
++
++#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
++ if (command_line.poison_system_directories
++ && ((!strncmp (name, "/lib", 4))
++ || (!strncmp (name, "/usr/lib", 8))
++ || (!strncmp (name, "/usr/local/lib", 14))
++ || (!strncmp (name, "/usr/X11R6/lib", 14))))
++ {
++ if (command_line.error_poison_system_directories)
++ einfo (_("%X%P: error: library search path \"%s\" is unsafe for "
++ "cross-compilation\n"), name);
++ else
++ einfo (_("%P: warning: library search path \"%s\" is unsafe for "
++ "cross-compilation\n"), name);
++ }
++#endif
++
+ }
+
+ /* Try to open a BFD for a lang_input_statement. */
+--- a/ld/ldlex.h
++++ b/ld/ldlex.h
+@@ -150,6 +150,8 @@
+ OPTION_FORCE_GROUP_ALLOCATION,
+ OPTION_PRINT_MAP_DISCARDED,
+ OPTION_NO_PRINT_MAP_DISCARDED,
++ OPTION_NO_POISON_SYSTEM_DIRECTORIES,
++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES,
+ };
+
+ /* The initial parser states. */
+--- a/ld/ldmain.c
++++ b/ld/ldmain.c
+@@ -273,6 +273,8 @@
+ command_line.warn_mismatch = TRUE;
+ command_line.warn_search_mismatch = TRUE;
+ command_line.check_section_addresses = -1;
++ command_line.poison_system_directories = TRUE;
++ command_line.error_poison_system_directories = FALSE;
+
+ /* We initialize DEMANGLING based on the environment variable
+ COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the
+--- a/ld/lexsup.c
++++ b/ld/lexsup.c
+@@ -550,6 +550,14 @@
+ { {"no-print-map-discarded", no_argument, NULL, OPTION_NO_PRINT_MAP_DISCARDED},
+ '\0', NULL, N_("Do not show discarded sections in map file output"),
+ TWO_DASHES },
++ { {"no-poison-system-directories", no_argument, NULL,
++ OPTION_NO_POISON_SYSTEM_DIRECTORIES},
++ '\0', NULL, N_("Do not warn for -L options using system directories"),
++ TWO_DASHES },
++ { {"error-poison-system-directories", no_argument, NULL,
++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES},
++ '\0', NULL, N_("Give an error for -L options using system directories"),
++ TWO_DASHES },
+ };
+
+ #define OPTION_COUNT ARRAY_SIZE (ld_options)
+@@ -562,6 +570,7 @@
+ int ingroup = 0;
+ char *default_dirlist = NULL;
+ char *shortopts;
++ char *BR_paranoid_env;
+ struct option *longopts;
+ struct option *really_longopts;
+ int last_optind;
+@@ -1562,6 +1571,14 @@
+ }
+ break;
+
++ case OPTION_NO_POISON_SYSTEM_DIRECTORIES:
++ command_line.poison_system_directories = FALSE;
++ break;
++
++ case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES:
++ command_line.error_poison_system_directories = TRUE;
++ break;
++
+ case OPTION_PUSH_STATE:
+ input_flags.pushed = xmemdup (&input_flags,
+ sizeof (input_flags),
+@@ -1613,6 +1630,10 @@
+ command_line.soname = NULL;
+ }
+
++ BR_paranoid_env = getenv("BR_COMPILER_PARANOID_UNSAFE_PATH");
++ if (BR_paranoid_env && strlen(BR_paranoid_env) > 0)
++ command_line.error_poison_system_directories = TRUE;
++
+ while (ingroup)
+ {
+ einfo (_("%P: missing --end-group; added as last command line option\n"));
diff --git a/packages/binutils/2.34/chksum b/packages/binutils/2.34/chksum
new file mode 100644
index 0000000..6454a13
--- /dev/null
+++ b/packages/binutils/2.34/chksum
@@ -0,0 +1,12 @@
+md5 binutils-2.34.tar.xz 664ec3a2df7805ed3464639aaae332d6
+sha1 binutils-2.34.tar.xz 78f7ba4c0775ae75f5b906dc9af03d70b39b0785
+sha256 binutils-2.34.tar.xz f00b0e8803dc9bab1e2165bd568528135be734df3fabf8d0161828cd56028952
+sha512 binutils-2.34.tar.xz 2c7976939dcf5e8c5b7374cccd39bfe803b1bec73c6abfa0eb17c24e1942574c6bdb874c66a092a82adc443182eacd8a5a8001c19a76101f0c7ba40c27de0bbd
+md5 binutils-2.34.tar.bz2 b0afc4d29db31ee6fdf3ebc34e85e482
+sha1 binutils-2.34.tar.bz2 361566c9ab5e90bd847d06f46fb9f18ec6c3ecf0
+sha256 binutils-2.34.tar.bz2 89f010078b6cf69c23c27897d686055ab89b198dddf819efb0a4f2c38a0b36e6
+sha512 binutils-2.34.tar.bz2 f47e7304e102c7bbc97958a08093e27796b9051d1567ce4fbb723d39ef3e29efa325ee14a1bdcc462a925a7f9bbbc9aee28294c6dc23850f371030f3835a8067
+md5 binutils-2.34.tar.gz 079f3414a4c2b8f58e05acfd03b57355
+sha1 binutils-2.34.tar.gz e3bb308fc718b1a6117e4fe6c43f05f5cf6f7f05
+sha256 binutils-2.34.tar.gz 53537d334820be13eeb8acb326d01c7c81418772d626715c7ae927a7d401cab3
+sha512 binutils-2.34.tar.gz bacd76767e62ca81fb1ce00a4d0563a379401f6fbe679489344c89baf62399fa36495242d9284595738437416426ce7a27689490fbcfdb7daef89f2d0ff4827b
diff --git a/packages/linux/4.20.8/version.desc b/packages/binutils/2.34/version.desc
index e69de29..e69de29 100644
--- a/packages/linux/4.20.8/version.desc
+++ b/packages/binutils/2.34/version.desc
diff --git a/packages/bison/3.4.2/chksum b/packages/bison/3.4.2/chksum
new file mode 100644
index 0000000..f12f36e
--- /dev/null
+++ b/packages/bison/3.4.2/chksum
@@ -0,0 +1,8 @@
+md5 bison-3.4.2.tar.xz d1ceb9dfde2d03b24a4c1137f7f1b572
+sha1 bison-3.4.2.tar.xz 5aa25aad924da6eda6df03a697f59d85081c5551
+sha256 bison-3.4.2.tar.xz 27d05534699735dc69e86add5b808d6cb35900ad3fd63fa82e3eb644336abfa0
+sha512 bison-3.4.2.tar.xz 00d2b37187b93100ec4b220ce2752d12ccf68f9d0d39b380d375d36dd8a22aa1d6e60156918f95e4493f9531c5d42d8fad38fd807307b491c1ca7ca4177823d9
+md5 bison-3.4.2.tar.gz a6f6a617994f8906125abae57d71d5b5
+sha1 bison-3.4.2.tar.gz e54a89ff5b74ed76ae1e83b368e9e3001917265c
+sha256 bison-3.4.2.tar.gz ff3922af377d514eca302a6662d470e857bd1a591e96a2050500df5a9d59facf
+sha512 bison-3.4.2.tar.gz bffb8d1d78d28e0e1cbe39af4dc7bd27a0442b866275dc8c1f3742926819b0a6ce6de73912b5723958c9cb2bcab076cc68002bab938004fb142a302e6dcddf98
diff --git a/packages/linux/4.19.21/version.desc b/packages/bison/3.4.2/version.desc
index e69de29..e69de29 100644
--- a/packages/linux/4.19.21/version.desc
+++ b/packages/bison/3.4.2/version.desc
diff --git a/packages/bison/3.5/chksum b/packages/bison/3.5/chksum
new file mode 100644
index 0000000..7941061
--- /dev/null
+++ b/packages/bison/3.5/chksum
@@ -0,0 +1,8 @@
+md5 bison-3.5.tar.xz c0230be066069f33c8445766833f3205
+sha1 bison-3.5.tar.xz 39f962869f16ee2dafba7cec194b67342af3544f
+sha256 bison-3.5.tar.xz 55e4a023b1b4ad19095a5f8279f0dc048fa29f970759cea83224a6d5e7a3a641
+sha512 bison-3.5.tar.xz 309ba77cfbf5d5ca697f522ac18ca9b55a1ec4e690b87220c97ffb1137b8bd8b22aa14c111166f0f4bf001e88f4bcbfd0583bc09810c246f0dc60fd6e8478950
+md5 bison-3.5.tar.gz 6c067f97266c817b339f0e989499c8e4
+sha1 bison-3.5.tar.gz 15d1ed914cdf72b3f63024bfacc10799d6044e30
+sha256 bison-3.5.tar.gz 0b36200b9868ee289b78cefd1199496b02b76899bbb7e84ff1c0733a991313d1
+sha512 bison-3.5.tar.gz 9da97b4f2cd2d0520def1264c15e26e02bd8dfae521ea1db86bf3ce92074e42c48aed09b57ad66ef9be4568335acc908071edfa34b8b5afe9acf17a50eb35567
diff --git a/packages/linux/4.18.19/version.desc b/packages/bison/3.5/version.desc
index e69de29..e69de29 100644
--- a/packages/linux/4.18.19/version.desc
+++ b/packages/bison/3.5/version.desc
diff --git a/packages/dtc/1.5.1/chksum b/packages/dtc/1.5.1/chksum
new file mode 100644
index 0000000..d2ab3e4
--- /dev/null
+++ b/packages/dtc/1.5.1/chksum
@@ -0,0 +1,8 @@
+md5 dtc-1.5.1.tar.xz d5b67727ee6d168fd83023e995565341
+sha1 dtc-1.5.1.tar.xz 55c7b70a5ad8f026ec317c5cbe3852597a022ad0
+sha256 dtc-1.5.1.tar.xz 660b74039690fc37013660544d09191834efb58503c73c555c5513ba75ab031f
+sha512 dtc-1.5.1.tar.xz 9e17103d791c71f1ad5d86ab6ac629d523d9add684c9cccb1624214d6c65e5c29776c23a2ad70597420b043bb5dfd412bf4beafd74729f02309d399d9639da83
+md5 dtc-1.5.1.tar.gz 674786d4154b8aa3a76ddf88a825f33b
+sha1 dtc-1.5.1.tar.gz 6079e415a55cda7473e3e356a5882e6bef165197
+sha256 dtc-1.5.1.tar.gz db4a3204847139fe3ab9843207096a65b896c4d8b63da282eb49421d1f1109b8
+sha512 dtc-1.5.1.tar.gz 2027b96f9dbef22aba224d73ca995053f53610045b003371df0b6e1f79e14bb61a544b694d2b058a88902ca76790063d86522252f42e0621ac15f5698b0cd369
diff --git a/packages/linux/4.14.99/version.desc b/packages/dtc/1.5.1/version.desc
index e69de29..e69de29 100644
--- a/packages/linux/4.14.99/version.desc
+++ b/packages/dtc/1.5.1/version.desc
diff --git a/packages/elf2flt/git-453398f9/0000-support-binutils-2.34.patch b/packages/elf2flt/git-453398f9/0000-support-binutils-2.34.patch
new file mode 100644
index 0000000..3a4726d
--- /dev/null
+++ b/packages/elf2flt/git-453398f9/0000-support-binutils-2.34.patch
@@ -0,0 +1,447 @@
+From fa0e77afba7d8d4107af5f8ddc8d38d23c3dd19d Mon Sep 17 00:00:00 2001
+From: Romain Naour <romain.naour@smile.fr>
+Date: Wed, 5 Feb 2020 10:31:32 +0100
+Subject: [PATCH] elf2flt: handle binutils >= 2.34
+
+The latest Binutils release (2.34) is not compatible with elf2flt due
+to a change in bfd_section_* macros. The issue has been reported to
+the Binutils mailing list but Alan Modra recommend to bundle libbfd
+library sources into each projects using it [1]. That's because the
+API is not stable over the time without any backward compatibility
+guaranties.
+
+On the other hand, the elf2flt tools needs to support modified
+version of binutils for specific arch/target [2].
+
+Add two tests in the configure script to detect this API change
+in order to support binutils < 2.34 and binutils >= 2.34.
+
+[1] https://sourceware.org/ml/binutils/2020-02/msg00044.html
+[2] https://github.com/uclinux-dev/elf2flt/issues/14
+
+Signed-off-by: Romain Naour <romain.naour@smile.fr>
+---
+ configure.ac | 25 ++++++++++++++++
+ elf2flt.c | 81 +++++++++++++++++++++++++++++-----------------------
+ 2 files changed, 71 insertions(+), 35 deletions(-)
+
+[Added: regenerated configure]
+diff --git a/configure.ac b/configure.ac
+index d6b4119..caae869 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -212,6 +212,31 @@ AC_CHECK_FUNCS([ \
+ strsignal \
+ ])
+
++dnl Various bfd section macros and functions like bfd_section_size() has been
++dnl modified starting binutils >= 2.34.
++dnl Check if the prototype is "bfd_section_size (sec)" or "bfd_section_size(bfd, ptr)"
++if test "$binutils_build_dir" != "NONE"; then
++ CFLAGS="-I$binutils_include_dir -I$bfd_include_dir $CFLAGS"
++fi
++
++AC_TRY_COMPILE([#include <bfd.h>],
++ [const asection *sec; bfd_section_size(sec);],
++ bfd_section_size_macro_has_one_arg=yes,
++ bfd_section_size_macro_has_one_arg=no)
++if test "$bfd_section_size_macro_has_one_arg" = "yes" ; then
++ AC_DEFINE(HAVE_BFD_SECTION_SIZE_MACRO_HAS_ONE_ARG, 1,
++ [define to 1 for binutils >= 2.34])
++fi
++
++AC_TRY_COMPILE([#include <bfd.h>],
++ [const asection *sec; bfd_section_vma(sec);],
++ bfd_section_vma_macro_has_one_arg=yes,
++ bfd_section_vma_macro_has_one_arg=no)
++if test "$bfd_section_vma_macro_has_one_arg" = "yes" ; then
++ AC_DEFINE(HAVE_BFD_SECTION_VMA_MACRO_HAS_ONE_ARG, 1,
++ [define to 1 for binutils >= 2.34])
++fi
++
+ if test "$GCC" = yes ; then
+ CFLAGS="-Wall $CFLAGS"
+ if test "$werror" = 1 ; then
+diff --git a/elf2flt.c b/elf2flt.c
+index b7c4a49..8dbd9b2 100644
+--- a/elf2flt.c
++++ b/elf2flt.c
+@@ -149,6 +149,17 @@ const char *elf2flt_progname;
+ #define O_BINARY 0
+ #endif
+
++#if defined(HAVE_BFD_SECTION_SIZE_MACRO_HAS_ONE_ARG)
++#define elf2flt_bfd_section_size(abs_bfd, s) bfd_section_size(s)
++#else
++#define elf2flt_bfd_section_size(abs_bfd, s) bfd_section_size(abs_bfd, s)
++#endif
++
++#if defined(HAVE_BFD_SECTION_VMA_MACRO_HAS_ONE_ARG)
++#define elf2flt_bfd_section_vma(abs_bfd, s) bfd_section_vma(s)
++#else
++#define elf2flt_bfd_section_vma(abs_bfd, s) bfd_section_vma(abs_bfd, s)
++#endif
+
+ /* Extra output when running. */
+ static int verbose = 0;
+@@ -323,9 +334,9 @@ compare_relocs (const void *pa, const void *pb)
+ else if (!rb->sym_ptr_ptr || !*rb->sym_ptr_ptr)
+ return 1;
+
+- a_vma = bfd_section_vma(compare_relocs_bfd,
++ a_vma = elf2flt_bfd_section_vma(compare_relocs_bfd,
+ (*(ra->sym_ptr_ptr))->section);
+- b_vma = bfd_section_vma(compare_relocs_bfd,
++ b_vma = elf2flt_bfd_section_vma(compare_relocs_bfd,
+ (*(rb->sym_ptr_ptr))->section);
+ va = (*(ra->sym_ptr_ptr))->value + a_vma + ra->addend;
+ vb = (*(rb->sym_ptr_ptr))->value + b_vma + rb->addend;
+@@ -403,7 +414,7 @@ output_relocs (
+ }
+
+ for (a = abs_bfd->sections; (a != (asection *) NULL); a = a->next) {
+- section_vma = bfd_section_vma(abs_bfd, a);
++ section_vma = elf2flt_bfd_section_vma(abs_bfd, a);
+
+ if (verbose)
+ printf("SECTION: %s [%p]: flags=0x%x vma=0x%"PRIx32"\n",
+@@ -442,7 +453,7 @@ output_relocs (
+ continue;
+ if (verbose)
+ printf(" RELOCS: %s [%p]: flags=0x%x vma=0x%"BFD_VMA_FMT"x\n",
+- r->name, r, r->flags, bfd_section_vma(abs_bfd, r));
++ r->name, r, r->flags, elf2flt_bfd_section_vma(abs_bfd, r));
+ if ((r->flags & SEC_RELOC) == 0)
+ continue;
+ relsize = bfd_get_reloc_upper_bound(rel_bfd, r);
+@@ -674,7 +685,7 @@ output_relocs (
+ case R_BFIN_RIMM16:
+ case R_BFIN_LUIMM16:
+ case R_BFIN_HUIMM16:
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ sym_addr += sym_vma + q->addend;
+
+ if (weak_und_symbol(sym_section->name, (*(q->sym_ptr_ptr))))
+@@ -707,7 +718,7 @@ output_relocs (
+ break;
+
+ case R_BFIN_BYTE4_DATA:
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ sym_addr += sym_vma + q->addend;
+
+ if (weak_und_symbol (sym_section->name, (*(q->sym_ptr_ptr))))
+@@ -851,7 +862,7 @@ output_relocs (
+ #if defined(TARGET_m68k)
+ case R_68K_32:
+ relocation_needed = 1;
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ sym_addr += sym_vma + q->addend;
+ break;
+ case R_68K_PC16:
+@@ -876,7 +887,7 @@ output_relocs (
+ q->address, sym_addr,
+ (*p)->howto->rightshift,
+ *(uint32_t *)r_mem);
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ sym_addr += sym_vma + q->addend;
+ break;
+ case R_ARM_GOT32:
+@@ -904,7 +915,7 @@ output_relocs (
+ #ifdef TARGET_v850
+ case R_V850_ABS32:
+ relocation_needed = 1;
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ sym_addr += sym_vma + q->addend;
+ break;
+ case R_V850_ZDA_16_16_OFFSET:
+@@ -926,7 +937,7 @@ output_relocs (
+ sym_addr = (*(q->sym_ptr_ptr))->value;
+ q->address -= 1;
+ r_mem -= 1; /* tracks q->address */
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ sym_addr += sym_vma + q->addend;
+ sym_addr |= (*(unsigned char *)r_mem<<24);
+ break;
+@@ -939,7 +950,7 @@ output_relocs (
+ /* Absolute symbol done not relocation */
+ relocation_needed = !bfd_is_abs_section(sym_section);
+ sym_addr = (*(q->sym_ptr_ptr))->value;
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ sym_addr += sym_vma + q->addend;
+ break;
+ case R_H8_DIR32:
+@@ -952,7 +963,7 @@ output_relocs (
+ }
+ relocation_needed = 1;
+ sym_addr = (*(q->sym_ptr_ptr))->value;
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ sym_addr += sym_vma + q->addend;
+ break;
+ case R_H8_PCREL16:
+@@ -985,7 +996,7 @@ output_relocs (
+ pflags=0x80000000;
+
+ /* work out the relocation */
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ sym_addr += sym_vma + q->addend;
+ /* Write relocated pointer back */
+ p[2] = (sym_addr >> 24) & 0xff;
+@@ -1001,7 +1012,7 @@ output_relocs (
+ relocation_needed = 0;
+ pflags = 0;
+ sprintf(&addstr[0], "+0x%ld", sym_addr - (*(q->sym_ptr_ptr))->value -
+- bfd_section_vma(abs_bfd, sym_section));
++ elf2flt_bfd_section_vma(abs_bfd, sym_section));
+ if (verbose)
+ printf(" RELOC[%d]: offset=0x%"BFD_VMA_FMT"x symbol=%s%s "
+ "section=%s size=%d "
+@@ -1017,7 +1028,7 @@ output_relocs (
+ continue;
+ }
+ case R_MICROBLAZE_32:
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ sym_addr += sym_vma + q->addend;
+ relocation_needed = 1;
+ break;
+@@ -1042,7 +1053,7 @@ output_relocs (
+ case R_NIOS2_BFD_RELOC_32:
+ relocation_needed = 1;
+ pflags = (FLAT_NIOS2_R_32 << 28);
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ sym_addr += sym_vma + q->addend;
+ /* modify target, in target order */
+ *(unsigned long *)r_mem = htoniosl(sym_addr);
+@@ -1052,7 +1063,7 @@ output_relocs (
+ unsigned long exist_val;
+ relocation_needed = 1;
+ pflags = (FLAT_NIOS2_R_CALL26 << 28);
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ sym_addr += sym_vma + q->addend;
+
+ /* modify target, in target order */
+@@ -1083,7 +1094,7 @@ output_relocs (
+ ? FLAT_NIOS2_R_HIADJ_LO : FLAT_NIOS2_R_HI_LO;
+ pflags <<= 28;
+
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ sym_addr += sym_vma + q->addend;
+
+ /* modify high 16 bits, in target order */
+@@ -1116,7 +1127,7 @@ output_relocs (
+ goto NIOS2_RELOC_ERR;
+ }
+ /* _gp holds a absolute value, otherwise the ld cannot generate correct code */
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ //printf("sym=%x, %d, _gp=%x, %d\n", sym_addr+sym_vma, sym_addr+sym_vma, gp, gp);
+ sym_addr += sym_vma + q->addend;
+ sym_addr -= gp;
+@@ -1197,7 +1208,7 @@ output_relocs (
+ case R_SPARC_32:
+ case R_SPARC_UA32:
+ relocation_needed = 1;
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ sym_addr += sym_vma + q->addend;
+ break;
+ case R_SPARC_PC22:
+@@ -1216,7 +1227,7 @@ output_relocs (
+ case R_SPARC_HI22:
+ relocation_needed = 1;
+ pflags = 0x80000000;
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ sym_addr += sym_vma + q->addend;
+ sym_addr |= (
+ htonl(*(uint32_t *)r_mem)
+@@ -1226,7 +1237,7 @@ output_relocs (
+ case R_SPARC_LO10:
+ relocation_needed = 1;
+ pflags = 0x40000000;
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ sym_addr += sym_vma + q->addend;
+ sym_addr &= 0x000003ff;
+ sym_addr |= (
+@@ -1240,7 +1251,7 @@ output_relocs (
+ #ifdef TARGET_sh
+ case R_SH_DIR32:
+ relocation_needed = 1;
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ sym_addr += sym_vma + q->addend;
+ break;
+ case R_SH_REL32:
+@@ -1272,7 +1283,7 @@ output_relocs (
+ case R_E1_CONST31:
+ relocation_needed = 1;
+ DBG_E1("Handling Reloc <CONST31>\n");
+- sec_vma = bfd_section_vma(abs_bfd, sym_section);
++ sec_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ DBG_E1("sec_vma : [0x%x], sym_addr : [0x%x], q->address : [0x%x]\n",
+ sec_vma, sym_addr, q->address);
+ sym_addr = sec_vma + sym_addr;
+@@ -1287,7 +1298,7 @@ output_relocs (
+ relocation_needed = 0;
+ DBG_E1("Handling Reloc <CONST31_PCREL>\n");
+ DBG_E1("DONT RELOCATE AT LOADING\n");
+- sec_vma = bfd_section_vma(abs_bfd, sym_section);
++ sec_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ DBG_E1("sec_vma : [0x%x], sym_addr : [0x%x], q->address : [0x%x]\n",
+ sec_vma, sym_addr, q->address);
+ sym_addr = sec_vma + sym_addr;
+@@ -1314,7 +1325,7 @@ output_relocs (
+ relocation_needed = 0;
+ DBG_E1("Handling Reloc <DIS29W_PCREL>\n");
+ DBG_E1("DONT RELOCATE AT LOADING\n");
+- sec_vma = bfd_section_vma(abs_bfd, sym_section);
++ sec_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ DBG_E1("sec_vma : [0x%x], sym_addr : [0x%x], q->address : [0x%x]\n",
+ sec_vma, sym_addr, q->address);
+ sym_addr = sec_vma + sym_addr;
+@@ -1347,7 +1358,7 @@ output_relocs (
+ DBG_E1("Handling Reloc <DIS29B>\n");
+ DIS29_RELOCATION:
+ relocation_needed = 1;
+- sec_vma = bfd_section_vma(abs_bfd, sym_section);
++ sec_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ DBG_E1("sec_vma : [0x%x], sym_addr : [0x%08x]\n",
+ sec_vma, sym_addr);
+ sym_addr = sec_vma + sym_addr;
+@@ -1364,7 +1375,7 @@ output_relocs (
+ relocation_needed = 0;
+ DBG_E1("Handling Reloc <IMM32_PCREL>\n");
+ DBG_E1("DONT RELOCATE AT LOADING\n");
+- sec_vma = bfd_section_vma(abs_bfd, sym_section);
++ sec_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ DBG_E1("sec_vma : [0x%x], sym_addr : [0x%x]\n",
+ sec_vma, sym_addr);
+ sym_addr = sec_vma + sym_addr;
+@@ -1390,7 +1401,7 @@ output_relocs (
+ case R_E1_IMM32:
+ relocation_needed = 1;
+ DBG_E1("Handling Reloc <IMM32>\n");
+- sec_vma = bfd_section_vma(abs_bfd, sym_section);
++ sec_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ DBG_E1("sec_vma : [0x%x], sym_addr : [0x%x]\n",
+ sec_vma, sym_addr);
+ sym_addr = sec_vma + sym_addr;
+@@ -1406,7 +1417,7 @@ output_relocs (
+ case R_E1_WORD:
+ relocation_needed = 1;
+ DBG_E1("Handling Reloc <WORD>\n");
+- sec_vma = bfd_section_vma(abs_bfd, sym_section);
++ sec_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ DBG_E1("sec_vma : [0x%x], sym_addr : [0x%x]\n",
+ sec_vma, sym_addr);
+ sym_addr = sec_vma + sym_addr;
+@@ -1433,7 +1444,7 @@ output_relocs (
+ }
+
+ sprintf(&addstr[0], "+0x%lx", sym_addr - (*(q->sym_ptr_ptr))->value -
+- bfd_section_vma(abs_bfd, sym_section));
++ elf2flt_bfd_section_vma(abs_bfd, sym_section));
+
+
+ /*
+@@ -1873,8 +1884,8 @@ int main(int argc, char *argv[])
+ } else
+ continue;
+
+- sec_size = bfd_section_size(abs_bfd, s);
+- sec_vma = bfd_section_vma(abs_bfd, s);
++ sec_size = elf2flt_bfd_section_size(abs_bfd, s);
++ sec_vma = elf2flt_bfd_section_vma(abs_bfd, s);
+
+ if (sec_vma < *vma) {
+ if (*len > 0)
+@@ -1899,7 +1910,7 @@ int main(int argc, char *argv[])
+ if (s->flags & SEC_CODE)
+ if (!bfd_get_section_contents(abs_bfd, s,
+ text + (s->vma - text_vma), 0,
+- bfd_section_size(abs_bfd, s)))
++ elf2flt_bfd_section_size(abs_bfd, s)))
+ {
+ fatal("read error section %s", s->name);
+ }
+@@ -1925,7 +1936,7 @@ int main(int argc, char *argv[])
+ if (s->flags & SEC_DATA)
+ if (!bfd_get_section_contents(abs_bfd, s,
+ data + (s->vma - data_vma), 0,
+- bfd_section_size(abs_bfd, s)))
++ elf2flt_bfd_section_size(abs_bfd, s)))
+ {
+ fatal("read error section %s", s->name);
+ }
+--- elf2flt-git-453398f9.orig/configure 2020-02-23 19:11:22.383955320 -0800
++++ elf2flt-git-453398f9/configure 2020-02-23 19:13:08.667951575 -0800
+@@ -4310,6 +4310,56 @@
+ done
+
+
++if test "$binutils_build_dir" != "NONE"; then
++ CFLAGS="-I$binutils_include_dir -I$bfd_include_dir $CFLAGS"
++fi
++
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <bfd.h>
++int
++main ()
++{
++const asection *sec; bfd_section_size(sec);
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ bfd_section_size_macro_has_one_arg=yes
++else
++ bfd_section_size_macro_has_one_arg=no
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++if test "$bfd_section_size_macro_has_one_arg" = "yes" ; then
++
++$as_echo "#define HAVE_BFD_SECTION_SIZE_MACRO_HAS_ONE_ARG 1" >>confdefs.h
++
++fi
++
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <bfd.h>
++int
++main ()
++{
++const asection *sec; bfd_section_vma(sec);
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ bfd_section_vma_macro_has_one_arg=yes
++else
++ bfd_section_vma_macro_has_one_arg=no
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++if test "$bfd_section_vma_macro_has_one_arg" = "yes" ; then
++
++$as_echo "#define HAVE_BFD_SECTION_VMA_MACRO_HAS_ONE_ARG 1" >>confdefs.h
++
++fi
++
+ if test "$GCC" = yes ; then
+ CFLAGS="-Wall $CFLAGS"
+ if test "$werror" = 1 ; then
diff --git a/packages/elf2flt/package.desc b/packages/elf2flt/package.desc
index a6b8093..d0b5327 100644
--- a/packages/elf2flt/package.desc
+++ b/packages/elf2flt/package.desc
@@ -1,2 +1,2 @@
repository='git https://github.com/uclinux-dev/elf2flt.git'
-repository_cset='7e33f28df198c46764021ed14408bd262751e148'
+repository_cset='453398f917d167f8c308c8f997270c48ae8f8b12'
diff --git a/packages/expat/2.1.1/version.desc b/packages/expat/2.1.1/version.desc
index fcfe389..a114052 100644
--- a/packages/expat/2.1.1/version.desc
+++ b/packages/expat/2.1.1/version.desc
@@ -1 +1,2 @@
obsolete='yes'
+archive_formats='.tar.bz2'
diff --git a/packages/expat/2.2.6/chksum b/packages/expat/2.2.6/chksum
deleted file mode 100644
index 16ea962..0000000
--- a/packages/expat/2.2.6/chksum
+++ /dev/null
@@ -1,4 +0,0 @@
-md5 expat-2.2.6.tar.bz2 ca047ae951b40020ac831c28859161b2
-sha1 expat-2.2.6.tar.bz2 c8947fc3119a797b55485f2f7bdaaeb49cc9df01
-sha256 expat-2.2.6.tar.bz2 17b43c2716d521369f82fc2dc70f359860e90fa440bea65b3b85f0b246ea81f2
-sha512 expat-2.2.6.tar.bz2 dbfb635a5fe7b190722664263a0dd437b512fdf519bc53bd4905567f4bfb4b1e89a021562da63df8cacd48b706d1dea60ccde47f279e57400ad3c846b6e9c4e6
diff --git a/packages/expat/2.2.9/chksum b/packages/expat/2.2.9/chksum
new file mode 100644
index 0000000..23a0e8c
--- /dev/null
+++ b/packages/expat/2.2.9/chksum
@@ -0,0 +1,16 @@
+md5 expat-2.2.9.tar.xz d2384fa607223447e713e1b9bd272376
+sha1 expat-2.2.9.tar.xz 90a361e4c97f8c469479ffadc0de0b121a911fb5
+sha256 expat-2.2.9.tar.xz 1ea6965b15c2106b6bbe883397271c80dfa0331cdf821b2c319591b55eadc0a4
+sha512 expat-2.2.9.tar.xz e082874efcc4b00709e2c0192c88fb15dfc4f33fc3a2b09e619b010ea93baaf7e7572683f738463db0ce2350cab3de48a0c38af6b74d1c4f5a9e311f499edab0
+md5 expat-2.2.9.tar.lz c356e4f2092df4f0b0ffef904f001842
+sha1 expat-2.2.9.tar.lz bcf35c331f5d63f1abe7dd4f6f6f2d5969ea6da4
+sha256 expat-2.2.9.tar.lz a1e85abcd97c2aa71005190d24a7c46dcf7bd29c097c31e917cda1b400c38a49
+sha512 expat-2.2.9.tar.lz 514ff2ef3c93af0b1715b7a08732db33c13a113c4c72422716a22ee26c09235deed71ec55510cee24c33bcd6b2347602bd71ce70a432d5583fb63765ff9e0e09
+md5 expat-2.2.9.tar.bz2 875a2c2ff3e8eb9e5a5cd62db2033ab5
+sha1 expat-2.2.9.tar.bz2 ef5c1c55913a6ab18496ee99166f86269c7cdc31
+sha256 expat-2.2.9.tar.bz2 f1063084dc4302a427dabcca499c8312b3a32a29b7d2506653ecc8f950a9a237
+sha512 expat-2.2.9.tar.bz2 8ea4b89a171dfda8267c8b7a0295516d169bf7f46587ebe460fe0ae7a31478a119ae2a7eaa09b3ce46b107ec7cd2274ea66d91c08b8a4ad6b98ba984cdd4e15b
+md5 expat-2.2.9.tar.gz 077b953cc38df8fed78e92841cc35443
+sha1 expat-2.2.9.tar.gz 3739fa85b056150fa2b2d57ad290d5cb39c97053
+sha256 expat-2.2.9.tar.gz 4456e0aa72ecc7e1d4b3368cd545a5eec7f9de5133a8dc37fdb1efa6174c4947
+sha512 expat-2.2.9.tar.gz 69dc2af49910b18708084bfd78ed422d973bc2d8f76c46320581436a8bb7f47e32322c4526d92ca763aec4b5596ba8c8fc663c486258e47fbaeaeeed6efebd91
diff --git a/packages/linux/3.16.63/version.desc b/packages/expat/2.2.9/version.desc
index e69de29..e69de29 100644
--- a/packages/linux/3.16.63/version.desc
+++ b/packages/expat/2.2.9/version.desc
diff --git a/packages/expat/package.desc b/packages/expat/package.desc
index 4e3e1a0..84dba8f 100644
--- a/packages/expat/package.desc
+++ b/packages/expat/package.desc
@@ -1,6 +1,6 @@
repository='git https://github.com/libexpat/libexpat.git'
repository_subdir='expat'
bootstrap='./buildconf.sh && make -C doc all'
-mirrors='http://downloads.sourceforge.net/project/expat/expat/${CT_EXPAT_VERSION}'
-archive_formats='.tar.bz2'
+mirrors='http://downloads.sourceforge.net/project/expat/expat/${CT_EXPAT_VERSION} https://github.com/libexpat/libexpat/releases/download/R_${CT_EXPAT_VERSION//./_}'
+archive_formats='.tar.xz .tar.lz .tar.bz2 .tar.gz'
relevantpattern='*.*|.'
diff --git a/packages/gcc/7.4.0/chksum b/packages/gcc/7.4.0/chksum
deleted file mode 100644
index e1c6a85..0000000
--- a/packages/gcc/7.4.0/chksum
+++ /dev/null
@@ -1,8 +0,0 @@
-md5 gcc-7.4.0.tar.xz 6e9d754638ff03d2e9b2aff55aed82b4
-sha1 gcc-7.4.0.tar.xz bf09553cfa08ae6e29dfbbd541e5c69c3cbc6c66
-sha256 gcc-7.4.0.tar.xz eddde28d04f334aec1604456e536416549e9b1aa137fc69204e65eb0c009fe51
-sha512 gcc-7.4.0.tar.xz 8864d8e4b97c2e1a4f17422f6e68120172ebefeab97b1757734f7185ca68a6b9a89011c6833c03fa454c17b0ac35b15e1d284881e6971035948ac6100f3aa45e
-md5 gcc-7.4.0.tar.gz 2f1f2df93e2777299b366070cd1b0ced
-sha1 gcc-7.4.0.tar.gz ebbaf0be68a22d30cd74cab67d38a056a3b86e5a
-sha256 gcc-7.4.0.tar.gz cb8df68237b0bea3307217697ad749a0a0565584da259e8a944ef6cfc4dc4d3d
-sha512 gcc-7.4.0.tar.gz 6824b5c8fdb3151d8dd517911d3d975f7808525f52db32b5c25e9354b562792d6d2f1e8cc5aa019ff250df65b4f29b43f65ab6d769a070fd0015b13a3a9d6bf9
diff --git a/packages/gcc/8.3.0/0000-libtool-leave-framework-alone.patch b/packages/gcc/7.5.0/0000-libtool-leave-framework-alone.patch
index 1a86e41..1a86e41 100644
--- a/packages/gcc/8.3.0/0000-libtool-leave-framework-alone.patch
+++ b/packages/gcc/7.5.0/0000-libtool-leave-framework-alone.patch
diff --git a/packages/gcc/8.3.0/0001-uclibc-conf.patch b/packages/gcc/7.5.0/0001-uclibc-conf.patch
index aef750a..aef750a 100644
--- a/packages/gcc/8.3.0/0001-uclibc-conf.patch
+++ b/packages/gcc/7.5.0/0001-uclibc-conf.patch
diff --git a/packages/gcc/7.4.0/0002-gcc-plugin-Win-Dont-need-undefined-extern-var-refs-nor-fpic.patch b/packages/gcc/7.5.0/0002-gcc-plugin-Win-Dont-need-undefined-extern-var-refs-nor-fpic.patch
index 8d40620..8d40620 100644
--- a/packages/gcc/7.4.0/0002-gcc-plugin-Win-Dont-need-undefined-extern-var-refs-nor-fpic.patch
+++ b/packages/gcc/7.5.0/0002-gcc-plugin-Win-Dont-need-undefined-extern-var-refs-nor-fpic.patch
diff --git a/packages/gcc/8.3.0/0003-gcc-plugin-POSIX-include-sys-select-h.patch b/packages/gcc/7.5.0/0003-gcc-plugin-POSIX-include-sys-select-h.patch
index 5f9a07a..5f9a07a 100644
--- a/packages/gcc/8.3.0/0003-gcc-plugin-POSIX-include-sys-select-h.patch
+++ b/packages/gcc/7.5.0/0003-gcc-plugin-POSIX-include-sys-select-h.patch
diff --git a/packages/gcc/8.3.0/0004-arm-softfloat-libgcc.patch b/packages/gcc/7.5.0/0004-arm-softfloat-libgcc.patch
index d980036..d980036 100644
--- a/packages/gcc/8.3.0/0004-arm-softfloat-libgcc.patch
+++ b/packages/gcc/7.5.0/0004-arm-softfloat-libgcc.patch
diff --git a/packages/gcc/7.4.0/0005-cilk-wchar.patch b/packages/gcc/7.5.0/0005-cilk-wchar.patch
index d2230cd..d2230cd 100644
--- a/packages/gcc/7.4.0/0005-cilk-wchar.patch
+++ b/packages/gcc/7.5.0/0005-cilk-wchar.patch
diff --git a/packages/gcc/7.4.0/0006-fix-m68k-uclinux.patch b/packages/gcc/7.5.0/0006-fix-m68k-uclinux.patch
index 28b0f3d..28b0f3d 100644
--- a/packages/gcc/7.4.0/0006-fix-m68k-uclinux.patch
+++ b/packages/gcc/7.5.0/0006-fix-m68k-uclinux.patch
diff --git a/packages/gcc/7.4.0/0007-libgfortran-missing-include.patch b/packages/gcc/7.5.0/0007-libgfortran-missing-include.patch
index 16af6ac..16af6ac 100644
--- a/packages/gcc/7.4.0/0007-libgfortran-missing-include.patch
+++ b/packages/gcc/7.5.0/0007-libgfortran-missing-include.patch
diff --git a/packages/gcc/7.4.0/0008-nios2-bad-multilib-default.patch b/packages/gcc/7.5.0/0008-nios2-bad-multilib-default.patch
index 4acc491..4acc491 100644
--- a/packages/gcc/7.4.0/0008-nios2-bad-multilib-default.patch
+++ b/packages/gcc/7.5.0/0008-nios2-bad-multilib-default.patch
diff --git a/packages/gcc/7.4.0/0009-libgcc-disable-split-stack-nothreads.patch b/packages/gcc/7.5.0/0009-libgcc-disable-split-stack-nothreads.patch
index df91a9f..df91a9f 100644
--- a/packages/gcc/7.4.0/0009-libgcc-disable-split-stack-nothreads.patch
+++ b/packages/gcc/7.5.0/0009-libgcc-disable-split-stack-nothreads.patch
diff --git a/packages/gcc/7.4.0/0010-bionic-ndk.patch b/packages/gcc/7.5.0/0010-bionic-ndk.patch
index 474dd8c..474dd8c 100644
--- a/packages/gcc/7.4.0/0010-bionic-ndk.patch
+++ b/packages/gcc/7.5.0/0010-bionic-ndk.patch
diff --git a/packages/gcc/7.4.0/0011-bionic-errno.patch b/packages/gcc/7.5.0/0011-bionic-errno.patch
index 0a1a632..0a1a632 100644
--- a/packages/gcc/7.4.0/0011-bionic-errno.patch
+++ b/packages/gcc/7.5.0/0011-bionic-errno.patch
diff --git a/packages/gcc/7.4.0/0012-crystax.patch b/packages/gcc/7.5.0/0012-crystax.patch
index d67118c..5cc2ae5 100644
--- a/packages/gcc/7.4.0/0012-crystax.patch
+++ b/packages/gcc/7.5.0/0012-crystax.patch
@@ -52,7 +52,7 @@ Date: Wed Jul 29 11:28:29 2015 +0300
esac
aarch64_multilibs="${with_multilib_list}"
if test "$aarch64_multilibs" = "default"; then
-@@ -2094,6 +2098,17 @@
+@@ -2103,6 +2107,17 @@
tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h mips/linux-common.h"
extra_options="${extra_options} linux-android.opt"
case ${target} in
@@ -167,7 +167,7 @@ Date: Wed Jul 29 11:28:29 2015 +0300
: min >= -256 && max < 256 \
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
-@@ -8665,7 +8665,7 @@
+@@ -8658,7 +8658,7 @@
(match_operand:SI 2 "const_int_operand" "") ; total range
(match_operand:SI 3 "" "") ; table label
(match_operand:SI 4 "" "")] ; Out of range label
@@ -445,7 +445,7 @@ Date: Wed Jul 29 11:28:29 2015 +0300
#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
-@@ -78577,6 +78577,12 @@
+@@ -78578,6 +78578,12 @@
/* end confdefs.h. */
#include <sys/syscall.h>
int lk;
@@ -458,7 +458,7 @@ Date: Wed Jul 29 11:28:29 2015 +0300
int
main ()
{
-@@ -78635,6 +78641,12 @@
+@@ -78636,6 +78642,12 @@
/* end confdefs.h. */
#include <sys/syscall.h>
int lk;
diff --git a/packages/gcc/7.4.0/0013-crystax.patch b/packages/gcc/7.5.0/0013-crystax.patch
index f1f9eb1..f1f9eb1 100644
--- a/packages/gcc/7.4.0/0013-crystax.patch
+++ b/packages/gcc/7.5.0/0013-crystax.patch
diff --git a/packages/gcc/7.4.0/0014-crystax.patch b/packages/gcc/7.5.0/0014-crystax.patch
index 910ccd4..910ccd4 100644
--- a/packages/gcc/7.4.0/0014-crystax.patch
+++ b/packages/gcc/7.5.0/0014-crystax.patch
diff --git a/packages/gcc/7.4.0/0015-crystax.patch b/packages/gcc/7.5.0/0015-crystax.patch
index 813240f..c468fc7 100644
--- a/packages/gcc/7.4.0/0015-crystax.patch
+++ b/packages/gcc/7.5.0/0015-crystax.patch
@@ -12,7 +12,7 @@ Date: Thu Aug 20 19:11:07 2015 +0300
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
-@@ -16116,6 +16116,7 @@
+@@ -16131,6 +16131,7 @@
else if (!SYMBOL_REF_FAR_ADDR_P (op0)
&& (SYMBOL_REF_LOCAL_P (op0)
|| (HAVE_LD_PIE_COPYRELOC
diff --git a/packages/gcc/7.4.0/0016-crystax.patch b/packages/gcc/7.5.0/0016-crystax.patch
index 8f2eb43..8f2eb43 100644
--- a/packages/gcc/7.4.0/0016-crystax.patch
+++ b/packages/gcc/7.5.0/0016-crystax.patch
diff --git a/packages/gcc/7.4.0/0017-crystax.patch b/packages/gcc/7.5.0/0017-crystax.patch
index a466094..ea9f69a 100644
--- a/packages/gcc/7.4.0/0017-crystax.patch
+++ b/packages/gcc/7.5.0/0017-crystax.patch
@@ -15,7 +15,7 @@ Date: Mon Apr 14 21:05:51 2014 -0700
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
-@@ -22312,9 +22312,13 @@
+@@ -22355,9 +22355,13 @@
memsize = MEM_SIZE (x);
/* Only certain alignment specifiers are supported by the hardware. */
diff --git a/packages/gcc/7.4.0/0018-crystax.patch b/packages/gcc/7.5.0/0018-crystax.patch
index 8c21a1c..8c21a1c 100644
--- a/packages/gcc/7.4.0/0018-crystax.patch
+++ b/packages/gcc/7.5.0/0018-crystax.patch
diff --git a/packages/gcc/7.4.0/0019-crystax.patch b/packages/gcc/7.5.0/0019-crystax.patch
index ccb81fd..ccb81fd 100644
--- a/packages/gcc/7.4.0/0019-crystax.patch
+++ b/packages/gcc/7.5.0/0019-crystax.patch
diff --git a/packages/gcc/7.4.0/0020-isl-0.20.patch b/packages/gcc/7.5.0/0020-isl-0.20.patch
index 3e14966..3e14966 100644
--- a/packages/gcc/7.4.0/0020-isl-0.20.patch
+++ b/packages/gcc/7.5.0/0020-isl-0.20.patch
diff --git a/packages/gcc/7.5.0/chksum b/packages/gcc/7.5.0/chksum
new file mode 100644
index 0000000..0796aa3
--- /dev/null
+++ b/packages/gcc/7.5.0/chksum
@@ -0,0 +1,8 @@
+md5 gcc-7.5.0.tar.xz 79cb8a65d44dfc8a2402b46395535c9a
+sha1 gcc-7.5.0.tar.xz 9153345fa05adfa58b4759ccb9f37d09662dd101
+sha256 gcc-7.5.0.tar.xz b81946e7f01f90528a1f7352ab08cc602b9ccc05d4e44da4bd501c5a189ee661
+sha512 gcc-7.5.0.tar.xz fe716cc19f2e3255d3a8b1b8290777bf769c6d98e6e0b07b81a3d6ad43f8af74cb170dfa18b1555dbfcd3f55ae582b91a286ccef496b9b65c1579902f96a1f60
+md5 gcc-7.5.0.tar.gz 115814d16ea8d96e13949360d5d76a8c
+sha1 gcc-7.5.0.tar.gz 0d7f578337cf0a17503899bc46dd2e11f9d3e293
+sha256 gcc-7.5.0.tar.gz 4f518f18cfb694ad7975064e99e200fe98af13603b47e67e801ba9580e50a07f
+sha512 gcc-7.5.0.tar.gz 2883152afa4c5aa38139e9d3ffa01056256d7156f6a657ab988f9bb3a9caa1d05fbfd93a4509bab6b615eed8ac094521fc6155e1b3fd6c62a702d88d65ced88e
diff --git a/packages/gcc/8.3.0/version.desc b/packages/gcc/7.5.0/version.desc
index e69de29..e69de29 100644
--- a/packages/gcc/8.3.0/version.desc
+++ b/packages/gcc/7.5.0/version.desc
diff --git a/packages/gcc/8.3.0/chksum b/packages/gcc/8.3.0/chksum
deleted file mode 100644
index bf662ee..0000000
--- a/packages/gcc/8.3.0/chksum
+++ /dev/null
@@ -1,8 +0,0 @@
-md5 gcc-8.3.0.tar.xz 65b210b4bfe7e060051f799e0f994896
-sha1 gcc-8.3.0.tar.xz c27f4499dd263fe4fb01bcc5565917f3698583b2
-sha256 gcc-8.3.0.tar.xz 64baadfe6cc0f4947a84cb12d7f0dfaf45bb58b7e92461639596c21e02d97d2c
-sha512 gcc-8.3.0.tar.xz 1811337ae3add9680cec64968a2509d085b6dc5b6783fc1e8c295e3e47416196fd1a3ad8dfe7e10be2276b4f62c357659ce2902f239f60a8648548231b4b5802
-md5 gcc-8.3.0.tar.gz 9972f8c24c02ebcb5a342c1b30de69ff
-sha1 gcc-8.3.0.tar.gz f9e58b8aedd77eacc39d45a97ef7692cd59372bf
-sha256 gcc-8.3.0.tar.gz ea71adc1c3d86330874b8df19611424b143308f0d6612d542472600532c96d2d
-sha512 gcc-8.3.0.tar.gz c0e6c3b6de8e40f1f078583bec0d9c0237fbcfd5c73cebe3c188aee1fd702cabc5f2bd2a3b05b4dfd8336cc214d6158c8ad885fe412fc193a7cca4e519ba7ab3
diff --git a/packages/gcc/7.4.0/0000-libtool-leave-framework-alone.patch b/packages/gcc/8.4.0/8.3.0/0000-libtool-leave-framework-alone.patch
index 1a86e41..1a86e41 100644
--- a/packages/gcc/7.4.0/0000-libtool-leave-framework-alone.patch
+++ b/packages/gcc/8.4.0/8.3.0/0000-libtool-leave-framework-alone.patch
diff --git a/packages/gcc/7.4.0/0001-uclibc-conf.patch b/packages/gcc/8.4.0/8.3.0/0001-uclibc-conf.patch
index aef750a..aef750a 100644
--- a/packages/gcc/7.4.0/0001-uclibc-conf.patch
+++ b/packages/gcc/8.4.0/8.3.0/0001-uclibc-conf.patch
diff --git a/packages/gcc/8.3.0/0002-gcc-plugin-Win-Dont-need-undefined-extern-var-refs-nor-fpic.patch b/packages/gcc/8.4.0/8.3.0/0002-gcc-plugin-Win-Dont-need-undefined-extern-var-refs-nor-fpic.patch
index 20a88df..20a88df 100644
--- a/packages/gcc/8.3.0/0002-gcc-plugin-Win-Dont-need-undefined-extern-var-refs-nor-fpic.patch
+++ b/packages/gcc/8.4.0/8.3.0/0002-gcc-plugin-Win-Dont-need-undefined-extern-var-refs-nor-fpic.patch
diff --git a/packages/gcc/7.4.0/0003-gcc-plugin-POSIX-include-sys-select-h.patch b/packages/gcc/8.4.0/8.3.0/0003-gcc-plugin-POSIX-include-sys-select-h.patch
index 5f9a07a..5f9a07a 100644
--- a/packages/gcc/7.4.0/0003-gcc-plugin-POSIX-include-sys-select-h.patch
+++ b/packages/gcc/8.4.0/8.3.0/0003-gcc-plugin-POSIX-include-sys-select-h.patch
diff --git a/packages/gcc/7.4.0/0004-arm-softfloat-libgcc.patch b/packages/gcc/8.4.0/8.3.0/0004-arm-softfloat-libgcc.patch
index d980036..d980036 100644
--- a/packages/gcc/7.4.0/0004-arm-softfloat-libgcc.patch
+++ b/packages/gcc/8.4.0/8.3.0/0004-arm-softfloat-libgcc.patch
diff --git a/packages/gcc/8.3.0/0005-fix-m68k-uclinux.patch b/packages/gcc/8.4.0/8.3.0/0005-fix-m68k-uclinux.patch
index 02b53bd..02b53bd 100644
--- a/packages/gcc/8.3.0/0005-fix-m68k-uclinux.patch
+++ b/packages/gcc/8.4.0/8.3.0/0005-fix-m68k-uclinux.patch
diff --git a/packages/gcc/8.3.0/0006-libgfortran-missing-include.patch b/packages/gcc/8.4.0/8.3.0/0006-libgfortran-missing-include.patch
index 6e2e4e4..6e2e4e4 100644
--- a/packages/gcc/8.3.0/0006-libgfortran-missing-include.patch
+++ b/packages/gcc/8.4.0/8.3.0/0006-libgfortran-missing-include.patch
diff --git a/packages/gcc/8.3.0/0007-nios2-bad-multilib-default.patch b/packages/gcc/8.4.0/8.3.0/0007-nios2-bad-multilib-default.patch
index 4acc491..4acc491 100644
--- a/packages/gcc/8.3.0/0007-nios2-bad-multilib-default.patch
+++ b/packages/gcc/8.4.0/8.3.0/0007-nios2-bad-multilib-default.patch
diff --git a/packages/gcc/8.3.0/0008-libgcc-disable-split-stack-nothreads.patch b/packages/gcc/8.4.0/8.3.0/0008-libgcc-disable-split-stack-nothreads.patch
index df91a9f..df91a9f 100644
--- a/packages/gcc/8.3.0/0008-libgcc-disable-split-stack-nothreads.patch
+++ b/packages/gcc/8.4.0/8.3.0/0008-libgcc-disable-split-stack-nothreads.patch
diff --git a/packages/gcc/8.3.0/0009-bionic-ndk.patch b/packages/gcc/8.4.0/8.3.0/0009-bionic-ndk.patch
index 474dd8c..474dd8c 100644
--- a/packages/gcc/8.3.0/0009-bionic-ndk.patch
+++ b/packages/gcc/8.4.0/8.3.0/0009-bionic-ndk.patch
diff --git a/packages/gcc/8.3.0/0010-crystax.patch b/packages/gcc/8.4.0/8.3.0/0010-crystax.patch
index 0e3e95c..0e3e95c 100644
--- a/packages/gcc/8.3.0/0010-crystax.patch
+++ b/packages/gcc/8.4.0/8.3.0/0010-crystax.patch
diff --git a/packages/gcc/8.3.0/0011-crystax.patch b/packages/gcc/8.4.0/8.3.0/0011-crystax.patch
index f1f9eb1..f1f9eb1 100644
--- a/packages/gcc/8.3.0/0011-crystax.patch
+++ b/packages/gcc/8.4.0/8.3.0/0011-crystax.patch
diff --git a/packages/gcc/8.3.0/0012-crystax.patch b/packages/gcc/8.4.0/8.3.0/0012-crystax.patch
index 2bf6cc7..2bf6cc7 100644
--- a/packages/gcc/8.3.0/0012-crystax.patch
+++ b/packages/gcc/8.4.0/8.3.0/0012-crystax.patch
diff --git a/packages/gcc/8.3.0/0013-crystax.patch b/packages/gcc/8.4.0/8.3.0/0013-crystax.patch
index 3454df0..3454df0 100644
--- a/packages/gcc/8.3.0/0013-crystax.patch
+++ b/packages/gcc/8.4.0/8.3.0/0013-crystax.patch
diff --git a/packages/gcc/8.3.0/0014-crystax.patch b/packages/gcc/8.4.0/8.3.0/0014-crystax.patch
index 8f2eb43..8f2eb43 100644
--- a/packages/gcc/8.3.0/0014-crystax.patch
+++ b/packages/gcc/8.4.0/8.3.0/0014-crystax.patch
diff --git a/packages/gcc/8.3.0/0015-crystax.patch b/packages/gcc/8.4.0/8.3.0/0015-crystax.patch
index 2424d2b..2424d2b 100644
--- a/packages/gcc/8.3.0/0015-crystax.patch
+++ b/packages/gcc/8.4.0/8.3.0/0015-crystax.patch
diff --git a/packages/gcc/8.3.0/0016-crystax.patch b/packages/gcc/8.4.0/8.3.0/0016-crystax.patch
index 8c21a1c..8c21a1c 100644
--- a/packages/gcc/8.3.0/0016-crystax.patch
+++ b/packages/gcc/8.4.0/8.3.0/0016-crystax.patch
diff --git a/packages/gcc/8.3.0/0017-crystax.patch b/packages/gcc/8.4.0/8.3.0/0017-crystax.patch
index ccb81fd..ccb81fd 100644
--- a/packages/gcc/8.3.0/0017-crystax.patch
+++ b/packages/gcc/8.4.0/8.3.0/0017-crystax.patch
diff --git a/packages/gcc/8.3.0/0018-ARC-Add-multilib-support-for-linux-targets.patch b/packages/gcc/8.4.0/8.3.0/0018-ARC-Add-multilib-support-for-linux-targets.patch
index 6c0ff27..6c0ff27 100644
--- a/packages/gcc/8.3.0/0018-ARC-Add-multilib-support-for-linux-targets.patch
+++ b/packages/gcc/8.4.0/8.3.0/0018-ARC-Add-multilib-support-for-linux-targets.patch
diff --git a/packages/gcc/8.3.0/0019-isl-0.20.patch b/packages/gcc/8.4.0/8.3.0/0019-isl-0.20.patch
index 3e14966..3e14966 100644
--- a/packages/gcc/8.3.0/0019-isl-0.20.patch
+++ b/packages/gcc/8.4.0/8.3.0/0019-isl-0.20.patch
diff --git a/packages/gcc/8.3.0/0020-ARM-fix-cmse.patch b/packages/gcc/8.4.0/8.3.0/0020-ARM-fix-cmse.patch
index cf2d243..cf2d243 100644
--- a/packages/gcc/8.3.0/0020-ARM-fix-cmse.patch
+++ b/packages/gcc/8.4.0/8.3.0/0020-ARM-fix-cmse.patch
diff --git a/packages/gcc/8.3.0/0021-arm-Make-arm_cmse.h-C99-compatible.patch b/packages/gcc/8.4.0/8.3.0/0021-arm-Make-arm_cmse.h-C99-compatible.patch
index afdc1a5..afdc1a5 100644
--- a/packages/gcc/8.3.0/0021-arm-Make-arm_cmse.h-C99-compatible.patch
+++ b/packages/gcc/8.4.0/8.3.0/0021-arm-Make-arm_cmse.h-C99-compatible.patch
diff --git a/packages/gcc/8.3.0/0022-ARC-Update-fma-expansions.patch b/packages/gcc/8.4.0/8.3.0/0022-ARC-Update-fma-expansions.patch
index c2680d5..c2680d5 100644
--- a/packages/gcc/8.3.0/0022-ARC-Update-fma-expansions.patch
+++ b/packages/gcc/8.4.0/8.3.0/0022-ARC-Update-fma-expansions.patch
diff --git a/packages/gcc/8.4.0/chksum b/packages/gcc/8.4.0/chksum
new file mode 100644
index 0000000..566ffd7
--- /dev/null
+++ b/packages/gcc/8.4.0/chksum
@@ -0,0 +1,8 @@
+md5 gcc-8.4.0.tar.xz bb815a8e3b7be43c4a26fa89dbbd9795
+sha1 gcc-8.4.0.tar.xz 00ddb177b04caffd40f7af0175d5b3c8e5442545
+sha256 gcc-8.4.0.tar.xz e30a6e52d10e1f27ed55104ad233c30bd1e99cfb5ff98ab022dc941edd1b2dd4
+sha512 gcc-8.4.0.tar.xz 6de904f552a02de33b11ef52312bb664396efd7e1ce3bbe37bfad5ef617f133095b3767b4804bc7fe78df335cb53bc83f1ac055baed40979ce4c2c3e46b70280
+md5 gcc-8.4.0.tar.gz 732a4fd69c36c0a12ee2b43368ccf3c9
+sha1 gcc-8.4.0.tar.gz 4151dfa99d390594c21a68ead04aabc259515517
+sha256 gcc-8.4.0.tar.gz 41e8b145832fc0b2b34c798ed25fb54a881b0cee4cd581b77c7dc92722c116a8
+sha512 gcc-8.4.0.tar.gz a0340bb83fb0ac0d3f7e0bcd06f6d5aa21e464ef319ab057cfacff036aa1f0d53e73a8b0ec2a00fd5eb1ea897401ffb510f7ac315bb5f5c88a6ae60497d921c0
diff --git a/packages/gcc/7.4.0/version.desc b/packages/gcc/8.4.0/version.desc
index e69de29..e69de29 100644
--- a/packages/gcc/7.4.0/version.desc
+++ b/packages/gcc/8.4.0/version.desc
diff --git a/packages/gcc/9.2.0/0000-libtool-leave-framework-alone.patch b/packages/gcc/9.2.0/0000-libtool-leave-framework-alone.patch
new file mode 100644
index 0000000..b5804ea
--- /dev/null
+++ b/packages/gcc/9.2.0/0000-libtool-leave-framework-alone.patch
@@ -0,0 +1,18 @@
+---
+ libtool-ldflags | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/libtool-ldflags
++++ b/libtool-ldflags
+@@ -36,6 +36,11 @@ prev_arg=
+ for arg
+ do
+ case $arg in
++ -framework)
++ # libtool handles this option. It should not be prefixed with
++ # -Xcompiler, as that would split it from the argument that
++ # follows.
++ ;;
+ -f*|--*|-static-lib*|-shared-lib*|-B*)
+ # Libtool does not ascribe any special meaning options
+ # that begin with -f or with a double-dash. So, it will
diff --git a/packages/gcc/9.2.0/0001-uclibc-conf.patch b/packages/gcc/9.2.0/0001-uclibc-conf.patch
new file mode 100644
index 0000000..a9ae872
--- /dev/null
+++ b/packages/gcc/9.2.0/0001-uclibc-conf.patch
@@ -0,0 +1,17 @@
+---
+ contrib/regression/objs-gcc.sh | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/contrib/regression/objs-gcc.sh
++++ b/contrib/regression/objs-gcc.sh
+@@ -106,6 +106,10 @@ if [ $H_REAL_TARGET = $H_REAL_HOST -a $H
+ then
+ make all-gdb all-dejagnu all-ld || exit 1
+ make install-gdb install-dejagnu install-ld || exit 1
++elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
++ then
++ make all-gdb all-dejagnu all-ld || exit 1
++ make install-gdb install-dejagnu install-ld || exit 1
+ elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
+ make bootstrap || exit 1
+ make install || exit 1
diff --git a/packages/gcc/9.2.0/0002-gcc-plugin-Win-Dont-need-undefined-extern-var-refs-nor-fpic.patch b/packages/gcc/9.2.0/0002-gcc-plugin-Win-Dont-need-undefined-extern-var-refs-nor-fpic.patch
new file mode 100644
index 0000000..e755998
--- /dev/null
+++ b/packages/gcc/9.2.0/0002-gcc-plugin-Win-Dont-need-undefined-extern-var-refs-nor-fpic.patch
@@ -0,0 +1,163 @@
+---
+ config/gcc-plugin.m4 | 18 +++++++++++++-----
+ gcc/configure | 22 +++++++++++++++-------
+ libcc1/configure | 22 +++++++++++++++-------
+ 3 files changed, 43 insertions(+), 19 deletions(-)
+
+--- a/config/gcc-plugin.m4
++++ b/config/gcc-plugin.m4
+@@ -21,6 +21,9 @@ AC_DEFUN([GCC_ENABLE_PLUGINS],
+ pluginlibs=
+ plugin_check=yes
+
++ PICFLAG="-fPIC"
++ UNDEFINEDPREAMBLE="extern int X;"
++ UNDEFINEDCODE="return X == 0;"
+ case "${host}" in
+ *-*-mingw*)
+ # Since plugin support under MinGW is not as straightforward as on
+@@ -43,6 +46,11 @@ AC_DEFUN([GCC_ENABLE_PLUGINS],
+ export_sym_check=
+ fi
+ ;;
++ *-*-mingw*|*-*-cygwin*|*-*-msys*)
++ PICFLAG=""
++ UNDEFINEDPREAMBLE=""
++ UNDEFINEDCODE=""
++ ;;
+ *)
+ if test x$build = x$host; then
+ export_sym_check="objdump${exeext} -T"
+@@ -94,17 +102,17 @@ AC_DEFUN([GCC_ENABLE_PLUGINS],
+ case "${host}" in
+ *-*-darwin*)
+ CFLAGS=`echo $CFLAGS | sed s/-mdynamic-no-pic//g`
+- CFLAGS="$CFLAGS -fPIC"
++ CFLAGS="$CFLAGS ${PICFLAG}"
+ LDFLAGS="$LDFLAGS -shared -undefined dynamic_lookup"
+ ;;
+ *)
+- CFLAGS="$CFLAGS -fPIC"
+- LDFLAGS="$LDFLAGS -fPIC -shared"
++ CFLAGS="$CFLAGS ${PICFLAG}"
++ LDFLAGS="$LDFLAGS ${PICFLAG} -shared"
+ ;;
+ esac
+- AC_MSG_CHECKING([for -fPIC -shared])
++ AC_MSG_CHECKING([for ${PICFLAG} -shared])
+ AC_TRY_LINK(
+- [extern int X;],[return X == 0;],
++ [${UNDEFINEDPREAMBLE}],[${UNDEFINEDCODE}],
+ [AC_MSG_RESULT([yes]); have_pic_shared=yes],
+ [AC_MSG_RESULT([no]); have_pic_shared=no])
+ if test x"$have_pic_shared" != x"yes" -o x"$ac_cv_search_dlopen" = x"no"; then
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -29858,6 +29858,9 @@ fi
+ pluginlibs=
+ plugin_check=yes
+
++ PICFLAG="-fPIC"
++ UNDEFINEDPREAMBLE="extern int X;"
++ UNDEFINEDCODE="return X == 0;"
+ case "${host}" in
+ *-*-mingw*)
+ # Since plugin support under MinGW is not as straightforward as on
+@@ -29880,6 +29883,11 @@ fi
+ export_sym_check=
+ fi
+ ;;
++ *-*-mingw*|*-*-cygwin*|*-*-msys*)
++ PICFLAG=""
++ UNDEFINEDPREAMBLE=""
++ UNDEFINEDCODE=""
++ ;;
+ *)
+ if test x$build = x$host; then
+ export_sym_check="objdump${exeext} -T"
+@@ -29992,23 +30000,23 @@ fi
+ case "${host}" in
+ *-*-darwin*)
+ CFLAGS=`echo $CFLAGS | sed s/-mdynamic-no-pic//g`
+- CFLAGS="$CFLAGS -fPIC"
++ CFLAGS="$CFLAGS ${PICFLAG}"
+ LDFLAGS="$LDFLAGS -shared -undefined dynamic_lookup"
+ ;;
+ *)
+- CFLAGS="$CFLAGS -fPIC"
+- LDFLAGS="$LDFLAGS -fPIC -shared"
++ CFLAGS="$CFLAGS ${PICFLAG}"
++ LDFLAGS="$LDFLAGS ${PICFLAG} -shared"
+ ;;
+ esac
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fPIC -shared" >&5
+-$as_echo_n "checking for -fPIC -shared... " >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${PICFLAG} -shared" >&5
++$as_echo_n "checking for ${PICFLAG} -shared... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-extern int X;
++${UNDEFINEDPREAMBLE}
+ int
+ main ()
+ {
+-return X == 0;
++${UNDEFINEDCODE}
+ ;
+ return 0;
+ }
+--- a/libcc1/configure
++++ b/libcc1/configure
+@@ -14785,6 +14785,9 @@ fi
+ pluginlibs=
+ plugin_check=yes
+
++ PICFLAG="-fPIC"
++ UNDEFINEDPREAMBLE="extern int X;"
++ UNDEFINEDCODE="return X == 0;"
+ case "${host}" in
+ *-*-mingw*)
+ # Since plugin support under MinGW is not as straightforward as on
+@@ -14807,6 +14810,11 @@ fi
+ export_sym_check=
+ fi
+ ;;
++ *-*-mingw*|*-*-cygwin*|*-*-msys*)
++ PICFLAG=""
++ UNDEFINEDPREAMBLE=""
++ UNDEFINEDCODE=""
++ ;;
+ *)
+ if test x$build = x$host; then
+ export_sym_check="objdump${exeext} -T"
+@@ -14919,23 +14927,23 @@ fi
+ case "${host}" in
+ *-*-darwin*)
+ CFLAGS=`echo $CFLAGS | sed s/-mdynamic-no-pic//g`
+- CFLAGS="$CFLAGS -fPIC"
++ CFLAGS="$CFLAGS ${PICFLAG}"
+ LDFLAGS="$LDFLAGS -shared -undefined dynamic_lookup"
+ ;;
+ *)
+- CFLAGS="$CFLAGS -fPIC"
+- LDFLAGS="$LDFLAGS -fPIC -shared"
++ CFLAGS="$CFLAGS ${PICFLAG}"
++ LDFLAGS="$LDFLAGS ${PICFLAG} -shared"
+ ;;
+ esac
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fPIC -shared" >&5
+-$as_echo_n "checking for -fPIC -shared... " >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${PICFLAG} -shared" >&5
++$as_echo_n "checking for ${PICFLAG} -shared... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-extern int X;
++${UNDEFINEDPREAMBLE}
+ int
+ main ()
+ {
+-return X == 0;
++${UNDEFINEDCODE}
+ ;
+ return 0;
+ }
diff --git a/packages/gcc/9.2.0/0003-gcc-plugin-POSIX-include-sys-select-h.patch b/packages/gcc/9.2.0/0003-gcc-plugin-POSIX-include-sys-select-h.patch
new file mode 100644
index 0000000..3040e23
--- /dev/null
+++ b/packages/gcc/9.2.0/0003-gcc-plugin-POSIX-include-sys-select-h.patch
@@ -0,0 +1,14 @@
+---
+ libcc1/connection.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/libcc1/connection.cc
++++ b/libcc1/connection.cc
+@@ -21,6 +21,7 @@ along with GCC; see the file COPYING3.
+ #include <string>
+ #include <unistd.h>
+ #include <sys/types.h>
++#include <sys/select.h>
+ #include <string.h>
+ #include <errno.h>
+ #include "marshall.hh"
diff --git a/packages/gcc/9.2.0/0004-arm-softfloat-libgcc.patch b/packages/gcc/9.2.0/0004-arm-softfloat-libgcc.patch
new file mode 100644
index 0000000..d980036
--- /dev/null
+++ b/packages/gcc/9.2.0/0004-arm-softfloat-libgcc.patch
@@ -0,0 +1,31 @@
+---
+ gcc/config/arm/linux-elf.h | 2 +-
+ libgcc/config/arm/t-linux | 7 ++++++-
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+--- a/gcc/config/arm/linux-elf.h
++++ b/gcc/config/arm/linux-elf.h
+@@ -58,7 +58,7 @@
+ %{shared:-lc} \
+ %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
+
+-#define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc"
++#define LIBGCC_SPEC "-lgcc"
+
+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+
+--- a/libgcc/config/arm/t-linux
++++ b/libgcc/config/arm/t-linux
+@@ -1,6 +1,11 @@
+ LIB1ASMSRC = arm/lib1funcs.S
+ LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \
+- _ctzsi2 _arm_addsubdf3 _arm_addsubsf3
++ _ctzsi2 _arm_addsubdf3 _arm_addsubsf3 \
++ _arm_addsubdf3 _arm_addsubsf3 \
++ _arm_negdf2 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \
++ _arm_fixdfsi _arm_fixunsdfsi _arm_truncdfsf2 \
++ _arm_negsf2 _arm_muldivsf3 _arm_cmpsf2 _arm_unordsf2 \
++ _arm_fixsfsi _arm_fixunssfsi
+
+ # Just for these, we omit the frame pointer since it makes such a big
+ # difference.
diff --git a/packages/gcc/9.2.0/0005-fix-m68k-uclinux.patch b/packages/gcc/9.2.0/0005-fix-m68k-uclinux.patch
new file mode 100644
index 0000000..62bea0e
--- /dev/null
+++ b/packages/gcc/9.2.0/0005-fix-m68k-uclinux.patch
@@ -0,0 +1,21 @@
+avoids internal compiler error while compiling linux-atomic.c
+See here:
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53833
+
+Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
+
+---
+ libgcc/config.host | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/libgcc/config.host
++++ b/libgcc/config.host
+@@ -875,7 +875,7 @@ m68k*-*-netbsdelf*)
+ m68k*-*-openbsd*)
+ ;;
+ m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux with uClibc
+- tmake_file="$tmake_file m68k/t-floatlib m68k/t-linux"
++ tmake_file="$tmake_file m68k/t-floatlib"
+ md_unwind_header=m68k/linux-unwind.h
+ ;;
+ m68k-*-linux*) # Motorola m68k's running GNU/Linux
diff --git a/packages/gcc/9.2.0/0006-libgfortran-missing-include.patch b/packages/gcc/9.2.0/0006-libgfortran-missing-include.patch
new file mode 100644
index 0000000..f93524b
--- /dev/null
+++ b/packages/gcc/9.2.0/0006-libgfortran-missing-include.patch
@@ -0,0 +1,14 @@
+---
+ libgfortran/io/close.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/libgfortran/io/close.c
++++ b/libgfortran/io/close.c
+@@ -29,6 +29,7 @@ see the files COPYING3 and COPYING.RUNTI
+ #if !HAVE_UNLINK_OPEN_FILE
+ #include <string.h>
+ #endif
++#include <stdlib.h>
+
+ typedef enum
+ { CLOSE_DELETE, CLOSE_KEEP, CLOSE_UNSPECIFIED }
diff --git a/packages/gcc/9.2.0/0007-nios2-bad-multilib-default.patch b/packages/gcc/9.2.0/0007-nios2-bad-multilib-default.patch
new file mode 100644
index 0000000..4acc491
--- /dev/null
+++ b/packages/gcc/9.2.0/0007-nios2-bad-multilib-default.patch
@@ -0,0 +1,31 @@
+---
+ gcc/config/nios2/nios2.h | 4 ++--
+ gcc/config/nios2/t-nios2 | 3 +--
+ 2 files changed, 3 insertions(+), 4 deletions(-)
+
+--- a/gcc/config/nios2/nios2.h
++++ b/gcc/config/nios2/nios2.h
+@@ -63,11 +63,11 @@
+ #if TARGET_ENDIAN_DEFAULT == 0
+ # define ASM_SPEC "%{!meb:-EL} %{meb:-EB} %{march=*:-march=%*}"
+ # define LINK_SPEC_ENDIAN "%{!meb:-EL} %{meb:-EB}"
+-# define MULTILIB_DEFAULTS { "EL" }
++# define MULTILIB_DEFAULTS { "mel" }
+ #else
+ # define ASM_SPEC "%{!mel:-EB} %{mel:-EL} %{march=*:-march=%*}"
+ # define LINK_SPEC_ENDIAN "%{!mel:-EB} %{mel:-EL}"
+-# define MULTILIB_DEFAULTS { "EB" }
++# define MULTILIB_DEFAULTS { "meb" }
+ #endif
+
+ #define LINK_SPEC LINK_SPEC_ENDIAN \
+--- a/gcc/config/nios2/t-nios2
++++ b/gcc/config/nios2/t-nios2
+@@ -22,6 +22,5 @@
+ # MULTILIB_DIRNAMES = nomul mulx fpu-60-1 fpu-60-2
+ # MULTILIB_EXCEPTIONS =
+
+-# MULTILIB_OPTIONS += EL/EB
++# MULTILIB_OPTIONS += mel/meb
+ # MULTILIB_DIRNAMES += le be
+-# MULTILIB_MATCHES += EL=mel EB=meb
diff --git a/packages/gcc/9.2.0/0008-libgcc-disable-split-stack-nothreads.patch b/packages/gcc/9.2.0/0008-libgcc-disable-split-stack-nothreads.patch
new file mode 100644
index 0000000..df91a9f
--- /dev/null
+++ b/packages/gcc/9.2.0/0008-libgcc-disable-split-stack-nothreads.patch
@@ -0,0 +1,17 @@
+disable split-stack for non-thread builds
+
+Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
+
+---
+ libgcc/config/t-stack | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/libgcc/config/t-stack
++++ b/libgcc/config/t-stack
+@@ -1,4 +1,6 @@
+ # Makefile fragment to provide generic support for -fsplit-stack.
+ # This should be used in config.host for any host which supports
+ # -fsplit-stack.
++ifeq ($(enable_threads),yes)
+ LIB2ADD_ST += $(srcdir)/generic-morestack.c $(srcdir)/generic-morestack-thread.c
++endif
diff --git a/packages/gcc/9.2.0/0009-bionic-ndk.patch b/packages/gcc/9.2.0/0009-bionic-ndk.patch
new file mode 100644
index 0000000..090172d
--- /dev/null
+++ b/packages/gcc/9.2.0/0009-bionic-ndk.patch
@@ -0,0 +1,60 @@
+commit d38d37bdfe24b7ce1bdcb55642fb6b904718e68f
+Author: Howard Chu <hyc@symas.com>
+Date: Tue Apr 25 19:02:18 2017 -0700
+
+ Fix ctype for newer NDK headers
+
+---
+ libstdc++-v3/config/os/bionic/ctype_base.h | 34 +++++++++++++++++++----------
+ 1 file changed, 23 insertions(+), 11 deletions(-)
+
+--- a/libstdc++-v3/config/os/bionic/ctype_base.h
++++ b/libstdc++-v3/config/os/bionic/ctype_base.h
+@@ -28,6 +28,18 @@
+
+ // Information as gleaned from /usr/include/ctype.h
+
++// _CTYPE prefix was added in NDK r14 unified headers
++#ifndef _CTYPE_U
++#define _CTYPE_U _U
++#define _CTYPE_L _L
++#define _CTYPE_D _N
++#define _CTYPE_S _S
++#define _CTYPE_P _P
++#define _CTYPE_C _C
++#define _CTYPE_X _X
++#define _CTYPE_B _B
++#endif
++
+ namespace std _GLIBCXX_VISIBILITY(default)
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+@@ -41,17 +53,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ // NB: Offsets into ctype<char>::_M_table force a particular size
+ // on the mask type. Because of this, we don't use an enum.
+ typedef char mask;
+- static const mask upper = _U;
+- static const mask lower = _L;
+- static const mask alpha = _U | _L;
+- static const mask digit = _N;
+- static const mask xdigit = _X | _N;
+- static const mask space = _S;
+- static const mask print = _P | _U | _L | _N | _B;
+- static const mask graph = _P | _U | _L | _N;
+- static const mask cntrl = _C;
+- static const mask punct = _P;
+- static const mask alnum = _U | _L | _N;
++ static const mask upper = _CTYPE_U;
++ static const mask lower = _CTYPE_L;
++ static const mask alpha = _CTYPE_U | _CTYPE_L;
++ static const mask digit = _CTYPE_D;
++ static const mask xdigit = _CTYPE_X | _CTYPE_D;
++ static const mask space = _CTYPE_S;
++ static const mask print = _CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_D | _CTYPE_B;
++ static const mask graph = _CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_D;
++ static const mask cntrl = _CTYPE_C;
++ static const mask punct = _CTYPE_P;
++ static const mask alnum = _CTYPE_U | _CTYPE_L | _CTYPE_D;
+ #if __cplusplus >= 201103L
+ static const mask blank = space;
+ #endif
diff --git a/packages/gcc/9.2.0/0010-crystax.patch b/packages/gcc/9.2.0/0010-crystax.patch
new file mode 100644
index 0000000..9d66c74
--- /dev/null
+++ b/packages/gcc/9.2.0/0010-crystax.patch
@@ -0,0 +1,527 @@
+commit 080803512c8f6f87c2f1f711170d54033144d628
+Author: Dmitry Moskalchuk <dm@crystax.net>
+Date: Wed Jul 29 11:28:29 2015 +0300
+
+ [android] Apply Android-related modifications
+
+ Signed-off-by: Dmitry Moskalchuk <dm@crystax.net>
+
+[Edited: keep libstdc++, drop libcrystax-related modifications]
+---
+ gcc/config.gcc | 17 +++++++-
+ gcc/config/aarch64/aarch64-linux-android.h | 59 +++++++++++++++++++++++++++++
+ gcc/config/aarch64/aarch64-linux.h | 9 +++-
+ gcc/config/arm/arm.h | 3 -
+ gcc/config/arm/arm.md | 2
+ gcc/config/arm/arm.opt | 4 +
+ gcc/config/arm/elf.h | 9 ++--
+ gcc/config/arm/linux-eabi.h | 7 ++-
+ gcc/config/i386/gnu-user.h | 7 ++-
+ gcc/config/i386/gnu-user64.h | 5 ++
+ gcc/config/i386/linux-common.h | 8 +++
+ gcc/config/linux-android.h | 13 +++---
+ gcc/config/mips/android.h | 49 ++++++++++++++++++++++++
+ gcc/config/mips/gnu-user.h | 6 +-
+ gcc/config/mips/linux-common.h | 2
+ gcc/config/mips/t-linux-android | 3 +
+ gcc/config/mips/t-linux-android64 | 4 +
+ libgcc/gthr-posix.h | 13 ++++++
+ libstdc++-v3/configure | 12 +++++
+ libstdc++-v3/include/bits/locale_facets.h | 18 +++++++-
+ libstdc++-v3/libsupc++/guard.cc | 5 ++
+ 21 files changed, 235 insertions(+), 20 deletions(-)
+ create mode 100644 gcc/config/aarch64/aarch64-linux-android.h
+ create mode 100644 gcc/config/mips/android.h
+ create mode 100644 gcc/config/mips/t-linux-android
+ create mode 100644 gcc/config/mips/t-linux-android64
+
+--- a/gcc/config.gcc
++++ b/gcc/config.gcc
+@@ -1022,14 +1022,18 @@ aarch64*-*-freebsd*)
+ tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
+ ;;
+ aarch64*-*-linux*)
+- tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h"
++ tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h"
+ tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-linux.h"
++ extra_options="${extra_options} linux-android.opt"
+ tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-linux"
+ tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
+ case $target in
+ aarch64_be-*)
+ tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
+ ;;
++ aarch64*-*-linux-android*)
++ tm_file="${tm_file} aarch64/aarch64-linux-android.h"
++ ;;
+ esac
+ aarch64_multilibs="${with_multilib_list}"
+ if test "$aarch64_multilibs" = "default"; then
+@@ -2272,6 +2276,17 @@ mips*-*-linux*) # Linux MIPS, either
+ tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h mips/linux-common.h"
+ extra_options="${extra_options} linux-android.opt"
+ case ${target} in
++ mips64*android*)
++ default_mips_arch=mips64r6
++ default_mips_abi=64
++ tm_file="${tm_file} mips/android.h"
++ tmake_file="${tmake_file} mips/t-linux-android64"
++ ;;
++ mips*android*)
++ default_mips_arch=mips32
++ tm_file="${tm_file} mips/android.h"
++ tmake_file="$tmake_file mips/t-linux-android"
++ ;;
+ mipsisa32r6*)
+ default_mips_arch=mips32r6
+ ;;
+--- /dev/null
++++ b/gcc/config/aarch64/aarch64-linux-android.h
+@@ -0,0 +1,59 @@
++/* Machine description for AArch64 architecture.
++ Copyright (C) 2014 Free Software Foundation, Inc.
++
++ This file is part of GCC.
++
++ GCC is free software; you can redistribute it and/or modify it
++ under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 3, or (at your option)
++ any later version.
++
++ GCC 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
++ General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with GCC; see the file COPYING3. If not see
++ <http://www.gnu.org/licenses/>. */
++
++#ifndef GCC_AARCH64_LINUX_ANDROID_H
++#define GCC_AARCH64_LINUX_ANDROID_H
++
++
++#undef TARGET_OS_CPP_BUILTINS
++#define TARGET_OS_CPP_BUILTINS() \
++ do \
++ { \
++ GNU_USER_TARGET_OS_CPP_BUILTINS(); \
++ ANDROID_TARGET_OS_CPP_BUILTINS(); \
++ } \
++ while (0)
++
++#undef LINK_SPEC
++#define LINK_SPEC \
++ LINUX_OR_ANDROID_LD (LINUX_TARGET_LINK_SPEC, \
++ LINUX_TARGET_LINK_SPEC " " ANDROID_LINK_SPEC)
++
++#undef CC1_SPEC
++#define CC1_SPEC \
++ LINUX_OR_ANDROID_CC (GNU_USER_TARGET_CC1_SPEC, \
++ GNU_USER_TARGET_CC1_SPEC " " ANDROID_CC1_SPEC("-fpic"))
++
++#define CC1PLUS_SPEC \
++ LINUX_OR_ANDROID_CC ("", ANDROID_CC1PLUS_SPEC)
++
++#undef LIB_SPEC
++#define LIB_SPEC \
++ LINUX_OR_ANDROID_LD (GNU_USER_TARGET_LIB_SPEC, \
++ GNU_USER_TARGET_NO_PTHREADS_LIB_SPEC " " ANDROID_LIB_SPEC)
++
++#undef STARTFILE_SPEC
++#define STARTFILE_SPEC \
++ LINUX_OR_ANDROID_LD (GNU_USER_TARGET_STARTFILE_SPEC, ANDROID_STARTFILE_SPEC)
++
++#undef ENDFILE_SPEC
++#define ENDFILE_SPEC \
++ LINUX_OR_ANDROID_LD (GNU_USER_TARGET_ENDFILE_SPEC, ANDROID_ENDFILE_SPEC)
++
++#endif /* GCC_AARCH64_LINUX_ANDROID_H */
+--- a/gcc/config/aarch64/aarch64-linux.h
++++ b/gcc/config/aarch64/aarch64-linux.h
+@@ -21,7 +21,14 @@
+ #ifndef GCC_AARCH64_LINUX_H
+ #define GCC_AARCH64_LINUX_H
+
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
++#ifndef RUNTIME_ROOT_PREFIX
++#define RUNTIME_ROOT_PREFIX ""
++#endif
++#define GLIBC_DYNAMIC_LINKER RUNTIME_ROOT_PREFIX "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
++#ifdef BIONIC_DYNAMIC_LINKER
++#undef BIONIC_DYNAMIC_LINKER
++#endif
++#define BIONIC_DYNAMIC_LINKER RUNTIME_ROOT_PREFIX "/system/bin/linker64"
+
+ #undef MUSL_DYNAMIC_LINKER
+ #define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
+--- a/gcc/config/arm/arm.h
++++ b/gcc/config/arm/arm.h
+@@ -1856,10 +1856,11 @@ enum arm_auto_incmodes
+
+ #define CASE_VECTOR_PC_RELATIVE (TARGET_THUMB2 \
+ || (TARGET_THUMB1 \
++ && !inline_thumb1_jump_table \
+ && (optimize_size || flag_pic)))
+
+ #define CASE_VECTOR_SHORTEN_MODE(min, max, body) \
+- (TARGET_THUMB1 \
++ (TARGET_THUMB1 && !inline_thumb1_jump_table \
+ ? (min >= 0 && max < 512 \
+ ? (ADDR_DIFF_VEC_FLAGS (body).offset_unsigned = 1, QImode) \
+ : min >= -256 && max < 256 \
+--- a/gcc/config/arm/arm.md
++++ b/gcc/config/arm/arm.md
+@@ -8894,7 +8894,7 @@
+ (match_operand:SI 2 "const_int_operand" "") ; total range
+ (match_operand:SI 3 "" "") ; table label
+ (match_operand:SI 4 "" "")] ; Out of range label
+- "(TARGET_32BIT || optimize_size || flag_pic) && !target_pure_code"
++ "(TARGET_32BIT || ((optimize_size || flag_pic) && !inline_thumb1_jump_table)) && !target_pure_code"
+ "
+ {
+ enum insn_code code;
+--- a/gcc/config/arm/arm.opt
++++ b/gcc/config/arm/arm.opt
+@@ -202,6 +202,10 @@ mthumb-interwork
+ Target Report Mask(INTERWORK)
+ Support calls between Thumb and ARM instruction sets.
+
++minline-thumb1-jumptable
++Target Report Var(inline_thumb1_jump_table)
++Inline Thumb1 Jump table code
++
+ mtls-dialect=
+ Target RejectNegative Joined Enum(tls_type) Var(target_tls_dialect) Init(TLS_GNU)
+ Specify thread local storage scheme.
+--- a/gcc/config/arm/elf.h
++++ b/gcc/config/arm/elf.h
+@@ -56,8 +56,7 @@
+ #undef SUBSUBTARGET_EXTRA_SPECS
+ #define SUBSUBTARGET_EXTRA_SPECS
+
+-#ifndef ASM_SPEC
+-#define ASM_SPEC "\
++#define DEFAULT_ASM_SPEC "\
+ %{mbig-endian:-EB} \
+ %{mlittle-endian:-EL} \
+ %(asm_cpu_spec) \
+@@ -66,6 +65,9 @@
+ %{mthumb-interwork:-mthumb-interwork} \
+ %{mfloat-abi=*} %{!mfpu=auto: %{mfpu=*}} \
+ %(subtarget_extra_asm_spec)"
++
++#ifndef ASM_SPEC
++#define ASM_SPEC DEFAULT_ASM_SPEC
+ #endif
+
+ /* The ARM uses @ are a comment character so we need to redefine
+@@ -95,7 +97,8 @@
+ the code more efficient, but for Thumb-1 it's better to put them out of
+ band unless we are generating compressed tables. */
+ #define JUMP_TABLES_IN_TEXT_SECTION \
+- ((TARGET_32BIT || (TARGET_THUMB && (optimize_size || flag_pic))) \
++ ((TARGET_32BIT || (TARGET_THUMB && !inline_thumb1_jump_table \
++ && (optimize_size || flag_pic))) \
+ && !target_pure_code)
+
+ #ifndef LINK_SPEC
+--- a/gcc/config/arm/linux-eabi.h
++++ b/gcc/config/arm/linux-eabi.h
+@@ -105,11 +105,16 @@
+ #define CC1_SPEC \
+ LINUX_OR_ANDROID_CC (GNU_USER_TARGET_CC1_SPEC " " ASAN_CC1_SPEC, \
+ GNU_USER_TARGET_CC1_SPEC " " ASAN_CC1_SPEC " " \
+- ANDROID_CC1_SPEC)
++ ANDROID_CC1_SPEC("-fpic"))
+
+ #define CC1PLUS_SPEC \
+ LINUX_OR_ANDROID_CC ("", ANDROID_CC1PLUS_SPEC)
+
++#undef ASM_SPEC
++#define ASM_SPEC \
++ LINUX_OR_ANDROID_CC (DEFAULT_ASM_SPEC, \
++ DEFAULT_ASM_SPEC " " ANDROID_ASM_SPEC)
++
+ #undef LIB_SPEC
+ #define LIB_SPEC \
+ LINUX_OR_ANDROID_LD (GNU_USER_TARGET_LIB_SPEC, \
+--- a/gcc/config/i386/gnu-user.h
++++ b/gcc/config/i386/gnu-user.h
+@@ -65,9 +65,14 @@ along with GCC; see the file COPYING3.
+ When the -shared link option is used a final link is not being
+ done. */
+
++#undef ANDROID_TARGET_CC1_SPEC
++#define ANDROID_TARGET_CC1_SPEC \
++ " -mssse3 -fno-short-enums " \
++
+ #undef ASM_SPEC
+ #define ASM_SPEC \
+- "--32 %{msse2avx:%{!mavx:-msse2avx}}"
++ "--32 %{msse2avx:%{!mavx:-msse2avx}} " \
++ LINUX_OR_ANDROID_CC ("", ANDROID_ASM_SPEC)
+
+ #undef SUBTARGET_EXTRA_SPECS
+ #define SUBTARGET_EXTRA_SPECS \
+--- a/gcc/config/i386/gnu-user64.h
++++ b/gcc/config/i386/gnu-user64.h
+@@ -46,6 +46,11 @@ see the files COPYING3 and COPYING.RUNTI
+ #define SPEC_X32 "mx32"
+ #endif
+
++#undef ANDROID_TARGET_CC1_SPEC
++#define ANDROID_TARGET_CC1_SPEC \
++ "%{m32:-mssse3 -fno-short-enums}" \
++ "%{!m32:-msse4.2 -mpopcnt}"
++
+ #undef ASM_SPEC
+ #define ASM_SPEC "%{" SPEC_32 ":--32} \
+ %{" SPEC_64 ":--64} \
+--- a/gcc/config/i386/linux-common.h
++++ b/gcc/config/i386/linux-common.h
+@@ -36,7 +36,13 @@ along with GCC; see the file COPYING3.
+ #undef CC1_SPEC
+ #define CC1_SPEC \
+ LINUX_OR_ANDROID_CC (GNU_USER_TARGET_CC1_SPEC, \
+- GNU_USER_TARGET_CC1_SPEC " " ANDROID_CC1_SPEC)
++ GNU_USER_TARGET_CC1_SPEC \
++ ANDROID_TARGET_CC1_SPEC \
++ " " \
++ ANDROID_CC1_SPEC("-fPIC"))
++
++#define CC1PLUS_SPEC \
++ LINUX_OR_ANDROID_CC ("", ANDROID_CC1PLUS_SPEC)
+
+ #undef LINK_SPEC
+ #define LINK_SPEC \
+--- a/gcc/config/linux-android.h
++++ b/gcc/config/linux-android.h
+@@ -44,15 +44,18 @@
+ "%{" NOANDROID "|tno-android-ld:" LINUX_SPEC ";:" ANDROID_SPEC "}"
+
+ #define ANDROID_LINK_SPEC \
+- "%{shared: -Bsymbolic}"
++ "%{shared: -Bsymbolic} -z noexecstack -z relro -z now"
+
+-#define ANDROID_CC1_SPEC \
++#define ANDROID_CC1_SPEC(ANDROID_PIC_DEFAULT) \
+ "%{!mglibc:%{!muclibc:%{!mbionic: -mbionic}}} " \
+- "%{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC: -fPIC}}}}"
++ "%{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC: " ANDROID_PIC_DEFAULT "}}}}"
+
+ #define ANDROID_CC1PLUS_SPEC \
+- "%{!fexceptions:%{!fno-exceptions: -fno-exceptions}} " \
+- "%{!frtti:%{!fno-rtti: -fno-rtti}}"
++ "%{!fexceptions:%{!fno-exceptions: -fexceptions}} " \
++ "%{!frtti:%{!fno-rtti: -frtti}}"
++
++#define ANDROID_ASM_SPEC \
++ "--noexecstack"
+
+ #define ANDROID_LIB_SPEC \
+ "%{!static: -ldl}"
+--- /dev/null
++++ b/gcc/config/mips/android.h
+@@ -0,0 +1,49 @@
++/* Target macros for mips*-*android* targets.
++ Copyright (C) 2014 Free Software Foundation, Inc.
++
++This file is part of GCC.
++
++GCC is free software; you can redistribute it and/or modify
++it under the terms of the GNU General Public License as published by
++the Free Software Foundation; either version 3, or (at your option)
++any later version.
++
++GCC 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 General Public License for more details.
++
++You should have received a copy of the GNU General Public License
++along with GCC; see the file COPYING3. If not see
++<http://www.gnu.org/licenses/>. */
++
++#undef DRIVER_SELF_SPECS
++#define DRIVER_SELF_SPECS \
++ /* Make sure a -mips option is present. This helps us to pick \
++ the right multilib, and also makes the later specs easier \
++ to write. */ \
++ MIPS_ISA_LEVEL_SPEC, \
++ \
++ /* Infer the default float setting from -march. */ \
++ MIPS_ARCH_FLOAT_SPEC, \
++ \
++ /* Infer the -msynci setting from -march if not explicitly set. */ \
++ MIPS_ISA_SYNCI_SPEC, \
++ \
++ /* If no ABI option is specified, infer one from the ISA level \
++ or -mgp setting. */ \
++ "%{!mabi=*: %{" MIPS_32BIT_OPTION_SPEC ": -mabi=32;: -mabi=64}}", \
++ \
++ /* If no FP ABI option is specified, infer one from the \
++ ABI/ISA level unless there is a conflicting option. */ \
++ "%{!msoft-float: %{!msingle-float: %{!mfp*: %{!mmsa: %{mabi=32: %{" \
++ MIPS_FPXX_OPTION_SPEC ": -mfpxx}}}}}}", \
++ \
++ /* If no odd-spreg option is specified, infer one from the ISA. */ \
++ "%{!modd-spreg: %{mabi=32: %{mips32r6: -mno-odd-spreg}}}", \
++ \
++ /* Base SPECs. */ \
++ BASE_DRIVER_SELF_SPECS, \
++ \
++ /* Use the standard linux specs for everything else. */ \
++ LINUX_DRIVER_SELF_SPECS
+--- a/gcc/config/mips/gnu-user.h
++++ b/gcc/config/mips/gnu-user.h
+@@ -36,6 +36,7 @@ along with GCC; see the file COPYING3.
+ /* The GNU C++ standard library requires this. */ \
+ if (c_dialect_cxx ()) \
+ builtin_define ("_GNU_SOURCE"); \
++ ANDROID_TARGET_OS_CPP_BUILTINS(); \
+ } while (0)
+
+ #undef SUBTARGET_CPP_SPEC
+@@ -71,7 +72,8 @@ along with GCC; see the file COPYING3.
+
+ #undef SUBTARGET_ASM_SPEC
+ #define SUBTARGET_ASM_SPEC \
+- "%{!mno-abicalls:%{mplt:-call_nonpic;:-KPIC}}"
++ "%{!mno-abicalls:%{mplt:-call_nonpic;:-KPIC}} " \
++ LINUX_OR_ANDROID_CC ("", ANDROID_ASM_SPEC)
+
+ /* The MIPS assembler has different syntax for .set. We set it to
+ .dummy to trap any errors. */
+@@ -120,7 +122,7 @@ extern const char *host_detect_local_cpu
+ #endif
+
+ #define LINUX_DRIVER_SELF_SPECS \
+- NO_SHARED_SPECS \
++ LINUX_OR_ANDROID_CC(NO_SHARED_SPECS, "") \
+ MARCH_MTUNE_NATIVE_SPECS, \
+ /* -mplt has no effect without -mno-shared. Simplify later \
+ specs handling by removing a redundant option. */ \
+--- a/gcc/config/mips/linux-common.h
++++ b/gcc/config/mips/linux-common.h
+@@ -38,7 +38,7 @@ along with GCC; see the file COPYING3.
+ #undef SUBTARGET_CC1_SPEC
+ #define SUBTARGET_CC1_SPEC \
+ LINUX_OR_ANDROID_CC (GNU_USER_TARGET_CC1_SPEC, \
+- GNU_USER_TARGET_CC1_SPEC " " ANDROID_CC1_SPEC)
++ GNU_USER_TARGET_CC1_SPEC " " ANDROID_CC1_SPEC("-fpic"))
+
+ #undef CC1PLUS_SPEC
+ #define CC1PLUS_SPEC \
+--- /dev/null
++++ b/gcc/config/mips/t-linux-android
+@@ -0,0 +1,3 @@
++MULTILIB_OPTIONS = mips32r2/mips32r6
++MULTILIB_DIRNAMES = mips-r2 mips-r6
++MULTILIB_OSDIRNAMES = ../libr2 ../libr6
+--- /dev/null
++++ b/gcc/config/mips/t-linux-android64
+@@ -0,0 +1,4 @@
++MULTILIB_OPTIONS = mabi=32 mips32/mips32r2/mips32r6/mips64r2/mips64r6
++MULTILIB_DIRNAMES = 32 mips-r1 mips-r2 mips-r6 mips64-r2 mips64-r6
++MULTILIB_OSDIRNAMES = ../lib ../lib ../libr2 ../libr6 ../lib64r2 ../lib64
++MULTILIB_REQUIRED = mabi=32/mips32 mabi=32/mips32r2 mabi=32/mips32r6 mips64r2 mips64r6
+--- a/libgcc/gthr-posix.h
++++ b/libgcc/gthr-posix.h
+@@ -32,6 +32,19 @@ see the files COPYING3 and COPYING.RUNTI
+ #define __GTHREADS 1
+ #define __GTHREADS_CXX0X 1
+
++/* The following should normally be in a different header file,
++ * but I couldn't find the right location. The point of the macro
++ * definition below is to prevent libsupc++ and libstdc++ to reference
++ * weak symbols in their static C++ constructors. Such code crashes
++ * when a shared object linked statically to these libraries is
++ * loaded on Android 2.1 (Eclair) and older platform releases, due
++ * to a dynamic linker bug.
++ */
++#ifdef __ANDROID__
++#undef GTHREAD_USE_WEAK
++#define GTHREAD_USE_WEAK 0
++#endif
++
+ #include <pthread.h>
+
+ #if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \
+--- a/libstdc++-v3/configure
++++ b/libstdc++-v3/configure
+@@ -78742,6 +78742,18 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
+ /* end confdefs.h. */
+ #include <sys/syscall.h>
+ int lk;
++#if !defined(SYS_gettid)
++#define SYS_gettid __NR_gettid
++#endif
++#if !defined(SYS_futex)
++#define SYS_futex __NR_futex
++#endif
++#if !defined(SYS_gettid)
++#define SYS_gettid __NR_gettid
++#endif
++#if !defined(SYS_futex)
++#define SYS_futex __NR_futex
++#endif
+ int
+ main ()
+ {
+--- a/libstdc++-v3/include/bits/locale_facets.h
++++ b/libstdc++-v3/include/bits/locale_facets.h
+@@ -47,6 +47,20 @@
+ #include <ext/numeric_traits.h>
+ #include <bits/streambuf_iterator.h>
+
++#if !__clang__ && __GNUC__ == 4 && __GNUC_MINOR__ == 9 && __i386__
++// CrystaX: for some reason, x86 gcc-4.9 makes ctype<char>::do_widen() and
++// ctype<char>::_M_widen_init() methods working wrong if optimization enabled.
++// For ctype<char>::do_widen(), values of passed arguments (__lo, __hi and __to)
++// are completely messed up and don't correspond to passed values. In case if
++// we disable optimization for those methods, things become correct so we apply
++// this workaround here for a time.
++// TODO: figure out what exactly wrong here - is it bug in GCC optimization
++// algorithm or smth else?
++#define __CRYSTAX_X86_DONT_OPTIMIZE __attribute__((optimize(0)))
++#else
++#define __CRYSTAX_X86_DONT_OPTIMIZE
++#endif
++
+ namespace std _GLIBCXX_VISIBILITY(default)
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+@@ -1104,7 +1118,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ * @return @a __hi.
+ */
+ virtual const char*
+- do_widen(const char* __lo, const char* __hi, char_type* __to) const
++ do_widen(const char* __lo, const char* __hi, char_type* __to) const __CRYSTAX_X86_DONT_OPTIMIZE
+ {
+ if (__builtin_expect(__hi != __lo, true))
+ __builtin_memcpy(__to, __lo, __hi - __lo);
+@@ -1167,7 +1181,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+ private:
+ void _M_narrow_init() const;
+- void _M_widen_init() const;
++ void _M_widen_init() const __CRYSTAX_X86_DONT_OPTIMIZE;
+ };
+
+ #ifdef _GLIBCXX_USE_WCHAR_T
+--- a/libstdc++-v3/libsupc++/guard.cc
++++ b/libstdc++-v3/libsupc++/guard.cc
+@@ -34,7 +34,12 @@
+ #if defined(__GTHREADS) && defined(__GTHREAD_HAS_COND) \
+ && (ATOMIC_INT_LOCK_FREE > 1) && defined(_GLIBCXX_HAVE_LINUX_FUTEX)
+ # include <climits>
++#if defined(__ANDROID__)
++# include <sys/syscall.h>
++# define SYS_futex __NR_futex
++#else
+ # include <syscall.h>
++#endif
+ # include <unistd.h>
+ # define _GLIBCXX_USE_FUTEX
+ # define _GLIBCXX_FUTEX_WAIT 0
diff --git a/packages/gcc/9.2.0/0011-crystax.patch b/packages/gcc/9.2.0/0011-crystax.patch
new file mode 100644
index 0000000..f1f9eb1
--- /dev/null
+++ b/packages/gcc/9.2.0/0011-crystax.patch
@@ -0,0 +1,27 @@
+commit 9f057b62caafe08c968103d39b5df82486a175c2
+Author: Dmitry Moskalchuk <dm@crystax.net>
+Date: Thu Aug 13 16:11:54 2015 +0300
+
+ [android] Add additional multilib option: mfloat-abi=hard
+
+ Signed-off-by: Dmitry Moskalchuk <dm@crystax.net>
+
+---
+ gcc/config/arm/t-linux-androideabi | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+--- a/gcc/config/arm/t-linux-androideabi
++++ b/gcc/config/arm/t-linux-androideabi
+@@ -1,8 +1,9 @@
+-MULTILIB_OPTIONS = march=armv7-a mthumb
+-MULTILIB_DIRNAMES = armv7-a thumb
+-MULTILIB_EXCEPTIONS =
++MULTILIB_OPTIONS = march=armv7-a mthumb mfloat-abi=hard
++MULTILIB_DIRNAMES = armv7-a thumb hard
++MULTILIB_EXCEPTIONS = mfloat-abi=hard* mthumb/mfloat-abi=hard*
+ MULTILIB_MATCHES =
+ MULTILIB_OSDIRNAMES =
++MULTILIB_EXTRA_OPTS = Wl,--no-warn-mismatch
+
+ # The "special" multilib can be used to build native applications for Android,
+ # as opposed to native shared libraries that are then called via JNI.
diff --git a/packages/gcc/9.2.0/0012-crystax.patch b/packages/gcc/9.2.0/0012-crystax.patch
new file mode 100644
index 0000000..7edf128
--- /dev/null
+++ b/packages/gcc/9.2.0/0012-crystax.patch
@@ -0,0 +1,278 @@
+commit 44a81ebb7698dac41ffa7acd5e0cc1578e5ab1fd
+Author: H.J. Lu <hongjiu.lu@intel.com>
+Date: Mon Apr 14 15:59:47 2014 -0700
+
+ [android] Always enable --eh-frame-hdr for static executable
+
+ See 5e6cdf76af295c9a39b695ca228cff675e8ff4ae and
+ 23e3137ee2897464b051599b85a09f130d3ad05d
+
+ Change-Id: Ibda473188e5a10f2a0592f2494ad00ad1f91e04b
+ Signed-off-by: Dmitry Moskalchuk <dm@crystax.net>
+
+---
+ gcc/config.in | 6 +++++
+ gcc/config/alpha/elf.h | 4 +++
+ gcc/config/freebsd.h | 4 +++
+ gcc/config/gnu-user.h | 4 +++
+ gcc/config/openbsd.h | 4 +++
+ gcc/config/rs6000/sysv4.h | 6 ++++-
+ gcc/config/sol2.h | 4 +++
+ gcc/configure | 36 +++++++++++++++++++++++++++++++++
+ gcc/configure.ac | 29 ++++++++++++++++++++++++++
+ gcc/testsuite/g++.dg/eh/spec3-static.C | 25 ++++++++++++++++++++++
+ libgcc/crtstuff.c | 11 ++++++----
+ 11 files changed, 128 insertions(+), 5 deletions(-)
+
+--- a/gcc/config.in
++++ b/gcc/config.in
+@@ -2197,6 +2197,12 @@
+ #endif
+
+
++/* Define if your system supports PT_GNU_EH_FRAME for static executable. */
++#ifndef USED_FOR_TARGET
++#undef USE_EH_FRAME_HDR_FOR_STATIC
++#endif
++
++
+ /* Define to 1 if the 'long long' type is wider than 'long' but still
+ efficiently supported by the host hardware. */
+ #ifndef USED_FOR_TARGET
+--- a/gcc/config/alpha/elf.h
++++ b/gcc/config/alpha/elf.h
+@@ -142,5 +142,9 @@ extern int alpha_this_gpdisp_sequence_nu
+ I imagine that other systems will catch up. In the meantime, it
+ doesn't harm to make sure that the data exists to be used later. */
+ #if defined(HAVE_LD_EH_FRAME_HDR)
++#ifdef USE_EH_FRAME_HDR_FOR_STATIC
++#define LINK_EH_SPEC "--eh-frame-hdr "
++#else
+ #define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
+ #endif
++#endif
+--- a/gcc/config/freebsd.h
++++ b/gcc/config/freebsd.h
+@@ -45,8 +45,12 @@ along with GCC; see the file COPYING3.
+ #define LIB_SPEC FBSD_LIB_SPEC
+
+ #if defined(HAVE_LD_EH_FRAME_HDR)
++#ifdef USE_EH_FRAME_HDR_FOR_STATIC
++#define LINK_EH_SPEC "--eh-frame-hdr "
++#else
+ #define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
+ #endif
++#endif
+
+ #ifdef TARGET_LIBC_PROVIDES_SSP
+ #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
+--- a/gcc/config/gnu-user.h
++++ b/gcc/config/gnu-user.h
+@@ -106,8 +106,12 @@ see the files COPYING3 and COPYING.RUNTI
+ #define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
+
+ #if defined(HAVE_LD_EH_FRAME_HDR)
++#ifdef USE_EH_FRAME_HDR_FOR_STATIC
++#define LINK_EH_SPEC "--eh-frame-hdr "
++#else
+ #define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
+ #endif
++#endif
+
+ #define GNU_USER_TARGET_LINK_GCC_C_SEQUENCE_SPEC \
+ "%{static|static-pie:--start-group} %G %{!nolibc:%L} \
+--- a/gcc/config/openbsd.h
++++ b/gcc/config/openbsd.h
+@@ -136,8 +136,12 @@ while (0)
+ #define LIB_SPEC OBSD_LIB_SPEC
+
+ #if defined(HAVE_LD_EH_FRAME_HDR)
++#ifdef USE_EH_FRAME_HDR_FOR_STATIC
++#define LINK_EH_SPEC "--eh-frame-hdr "
++#else
+ #define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
+ #endif
++#endif
+
+ #undef LIB_SPEC
+ #define LIB_SPEC OBSD_LIB_SPEC
+--- a/gcc/config/sol2.h
++++ b/gcc/config/sol2.h
+@@ -434,7 +434,11 @@ along with GCC; see the file COPYING3.
+ /* Solaris 11 build 135+ implements dl_iterate_phdr. GNU ld needs
+ --eh-frame-hdr to create the required .eh_frame_hdr sections. */
+ #if defined(HAVE_LD_EH_FRAME_HDR) && defined(TARGET_DL_ITERATE_PHDR)
++#ifdef USE_EH_FRAME_HDR_FOR_STATIC
++#define LINK_EH_SPEC "--eh-frame-hdr "
++#else
+ #define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
++#endif
+ #endif /* HAVE_LD_EH_FRAME && TARGET_DL_ITERATE_PHDR */
+ #endif
+
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -985,6 +985,7 @@ enable_fix_cortex_a53_835769
+ enable_fix_cortex_a53_843419
+ with_glibc_version
+ enable_gnu_unique_object
++enable_eh_frame_hdr_for_static
+ enable_linker_build_id
+ enable_libssp
+ enable_default_ssp
+@@ -1736,6 +1737,9 @@ Optional Features:
+ --enable-gnu-unique-object
+ enable the use of the @gnu_unique_object ELF
+ extension on glibc systems
++ --enable-eh-frame-hdr-for-static
++ enable linker PT_GNU_EH_FRAME support for static
++ executable
+ --enable-linker-build-id
+ compiler will always pass --build-id to linker
+ --enable-libssp enable linking against libssp
+@@ -28348,6 +28352,38 @@ if test x"$gcc_cv_ld_eh_frame_hdr" = xye
+
+ $as_echo "#define HAVE_LD_EH_FRAME_HDR 1" >>confdefs.h
+
++ # Check whether --enable-eh-frame-hdr-for-static was given.
++if test "${enable_eh_frame_hdr_for_static+set}" = set; then :
++ enableval=$enable_eh_frame_hdr_for_static; case $enable_eh_frame_hdr_for_static in
++ yes | no) ;;
++ *) as_fn_error "'$enable_eh_frame_hdr_for_static' is an invalid
++value for --enable-eh-frame-hdr-for-static.
++Valid choices are 'yes' and 'no'." "$LINENO" 5 ;;
++ esac
++else
++ # Only support for glibc 2.3.0 or higher with AT_PHDR/AT_PHNUM from
++# Linux kernel.
++ if test x$host = x$build -a x$host = x$target &&
++ ldd --version 2>&1 >/dev/null &&
++ glibcver=`ldd --version 2>/dev/null | sed 's/.* //;q'`; then
++ glibcmajor=`expr "$glibcver" : "\([0-9]*\)"`
++ glibcminor=`expr "$glibcver" : "[2-9]*\.\([0-9]*\)"`
++ glibcnum=`expr $glibcmajor \* 1000 + $glibcminor`
++ if test "$glibcnum" -ge 2003 ; then
++ auvx=`LD_SHOW_AUXV=1 ldd 2>/dev/null`
++ if echo "$auvx" | grep AT_PHDR > /dev/null &&
++ echo "$auvx" | grep AT_PHNUM > /dev/null; then
++ enable_eh_frame_hdr_for_static=yes
++ fi
++ fi
++ fi
++fi
++
++ if test x$enable_eh_frame_hdr_for_static = xyes; then
++
++$as_echo "#define USE_EH_FRAME_HDR_FOR_STATIC 1" >>confdefs.h
++
++ fi
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_ld_eh_frame_hdr" >&5
+ $as_echo "$gcc_cv_ld_eh_frame_hdr" >&6; }
+--- a/gcc/configure.ac
++++ b/gcc/configure.ac
+@@ -5171,6 +5171,35 @@ GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HD
+ if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
+ AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
+ [Define if your linker supports .eh_frame_hdr.])
++ AC_ARG_ENABLE(eh-frame-hdr-for-static,
++ [AS_HELP_STRING([--enable-eh-frame-hdr-for-static],
++ [enable linker PT_GNU_EH_FRAME support for static executable])],
++ [case $enable_eh_frame_hdr_for_static in
++ yes | no) ;;
++ *) AC_MSG_ERROR(['$enable_eh_frame_hdr_for_static' is an invalid
++value for --enable-eh-frame-hdr-for-static.
++Valid choices are 'yes' and 'no'.]) ;;
++ esac],
++# Only support for glibc 2.3.0 or higher with AT_PHDR/AT_PHNUM from
++# Linux kernel.
++ [[if test x$host = x$build -a x$host = x$target &&
++ ldd --version 2>&1 >/dev/null &&
++ glibcver=`ldd --version 2>/dev/null | sed 's/.* //;q'`; then
++ glibcmajor=`expr "$glibcver" : "\([0-9]*\)"`
++ glibcminor=`expr "$glibcver" : "[2-9]*\.\([0-9]*\)"`
++ glibcnum=`expr $glibcmajor \* 1000 + $glibcminor`
++ if test "$glibcnum" -ge 2003 ; then
++ auvx=`LD_SHOW_AUXV=1 ldd 2>/dev/null`
++ if echo "$auvx" | grep AT_PHDR > /dev/null &&
++ echo "$auvx" | grep AT_PHNUM > /dev/null; then
++ enable_eh_frame_hdr_for_static=yes
++ fi
++ fi
++ fi]])
++ if test x$enable_eh_frame_hdr_for_static = xyes; then
++ AC_DEFINE(USE_EH_FRAME_HDR_FOR_STATIC, 1,
++[Define if your system supports PT_GNU_EH_FRAME for static executable.])
++ fi
+ fi
+ AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
+
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/eh/spec3-static.C
+@@ -0,0 +1,25 @@
++// PR c++/4381
++// Test that exception-specs work properly for classes with virtual bases.
++
++// { dg-do run }
++// { dg-options "-static" }
++
++class Base {};
++
++struct A : virtual public Base
++{
++ A() {}
++};
++
++struct B {};
++
++void func() throw (B,A)
++{
++ throw A();
++}
++
++int main(void)
++{
++ try { func(); }
++ catch (A& a) { }
++}
+--- a/libgcc/crtstuff.c
++++ b/libgcc/crtstuff.c
+@@ -88,7 +88,8 @@ call_ ## FUNC (void) \
+ #if defined(OBJECT_FORMAT_ELF) \
+ && !defined(OBJECT_FORMAT_FLAT) \
+ && defined(HAVE_LD_EH_FRAME_HDR) \
+- && !defined(inhibit_libc) && !defined(CRTSTUFFT_O) \
++ && !defined(inhibit_libc) \
++ && (defined(USE_EH_FRAME_HDR_FOR_STATIC) || !defined(CRTSTUFFT_O)) \
+ && defined(BSD_DL_ITERATE_PHDR_AVAILABLE)
+ #include <link.h>
+ # define USE_PT_GNU_EH_FRAME
+@@ -97,7 +98,8 @@ call_ ## FUNC (void) \
+ #if defined(OBJECT_FORMAT_ELF) \
+ && !defined(OBJECT_FORMAT_FLAT) \
+ && defined(HAVE_LD_EH_FRAME_HDR) && defined(TARGET_DL_ITERATE_PHDR) \
+- && !defined(inhibit_libc) && !defined(CRTSTUFFT_O) \
++ && !defined(inhibit_libc) \
++ && (defined(USE_EH_FRAME_HDR_FOR_STATIC) || !defined(CRTSTUFFT_O)) \
+ && defined(__sun__) && defined(__svr4__)
+ #include <link.h>
+ # define USE_PT_GNU_EH_FRAME
+@@ -106,7 +108,8 @@ call_ ## FUNC (void) \
+ #if defined(OBJECT_FORMAT_ELF) \
+ && !defined(OBJECT_FORMAT_FLAT) \
+ && defined(HAVE_LD_EH_FRAME_HDR) \
+- && !defined(inhibit_libc) && !defined(CRTSTUFFT_O) \
++ && !defined(inhibit_libc) \
++ && (defined(USE_EH_FRAME_HDR_FOR_STATIC) || !defined(CRTSTUFFT_O)) \
+ && defined(__GLIBC__) && __GLIBC__ >= 2
+ #include <link.h>
+ /* uClibc pretends to be glibc 2.2 and DT_CONFIG is defined in its link.h.
+@@ -121,7 +124,7 @@ call_ ## FUNC (void) \
+ #if defined(OBJECT_FORMAT_ELF) \
+ && !defined(OBJECT_FORMAT_FLAT) \
+ && defined(HAVE_LD_EH_FRAME_HDR) \
+- && !defined(CRTSTUFFT_O) \
++ && (defined(USE_EH_FRAME_HDR_FOR_STATIC) || !defined(CRTSTUFFT_O)) \
+ && defined(inhibit_libc) \
+ && (defined(__GLIBC__) || defined(__gnu_linux__) || defined(__GNU__))
+ /* On systems using glibc, an inhibit_libc build of libgcc is only
diff --git a/packages/gcc/9.2.0/0013-crystax.patch b/packages/gcc/9.2.0/0013-crystax.patch
new file mode 100644
index 0000000..ec5f5bd
--- /dev/null
+++ b/packages/gcc/9.2.0/0013-crystax.patch
@@ -0,0 +1,22 @@
+commit 778a9ef107f51544d583f110e92b75f4d9d79117
+Author: Dmitry Moskalchuk <dm@crystax.net>
+Date: Thu Aug 20 19:11:07 2015 +0300
+
+ [android] Don't use PIE copyrelocs for x86/x86_64
+
+ Signed-off-by: Dmitry Moskalchuk <dm@crystax.net>
+
+---
+ gcc/config/i386/i386.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/gcc/config/i386/i386.c
++++ b/gcc/config/i386/i386.c
+@@ -15618,6 +15618,7 @@ legitimate_pic_address_disp_p (rtx disp)
+ else if (!SYMBOL_REF_FAR_ADDR_P (op0)
+ && (SYMBOL_REF_LOCAL_P (op0)
+ || (HAVE_LD_PIE_COPYRELOC
++ && !TARGET_HAS_BIONIC
+ && flag_pie
+ && !SYMBOL_REF_WEAK (op0)
+ && !SYMBOL_REF_FUNCTION_P (op0)))
diff --git a/packages/gcc/9.2.0/0014-crystax.patch b/packages/gcc/9.2.0/0014-crystax.patch
new file mode 100644
index 0000000..5acc6b9
--- /dev/null
+++ b/packages/gcc/9.2.0/0014-crystax.patch
@@ -0,0 +1,26 @@
+commit dbeae1190cabad83999f2540523f045acc1bb4ec
+Author: Dmitry Moskalchuk <dm@crystax.net>
+Date: Fri Aug 21 17:41:59 2015 +0300
+
+ [android] Always use gthr-posix.h instead of gthr-default.h
+
+ Signed-off-by: Dmitry Moskalchuk <dm@crystax.net>
+
+---
+ libgcc/gthr.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/libgcc/gthr.h
++++ b/libgcc/gthr.h
+@@ -145,7 +145,11 @@ see the files COPYING3 and COPYING.RUNTI
+ #define GTHREAD_USE_WEAK 1
+ #endif
+ #endif
++#if __ANDROID__
++#include "gthr-posix.h"
++#else
+ #include "gthr-default.h"
++#endif
+
+ #ifndef HIDE_EXPORTS
+ #pragma GCC visibility pop
diff --git a/packages/gcc/9.2.0/0015-crystax.patch b/packages/gcc/9.2.0/0015-crystax.patch
new file mode 100644
index 0000000..2b51260
--- /dev/null
+++ b/packages/gcc/9.2.0/0015-crystax.patch
@@ -0,0 +1,33 @@
+commit 8a66d422721ae5999737d7825701ff22097d287b
+Author: Andrew Hsieh <andrewhsieh@google.com>
+Date: Mon Apr 14 21:05:51 2014 -0700
+
+ [android] Fix ARM generates insufficient alignment for NEON vst/vld
+
+ See d909af3e2469aad87d5c3e79b93c778fd26c03a9
+
+ Change-Id: Ie1de9f946f397196bb6f1623f5add86933739484
+ Signed-off-by: Dmitry Moskalchuk <dm@crystax.net>
+
+---
+ gcc/config/arm/arm.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+--- a/gcc/config/arm/arm.c
++++ b/gcc/config/arm/arm.c
+@@ -22781,9 +22781,13 @@ arm_print_operand (FILE *stream, rtx x,
+ memsize = MEM_SIZE (x);
+
+ /* Only certain alignment specifiers are supported by the hardware. */
+- if (memsize == 32 && (align % 32) == 0)
++ /* Note that ARM EABI only guarentees 8-byte stack alignment. While GCC
++ honors stricter alignment of composite type in user code, it doesn't
++ observe the alignment of memory passed as an extra argument for function
++ returning large composite type. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57271 */
++ if (memsize == 32 && (align % 32) == 0 && !TARGET_AAPCS_BASED)
+ align_bits = 256;
+- else if ((memsize == 16 || memsize == 32) && (align % 16) == 0)
++ else if ((memsize == 16 || memsize == 32) && (align % 16) == 0 && !TARGET_AAPCS_BASED)
+ align_bits = 128;
+ else if (memsize >= 8 && (align % 8) == 0)
+ align_bits = 64;
diff --git a/packages/gcc/9.2.0/0016-crystax.patch b/packages/gcc/9.2.0/0016-crystax.patch
new file mode 100644
index 0000000..8c21a1c
--- /dev/null
+++ b/packages/gcc/9.2.0/0016-crystax.patch
@@ -0,0 +1,23 @@
+commit 89d27bc45ee7325dcfff6748da0f8b9c1dc1f234
+Author: Dmitry Moskalchuk <dm@crystax.net>
+Date: Sat Aug 22 09:55:55 2015 +0300
+
+ [android][i386] Remove throw() declaration from posix_memalign() proto
+
+ Signed-off-by: Dmitry Moskalchuk <dm@crystax.net>
+
+---
+ gcc/config/i386/pmm_malloc.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/gcc/config/i386/pmm_malloc.h
++++ b/gcc/config/i386/pmm_malloc.h
+@@ -31,7 +31,7 @@
+ #ifndef __cplusplus
+ extern int posix_memalign (void **, size_t, size_t);
+ #else
+-extern "C" int posix_memalign (void **, size_t, size_t) throw ();
++extern "C" int posix_memalign (void **, size_t, size_t);
+ #endif
+
+ static __inline void *
diff --git a/packages/gcc/9.2.0/0017-crystax.patch b/packages/gcc/9.2.0/0017-crystax.patch
new file mode 100644
index 0000000..1a46aed
--- /dev/null
+++ b/packages/gcc/9.2.0/0017-crystax.patch
@@ -0,0 +1,34 @@
+commit 9ae82f7cfc1073820092dd9f957559667e77db0d
+Author: Dmitry Moskalchuk <dm@crystax.net>
+Date: Tue Aug 25 09:36:42 2015 +0300
+
+ [android] Explicitly make _Unwind_Resume visible for arm64/mips64
+
+ Signed-off-by: Dmitry Moskalchuk <dm@crystax.net>
+
+---
+ gcc/config/aarch64/aarch64-linux-android.h | 4 ++++
+ gcc/config/mips/linux-common.h | 4 ++++
+ 2 files changed, 8 insertions(+)
+
+--- a/gcc/config/aarch64/aarch64-linux-android.h
++++ b/gcc/config/aarch64/aarch64-linux-android.h
+@@ -56,4 +56,8 @@
+ #define ENDFILE_SPEC \
+ LINUX_OR_ANDROID_LD (GNU_USER_TARGET_ENDFILE_SPEC, ANDROID_ENDFILE_SPEC)
+
++#ifdef IN_LIBGCC2
++#define LIBGCC2_UNWIND_ATTRIBUTE __attribute__((visibility("default")))
++#endif
++
+ #endif /* GCC_AARCH64_LINUX_ANDROID_H */
+--- a/gcc/config/mips/linux-common.h
++++ b/gcc/config/mips/linux-common.h
+@@ -65,3 +65,7 @@ along with GCC; see the file COPYING3.
+
+ /* The default value isn't sufficient in 64-bit mode. */
+ #define STACK_CHECK_PROTECT (TARGET_64BIT ? 16 * 1024 : 12 * 1024)
++
++#ifdef IN_LIBGCC2
++#define LIBGCC2_UNWIND_ATTRIBUTE __attribute__((visibility("default")))
++#endif
diff --git a/packages/gcc/9.2.0/0018-isl-0.20.patch b/packages/gcc/9.2.0/0018-isl-0.20.patch
new file mode 100644
index 0000000..de188b1
--- /dev/null
+++ b/packages/gcc/9.2.0/0018-isl-0.20.patch
@@ -0,0 +1,26 @@
+commit 9fabe086c9f5c3896297f7f35491d785ba6f49a0
+Author: Alexey Neyman <stilor@att.net>
+Date: Mon Sep 24 22:50:11 2018 -0700
+
+ Fix build with ISL 0.20
+
+ * gcc/graphite.h: Include <isl/id.h> and <isl/space.h>; these
+ headers are no longer pulled in by <isl/val.h>.
+
+ Signed-off-by: Alexey Neyman <stilor@att.net>
+
+---
+ gcc/graphite.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/gcc/graphite.h
++++ b/gcc/graphite.h
+@@ -26,6 +26,8 @@ along with GCC; see the file COPYING3.
+ #include <isl/options.h>
+ #include <isl/ctx.h>
+ #include <isl/val.h>
++#include <isl/id.h>
++#include <isl/space.h>
+ #include <isl/set.h>
+ #include <isl/union_set.h>
+ #include <isl/map.h>
diff --git a/packages/gcc/9.2.0/chksum b/packages/gcc/9.2.0/chksum
new file mode 100644
index 0000000..2ece552
--- /dev/null
+++ b/packages/gcc/9.2.0/chksum
@@ -0,0 +1,8 @@
+md5 gcc-9.2.0.tar.xz 3818ad8600447f05349098232c2ddc78
+sha1 gcc-9.2.0.tar.xz 306d27c3465fa36862c206738d06d65fff5c3645
+sha256 gcc-9.2.0.tar.xz ea6ef08f121239da5695f76c9b33637a118dcf63e24164422231917fa61fb206
+sha512 gcc-9.2.0.tar.xz a12dff52af876aee0fd89a8d09cdc455f35ec46845e154023202392adc164848faf8ee881b59b681b696e27c69fd143a214014db4214db62f9891a1c8365c040
+md5 gcc-9.2.0.tar.gz e03739b042a14376d727ddcfd05a9bc3
+sha1 gcc-9.2.0.tar.gz 256be3760f6aca3eaa45083e25828ce0802e2010
+sha256 gcc-9.2.0.tar.gz a931a750d6feadacbeecb321d73925cd5ebb6dfa7eff0802984af3aef63759f4
+sha512 gcc-9.2.0.tar.gz 55fead9cac2374b18134c17a143fc9317f67be834589303d31a7c3a6878e6bef22a0590fda902a07cb60f802df035e67975a8ab6a641048e0baa89af439a46ca
diff --git a/packages/expat/2.2.6/version.desc b/packages/gcc/9.2.0/version.desc
index e69de29..e69de29 100644
--- a/packages/expat/2.2.6/version.desc
+++ b/packages/gcc/9.2.0/version.desc
diff --git a/packages/gcc/package.desc b/packages/gcc/package.desc
index e6d98f8..a37f0c5 100644
--- a/packages/gcc/package.desc
+++ b/packages/gcc/package.desc
@@ -2,5 +2,5 @@ repository='svn svn://gcc.gnu.org/svn/gcc'
mirrors='$(CT_Mirrors GNU gcc/gcc-${CT_GCC_VERSION}) $(CT_Mirrors sourceware gcc/releases/gcc-${CT_GCC_VERSION})'
relevantpattern='4.*|. *|.'
origin='GNU'
-milestones='4.8 4.9 5 6 7'
+milestones='4.8 4.9 5 6 7 8'
archive_formats='.tar.xz .tar.gz'
diff --git a/packages/gdb/8.3.1/0000-musl_fix.patch b/packages/gdb/8.3.1/0000-musl_fix.patch
new file mode 100644
index 0000000..e5750ea
--- /dev/null
+++ b/packages/gdb/8.3.1/0000-musl_fix.patch
@@ -0,0 +1,33 @@
+---
+ gdb/linux-nat.c | 5 +++++
+ gdb/stopcode.h | 4 ++++
+ 2 files changed, 9 insertions(+)
+
+--- a/gdb/linux-nat.c
++++ b/gdb/linux-nat.c
+@@ -17,6 +17,7 @@
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
++#include "stopcode.h"
+ #include "defs.h"
+ #include "inferior.h"
+ #include "infrun.h"
+@@ -72,6 +73,10 @@
+ #define SPUFS_MAGIC 0x23c9b64e
+ #endif
+
++#ifndef __SIGRTMIN
++#define __SIGRTMIN SIGRTMIN
++#endif
++
+ /* This comment documents high-level logic of this file.
+
+ Waiting for events in sync mode
+--- /dev/null
++++ b/gdb/stopcode.h
+@@ -0,0 +1,4 @@
++#ifndef W_STOPCODE
++#define W_STOPCODE(sig) ((sig) << 8 | 0x7f)
++#endif
++
diff --git a/packages/gdb/8.3.1/0001-uclibc-no-gettimeofday-clobber.patch b/packages/gdb/8.3.1/0001-uclibc-no-gettimeofday-clobber.patch
new file mode 100644
index 0000000..9aade1e
--- /dev/null
+++ b/packages/gdb/8.3.1/0001-uclibc-no-gettimeofday-clobber.patch
@@ -0,0 +1,33 @@
+Improve gnulib in gdb's guess work, gettimeofday() works in uClibcm promise.
+
+This patch helps building x86_64-unknown-linux-uclibc toolchains, the final
+gdb-native step otherwise fails when linking the libinproctrace.so
+
+Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
+Signed-off-by: Alexey Neyman <stilor@att.net>
+
+---
+ gdb/gnulib/configure | 1 +
+ gdb/gnulib/import/m4/gettimeofday.m4 | 1 +
+ 2 files changed, 2 insertions(+)
+
+--- a/gdb/gnulib/configure
++++ b/gdb/gnulib/configure
+@@ -18579,6 +18579,7 @@
+ case "$host_os" in
+ # Guess all is fine on glibc systems.
+ *-gnu*) gl_cv_func_gettimeofday_clobber="guessing no" ;;
++ *-uclibc*) gl_cv_func_gettimeofday_clobber="guessing no" ;;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_gettimeofday_clobber="guessing yes" ;;
+ esac
+--- a/gdb/gnulib/import/m4/gettimeofday.m4
++++ b/gdb/gnulib/import/m4/gettimeofday.m4
+@@ -111,6 +111,7 @@
+ case "$host_os" in
+ # Guess all is fine on glibc systems.
+ *-gnu*) gl_cv_func_gettimeofday_clobber="guessing no" ;;
++ *-uclibc*) gl_cv_func_gettimeofday_clobber="guessing no" ;;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_gettimeofday_clobber="guessing yes" ;;
+ esac
diff --git a/packages/gdb/8.3.1/0002-xtensa-make-sure-ar_base-is-initialized.patch b/packages/gdb/8.3.1/0002-xtensa-make-sure-ar_base-is-initialized.patch
new file mode 100644
index 0000000..c0f364c
--- /dev/null
+++ b/packages/gdb/8.3.1/0002-xtensa-make-sure-ar_base-is-initialized.patch
@@ -0,0 +1,30 @@
+From 208ea73d38c9c16cf983b6419f58050dbadcb6a9 Mon Sep 17 00:00:00 2001
+From: Max Filippov <jcmvbkbc@gmail.com>
+Date: Sun, 7 Jun 2015 22:43:49 +0300
+Subject: [PATCH 2/2] xtensa: make sure ar_base is initialized
+
+ar_base is uninitialized for cores w/o windowed registers as their
+regmap doesn't have register 0x0100.
+Check that ar_base is initialized and if not initialize it with a0_base.
+
+gdb/
+ * xtensa-tdep.c (xtensa_derive_tdep): Make sure ar_base is
+ initialized.
+
+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
+---
+ gdb/xtensa-tdep.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/gdb/xtensa-tdep.c
++++ b/gdb/xtensa-tdep.c
+@@ -3137,6 +3137,9 @@
+ if (tdep->num_regs == 0)
+ tdep->num_regs = tdep->num_nopriv_regs;
+
++ if (tdep->ar_base == -1)
++ tdep->ar_base = tdep->a0_base;
++
+ /* Number of pseudo registers. */
+ tdep->num_pseudo_regs = n - tdep->num_regs;
+
diff --git a/packages/gdb/8.3.1/0003-WIP-end-of-prologue-detection-hack.patch b/packages/gdb/8.3.1/0003-WIP-end-of-prologue-detection-hack.patch
new file mode 100644
index 0000000..66870ea
--- /dev/null
+++ b/packages/gdb/8.3.1/0003-WIP-end-of-prologue-detection-hack.patch
@@ -0,0 +1,26 @@
+From 7f8eacbb468575fb67db7fd1155a3aedaa91911b Mon Sep 17 00:00:00 2001
+From: Max Filippov <jcmvbkbc@gmail.com>
+Date: Sun, 7 Jun 2015 23:15:39 +0300
+Subject: [PATCH] WIP: *end of prologue* detection hack
+
+see
+ http://www.esp8266.com/viewtopic.php?p=18461#p18461
+ http://www.esp8266.com/viewtopic.php?p=19026#p19026
+ http://www.esp8266.com/viewtopic.php?p=19683#p19683
+
+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
+---
+ gdb/xtensa-tdep.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/gdb/xtensa-tdep.c
++++ b/gdb/xtensa-tdep.c
+@@ -2385,7 +2385,7 @@
+ /* Find out, if we have an information about the prologue from DWARF. */
+ prologue_sal = find_pc_line (start, 0);
+ if (prologue_sal.line != 0) /* Found debug info. */
+- body_pc = prologue_sal.end;
++ body_pc = prologue_sal.end + 40;
+
+ /* If we are going to analyze the prologue in general without knowing about
+ the current PC, make the best assumtion for the end of the prologue. */
diff --git a/packages/gdb/8.3.1/0004-allow-android.patch b/packages/gdb/8.3.1/0004-allow-android.patch
new file mode 100644
index 0000000..897ec26
--- /dev/null
+++ b/packages/gdb/8.3.1/0004-allow-android.patch
@@ -0,0 +1,45 @@
+---
+ gdb/gdbserver/configure | 11 -----------
+ gdb/gdbserver/configure.ac | 11 -----------
+ 2 files changed, 22 deletions(-)
+
+--- a/gdb/gdbserver/configure
++++ b/gdb/gdbserver/configure
+@@ -7699,17 +7699,6 @@
+
+
+ case "${target}" in
+- *-android*)
+- # Starting with NDK version 9, <elf.h> actually includes definitions
+- # of Elf32_auxv_t and Elf64_auxv_t. But sadly, <elf.h> includes
+- # <sys/exec_elf.h> which defines some of the ELF types incorrectly,
+- # leading to conflicts with the defintions from <linux/elf.h>.
+- # This makes it impossible for us to include both <elf.h> and
+- # <linux/elf.h>, which means that, in practice, we do not have
+- # access to Elf32_auxv_t and Elf64_auxv_t on this platform.
+- # Therefore, do not try to auto-detect availability, as it would
+- # get it wrong on this platform.
+- ;;
+ *)
+ ac_fn_c_check_type "$LINENO" "Elf32_auxv_t" "ac_cv_type_Elf32_auxv_t" "#include <elf.h>
+
+--- a/gdb/gdbserver/configure.ac
++++ b/gdb/gdbserver/configure.ac
+@@ -185,17 +185,6 @@
+ ])
+
+ case "${target}" in
+- *-android*)
+- # Starting with NDK version 9, <elf.h> actually includes definitions
+- # of Elf32_auxv_t and Elf64_auxv_t. But sadly, <elf.h> includes
+- # <sys/exec_elf.h> which defines some of the ELF types incorrectly,
+- # leading to conflicts with the defintions from <linux/elf.h>.
+- # This makes it impossible for us to include both <elf.h> and
+- # <linux/elf.h>, which means that, in practice, we do not have
+- # access to Elf32_auxv_t and Elf64_auxv_t on this platform.
+- # Therefore, do not try to auto-detect availability, as it would
+- # get it wrong on this platform.
+- ;;
+ *)
+ AC_CHECK_TYPES([Elf32_auxv_t, Elf64_auxv_t], [], [],
+ #include <elf.h>
diff --git a/packages/gdb/8.3.1/0005-no-fortify-mingw32.patch b/packages/gdb/8.3.1/0005-no-fortify-mingw32.patch
new file mode 100644
index 0000000..54fe9e2
--- /dev/null
+++ b/packages/gdb/8.3.1/0005-no-fortify-mingw32.patch
@@ -0,0 +1,43 @@
+commit 5f23a08201ed01570b34f5cff99a95fc7b9e2fdb
+Author: Christian Biesinger <cbiesinger@google.com>
+Date: Wed Dec 18 12:06:43 2019 -0600
+
+ Don't define _FORTIFY_SOURCE on MinGW
+
+ Recent MinGW versions require -lssp when using _FORTIFY_SOURCE, which
+ gdb does (in common-defs.h)
+ https://github.com/msys2/MINGW-packages/issues/5868#issuecomment-544107564
+
+ To avoid all the complications with checking for -lssp and making sure it's
+ linked statically, just don't define it.
+
+ gdb/ChangeLog:
+
+ 2020-01-09 Christian Biesinger <cbiesinger@google.com>
+
+ * gdbsupport/common-defs.h: Don't define _FORTIFY_SOURCE on MinGW.
+
+ Change-Id: Ide6870ab57198219a2ef78bc675768a789ca2b1d
+
+---
+ gdb/common/common-defs.h | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+--- a/gdb/common/common-defs.h
++++ b/gdb/common/common-defs.h
+@@ -66,9 +66,13 @@
+ plus this seems like a reasonable safety measure. The check for
+ optimization is required because _FORTIFY_SOURCE only works when
+ optimization is enabled. If _FORTIFY_SOURCE is already defined,
+- then we don't do anything. */
++ then we don't do anything. Also, on MinGW, fortify requires
++ linking to -lssp, and to avoid the hassle of checking for
++ that and linking to it statically, we just don't define
++ _FORTIFY_SOURCE there. */
+
+-#if !defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__ > 0
++#if (!defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__ > 0 \
++ && !defined(__MINGW32__))
+ #define _FORTIFY_SOURCE 2
+ #endif
+
diff --git a/packages/gdb/8.3.1/chksum b/packages/gdb/8.3.1/chksum
new file mode 100644
index 0000000..4687d23
--- /dev/null
+++ b/packages/gdb/8.3.1/chksum
@@ -0,0 +1,8 @@
+md5 gdb-8.3.1.tar.xz 73b6a5d8141672c62bf851cd34c4aa83
+sha1 gdb-8.3.1.tar.xz d403ba208945bbf04f8130ea4853730cdf0c8fc7
+sha256 gdb-8.3.1.tar.xz 1e55b4d7cdca7b34be12f4ceae651623aa73b2fd640152313f9f66a7149757c4
+sha512 gdb-8.3.1.tar.xz 9053a2dc6b9eb921907afbc4cecc75d635aa76df5e8c4f0e5824ccf57cb206b299c19b127fff000b65c334826ff8304a54ff6098428365a8e997cca886c39e9a
+md5 gdb-8.3.1.tar.gz 3c61672225a6a80875a5eea8cd25e2a0
+sha1 gdb-8.3.1.tar.gz 8e68fc5d524caeb6684a8b6ed24e75396e40c471
+sha256 gdb-8.3.1.tar.gz 26ce655216cd03f4611518a7a1c31d80ec8e884c16715e9ba8b436822e51434b
+sha512 gdb-8.3.1.tar.gz e81949fa011046b07ee6886a378bcbd420e4571367005035007dc70f0d28d975d08fb7d9062b49f0a3e6d2ca8149ea60f9ab485ea98a04198d1ca49d38dbd2fe
diff --git a/packages/gdb/8.3.1/version.desc b/packages/gdb/8.3.1/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/gdb/8.3.1/version.desc
diff --git a/packages/gdb/9.1/0000-musl_fix.patch b/packages/gdb/9.1/0000-musl_fix.patch
new file mode 100644
index 0000000..85c09de
--- /dev/null
+++ b/packages/gdb/9.1/0000-musl_fix.patch
@@ -0,0 +1,33 @@
+---
+ gdb/linux-nat.c | 5 +++++
+ gdb/stopcode.h | 4 ++++
+ 2 files changed, 9 insertions(+)
+
+--- a/gdb/linux-nat.c
++++ b/gdb/linux-nat.c
+@@ -17,6 +17,7 @@
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
++#include "stopcode.h"
+ #include "defs.h"
+ #include "inferior.h"
+ #include "infrun.h"
+@@ -69,6 +70,10 @@
+ #include "gdbsupport/scope-exit.h"
+ #include "gdbsupport/gdb-sigmask.h"
+
++#ifndef __SIGRTMIN
++#define __SIGRTMIN SIGRTMIN
++#endif
++
+ /* This comment documents high-level logic of this file.
+
+ Waiting for events in sync mode
+--- /dev/null
++++ b/gdb/stopcode.h
+@@ -0,0 +1,4 @@
++#ifndef W_STOPCODE
++#define W_STOPCODE(sig) ((sig) << 8 | 0x7f)
++#endif
++
diff --git a/packages/gdb/9.1/0001-uclibc-no-gettimeofday-clobber.patch b/packages/gdb/9.1/0001-uclibc-no-gettimeofday-clobber.patch
new file mode 100644
index 0000000..2a549dd
--- /dev/null
+++ b/packages/gdb/9.1/0001-uclibc-no-gettimeofday-clobber.patch
@@ -0,0 +1,33 @@
+Improve gnulib in gdb's guess work, gettimeofday() works in uClibcm promise.
+
+This patch helps building x86_64-unknown-linux-uclibc toolchains, the final
+gdb-native step otherwise fails when linking the libinproctrace.so
+
+Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
+Signed-off-by: Alexey Neyman <stilor@att.net>
+
+---
+ gnulib/configure | 1 +
+ gnulib/import/m4/gettimeofday.m4 | 1 +
+ 2 files changed, 2 insertions(+)
+
+--- a/gnulib/configure
++++ b/gnulib/configure
+@@ -20267,6 +20267,7 @@
+ case "$host_os" in
+ # Guess all is fine on glibc systems.
+ *-gnu*) gl_cv_func_gettimeofday_clobber="guessing no" ;;
++ *-uclibc*) gl_cv_func_gettimeofday_clobber="guessing no" ;;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_gettimeofday_clobber="guessing yes" ;;
+ esac
+--- a/gnulib/import/m4/gettimeofday.m4
++++ b/gnulib/import/m4/gettimeofday.m4
+@@ -111,6 +111,7 @@
+ case "$host_os" in
+ # Guess all is fine on glibc systems.
+ *-gnu*) gl_cv_func_gettimeofday_clobber="guessing no" ;;
++ *-uclibc*) gl_cv_func_gettimeofday_clobber="guessing no" ;;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_gettimeofday_clobber="guessing yes" ;;
+ esac
diff --git a/packages/gdb/9.1/0002-xtensa-make-sure-ar_base-is-initialized.patch b/packages/gdb/9.1/0002-xtensa-make-sure-ar_base-is-initialized.patch
new file mode 100644
index 0000000..c0f364c
--- /dev/null
+++ b/packages/gdb/9.1/0002-xtensa-make-sure-ar_base-is-initialized.patch
@@ -0,0 +1,30 @@
+From 208ea73d38c9c16cf983b6419f58050dbadcb6a9 Mon Sep 17 00:00:00 2001
+From: Max Filippov <jcmvbkbc@gmail.com>
+Date: Sun, 7 Jun 2015 22:43:49 +0300
+Subject: [PATCH 2/2] xtensa: make sure ar_base is initialized
+
+ar_base is uninitialized for cores w/o windowed registers as their
+regmap doesn't have register 0x0100.
+Check that ar_base is initialized and if not initialize it with a0_base.
+
+gdb/
+ * xtensa-tdep.c (xtensa_derive_tdep): Make sure ar_base is
+ initialized.
+
+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
+---
+ gdb/xtensa-tdep.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/gdb/xtensa-tdep.c
++++ b/gdb/xtensa-tdep.c
+@@ -3137,6 +3137,9 @@
+ if (tdep->num_regs == 0)
+ tdep->num_regs = tdep->num_nopriv_regs;
+
++ if (tdep->ar_base == -1)
++ tdep->ar_base = tdep->a0_base;
++
+ /* Number of pseudo registers. */
+ tdep->num_pseudo_regs = n - tdep->num_regs;
+
diff --git a/packages/gdb/9.1/0003-WIP-end-of-prologue-detection-hack.patch b/packages/gdb/9.1/0003-WIP-end-of-prologue-detection-hack.patch
new file mode 100644
index 0000000..9622ae9
--- /dev/null
+++ b/packages/gdb/9.1/0003-WIP-end-of-prologue-detection-hack.patch
@@ -0,0 +1,26 @@
+From 7f8eacbb468575fb67db7fd1155a3aedaa91911b Mon Sep 17 00:00:00 2001
+From: Max Filippov <jcmvbkbc@gmail.com>
+Date: Sun, 7 Jun 2015 23:15:39 +0300
+Subject: [PATCH] WIP: *end of prologue* detection hack
+
+see
+ http://www.esp8266.com/viewtopic.php?p=18461#p18461
+ http://www.esp8266.com/viewtopic.php?p=19026#p19026
+ http://www.esp8266.com/viewtopic.php?p=19683#p19683
+
+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
+---
+ gdb/xtensa-tdep.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/gdb/xtensa-tdep.c
++++ b/gdb/xtensa-tdep.c
+@@ -2385,7 +2385,7 @@
+ /* Find out, if we have an information about the prologue from DWARF. */
+ prologue_sal = find_pc_line (start, 0);
+ if (prologue_sal.line != 0) /* Found debug info. */
+- body_pc = prologue_sal.end;
++ body_pc = prologue_sal.end + 40;
+
+ /* If we are going to analyze the prologue in general without knowing about
+ the current PC, make the best assumption for the end of the prologue. */
diff --git a/packages/gdb/9.1/0004-allow-android.patch b/packages/gdb/9.1/0004-allow-android.patch
new file mode 100644
index 0000000..97f7a9f
--- /dev/null
+++ b/packages/gdb/9.1/0004-allow-android.patch
@@ -0,0 +1,45 @@
+---
+ gdb/gdbserver/configure | 11 -----------
+ gdb/gdbserver/configure.ac | 11 -----------
+ 2 files changed, 22 deletions(-)
+
+--- a/gdb/gdbserver/configure
++++ b/gdb/gdbserver/configure
+@@ -8512,17 +8512,6 @@
+
+
+ case "${target}" in
+- *-android*)
+- # Starting with NDK version 9, <elf.h> actually includes definitions
+- # of Elf32_auxv_t and Elf64_auxv_t. But sadly, <elf.h> includes
+- # <sys/exec_elf.h> which defines some of the ELF types incorrectly,
+- # leading to conflicts with the defintions from <linux/elf.h>.
+- # This makes it impossible for us to include both <elf.h> and
+- # <linux/elf.h>, which means that, in practice, we do not have
+- # access to Elf32_auxv_t and Elf64_auxv_t on this platform.
+- # Therefore, do not try to auto-detect availability, as it would
+- # get it wrong on this platform.
+- ;;
+ *)
+ ac_fn_c_check_type "$LINENO" "Elf32_auxv_t" "ac_cv_type_Elf32_auxv_t" "#include <elf.h>
+
+--- a/gdb/gdbserver/configure.ac
++++ b/gdb/gdbserver/configure.ac
+@@ -176,17 +176,6 @@
+ ])
+
+ case "${target}" in
+- *-android*)
+- # Starting with NDK version 9, <elf.h> actually includes definitions
+- # of Elf32_auxv_t and Elf64_auxv_t. But sadly, <elf.h> includes
+- # <sys/exec_elf.h> which defines some of the ELF types incorrectly,
+- # leading to conflicts with the defintions from <linux/elf.h>.
+- # This makes it impossible for us to include both <elf.h> and
+- # <linux/elf.h>, which means that, in practice, we do not have
+- # access to Elf32_auxv_t and Elf64_auxv_t on this platform.
+- # Therefore, do not try to auto-detect availability, as it would
+- # get it wrong on this platform.
+- ;;
+ *)
+ AC_CHECK_TYPES([Elf32_auxv_t, Elf64_auxv_t], [], [],
+ #include <elf.h>
diff --git a/packages/gdb/9.1/chksum b/packages/gdb/9.1/chksum
new file mode 100644
index 0000000..f0361e0
--- /dev/null
+++ b/packages/gdb/9.1/chksum
@@ -0,0 +1,8 @@
+md5 gdb-9.1.tar.xz f7e9f6236c425097d9e5f18a6ac40655
+sha1 gdb-9.1.tar.xz a50e13e1eecea468ea28c4a23d8c5a84f4db25be
+sha256 gdb-9.1.tar.xz 699e0ec832fdd2f21c8266171ea5bf44024bd05164fdf064e4d10cc4cf0d1737
+sha512 gdb-9.1.tar.xz 84cdd408d80a3fc5779de459c5b26154d31b329ebde7e3aa78799fb1eb245d8b64b8c8ee7242382a1dbd95b4e6f9d84fef41d12a0646aa75d3dee4709ea1f6e7
+md5 gdb-9.1.tar.gz b6f0807334c273c78fd17df0f9b1c13a
+sha1 gdb-9.1.tar.gz c50a84d303afc9bea77cd5f129e83b4a4147a701
+sha256 gdb-9.1.tar.gz fcda54d4f35bc53fb24b50009a71ca98410d71ff2620942e3c829a7f5d614252
+sha512 gdb-9.1.tar.gz a51b1023e595b86db3d75edcd845739304b441eff4754a400241c6b45f2c38913a489776e67c5fa20e8d90a9e72e94f2f6b8495363d93c2350ddbade4839bcc3
diff --git a/packages/gdb/9.1/version.desc b/packages/gdb/9.1/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/gdb/9.1/version.desc
diff --git a/packages/gdb/package.desc b/packages/gdb/package.desc
index 3ac65f8..58479fd 100644
--- a/packages/gdb/package.desc
+++ b/packages/gdb/package.desc
@@ -2,5 +2,5 @@ origin='GNU'
repository='git git://sourceware.org/git/binutils-gdb.git'
mirrors='$(CT_Mirrors GNU gdb) $(CT_Mirrors sourceware gdb/releases)'
relevantpattern='*.*|[a-z.]'
-milestones='7.0 7.2 7.12 8.0'
+milestones='7.0 7.2 7.12 8.0 8.3'
archive_formats='.tar.xz .tar.gz'
diff --git a/packages/gettext/0.19.7/version.desc b/packages/gettext/0.19.7/version.desc
index fcfe389..1945106 100644
--- a/packages/gettext/0.19.7/version.desc
+++ b/packages/gettext/0.19.7/version.desc
@@ -1 +1,2 @@
obsolete='yes'
+archive_formats='.tar.xz .tar.lz .tar.gz'
diff --git a/packages/gettext/0.19.8.1/version.desc b/packages/gettext/0.19.8.1/version.desc
index e69de29..9f75f6b 100644
--- a/packages/gettext/0.19.8.1/version.desc
+++ b/packages/gettext/0.19.8.1/version.desc
@@ -0,0 +1 @@
+archive_formats='.tar.xz .tar.lz .tar.gz'
diff --git a/packages/gettext/0.20.1/0000-Fix-linker-error-redefinition-of-vasprintf.patch b/packages/gettext/0.20.1/0000-Fix-linker-error-redefinition-of-vasprintf.patch
new file mode 100644
index 0000000..5e63290
--- /dev/null
+++ b/packages/gettext/0.20.1/0000-Fix-linker-error-redefinition-of-vasprintf.patch
@@ -0,0 +1,26 @@
+From a76649dae62768d0af7017b3fc0ca5f891588c78 Mon Sep 17 00:00:00 2001
+From: Andoni Morales Alastruey <ylatuya@gmail.com>
+Date: Wed, 29 Feb 2012 10:44:43 +0100
+Subject: [PATCH] Fix linker error: redefinition of vasprintf
+
+This might not be the best patch, but it works for us
+The link error was:
+.libs/autosprintf.o:autosprintf.cc:(.text$vasprintf[_vasprintf]+0x0): multiple definition of `_vasprintf'
+.libs/lib-asprintf.o:lib-asprintf.c:(.text+0x4621): first defined here
+---
+ gettext-runtime/libasprintf/autosprintf.cc | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/gettext-runtime/libasprintf/autosprintf.cc
++++ b/gettext-runtime/libasprintf/autosprintf.cc
+@@ -19,8 +19,10 @@
+ This must come before <config.h> because <config.h> may include
+ <features.h>, and once <features.h> has been included, it's too late. */
+ #ifndef _GNU_SOURCE
++#ifndef _WIN32
+ # define _GNU_SOURCE 1
+ #endif
++#endif
+
+ /* Specification. */
+ #include "autosprintf.h"
diff --git a/packages/gettext/0.20.1/0001-pthread_sigmask.c-mingw.patch b/packages/gettext/0.20.1/0001-pthread_sigmask.c-mingw.patch
new file mode 100644
index 0000000..c3879d5
--- /dev/null
+++ b/packages/gettext/0.20.1/0001-pthread_sigmask.c-mingw.patch
@@ -0,0 +1,356 @@
+commit 64e905db05c32792c3f0e77ce271f65e77980a92
+Author: Bruno Haible <bruno@clisp.org>
+Date: Sat May 18 14:36:33 2019 +0200
+
+ pthread_sigmask: Fix compilation error with --enable-threads=windows.
+
+ Reported by Tim Rühsen in
+ <https://lists.gnu.org/archive/html/bug-gnulib/2018-01/msg00018.html>
+ and Michele Locati in
+ <https://lists.gnu.org/archive/html/bug-gettext/2019-04/msg00057.html>.
+
+ * m4/pthread_sigmask.m4 (gl_FUNC_PTHREAD_SIGMASK): Revert change from
+ 2015-06-01. Test whether pthread_sigmask is a macro, regardless of
+ $LIBMULTITHREAD. Consider it regardless whether module 'threadlib' is
+ in use and regardless which threads API is chosen.
+
+[Dropped ChangeLog; adjusted the paths to apply to gettext; regenerate.]
+
+---
+ gettext-tools/configure | 105 ++++++++++-----------
+ gettext-tools/gnulib-m4/pthread_sigmask.m4 | 140 ++++++++++++++---------------
+ 2 files changed, 118 insertions(+), 127 deletions(-)
+
+--- a/gettext-tools/gnulib-m4/pthread_sigmask.m4
++++ b/gettext-tools/gnulib-m4/pthread_sigmask.m4
+@@ -1,4 +1,4 @@
+-# pthread_sigmask.m4 serial 16
++# pthread_sigmask.m4 serial 17
+ dnl Copyright (C) 2011-2019 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -9,103 +9,101 @@
+ AC_REQUIRE([gl_SIGNAL_H_DEFAULTS])
+
+ AC_CHECK_FUNCS_ONCE([pthread_sigmask])
++
++ dnl On MinGW pthread_sigmask is just a macro which always returns 0.
++ dnl It does not exist as a real function, which is required by POSIX.
++ AC_CACHE_CHECK([whether pthread_sigmask is a macro],
++ [gl_cv_func_pthread_sigmask_macro],
++ [AC_EGREP_CPP([headers_define_pthread_sigmask], [
++#include <pthread.h>
++#include <signal.h>
++#ifdef pthread_sigmask
++ headers_define_pthread_sigmask
++#endif],
++ [gl_cv_func_pthread_sigmask_macro=yes],
++ [gl_cv_func_pthread_sigmask_macro=no])
++ ])
++
+ LIB_PTHREAD_SIGMASK=
+
+- dnl Test whether the gnulib module 'threadlib' is in use.
+- dnl Some packages like Emacs use --avoid=threadlib.
+- dnl Write the symbol in such a way that it does not cause 'aclocal' to pick
+- dnl the threadlib.m4 file that is installed in $PREFIX/share/aclocal/.
+- m4_ifdef([gl_][THREADLIB], [
+- AC_REQUIRE([gl_][THREADLIB])
++ if test $gl_cv_func_pthread_sigmask_macro = yes; then
++ dnl pthread_sigmask is a dummy macro.
++ HAVE_PTHREAD_SIGMASK=0
++ dnl Make sure to '#undef pthread_sigmask' before defining it.
++ REPLACE_PTHREAD_SIGMASK=1
++ else
++ dnl Test whether the gnulib module 'threadlib' is in use.
++ dnl Some packages like Emacs use --avoid=threadlib.
++ dnl Write the symbol in such a way that it does not cause 'aclocal' to pick
++ dnl the threadlib.m4 file that is installed in $PREFIX/share/aclocal/.
++ m4_ifdef([gl_][THREADLIB], [
++ AC_REQUIRE([gl_][THREADLIB])
+
+- if test "$gl_threads_api" = posix; then
+- if test $ac_cv_func_pthread_sigmask = yes; then
+- dnl pthread_sigmask is available without -lpthread.
+- :
+- else
+- if test -n "$LIBMULTITHREAD"; then
+- AC_CACHE_CHECK([for pthread_sigmask in $LIBMULTITHREAD],
+- [gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD],
+- [gl_save_LIBS="$LIBS"
+- LIBS="$LIBS $LIBMULTITHREAD"
+- AC_LINK_IFELSE(
+- [AC_LANG_PROGRAM(
+- [[#include <pthread.h>
+- #include <signal.h>
+- ]],
+- [[return pthread_sigmask (0, (sigset_t *) 0, (sigset_t *) 0);]])
+- ],
+- [gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=yes],
+- [gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=no])
+- LIBS="$gl_save_LIBS"
+- ])
+- if test $gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD = yes; then
+- AC_CACHE_CHECK([whether pthread_sigmask is only a macro],
+- [gl_cv_func_pthread_sigmask_is_macro],
++ if test "$gl_threads_api" = posix; then
++ if test $ac_cv_func_pthread_sigmask = yes; then
++ dnl pthread_sigmask is available without -lpthread.
++ :
++ else
++ if test -n "$LIBMULTITHREAD"; then
++ AC_CACHE_CHECK([for pthread_sigmask in $LIBMULTITHREAD],
++ [gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD],
+ [gl_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBMULTITHREAD"
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <pthread.h>
+ #include <signal.h>
+- #undef pthread_sigmask
+ ]],
+ [[return pthread_sigmask (0, (sigset_t *) 0, (sigset_t *) 0);]])
+ ],
+- [gl_cv_func_pthread_sigmask_is_macro=no],
+- [gl_cv_func_pthread_sigmask_is_macro=yes])
++ [gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=yes],
++ [gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=no])
+ LIBS="$gl_save_LIBS"
+ ])
+- if test $gl_cv_func_pthread_sigmask_is_macro = yes; then
+- dnl On MinGW pthread_sigmask is just a macro which always returns 0.
+- dnl It does not exist as a real function, which is required by POSIX.
+- REPLACE_PTHREAD_SIGMASK=1
+- gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=no
++ if test $gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD = yes; then
++ dnl pthread_sigmask is available with -pthread or -lpthread.
++ LIB_PTHREAD_SIGMASK="$LIBMULTITHREAD"
++ else
++ dnl pthread_sigmask is not available at all.
++ HAVE_PTHREAD_SIGMASK=0
+ fi
+- fi
+- if test $gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD = yes; then
+- dnl pthread_sigmask is available with -pthread or -lpthread.
+- LIB_PTHREAD_SIGMASK="$LIBMULTITHREAD"
+ else
+ dnl pthread_sigmask is not available at all.
+ HAVE_PTHREAD_SIGMASK=0
+ fi
++ fi
++ else
++ dnl pthread_sigmask may exist but does not interoperate with the chosen
++ dnl multithreading facility.
++ dnl If "$gl_threads_api" = pth, we could use the function pth_sigmask,
++ dnl but it is equivalent to sigprocmask, so we choose to emulate
++ dnl pthread_sigmask with sigprocmask also in this case. This yields
++ dnl fewer link dependencies.
++ if test $ac_cv_func_pthread_sigmask = yes; then
++ REPLACE_PTHREAD_SIGMASK=1
+ else
+- dnl pthread_sigmask is not available at all.
+ HAVE_PTHREAD_SIGMASK=0
+ fi
+ fi
+- else
+- dnl pthread_sigmask may exist but does not interoperate with the chosen
+- dnl multithreading facility.
+- dnl If "$gl_threads_api" = pth, we could use the function pth_sigmask,
+- dnl but it is equivalent to sigprocmask, so we choose to emulate
+- dnl pthread_sigmask with sigprocmask also in this case. This yields fewer
+- dnl link dependencies.
++ ], [
++ dnl The module 'threadlib' is not in use, due to --avoid=threadlib being
++ dnl specified.
++ dnl The package either has prepared CPPFLAGS and LIBS for use of
++ dnl POSIX:2008 threads, or wants to build single-threaded programs.
+ if test $ac_cv_func_pthread_sigmask = yes; then
+- REPLACE_PTHREAD_SIGMASK=1
++ dnl pthread_sigmask exists and does not require extra libraries.
++ dnl Assume that it is declared.
++ :
+ else
++ dnl pthread_sigmask either does not exist or needs extra libraries.
+ HAVE_PTHREAD_SIGMASK=0
++ dnl Define the symbol rpl_pthread_sigmask, not pthread_sigmask,
++ dnl so as to not accidentally override the system's pthread_sigmask
++ dnl symbol from libpthread. This is necessary on IRIX 6.5.
++ REPLACE_PTHREAD_SIGMASK=1
+ fi
+- fi
+- ], [
+- dnl The module 'threadlib' is not in use, due to --avoid=threadlib being
+- dnl specified.
+- dnl The package either has prepared CPPFLAGS and LIBS for use of POSIX:2008
+- dnl threads, or wants to build single-threaded programs.
+- if test $ac_cv_func_pthread_sigmask = yes; then
+- dnl pthread_sigmask exists and does not require extra libraries.
+- dnl Assume that it is declared.
+- :
+- else
+- dnl pthread_sigmask either does not exist or needs extra libraries.
+- HAVE_PTHREAD_SIGMASK=0
+- dnl Define the symbol rpl_pthread_sigmask, not pthread_sigmask,
+- dnl so as to not accidentally override the system's pthread_sigmask
+- dnl symbol from libpthread. This is necessary on IRIX 6.5.
+- REPLACE_PTHREAD_SIGMASK=1
+- fi
+- ])
++ ])
++ fi
+
+ AC_SUBST([LIB_PTHREAD_SIGMASK])
+ dnl We don't need a variable LTLIB_PTHREAD_SIGMASK, because when
+--- a/gettext-tools/configure
++++ b/gettext-tools/configure
+@@ -61291,53 +61291,51 @@
+
+
+
+- LIB_PTHREAD_SIGMASK=
+-
+-
+
+-
+- if test "$gl_threads_api" = posix; then
+- if test $ac_cv_func_pthread_sigmask = yes; then
+- :
+- else
+- if test -n "$LIBMULTITHREAD"; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_sigmask in $LIBMULTITHREAD" >&5
+-$as_echo_n "checking for pthread_sigmask in $LIBMULTITHREAD... " >&6; }
+-if ${gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD+:} false; then :
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthread_sigmask is a macro" >&5
++$as_echo_n "checking whether pthread_sigmask is a macro... " >&6; }
++if ${gl_cv_func_pthread_sigmask_macro+:} false; then :
+ $as_echo_n "(cached) " >&6
+ else
+- gl_save_LIBS="$LIBS"
+- LIBS="$LIBS $LIBMULTITHREAD"
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-#include <pthread.h>
+- #include <signal.h>
+-
+-int
+-main ()
+-{
+-return pthread_sigmask (0, (sigset_t *) 0, (sigset_t *) 0);
+- ;
+- return 0;
+-}
+
++#include <pthread.h>
++#include <signal.h>
++#ifdef pthread_sigmask
++ headers_define_pthread_sigmask
++#endif
+ _ACEOF
+-if ac_fn_c_try_link "$LINENO"; then :
+- gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=yes
++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
++ $EGREP "headers_define_pthread_sigmask" >/dev/null 2>&1; then :
++ gl_cv_func_pthread_sigmask_macro=yes
+ else
+- gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=no
++ gl_cv_func_pthread_sigmask_macro=no
+ fi
+-rm -f core conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+- LIBS="$gl_save_LIBS"
++rm -f conftest*
++
+
+ fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD" >&5
+-$as_echo "$gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD" >&6; }
+- if test $gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD = yes; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthread_sigmask is only a macro" >&5
+-$as_echo_n "checking whether pthread_sigmask is only a macro... " >&6; }
+-if ${gl_cv_func_pthread_sigmask_is_macro+:} false; then :
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_pthread_sigmask_macro" >&5
++$as_echo "$gl_cv_func_pthread_sigmask_macro" >&6; }
++
++ LIB_PTHREAD_SIGMASK=
++
++ if test $gl_cv_func_pthread_sigmask_macro = yes; then
++ HAVE_PTHREAD_SIGMASK=0
++ REPLACE_PTHREAD_SIGMASK=1
++ else
++
++
++
++ if test "$gl_threads_api" = posix; then
++ if test $ac_cv_func_pthread_sigmask = yes; then
++ :
++ else
++ if test -n "$LIBMULTITHREAD"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_sigmask in $LIBMULTITHREAD" >&5
++$as_echo_n "checking for pthread_sigmask in $LIBMULTITHREAD... " >&6; }
++if ${gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD+:} false; then :
+ $as_echo_n "(cached) " >&6
+ else
+ gl_save_LIBS="$LIBS"
+@@ -61346,7 +61344,6 @@
+ /* end confdefs.h. */
+ #include <pthread.h>
+ #include <signal.h>
+- #undef pthread_sigmask
+
+ int
+ main ()
+@@ -61358,39 +61355,35 @@
+
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+- gl_cv_func_pthread_sigmask_is_macro=no
++ gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=yes
+ else
+- gl_cv_func_pthread_sigmask_is_macro=yes
++ gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$gl_save_LIBS"
+
+ fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_pthread_sigmask_is_macro" >&5
+-$as_echo "$gl_cv_func_pthread_sigmask_is_macro" >&6; }
+- if test $gl_cv_func_pthread_sigmask_is_macro = yes; then
+- REPLACE_PTHREAD_SIGMASK=1
+- gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=no
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD" >&5
++$as_echo "$gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD" >&6; }
++ if test $gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD = yes; then
++ LIB_PTHREAD_SIGMASK="$LIBMULTITHREAD"
++ else
++ HAVE_PTHREAD_SIGMASK=0
+ fi
+- fi
+- if test $gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD = yes; then
+- LIB_PTHREAD_SIGMASK="$LIBMULTITHREAD"
+ else
+ HAVE_PTHREAD_SIGMASK=0
+ fi
+- else
+- HAVE_PTHREAD_SIGMASK=0
+ fi
+- fi
+- else
+- if test $ac_cv_func_pthread_sigmask = yes; then
+- REPLACE_PTHREAD_SIGMASK=1
+ else
+- HAVE_PTHREAD_SIGMASK=0
++ if test $ac_cv_func_pthread_sigmask = yes; then
++ REPLACE_PTHREAD_SIGMASK=1
++ else
++ HAVE_PTHREAD_SIGMASK=0
++ fi
+ fi
+- fi
+
++ fi
+
+
+
diff --git a/packages/gettext/0.20.1/chksum b/packages/gettext/0.20.1/chksum
new file mode 100644
index 0000000..608e188
--- /dev/null
+++ b/packages/gettext/0.20.1/chksum
@@ -0,0 +1,8 @@
+md5 gettext-0.20.1.tar.xz 9ed9e26ab613b668e0026222a9c23639
+sha1 gettext-0.20.1.tar.xz 62f4a6a2fd5f80bfd0e66c497a04094fa3e07b90
+sha256 gettext-0.20.1.tar.xz 53f02fbbec9e798b0faaf7c73272f83608e835c6288dd58be6c9bb54624a3800
+sha512 gettext-0.20.1.tar.xz 82ffa5a28068272d0587262f8d9269f9629c601da5d122b6645c9c4cf98bfe4149df01bb58522ccf8fe25b931672e18551d7fb34de1cbf6a0463a87f9f8ee221
+md5 gettext-0.20.1.tar.gz bb5b0c0caa028105f3ca1905ddc306e2
+sha1 gettext-0.20.1.tar.gz 2aa01db95b064d7f5d1a46de34a2cc6a57eadf36
+sha256 gettext-0.20.1.tar.gz 66415634c6e8c3fa8b71362879ec7575e27da43da562c798a8a2f223e6e47f5c
+sha512 gettext-0.20.1.tar.gz af6d74986da285df0bdd59524bdf01bb12db448e5ea659dda3b60b660c4a9063c80e8c74cc8751334e065e98348ee0db0079e43c67d485a15e86ae236115fe06
diff --git a/packages/gettext/0.20.1/version.desc b/packages/gettext/0.20.1/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/gettext/0.20.1/version.desc
diff --git a/packages/gettext/package.desc b/packages/gettext/package.desc
index 8805ae2..99d493f 100644
--- a/packages/gettext/package.desc
+++ b/packages/gettext/package.desc
@@ -3,5 +3,5 @@ repository='git https://git.savannah.gnu.org/git/gettext.git'
# a separate package and depend on it in case of devel builds?
bootstrap='./autogen.sh'
mirrors='$(CT_Mirrors GNU gettext)'
-archive_formats='.tar.xz .tar.lz .tar.gz'
+archive_formats='.tar.xz .tar.gz'
signature_format='packed/.sig'
diff --git a/packages/glibc/2.28/0001-x86-Assume-enable-cet-if-GCC-defaults-to-CET-BZ-2522.patch b/packages/glibc/2.28/0001-x86-Assume-enable-cet-if-GCC-defaults-to-CET-BZ-2522.patch
new file mode 100644
index 0000000..b3c82e1
--- /dev/null
+++ b/packages/glibc/2.28/0001-x86-Assume-enable-cet-if-GCC-defaults-to-CET-BZ-2522.patch
@@ -0,0 +1,82 @@
+From 9f917f7b411c307c34eb1bae85d72ffe26167523 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Tue, 3 Dec 2019 21:11:32 +0100
+Subject: [PATCH] x86: Assume --enable-cet if GCC defaults to CET [BZ #25225]
+
+This links in CET support if GCC defaults to CET. Otherwise, __CET__
+is defined, yet CET functionality is not compiled and linked into the
+dynamic loader, resulting in a linker failure due to undefined
+references to _dl_cet_check and _dl_open_check.
+
+(cherry picked from commit 9fb8139079ef0bb1aa33a4ae418cbb113b9b9da7)
+---
+ NEWS | 1 +
+ configure | 23 ++++++++++++++++++++++-
+ configure.ac | 9 ++++++++-
+ 3 files changed, 31 insertions(+), 2 deletions(-)
+
+diff --git a/configure b/configure
+index fde57d63fe..c02753c0fe 100755
+--- a/configure
++++ b/configure
+@@ -3762,11 +3762,32 @@ else
+ fi
+
+
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++#ifndef __CET__
++#error no CET compiler support
++#endif
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ libc_cv_compiler_default_cet=yes
++else
++ libc_cv_compiler_default_cet=no
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++
+ # Check whether --enable-cet was given.
+ if test "${enable_cet+set}" = set; then :
+ enableval=$enable_cet; enable_cet=$enableval
+ else
+- enable_cet=no
++ enable_cet=$libc_cv_compiler_default_cet
+ fi
+
+
+diff --git a/configure.ac b/configure.ac
+index 014e09a5d5..139554b94a 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -464,11 +464,18 @@ AC_ARG_ENABLE([mathvec],
+ [build_mathvec=$enableval],
+ [build_mathvec=notset])
+
++AC_TRY_COMPILE([], [
++#ifndef __CET__
++# error no CET compiler support
++#endif],
++ [libc_cv_compiler_default_cet=yes],
++ [libc_cv_compiler_default_cet=no])
++
+ AC_ARG_ENABLE([cet],
+ AC_HELP_STRING([--enable-cet],
+ [enable Intel Control-flow Enforcement Technology (CET), x86 only]),
+ [enable_cet=$enableval],
+- [enable_cet=no])
++ [enable_cet=$libc_cv_compiler_default_cet])
+
+ # We keep the original values in `$config_*' and never modify them, so we
+ # can write them unchanged into config.make. Everything else uses
+--
+2.20.1
+
diff --git a/packages/glibc/2.29/0001-Add-ARC-architecture.patch b/packages/glibc/2.29/0001-Add-ARC-architecture.patch
index 11b3aea..f7441dd 100644
--- a/packages/glibc/2.29/0001-Add-ARC-architecture.patch
+++ b/packages/glibc/2.29/0001-Add-ARC-architecture.patch
@@ -2290,16 +2290,16 @@ index 00000000000..1152a179c4a
+arc*)
+ base_machine=arc
+ machine=arc
++
++ gccfloat=`$CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null | grep __ARC_FPU_| wc -l`
++ if test "$gccfloat" != "0"; then
++ echo "glibc being configured for double precision floating point"
++ with_fp_cond=1
++ else
++ with_fp_cond=0
++ fi
+ ;;
+esac
-+
-+gccfloat=`$CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null | grep __ARC_FPU_| wc -l`
-+if test "$gccfloat" != "0"; then
-+ echo "glibc being configured for double precision floating point"
-+ with_fp_cond=1
-+else
-+ with_fp_cond=0
-+fi
diff --git a/sysdeps/arc/setjmp.S b/sysdeps/arc/setjmp.S
new file mode 100644
index 00000000000..518545a99e8
diff --git a/packages/glibc/2.29/0002-x86-Assume-enable-cet-if-GCC-defaults-to-CET-BZ-2522.patch b/packages/glibc/2.29/0002-x86-Assume-enable-cet-if-GCC-defaults-to-CET-BZ-2522.patch
new file mode 100644
index 0000000..e188dd0
--- /dev/null
+++ b/packages/glibc/2.29/0002-x86-Assume-enable-cet-if-GCC-defaults-to-CET-BZ-2522.patch
@@ -0,0 +1,82 @@
+From 0b4c3e1e0b8656149d4556d2f81a2958426ebc94 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Tue, 3 Dec 2019 21:08:49 +0100
+Subject: [PATCH] x86: Assume --enable-cet if GCC defaults to CET [BZ #25225]
+
+This links in CET support if GCC defaults to CET. Otherwise, __CET__
+is defined, yet CET functionality is not compiled and linked into the
+dynamic loader, resulting in a linker failure due to undefined
+references to _dl_cet_check and _dl_open_check.
+
+(cherry picked from commit 9fb8139079ef0bb1aa33a4ae418cbb113b9b9da7)
+---
+ NEWS | 1 +
+ configure | 23 ++++++++++++++++++++++-
+ configure.ac | 9 ++++++++-
+ 3 files changed, 31 insertions(+), 2 deletions(-)
+
+diff --git a/configure b/configure
+index 101dfddf37..6a2df7c2be 100755
+--- a/configure
++++ b/configure
+@@ -3777,11 +3777,32 @@ else
+ fi
+
+
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++#ifndef __CET__
++#error no CET compiler support
++#endif
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ libc_cv_compiler_default_cet=yes
++else
++ libc_cv_compiler_default_cet=no
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++
+ # Check whether --enable-cet was given.
+ if test "${enable_cet+set}" = set; then :
+ enableval=$enable_cet; enable_cet=$enableval
+ else
+- enable_cet=no
++ enable_cet=$libc_cv_compiler_default_cet
+ fi
+
+
+diff --git a/configure.ac b/configure.ac
+index 46a74687a6..f483afdc2e 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -472,11 +472,18 @@ AC_ARG_ENABLE([mathvec],
+ [build_mathvec=$enableval],
+ [build_mathvec=notset])
+
++AC_TRY_COMPILE([], [
++#ifndef __CET__
++# error no CET compiler support
++#endif],
++ [libc_cv_compiler_default_cet=yes],
++ [libc_cv_compiler_default_cet=no])
++
+ AC_ARG_ENABLE([cet],
+ AC_HELP_STRING([--enable-cet],
+ [enable Intel Control-flow Enforcement Technology (CET), x86 only]),
+ [enable_cet=$enableval],
+- [enable_cet=no])
++ [enable_cet=$libc_cv_compiler_default_cet])
+
+ # We keep the original values in `$config_*' and never modify them, so we
+ # can write them unchanged into config.make. Everything else uses
+--
+2.20.1
+
diff --git a/packages/glibc/2.30/0000-typedef-caddr.patch b/packages/glibc/2.30/0000-typedef-caddr.patch
new file mode 100644
index 0000000..a328da1
--- /dev/null
+++ b/packages/glibc/2.30/0000-typedef-caddr.patch
@@ -0,0 +1,17 @@
+---
+ posix/sys/types.h | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/posix/sys/types.h
++++ b/posix/sys/types.h
+@@ -112,7 +112,10 @@
+ #ifdef __USE_MISC
+ # ifndef __daddr_t_defined
+ typedef __daddr_t daddr_t;
++# if ! defined(caddr_t) && ! defined(__caddr_t_defined)
+ typedef __caddr_t caddr_t;
++# define __caddr_t_defined
++# endif
+ # define __daddr_t_defined
+ # endif
+ #endif
diff --git a/packages/glibc/2.30/0001-Add-ARC-architecture.patch b/packages/glibc/2.30/0001-Add-ARC-architecture.patch
new file mode 100644
index 0000000..be2ee8a
--- /dev/null
+++ b/packages/glibc/2.30/0001-Add-ARC-architecture.patch
@@ -0,0 +1,7832 @@
+glibc: Add ARC architecture support to Glibc 2.30
+
+This was generated from Synopsys GitHub Glibc WIP fork [1] this way:
+----------------->8-----------------
+git diff glibc-2.30..arc-2.30-2019.09.06 ':!NEWS' ':!ChangeLog'
+----------------->8-----------------
+
+[1] https://github.com/foss-for-synopsys-dwc-arc-processors/glibc
+
+Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
+---
+diff --git a/elf/elf.h b/elf/elf.h
+index 7c6d6094edb..0aa5cb58463 100644
+--- a/elf/elf.h
++++ b/elf/elf.h
+@@ -330,7 +330,7 @@ typedef struct
+ #define EM_CLOUDSHIELD 192 /* CloudShield */
+ #define EM_COREA_1ST 193 /* KIPO-KAIST Core-A 1st gen. */
+ #define EM_COREA_2ND 194 /* KIPO-KAIST Core-A 2nd gen. */
+-#define EM_ARC_COMPACT2 195 /* Synopsys ARCompact V2 */
++#define EM_ARCV2 195 /* Synopsys ARCv2 ISA. */
+ #define EM_OPEN8 196 /* Open8 RISC */
+ #define EM_RL78 197 /* Renesas RL78 */
+ #define EM_VIDEOCORE5 198 /* Broadcom VideoCore V */
+@@ -4024,6 +4024,74 @@ enum
+ #define R_NDS32_TLS_TPOFF 102
+ #define R_NDS32_TLS_DESC 119
+
++/* ARCompact/ARCv2 specific relocs. */
++#define R_ARC_NONE 0x0
++#define R_ARC_8 0x1
++#define R_ARC_16 0x2
++#define R_ARC_24 0x3
++#define R_ARC_32 0x4
++#define R_ARC_B26 0x5
++#define R_ARC_B22_PCREL 0x6
++#define R_ARC_H30 0x7
++#define R_ARC_N8 0x8
++#define R_ARC_N16 0x9
++#define R_ARC_N24 0xA
++#define R_ARC_N32 0xB
++#define R_ARC_SDA 0xC
++#define R_ARC_SECTOFF 0xD
++#define R_ARC_S21H_PCREL 0xE
++#define R_ARC_S21W_PCREL 0xF
++#define R_ARC_S25H_PCREL 0x10
++#define R_ARC_S25W_PCREL 0x11
++#define R_ARC_SDA32 0x12
++#define R_ARC_SDA_LDST 0x13
++#define R_ARC_SDA_LDST1 0x14
++#define R_ARC_SDA_LDST2 0x15
++#define R_ARC_SDA16_LD 0x16
++#define R_ARC_SDA16_LD1 0x17
++#define R_ARC_SDA16_LD2 0x18
++#define R_ARC_S13_PCREL 0x19
++#define R_ARC_W 0x1A
++#define R_ARC_32_ME 0x1B
++#define R_ARC_N32_ME 0x1C
++#define R_ARC_SECTOFF_ME 0x1D
++#define R_ARC_SDA32_ME 0x1E
++#define R_ARC_W_ME 0x1F
++#define R_ARC_H30_ME 0x20
++#define R_ARC_SECTOFF_U8 0x21
++#define R_ARC_SECTOFF_S9 0x22
++#define R_AC_SECTOFF_U8 0x23
++#define R_AC_SECTOFF_U8_1 0x24
++#define R_AC_SECTOFF_U8_2 0x25
++#define R_AC_SECTOFF_S9 0x26
++#define R_AC_SECTOFF_S9_1 0x27
++#define R_AC_SECTOFF_S9_2 0x28
++#define R_ARC_SECTOFF_ME_1 0x29
++#define R_ARC_SECTOFF_ME_2 0x2A
++#define R_ARC_SECTOFF_1 0x2B
++#define R_ARC_SECTOFF_2 0x2C
++#define R_ARC_PC32 0x32
++#define R_ARC_GOTPC32 0x33
++#define R_ARC_PLT32 0x34
++#define R_ARC_COPY 0x35
++#define R_ARC_GLOB_DAT 0x36
++#define R_ARC_JUMP_SLOT 0x37
++#define R_ARC_RELATIVE 0x38
++#define R_ARC_GOTOFF 0x39
++#define R_ARC_GOTPC 0x3A
++#define R_ARC_GOT32 0x3B
++
++#define R_ARC_TLS_DTPMOD 0x42
++#define R_ARC_TLS_DTPOFF 0x43
++#define R_ARC_TLS_TPOFF 0x44
++#define R_ARC_TLS_GD_GOT 0x45
++#define R_ARC_TLS_GD_LD 0x46
++#define R_ARC_TLS_GD_CALL 0x47
++#define R_ARC_TLS_IE_GOT 0x48
++#define R_ARC_TLS_DTPOFF_S9 0x4a
++#define R_ARC_TLS_LE_S9 0x4a
++#define R_ARC_TLS_LE_32 0x4b
++
+ __END_DECLS
+
+ #endif /* elf.h */
+diff --git a/locale/Makefile b/locale/Makefile
+index d78cf9b83ac..23fe4bcd8a7 100644
+--- a/locale/Makefile
++++ b/locale/Makefile
+@@ -28,6 +28,7 @@ routines = setlocale findlocale loadlocale loadarchive \
+ localeconv nl_langinfo nl_langinfo_l mb_cur_max \
+ newlocale duplocale freelocale uselocale
+ tests = tst-C-locale tst-locname tst-duplocale
++tests-special = $(objpfx)tst-locale-locpath.out
+ categories = ctype messages monetary numeric time paper name \
+ address telephone measurement identification collate
+ aux = $(categories:%=lc-%) $(categories:%=C-%) SYS_libc C_name \
+@@ -62,10 +63,6 @@ lib-modules := charmap-dir simple-hash xmalloc xstrdup \
+ GPERF = gperf
+ GPERFFLAGS = -acCgopt -k1,2,5,9,$$ -L ANSI-C
+
+-ifeq ($(run-built-tests),yes)
+-tests-special += $(objpfx)tst-locale-locpath.out
+-endif
+-
+ include ../Rules
+
+ CFLAGS-md5.c += -I../crypt
+diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py
+index aa6884e046d..9d3f22e2ccc 100755
+--- a/scripts/build-many-glibcs.py
++++ b/scripts/build-many-glibcs.py
+@@ -155,6 +155,9 @@ class Context(object):
+ 'cfg': ['--disable-multi-arch']}])
+ self.add_config(arch='aarch64_be',
+ os_name='linux-gnu')
++ self.add_config(arch='arc',
++ os_name='linux-gnu',
++ gcc_cfg=['--disable-multilib', '--with-cpu=archs'])
+ self.add_config(arch='alpha',
+ os_name='linux-gnu')
+ self.add_config(arch='arm',
+@@ -1259,6 +1262,7 @@ class Config(object):
+ def install_linux_headers(self, cmdlist):
+ """Install Linux kernel headers."""
+ arch_map = {'aarch64': 'arm64',
++ 'arc': 'arc',
+ 'alpha': 'alpha',
+ 'arm': 'arm',
+ 'csky': 'csky',
+diff --git a/stdlib/longlong.h b/stdlib/longlong.h
+index 3dd8dc3aa80..1f0ce420425 100644
+--- a/stdlib/longlong.h
++++ b/stdlib/longlong.h
+@@ -199,7 +199,8 @@ extern UDItype __udiv_qrnnd (UDItype *, UDItype, UDItype, UDItype);
+ : "%r" ((USItype) (ah)), \
+ "rICal" ((USItype) (bh)), \
+ "%r" ((USItype) (al)), \
+- "rICal" ((USItype) (bl)))
++ "rICal" ((USItype) (bl)) \
++ : "cc")
+ #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ __asm__ ("sub.f %1, %4, %5\n\tsbc %0, %2, %3" \
+ : "=r" ((USItype) (sh)), \
+@@ -207,7 +208,8 @@ extern UDItype __udiv_qrnnd (UDItype *, UDItype, UDItype, UDItype);
+ : "r" ((USItype) (ah)), \
+ "rICal" ((USItype) (bh)), \
+ "r" ((USItype) (al)), \
+- "rICal" ((USItype) (bl)))
++ "rICal" ((USItype) (bl)) \
++ : "cc")
+
+ #define __umulsidi3(u,v) ((UDItype)(USItype)u*(USItype)v)
+ #ifdef __ARC_NORM__
+diff --git a/support/Makefile b/support/Makefile
+index ab66913a02d..c64a0a4b907 100644
+--- a/support/Makefile
++++ b/support/Makefile
+@@ -184,12 +184,7 @@ CFLAGS-support_paths.c = \
+ -DSBINDIR_PATH=\"$(sbindir)\" \
+ -DROOTSBINDIR_PATH=\"$(rootsbindir)\"
+
+-ifeq (,$(CXX))
+ LINKS_DSO_PROGRAM = links-dso-program-c
+-else
+-LINKS_DSO_PROGRAM = links-dso-program
+-LDLIBS-links-dso-program = -lstdc++ -lgcc -lgcc_s $(libunwind)
+-endif
+
+ ifeq (yes,$(have-selinux))
+ LDLIBS-$(LINKS_DSO_PROGRAM) += -lselinux
+diff --git a/sysdeps/arc/Implies b/sysdeps/arc/Implies
+new file mode 100644
+index 00000000000..a0f0b00cfac
+--- /dev/null
++++ b/sysdeps/arc/Implies
+@@ -0,0 +1,4 @@
++init_array
++wordsize-32
++ieee754/flt-32
++ieee754/dbl-64
+diff --git a/sysdeps/arc/Makefile b/sysdeps/arc/Makefile
+new file mode 100644
+index 00000000000..8d2fbe00c5e
+--- /dev/null
++++ b/sysdeps/arc/Makefile
+@@ -0,0 +1,25 @@
++# ARC Makefile
++# Copyright (C) 1993-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/>.
++
++# We don't support long doubles as a distinct type. We don't need to set
++# this variable; it's here mostly for documentational purposes.
++long-double-fcts = no
++
++ifeq ($(subdir),debug)
++CFLAGS-backtrace.c += -funwind-tables
++endif
+diff --git a/sysdeps/arc/Versions b/sysdeps/arc/Versions
+new file mode 100644
+index 00000000000..ca0856d2dbd
+--- /dev/null
++++ b/sysdeps/arc/Versions
+@@ -0,0 +1,6 @@
++libc {
++ GLIBC_2.30 {
++ __syscall_error;
++ __mcount;
++ }
++}
+diff --git a/sysdeps/arc/__longjmp.S b/sysdeps/arc/__longjmp.S
+new file mode 100644
+index 00000000000..8296aa445f6
+--- /dev/null
++++ b/sysdeps/arc/__longjmp.S
+@@ -0,0 +1,50 @@
++/* longjmp for ARC.
++ Copyright (C) 2017-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/>. */
++
++#include <sysdep.h>
++#include <jmpbuf-offsets.h>
++
++;@ r0 = jump buffer from which regs will be restored
++;@ r1 = value that setjmp( ) will return due to this longjmp
++
++ENTRY (__longjmp)
++
++ ld_s r13, [r0]
++ ld_s r14, [r0,4]
++ ld r15, [r0,8]
++ ld r16, [r0,12]
++ ld r17, [r0,16]
++ ld r18, [r0,20]
++ ld r19, [r0,24]
++ ld r20, [r0,28]
++ ld r21, [r0,32]
++ ld r22, [r0,36]
++ ld r23, [r0,40]
++ ld r24, [r0,44]
++ ld r25, [r0,48]
++
++ ld blink, [r0,60]
++ ld fp, [r0,52]
++ ld sp, [r0,56]
++
++ mov.f r0, r1 ; get the setjmp return value(due to longjmp) in place
++
++ j.d [blink] ; to caller of setjmp location, right after the call
++ mov.z r0, 1 ; can't let setjmp return 0 when it is due to longjmp
++
++END (__longjmp)
+diff --git a/sysdeps/arc/abort-instr.h b/sysdeps/arc/abort-instr.h
+new file mode 100644
+index 00000000000..49f33613c40
+--- /dev/null
++++ b/sysdeps/arc/abort-instr.h
+@@ -0,0 +1,2 @@
++/* FLAG 1 is privilege mode only instruction, hence will crash any program. */
++#define ABORT_INSTRUCTION asm ("flag 1")
+diff --git a/sysdeps/arc/atomic-machine.h b/sysdeps/arc/atomic-machine.h
+new file mode 100644
+index 00000000000..bdc91d0558f
+--- /dev/null
++++ b/sysdeps/arc/atomic-machine.h
+@@ -0,0 +1,73 @@
++/* Low-level functions for atomic operations. ARC version.
++ Copyright (C) 2012-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 _ARC_BITS_ATOMIC_H
++#define _ARC_BITS_ATOMIC_H 1
++
++#include <stdint.h>
++
++typedef int32_t atomic32_t;
++typedef uint32_t uatomic32_t;
++typedef int_fast32_t atomic_fast32_t;
++typedef uint_fast32_t uatomic_fast32_t;
++
++typedef intptr_t atomicptr_t;
++typedef uintptr_t uatomicptr_t;
++typedef intmax_t atomic_max_t;
++typedef uintmax_t uatomic_max_t;
++
++#define __HAVE_64B_ATOMICS 0
++#define USE_ATOMIC_COMPILER_BUILTINS 1
++
++/* ARC does have legacy atomic EX reg, [mem] instruction but the micro-arch
++ is not as optimal as LLOCK/SCOND specially for SMP. */
++#define ATOMIC_EXCHANGE_USES_CAS 1
++
++#define __arch_compare_and_exchange_bool_8_acq(mem, newval, oldval) \
++ (abort (), 0)
++#define __arch_compare_and_exchange_bool_16_acq(mem, newval, oldval) \
++ (abort (), 0)
++#define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \
++ (abort (), 0)
++
++#define __arch_compare_and_exchange_val_8_int(mem, newval, oldval, model) \
++ (abort (), (__typeof (*mem)) 0)
++#define __arch_compare_and_exchange_val_16_int(mem, newval, oldval, model) \
++ (abort (), (__typeof (*mem)) 0)
++#define __arch_compare_and_exchange_val_64_int(mem, newval, oldval, model) \
++ (abort (), (__typeof (*mem)) 0)
++
++#define __arch_compare_and_exchange_val_32_int(mem, newval, oldval, model) \
++ ({ \
++ typeof (*mem) __oldval = (oldval); \
++ __atomic_compare_exchange_n (mem, (void *) &__oldval, newval, 0, \
++ model, __ATOMIC_RELAXED); \
++ __oldval; \
++ })
++
++#define atomic_compare_and_exchange_val_acq(mem, new, old) \
++ __atomic_val_bysize (__arch_compare_and_exchange_val, int, \
++ mem, new, old, __ATOMIC_ACQUIRE)
++
++#ifdef __ARC700__
++#define atomic_full_barrier() ({ asm volatile ("sync":::"memory"); })
++#else
++#define atomic_full_barrier() ({ asm volatile ("dmb 3":::"memory"); })
++#endif
++
++#endif /* _ARC_BITS_ATOMIC_H */
+diff --git a/sysdeps/arc/bits/endian.h b/sysdeps/arc/bits/endian.h
+new file mode 100644
+index 00000000000..46f41e3cffe
+--- /dev/null
++++ b/sysdeps/arc/bits/endian.h
+@@ -0,0 +1,12 @@
++/* Although ARC CPU can do BE, it is not supported. */
++
++#ifndef _ENDIAN_H
++# error "Never use <bits/endian.h> directly; include <endian.h> instead."
++#endif
++
++#ifdef __LITTLE_ENDIAN__
++# define __BYTE_ORDER __LITTLE_ENDIAN
++#endif
++#ifdef __BIG_ENDIAN__
++# error "Big Endian NOt supported on ARC"
++#endif
+diff --git a/sysdeps/arc/bits/fenv.h b/sysdeps/arc/bits/fenv.h
+new file mode 100644
+index 00000000000..58388fb43a3
+--- /dev/null
++++ b/sysdeps/arc/bits/fenv.h
+@@ -0,0 +1,72 @@
++/* Copyright (C) 2012-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 _FENV_H
++# error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
++#endif
++
++enum
++ {
++ FE_INVALID =
++# define FE_INVALID (0x01)
++ FE_INVALID,
++ FE_DIVBYZERO =
++# define FE_DIVBYZERO (0x02)
++ FE_DIVBYZERO,
++ FE_OVERFLOW =
++# define FE_OVERFLOW (0x04)
++ FE_OVERFLOW,
++ FE_UNDERFLOW =
++# define FE_UNDERFLOW (0x08)
++ FE_UNDERFLOW,
++ FE_INEXACT =
++# define FE_INEXACT (0x10)
++ FE_INEXACT
++ };
++
++# define FE_ALL_EXCEPT \
++ (FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT)
++
++enum
++ {
++ FE_TOWARDZERO =
++# define FE_TOWARDZERO (0x0)
++ FE_TOWARDZERO,
++ FE_TONEAREST =
++# define FE_TONEAREST (0x1)
++ FE_TONEAREST,
++ FE_UPWARD =
++# define FE_UPWARD (0x2)
++ FE_UPWARD,
++ FE_DOWNWARD =
++# define FE_DOWNWARD (0x3)
++ FE_DOWNWARD
++ };
++
++typedef unsigned int fexcept_t;
++typedef unsigned int fenv_t;
++
++/* If the default argument is used we use this value. */
++#define FE_DFL_ENV ((const fenv_t *) -1)
++
++#if __GLIBC_USE (IEC_60559_BFP_EXT)
++/* Type representing floating-point control modes. */
++typedef unsigned int femode_t;
++
++/* Default floating-point control modes. */
++# define FE_DFL_MODE ((const femode_t *) -1L)
++#endif
+diff --git a/sysdeps/arc/bits/link.h b/sysdeps/arc/bits/link.h
+new file mode 100644
+index 00000000000..c4508ab6664
+--- /dev/null
++++ b/sysdeps/arc/bits/link.h
+@@ -0,0 +1,52 @@
++/* Machine-specific declarations for dynamic linker interface, ARC version.
++ Copyright (C) 2009-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 _LINK_H
++# error "Never include <bits/link.h> directly; use <link.h> instead."
++#endif
++
++/* Registers for entry into PLT on ARC. */
++typedef struct La_arc_regs
++{
++ uint32_t lr_reg[8]; /* r0 through r7 (upto 8 args). */
++} La_arc_regs;
++
++/* Return values for calls from PLT on ARC. */
++typedef struct La_arc_retval
++{
++ /* For ARCv2, a 64-bit integer return value can use 2 regs. */
++ uint32_t lrv_reg[2];
++} La_arc_retval;
++
++__BEGIN_DECLS
++
++extern ElfW(Addr) la_arc_gnu_pltenter (ElfW(Sym) *__sym, unsigned int __ndx,
++ uintptr_t *__refcook,
++ uintptr_t *__defcook,
++ La_arc_regs *__regs,
++ unsigned int *__flags,
++ const char *__symname,
++ long int *__framesizep);
++extern unsigned int la_arc_gnu_pltexit (ElfW(Sym) *__sym, unsigned int __ndx,
++ uintptr_t *__refcook,
++ uintptr_t *__defcook,
++ const La_arc_regs *__inregs,
++ La_arc_retval *__outregs,
++ const char *symname);
++
++__END_DECLS
+diff --git a/sysdeps/arc/bits/setjmp.h b/sysdeps/arc/bits/setjmp.h
+new file mode 100644
+index 00000000000..3cb457d097c
+--- /dev/null
++++ b/sysdeps/arc/bits/setjmp.h
+@@ -0,0 +1,26 @@
++/* Define the machine-dependent type `jmp_buf'. ARC version.
++ Copyright (C) 1992-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 _ARC_BITS_SETJMP_H
++#define _ARC_BITS_SETJMP_H 1
++
++/* Saves r13-r25 (callee-saved), fp (frame pointer), sp (stack pointer),
++ blink (branch-n-link). */
++typedef long int __jmp_buf[32];
++
++#endif
+diff --git a/sysdeps/arc/bsd-_setjmp.S b/sysdeps/arc/bsd-_setjmp.S
+new file mode 100644
+index 00000000000..90b99cd8c3e
+--- /dev/null
++++ b/sysdeps/arc/bsd-_setjmp.S
+@@ -0,0 +1 @@
++/* _setjmp is in setjmp.S. */
+diff --git a/sysdeps/arc/bsd-setjmp.S b/sysdeps/arc/bsd-setjmp.S
+new file mode 100644
+index 00000000000..d3b823c118b
+--- /dev/null
++++ b/sysdeps/arc/bsd-setjmp.S
+@@ -0,0 +1 @@
++/* setjmp is in setjmp.S. */
+diff --git a/sysdeps/arc/configure b/sysdeps/arc/configure
+new file mode 100644
+index 00000000000..52e286da2eb
+--- /dev/null
++++ b/sysdeps/arc/configure
+@@ -0,0 +1,14 @@
++# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
++ # Local configure fragment for sysdeps/arc.
++
++$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
++
++libc_cv_have_sdata_section=no
++
++# For ARC, historically ; was used for comments and not newline
++# Later # also got added to comment list, but ; couldn't be switched to
++# canonical newline as there's lots of code out there which will break
++libc_cv_asm_line_sep='`'
++cat >>confdefs.h <<_ACEOF
++#define ASM_LINE_SEP $libc_cv_asm_line_sep
++_ACEOF
+diff --git a/sysdeps/arc/configure.ac b/sysdeps/arc/configure.ac
+new file mode 100644
+index 00000000000..1074d312f03
+--- /dev/null
++++ b/sysdeps/arc/configure.ac
+@@ -0,0 +1,11 @@
++GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
++# Local configure fragment for sysdeps/arc.
++
++AC_DEFINE(PI_STATIC_AND_HIDDEN)
++libc_cv_have_sdata_section=no
++
++# For ARC, historically ; was used for comments and not newline
++# Later # also got added to comment list, but ; couldn't be switched to
++# canonical newline as there's lots of code out there which will break
++libc_cv_asm_line_sep='`'
++AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
+diff --git a/sysdeps/arc/dl-machine.h b/sysdeps/arc/dl-machine.h
+new file mode 100644
+index 00000000000..c81acb9d4fd
+--- /dev/null
++++ b/sysdeps/arc/dl-machine.h
+@@ -0,0 +1,340 @@
++/* Machine-dependent ELF dynamic relocation inline functions. ARC version.
++ Copyright (C) 1995-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 dl_machine_h
++#define dl_machine_h
++
++#define ELF_MACHINE_NAME "arc"
++
++#include <entry.h>
++
++#ifndef ENTRY_POINT
++# error ENTRY_POINT needs to be defined for ARC
++#endif
++
++#include <string.h>
++#include <link.h>
++#include <dl-tls.h>
++
++/* Dynamic Linking ABI for ARCv2 ISA.
++
++ PLT
++ -------------------------------- <---- DT_PLTGOT
++ | ld r11, [pcl, off-to-GOT[1] | 0
++ | | 4
++ plt0 | ld r10, [pcl, off-to-GOT[2] | 8
++ | | 12
++ | j [r10] | 16
++ --------------------------------
++ | Base address of GOT | 20
++ --------------------------------
++ | ld r12, [pcl, off-to-GOT[3] | 24
++ plt1 | |
++ | j.d [r12] | 32
++ | mov r12, pcl | 36
++ --------------------------------
++ | | 40
++ ~ ~
++ ~ ~
++ | |
++ --------------------------------
++
++ .got
++ --------------
++ | [0] |
++ | ... | Runtime address for data symbols
++ | [n] |
++ --------------
++
++ .got.plt
++ --------------
++ | [0] | Build address of .dynamic
++ --------------
++ | [1] | Module info - setup by ld.so
++ --------------
++ | [2] | resolver entry point
++ --------------
++ | [3] |
++ | ... | Runtime address for function symbols
++ | [f] |
++ --------------
++
++ For ARCompact, the PLT is 12 bytes due to short instructions
++
++ --------------------------------
++ | ld r12, [pcl, off-to-GOT[3] | 24 (12 bytes each)
++ plt1 | |
++ | j_s.d [r12] | 32
++ | mov_s r12, pcl | 34
++ --------------------------------
++ | | 36 */
++
++/* Return nonzero iff ELF header is compatible with the running host. */
++static inline int
++elf_machine_matches_host (const Elf32_Ehdr *ehdr)
++{
++ return (ehdr->e_machine == EM_ARCV2 /* ARC HS. */
++ || ehdr->e_machine == EM_ARC_COMPACT); /* ARC 700. */
++}
++
++/* Get build time address of .dynamic as setup in GOT[0]
++ This is called very early in _dl_start() so it has not been relocated to
++ runtime value. */
++static inline ElfW(Addr)
++elf_machine_dynamic (void)
++{
++ extern const ElfW(Addr) _GLOBAL_OFFSET_TABLE_[] attribute_hidden;
++ return _GLOBAL_OFFSET_TABLE_[0];
++}
++
++
++/* Return the run-time load address of the shared object. */
++static inline ElfW(Addr)
++elf_machine_load_address (void)
++{
++ ElfW(Addr) build_addr, run_addr;
++
++ /* For build address, below generates
++ ld r0, [pcl, _GLOBAL_OFFSET_TABLE_@pcl]. */
++ build_addr = elf_machine_dynamic ();
++ __asm__ ("add %0, pcl, _DYNAMIC@pcl \n" : "=r" (run_addr));
++
++ return run_addr - build_addr;
++}
++
++/* Set up the loaded object described by L so its unrelocated PLT
++ entries will jump to the on-demand fixup code in dl-runtime.c. */
++
++static inline int
++__attribute__ ((always_inline))
++elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
++{
++ extern void _dl_runtime_resolve (Elf32_Word);
++
++ if (l->l_info[DT_JMPREL] && lazy)
++ {
++ /* On ARC DT_PLTGOT point to .plt whose 5th word (after the PLT header)
++ contains the address of .got. */
++ ElfW(Addr) *plt_base = (ElfW(Addr) *) D_PTR (l, l_info[DT_PLTGOT]);
++ ElfW(Addr) *got = (ElfW(Addr) *) (plt_base[5] + l->l_addr);
++
++ got[1] = (ElfW(Addr)) l; /* Identify this shared object. */
++
++ /* This function will get called to fix up the GOT entry indicated by
++ the offset on the stack, and then jump to the resolved address. */
++ got[2] = (ElfW(Addr)) &_dl_runtime_resolve;
++ }
++
++ return lazy;
++}
++
++/* What this code does:
++ -ldso starts execution here when kernel returns from execve()
++ -calls into generic ldso entry point _dl_start( )
++ -optionally adjusts argc for executable if exec passed as cmd
++ -calls into app main with address of finaliser. */
++
++#define RTLD_START asm ("\
++.text \n\
++.globl __start \n\
++.type __start, @function \n\
++__start: \n\
++ ; (1). bootstrap ld.so \n\
++ bl.d _dl_start \n\
++ mov_s r0, sp ; pass ptr to aux vector tbl \n\
++ mov r13, r0 ; safekeep app elf entry point \n\
++ \n\
++ ; (2). If ldso ran with executable as arg \n\
++ ; skip the extra args calc by dl_start() \n\
++ ld_s r1, [sp] ; orig argc \n\
++ ld r12, [pcl, _dl_skip_args@pcl] \n\
++ breq r12, 0, 1f \n\
++ \n\
++ add2 sp, sp, r12 ; discard argv entries from stack\n\
++ sub_s r1, r1, r12 ; adjusted argc, on stack \n\
++ st_s r1, [sp] \n\
++ add r2, sp, 4 \n\
++ ld r3, [pcl, _dl_argv@gotpc] ; ST doesn't support this addressing mode \n\
++ st r2, [r3] \n\
++1: \n\
++ ; (3). call preinit stuff \n\
++ ld r0, [pcl, _rtld_local@pcl] \n\
++ add r2, sp, 4 ; argv \n\
++ add2 r3, r2, r1 \n\
++ add r3, r3, 4 ; env \n\
++ bl _dl_init@plt \n\
++ \n\
++ ; (4) call app elf entry point \n\
++ add r0, pcl, _dl_fini@pcl \n\
++ j [r13] \n\
++ \n\
++ .size __start,.-__start \n\
++ .previous \n\
++");
++
++/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so
++ PLT entries should not be allowed to define the value.
++ ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
++ of the main executable's symbols, as for a COPY reloc. */
++#define elf_machine_type_class(type) \
++ ((((type) == R_ARC_JUMP_SLOT \
++ || (type) == R_ARC_TLS_DTPMOD \
++ || (type) == R_ARC_TLS_DTPOFF \
++ || (type) == R_ARC_TLS_TPOFF) * ELF_RTYPE_CLASS_PLT) \
++ | (((type) == R_ARC_COPY) * ELF_RTYPE_CLASS_COPY))
++
++/* A reloc type used for ld.so cmdline arg lookups to reject PLT entries. */
++#define ELF_MACHINE_JMP_SLOT R_ARC_JUMP_SLOT
++
++/* ARC uses Elf32_Rela relocations. */
++#define ELF_MACHINE_NO_REL 1
++#define ELF_MACHINE_NO_RELA 0
++
++/* Fixup a PLT entry to bounce directly to the function at VALUE. */
++
++static inline ElfW(Addr)
++elf_machine_fixup_plt (struct link_map *map, lookup_t t,
++ const ElfW(Sym) *refsym, const ElfW(Sym) *sym,
++ const Elf32_Rela *reloc,
++ ElfW(Addr) *reloc_addr, ElfW(Addr) value)
++{
++ return *reloc_addr = value;
++}
++
++/* Return the final value of a plt relocation. */
++static inline ElfW(Addr)
++elf_machine_plt_value (struct link_map *map, const Elf32_Rela *reloc,
++ ElfW(Addr) value)
++{
++ return value;
++}
++
++/* Names of the architecture-specific auditing callback functions. */
++#define ARCH_LA_PLTENTER arc_gnu_pltenter
++#define ARCH_LA_PLTEXIT arc_gnu_pltexit
++
++#endif /* dl_machine_h */
++
++#ifdef RESOLVE_MAP
++
++auto inline void
++__attribute__ ((always_inline))
++elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc,
++ const ElfW(Sym) *sym, const struct r_found_version *version,
++ void *const reloc_addr_arg, int skip_ifunc)
++{
++ ElfW(Addr) *const reloc_addr = reloc_addr_arg;
++ const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
++
++ if (__glibc_unlikely (r_type == R_ARC_RELATIVE))
++ *reloc_addr += map->l_addr;
++ else if (__glibc_unlikely (r_type == R_ARC_NONE))
++ return;
++ else
++ {
++ const ElfW(Sym) *const refsym = sym;
++ struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
++ ElfW(Addr) value = SYMBOL_ADDRESS (sym_map, sym, true);
++
++ switch (r_type)
++ {
++ case R_ARC_COPY:
++ if (__glibc_unlikely (sym == NULL))
++ /* This can happen in trace mode if an object could not be
++ found. */
++ break;
++
++ size_t size = sym->st_size;
++ if (__glibc_unlikely (size != refsym->st_size))
++ {
++ const char *strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
++ if (sym->st_size > refsym->st_size)
++ size = refsym->st_size;
++ if (sym->st_size > refsym->st_size || GLRO(dl_verbose))
++ _dl_error_printf ("\
++ %s: Symbol `%s' has different size in shared object, consider re-linking\n",
++ rtld_progname ?: "<program name unknown>",
++ strtab + refsym->st_name);
++ }
++
++ memcpy (reloc_addr_arg, (void *) value, size);
++ break;
++ case R_ARC_GLOB_DAT:
++ case R_ARC_JUMP_SLOT:
++ *reloc_addr = value;
++ break;
++ case R_ARC_TLS_DTPMOD:
++ if (sym_map != NULL)
++ /* Get the information from the link map returned by the
++ resolv function. */
++ *reloc_addr = sym_map->l_tls_modid;
++ break;
++
++ case R_ARC_TLS_DTPOFF:
++ if (sym != NULL)
++ /* Offset set by the linker in the GOT entry would be overwritten
++ by dynamic loader instead of added to the symbol location.
++ Other target have the same approach on DTSOFF relocs. */
++ *reloc_addr += sym->st_value;
++ break;
++
++ case R_ARC_TLS_TPOFF:
++ if (sym != NULL)
++ {
++ CHECK_STATIC_TLS (map, sym_map);
++ *reloc_addr = sym_map->l_tls_offset + sym->st_value + reloc->r_addend;
++ }
++ break;
++ case R_ARC_32:
++ *reloc_addr += value + reloc->r_addend;
++ break;
++
++ case R_ARC_PC32:
++ *reloc_addr += value + reloc->r_addend - (unsigned long int) reloc_addr;
++ break;
++
++ default:
++ _dl_reloc_bad_type (map, r_type, 0);
++ break;
++ }
++ }
++}
++
++auto inline void
++__attribute__ ((always_inline))
++elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
++ void *const reloc_addr_arg)
++{
++ ElfW(Addr) *const reloc_addr = reloc_addr_arg;
++ *reloc_addr += l_addr; // + reloc->r_addend;
++}
++
++auto inline void
++__attribute__ ((always_inline))
++elf_machine_lazy_rel (struct link_map *map,
++ ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
++ int skip_ifunc)
++{
++ ElfW(Addr) *const reloc_addr = (void *) (l_addr + reloc->r_offset);
++ if (ELF32_R_TYPE (reloc->r_info) == R_ARC_JUMP_SLOT)
++ *reloc_addr += l_addr;
++ else
++ _dl_reloc_bad_type (map, ELF32_R_TYPE (reloc->r_info), 1);
++}
++
++#endif /* RESOLVE_MAP */
+diff --git a/sysdeps/arc/dl-runtime.c b/sysdeps/arc/dl-runtime.c
+new file mode 100644
+index 00000000000..48f4a5a7e1d
+--- /dev/null
++++ b/sysdeps/arc/dl-runtime.c
+@@ -0,0 +1,39 @@
++/* dl-runtime helpers for ARC.
++ Copyright (C) 2017-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/>. */
++
++/* PLT jump into resolver passes PC of PLTn, while _dl_fixup expects the
++ address of corresponding .rela.plt entry. */
++
++#ifdef __A7__
++# define ARC_PLT_SIZE 12
++#else
++# define ARC_PLT_SIZE 16
++#endif
++
++#define reloc_index \
++({ \
++ unsigned long int plt0 = D_PTR (l, l_info[DT_PLTGOT]); \
++ unsigned long int pltn = reloc_arg; \
++ /* Exclude PL0 and PLT1. */ \
++ unsigned long int idx = (pltn - plt0)/ARC_PLT_SIZE - 2; \
++ idx; \
++})
++
++#define reloc_offset reloc_index * sizeof (PLTREL)
++
++#include <elf/dl-runtime.c>
+diff --git a/sysdeps/arc/dl-sysdep.h b/sysdeps/arc/dl-sysdep.h
+new file mode 100644
+index 00000000000..ffc30b69372
+--- /dev/null
++++ b/sysdeps/arc/dl-sysdep.h
+@@ -0,0 +1,25 @@
++/* System-specific settings for dynamic linker code. ARC version.
++ Copyright (C) 2009-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/>. */
++
++#include_next <dl-sysdep.h>
++
++/* _dl_argv cannot be attribute_relro, because _dl_start_user
++ might write into it after _dl_start returns. */
++#define DL_ARGV_NOT_RELRO 1
++
++#define DL_EXTERN_PROTECTED_DATA
+diff --git a/sysdeps/arc/dl-tls.h b/sysdeps/arc/dl-tls.h
+new file mode 100644
+index 00000000000..7f0cf91e402
+--- /dev/null
++++ b/sysdeps/arc/dl-tls.h
+@@ -0,0 +1,30 @@
++/* Thread-local storage handling in the ELF dynamic linker. ARC version.
++ Copyright (C) 2012-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/>. */
++
++
++/* Type used for the representation of TLS information in the GOT. */
++typedef struct
++{
++ unsigned long int ti_module;
++ unsigned long int ti_offset;
++} tls_index;
++
++extern void *__tls_get_addr (tls_index *ti);
++
++/* Value used for dtv entries for which the allocation is delayed. */
++#define TLS_DTV_UNALLOCATED ((void *) -1l)
+diff --git a/sysdeps/arc/dl-trampoline.S b/sysdeps/arc/dl-trampoline.S
+new file mode 100644
+index 00000000000..9da75fb1fe2
+--- /dev/null
++++ b/sysdeps/arc/dl-trampoline.S
+@@ -0,0 +1,80 @@
++/* PLT trampolines. ARC version.
++ Copyright (C) 2005-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/>. */
++
++#include <sysdep.h>
++#include <libc-symbols.h>
++
++#include <sysdep.h>
++#include <sys/syscall.h>
++
++/* Save the registers which resolver could possibly clobber
++ r0-r9: args to the function - symbol being resolved
++ r10-r12 are already clobbered by PLTn, PLT0 thus neednot be saved. */
++
++.macro SAVE_CALLER_SAVED
++ push_s r0
++ push_s r1
++ push_s r2
++ push_s r3
++ st.a r4, [sp, -4]
++ st.a r5, [sp, -4]
++ st.a r6, [sp, -4]
++ st.a r7, [sp, -4]
++ st.a r8, [sp, -4]
++ st.a r9, [sp, -4]
++ cfi_adjust_cfa_offset (40)
++ push_s blink
++ cfi_adjust_cfa_offset (4)
++ cfi_rel_offset (blink, 0)
++.endm
++
++.macro RESTORE_CALLER_SAVED_BUT_R0
++ ld.ab blink,[sp, 4]
++ cfi_adjust_cfa_offset (-4)
++ cfi_restore (blink)
++ ld.ab r9, [sp, 4]
++ ld.ab r8, [sp, 4]
++ ld.ab r7, [sp, 4]
++ ld.ab r6, [sp, 4]
++ ld.ab r5, [sp, 4]
++ ld.ab r4, [sp, 4]
++ pop_s r3
++ pop_s r2
++ pop_s r1
++ cfi_adjust_cfa_offset (-36)
++.endm
++
++/* Upon entry, PLTn, which led us here, sets up the following regs
++ r11 = Module info (tpnt pointer as expected by resolver)
++ r12 = PC of the PLTn itself - needed by resolver to find
++ corresponding .rela.plt entry. */
++
++ENTRY (_dl_runtime_resolve)
++ ; args to func being resolved, which resolver might clobber
++ SAVE_CALLER_SAVED
++
++ mov_s r1, r12
++ bl.d _dl_fixup
++ mov r0, r11
++
++ RESTORE_CALLER_SAVED_BUT_R0
++ j_s.d [r0] /* r0 has resolved function addr. */
++ pop_s r0 /* restore first arg to resolved call. */
++ cfi_adjust_cfa_offset (-4)
++ cfi_restore (r0)
++END (_dl_runtime_resolve)
+diff --git a/sysdeps/arc/entry.h b/sysdeps/arc/entry.h
+new file mode 100644
+index 00000000000..adb01d981af
+--- /dev/null
++++ b/sysdeps/arc/entry.h
+@@ -0,0 +1,5 @@
++#ifndef __ASSEMBLY__
++extern void __start (void) attribute_hidden;
++#endif
++
++#define ENTRY_POINT __start
+diff --git a/sysdeps/arc/gccframe.h b/sysdeps/arc/gccframe.h
+new file mode 100644
+index 00000000000..40487fa77b4
+--- /dev/null
++++ b/sysdeps/arc/gccframe.h
+@@ -0,0 +1,21 @@
++/* Definition of object in frame unwind info. ARC version.
++ Copyright (C) 2017-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/>. */
++
++#define FIRST_PSEUDO_REGISTER 40
++
++#include <sysdeps/generic/gccframe.h>
+diff --git a/sysdeps/arc/gmp-mparam.h b/sysdeps/arc/gmp-mparam.h
+new file mode 100644
+index 00000000000..e30695fc6b2
+--- /dev/null
++++ b/sysdeps/arc/gmp-mparam.h
+@@ -0,0 +1,23 @@
++/* gmp-mparam.h -- Compiler/machine parameter header file.
++
++Copyright (C) 2017-2019 Free Software Foundation, Inc.
++
++This file is part of the GNU MP Library.
++
++The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, see
++<http://www.gnu.org/licenses/>. */
++
++#include <sysdeps/generic/gmp-mparam.h>
++
++#define IEEE_DOUBLE_BIG_ENDIAN 0
+diff --git a/sysdeps/arc/jmpbuf-offsets.h b/sysdeps/arc/jmpbuf-offsets.h
+new file mode 100644
+index 00000000000..9760f3a3891
+--- /dev/null
++++ b/sysdeps/arc/jmpbuf-offsets.h
+@@ -0,0 +1,47 @@
++/* Private macros for accessing __jmp_buf contents. ARC version.
++ Copyright (C) 2006-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/>. */
++
++/* Save offsets within __jmp_buf
++ We don't use most of these symbols; they are here for documentation. */
++
++/* Callee Regs. */
++#define JB_R13 0
++#define JB_R14 1
++#define JB_R15 2
++#define JB_R16 3
++#define JB_R17 4
++#define JB_R18 5
++#define JB_R19 6
++#define JB_R20 7
++#define JB_R21 8
++#define JB_R22 9
++#define JB_R23 10
++#define JB_R24 11
++#define JB_R25 12
++
++/* Frame Pointer, Stack Pointer, Branch-n-link. */
++#define JB_FP 13
++#define JB_SP 14
++#define JB_BLINK 15
++
++/* We save space for some extra state to accommodate future changes
++ This is number of words. */
++#define JB_NUM 32
++
++/* Helper for generic ____longjmp_chk(). */
++#define JB_FRAME_ADDRESS(buf) ((void *) (unsigned long int) (buf[JB_SP]))
+diff --git a/sysdeps/arc/jmpbuf-unwind.h b/sysdeps/arc/jmpbuf-unwind.h
+new file mode 100644
+index 00000000000..47be5758c75
+--- /dev/null
++++ b/sysdeps/arc/jmpbuf-unwind.h
+@@ -0,0 +1,47 @@
++/* Examine __jmp_buf for unwinding frames. ARC version.
++ Copyright (C) 2005-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/>. */
++
++#include <setjmp.h>
++#include <jmpbuf-offsets.h>
++#include <stdint.h>
++#include <unwind.h>
++
++/* Test if longjmp to JMPBUF would unwind the frame
++ containing a local variable at ADDRESS. */
++
++#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
++ ((void *) (address) < (void *) demangle (jmpbuf[JB_SP]))
++
++#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
++ _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
++
++static inline uintptr_t __attribute__ ((unused))
++_jmpbuf_sp (__jmp_buf jmpbuf)
++{
++ uintptr_t sp = jmpbuf[JB_SP];
++#ifdef PTR_DEMANGLE
++ PTR_DEMANGLE (sp);
++#endif
++ return sp;
++}
++
++#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
++ ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf_sp (_jmpbuf) - (_adj)))
++
++/* We use the normal longjmp for unwinding. */
++#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
+diff --git a/sysdeps/arc/ldsodefs.h b/sysdeps/arc/ldsodefs.h
+new file mode 100644
+index 00000000000..53ef4e1e83d
+--- /dev/null
++++ b/sysdeps/arc/ldsodefs.h
+@@ -0,0 +1,43 @@
++/* Run-time dynamic linker data structures for loaded ELF shared objects.
++ Copyright (C) 2000-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 _ARC_LDSODEFS_H
++#define _ARC_LDSODEFS_H 1
++
++#include <elf.h>
++
++struct La_arc_regs;
++struct La_arc_retval;
++
++#define ARCH_PLTENTER_MEMBERS \
++ ElfW(Addr) (*arc_gnu_pltenter) (ElfW(Sym) *, unsigned int, \
++ uintptr_t *, uintptr_t *, \
++ const struct La_arc_regs *, \
++ unsigned int *, const char *, \
++ long int *);
++
++#define ARCH_PLTEXIT_MEMBERS \
++ unsigned int (*arc_gnu_pltexit) (ElfW(Sym) *, unsigned int, \
++ uintptr_t *, uintptr_t *, \
++ const struct La_arc_regs *, \
++ struct La_arc_retval *, \
++ const char *);
++
++#include_next <ldsodefs.h>
++
++#endif
+diff --git a/sysdeps/arc/libc-tls.c b/sysdeps/arc/libc-tls.c
+new file mode 100644
+index 00000000000..903a75a41b5
+--- /dev/null
++++ b/sysdeps/arc/libc-tls.c
+@@ -0,0 +1,27 @@
++/* Thread-local storage handling in the ELF dynamic linker. ARC version.
++ Copyright (C) 2005-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/>. */
++
++#include <csu/libc-tls.c>
++#include <dl-tls.h>
++
++void *
++__tls_get_addr (tls_index *ti)
++{
++ dtv_t *dtv = THREAD_DTV ();
++ return (char *) dtv[1].pointer.val + ti->ti_offset;
++}
+diff --git a/sysdeps/arc/machine-gmon.h b/sysdeps/arc/machine-gmon.h
+new file mode 100644
+index 00000000000..1d9e8108d9b
+--- /dev/null
++++ b/sysdeps/arc/machine-gmon.h
+@@ -0,0 +1,35 @@
++/* Machine-dependent definitions for profiling support. ARC version.
++ 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/>. */
++
++#include <sysdep.h>
++
++#define _MCOUNT_DECL(frompc, selfpc) \
++static void \
++__mcount_internal (unsigned long int frompc, unsigned long int selfpc)
++
++/* This is very simple as gcc does all the heavy lifting at _mcount call site
++ - sets up caller's blink in r0, so frompc is setup correctly
++ - preserve argument registers for original call. */
++
++#define MCOUNT \
++void \
++_mcount (void *frompc) \
++{ \
++ __mcount_internal ((unsigned long int) frompc, \
++ (unsigned long int) __builtin_return_address(0)); \
++}
+diff --git a/sysdeps/arc/memusage.h b/sysdeps/arc/memusage.h
+new file mode 100644
+index 00000000000..29f234f5bac
+--- /dev/null
++++ b/sysdeps/arc/memusage.h
+@@ -0,0 +1,23 @@
++/* Machine-specific definitions for memory usage profiling, ARC version.
++ Copyright (C) 2000-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/>. */
++
++#define GETSP() ({ register uintptr_t stack_ptr asm ("sp"); stack_ptr; })
++
++#define uatomic32_t unsigned int
++
++#include <sysdeps/generic/memusage.h>
+diff --git a/sysdeps/arc/nofpu/Implies b/sysdeps/arc/nofpu/Implies
+new file mode 100644
+index 00000000000..abcbadb25f2
+--- /dev/null
++++ b/sysdeps/arc/nofpu/Implies
+@@ -0,0 +1 @@
++ieee754/soft-fp
+diff --git a/sysdeps/arc/nofpu/libm-test-ulps b/sysdeps/arc/nofpu/libm-test-ulps
+new file mode 100644
+index 00000000000..0e8ef313fa9
+--- /dev/null
++++ b/sysdeps/arc/nofpu/libm-test-ulps
+@@ -0,0 +1,390 @@
++# Begin of automatic generation
++
++# Maximal error of functions:
++Function: "acos":
++float: 1
++ifloat: 1
++
++Function: "acosh":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: "asin":
++float: 1
++ifloat: 1
++
++Function: "asinh":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: "atan":
++float: 1
++ifloat: 1
++
++Function: "atan2":
++float: 1
++ifloat: 1
++
++Function: "atanh":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: "cabs":
++double: 1
++idouble: 1
++
++Function: Real part of "cacos":
++double: 1
++float: 2
++idouble: 1
++ifloat: 2
++
++Function: Imaginary part of "cacos":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: Real part of "cacosh":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: Imaginary part of "cacosh":
++double: 1
++float: 2
++idouble: 1
++ifloat: 2
++
++Function: "carg":
++float: 1
++ifloat: 1
++
++Function: Real part of "casin":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Imaginary part of "casin":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: Real part of "casinh":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: Imaginary part of "casinh":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Real part of "catan":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Imaginary part of "catan":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Real part of "catanh":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Imaginary part of "catanh":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: "cbrt":
++double: 3
++float: 1
++idouble: 3
++ifloat: 1
++
++Function: Real part of "ccos":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Imaginary part of "ccos":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Real part of "ccosh":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Imaginary part of "ccosh":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Real part of "cexp":
++double: 2
++float: 1
++idouble: 2
++ifloat: 1
++
++Function: Imaginary part of "cexp":
++double: 1
++float: 2
++idouble: 1
++ifloat: 2
++
++Function: Real part of "clog":
++double: 3
++float: 3
++idouble: 3
++ifloat: 3
++
++Function: Imaginary part of "clog":
++float: 1
++ifloat: 1
++
++Function: Real part of "clog10":
++double: 3
++float: 4
++idouble: 3
++ifloat: 4
++
++Function: Imaginary part of "clog10":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: "cos":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: "cosh":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Real part of "cpow":
++double: 2
++float: 5
++idouble: 2
++ifloat: 5
++
++Function: Imaginary part of "cpow":
++float: 2
++ifloat: 2
++
++Function: Real part of "csin":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Real part of "csinh":
++float: 1
++ifloat: 1
++
++Function: Imaginary part of "csinh":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Real part of "csqrt":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: Imaginary part of "csqrt":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: Real part of "ctan":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Imaginary part of "ctan":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: Real part of "ctanh":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: Imaginary part of "ctanh":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: "erf":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: "erfc":
++double: 3
++float: 2
++idouble: 3
++ifloat: 2
++
++Function: "exp10":
++double: 2
++idouble: 2
++
++Function: "exp2":
++double: 1
++idouble: 1
++
++Function: "expm1":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: "gamma":
++double: 4
++float: 3
++idouble: 4
++ifloat: 3
++
++Function: "hypot":
++double: 1
++idouble: 1
++
++Function: "j0":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: "j1":
++double: 1
++float: 2
++idouble: 1
++ifloat: 2
++
++Function: "jn":
++double: 4
++float: 4
++idouble: 4
++ifloat: 4
++
++Function: "lgamma":
++double: 4
++float: 3
++idouble: 4
++ifloat: 3
++
++Function: "log10":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: "log1p":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: "log2":
++double: 2
++float: 1
++idouble: 2
++ifloat: 1
++
++Function: "pow":
++double: 1
++idouble: 1
++
++Function: "sin":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: "sincos":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: "sinh":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: "tan":
++float: 1
++ifloat: 1
++
++Function: "tanh":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: "tgamma":
++double: 5
++float: 4
++idouble: 5
++ifloat: 4
++
++Function: "y0":
++double: 2
++float: 1
++idouble: 2
++ifloat: 1
++
++Function: "y1":
++double: 3
++float: 2
++idouble: 3
++ifloat: 2
++
++Function: "yn":
++double: 3
++float: 3
++idouble: 3
++ifloat: 3
++
++# end of automatic generation
+diff --git a/sysdeps/arc/nofpu/libm-test-ulps-name b/sysdeps/arc/nofpu/libm-test-ulps-name
+new file mode 100644
+index 00000000000..8c4fba4f9ae
+--- /dev/null
++++ b/sysdeps/arc/nofpu/libm-test-ulps-name
+@@ -0,0 +1 @@
++ARC
+diff --git a/sysdeps/arc/nofpu/math-tests-exceptions.h b/sysdeps/arc/nofpu/math-tests-exceptions.h
+new file mode 100644
+index 00000000000..f5c0b73589e
+--- /dev/null
++++ b/sysdeps/arc/nofpu/math-tests-exceptions.h
+@@ -0,0 +1,27 @@
++/* Configuration for math tests. exceptions support ARC version.
++ Copyright (C) 2017-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 ARC_NOFPU_MATH_TESTS_EXCEPTIONS_H
++#define ARC_NOFPU_MATH_TESTS_EXCEPTIONS_H 1
++
++/* Soft-float doesnot support exceptions. */
++#define EXCEPTION_TESTS_float 0
++#define EXCEPTION_TESTS_double 0
++#define EXCEPTION_TESTS_long_double 0
++
++#endif
+diff --git a/sysdeps/arc/nofpu/math-tests-rounding.h b/sysdeps/arc/nofpu/math-tests-rounding.h
+new file mode 100644
+index 00000000000..e8f76338b1e
+--- /dev/null
++++ b/sysdeps/arc/nofpu/math-tests-rounding.h
+@@ -0,0 +1,27 @@
++/* Configuration for math tests: rounding mode support. ARC version.
++ Copyright (C) 2017-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 ARC_NOFPU_MATH_TESTS_ROUNDING_H
++#define ARC_NOFPU_MATH_TESTS_ROUNDING_H 1
++
++/* Soft-float only supports to-nearest rounding mode. */
++#define ROUNDING_TESTS_float(MODE) ((MODE) == FE_TONEAREST)
++#define ROUNDING_TESTS_double(MODE) ((MODE) == FE_TONEAREST)
++#define ROUNDING_TESTS_long_double(MODE) ((MODE) == FE_TONEAREST)
++
++#endif
+diff --git a/sysdeps/arc/nptl/Makefile b/sysdeps/arc/nptl/Makefile
+new file mode 100644
+index 00000000000..3c33c9cc112
+--- /dev/null
++++ b/sysdeps/arc/nptl/Makefile
+@@ -0,0 +1,22 @@
++# NPTL makefile fragment for ARC.
++# Copyright (C) 2005-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/>.
++
++ifeq ($(subdir),csu)
++gen-as-const-headers += tcb-offsets.sym
++endif
+diff --git a/sysdeps/arc/nptl/bits/pthreadtypes-arch.h b/sysdeps/arc/nptl/bits/pthreadtypes-arch.h
+new file mode 100644
+index 00000000000..eae884f61cf
+--- /dev/null
++++ b/sysdeps/arc/nptl/bits/pthreadtypes-arch.h
+@@ -0,0 +1,71 @@
++/* Machine-specific pthread type layouts. ARC version.
++ Copyright (C) 2012-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 _BITS_PTHREADTYPES_ARCH_H
++#define _BITS_PTHREADTYPES_ARCH_H 1
++
++#include <endian.h>
++
++#define __SIZEOF_PTHREAD_ATTR_T 32
++#define __SIZEOF_PTHREAD_MUTEX_T 32
++#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
++#define __SIZEOF_PTHREAD_COND_T 48
++#define __SIZEOF_PTHREAD_CONDATTR_T 4
++#define __SIZEOF_PTHREAD_RWLOCK_T 32
++#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
++#define __SIZEOF_PTHREAD_BARRIER_T 20
++#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
++
++#define __PTHREAD_COMPAT_PADDING_MID
++#define __PTHREAD_COMPAT_PADDING_END
++#define __PTHREAD_MUTEX_LOCK_ELISION 0
++#define __PTHREAD_MUTEX_NUSERS_AFTER_KIND 0
++#define __PTHREAD_MUTEX_USE_UNION 0
++
++#define __LOCK_ALIGNMENT
++#define __ONCE_ALIGNMENT
++
++struct __pthread_rwlock_arch_t
++{
++ unsigned int __readers;
++ unsigned int __writers;
++ unsigned int __wrphase_futex;
++ unsigned int __writers_futex;
++ unsigned int __pad3;
++ unsigned int __pad4;
++#if __BYTE_ORDER == __BIG_ENDIAN
++ unsigned char __pad1;
++ unsigned char __pad2;
++ unsigned char __shared;
++ /* FLAGS must stay at this position in the structure to maintain
++ binary compatibility. */
++ unsigned char __flags;
++#else
++ /* FLAGS must stay at this position in the structure to maintain
++ binary compatibility. */
++ unsigned char __flags;
++ unsigned char __shared;
++ unsigned char __pad1;
++ unsigned char __pad2;
++#endif
++ int __cur_writer;
++};
++
++#define __PTHREAD_RWLOCK_ELISION_EXTRA 0
++
++#endif /* bits/pthreadtypes-arch.h */
+diff --git a/sysdeps/arc/nptl/bits/semaphore.h b/sysdeps/arc/nptl/bits/semaphore.h
+new file mode 100644
+index 00000000000..662d08401d0
+--- /dev/null
++++ b/sysdeps/arc/nptl/bits/semaphore.h
+@@ -0,0 +1,32 @@
++/* Machine-specific POSIX semaphore type layouts. ARC version.
++ 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 _SEMAPHORE_H
++# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
++#endif
++
++#define __SIZEOF_SEM_T 16
++
++/* Value returned if `sem_open' failed. */
++#define SEM_FAILED ((sem_t *) 0)
++
++typedef union
++{
++ char __size[__SIZEOF_SEM_T];
++ long int __align;
++} sem_t;
+diff --git a/sysdeps/arc/nptl/pthread-offsets.h b/sysdeps/arc/nptl/pthread-offsets.h
+new file mode 100644
+index 00000000000..c363e8cda8d
+--- /dev/null
++++ b/sysdeps/arc/nptl/pthread-offsets.h
+@@ -0,0 +1,4 @@
++#define __PTHREAD_MUTEX_NUSERS_OFFSET 12
++#define __PTHREAD_MUTEX_KIND_OFFSET 16
++#define __PTHREAD_MUTEX_SPINS_OFFSET 20
++#define __PTHREAD_MUTEX_LIST_OFFSET 24
+diff --git a/sysdeps/arc/nptl/pthreaddef.h b/sysdeps/arc/nptl/pthreaddef.h
+new file mode 100644
+index 00000000000..80a109bbd52
+--- /dev/null
++++ b/sysdeps/arc/nptl/pthreaddef.h
+@@ -0,0 +1,32 @@
++/* pthread machine parameter definitions, ARC version.
++ 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/>. */
++
++/* Default stack size. */
++#define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024)
++
++/* Required stack pointer alignment at beginning. */
++#define STACK_ALIGN 4
++
++/* Minimal stack size after allocating thread descriptor and guard size. */
++#define MINIMAL_REST_STACK 2048
++
++/* Alignment requirement for TCB. */
++#define TCB_ALIGNMENT 4
++
++/* Location of current stack frame. */
++#define CURRENT_STACK_FRAME __builtin_frame_address (0)
+diff --git a/sysdeps/arc/nptl/tcb-offsets.sym b/sysdeps/arc/nptl/tcb-offsets.sym
+new file mode 100644
+index 00000000000..56950e0676e
+--- /dev/null
++++ b/sysdeps/arc/nptl/tcb-offsets.sym
+@@ -0,0 +1,11 @@
++#include <sysdep.h>
++#include <tls.h>
++
++-- Derive offsets relative to the thread register.
++#define thread_offsetof(mem) (long)(offsetof(struct pthread, mem) - sizeof(struct pthread))
++
++MULTIPLE_THREADS_OFFSET offsetof (struct pthread, header.multiple_threads)
++TLS_PRE_TCB_SIZE sizeof (struct pthread)
++TLS_TCB_SIZE sizeof(tcbhead_t)
++
++PTHREAD_TID offsetof(struct pthread, tid)
+diff --git a/sysdeps/arc/nptl/tls.h b/sysdeps/arc/nptl/tls.h
+new file mode 100644
+index 00000000000..2c90109d570
+--- /dev/null
++++ b/sysdeps/arc/nptl/tls.h
+@@ -0,0 +1,150 @@
++/* Definition for thread-local data handling. NPTL/ARC version.
++ Copyright (C) 2012-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 _ARC_NPTL_TLS_H
++#define _ARC_NPTL_TLS_H 1
++
++#include <dl-sysdep.h>
++
++#ifndef __ASSEMBLER__
++# include <stdbool.h>
++# include <stddef.h>
++# include <stdint.h>
++
++#include <dl-dtv.h>
++
++/* Get system call information. */
++# include <sysdep.h>
++
++/* The TLS blocks start right after the TCB. */
++# define TLS_DTV_AT_TP 1
++# define TLS_TCB_AT_TP 0
++
++/* Get the thread descriptor definition. */
++# include <nptl/descr.h>
++
++typedef struct
++{
++ dtv_t *dtv;
++ uintptr_t pointer_guard;
++} tcbhead_t;
++
++register struct pthread *__thread_self __asm__("r25");
++
++/* This is the size of the initial TCB. */
++# define TLS_INIT_TCB_SIZE sizeof (tcbhead_t)
++
++/* Alignment requirements for the initial TCB. */
++# define TLS_INIT_TCB_ALIGN __alignof__ (struct pthread)
++
++/* This is the size of the TCB. */
++#ifndef TLS_TCB_SIZE
++# define TLS_TCB_SIZE sizeof (tcbhead_t)
++#endif
++
++/* Alignment requirements for the TCB. */
++# define TLS_TCB_ALIGN __alignof__ (struct pthread)
++
++/* This is the size we need before TCB. */
++# define TLS_PRE_TCB_SIZE sizeof (struct pthread)
++
++/* Install the dtv pointer. The pointer passed is to the element with
++ index -1 which contain the length. */
++# define INSTALL_DTV(tcbp, dtvp) \
++ (((tcbhead_t *) (tcbp))->dtv = (dtvp) + 1)
++
++/* Install new dtv for current thread. */
++# define INSTALL_NEW_DTV(dtv) \
++ (THREAD_DTV() = (dtv))
++
++/* Return dtv of given thread descriptor. */
++# define GET_DTV(tcbp) \
++ (((tcbhead_t *) (tcbp))->dtv)
++
++/* Code to initially initialize the thread pointer. */
++# define TLS_INIT_TP(tcbp) \
++ ({ \
++ long result_var; \
++ __builtin_set_thread_pointer(tcbp); \
++ result_var = INTERNAL_SYSCALL (arc_settls, err, 1, (tcbp)); \
++ INTERNAL_SYSCALL_ERROR_P (result_var, err) \
++ ? "unknown error" : NULL; \
++ })
++
++/* Value passed to 'clone' for initialization of the thread register. */
++# define TLS_DEFINE_INIT_TP(tp, pd) void *tp = (pd) + 1
++
++/* Return the address of the dtv for the current thread. */
++# define THREAD_DTV() \
++ (((tcbhead_t *) __builtin_thread_pointer ())->dtv)
++
++/* Return the thread descriptor for the current thread. */
++# define THREAD_SELF \
++ ((struct pthread *)__builtin_thread_pointer () - 1)
++
++/* Magic for libthread_db to know how to do THREAD_SELF. */
++# define DB_THREAD_SELF \
++ CONST_THREAD_AREA (32, sizeof (struct pthread))
++
++/* Access to data in the thread descriptor is easy. */
++# define THREAD_GETMEM(descr, member) \
++ descr->member
++# define THREAD_GETMEM_NC(descr, member, idx) \
++ descr->member[idx]
++# define THREAD_SETMEM(descr, member, value) \
++ descr->member = (value)
++# define THREAD_SETMEM_NC(descr, member, idx, value) \
++ descr->member[idx] = (value)
++
++/* Get and set the global scope generation counter in struct pthread. */
++#define THREAD_GSCOPE_IN_TCB 1
++#define THREAD_GSCOPE_FLAG_UNUSED 0
++#define THREAD_GSCOPE_FLAG_USED 1
++#define THREAD_GSCOPE_FLAG_WAIT 2
++#define THREAD_GSCOPE_RESET_FLAG() \
++ do \
++ { int __res \
++ = atomic_exchange_rel (&THREAD_SELF->header.gscope_flag, \
++ THREAD_GSCOPE_FLAG_UNUSED); \
++ if (__res == THREAD_GSCOPE_FLAG_WAIT) \
++ lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1, LLL_PRIVATE); \
++ } \
++ while (0)
++#define THREAD_GSCOPE_SET_FLAG() \
++ do \
++ { \
++ THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED; \
++ atomic_write_barrier (); \
++ } \
++ while (0)
++#define THREAD_GSCOPE_WAIT() \
++ GL(dl_wait_lookup_done) ()
++
++#else
++
++# include <tcb-offsets.h>
++
++# r25 is dedicated TLS register for ARC
++.macro THREAD_SELF reg
++ # struct pthread is just ahead of TCB
++ sub \reg, r25, TLS_PRE_TCB_SIZE
++.endm
++
++#endif /* __ASSEMBLER__ */
++
++#endif /* tls.h */
+diff --git a/sysdeps/arc/preconfigure b/sysdeps/arc/preconfigure
+new file mode 100644
+index 00000000000..d9c5429f405
+--- /dev/null
++++ b/sysdeps/arc/preconfigure
+@@ -0,0 +1,15 @@
++case "$machine" in
++arc*)
++ base_machine=arc
++ machine=arc
++
++ gccfloat=`$CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null | grep __ARC_FPU_| wc -l`
++ if test "$gccfloat" != "0"; then
++ echo "glibc being configured for double precision floating point"
++ with_fp_cond=1
++ else
++ with_fp_cond=0
++ fi
++ ;;
++
++esac
+diff --git a/sysdeps/arc/setjmp.S b/sysdeps/arc/setjmp.S
+new file mode 100644
+index 00000000000..518545a99e8
+--- /dev/null
++++ b/sysdeps/arc/setjmp.S
+@@ -0,0 +1,66 @@
++/* setjmp for ARC.
++ Copyright (C) 1991-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/>. */
++
++
++#include <sysdep.h>
++
++/* Upon entry r0 = jump buffer into which regs will be saved. */
++ENTRY (setjmp)
++ b.d __sigsetjmp
++ mov r1, 1 ; save signals
++END (setjmp)
++
++/* Upon entry r0 = jump buffer into which regs will be saved. */
++ENTRY (_setjmp)
++ b.d __sigsetjmp
++ mov r1, 0 /* don't save signals. */
++END (_setjmp)
++libc_hidden_def (_setjmp)
++
++/* Upon entry
++ r0 = jump buffer into which regs will be saved
++ r1 = do we need to save signals. */
++ENTRY (__sigsetjmp)
++
++ st_s r13, [r0]
++ st_s r14, [r0,4]
++ st r15, [r0,8]
++ st r16, [r0,12]
++ st r17, [r0,16]
++ st r18, [r0,20]
++ st r19, [r0,24]
++ st r20, [r0,28]
++ st r21, [r0,32]
++ st r22, [r0,36]
++ st r23, [r0,40]
++ st r24, [r0,44]
++ st r25, [r0,48]
++ st fp, [r0,52]
++ st sp, [r0,56]
++
++ /* Make a note of where longjmp will return to.
++ that will be right next to this setjmp call-site which will be
++ contained in blink, since "C" caller of this routine will do
++ a branch-n-link */
++
++ st blink, [r0,60]
++ b __sigjmp_save
++
++END (__sigsetjmp)
++
++libc_hidden_def (__sigsetjmp)
+diff --git a/sysdeps/arc/sfp-machine.h b/sysdeps/arc/sfp-machine.h
+new file mode 100644
+index 00000000000..5ceaf56a988
+--- /dev/null
++++ b/sysdeps/arc/sfp-machine.h
+@@ -0,0 +1,73 @@
++/* Machine-dependent software floating-point definitions. ARC version.
++ Copyright (C) 2004-2019 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Richard Henderson (rth@cygnus.com),
++ Jakub Jelinek (jj@ultra.linux.cz) and
++ David S. Miller (davem@redhat.com).
++
++ 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/>. */
++
++
++#define _FP_W_TYPE_SIZE 32
++#define _FP_W_TYPE unsigned long
++#define _FP_WS_TYPE signed long
++#define _FP_I_TYPE long
++
++#define _FP_MUL_MEAT_S(R,X,Y) \
++ _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm)
++#define _FP_MUL_MEAT_D(R,X,Y) \
++ _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm)
++#define _FP_MUL_MEAT_Q(R,X,Y) \
++ _FP_MUL_MEAT_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
++
++#define _FP_MUL_MEAT_DW_S(R,X,Y) \
++ _FP_MUL_MEAT_DW_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm)
++#define _FP_MUL_MEAT_DW_D(R,X,Y) \
++ _FP_MUL_MEAT_DW_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm)
++#define _FP_MUL_MEAT_DW_Q(R,X,Y) \
++ _FP_MUL_MEAT_DW_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
++
++#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_loop(S,R,X,Y)
++#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y)
++#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y)
++
++#define _FP_NANFRAC_S ((_FP_QNANBIT_S << 1) - 1)
++#define _FP_NANFRAC_D ((_FP_QNANBIT_D << 1) - 1), -1
++#define _FP_NANFRAC_Q ((_FP_QNANBIT_Q << 1) - 1), -1, -1, -1
++#define _FP_NANSIGN_S 0
++#define _FP_NANSIGN_D 0
++#define _FP_NANSIGN_Q 0
++
++#define _FP_KEEPNANFRACP 1
++#define _FP_QNANNEGATEDP 0
++
++/* This is arbitrarily taken from the PowerPC version. */
++#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \
++ do { \
++ if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs) \
++ && !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs)) \
++ { \
++ R##_s = Y##_s; \
++ _FP_FRAC_COPY_##wc(R,Y); \
++ } \
++ else \
++ { \
++ R##_s = X##_s; \
++ _FP_FRAC_COPY_##wc(R,X); \
++ } \
++ R##_c = FP_CLS_NAN; \
++ } while (0)
++
++#define _FP_TININESS_AFTER_ROUNDING 0
+diff --git a/sysdeps/arc/sotruss-lib.c b/sysdeps/arc/sotruss-lib.c
+new file mode 100644
+index 00000000000..ffbb5bbd6d0
+--- /dev/null
++++ b/sysdeps/arc/sotruss-lib.c
+@@ -0,0 +1,51 @@
++/* Override generic sotruss-lib.c to define actual functions for ARC.
++ Copyright (C) 2017-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/>. */
++
++#define HAVE_ARCH_PLTENTER
++#define HAVE_ARCH_PLTEXIT
++
++#include <elf/sotruss-lib.c>
++
++ElfW(Addr)
++la_arc_gnu_pltenter (ElfW(Sym) *sym __attribute__ ((unused)),
++ unsigned int ndx __attribute__ ((unused)),
++ uintptr_t *refcook, uintptr_t *defcook,
++ La_arc_regs *regs, unsigned int *flags,
++ const char *symname, long int *framesizep)
++{
++ print_enter (refcook, defcook, symname,
++ regs->lr_reg[0], regs->lr_reg[1], regs->lr_reg[2],
++ *flags);
++
++ /* No need to copy anything, we will not need the parameters in any case. */
++ *framesizep = 0;
++
++ return sym->st_value;
++}
++
++unsigned int
++la_arc_gnu_pltexit (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook,
++ uintptr_t *defcook,
++ const struct La_arc_regs *inregs,
++ struct La_arc_retval *outregs, const char *symname)
++{
++ print_exit (refcook, defcook, symname, outregs->lrv_reg[0]);
++
++ return 0;
++}
+diff --git a/sysdeps/arc/stackinfo.h b/sysdeps/arc/stackinfo.h
+new file mode 100644
+index 00000000000..fe69161382a
+--- /dev/null
++++ b/sysdeps/arc/stackinfo.h
+@@ -0,0 +1,33 @@
++/* Stack environment definitions for ARC.
++ Copyright (C) 2012-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 file contains a bit of information about the stack allocation
++ of the processor. */
++
++#ifndef _STACKINFO_H
++#define _STACKINFO_H 1
++
++#include <elf.h>
++
++/* On ARC the stack grows down. */
++#define _STACK_GROWS_DOWN 1
++
++/* Default to a non-executable stack. */
++#define DEFAULT_STACK_PERMS (PF_R|PF_W)
++
++#endif /* stackinfo.h */
+diff --git a/sysdeps/arc/start.S b/sysdeps/arc/start.S
+new file mode 100644
+index 00000000000..4ade1e871f6
+--- /dev/null
++++ b/sysdeps/arc/start.S
+@@ -0,0 +1,89 @@
++/* Startup code for ARC.
++ Copyright (C) 1995-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.
++
++ In addition to the permissions in the GNU Lesser General Public
++ License, the Free Software Foundation gives you unlimited
++ permission to link the compiled version of this file with other
++ programs, and to distribute those programs without any restriction
++ coming from the use of this file. (The GNU Lesser General Public
++ License restrictions do apply in other respects; for example, they
++ cover modification of the file, and distribution when not linked
++ into another program.)
++
++ Note that people who make modified versions of this file are not
++ obligated to grant this special exception for their modified
++ versions; it is their choice whether to do so. The GNU Lesser
++ General Public License gives permission to release a modified
++ version without this exception; this exception also makes it
++ possible to release a modified version which carries forward this
++ exception.
++
++ 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/>. */
++
++
++#define __ASSEMBLY__ 1
++#include <entry.h>
++#ifndef ENTRY_POINT
++# error ENTRY_POINT needs to be defined for ARC
++#endif
++
++/* When we enter this piece of code, the program stack looks like this:
++ argc argument counter (integer)
++ argv[0] program name (pointer)
++ argv[1...N] program args (pointers)
++ argv[argc-1] end of args (integer)
++ NULL
++ env[0...N] environment variables (pointers)
++ NULL. */
++
++ .text
++ .align 4
++ .global __start
++ .type __start,@function
++__start:
++ mov fp, 0
++ ld_s r1, [sp] ; argc
++
++ mov_s r5, r0 ; rltd_fini
++ add_s r2, sp, 4 ; argv
++ and sp, sp, -8
++ mov r6, sp
++
++ /* __libc_start_main (main, argc, argv, init, fini, rtld_fini, stack_end). */
++
++#ifdef SHARED
++ ld r0, [pcl, @main@gotpc]
++ ld r3, [pcl, @__libc_csu_init@gotpc]
++ ld r4, [pcl, @__libc_csu_fini@gotpc]
++ bl __libc_start_main@plt
++#else
++ mov_s r0, main
++ mov_s r3, __libc_csu_init
++ mov r4, __libc_csu_fini
++ bl __libc_start_main
++#endif
++
++ /* Should never get here. */
++ flag 1
++ .size __start,.-__start
++
++/* Define a symbol for the first piece of initialized data. */
++ .data
++ .globl __data_start
++__data_start:
++ .long 0
++ .weak data_start
++ data_start = __data_start
+diff --git a/sysdeps/arc/sysdep.h b/sysdeps/arc/sysdep.h
+new file mode 100644
+index 00000000000..127e9b01e73
+--- /dev/null
++++ b/sysdeps/arc/sysdep.h
+@@ -0,0 +1,48 @@
++/* Assembler macros for ARC.
++ Copyright (C) 2017-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/>. */
++
++#include <sysdeps/generic/sysdep.h>
++
++#ifdef __ASSEMBLER__
++
++/* Syntactic details of assembler.
++ ; is not newline but comment, # is also for comment. */
++# define ASM_SIZE_DIRECTIVE(name) .size name,.-name
++
++# define ENTRY(name) \
++ .align 4 ASM_LINE_SEP \
++ .globl C_SYMBOL_NAME(name) ASM_LINE_SEP \
++ .type C_SYMBOL_NAME(name),%function ASM_LINE_SEP \
++ C_LABEL(name) ASM_LINE_SEP \
++ cfi_startproc ASM_LINE_SEP \
++ CALL_MCOUNT
++
++# undef END
++# define END(name) \
++ cfi_endproc ASM_LINE_SEP \
++ ASM_SIZE_DIRECTIVE(name)
++
++# ifdef SHARED
++# define PLTJMP(_x) _x##@plt
++# else
++# define PLTJMP(_x) _x
++# endif
++
++# define CALL_MCOUNT /* Do nothing for now. */
++
++#endif /* __ASSEMBLER__ */
+diff --git a/sysdeps/arc/tls-macros.h b/sysdeps/arc/tls-macros.h
+new file mode 100644
+index 00000000000..4d54683eda4
+--- /dev/null
++++ b/sysdeps/arc/tls-macros.h
+@@ -0,0 +1,47 @@
++/* Macros to support TLS testing in times of missing compiler support. ARC version.
++ Copyright (C) 2017-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/>. */
++
++
++/* For now. */
++#define TLS_LD(x) TLS_IE(x)
++
++#define TLS_GD(x) \
++ ({ int *__result; \
++ __asm__ ("add r0, pcl, @" #x "@tlsgd \n" \
++ ".tls_gd_ld " #x "`bl __tls_get_addr@plt \n" \
++ "mov %0, r0 \n" \
++ : "=&r" (__result) \
++ ::"r0","r1","r2","r3","r4","r5","r6","r7", \
++ "r8","r9","r10","r11","r12"); \
++ __result; })
++
++#define TLS_LE(x) \
++ ({ int *__result; \
++ void *tp = __builtin_thread_pointer(); \
++ __asm__ ("add %0, %1, @" #x "@tpoff \n" \
++ : "=r" (__result) : "r"(tp)); \
++ __result; })
++
++#define TLS_IE(x) \
++ ({ int *__result; \
++ void *tp = __builtin_thread_pointer(); \
++ __asm__ ("ld %0, [pcl, @" #x "@tlsie] \n" \
++ "add %0, %1, %0 \n" \
++ : "=&r" (__result) : "r" (tp)); \
++ __result; })
+diff --git a/sysdeps/arc/tst-audit.h b/sysdeps/arc/tst-audit.h
+new file mode 100644
+index 00000000000..9237ad2440c
+--- /dev/null
++++ b/sysdeps/arc/tst-audit.h
+@@ -0,0 +1,23 @@
++/* Definitions for testing PLT entry/exit auditing. ARC version.
++ Copyright (C) 2009-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/>. */
++
++#define pltenter la_arc_gnu_pltenter
++#define pltexit la_arc_gnu_pltexit
++#define La_regs La_arc_regs
++#define La_retval La_arc_retval
++#define int_retval lrv_reg[0]
+diff --git a/sysdeps/unix/sysv/linux/arc/Implies b/sysdeps/unix/sysv/linux/arc/Implies
+new file mode 100644
+index 00000000000..7f739a0340b
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/Implies
+@@ -0,0 +1,3 @@
++arc/nptl
++unix/sysv/linux/generic/wordsize-32
++unix/sysv/linux/generic
+diff --git a/sysdeps/unix/sysv/linux/arc/Makefile b/sysdeps/unix/sysv/linux/arc/Makefile
+new file mode 100644
+index 00000000000..a6c6dfc6ec6
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/Makefile
+@@ -0,0 +1,20 @@
++ifeq ($(subdir),stdlib)
++gen-as-const-headers += ucontext_i.sym
++endif
++
++ifeq ($(subdir),signal)
++sysdep_routines += sigrestorer
++endif
++
++ifeq ($(subdir),misc)
++# MIPS/Tile-style cacheflush routine
++sysdep_headers += sys/cachectl.h
++sysdep_routines += cacheflush
++endif
++
++ifeq ($(subdir),elf)
++ifeq ($(build-shared),yes)
++# This is needed for DSO loading from static binaries.
++sysdep-dl-routines += dl-static
++endif
++endif
+diff --git a/sysdeps/unix/sysv/linux/arc/Versions b/sysdeps/unix/sysv/linux/arc/Versions
+new file mode 100644
+index 00000000000..3eedf26ae23
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/Versions
+@@ -0,0 +1,16 @@
++ld {
++ GLIBC_PRIVATE {
++ # used for loading by static libraries
++ _dl_var_init;
++ }
++}
++libc {
++ GLIBC_2.30 {
++ _flush_cache;
++ cacheflush;
++ }
++ GLIBC_PRIVATE {
++ # A copy of sigaction lives in libpthread, and needs these.
++ __default_rt_sa_restorer;
++ }
++}
+diff --git a/sysdeps/unix/sysv/linux/arc/bits/procfs.h b/sysdeps/unix/sysv/linux/arc/bits/procfs.h
+new file mode 100644
+index 00000000000..b37deaee587
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/bits/procfs.h
+@@ -0,0 +1,35 @@
++/* Types for registers for sys/procfs.h. ARC version.
++ 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_PROCFS_H
++# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> instead."
++#endif
++
++#include <sys/ucontext.h>
++
++/* And the whole bunch of them. We could have used `struct
++ user_regs' directly in the typedef, but tradition says that
++ the register set is an array, which does have some peculiar
++ semantics, so leave it that way. */
++#define ELF_NGREG (sizeof (struct user_regs_struct) / sizeof(elf_greg_t))
++
++typedef unsigned long int elf_greg_t;
++typedef unsigned long int elf_gregset_t[ELF_NGREG];
++
++/* There's no seperate floating point reg file in ARCv2. */
++typedef struct { } elf_fpregset_t;
+diff --git a/sysdeps/unix/sysv/linux/arc/bits/types/__sigset_t.h b/sysdeps/unix/sysv/linux/arc/bits/types/__sigset_t.h
+new file mode 100644
+index 00000000000..795638a30bd
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/bits/types/__sigset_t.h
+@@ -0,0 +1,12 @@
++/* Architecture-specific __sigset_t definition. ARC version. */
++#ifndef ____sigset_t_defined
++#define ____sigset_t_defined
++
++/* Linux asm-generic syscall ABI expects sigset_t to hold 64 signals. */
++#define _SIGSET_NWORDS (64 / (8 * sizeof (unsigned long int)))
++typedef struct
++{
++ unsigned long int __val[_SIGSET_NWORDS];
++} __sigset_t;
++
++#endif
+diff --git a/sysdeps/unix/sysv/linux/arc/c++-types.data b/sysdeps/unix/sysv/linux/arc/c++-types.data
+new file mode 100644
+index 00000000000..303f4570c8e
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/c++-types.data
+@@ -0,0 +1,67 @@
++blkcnt64_t:x
++blkcnt_t:l
++blksize_t:i
++caddr_t:Pc
++clockid_t:i
++clock_t:l
++daddr_t:i
++dev_t:y
++fd_mask:l
++fsblkcnt64_t:y
++fsblkcnt_t:m
++fsfilcnt64_t:y
++fsfilcnt_t:m
++fsid_t:8__fsid_t
++gid_t:j
++id_t:j
++ino64_t:y
++ino_t:m
++int16_t:s
++int32_t:i
++int64_t:x
++int8_t:a
++intptr_t:i
++key_t:i
++loff_t:x
++mode_t:j
++nlink_t:j
++off64_t:x
++off_t:l
++pid_t:i
++pthread_attr_t:14pthread_attr_t
++pthread_barrier_t:17pthread_barrier_t
++pthread_barrierattr_t:21pthread_barrierattr_t
++pthread_cond_t:14pthread_cond_t
++pthread_condattr_t:18pthread_condattr_t
++pthread_key_t:j
++pthread_mutex_t:15pthread_mutex_t
++pthread_mutexattr_t:19pthread_mutexattr_t
++pthread_once_t:i
++pthread_rwlock_t:16pthread_rwlock_t
++pthread_rwlockattr_t:20pthread_rwlockattr_t
++pthread_spinlock_t:i
++pthread_t:m
++quad_t:x
++register_t:i
++rlim64_t:y
++rlim_t:m
++sigset_t:10__sigset_t
++size_t:j
++socklen_t:j
++ssize_t:i
++suseconds_t:l
++time_t:l
++u_char:h
++uid_t:j
++uint:j
++u_int:j
++u_int16_t:t
++u_int32_t:j
++u_int64_t:y
++u_int8_t:h
++ulong:m
++u_long:m
++u_quad_t:y
++useconds_t:j
++ushort:t
++u_short:t
+diff --git a/sysdeps/unix/sysv/linux/arc/clone.S b/sysdeps/unix/sysv/linux/arc/clone.S
+new file mode 100644
+index 00000000000..55c2a2b60ed
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/clone.S
+@@ -0,0 +1,98 @@
++/* clone() implementation for ARC.
++ Copyright (C) 2008-2019 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Andrew Jenner <andrew@codesourcery.com>, 2008.
++
++ 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/>. */
++
++
++#include <sysdep.h>
++#define _ERRNO_H 1
++#include <bits/errno.h>
++#include <tcb-offsets.h>
++
++#define CLONE_SETTLS 0x00080000
++
++/* int clone(int (*fn)(void *), void *child_stack,
++ int flags, void *arg, ...
++ < pid_t *ptid, struct user_desc *tls, pid_t *ctid > );
++
++ NOTE: I'm assuming that the last 3 args are NOT var-args and in case all
++ 3 are not relevant, caller will nevertheless pass those as NULL.
++
++ clone syscall in kernel (ABI: CONFIG_CLONE_BACKWARDS)
++
++ int sys_clone(unsigned long int clone_flags,
++ unsigned long int newsp,
++ int __user *parent_tidptr,
++ void *tls,
++ int __user *child_tidptr). */
++
++ENTRY (__clone)
++ cmp r0, 0 ; @fn can't be NULL
++ cmp.ne r1, 0 ; @child_stack can't be NULL
++ bz .L__sys_err
++
++ ; save some of the orig args
++ ; r0 containg @fn will be clobbered AFTER syscall (with ret val)
++ ; rest are clobbered BEFORE syscall due to different arg ordering
++ mov r10, r0 ; @fn
++ mov r11, r3 ; @args
++ mov r12, r2 ; @clone_flags
++ mov r9, r5 ; @tls
++
++ ; adjust libc args for syscall
++
++ mov r0, r2 ; libc @flags is 1st syscall arg
++ mov r2, r4 ; libc @ptid
++ mov r3, r5 ; libc @tls
++ mov r4, r6 ; libc @ctid
++ mov r8, __NR_clone
++ ARC_TRAP_INSN
++
++ cmp r0, 0 ; return code : 0 new process, !0 parent
++ blt .L__sys_err2 ; < 0 (signed) error
++ jnz [blink] ; Parent returns
++
++ ; ----- child starts here ---------
++
++ ; Setup TP register (only recent kernels v4.19+ do that)
++ and.f 0, r12, CLONE_SETTLS
++ mov.nz r25, r9
++
++ ; child jumps off to @fn with @arg as argument, and returns here
++ jl.d [r10]
++ mov r0, r11
++
++ ; exit() with result from @fn (already in r0)
++ mov r8, __NR_exit
++ ARC_TRAP_INSN
++ ; In case it ever came back
++ flag 1
++
++.L__sys_err:
++ mov r0, -EINVAL
++.L__sys_err2:
++ ; (1) No need to make -ve kernel error code as positive errno
++ ; __syscall_error expects the -ve error code returned by kernel
++ ; (2) r0 still had orig -ve kernel error code
++ ; (3) Tail call to __syscall_error so we dont have to come back
++ ; here hence instead of jmp-n-link (reg push/pop) we do jmp
++ ; (4) No need to route __syscall_error via PLT, B is inherently
++ ; position independent
++ b __syscall_error
++PSEUDO_END (__clone)
++libc_hidden_def (__clone)
++weak_alias (__clone, clone)
+diff --git a/sysdeps/unix/sysv/linux/arc/configure b/sysdeps/unix/sysv/linux/arc/configure
+new file mode 100644
+index 00000000000..f74fa7cb025
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/configure
+@@ -0,0 +1,4 @@
++# This file is generated from configure.in by Autoconf. DO NOT EDIT!
++ # Local configure fragment for sysdeps/unix/sysv/linux/arc.
++
++arch_minimum_kernel=3.9.0
+diff --git a/sysdeps/unix/sysv/linux/arc/configure.ac b/sysdeps/unix/sysv/linux/arc/configure.ac
+new file mode 100644
+index 00000000000..a9528032d32
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/configure.ac
+@@ -0,0 +1,4 @@
++GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
++# Local configure fragment for sysdeps/unix/sysv/linux/arc.
++
++arch_minimum_kernel=3.9.0
+diff --git a/sysdeps/unix/sysv/linux/arc/dl-static.c b/sysdeps/unix/sysv/linux/arc/dl-static.c
+new file mode 100644
+index 00000000000..1a8757c9840
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/dl-static.c
+@@ -0,0 +1,84 @@
++/* Variable initialization. ARC version.
++ Copyright (C) 2001-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/>. */
++
++#include <ldsodefs.h>
++
++#ifdef SHARED
++
++void
++_dl_var_init (void *array[])
++{
++ /* It has to match "variables" below. */
++ enum
++ {
++ DL_PAGESIZE = 0
++ };
++
++ GLRO(dl_pagesize) = *((size_t *) array[DL_PAGESIZE]);
++}
++
++#else
++
++static void *variables[] =
++{
++ &GLRO(dl_pagesize)
++};
++
++static void
++_dl_unprotect_relro (struct link_map *l)
++{
++ ElfW(Addr) start = ((l->l_addr + l->l_relro_addr)
++ & ~(GLRO(dl_pagesize) - 1));
++ ElfW(Addr) end = ((l->l_addr + l->l_relro_addr + l->l_relro_size)
++ & ~(GLRO(dl_pagesize) - 1));
++
++ if (start != end)
++ __mprotect ((void *) start, end - start, PROT_READ | PROT_WRITE);
++}
++
++void
++_dl_static_init (struct link_map *l)
++{
++ struct link_map *rtld_map = l;
++ struct r_scope_elem **scope;
++ const ElfW(Sym) *ref = NULL;
++ lookup_t loadbase;
++ void (*f) (void *[]);
++ size_t i;
++
++ loadbase = _dl_lookup_symbol_x ("_dl_var_init", l, &ref, l->l_local_scope,
++ NULL, 0, 1, NULL);
++
++ for (scope = l->l_local_scope; *scope != NULL; scope++)
++ for (i = 0; i < (*scope)->r_nlist; i++)
++ if ((*scope)->r_list[i] == loadbase)
++ {
++ rtld_map = (*scope)->r_list[i];
++ break;
++ }
++
++ if (ref != NULL)
++ {
++ f = (void (*) (void *[])) DL_SYMBOL_ADDRESS (loadbase, ref);
++ _dl_unprotect_relro (rtld_map);
++ f (variables);
++ _dl_protect_relro (rtld_map);
++ }
++}
++
++#endif
+diff --git a/sysdeps/unix/sysv/linux/arc/getcontext.S b/sysdeps/unix/sysv/linux/arc/getcontext.S
+new file mode 100644
+index 00000000000..723cc237d87
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/getcontext.S
+@@ -0,0 +1,63 @@
++/* Save current context for ARC.
++ Copyright (C) 2009-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/>. */
++
++#include "ucontext-macros.h"
++
++/* int getcontext (ucontext_t *ucp)
++ Save machine context in @ucp and return 0 on success, -1 on error
++ - saves callee saved registers only
++ - layout mandated by uncontext_t:m_context (hence different from setjmp). */
++
++ENTRY (__getcontext)
++
++ /* Callee saved registers. */
++ SAVE_REG (r13, r0, 37)
++ SAVE_REG (r14, r0, 36)
++ SAVE_REG (r15, r0, 35)
++ SAVE_REG (r16, r0, 34)
++ SAVE_REG (r17, r0, 33)
++ SAVE_REG (r18, r0, 32)
++ SAVE_REG (r19, r0, 31)
++ SAVE_REG (r20, r0, 30)
++ SAVE_REG (r21, r0, 29)
++ SAVE_REG (r22, r0, 28)
++ SAVE_REG (r23, r0, 27)
++ SAVE_REG (r24, r0, 26)
++ SAVE_REG (r25, r0, 25)
++
++ SAVE_REG (blink, r0, 7)
++ SAVE_REG (fp, r0, 8)
++ SAVE_REG (sp, r0, 23)
++
++ /* Save 0 in r0 placeholder to return 0 when this @ucp activated. */
++ mov r9, 0
++ SAVE_REG (r9, r0, 22)
++
++ /* rt_sigprocmask (SIG_BLOCK, NULL, &ucp->uc_sigmask, _NSIG8). */
++ mov r3, _NSIG8
++ add r2, r0, UCONTEXT_SIGMASK
++ mov r1, 0
++ mov r0, SIG_BLOCK
++ mov r8, __NR_rt_sigprocmask
++ ARC_TRAP_INSN
++ brhi r0, -1024, .Lcall_syscall_err
++ j.d [blink]
++ mov r0, 0 /* Success, error handled in .Lcall_syscall_err. */
++
++PSEUDO_END (__getcontext)
++weak_alias (__getcontext, getcontext)
+diff --git a/sysdeps/unix/sysv/linux/arc/ipc_priv.h b/sysdeps/unix/sysv/linux/arc/ipc_priv.h
+new file mode 100644
+index 00000000000..309eb3064e9
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/ipc_priv.h
+@@ -0,0 +1,21 @@
++/* Old SysV permission definition for Linux. ARC version.
++ Copyright (C) 2016-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/>. */
++
++#include <sys/ipc.h> /* For __key_t */
++
++#define __IPC_64 0x0
+diff --git a/sysdeps/unix/sysv/linux/arc/jmp_buf-macros.h b/sysdeps/unix/sysv/linux/arc/jmp_buf-macros.h
+new file mode 100644
+index 00000000000..6c129398483
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/jmp_buf-macros.h
+@@ -0,0 +1,6 @@
++#define JMP_BUF_SIZE (32 + 1 + 64/(8 * sizeof (unsigned long int))) * sizeof (unsigned long int)
++#define SIGJMP_BUF_SIZE (32 + 1 + 64/(8 * sizeof (unsigned long int))) * sizeof (unsigned long int)
++#define JMP_BUF_ALIGN __alignof__ (unsigned long int)
++#define SIGJMP_BUF_ALIGN __alignof__ (unsigned long int)
++#define MASK_WAS_SAVED_OFFSET (32 * sizeof (unsigned long int))
++#define SAVED_MASK_OFFSET (33 * sizeof (unsigned long int))
+diff --git a/sysdeps/unix/sysv/linux/arc/kernel-features.h b/sysdeps/unix/sysv/linux/arc/kernel-features.h
+new file mode 100644
+index 00000000000..00255337bc8
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/kernel-features.h
+@@ -0,0 +1,28 @@
++/* Set flags signalling availability of kernel features based on given
++ kernel version number.
++
++ Copyright (C) 2009-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/>. */
++
++/* The minimum supported kernel version for ARC is 3.9,
++ guaranteeing many kernel features. */
++
++#include_next <kernel-features.h>
++
++#undef __ASSUME_CLONE_DEFAULT
++#define __ASSUME_CLONE_BACKWARDS 1
+diff --git a/sysdeps/unix/sysv/linux/arc/ld.abilist b/sysdeps/unix/sysv/linux/arc/ld.abilist
+new file mode 100644
+index 00000000000..41183d7beed
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/ld.abilist
+@@ -0,0 +1,9 @@
++GLIBC_2.30 __libc_stack_end D 0x4
++GLIBC_2.30 __stack_chk_guard D 0x4
++GLIBC_2.30 __tls_get_addr F
++GLIBC_2.30 _dl_mcount F
++GLIBC_2.30 _r_debug D 0x14
++GLIBC_2.30 calloc F
++GLIBC_2.30 free F
++GLIBC_2.30 malloc F
++GLIBC_2.30 realloc F
+diff --git a/sysdeps/unix/sysv/linux/arc/ldsodefs.h b/sysdeps/unix/sysv/linux/arc/ldsodefs.h
+new file mode 100644
+index 00000000000..8c5c6800af1
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/ldsodefs.h
+@@ -0,0 +1,32 @@
++/* Run-time dynamic linker data structures for loaded ELF shared objects. ARC
++ Copyright (C) 2001-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 _LDSODEFS_H
++
++/* Get the real definitions. */
++#include_next <ldsodefs.h>
++
++/* Now define our stuff. */
++
++/* We need special support to initialize DSO loaded for statically linked
++ binaries. */
++extern void _dl_static_init (struct link_map *map);
++#undef DL_STATIC_INIT
++#define DL_STATIC_INIT(map) _dl_static_init (map)
++
++#endif /* ldsodefs.h */
+diff --git a/sysdeps/unix/sysv/linux/arc/libBrokenLocale.abilist b/sysdeps/unix/sysv/linux/arc/libBrokenLocale.abilist
+new file mode 100644
+index 00000000000..c6253c0ae8a
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libBrokenLocale.abilist
+@@ -0,0 +1 @@
++GLIBC_2.30 __ctype_get_mb_cur_max F
+diff --git a/sysdeps/unix/sysv/linux/arc/libanl.abilist b/sysdeps/unix/sysv/linux/arc/libanl.abilist
+new file mode 100644
+index 00000000000..d3b753219ee
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libanl.abilist
+@@ -0,0 +1,4 @@
++GLIBC_2.30 gai_cancel F
++GLIBC_2.30 gai_error F
++GLIBC_2.30 gai_suspend F
++GLIBC_2.30 getaddrinfo_a F
+diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
+new file mode 100644
+index 00000000000..823ae25bccf
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
+@@ -0,0 +1,2084 @@
++GLIBC_2.30 _Exit F
++GLIBC_2.30 _IO_2_1_stderr_ D 0x98
++GLIBC_2.30 _IO_2_1_stdin_ D 0x98
++GLIBC_2.30 _IO_2_1_stdout_ D 0x98
++GLIBC_2.30 _IO_adjust_column F
++GLIBC_2.30 _IO_adjust_wcolumn F
++GLIBC_2.30 _IO_default_doallocate F
++GLIBC_2.30 _IO_default_finish F
++GLIBC_2.30 _IO_default_pbackfail F
++GLIBC_2.30 _IO_default_uflow F
++GLIBC_2.30 _IO_default_xsgetn F
++GLIBC_2.30 _IO_default_xsputn F
++GLIBC_2.30 _IO_do_write F
++GLIBC_2.30 _IO_doallocbuf F
++GLIBC_2.30 _IO_fclose F
++GLIBC_2.30 _IO_fdopen F
++GLIBC_2.30 _IO_feof F
++GLIBC_2.30 _IO_ferror F
++GLIBC_2.30 _IO_fflush F
++GLIBC_2.30 _IO_fgetpos F
++GLIBC_2.30 _IO_fgetpos64 F
++GLIBC_2.30 _IO_fgets F
++GLIBC_2.30 _IO_file_attach F
++GLIBC_2.30 _IO_file_close F
++GLIBC_2.30 _IO_file_close_it F
++GLIBC_2.30 _IO_file_doallocate F
++GLIBC_2.30 _IO_file_finish F
++GLIBC_2.30 _IO_file_fopen F
++GLIBC_2.30 _IO_file_init F
++GLIBC_2.30 _IO_file_jumps D 0x54
++GLIBC_2.30 _IO_file_open F
++GLIBC_2.30 _IO_file_overflow F
++GLIBC_2.30 _IO_file_read F
++GLIBC_2.30 _IO_file_seek F
++GLIBC_2.30 _IO_file_seekoff F
++GLIBC_2.30 _IO_file_setbuf F
++GLIBC_2.30 _IO_file_stat F
++GLIBC_2.30 _IO_file_sync F
++GLIBC_2.30 _IO_file_underflow F
++GLIBC_2.30 _IO_file_write F
++GLIBC_2.30 _IO_file_xsputn F
++GLIBC_2.30 _IO_flockfile F
++GLIBC_2.30 _IO_flush_all F
++GLIBC_2.30 _IO_flush_all_linebuffered F
++GLIBC_2.30 _IO_fopen F
++GLIBC_2.30 _IO_fprintf F
++GLIBC_2.30 _IO_fputs F
++GLIBC_2.30 _IO_fread F
++GLIBC_2.30 _IO_free_backup_area F
++GLIBC_2.30 _IO_free_wbackup_area F
++GLIBC_2.30 _IO_fsetpos F
++GLIBC_2.30 _IO_fsetpos64 F
++GLIBC_2.30 _IO_ftell F
++GLIBC_2.30 _IO_ftrylockfile F
++GLIBC_2.30 _IO_funlockfile F
++GLIBC_2.30 _IO_fwrite F
++GLIBC_2.30 _IO_getc F
++GLIBC_2.30 _IO_getline F
++GLIBC_2.30 _IO_getline_info F
++GLIBC_2.30 _IO_gets F
++GLIBC_2.30 _IO_init F
++GLIBC_2.30 _IO_init_marker F
++GLIBC_2.30 _IO_init_wmarker F
++GLIBC_2.30 _IO_iter_begin F
++GLIBC_2.30 _IO_iter_end F
++GLIBC_2.30 _IO_iter_file F
++GLIBC_2.30 _IO_iter_next F
++GLIBC_2.30 _IO_least_wmarker F
++GLIBC_2.30 _IO_link_in F
++GLIBC_2.30 _IO_list_all D 0x4
++GLIBC_2.30 _IO_list_lock F
++GLIBC_2.30 _IO_list_resetlock F
++GLIBC_2.30 _IO_list_unlock F
++GLIBC_2.30 _IO_marker_delta F
++GLIBC_2.30 _IO_marker_difference F
++GLIBC_2.30 _IO_padn F
++GLIBC_2.30 _IO_peekc_locked F
++GLIBC_2.30 _IO_popen F
++GLIBC_2.30 _IO_printf F
++GLIBC_2.30 _IO_proc_close F
++GLIBC_2.30 _IO_proc_open F
++GLIBC_2.30 _IO_putc F
++GLIBC_2.30 _IO_puts F
++GLIBC_2.30 _IO_remove_marker F
++GLIBC_2.30 _IO_seekmark F
++GLIBC_2.30 _IO_seekoff F
++GLIBC_2.30 _IO_seekpos F
++GLIBC_2.30 _IO_seekwmark F
++GLIBC_2.30 _IO_setb F
++GLIBC_2.30 _IO_setbuffer F
++GLIBC_2.30 _IO_setvbuf F
++GLIBC_2.30 _IO_sgetn F
++GLIBC_2.30 _IO_sprintf F
++GLIBC_2.30 _IO_sputbackc F
++GLIBC_2.30 _IO_sputbackwc F
++GLIBC_2.30 _IO_sscanf F
++GLIBC_2.30 _IO_str_init_readonly F
++GLIBC_2.30 _IO_str_init_static F
++GLIBC_2.30 _IO_str_overflow F
++GLIBC_2.30 _IO_str_pbackfail F
++GLIBC_2.30 _IO_str_seekoff F
++GLIBC_2.30 _IO_str_underflow F
++GLIBC_2.30 _IO_sungetc F
++GLIBC_2.30 _IO_sungetwc F
++GLIBC_2.30 _IO_switch_to_get_mode F
++GLIBC_2.30 _IO_switch_to_main_wget_area F
++GLIBC_2.30 _IO_switch_to_wbackup_area F
++GLIBC_2.30 _IO_switch_to_wget_mode F
++GLIBC_2.30 _IO_un_link F
++GLIBC_2.30 _IO_ungetc F
++GLIBC_2.30 _IO_unsave_markers F
++GLIBC_2.30 _IO_unsave_wmarkers F
++GLIBC_2.30 _IO_vfprintf F
++GLIBC_2.30 _IO_vsprintf F
++GLIBC_2.30 _IO_wdefault_doallocate F
++GLIBC_2.30 _IO_wdefault_finish F
++GLIBC_2.30 _IO_wdefault_pbackfail F
++GLIBC_2.30 _IO_wdefault_uflow F
++GLIBC_2.30 _IO_wdefault_xsgetn F
++GLIBC_2.30 _IO_wdefault_xsputn F
++GLIBC_2.30 _IO_wdo_write F
++GLIBC_2.30 _IO_wdoallocbuf F
++GLIBC_2.30 _IO_wfile_jumps D 0x54
++GLIBC_2.30 _IO_wfile_overflow F
++GLIBC_2.30 _IO_wfile_seekoff F
++GLIBC_2.30 _IO_wfile_sync F
++GLIBC_2.30 _IO_wfile_underflow F
++GLIBC_2.30 _IO_wfile_xsputn F
++GLIBC_2.30 _IO_wmarker_delta F
++GLIBC_2.30 _IO_wsetb F
++GLIBC_2.30 ___brk_addr D 0x4
++GLIBC_2.30 __adjtimex F
++GLIBC_2.30 __after_morecore_hook D 0x4
++GLIBC_2.30 __argz_count F
++GLIBC_2.30 __argz_next F
++GLIBC_2.30 __argz_stringify F
++GLIBC_2.30 __asprintf F
++GLIBC_2.30 __asprintf_chk F
++GLIBC_2.30 __assert F
++GLIBC_2.30 __assert_fail F
++GLIBC_2.30 __assert_perror_fail F
++GLIBC_2.30 __backtrace F
++GLIBC_2.30 __backtrace_symbols F
++GLIBC_2.30 __backtrace_symbols_fd F
++GLIBC_2.30 __bsd_getpgrp F
++GLIBC_2.30 __bzero F
++GLIBC_2.30 __check_rhosts_file D 0x4
++GLIBC_2.30 __chk_fail F
++GLIBC_2.30 __clone F
++GLIBC_2.30 __close F
++GLIBC_2.30 __cmsg_nxthdr F
++GLIBC_2.30 __confstr_chk F
++GLIBC_2.30 __connect F
++GLIBC_2.30 __ctype_b_loc F
++GLIBC_2.30 __ctype_get_mb_cur_max F
++GLIBC_2.30 __ctype_tolower_loc F
++GLIBC_2.30 __ctype_toupper_loc F
++GLIBC_2.30 __curbrk D 0x4
++GLIBC_2.30 __cxa_at_quick_exit F
++GLIBC_2.30 __cxa_atexit F
++GLIBC_2.30 __cxa_finalize F
++GLIBC_2.30 __cxa_thread_atexit_impl F
++GLIBC_2.30 __cyg_profile_func_enter F
++GLIBC_2.30 __cyg_profile_func_exit F
++GLIBC_2.30 __daylight D 0x4
++GLIBC_2.30 __dcgettext F
++GLIBC_2.30 __default_morecore F
++GLIBC_2.30 __dgettext F
++GLIBC_2.30 __dprintf_chk F
++GLIBC_2.30 __dup2 F
++GLIBC_2.30 __duplocale F
++GLIBC_2.30 __endmntent F
++GLIBC_2.30 __environ D 0x4
++GLIBC_2.30 __errno_location F
++GLIBC_2.30 __explicit_bzero_chk F
++GLIBC_2.30 __fbufsize F
++GLIBC_2.30 __fcntl F
++GLIBC_2.30 __fdelt_chk F
++GLIBC_2.30 __fdelt_warn F
++GLIBC_2.30 __ffs F
++GLIBC_2.30 __fgets_chk F
++GLIBC_2.30 __fgets_unlocked_chk F
++GLIBC_2.30 __fgetws_chk F
++GLIBC_2.30 __fgetws_unlocked_chk F
++GLIBC_2.30 __finite F
++GLIBC_2.30 __finitef F
++GLIBC_2.30 __flbf F
++GLIBC_2.30 __fork F
++GLIBC_2.30 __fpending F
++GLIBC_2.30 __fprintf_chk F
++GLIBC_2.30 __fpu_control D 0x4
++GLIBC_2.30 __fpurge F
++GLIBC_2.30 __fread_chk F
++GLIBC_2.30 __fread_unlocked_chk F
++GLIBC_2.30 __freadable F
++GLIBC_2.30 __freading F
++GLIBC_2.30 __free_hook D 0x4
++GLIBC_2.30 __freelocale F
++GLIBC_2.30 __fsetlocking F
++GLIBC_2.30 __fwprintf_chk F
++GLIBC_2.30 __fwritable F
++GLIBC_2.30 __fwriting F
++GLIBC_2.30 __fxstat F
++GLIBC_2.30 __fxstat64 F
++GLIBC_2.30 __fxstatat F
++GLIBC_2.30 __fxstatat64 F
++GLIBC_2.30 __getauxval F
++GLIBC_2.30 __getcwd_chk F
++GLIBC_2.30 __getdelim F
++GLIBC_2.30 __getdomainname_chk F
++GLIBC_2.30 __getgroups_chk F
++GLIBC_2.30 __gethostname_chk F
++GLIBC_2.30 __getlogin_r_chk F
++GLIBC_2.30 __getmntent_r F
++GLIBC_2.30 __getpagesize F
++GLIBC_2.30 __getpgid F
++GLIBC_2.30 __getpid F
++GLIBC_2.30 __gets_chk F
++GLIBC_2.30 __gettimeofday F
++GLIBC_2.30 __getwd_chk F
++GLIBC_2.30 __gmtime_r F
++GLIBC_2.30 __h_errno_location F
++GLIBC_2.30 __isalnum_l F
++GLIBC_2.30 __isalpha_l F
++GLIBC_2.30 __isascii_l F
++GLIBC_2.30 __isblank_l F
++GLIBC_2.30 __iscntrl_l F
++GLIBC_2.30 __isctype F
++GLIBC_2.30 __isdigit_l F
++GLIBC_2.30 __isgraph_l F
++GLIBC_2.30 __isinf F
++GLIBC_2.30 __isinff F
++GLIBC_2.30 __islower_l F
++GLIBC_2.30 __isnan F
++GLIBC_2.30 __isnanf F
++GLIBC_2.30 __isoc99_fscanf F
++GLIBC_2.30 __isoc99_fwscanf F
++GLIBC_2.30 __isoc99_scanf F
++GLIBC_2.30 __isoc99_sscanf F
++GLIBC_2.30 __isoc99_swscanf F
++GLIBC_2.30 __isoc99_vfscanf F
++GLIBC_2.30 __isoc99_vfwscanf F
++GLIBC_2.30 __isoc99_vscanf F
++GLIBC_2.30 __isoc99_vsscanf F
++GLIBC_2.30 __isoc99_vswscanf F
++GLIBC_2.30 __isoc99_vwscanf F
++GLIBC_2.30 __isoc99_wscanf F
++GLIBC_2.30 __isprint_l F
++GLIBC_2.30 __ispunct_l F
++GLIBC_2.30 __isspace_l F
++GLIBC_2.30 __isupper_l F
++GLIBC_2.30 __iswalnum_l F
++GLIBC_2.30 __iswalpha_l F
++GLIBC_2.30 __iswblank_l F
++GLIBC_2.30 __iswcntrl_l F
++GLIBC_2.30 __iswctype F
++GLIBC_2.30 __iswctype_l F
++GLIBC_2.30 __iswdigit_l F
++GLIBC_2.30 __iswgraph_l F
++GLIBC_2.30 __iswlower_l F
++GLIBC_2.30 __iswprint_l F
++GLIBC_2.30 __iswpunct_l F
++GLIBC_2.30 __iswspace_l F
++GLIBC_2.30 __iswupper_l F
++GLIBC_2.30 __iswxdigit_l F
++GLIBC_2.30 __isxdigit_l F
++GLIBC_2.30 __ivaliduser F
++GLIBC_2.30 __key_decryptsession_pk_LOCAL D 0x4
++GLIBC_2.30 __key_encryptsession_pk_LOCAL D 0x4
++GLIBC_2.30 __key_gendes_LOCAL D 0x4
++GLIBC_2.30 __libc_allocate_rtsig F
++GLIBC_2.30 __libc_calloc F
++GLIBC_2.30 __libc_current_sigrtmax F
++GLIBC_2.30 __libc_current_sigrtmin F
++GLIBC_2.30 __libc_free F
++GLIBC_2.30 __libc_freeres F
++GLIBC_2.30 __libc_init_first F
++GLIBC_2.30 __libc_mallinfo F
++GLIBC_2.30 __libc_malloc F
++GLIBC_2.30 __libc_mallopt F
++GLIBC_2.30 __libc_memalign F
++GLIBC_2.30 __libc_pvalloc F
++GLIBC_2.30 __libc_realloc F
++GLIBC_2.30 __libc_sa_len F
++GLIBC_2.30 __libc_start_main F
++GLIBC_2.30 __libc_valloc F
++GLIBC_2.30 __longjmp_chk F
++GLIBC_2.30 __lseek F
++GLIBC_2.30 __lxstat F
++GLIBC_2.30 __lxstat64 F
++GLIBC_2.30 __malloc_hook D 0x4
++GLIBC_2.30 __mbrlen F
++GLIBC_2.30 __mbrtowc F
++GLIBC_2.30 __mbsnrtowcs_chk F
++GLIBC_2.30 __mbsrtowcs_chk F
++GLIBC_2.30 __mbstowcs_chk F
++GLIBC_2.30 __memalign_hook D 0x4
++GLIBC_2.30 __memcpy_chk F
++GLIBC_2.30 __memmove_chk F
++GLIBC_2.30 __mempcpy F
++GLIBC_2.30 __mempcpy_chk F
++GLIBC_2.30 __memset_chk F
++GLIBC_2.30 __monstartup F
++GLIBC_2.30 __morecore D 0x4
++GLIBC_2.30 __nanosleep F
++GLIBC_2.30 __newlocale F
++GLIBC_2.30 __nl_langinfo_l F
++GLIBC_2.30 __nss_configure_lookup F
++GLIBC_2.30 __nss_hostname_digits_dots F
++GLIBC_2.30 __obstack_printf_chk F
++GLIBC_2.30 __obstack_vprintf_chk F
++GLIBC_2.30 __open F
++GLIBC_2.30 __open64 F
++GLIBC_2.30 __open64_2 F
++GLIBC_2.30 __open_2 F
++GLIBC_2.30 __openat64_2 F
++GLIBC_2.30 __openat_2 F
++GLIBC_2.30 __overflow F
++GLIBC_2.30 __pipe F
++GLIBC_2.30 __poll F
++GLIBC_2.30 __poll_chk F
++GLIBC_2.30 __posix_getopt F
++GLIBC_2.30 __ppoll_chk F
++GLIBC_2.30 __pread64 F
++GLIBC_2.30 __pread64_chk F
++GLIBC_2.30 __pread_chk F
++GLIBC_2.30 __printf_chk F
++GLIBC_2.30 __printf_fp F
++GLIBC_2.30 __profile_frequency F
++GLIBC_2.30 __progname D 0x4
++GLIBC_2.30 __progname_full D 0x4
++GLIBC_2.30 __ptsname_r_chk F
++GLIBC_2.30 __pwrite64 F
++GLIBC_2.30 __rawmemchr F
++GLIBC_2.30 __rcmd_errstr D 0x4
++GLIBC_2.30 __read F
++GLIBC_2.30 __read_chk F
++GLIBC_2.30 __readlink_chk F
++GLIBC_2.30 __readlinkat_chk F
++GLIBC_2.30 __realloc_hook D 0x4
++GLIBC_2.30 __realpath_chk F
++GLIBC_2.30 __recv_chk F
++GLIBC_2.30 __recvfrom_chk F
++GLIBC_2.30 __register_atfork F
++GLIBC_2.30 __res_init F
++GLIBC_2.30 __res_nclose F
++GLIBC_2.30 __res_ninit F
++GLIBC_2.30 __res_randomid F
++GLIBC_2.30 __res_state F
++GLIBC_2.30 __rpc_thread_createerr F
++GLIBC_2.30 __rpc_thread_svc_fdset F
++GLIBC_2.30 __rpc_thread_svc_max_pollfd F
++GLIBC_2.30 __rpc_thread_svc_pollfd F
++GLIBC_2.30 __sbrk F
++GLIBC_2.30 __sched_cpualloc F
++GLIBC_2.30 __sched_cpucount F
++GLIBC_2.30 __sched_cpufree F
++GLIBC_2.30 __sched_get_priority_max F
++GLIBC_2.30 __sched_get_priority_min F
++GLIBC_2.30 __sched_getparam F
++GLIBC_2.30 __sched_getscheduler F
++GLIBC_2.30 __sched_setscheduler F
++GLIBC_2.30 __sched_yield F
++GLIBC_2.30 __select F
++GLIBC_2.30 __send F
++GLIBC_2.30 __setmntent F
++GLIBC_2.30 __setpgid F
++GLIBC_2.30 __sigaction F
++GLIBC_2.30 __signbit F
++GLIBC_2.30 __signbitf F
++GLIBC_2.30 __sigpause F
++GLIBC_2.30 __sigsetjmp F
++GLIBC_2.30 __sigsuspend F
++GLIBC_2.30 __snprintf_chk F
++GLIBC_2.30 __sprintf_chk F
++GLIBC_2.30 __stack_chk_fail F
++GLIBC_2.30 __statfs F
++GLIBC_2.30 __stpcpy F
++GLIBC_2.30 __stpcpy_chk F
++GLIBC_2.30 __stpncpy F
++GLIBC_2.30 __stpncpy_chk F
++GLIBC_2.30 __strcasecmp F
++GLIBC_2.30 __strcasecmp_l F
++GLIBC_2.30 __strcasestr F
++GLIBC_2.30 __strcat_chk F
++GLIBC_2.30 __strcoll_l F
++GLIBC_2.30 __strcpy_chk F
++GLIBC_2.30 __strdup F
++GLIBC_2.30 __strerror_r F
++GLIBC_2.30 __strfmon_l F
++GLIBC_2.30 __strftime_l F
++GLIBC_2.30 __strncasecmp_l F
++GLIBC_2.30 __strncat_chk F
++GLIBC_2.30 __strncpy_chk F
++GLIBC_2.30 __strndup F
++GLIBC_2.30 __strsep_g F
++GLIBC_2.30 __strtod_internal F
++GLIBC_2.30 __strtod_l F
++GLIBC_2.30 __strtof_internal F
++GLIBC_2.30 __strtof_l F
++GLIBC_2.30 __strtok_r F
++GLIBC_2.30 __strtol_internal F
++GLIBC_2.30 __strtol_l F
++GLIBC_2.30 __strtold_internal F
++GLIBC_2.30 __strtold_l F
++GLIBC_2.30 __strtoll_internal F
++GLIBC_2.30 __strtoll_l F
++GLIBC_2.30 __strtoul_internal F
++GLIBC_2.30 __strtoul_l F
++GLIBC_2.30 __strtoull_internal F
++GLIBC_2.30 __strtoull_l F
++GLIBC_2.30 __strverscmp F
++GLIBC_2.30 __strxfrm_l F
++GLIBC_2.30 __swprintf_chk F
++GLIBC_2.30 __syscall_error F
++GLIBC_2.30 __sysconf F
++GLIBC_2.30 __syslog_chk F
++GLIBC_2.30 __sysv_signal F
++GLIBC_2.30 __timezone D 0x4
++GLIBC_2.30 __toascii_l F
++GLIBC_2.30 __tolower_l F
++GLIBC_2.30 __toupper_l F
++GLIBC_2.30 __towctrans F
++GLIBC_2.30 __towctrans_l F
++GLIBC_2.30 __towlower_l F
++GLIBC_2.30 __towupper_l F
++GLIBC_2.30 __ttyname_r_chk F
++GLIBC_2.30 __tzname D 0x8
++GLIBC_2.30 __uflow F
++GLIBC_2.30 __underflow F
++GLIBC_2.30 __uselocale F
++GLIBC_2.30 __vasprintf_chk F
++GLIBC_2.30 __vdprintf_chk F
++GLIBC_2.30 __vfork F
++GLIBC_2.30 __vfprintf_chk F
++GLIBC_2.30 __vfscanf F
++GLIBC_2.30 __vfwprintf_chk F
++GLIBC_2.30 __vprintf_chk F
++GLIBC_2.30 __vsnprintf F
++GLIBC_2.30 __vsnprintf_chk F
++GLIBC_2.30 __vsprintf_chk F
++GLIBC_2.30 __vsscanf F
++GLIBC_2.30 __vswprintf_chk F
++GLIBC_2.30 __vsyslog_chk F
++GLIBC_2.30 __vwprintf_chk F
++GLIBC_2.30 __wait F
++GLIBC_2.30 __waitpid F
++GLIBC_2.30 __wcpcpy_chk F
++GLIBC_2.30 __wcpncpy_chk F
++GLIBC_2.30 __wcrtomb_chk F
++GLIBC_2.30 __wcscasecmp_l F
++GLIBC_2.30 __wcscat_chk F
++GLIBC_2.30 __wcscoll_l F
++GLIBC_2.30 __wcscpy_chk F
++GLIBC_2.30 __wcsftime_l F
++GLIBC_2.30 __wcsncasecmp_l F
++GLIBC_2.30 __wcsncat_chk F
++GLIBC_2.30 __wcsncpy_chk F
++GLIBC_2.30 __wcsnrtombs_chk F
++GLIBC_2.30 __wcsrtombs_chk F
++GLIBC_2.30 __wcstod_internal F
++GLIBC_2.30 __wcstod_l F
++GLIBC_2.30 __wcstof_internal F
++GLIBC_2.30 __wcstof_l F
++GLIBC_2.30 __wcstol_internal F
++GLIBC_2.30 __wcstol_l F
++GLIBC_2.30 __wcstold_internal F
++GLIBC_2.30 __wcstold_l F
++GLIBC_2.30 __wcstoll_internal F
++GLIBC_2.30 __wcstoll_l F
++GLIBC_2.30 __wcstombs_chk F
++GLIBC_2.30 __wcstoul_internal F
++GLIBC_2.30 __wcstoul_l F
++GLIBC_2.30 __wcstoull_internal F
++GLIBC_2.30 __wcstoull_l F
++GLIBC_2.30 __wcsxfrm_l F
++GLIBC_2.30 __wctomb_chk F
++GLIBC_2.30 __wctrans_l F
++GLIBC_2.30 __wctype_l F
++GLIBC_2.30 __wmemcpy_chk F
++GLIBC_2.30 __wmemmove_chk F
++GLIBC_2.30 __wmempcpy_chk F
++GLIBC_2.30 __wmemset_chk F
++GLIBC_2.30 __woverflow F
++GLIBC_2.30 __wprintf_chk F
++GLIBC_2.30 __write F
++GLIBC_2.30 __wuflow F
++GLIBC_2.30 __wunderflow F
++GLIBC_2.30 __xmknod F
++GLIBC_2.30 __xmknodat F
++GLIBC_2.30 __xpg_basename F
++GLIBC_2.30 __xpg_sigpause F
++GLIBC_2.30 __xpg_strerror_r F
++GLIBC_2.30 __xstat F
++GLIBC_2.30 __xstat64 F
++GLIBC_2.30 _authenticate F
++GLIBC_2.30 _dl_mcount_wrapper F
++GLIBC_2.30 _dl_mcount_wrapper_check F
++GLIBC_2.30 _environ D 0x4
++GLIBC_2.30 _exit F
++GLIBC_2.30 _flush_cache F
++GLIBC_2.30 _flushlbf F
++GLIBC_2.30 _libc_intl_domainname D 0x5
++GLIBC_2.30 _longjmp F
++GLIBC_2.30 _mcleanup F
++GLIBC_2.30 _mcount F
++GLIBC_2.30 _nl_default_dirname D 0x12
++GLIBC_2.30 _nl_domain_bindings D 0x4
++GLIBC_2.30 _nl_msg_cat_cntr D 0x4
++GLIBC_2.30 _null_auth D 0xc
++GLIBC_2.30 _obstack_allocated_p F
++GLIBC_2.30 _obstack_begin F
++GLIBC_2.30 _obstack_begin_1 F
++GLIBC_2.30 _obstack_free F
++GLIBC_2.30 _obstack_memory_used F
++GLIBC_2.30 _obstack_newchunk F
++GLIBC_2.30 _res D 0x200
++GLIBC_2.30 _res_hconf D 0x30
++GLIBC_2.30 _rpc_dtablesize F
++GLIBC_2.30 _seterr_reply F
++GLIBC_2.30 _setjmp F
++GLIBC_2.30 _sys_errlist D 0x21c
++GLIBC_2.30 _sys_nerr D 0x4
++GLIBC_2.30 _sys_siglist D 0x104
++GLIBC_2.30 _tolower F
++GLIBC_2.30 _toupper F
++GLIBC_2.30 a64l F
++GLIBC_2.30 abort F
++GLIBC_2.30 abs F
++GLIBC_2.30 accept F
++GLIBC_2.30 accept4 F
++GLIBC_2.30 access F
++GLIBC_2.30 acct F
++GLIBC_2.30 addmntent F
++GLIBC_2.30 addseverity F
++GLIBC_2.30 adjtime F
++GLIBC_2.30 adjtimex F
++GLIBC_2.30 alarm F
++GLIBC_2.30 aligned_alloc F
++GLIBC_2.30 alphasort F
++GLIBC_2.30 alphasort64 F
++GLIBC_2.30 argp_err_exit_status D 0x4
++GLIBC_2.30 argp_error F
++GLIBC_2.30 argp_failure F
++GLIBC_2.30 argp_help F
++GLIBC_2.30 argp_parse F
++GLIBC_2.30 argp_program_bug_address D 0x4
++GLIBC_2.30 argp_program_version D 0x4
++GLIBC_2.30 argp_program_version_hook D 0x4
++GLIBC_2.30 argp_state_help F
++GLIBC_2.30 argp_usage F
++GLIBC_2.30 argz_add F
++GLIBC_2.30 argz_add_sep F
++GLIBC_2.30 argz_append F
++GLIBC_2.30 argz_count F
++GLIBC_2.30 argz_create F
++GLIBC_2.30 argz_create_sep F
++GLIBC_2.30 argz_delete F
++GLIBC_2.30 argz_extract F
++GLIBC_2.30 argz_insert F
++GLIBC_2.30 argz_next F
++GLIBC_2.30 argz_replace F
++GLIBC_2.30 argz_stringify F
++GLIBC_2.30 asctime F
++GLIBC_2.30 asctime_r F
++GLIBC_2.30 asprintf F
++GLIBC_2.30 atof F
++GLIBC_2.30 atoi F
++GLIBC_2.30 atol F
++GLIBC_2.30 atoll F
++GLIBC_2.30 authdes_create F
++GLIBC_2.30 authdes_getucred F
++GLIBC_2.30 authdes_pk_create F
++GLIBC_2.30 authnone_create F
++GLIBC_2.30 authunix_create F
++GLIBC_2.30 authunix_create_default F
++GLIBC_2.30 backtrace F
++GLIBC_2.30 backtrace_symbols F
++GLIBC_2.30 backtrace_symbols_fd F
++GLIBC_2.30 basename F
++GLIBC_2.30 bcmp F
++GLIBC_2.30 bcopy F
++GLIBC_2.30 bind F
++GLIBC_2.30 bind_textdomain_codeset F
++GLIBC_2.30 bindresvport F
++GLIBC_2.30 bindtextdomain F
++GLIBC_2.30 brk F
++GLIBC_2.30 bsd_signal F
++GLIBC_2.30 bsearch F
++GLIBC_2.30 btowc F
++GLIBC_2.30 bzero F
++GLIBC_2.30 c16rtomb F
++GLIBC_2.30 c32rtomb F
++GLIBC_2.30 cacheflush F
++GLIBC_2.30 calloc F
++GLIBC_2.30 callrpc F
++GLIBC_2.30 canonicalize_file_name F
++GLIBC_2.30 capget F
++GLIBC_2.30 capset F
++GLIBC_2.30 catclose F
++GLIBC_2.30 catgets F
++GLIBC_2.30 catopen F
++GLIBC_2.30 cbc_crypt F
++GLIBC_2.30 cfgetispeed F
++GLIBC_2.30 cfgetospeed F
++GLIBC_2.30 cfmakeraw F
++GLIBC_2.30 cfsetispeed F
++GLIBC_2.30 cfsetospeed F
++GLIBC_2.30 cfsetspeed F
++GLIBC_2.30 chdir F
++GLIBC_2.30 chflags F
++GLIBC_2.30 chmod F
++GLIBC_2.30 chown F
++GLIBC_2.30 chroot F
++GLIBC_2.30 clearenv F
++GLIBC_2.30 clearerr F
++GLIBC_2.30 clearerr_unlocked F
++GLIBC_2.30 clnt_broadcast F
++GLIBC_2.30 clnt_create F
++GLIBC_2.30 clnt_pcreateerror F
++GLIBC_2.30 clnt_perrno F
++GLIBC_2.30 clnt_perror F
++GLIBC_2.30 clnt_spcreateerror F
++GLIBC_2.30 clnt_sperrno F
++GLIBC_2.30 clnt_sperror F
++GLIBC_2.30 clntraw_create F
++GLIBC_2.30 clnttcp_create F
++GLIBC_2.30 clntudp_bufcreate F
++GLIBC_2.30 clntudp_create F
++GLIBC_2.30 clntunix_create F
++GLIBC_2.30 clock F
++GLIBC_2.30 clock_adjtime F
++GLIBC_2.30 clock_getcpuclockid F
++GLIBC_2.30 clock_getres F
++GLIBC_2.30 clock_gettime F
++GLIBC_2.30 clock_nanosleep F
++GLIBC_2.30 clock_settime F
++GLIBC_2.30 clone F
++GLIBC_2.30 close F
++GLIBC_2.30 closedir F
++GLIBC_2.30 closelog F
++GLIBC_2.30 confstr F
++GLIBC_2.30 connect F
++GLIBC_2.30 copy_file_range F
++GLIBC_2.30 copysign F
++GLIBC_2.30 copysignf F
++GLIBC_2.30 copysignl F
++GLIBC_2.30 creat F
++GLIBC_2.30 creat64 F
++GLIBC_2.30 ctermid F
++GLIBC_2.30 ctime F
++GLIBC_2.30 ctime_r F
++GLIBC_2.30 cuserid F
++GLIBC_2.30 daemon F
++GLIBC_2.30 daylight D 0x4
++GLIBC_2.30 dcgettext F
++GLIBC_2.30 dcngettext F
++GLIBC_2.30 delete_module F
++GLIBC_2.30 des_setparity F
++GLIBC_2.30 dgettext F
++GLIBC_2.30 difftime F
++GLIBC_2.30 dirfd F
++GLIBC_2.30 dirname F
++GLIBC_2.30 div F
++GLIBC_2.30 dl_iterate_phdr F
++GLIBC_2.30 dngettext F
++GLIBC_2.30 dprintf F
++GLIBC_2.30 drand48 F
++GLIBC_2.30 drand48_r F
++GLIBC_2.30 dup F
++GLIBC_2.30 dup2 F
++GLIBC_2.30 dup3 F
++GLIBC_2.30 duplocale F
++GLIBC_2.30 dysize F
++GLIBC_2.30 eaccess F
++GLIBC_2.30 ecb_crypt F
++GLIBC_2.30 ecvt F
++GLIBC_2.30 ecvt_r F
++GLIBC_2.30 endaliasent F
++GLIBC_2.30 endfsent F
++GLIBC_2.30 endgrent F
++GLIBC_2.30 endhostent F
++GLIBC_2.30 endmntent F
++GLIBC_2.30 endnetent F
++GLIBC_2.30 endnetgrent F
++GLIBC_2.30 endprotoent F
++GLIBC_2.30 endpwent F
++GLIBC_2.30 endrpcent F
++GLIBC_2.30 endservent F
++GLIBC_2.30 endsgent F
++GLIBC_2.30 endspent F
++GLIBC_2.30 endttyent F
++GLIBC_2.30 endusershell F
++GLIBC_2.30 endutent F
++GLIBC_2.30 endutxent F
++GLIBC_2.30 environ D 0x4
++GLIBC_2.30 envz_add F
++GLIBC_2.30 envz_entry F
++GLIBC_2.30 envz_get F
++GLIBC_2.30 envz_merge F
++GLIBC_2.30 envz_remove F
++GLIBC_2.30 envz_strip F
++GLIBC_2.30 epoll_create F
++GLIBC_2.30 epoll_create1 F
++GLIBC_2.30 epoll_ctl F
++GLIBC_2.30 epoll_pwait F
++GLIBC_2.30 epoll_wait F
++GLIBC_2.30 erand48 F
++GLIBC_2.30 erand48_r F
++GLIBC_2.30 err F
++GLIBC_2.30 error F
++GLIBC_2.30 error_at_line F
++GLIBC_2.30 error_message_count D 0x4
++GLIBC_2.30 error_one_per_line D 0x4
++GLIBC_2.30 error_print_progname D 0x4
++GLIBC_2.30 errx F
++GLIBC_2.30 ether_aton F
++GLIBC_2.30 ether_aton_r F
++GLIBC_2.30 ether_hostton F
++GLIBC_2.30 ether_line F
++GLIBC_2.30 ether_ntoa F
++GLIBC_2.30 ether_ntoa_r F
++GLIBC_2.30 ether_ntohost F
++GLIBC_2.30 euidaccess F
++GLIBC_2.30 eventfd F
++GLIBC_2.30 eventfd_read F
++GLIBC_2.30 eventfd_write F
++GLIBC_2.30 execl F
++GLIBC_2.30 execle F
++GLIBC_2.30 execlp F
++GLIBC_2.30 execv F
++GLIBC_2.30 execve F
++GLIBC_2.30 execvp F
++GLIBC_2.30 execvpe F
++GLIBC_2.30 exit F
++GLIBC_2.30 explicit_bzero F
++GLIBC_2.30 faccessat F
++GLIBC_2.30 fallocate F
++GLIBC_2.30 fallocate64 F
++GLIBC_2.30 fanotify_init F
++GLIBC_2.30 fanotify_mark F
++GLIBC_2.30 fchdir F
++GLIBC_2.30 fchflags F
++GLIBC_2.30 fchmod F
++GLIBC_2.30 fchmodat F
++GLIBC_2.30 fchown F
++GLIBC_2.30 fchownat F
++GLIBC_2.30 fclose F
++GLIBC_2.30 fcloseall F
++GLIBC_2.30 fcntl F
++GLIBC_2.30 fcntl64 F
++GLIBC_2.30 fcvt F
++GLIBC_2.30 fcvt_r F
++GLIBC_2.30 fdatasync F
++GLIBC_2.30 fdopen F
++GLIBC_2.30 fdopendir F
++GLIBC_2.30 feof F
++GLIBC_2.30 feof_unlocked F
++GLIBC_2.30 ferror F
++GLIBC_2.30 ferror_unlocked F
++GLIBC_2.30 fexecve F
++GLIBC_2.30 fflush F
++GLIBC_2.30 fflush_unlocked F
++GLIBC_2.30 ffs F
++GLIBC_2.30 ffsl F
++GLIBC_2.30 ffsll F
++GLIBC_2.30 fgetc F
++GLIBC_2.30 fgetc_unlocked F
++GLIBC_2.30 fgetgrent F
++GLIBC_2.30 fgetgrent_r F
++GLIBC_2.30 fgetpos F
++GLIBC_2.30 fgetpos64 F
++GLIBC_2.30 fgetpwent F
++GLIBC_2.30 fgetpwent_r F
++GLIBC_2.30 fgets F
++GLIBC_2.30 fgets_unlocked F
++GLIBC_2.30 fgetsgent F
++GLIBC_2.30 fgetsgent_r F
++GLIBC_2.30 fgetspent F
++GLIBC_2.30 fgetspent_r F
++GLIBC_2.30 fgetwc F
++GLIBC_2.30 fgetwc_unlocked F
++GLIBC_2.30 fgetws F
++GLIBC_2.30 fgetws_unlocked F
++GLIBC_2.30 fgetxattr F
++GLIBC_2.30 fileno F
++GLIBC_2.30 fileno_unlocked F
++GLIBC_2.30 finite F
++GLIBC_2.30 finitef F
++GLIBC_2.30 finitel F
++GLIBC_2.30 flistxattr F
++GLIBC_2.30 flock F
++GLIBC_2.30 flockfile F
++GLIBC_2.30 fmemopen F
++GLIBC_2.30 fmtmsg F
++GLIBC_2.30 fnmatch F
++GLIBC_2.30 fopen F
++GLIBC_2.30 fopen64 F
++GLIBC_2.30 fopencookie F
++GLIBC_2.30 fork F
++GLIBC_2.30 fpathconf F
++GLIBC_2.30 fprintf F
++GLIBC_2.30 fputc F
++GLIBC_2.30 fputc_unlocked F
++GLIBC_2.30 fputs F
++GLIBC_2.30 fputs_unlocked F
++GLIBC_2.30 fputwc F
++GLIBC_2.30 fputwc_unlocked F
++GLIBC_2.30 fputws F
++GLIBC_2.30 fputws_unlocked F
++GLIBC_2.30 fread F
++GLIBC_2.30 fread_unlocked F
++GLIBC_2.30 free F
++GLIBC_2.30 freeaddrinfo F
++GLIBC_2.30 freeifaddrs F
++GLIBC_2.30 freelocale F
++GLIBC_2.30 fremovexattr F
++GLIBC_2.30 freopen F
++GLIBC_2.30 freopen64 F
++GLIBC_2.30 frexp F
++GLIBC_2.30 frexpf F
++GLIBC_2.30 frexpl F
++GLIBC_2.30 fscanf F
++GLIBC_2.30 fseek F
++GLIBC_2.30 fseeko F
++GLIBC_2.30 fseeko64 F
++GLIBC_2.30 fsetpos F
++GLIBC_2.30 fsetpos64 F
++GLIBC_2.30 fsetxattr F
++GLIBC_2.30 fstatfs F
++GLIBC_2.30 fstatfs64 F
++GLIBC_2.30 fstatvfs F
++GLIBC_2.30 fstatvfs64 F
++GLIBC_2.30 fsync F
++GLIBC_2.30 ftell F
++GLIBC_2.30 ftello F
++GLIBC_2.30 ftello64 F
++GLIBC_2.30 ftime F
++GLIBC_2.30 ftok F
++GLIBC_2.30 ftruncate F
++GLIBC_2.30 ftruncate64 F
++GLIBC_2.30 ftrylockfile F
++GLIBC_2.30 fts64_children F
++GLIBC_2.30 fts64_close F
++GLIBC_2.30 fts64_open F
++GLIBC_2.30 fts64_read F
++GLIBC_2.30 fts64_set F
++GLIBC_2.30 fts_children F
++GLIBC_2.30 fts_close F
++GLIBC_2.30 fts_open F
++GLIBC_2.30 fts_read F
++GLIBC_2.30 fts_set F
++GLIBC_2.30 ftw F
++GLIBC_2.30 ftw64 F
++GLIBC_2.30 funlockfile F
++GLIBC_2.30 futimens F
++GLIBC_2.30 futimes F
++GLIBC_2.30 futimesat F
++GLIBC_2.30 fwide F
++GLIBC_2.30 fwprintf F
++GLIBC_2.30 fwrite F
++GLIBC_2.30 fwrite_unlocked F
++GLIBC_2.30 fwscanf F
++GLIBC_2.30 gai_strerror F
++GLIBC_2.30 gcvt F
++GLIBC_2.30 get_avphys_pages F
++GLIBC_2.30 get_current_dir_name F
++GLIBC_2.30 get_myaddress F
++GLIBC_2.30 get_nprocs F
++GLIBC_2.30 get_nprocs_conf F
++GLIBC_2.30 get_phys_pages F
++GLIBC_2.30 getaddrinfo F
++GLIBC_2.30 getaliasbyname F
++GLIBC_2.30 getaliasbyname_r F
++GLIBC_2.30 getaliasent F
++GLIBC_2.30 getaliasent_r F
++GLIBC_2.30 getauxval F
++GLIBC_2.30 getc F
++GLIBC_2.30 getc_unlocked F
++GLIBC_2.30 getchar F
++GLIBC_2.30 getchar_unlocked F
++GLIBC_2.30 getcontext F
++GLIBC_2.30 getcpu F
++GLIBC_2.30 getcwd F
++GLIBC_2.30 getdate F
++GLIBC_2.30 getdate_err D 0x4
++GLIBC_2.30 getdate_r F
++GLIBC_2.30 getdelim F
++GLIBC_2.30 getdents64 F
++GLIBC_2.30 getdirentries F
++GLIBC_2.30 getdirentries64 F
++GLIBC_2.30 getdomainname F
++GLIBC_2.30 getdtablesize F
++GLIBC_2.30 getegid F
++GLIBC_2.30 getentropy F
++GLIBC_2.30 getenv F
++GLIBC_2.30 geteuid F
++GLIBC_2.30 getfsent F
++GLIBC_2.30 getfsfile F
++GLIBC_2.30 getfsspec F
++GLIBC_2.30 getgid F
++GLIBC_2.30 getgrent F
++GLIBC_2.30 getgrent_r F
++GLIBC_2.30 getgrgid F
++GLIBC_2.30 getgrgid_r F
++GLIBC_2.30 getgrnam F
++GLIBC_2.30 getgrnam_r F
++GLIBC_2.30 getgrouplist F
++GLIBC_2.30 getgroups F
++GLIBC_2.30 gethostbyaddr F
++GLIBC_2.30 gethostbyaddr_r F
++GLIBC_2.30 gethostbyname F
++GLIBC_2.30 gethostbyname2 F
++GLIBC_2.30 gethostbyname2_r F
++GLIBC_2.30 gethostbyname_r F
++GLIBC_2.30 gethostent F
++GLIBC_2.30 gethostent_r F
++GLIBC_2.30 gethostid F
++GLIBC_2.30 gethostname F
++GLIBC_2.30 getifaddrs F
++GLIBC_2.30 getipv4sourcefilter F
++GLIBC_2.30 getitimer F
++GLIBC_2.30 getline F
++GLIBC_2.30 getloadavg F
++GLIBC_2.30 getlogin F
++GLIBC_2.30 getlogin_r F
++GLIBC_2.30 getmntent F
++GLIBC_2.30 getmntent_r F
++GLIBC_2.30 getnameinfo F
++GLIBC_2.30 getnetbyaddr F
++GLIBC_2.30 getnetbyaddr_r F
++GLIBC_2.30 getnetbyname F
++GLIBC_2.30 getnetbyname_r F
++GLIBC_2.30 getnetent F
++GLIBC_2.30 getnetent_r F
++GLIBC_2.30 getnetgrent F
++GLIBC_2.30 getnetgrent_r F
++GLIBC_2.30 getnetname F
++GLIBC_2.30 getopt F
++GLIBC_2.30 getopt_long F
++GLIBC_2.30 getopt_long_only F
++GLIBC_2.30 getpagesize F
++GLIBC_2.30 getpass F
++GLIBC_2.30 getpeername F
++GLIBC_2.30 getpgid F
++GLIBC_2.30 getpgrp F
++GLIBC_2.30 getpid F
++GLIBC_2.30 getppid F
++GLIBC_2.30 getpriority F
++GLIBC_2.30 getprotobyname F
++GLIBC_2.30 getprotobyname_r F
++GLIBC_2.30 getprotobynumber F
++GLIBC_2.30 getprotobynumber_r F
++GLIBC_2.30 getprotoent F
++GLIBC_2.30 getprotoent_r F
++GLIBC_2.30 getpt F
++GLIBC_2.30 getpublickey F
++GLIBC_2.30 getpw F
++GLIBC_2.30 getpwent F
++GLIBC_2.30 getpwent_r F
++GLIBC_2.30 getpwnam F
++GLIBC_2.30 getpwnam_r F
++GLIBC_2.30 getpwuid F
++GLIBC_2.30 getpwuid_r F
++GLIBC_2.30 getrandom F
++GLIBC_2.30 getresgid F
++GLIBC_2.30 getresuid F
++GLIBC_2.30 getrlimit F
++GLIBC_2.30 getrlimit64 F
++GLIBC_2.30 getrpcbyname F
++GLIBC_2.30 getrpcbyname_r F
++GLIBC_2.30 getrpcbynumber F
++GLIBC_2.30 getrpcbynumber_r F
++GLIBC_2.30 getrpcent F
++GLIBC_2.30 getrpcent_r F
++GLIBC_2.30 getrpcport F
++GLIBC_2.30 getrusage F
++GLIBC_2.30 gets F
++GLIBC_2.30 getsecretkey F
++GLIBC_2.30 getservbyname F
++GLIBC_2.30 getservbyname_r F
++GLIBC_2.30 getservbyport F
++GLIBC_2.30 getservbyport_r F
++GLIBC_2.30 getservent F
++GLIBC_2.30 getservent_r F
++GLIBC_2.30 getsgent F
++GLIBC_2.30 getsgent_r F
++GLIBC_2.30 getsgnam F
++GLIBC_2.30 getsgnam_r F
++GLIBC_2.30 getsid F
++GLIBC_2.30 getsockname F
++GLIBC_2.30 getsockopt F
++GLIBC_2.30 getsourcefilter F
++GLIBC_2.30 getspent F
++GLIBC_2.30 getspent_r F
++GLIBC_2.30 getspnam F
++GLIBC_2.30 getspnam_r F
++GLIBC_2.30 getsubopt F
++GLIBC_2.30 gettext F
++GLIBC_2.30 gettid F
++GLIBC_2.30 gettimeofday F
++GLIBC_2.30 getttyent F
++GLIBC_2.30 getttynam F
++GLIBC_2.30 getuid F
++GLIBC_2.30 getusershell F
++GLIBC_2.30 getutent F
++GLIBC_2.30 getutent_r F
++GLIBC_2.30 getutid F
++GLIBC_2.30 getutid_r F
++GLIBC_2.30 getutline F
++GLIBC_2.30 getutline_r F
++GLIBC_2.30 getutmp F
++GLIBC_2.30 getutmpx F
++GLIBC_2.30 getutxent F
++GLIBC_2.30 getutxid F
++GLIBC_2.30 getutxline F
++GLIBC_2.30 getw F
++GLIBC_2.30 getwc F
++GLIBC_2.30 getwc_unlocked F
++GLIBC_2.30 getwchar F
++GLIBC_2.30 getwchar_unlocked F
++GLIBC_2.30 getwd F
++GLIBC_2.30 getxattr F
++GLIBC_2.30 glob F
++GLIBC_2.30 glob64 F
++GLIBC_2.30 glob_pattern_p F
++GLIBC_2.30 globfree F
++GLIBC_2.30 globfree64 F
++GLIBC_2.30 gmtime F
++GLIBC_2.30 gmtime_r F
++GLIBC_2.30 gnu_dev_major F
++GLIBC_2.30 gnu_dev_makedev F
++GLIBC_2.30 gnu_dev_minor F
++GLIBC_2.30 gnu_get_libc_release F
++GLIBC_2.30 gnu_get_libc_version F
++GLIBC_2.30 grantpt F
++GLIBC_2.30 group_member F
++GLIBC_2.30 gsignal F
++GLIBC_2.30 gtty F
++GLIBC_2.30 h_errlist D 0x14
++GLIBC_2.30 h_nerr D 0x4
++GLIBC_2.30 hasmntopt F
++GLIBC_2.30 hcreate F
++GLIBC_2.30 hcreate_r F
++GLIBC_2.30 hdestroy F
++GLIBC_2.30 hdestroy_r F
++GLIBC_2.30 herror F
++GLIBC_2.30 host2netname F
++GLIBC_2.30 hsearch F
++GLIBC_2.30 hsearch_r F
++GLIBC_2.30 hstrerror F
++GLIBC_2.30 htonl F
++GLIBC_2.30 htons F
++GLIBC_2.30 iconv F
++GLIBC_2.30 iconv_close F
++GLIBC_2.30 iconv_open F
++GLIBC_2.30 if_freenameindex F
++GLIBC_2.30 if_indextoname F
++GLIBC_2.30 if_nameindex F
++GLIBC_2.30 if_nametoindex F
++GLIBC_2.30 imaxabs F
++GLIBC_2.30 imaxdiv F
++GLIBC_2.30 in6addr_any D 0x10
++GLIBC_2.30 in6addr_loopback D 0x10
++GLIBC_2.30 index F
++GLIBC_2.30 inet6_opt_append F
++GLIBC_2.30 inet6_opt_find F
++GLIBC_2.30 inet6_opt_finish F
++GLIBC_2.30 inet6_opt_get_val F
++GLIBC_2.30 inet6_opt_init F
++GLIBC_2.30 inet6_opt_next F
++GLIBC_2.30 inet6_opt_set_val F
++GLIBC_2.30 inet6_option_alloc F
++GLIBC_2.30 inet6_option_append F
++GLIBC_2.30 inet6_option_find F
++GLIBC_2.30 inet6_option_init F
++GLIBC_2.30 inet6_option_next F
++GLIBC_2.30 inet6_option_space F
++GLIBC_2.30 inet6_rth_add F
++GLIBC_2.30 inet6_rth_getaddr F
++GLIBC_2.30 inet6_rth_init F
++GLIBC_2.30 inet6_rth_reverse F
++GLIBC_2.30 inet6_rth_segments F
++GLIBC_2.30 inet6_rth_space F
++GLIBC_2.30 inet_addr F
++GLIBC_2.30 inet_aton F
++GLIBC_2.30 inet_lnaof F
++GLIBC_2.30 inet_makeaddr F
++GLIBC_2.30 inet_netof F
++GLIBC_2.30 inet_network F
++GLIBC_2.30 inet_nsap_addr F
++GLIBC_2.30 inet_nsap_ntoa F
++GLIBC_2.30 inet_ntoa F
++GLIBC_2.30 inet_ntop F
++GLIBC_2.30 inet_pton F
++GLIBC_2.30 init_module F
++GLIBC_2.30 initgroups F
++GLIBC_2.30 initstate F
++GLIBC_2.30 initstate_r F
++GLIBC_2.30 innetgr F
++GLIBC_2.30 inotify_add_watch F
++GLIBC_2.30 inotify_init F
++GLIBC_2.30 inotify_init1 F
++GLIBC_2.30 inotify_rm_watch F
++GLIBC_2.30 insque F
++GLIBC_2.30 ioctl F
++GLIBC_2.30 iruserok F
++GLIBC_2.30 iruserok_af F
++GLIBC_2.30 isalnum F
++GLIBC_2.30 isalnum_l F
++GLIBC_2.30 isalpha F
++GLIBC_2.30 isalpha_l F
++GLIBC_2.30 isascii F
++GLIBC_2.30 isatty F
++GLIBC_2.30 isblank F
++GLIBC_2.30 isblank_l F
++GLIBC_2.30 iscntrl F
++GLIBC_2.30 iscntrl_l F
++GLIBC_2.30 isctype F
++GLIBC_2.30 isdigit F
++GLIBC_2.30 isdigit_l F
++GLIBC_2.30 isfdtype F
++GLIBC_2.30 isgraph F
++GLIBC_2.30 isgraph_l F
++GLIBC_2.30 isinf F
++GLIBC_2.30 isinff F
++GLIBC_2.30 isinfl F
++GLIBC_2.30 islower F
++GLIBC_2.30 islower_l F
++GLIBC_2.30 isnan F
++GLIBC_2.30 isnanf F
++GLIBC_2.30 isnanl F
++GLIBC_2.30 isprint F
++GLIBC_2.30 isprint_l F
++GLIBC_2.30 ispunct F
++GLIBC_2.30 ispunct_l F
++GLIBC_2.30 isspace F
++GLIBC_2.30 isspace_l F
++GLIBC_2.30 isupper F
++GLIBC_2.30 isupper_l F
++GLIBC_2.30 iswalnum F
++GLIBC_2.30 iswalnum_l F
++GLIBC_2.30 iswalpha F
++GLIBC_2.30 iswalpha_l F
++GLIBC_2.30 iswblank F
++GLIBC_2.30 iswblank_l F
++GLIBC_2.30 iswcntrl F
++GLIBC_2.30 iswcntrl_l F
++GLIBC_2.30 iswctype F
++GLIBC_2.30 iswctype_l F
++GLIBC_2.30 iswdigit F
++GLIBC_2.30 iswdigit_l F
++GLIBC_2.30 iswgraph F
++GLIBC_2.30 iswgraph_l F
++GLIBC_2.30 iswlower F
++GLIBC_2.30 iswlower_l F
++GLIBC_2.30 iswprint F
++GLIBC_2.30 iswprint_l F
++GLIBC_2.30 iswpunct F
++GLIBC_2.30 iswpunct_l F
++GLIBC_2.30 iswspace F
++GLIBC_2.30 iswspace_l F
++GLIBC_2.30 iswupper F
++GLIBC_2.30 iswupper_l F
++GLIBC_2.30 iswxdigit F
++GLIBC_2.30 iswxdigit_l F
++GLIBC_2.30 isxdigit F
++GLIBC_2.30 isxdigit_l F
++GLIBC_2.30 jrand48 F
++GLIBC_2.30 jrand48_r F
++GLIBC_2.30 key_decryptsession F
++GLIBC_2.30 key_decryptsession_pk F
++GLIBC_2.30 key_encryptsession F
++GLIBC_2.30 key_encryptsession_pk F
++GLIBC_2.30 key_gendes F
++GLIBC_2.30 key_get_conv F
++GLIBC_2.30 key_secretkey_is_set F
++GLIBC_2.30 key_setnet F
++GLIBC_2.30 key_setsecret F
++GLIBC_2.30 kill F
++GLIBC_2.30 killpg F
++GLIBC_2.30 klogctl F
++GLIBC_2.30 l64a F
++GLIBC_2.30 labs F
++GLIBC_2.30 lchmod F
++GLIBC_2.30 lchown F
++GLIBC_2.30 lckpwdf F
++GLIBC_2.30 lcong48 F
++GLIBC_2.30 lcong48_r F
++GLIBC_2.30 ldexp F
++GLIBC_2.30 ldexpf F
++GLIBC_2.30 ldexpl F
++GLIBC_2.30 ldiv F
++GLIBC_2.30 lfind F
++GLIBC_2.30 lgetxattr F
++GLIBC_2.30 link F
++GLIBC_2.30 linkat F
++GLIBC_2.30 listen F
++GLIBC_2.30 listxattr F
++GLIBC_2.30 llabs F
++GLIBC_2.30 lldiv F
++GLIBC_2.30 llistxattr F
++GLIBC_2.30 localeconv F
++GLIBC_2.30 localtime F
++GLIBC_2.30 localtime_r F
++GLIBC_2.30 lockf F
++GLIBC_2.30 lockf64 F
++GLIBC_2.30 longjmp F
++GLIBC_2.30 lrand48 F
++GLIBC_2.30 lrand48_r F
++GLIBC_2.30 lremovexattr F
++GLIBC_2.30 lsearch F
++GLIBC_2.30 lseek F
++GLIBC_2.30 lseek64 F
++GLIBC_2.30 lsetxattr F
++GLIBC_2.30 lutimes F
++GLIBC_2.30 madvise F
++GLIBC_2.30 makecontext F
++GLIBC_2.30 mallinfo F
++GLIBC_2.30 malloc F
++GLIBC_2.30 malloc_info F
++GLIBC_2.30 malloc_stats F
++GLIBC_2.30 malloc_trim F
++GLIBC_2.30 malloc_usable_size F
++GLIBC_2.30 mallopt F
++GLIBC_2.30 mallwatch D 0x4
++GLIBC_2.30 mblen F
++GLIBC_2.30 mbrlen F
++GLIBC_2.30 mbrtoc16 F
++GLIBC_2.30 mbrtoc32 F
++GLIBC_2.30 mbrtowc F
++GLIBC_2.30 mbsinit F
++GLIBC_2.30 mbsnrtowcs F
++GLIBC_2.30 mbsrtowcs F
++GLIBC_2.30 mbstowcs F
++GLIBC_2.30 mbtowc F
++GLIBC_2.30 mcheck F
++GLIBC_2.30 mcheck_check_all F
++GLIBC_2.30 mcheck_pedantic F
++GLIBC_2.30 memalign F
++GLIBC_2.30 memccpy F
++GLIBC_2.30 memchr F
++GLIBC_2.30 memcmp F
++GLIBC_2.30 memcpy F
++GLIBC_2.30 memfd_create F
++GLIBC_2.30 memfrob F
++GLIBC_2.30 memmem F
++GLIBC_2.30 memmove F
++GLIBC_2.30 mempcpy F
++GLIBC_2.30 memrchr F
++GLIBC_2.30 memset F
++GLIBC_2.30 mincore F
++GLIBC_2.30 mkdir F
++GLIBC_2.30 mkdirat F
++GLIBC_2.30 mkdtemp F
++GLIBC_2.30 mkfifo F
++GLIBC_2.30 mkfifoat F
++GLIBC_2.30 mkostemp F
++GLIBC_2.30 mkostemp64 F
++GLIBC_2.30 mkostemps F
++GLIBC_2.30 mkostemps64 F
++GLIBC_2.30 mkstemp F
++GLIBC_2.30 mkstemp64 F
++GLIBC_2.30 mkstemps F
++GLIBC_2.30 mkstemps64 F
++GLIBC_2.30 mktemp F
++GLIBC_2.30 mktime F
++GLIBC_2.30 mlock F
++GLIBC_2.30 mlock2 F
++GLIBC_2.30 mlockall F
++GLIBC_2.30 mmap F
++GLIBC_2.30 mmap64 F
++GLIBC_2.30 modf F
++GLIBC_2.30 modff F
++GLIBC_2.30 modfl F
++GLIBC_2.30 moncontrol F
++GLIBC_2.30 monstartup F
++GLIBC_2.30 mount F
++GLIBC_2.30 mprobe F
++GLIBC_2.30 mprotect F
++GLIBC_2.30 mrand48 F
++GLIBC_2.30 mrand48_r F
++GLIBC_2.30 mremap F
++GLIBC_2.30 msgctl F
++GLIBC_2.30 msgget F
++GLIBC_2.30 msgrcv F
++GLIBC_2.30 msgsnd F
++GLIBC_2.30 msync F
++GLIBC_2.30 mtrace F
++GLIBC_2.30 munlock F
++GLIBC_2.30 munlockall F
++GLIBC_2.30 munmap F
++GLIBC_2.30 muntrace F
++GLIBC_2.30 name_to_handle_at F
++GLIBC_2.30 nanosleep F
++GLIBC_2.30 netname2host F
++GLIBC_2.30 netname2user F
++GLIBC_2.30 newlocale F
++GLIBC_2.30 nftw F
++GLIBC_2.30 nftw64 F
++GLIBC_2.30 ngettext F
++GLIBC_2.30 nice F
++GLIBC_2.30 nl_langinfo F
++GLIBC_2.30 nl_langinfo_l F
++GLIBC_2.30 nrand48 F
++GLIBC_2.30 nrand48_r F
++GLIBC_2.30 ntohl F
++GLIBC_2.30 ntohs F
++GLIBC_2.30 ntp_adjtime F
++GLIBC_2.30 ntp_gettime F
++GLIBC_2.30 ntp_gettimex F
++GLIBC_2.30 obstack_alloc_failed_handler D 0x4
++GLIBC_2.30 obstack_exit_failure D 0x4
++GLIBC_2.30 obstack_free F
++GLIBC_2.30 obstack_printf F
++GLIBC_2.30 obstack_vprintf F
++GLIBC_2.30 on_exit F
++GLIBC_2.30 open F
++GLIBC_2.30 open64 F
++GLIBC_2.30 open_by_handle_at F
++GLIBC_2.30 open_memstream F
++GLIBC_2.30 open_wmemstream F
++GLIBC_2.30 openat F
++GLIBC_2.30 openat64 F
++GLIBC_2.30 opendir F
++GLIBC_2.30 openlog F
++GLIBC_2.30 optarg D 0x4
++GLIBC_2.30 opterr D 0x4
++GLIBC_2.30 optind D 0x4
++GLIBC_2.30 optopt D 0x4
++GLIBC_2.30 parse_printf_format F
++GLIBC_2.30 passwd2des F
++GLIBC_2.30 pathconf F
++GLIBC_2.30 pause F
++GLIBC_2.30 pclose F
++GLIBC_2.30 perror F
++GLIBC_2.30 personality F
++GLIBC_2.30 pipe F
++GLIBC_2.30 pipe2 F
++GLIBC_2.30 pivot_root F
++GLIBC_2.30 pkey_alloc F
++GLIBC_2.30 pkey_free F
++GLIBC_2.30 pkey_get F
++GLIBC_2.30 pkey_mprotect F
++GLIBC_2.30 pkey_set F
++GLIBC_2.30 pmap_getmaps F
++GLIBC_2.30 pmap_getport F
++GLIBC_2.30 pmap_rmtcall F
++GLIBC_2.30 pmap_set F
++GLIBC_2.30 pmap_unset F
++GLIBC_2.30 poll F
++GLIBC_2.30 popen F
++GLIBC_2.30 posix_fadvise F
++GLIBC_2.30 posix_fadvise64 F
++GLIBC_2.30 posix_fallocate F
++GLIBC_2.30 posix_fallocate64 F
++GLIBC_2.30 posix_madvise F
++GLIBC_2.30 posix_memalign F
++GLIBC_2.30 posix_openpt F
++GLIBC_2.30 posix_spawn F
++GLIBC_2.30 posix_spawn_file_actions_addchdir_np F
++GLIBC_2.30 posix_spawn_file_actions_addclose F
++GLIBC_2.30 posix_spawn_file_actions_adddup2 F
++GLIBC_2.30 posix_spawn_file_actions_addfchdir_np F
++GLIBC_2.30 posix_spawn_file_actions_addopen F
++GLIBC_2.30 posix_spawn_file_actions_destroy F
++GLIBC_2.30 posix_spawn_file_actions_init F
++GLIBC_2.30 posix_spawnattr_destroy F
++GLIBC_2.30 posix_spawnattr_getflags F
++GLIBC_2.30 posix_spawnattr_getpgroup F
++GLIBC_2.30 posix_spawnattr_getschedparam F
++GLIBC_2.30 posix_spawnattr_getschedpolicy F
++GLIBC_2.30 posix_spawnattr_getsigdefault F
++GLIBC_2.30 posix_spawnattr_getsigmask F
++GLIBC_2.30 posix_spawnattr_init F
++GLIBC_2.30 posix_spawnattr_setflags F
++GLIBC_2.30 posix_spawnattr_setpgroup F
++GLIBC_2.30 posix_spawnattr_setschedparam F
++GLIBC_2.30 posix_spawnattr_setschedpolicy F
++GLIBC_2.30 posix_spawnattr_setsigdefault F
++GLIBC_2.30 posix_spawnattr_setsigmask F
++GLIBC_2.30 posix_spawnp F
++GLIBC_2.30 ppoll F
++GLIBC_2.30 prctl F
++GLIBC_2.30 pread F
++GLIBC_2.30 pread64 F
++GLIBC_2.30 preadv F
++GLIBC_2.30 preadv2 F
++GLIBC_2.30 preadv64 F
++GLIBC_2.30 preadv64v2 F
++GLIBC_2.30 printf F
++GLIBC_2.30 printf_size F
++GLIBC_2.30 printf_size_info F
++GLIBC_2.30 prlimit F
++GLIBC_2.30 prlimit64 F
++GLIBC_2.30 process_vm_readv F
++GLIBC_2.30 process_vm_writev F
++GLIBC_2.30 profil F
++GLIBC_2.30 program_invocation_name D 0x4
++GLIBC_2.30 program_invocation_short_name D 0x4
++GLIBC_2.30 pselect F
++GLIBC_2.30 psiginfo F
++GLIBC_2.30 psignal F
++GLIBC_2.30 pthread_attr_destroy F
++GLIBC_2.30 pthread_attr_getdetachstate F
++GLIBC_2.30 pthread_attr_getinheritsched F
++GLIBC_2.30 pthread_attr_getschedparam F
++GLIBC_2.30 pthread_attr_getschedpolicy F
++GLIBC_2.30 pthread_attr_getscope F
++GLIBC_2.30 pthread_attr_init F
++GLIBC_2.30 pthread_attr_setdetachstate F
++GLIBC_2.30 pthread_attr_setinheritsched F
++GLIBC_2.30 pthread_attr_setschedparam F
++GLIBC_2.30 pthread_attr_setschedpolicy F
++GLIBC_2.30 pthread_attr_setscope F
++GLIBC_2.30 pthread_cond_broadcast F
++GLIBC_2.30 pthread_cond_destroy F
++GLIBC_2.30 pthread_cond_init F
++GLIBC_2.30 pthread_cond_signal F
++GLIBC_2.30 pthread_cond_timedwait F
++GLIBC_2.30 pthread_cond_wait F
++GLIBC_2.30 pthread_condattr_destroy F
++GLIBC_2.30 pthread_condattr_init F
++GLIBC_2.30 pthread_equal F
++GLIBC_2.30 pthread_exit F
++GLIBC_2.30 pthread_getschedparam F
++GLIBC_2.30 pthread_mutex_destroy F
++GLIBC_2.30 pthread_mutex_init F
++GLIBC_2.30 pthread_mutex_lock F
++GLIBC_2.30 pthread_mutex_unlock F
++GLIBC_2.30 pthread_self F
++GLIBC_2.30 pthread_setcancelstate F
++GLIBC_2.30 pthread_setcanceltype F
++GLIBC_2.30 pthread_setschedparam F
++GLIBC_2.30 ptrace F
++GLIBC_2.30 ptsname F
++GLIBC_2.30 ptsname_r F
++GLIBC_2.30 putc F
++GLIBC_2.30 putc_unlocked F
++GLIBC_2.30 putchar F
++GLIBC_2.30 putchar_unlocked F
++GLIBC_2.30 putenv F
++GLIBC_2.30 putgrent F
++GLIBC_2.30 putpwent F
++GLIBC_2.30 puts F
++GLIBC_2.30 putsgent F
++GLIBC_2.30 putspent F
++GLIBC_2.30 pututline F
++GLIBC_2.30 pututxline F
++GLIBC_2.30 putw F
++GLIBC_2.30 putwc F
++GLIBC_2.30 putwc_unlocked F
++GLIBC_2.30 putwchar F
++GLIBC_2.30 putwchar_unlocked F
++GLIBC_2.30 pvalloc F
++GLIBC_2.30 pwrite F
++GLIBC_2.30 pwrite64 F
++GLIBC_2.30 pwritev F
++GLIBC_2.30 pwritev2 F
++GLIBC_2.30 pwritev64 F
++GLIBC_2.30 pwritev64v2 F
++GLIBC_2.30 qecvt F
++GLIBC_2.30 qecvt_r F
++GLIBC_2.30 qfcvt F
++GLIBC_2.30 qfcvt_r F
++GLIBC_2.30 qgcvt F
++GLIBC_2.30 qsort F
++GLIBC_2.30 qsort_r F
++GLIBC_2.30 quick_exit F
++GLIBC_2.30 quotactl F
++GLIBC_2.30 raise F
++GLIBC_2.30 rand F
++GLIBC_2.30 rand_r F
++GLIBC_2.30 random F
++GLIBC_2.30 random_r F
++GLIBC_2.30 rawmemchr F
++GLIBC_2.30 rcmd F
++GLIBC_2.30 rcmd_af F
++GLIBC_2.30 re_comp F
++GLIBC_2.30 re_compile_fastmap F
++GLIBC_2.30 re_compile_pattern F
++GLIBC_2.30 re_exec F
++GLIBC_2.30 re_match F
++GLIBC_2.30 re_match_2 F
++GLIBC_2.30 re_search F
++GLIBC_2.30 re_search_2 F
++GLIBC_2.30 re_set_registers F
++GLIBC_2.30 re_set_syntax F
++GLIBC_2.30 re_syntax_options D 0x4
++GLIBC_2.30 read F
++GLIBC_2.30 readahead F
++GLIBC_2.30 readdir F
++GLIBC_2.30 readdir64 F
++GLIBC_2.30 readdir64_r F
++GLIBC_2.30 readdir_r F
++GLIBC_2.30 readlink F
++GLIBC_2.30 readlinkat F
++GLIBC_2.30 readv F
++GLIBC_2.30 realloc F
++GLIBC_2.30 reallocarray F
++GLIBC_2.30 realpath F
++GLIBC_2.30 reboot F
++GLIBC_2.30 recv F
++GLIBC_2.30 recvfrom F
++GLIBC_2.30 recvmmsg F
++GLIBC_2.30 recvmsg F
++GLIBC_2.30 regcomp F
++GLIBC_2.30 regerror F
++GLIBC_2.30 regexec F
++GLIBC_2.30 regfree F
++GLIBC_2.30 register_printf_function F
++GLIBC_2.30 register_printf_modifier F
++GLIBC_2.30 register_printf_specifier F
++GLIBC_2.30 register_printf_type F
++GLIBC_2.30 registerrpc F
++GLIBC_2.30 remap_file_pages F
++GLIBC_2.30 remove F
++GLIBC_2.30 removexattr F
++GLIBC_2.30 remque F
++GLIBC_2.30 rename F
++GLIBC_2.30 renameat F
++GLIBC_2.30 renameat2 F
++GLIBC_2.30 revoke F
++GLIBC_2.30 rewind F
++GLIBC_2.30 rewinddir F
++GLIBC_2.30 rexec F
++GLIBC_2.30 rexec_af F
++GLIBC_2.30 rexecoptions D 0x4
++GLIBC_2.30 rindex F
++GLIBC_2.30 rmdir F
++GLIBC_2.30 rpc_createerr D 0x10
++GLIBC_2.30 rpmatch F
++GLIBC_2.30 rresvport F
++GLIBC_2.30 rresvport_af F
++GLIBC_2.30 rtime F
++GLIBC_2.30 ruserok F
++GLIBC_2.30 ruserok_af F
++GLIBC_2.30 ruserpass F
++GLIBC_2.30 sbrk F
++GLIBC_2.30 scalbn F
++GLIBC_2.30 scalbnf F
++GLIBC_2.30 scalbnl F
++GLIBC_2.30 scandir F
++GLIBC_2.30 scandir64 F
++GLIBC_2.30 scandirat F
++GLIBC_2.30 scandirat64 F
++GLIBC_2.30 scanf F
++GLIBC_2.30 sched_get_priority_max F
++GLIBC_2.30 sched_get_priority_min F
++GLIBC_2.30 sched_getaffinity F
++GLIBC_2.30 sched_getcpu F
++GLIBC_2.30 sched_getparam F
++GLIBC_2.30 sched_getscheduler F
++GLIBC_2.30 sched_rr_get_interval F
++GLIBC_2.30 sched_setaffinity F
++GLIBC_2.30 sched_setparam F
++GLIBC_2.30 sched_setscheduler F
++GLIBC_2.30 sched_yield F
++GLIBC_2.30 secure_getenv F
++GLIBC_2.30 seed48 F
++GLIBC_2.30 seed48_r F
++GLIBC_2.30 seekdir F
++GLIBC_2.30 select F
++GLIBC_2.30 semctl F
++GLIBC_2.30 semget F
++GLIBC_2.30 semop F
++GLIBC_2.30 semtimedop F
++GLIBC_2.30 send F
++GLIBC_2.30 sendfile F
++GLIBC_2.30 sendfile64 F
++GLIBC_2.30 sendmmsg F
++GLIBC_2.30 sendmsg F
++GLIBC_2.30 sendto F
++GLIBC_2.30 setaliasent F
++GLIBC_2.30 setbuf F
++GLIBC_2.30 setbuffer F
++GLIBC_2.30 setcontext F
++GLIBC_2.30 setdomainname F
++GLIBC_2.30 setegid F
++GLIBC_2.30 setenv F
++GLIBC_2.30 seteuid F
++GLIBC_2.30 setfsent F
++GLIBC_2.30 setfsgid F
++GLIBC_2.30 setfsuid F
++GLIBC_2.30 setgid F
++GLIBC_2.30 setgrent F
++GLIBC_2.30 setgroups F
++GLIBC_2.30 sethostent F
++GLIBC_2.30 sethostid F
++GLIBC_2.30 sethostname F
++GLIBC_2.30 setipv4sourcefilter F
++GLIBC_2.30 setitimer F
++GLIBC_2.30 setjmp F
++GLIBC_2.30 setlinebuf F
++GLIBC_2.30 setlocale F
++GLIBC_2.30 setlogin F
++GLIBC_2.30 setlogmask F
++GLIBC_2.30 setmntent F
++GLIBC_2.30 setnetent F
++GLIBC_2.30 setnetgrent F
++GLIBC_2.30 setns F
++GLIBC_2.30 setpgid F
++GLIBC_2.30 setpgrp F
++GLIBC_2.30 setpriority F
++GLIBC_2.30 setprotoent F
++GLIBC_2.30 setpwent F
++GLIBC_2.30 setregid F
++GLIBC_2.30 setresgid F
++GLIBC_2.30 setresuid F
++GLIBC_2.30 setreuid F
++GLIBC_2.30 setrlimit F
++GLIBC_2.30 setrlimit64 F
++GLIBC_2.30 setrpcent F
++GLIBC_2.30 setservent F
++GLIBC_2.30 setsgent F
++GLIBC_2.30 setsid F
++GLIBC_2.30 setsockopt F
++GLIBC_2.30 setsourcefilter F
++GLIBC_2.30 setspent F
++GLIBC_2.30 setstate F
++GLIBC_2.30 setstate_r F
++GLIBC_2.30 settimeofday F
++GLIBC_2.30 setttyent F
++GLIBC_2.30 setuid F
++GLIBC_2.30 setusershell F
++GLIBC_2.30 setutent F
++GLIBC_2.30 setutxent F
++GLIBC_2.30 setvbuf F
++GLIBC_2.30 setxattr F
++GLIBC_2.30 sgetsgent F
++GLIBC_2.30 sgetsgent_r F
++GLIBC_2.30 sgetspent F
++GLIBC_2.30 sgetspent_r F
++GLIBC_2.30 shmat F
++GLIBC_2.30 shmctl F
++GLIBC_2.30 shmdt F
++GLIBC_2.30 shmget F
++GLIBC_2.30 shutdown F
++GLIBC_2.30 sigaction F
++GLIBC_2.30 sigaddset F
++GLIBC_2.30 sigaltstack F
++GLIBC_2.30 sigandset F
++GLIBC_2.30 sigblock F
++GLIBC_2.30 sigdelset F
++GLIBC_2.30 sigemptyset F
++GLIBC_2.30 sigfillset F
++GLIBC_2.30 siggetmask F
++GLIBC_2.30 sighold F
++GLIBC_2.30 sigignore F
++GLIBC_2.30 siginterrupt F
++GLIBC_2.30 sigisemptyset F
++GLIBC_2.30 sigismember F
++GLIBC_2.30 siglongjmp F
++GLIBC_2.30 signal F
++GLIBC_2.30 signalfd F
++GLIBC_2.30 sigorset F
++GLIBC_2.30 sigpause F
++GLIBC_2.30 sigpending F
++GLIBC_2.30 sigprocmask F
++GLIBC_2.30 sigqueue F
++GLIBC_2.30 sigrelse F
++GLIBC_2.30 sigreturn F
++GLIBC_2.30 sigset F
++GLIBC_2.30 sigsetmask F
++GLIBC_2.30 sigstack F
++GLIBC_2.30 sigsuspend F
++GLIBC_2.30 sigtimedwait F
++GLIBC_2.30 sigwait F
++GLIBC_2.30 sigwaitinfo F
++GLIBC_2.30 sleep F
++GLIBC_2.30 snprintf F
++GLIBC_2.30 sockatmark F
++GLIBC_2.30 socket F
++GLIBC_2.30 socketpair F
++GLIBC_2.30 splice F
++GLIBC_2.30 sprintf F
++GLIBC_2.30 sprofil F
++GLIBC_2.30 srand F
++GLIBC_2.30 srand48 F
++GLIBC_2.30 srand48_r F
++GLIBC_2.30 srandom F
++GLIBC_2.30 srandom_r F
++GLIBC_2.30 sscanf F
++GLIBC_2.30 ssignal F
++GLIBC_2.30 sstk F
++GLIBC_2.30 statfs F
++GLIBC_2.30 statfs64 F
++GLIBC_2.30 statvfs F
++GLIBC_2.30 statvfs64 F
++GLIBC_2.30 statx F
++GLIBC_2.30 stderr D 0x4
++GLIBC_2.30 stdin D 0x4
++GLIBC_2.30 stdout D 0x4
++GLIBC_2.30 stime F
++GLIBC_2.30 stpcpy F
++GLIBC_2.30 stpncpy F
++GLIBC_2.30 strcasecmp F
++GLIBC_2.30 strcasecmp_l F
++GLIBC_2.30 strcasestr F
++GLIBC_2.30 strcat F
++GLIBC_2.30 strchr F
++GLIBC_2.30 strchrnul F
++GLIBC_2.30 strcmp F
++GLIBC_2.30 strcoll F
++GLIBC_2.30 strcoll_l F
++GLIBC_2.30 strcpy F
++GLIBC_2.30 strcspn F
++GLIBC_2.30 strdup F
++GLIBC_2.30 strerror F
++GLIBC_2.30 strerror_l F
++GLIBC_2.30 strerror_r F
++GLIBC_2.30 strfmon F
++GLIBC_2.30 strfmon_l F
++GLIBC_2.30 strfromd F
++GLIBC_2.30 strfromf F
++GLIBC_2.30 strfromf32 F
++GLIBC_2.30 strfromf32x F
++GLIBC_2.30 strfromf64 F
++GLIBC_2.30 strfroml F
++GLIBC_2.30 strfry F
++GLIBC_2.30 strftime F
++GLIBC_2.30 strftime_l F
++GLIBC_2.30 strlen F
++GLIBC_2.30 strncasecmp F
++GLIBC_2.30 strncasecmp_l F
++GLIBC_2.30 strncat F
++GLIBC_2.30 strncmp F
++GLIBC_2.30 strncpy F
++GLIBC_2.30 strndup F
++GLIBC_2.30 strnlen F
++GLIBC_2.30 strpbrk F
++GLIBC_2.30 strptime F
++GLIBC_2.30 strptime_l F
++GLIBC_2.30 strrchr F
++GLIBC_2.30 strsep F
++GLIBC_2.30 strsignal F
++GLIBC_2.30 strspn F
++GLIBC_2.30 strstr F
++GLIBC_2.30 strtod F
++GLIBC_2.30 strtod_l F
++GLIBC_2.30 strtof F
++GLIBC_2.30 strtof32 F
++GLIBC_2.30 strtof32_l F
++GLIBC_2.30 strtof32x F
++GLIBC_2.30 strtof32x_l F
++GLIBC_2.30 strtof64 F
++GLIBC_2.30 strtof64_l F
++GLIBC_2.30 strtof_l F
++GLIBC_2.30 strtoimax F
++GLIBC_2.30 strtok F
++GLIBC_2.30 strtok_r F
++GLIBC_2.30 strtol F
++GLIBC_2.30 strtol_l F
++GLIBC_2.30 strtold F
++GLIBC_2.30 strtold_l F
++GLIBC_2.30 strtoll F
++GLIBC_2.30 strtoll_l F
++GLIBC_2.30 strtoq F
++GLIBC_2.30 strtoul F
++GLIBC_2.30 strtoul_l F
++GLIBC_2.30 strtoull F
++GLIBC_2.30 strtoull_l F
++GLIBC_2.30 strtoumax F
++GLIBC_2.30 strtouq F
++GLIBC_2.30 strverscmp F
++GLIBC_2.30 strxfrm F
++GLIBC_2.30 strxfrm_l F
++GLIBC_2.30 stty F
++GLIBC_2.30 svc_exit F
++GLIBC_2.30 svc_fdset D 0x80
++GLIBC_2.30 svc_getreq F
++GLIBC_2.30 svc_getreq_common F
++GLIBC_2.30 svc_getreq_poll F
++GLIBC_2.30 svc_getreqset F
++GLIBC_2.30 svc_max_pollfd D 0x4
++GLIBC_2.30 svc_pollfd D 0x4
++GLIBC_2.30 svc_register F
++GLIBC_2.30 svc_run F
++GLIBC_2.30 svc_sendreply F
++GLIBC_2.30 svc_unregister F
++GLIBC_2.30 svcauthdes_stats D 0xc
++GLIBC_2.30 svcerr_auth F
++GLIBC_2.30 svcerr_decode F
++GLIBC_2.30 svcerr_noproc F
++GLIBC_2.30 svcerr_noprog F
++GLIBC_2.30 svcerr_progvers F
++GLIBC_2.30 svcerr_systemerr F
++GLIBC_2.30 svcerr_weakauth F
++GLIBC_2.30 svcfd_create F
++GLIBC_2.30 svcraw_create F
++GLIBC_2.30 svctcp_create F
++GLIBC_2.30 svcudp_bufcreate F
++GLIBC_2.30 svcudp_create F
++GLIBC_2.30 svcudp_enablecache F
++GLIBC_2.30 svcunix_create F
++GLIBC_2.30 svcunixfd_create F
++GLIBC_2.30 swab F
++GLIBC_2.30 swapcontext F
++GLIBC_2.30 swapoff F
++GLIBC_2.30 swapon F
++GLIBC_2.30 swprintf F
++GLIBC_2.30 swscanf F
++GLIBC_2.30 symlink F
++GLIBC_2.30 symlinkat F
++GLIBC_2.30 sync F
++GLIBC_2.30 sync_file_range F
++GLIBC_2.30 syncfs F
++GLIBC_2.30 sys_errlist D 0x21c
++GLIBC_2.30 sys_nerr D 0x4
++GLIBC_2.30 sys_sigabbrev D 0x104
++GLIBC_2.30 sys_siglist D 0x104
++GLIBC_2.30 syscall F
++GLIBC_2.30 sysconf F
++GLIBC_2.30 sysctl F
++GLIBC_2.30 sysinfo F
++GLIBC_2.30 syslog F
++GLIBC_2.30 system F
++GLIBC_2.30 sysv_signal F
++GLIBC_2.30 tcdrain F
++GLIBC_2.30 tcflow F
++GLIBC_2.30 tcflush F
++GLIBC_2.30 tcgetattr F
++GLIBC_2.30 tcgetpgrp F
++GLIBC_2.30 tcgetsid F
++GLIBC_2.30 tcsendbreak F
++GLIBC_2.30 tcsetattr F
++GLIBC_2.30 tcsetpgrp F
++GLIBC_2.30 tdelete F
++GLIBC_2.30 tdestroy F
++GLIBC_2.30 tee F
++GLIBC_2.30 telldir F
++GLIBC_2.30 tempnam F
++GLIBC_2.30 textdomain F
++GLIBC_2.30 tfind F
++GLIBC_2.30 tgkill F
++GLIBC_2.30 thrd_current F
++GLIBC_2.30 thrd_equal F
++GLIBC_2.30 thrd_sleep F
++GLIBC_2.30 thrd_yield F
++GLIBC_2.30 time F
++GLIBC_2.30 timegm F
++GLIBC_2.30 timelocal F
++GLIBC_2.30 timerfd_create F
++GLIBC_2.30 timerfd_gettime F
++GLIBC_2.30 timerfd_settime F
++GLIBC_2.30 times F
++GLIBC_2.30 timespec_get F
++GLIBC_2.30 timezone D 0x4
++GLIBC_2.30 tmpfile F
++GLIBC_2.30 tmpfile64 F
++GLIBC_2.30 tmpnam F
++GLIBC_2.30 tmpnam_r F
++GLIBC_2.30 toascii F
++GLIBC_2.30 tolower F
++GLIBC_2.30 tolower_l F
++GLIBC_2.30 toupper F
++GLIBC_2.30 toupper_l F
++GLIBC_2.30 towctrans F
++GLIBC_2.30 towctrans_l F
++GLIBC_2.30 towlower F
++GLIBC_2.30 towlower_l F
++GLIBC_2.30 towupper F
++GLIBC_2.30 towupper_l F
++GLIBC_2.30 tr_break F
++GLIBC_2.30 truncate F
++GLIBC_2.30 truncate64 F
++GLIBC_2.30 tsearch F
++GLIBC_2.30 ttyname F
++GLIBC_2.30 ttyname_r F
++GLIBC_2.30 ttyslot F
++GLIBC_2.30 twalk F
++GLIBC_2.30 twalk_r F
++GLIBC_2.30 tzname D 0x8
++GLIBC_2.30 tzset F
++GLIBC_2.30 ualarm F
++GLIBC_2.30 ulckpwdf F
++GLIBC_2.30 ulimit F
++GLIBC_2.30 umask F
++GLIBC_2.30 umount F
++GLIBC_2.30 umount2 F
++GLIBC_2.30 uname F
++GLIBC_2.30 ungetc F
++GLIBC_2.30 ungetwc F
++GLIBC_2.30 unlink F
++GLIBC_2.30 unlinkat F
++GLIBC_2.30 unlockpt F
++GLIBC_2.30 unsetenv F
++GLIBC_2.30 unshare F
++GLIBC_2.30 updwtmp F
++GLIBC_2.30 updwtmpx F
++GLIBC_2.30 uselocale F
++GLIBC_2.30 user2netname F
++GLIBC_2.30 usleep F
++GLIBC_2.30 utime F
++GLIBC_2.30 utimensat F
++GLIBC_2.30 utimes F
++GLIBC_2.30 utmpname F
++GLIBC_2.30 utmpxname F
++GLIBC_2.30 valloc F
++GLIBC_2.30 vasprintf F
++GLIBC_2.30 vdprintf F
++GLIBC_2.30 verr F
++GLIBC_2.30 verrx F
++GLIBC_2.30 versionsort F
++GLIBC_2.30 versionsort64 F
++GLIBC_2.30 vfork F
++GLIBC_2.30 vfprintf F
++GLIBC_2.30 vfscanf F
++GLIBC_2.30 vfwprintf F
++GLIBC_2.30 vfwscanf F
++GLIBC_2.30 vhangup F
++GLIBC_2.30 vlimit F
++GLIBC_2.30 vmsplice F
++GLIBC_2.30 vprintf F
++GLIBC_2.30 vscanf F
++GLIBC_2.30 vsnprintf F
++GLIBC_2.30 vsprintf F
++GLIBC_2.30 vsscanf F
++GLIBC_2.30 vswprintf F
++GLIBC_2.30 vswscanf F
++GLIBC_2.30 vsyslog F
++GLIBC_2.30 vtimes F
++GLIBC_2.30 vwarn F
++GLIBC_2.30 vwarnx F
++GLIBC_2.30 vwprintf F
++GLIBC_2.30 vwscanf F
++GLIBC_2.30 wait F
++GLIBC_2.30 wait3 F
++GLIBC_2.30 wait4 F
++GLIBC_2.30 waitid F
++GLIBC_2.30 waitpid F
++GLIBC_2.30 warn F
++GLIBC_2.30 warnx F
++GLIBC_2.30 wcpcpy F
++GLIBC_2.30 wcpncpy F
++GLIBC_2.30 wcrtomb F
++GLIBC_2.30 wcscasecmp F
++GLIBC_2.30 wcscasecmp_l F
++GLIBC_2.30 wcscat F
++GLIBC_2.30 wcschr F
++GLIBC_2.30 wcschrnul F
++GLIBC_2.30 wcscmp F
++GLIBC_2.30 wcscoll F
++GLIBC_2.30 wcscoll_l F
++GLIBC_2.30 wcscpy F
++GLIBC_2.30 wcscspn F
++GLIBC_2.30 wcsdup F
++GLIBC_2.30 wcsftime F
++GLIBC_2.30 wcsftime_l F
++GLIBC_2.30 wcslen F
++GLIBC_2.30 wcsncasecmp F
++GLIBC_2.30 wcsncasecmp_l F
++GLIBC_2.30 wcsncat F
++GLIBC_2.30 wcsncmp F
++GLIBC_2.30 wcsncpy F
++GLIBC_2.30 wcsnlen F
++GLIBC_2.30 wcsnrtombs F
++GLIBC_2.30 wcspbrk F
++GLIBC_2.30 wcsrchr F
++GLIBC_2.30 wcsrtombs F
++GLIBC_2.30 wcsspn F
++GLIBC_2.30 wcsstr F
++GLIBC_2.30 wcstod F
++GLIBC_2.30 wcstod_l F
++GLIBC_2.30 wcstof F
++GLIBC_2.30 wcstof32 F
++GLIBC_2.30 wcstof32_l F
++GLIBC_2.30 wcstof32x F
++GLIBC_2.30 wcstof32x_l F
++GLIBC_2.30 wcstof64 F
++GLIBC_2.30 wcstof64_l F
++GLIBC_2.30 wcstof_l F
++GLIBC_2.30 wcstoimax F
++GLIBC_2.30 wcstok F
++GLIBC_2.30 wcstol F
++GLIBC_2.30 wcstol_l F
++GLIBC_2.30 wcstold F
++GLIBC_2.30 wcstold_l F
++GLIBC_2.30 wcstoll F
++GLIBC_2.30 wcstoll_l F
++GLIBC_2.30 wcstombs F
++GLIBC_2.30 wcstoq F
++GLIBC_2.30 wcstoul F
++GLIBC_2.30 wcstoul_l F
++GLIBC_2.30 wcstoull F
++GLIBC_2.30 wcstoull_l F
++GLIBC_2.30 wcstoumax F
++GLIBC_2.30 wcstouq F
++GLIBC_2.30 wcswcs F
++GLIBC_2.30 wcswidth F
++GLIBC_2.30 wcsxfrm F
++GLIBC_2.30 wcsxfrm_l F
++GLIBC_2.30 wctob F
++GLIBC_2.30 wctomb F
++GLIBC_2.30 wctrans F
++GLIBC_2.30 wctrans_l F
++GLIBC_2.30 wctype F
++GLIBC_2.30 wctype_l F
++GLIBC_2.30 wcwidth F
++GLIBC_2.30 wmemchr F
++GLIBC_2.30 wmemcmp F
++GLIBC_2.30 wmemcpy F
++GLIBC_2.30 wmemmove F
++GLIBC_2.30 wmempcpy F
++GLIBC_2.30 wmemset F
++GLIBC_2.30 wordexp F
++GLIBC_2.30 wordfree F
++GLIBC_2.30 wprintf F
++GLIBC_2.30 write F
++GLIBC_2.30 writev F
++GLIBC_2.30 wscanf F
++GLIBC_2.30 xdecrypt F
++GLIBC_2.30 xdr_accepted_reply F
++GLIBC_2.30 xdr_array F
++GLIBC_2.30 xdr_authdes_cred F
++GLIBC_2.30 xdr_authdes_verf F
++GLIBC_2.30 xdr_authunix_parms F
++GLIBC_2.30 xdr_bool F
++GLIBC_2.30 xdr_bytes F
++GLIBC_2.30 xdr_callhdr F
++GLIBC_2.30 xdr_callmsg F
++GLIBC_2.30 xdr_char F
++GLIBC_2.30 xdr_cryptkeyarg F
++GLIBC_2.30 xdr_cryptkeyarg2 F
++GLIBC_2.30 xdr_cryptkeyres F
++GLIBC_2.30 xdr_des_block F
++GLIBC_2.30 xdr_double F
++GLIBC_2.30 xdr_enum F
++GLIBC_2.30 xdr_float F
++GLIBC_2.30 xdr_free F
++GLIBC_2.30 xdr_getcredres F
++GLIBC_2.30 xdr_hyper F
++GLIBC_2.30 xdr_int F
++GLIBC_2.30 xdr_int16_t F
++GLIBC_2.30 xdr_int32_t F
++GLIBC_2.30 xdr_int64_t F
++GLIBC_2.30 xdr_int8_t F
++GLIBC_2.30 xdr_key_netstarg F
++GLIBC_2.30 xdr_key_netstres F
++GLIBC_2.30 xdr_keybuf F
++GLIBC_2.30 xdr_keystatus F
++GLIBC_2.30 xdr_long F
++GLIBC_2.30 xdr_longlong_t F
++GLIBC_2.30 xdr_netnamestr F
++GLIBC_2.30 xdr_netobj F
++GLIBC_2.30 xdr_opaque F
++GLIBC_2.30 xdr_opaque_auth F
++GLIBC_2.30 xdr_pmap F
++GLIBC_2.30 xdr_pmaplist F
++GLIBC_2.30 xdr_pointer F
++GLIBC_2.30 xdr_quad_t F
++GLIBC_2.30 xdr_reference F
++GLIBC_2.30 xdr_rejected_reply F
++GLIBC_2.30 xdr_replymsg F
++GLIBC_2.30 xdr_rmtcall_args F
++GLIBC_2.30 xdr_rmtcallres F
++GLIBC_2.30 xdr_short F
++GLIBC_2.30 xdr_sizeof F
++GLIBC_2.30 xdr_string F
++GLIBC_2.30 xdr_u_char F
++GLIBC_2.30 xdr_u_hyper F
++GLIBC_2.30 xdr_u_int F
++GLIBC_2.30 xdr_u_long F
++GLIBC_2.30 xdr_u_longlong_t F
++GLIBC_2.30 xdr_u_quad_t F
++GLIBC_2.30 xdr_u_short F
++GLIBC_2.30 xdr_uint16_t F
++GLIBC_2.30 xdr_uint32_t F
++GLIBC_2.30 xdr_uint64_t F
++GLIBC_2.30 xdr_uint8_t F
++GLIBC_2.30 xdr_union F
++GLIBC_2.30 xdr_unixcred F
++GLIBC_2.30 xdr_vector F
++GLIBC_2.30 xdr_void F
++GLIBC_2.30 xdr_wrapstring F
++GLIBC_2.30 xdrmem_create F
++GLIBC_2.30 xdrrec_create F
++GLIBC_2.30 xdrrec_endofrecord F
++GLIBC_2.30 xdrrec_eof F
++GLIBC_2.30 xdrrec_skiprecord F
++GLIBC_2.30 xdrstdio_create F
++GLIBC_2.30 xencrypt F
++GLIBC_2.30 xprt_register F
++GLIBC_2.30 xprt_unregister F
+diff --git a/sysdeps/unix/sysv/linux/arc/libcrypt.abilist b/sysdeps/unix/sysv/linux/arc/libcrypt.abilist
+new file mode 100644
+index 00000000000..8d83578d8cf
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libcrypt.abilist
+@@ -0,0 +1,2 @@
++GLIBC_2.30 crypt F
++GLIBC_2.30 crypt_r F
+diff --git a/sysdeps/unix/sysv/linux/arc/libdl.abilist b/sysdeps/unix/sysv/linux/arc/libdl.abilist
+new file mode 100644
+index 00000000000..3fc6d95b85b
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libdl.abilist
+@@ -0,0 +1,9 @@
++GLIBC_2.30 dladdr F
++GLIBC_2.30 dladdr1 F
++GLIBC_2.30 dlclose F
++GLIBC_2.30 dlerror F
++GLIBC_2.30 dlinfo F
++GLIBC_2.30 dlmopen F
++GLIBC_2.30 dlopen F
++GLIBC_2.30 dlsym F
++GLIBC_2.30 dlvsym F
+diff --git a/sysdeps/unix/sysv/linux/arc/libm.abilist b/sysdeps/unix/sysv/linux/arc/libm.abilist
+new file mode 100644
+index 00000000000..43f3a97e6f2
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libm.abilist
+@@ -0,0 +1,753 @@
++GLIBC_2.30 __acos_finite F
++GLIBC_2.30 __acosf_finite F
++GLIBC_2.30 __acosh_finite F
++GLIBC_2.30 __acoshf_finite F
++GLIBC_2.30 __asin_finite F
++GLIBC_2.30 __asinf_finite F
++GLIBC_2.30 __atan2_finite F
++GLIBC_2.30 __atan2f_finite F
++GLIBC_2.30 __atanh_finite F
++GLIBC_2.30 __atanhf_finite F
++GLIBC_2.30 __clog10 F
++GLIBC_2.30 __clog10f F
++GLIBC_2.30 __clog10l F
++GLIBC_2.30 __cosh_finite F
++GLIBC_2.30 __coshf_finite F
++GLIBC_2.30 __exp10_finite F
++GLIBC_2.30 __exp10f_finite F
++GLIBC_2.30 __exp2_finite F
++GLIBC_2.30 __exp2f_finite F
++GLIBC_2.30 __exp_finite F
++GLIBC_2.30 __expf_finite F
++GLIBC_2.30 __finite F
++GLIBC_2.30 __finitef F
++GLIBC_2.30 __fmod_finite F
++GLIBC_2.30 __fmodf_finite F
++GLIBC_2.30 __fpclassify F
++GLIBC_2.30 __fpclassifyf F
++GLIBC_2.30 __gamma_r_finite F
++GLIBC_2.30 __gammaf_r_finite F
++GLIBC_2.30 __hypot_finite F
++GLIBC_2.30 __hypotf_finite F
++GLIBC_2.30 __iseqsig F
++GLIBC_2.30 __iseqsigf F
++GLIBC_2.30 __issignaling F
++GLIBC_2.30 __issignalingf F
++GLIBC_2.30 __j0_finite F
++GLIBC_2.30 __j0f_finite F
++GLIBC_2.30 __j1_finite F
++GLIBC_2.30 __j1f_finite F
++GLIBC_2.30 __jn_finite F
++GLIBC_2.30 __jnf_finite F
++GLIBC_2.30 __lgamma_r_finite F
++GLIBC_2.30 __lgammaf_r_finite F
++GLIBC_2.30 __log10_finite F
++GLIBC_2.30 __log10f_finite F
++GLIBC_2.30 __log2_finite F
++GLIBC_2.30 __log2f_finite F
++GLIBC_2.30 __log_finite F
++GLIBC_2.30 __logf_finite F
++GLIBC_2.30 __pow_finite F
++GLIBC_2.30 __powf_finite F
++GLIBC_2.30 __remainder_finite F
++GLIBC_2.30 __remainderf_finite F
++GLIBC_2.30 __scalb_finite F
++GLIBC_2.30 __scalbf_finite F
++GLIBC_2.30 __signbit F
++GLIBC_2.30 __signbitf F
++GLIBC_2.30 __signgam D 0x4
++GLIBC_2.30 __sinh_finite F
++GLIBC_2.30 __sinhf_finite F
++GLIBC_2.30 __sqrt_finite F
++GLIBC_2.30 __sqrtf_finite F
++GLIBC_2.30 __y0_finite F
++GLIBC_2.30 __y0f_finite F
++GLIBC_2.30 __y1_finite F
++GLIBC_2.30 __y1f_finite F
++GLIBC_2.30 __yn_finite F
++GLIBC_2.30 __ynf_finite F
++GLIBC_2.30 acos F
++GLIBC_2.30 acosf F
++GLIBC_2.30 acosf32 F
++GLIBC_2.30 acosf32x F
++GLIBC_2.30 acosf64 F
++GLIBC_2.30 acosh F
++GLIBC_2.30 acoshf F
++GLIBC_2.30 acoshf32 F
++GLIBC_2.30 acoshf32x F
++GLIBC_2.30 acoshf64 F
++GLIBC_2.30 acoshl F
++GLIBC_2.30 acosl F
++GLIBC_2.30 asin F
++GLIBC_2.30 asinf F
++GLIBC_2.30 asinf32 F
++GLIBC_2.30 asinf32x F
++GLIBC_2.30 asinf64 F
++GLIBC_2.30 asinh F
++GLIBC_2.30 asinhf F
++GLIBC_2.30 asinhf32 F
++GLIBC_2.30 asinhf32x F
++GLIBC_2.30 asinhf64 F
++GLIBC_2.30 asinhl F
++GLIBC_2.30 asinl F
++GLIBC_2.30 atan F
++GLIBC_2.30 atan2 F
++GLIBC_2.30 atan2f F
++GLIBC_2.30 atan2f32 F
++GLIBC_2.30 atan2f32x F
++GLIBC_2.30 atan2f64 F
++GLIBC_2.30 atan2l F
++GLIBC_2.30 atanf F
++GLIBC_2.30 atanf32 F
++GLIBC_2.30 atanf32x F
++GLIBC_2.30 atanf64 F
++GLIBC_2.30 atanh F
++GLIBC_2.30 atanhf F
++GLIBC_2.30 atanhf32 F
++GLIBC_2.30 atanhf32x F
++GLIBC_2.30 atanhf64 F
++GLIBC_2.30 atanhl F
++GLIBC_2.30 atanl F
++GLIBC_2.30 cabs F
++GLIBC_2.30 cabsf F
++GLIBC_2.30 cabsf32 F
++GLIBC_2.30 cabsf32x F
++GLIBC_2.30 cabsf64 F
++GLIBC_2.30 cabsl F
++GLIBC_2.30 cacos F
++GLIBC_2.30 cacosf F
++GLIBC_2.30 cacosf32 F
++GLIBC_2.30 cacosf32x F
++GLIBC_2.30 cacosf64 F
++GLIBC_2.30 cacosh F
++GLIBC_2.30 cacoshf F
++GLIBC_2.30 cacoshf32 F
++GLIBC_2.30 cacoshf32x F
++GLIBC_2.30 cacoshf64 F
++GLIBC_2.30 cacoshl F
++GLIBC_2.30 cacosl F
++GLIBC_2.30 canonicalize F
++GLIBC_2.30 canonicalizef F
++GLIBC_2.30 canonicalizef32 F
++GLIBC_2.30 canonicalizef32x F
++GLIBC_2.30 canonicalizef64 F
++GLIBC_2.30 canonicalizel F
++GLIBC_2.30 carg F
++GLIBC_2.30 cargf F
++GLIBC_2.30 cargf32 F
++GLIBC_2.30 cargf32x F
++GLIBC_2.30 cargf64 F
++GLIBC_2.30 cargl F
++GLIBC_2.30 casin F
++GLIBC_2.30 casinf F
++GLIBC_2.30 casinf32 F
++GLIBC_2.30 casinf32x F
++GLIBC_2.30 casinf64 F
++GLIBC_2.30 casinh F
++GLIBC_2.30 casinhf F
++GLIBC_2.30 casinhf32 F
++GLIBC_2.30 casinhf32x F
++GLIBC_2.30 casinhf64 F
++GLIBC_2.30 casinhl F
++GLIBC_2.30 casinl F
++GLIBC_2.30 catan F
++GLIBC_2.30 catanf F
++GLIBC_2.30 catanf32 F
++GLIBC_2.30 catanf32x F
++GLIBC_2.30 catanf64 F
++GLIBC_2.30 catanh F
++GLIBC_2.30 catanhf F
++GLIBC_2.30 catanhf32 F
++GLIBC_2.30 catanhf32x F
++GLIBC_2.30 catanhf64 F
++GLIBC_2.30 catanhl F
++GLIBC_2.30 catanl F
++GLIBC_2.30 cbrt F
++GLIBC_2.30 cbrtf F
++GLIBC_2.30 cbrtf32 F
++GLIBC_2.30 cbrtf32x F
++GLIBC_2.30 cbrtf64 F
++GLIBC_2.30 cbrtl F
++GLIBC_2.30 ccos F
++GLIBC_2.30 ccosf F
++GLIBC_2.30 ccosf32 F
++GLIBC_2.30 ccosf32x F
++GLIBC_2.30 ccosf64 F
++GLIBC_2.30 ccosh F
++GLIBC_2.30 ccoshf F
++GLIBC_2.30 ccoshf32 F
++GLIBC_2.30 ccoshf32x F
++GLIBC_2.30 ccoshf64 F
++GLIBC_2.30 ccoshl F
++GLIBC_2.30 ccosl F
++GLIBC_2.30 ceil F
++GLIBC_2.30 ceilf F
++GLIBC_2.30 ceilf32 F
++GLIBC_2.30 ceilf32x F
++GLIBC_2.30 ceilf64 F
++GLIBC_2.30 ceill F
++GLIBC_2.30 cexp F
++GLIBC_2.30 cexpf F
++GLIBC_2.30 cexpf32 F
++GLIBC_2.30 cexpf32x F
++GLIBC_2.30 cexpf64 F
++GLIBC_2.30 cexpl F
++GLIBC_2.30 cimag F
++GLIBC_2.30 cimagf F
++GLIBC_2.30 cimagf32 F
++GLIBC_2.30 cimagf32x F
++GLIBC_2.30 cimagf64 F
++GLIBC_2.30 cimagl F
++GLIBC_2.30 clog F
++GLIBC_2.30 clog10 F
++GLIBC_2.30 clog10f F
++GLIBC_2.30 clog10f32 F
++GLIBC_2.30 clog10f32x F
++GLIBC_2.30 clog10f64 F
++GLIBC_2.30 clog10l F
++GLIBC_2.30 clogf F
++GLIBC_2.30 clogf32 F
++GLIBC_2.30 clogf32x F
++GLIBC_2.30 clogf64 F
++GLIBC_2.30 clogl F
++GLIBC_2.30 conj F
++GLIBC_2.30 conjf F
++GLIBC_2.30 conjf32 F
++GLIBC_2.30 conjf32x F
++GLIBC_2.30 conjf64 F
++GLIBC_2.30 conjl F
++GLIBC_2.30 copysign F
++GLIBC_2.30 copysignf F
++GLIBC_2.30 copysignf32 F
++GLIBC_2.30 copysignf32x F
++GLIBC_2.30 copysignf64 F
++GLIBC_2.30 copysignl F
++GLIBC_2.30 cos F
++GLIBC_2.30 cosf F
++GLIBC_2.30 cosf32 F
++GLIBC_2.30 cosf32x F
++GLIBC_2.30 cosf64 F
++GLIBC_2.30 cosh F
++GLIBC_2.30 coshf F
++GLIBC_2.30 coshf32 F
++GLIBC_2.30 coshf32x F
++GLIBC_2.30 coshf64 F
++GLIBC_2.30 coshl F
++GLIBC_2.30 cosl F
++GLIBC_2.30 cpow F
++GLIBC_2.30 cpowf F
++GLIBC_2.30 cpowf32 F
++GLIBC_2.30 cpowf32x F
++GLIBC_2.30 cpowf64 F
++GLIBC_2.30 cpowl F
++GLIBC_2.30 cproj F
++GLIBC_2.30 cprojf F
++GLIBC_2.30 cprojf32 F
++GLIBC_2.30 cprojf32x F
++GLIBC_2.30 cprojf64 F
++GLIBC_2.30 cprojl F
++GLIBC_2.30 creal F
++GLIBC_2.30 crealf F
++GLIBC_2.30 crealf32 F
++GLIBC_2.30 crealf32x F
++GLIBC_2.30 crealf64 F
++GLIBC_2.30 creall F
++GLIBC_2.30 csin F
++GLIBC_2.30 csinf F
++GLIBC_2.30 csinf32 F
++GLIBC_2.30 csinf32x F
++GLIBC_2.30 csinf64 F
++GLIBC_2.30 csinh F
++GLIBC_2.30 csinhf F
++GLIBC_2.30 csinhf32 F
++GLIBC_2.30 csinhf32x F
++GLIBC_2.30 csinhf64 F
++GLIBC_2.30 csinhl F
++GLIBC_2.30 csinl F
++GLIBC_2.30 csqrt F
++GLIBC_2.30 csqrtf F
++GLIBC_2.30 csqrtf32 F
++GLIBC_2.30 csqrtf32x F
++GLIBC_2.30 csqrtf64 F
++GLIBC_2.30 csqrtl F
++GLIBC_2.30 ctan F
++GLIBC_2.30 ctanf F
++GLIBC_2.30 ctanf32 F
++GLIBC_2.30 ctanf32x F
++GLIBC_2.30 ctanf64 F
++GLIBC_2.30 ctanh F
++GLIBC_2.30 ctanhf F
++GLIBC_2.30 ctanhf32 F
++GLIBC_2.30 ctanhf32x F
++GLIBC_2.30 ctanhf64 F
++GLIBC_2.30 ctanhl F
++GLIBC_2.30 ctanl F
++GLIBC_2.30 daddl F
++GLIBC_2.30 ddivl F
++GLIBC_2.30 dmull F
++GLIBC_2.30 drem F
++GLIBC_2.30 dremf F
++GLIBC_2.30 dreml F
++GLIBC_2.30 dsubl F
++GLIBC_2.30 erf F
++GLIBC_2.30 erfc F
++GLIBC_2.30 erfcf F
++GLIBC_2.30 erfcf32 F
++GLIBC_2.30 erfcf32x F
++GLIBC_2.30 erfcf64 F
++GLIBC_2.30 erfcl F
++GLIBC_2.30 erff F
++GLIBC_2.30 erff32 F
++GLIBC_2.30 erff32x F
++GLIBC_2.30 erff64 F
++GLIBC_2.30 erfl F
++GLIBC_2.30 exp F
++GLIBC_2.30 exp10 F
++GLIBC_2.30 exp10f F
++GLIBC_2.30 exp10f32 F
++GLIBC_2.30 exp10f32x F
++GLIBC_2.30 exp10f64 F
++GLIBC_2.30 exp10l F
++GLIBC_2.30 exp2 F
++GLIBC_2.30 exp2f F
++GLIBC_2.30 exp2f32 F
++GLIBC_2.30 exp2f32x F
++GLIBC_2.30 exp2f64 F
++GLIBC_2.30 exp2l F
++GLIBC_2.30 expf F
++GLIBC_2.30 expf32 F
++GLIBC_2.30 expf32x F
++GLIBC_2.30 expf64 F
++GLIBC_2.30 expl F
++GLIBC_2.30 expm1 F
++GLIBC_2.30 expm1f F
++GLIBC_2.30 expm1f32 F
++GLIBC_2.30 expm1f32x F
++GLIBC_2.30 expm1f64 F
++GLIBC_2.30 expm1l F
++GLIBC_2.30 f32addf32x F
++GLIBC_2.30 f32addf64 F
++GLIBC_2.30 f32divf32x F
++GLIBC_2.30 f32divf64 F
++GLIBC_2.30 f32mulf32x F
++GLIBC_2.30 f32mulf64 F
++GLIBC_2.30 f32subf32x F
++GLIBC_2.30 f32subf64 F
++GLIBC_2.30 f32xaddf64 F
++GLIBC_2.30 f32xdivf64 F
++GLIBC_2.30 f32xmulf64 F
++GLIBC_2.30 f32xsubf64 F
++GLIBC_2.30 fabs F
++GLIBC_2.30 fabsf F
++GLIBC_2.30 fabsf32 F
++GLIBC_2.30 fabsf32x F
++GLIBC_2.30 fabsf64 F
++GLIBC_2.30 fabsl F
++GLIBC_2.30 fadd F
++GLIBC_2.30 faddl F
++GLIBC_2.30 fdim F
++GLIBC_2.30 fdimf F
++GLIBC_2.30 fdimf32 F
++GLIBC_2.30 fdimf32x F
++GLIBC_2.30 fdimf64 F
++GLIBC_2.30 fdiml F
++GLIBC_2.30 fdiv F
++GLIBC_2.30 fdivl F
++GLIBC_2.30 feclearexcept F
++GLIBC_2.30 fedisableexcept F
++GLIBC_2.30 feenableexcept F
++GLIBC_2.30 fegetenv F
++GLIBC_2.30 fegetexcept F
++GLIBC_2.30 fegetexceptflag F
++GLIBC_2.30 fegetmode F
++GLIBC_2.30 fegetround F
++GLIBC_2.30 feholdexcept F
++GLIBC_2.30 feraiseexcept F
++GLIBC_2.30 fesetenv F
++GLIBC_2.30 fesetexcept F
++GLIBC_2.30 fesetexceptflag F
++GLIBC_2.30 fesetmode F
++GLIBC_2.30 fesetround F
++GLIBC_2.30 fetestexcept F
++GLIBC_2.30 fetestexceptflag F
++GLIBC_2.30 feupdateenv F
++GLIBC_2.30 finite F
++GLIBC_2.30 finitef F
++GLIBC_2.30 finitel F
++GLIBC_2.30 floor F
++GLIBC_2.30 floorf F
++GLIBC_2.30 floorf32 F
++GLIBC_2.30 floorf32x F
++GLIBC_2.30 floorf64 F
++GLIBC_2.30 floorl F
++GLIBC_2.30 fma F
++GLIBC_2.30 fmaf F
++GLIBC_2.30 fmaf32 F
++GLIBC_2.30 fmaf32x F
++GLIBC_2.30 fmaf64 F
++GLIBC_2.30 fmal F
++GLIBC_2.30 fmax F
++GLIBC_2.30 fmaxf F
++GLIBC_2.30 fmaxf32 F
++GLIBC_2.30 fmaxf32x F
++GLIBC_2.30 fmaxf64 F
++GLIBC_2.30 fmaxl F
++GLIBC_2.30 fmaxmag F
++GLIBC_2.30 fmaxmagf F
++GLIBC_2.30 fmaxmagf32 F
++GLIBC_2.30 fmaxmagf32x F
++GLIBC_2.30 fmaxmagf64 F
++GLIBC_2.30 fmaxmagl F
++GLIBC_2.30 fmin F
++GLIBC_2.30 fminf F
++GLIBC_2.30 fminf32 F
++GLIBC_2.30 fminf32x F
++GLIBC_2.30 fminf64 F
++GLIBC_2.30 fminl F
++GLIBC_2.30 fminmag F
++GLIBC_2.30 fminmagf F
++GLIBC_2.30 fminmagf32 F
++GLIBC_2.30 fminmagf32x F
++GLIBC_2.30 fminmagf64 F
++GLIBC_2.30 fminmagl F
++GLIBC_2.30 fmod F
++GLIBC_2.30 fmodf F
++GLIBC_2.30 fmodf32 F
++GLIBC_2.30 fmodf32x F
++GLIBC_2.30 fmodf64 F
++GLIBC_2.30 fmodl F
++GLIBC_2.30 fmul F
++GLIBC_2.30 fmull F
++GLIBC_2.30 frexp F
++GLIBC_2.30 frexpf F
++GLIBC_2.30 frexpf32 F
++GLIBC_2.30 frexpf32x F
++GLIBC_2.30 frexpf64 F
++GLIBC_2.30 frexpl F
++GLIBC_2.30 fromfp F
++GLIBC_2.30 fromfpf F
++GLIBC_2.30 fromfpf32 F
++GLIBC_2.30 fromfpf32x F
++GLIBC_2.30 fromfpf64 F
++GLIBC_2.30 fromfpl F
++GLIBC_2.30 fromfpx F
++GLIBC_2.30 fromfpxf F
++GLIBC_2.30 fromfpxf32 F
++GLIBC_2.30 fromfpxf32x F
++GLIBC_2.30 fromfpxf64 F
++GLIBC_2.30 fromfpxl F
++GLIBC_2.30 fsub F
++GLIBC_2.30 fsubl F
++GLIBC_2.30 gamma F
++GLIBC_2.30 gammaf F
++GLIBC_2.30 gammal F
++GLIBC_2.30 getpayload F
++GLIBC_2.30 getpayloadf F
++GLIBC_2.30 getpayloadf32 F
++GLIBC_2.30 getpayloadf32x F
++GLIBC_2.30 getpayloadf64 F
++GLIBC_2.30 getpayloadl F
++GLIBC_2.30 hypot F
++GLIBC_2.30 hypotf F
++GLIBC_2.30 hypotf32 F
++GLIBC_2.30 hypotf32x F
++GLIBC_2.30 hypotf64 F
++GLIBC_2.30 hypotl F
++GLIBC_2.30 ilogb F
++GLIBC_2.30 ilogbf F
++GLIBC_2.30 ilogbf32 F
++GLIBC_2.30 ilogbf32x F
++GLIBC_2.30 ilogbf64 F
++GLIBC_2.30 ilogbl F
++GLIBC_2.30 j0 F
++GLIBC_2.30 j0f F
++GLIBC_2.30 j0f32 F
++GLIBC_2.30 j0f32x F
++GLIBC_2.30 j0f64 F
++GLIBC_2.30 j0l F
++GLIBC_2.30 j1 F
++GLIBC_2.30 j1f F
++GLIBC_2.30 j1f32 F
++GLIBC_2.30 j1f32x F
++GLIBC_2.30 j1f64 F
++GLIBC_2.30 j1l F
++GLIBC_2.30 jn F
++GLIBC_2.30 jnf F
++GLIBC_2.30 jnf32 F
++GLIBC_2.30 jnf32x F
++GLIBC_2.30 jnf64 F
++GLIBC_2.30 jnl F
++GLIBC_2.30 ldexp F
++GLIBC_2.30 ldexpf F
++GLIBC_2.30 ldexpf32 F
++GLIBC_2.30 ldexpf32x F
++GLIBC_2.30 ldexpf64 F
++GLIBC_2.30 ldexpl F
++GLIBC_2.30 lgamma F
++GLIBC_2.30 lgamma_r F
++GLIBC_2.30 lgammaf F
++GLIBC_2.30 lgammaf32 F
++GLIBC_2.30 lgammaf32_r F
++GLIBC_2.30 lgammaf32x F
++GLIBC_2.30 lgammaf32x_r F
++GLIBC_2.30 lgammaf64 F
++GLIBC_2.30 lgammaf64_r F
++GLIBC_2.30 lgammaf_r F
++GLIBC_2.30 lgammal F
++GLIBC_2.30 lgammal_r F
++GLIBC_2.30 llogb F
++GLIBC_2.30 llogbf F
++GLIBC_2.30 llogbf32 F
++GLIBC_2.30 llogbf32x F
++GLIBC_2.30 llogbf64 F
++GLIBC_2.30 llogbl F
++GLIBC_2.30 llrint F
++GLIBC_2.30 llrintf F
++GLIBC_2.30 llrintf32 F
++GLIBC_2.30 llrintf32x F
++GLIBC_2.30 llrintf64 F
++GLIBC_2.30 llrintl F
++GLIBC_2.30 llround F
++GLIBC_2.30 llroundf F
++GLIBC_2.30 llroundf32 F
++GLIBC_2.30 llroundf32x F
++GLIBC_2.30 llroundf64 F
++GLIBC_2.30 llroundl F
++GLIBC_2.30 log F
++GLIBC_2.30 log10 F
++GLIBC_2.30 log10f F
++GLIBC_2.30 log10f32 F
++GLIBC_2.30 log10f32x F
++GLIBC_2.30 log10f64 F
++GLIBC_2.30 log10l F
++GLIBC_2.30 log1p F
++GLIBC_2.30 log1pf F
++GLIBC_2.30 log1pf32 F
++GLIBC_2.30 log1pf32x F
++GLIBC_2.30 log1pf64 F
++GLIBC_2.30 log1pl F
++GLIBC_2.30 log2 F
++GLIBC_2.30 log2f F
++GLIBC_2.30 log2f32 F
++GLIBC_2.30 log2f32x F
++GLIBC_2.30 log2f64 F
++GLIBC_2.30 log2l F
++GLIBC_2.30 logb F
++GLIBC_2.30 logbf F
++GLIBC_2.30 logbf32 F
++GLIBC_2.30 logbf32x F
++GLIBC_2.30 logbf64 F
++GLIBC_2.30 logbl F
++GLIBC_2.30 logf F
++GLIBC_2.30 logf32 F
++GLIBC_2.30 logf32x F
++GLIBC_2.30 logf64 F
++GLIBC_2.30 logl F
++GLIBC_2.30 lrint F
++GLIBC_2.30 lrintf F
++GLIBC_2.30 lrintf32 F
++GLIBC_2.30 lrintf32x F
++GLIBC_2.30 lrintf64 F
++GLIBC_2.30 lrintl F
++GLIBC_2.30 lround F
++GLIBC_2.30 lroundf F
++GLIBC_2.30 lroundf32 F
++GLIBC_2.30 lroundf32x F
++GLIBC_2.30 lroundf64 F
++GLIBC_2.30 lroundl F
++GLIBC_2.30 modf F
++GLIBC_2.30 modff F
++GLIBC_2.30 modff32 F
++GLIBC_2.30 modff32x F
++GLIBC_2.30 modff64 F
++GLIBC_2.30 modfl F
++GLIBC_2.30 nan F
++GLIBC_2.30 nanf F
++GLIBC_2.30 nanf32 F
++GLIBC_2.30 nanf32x F
++GLIBC_2.30 nanf64 F
++GLIBC_2.30 nanl F
++GLIBC_2.30 nearbyint F
++GLIBC_2.30 nearbyintf F
++GLIBC_2.30 nearbyintf32 F
++GLIBC_2.30 nearbyintf32x F
++GLIBC_2.30 nearbyintf64 F
++GLIBC_2.30 nearbyintl F
++GLIBC_2.30 nextafter F
++GLIBC_2.30 nextafterf F
++GLIBC_2.30 nextafterf32 F
++GLIBC_2.30 nextafterf32x F
++GLIBC_2.30 nextafterf64 F
++GLIBC_2.30 nextafterl F
++GLIBC_2.30 nextdown F
++GLIBC_2.30 nextdownf F
++GLIBC_2.30 nextdownf32 F
++GLIBC_2.30 nextdownf32x F
++GLIBC_2.30 nextdownf64 F
++GLIBC_2.30 nextdownl F
++GLIBC_2.30 nexttoward F
++GLIBC_2.30 nexttowardf F
++GLIBC_2.30 nexttowardl F
++GLIBC_2.30 nextup F
++GLIBC_2.30 nextupf F
++GLIBC_2.30 nextupf32 F
++GLIBC_2.30 nextupf32x F
++GLIBC_2.30 nextupf64 F
++GLIBC_2.30 nextupl F
++GLIBC_2.30 pow F
++GLIBC_2.30 powf F
++GLIBC_2.30 powf32 F
++GLIBC_2.30 powf32x F
++GLIBC_2.30 powf64 F
++GLIBC_2.30 powl F
++GLIBC_2.30 remainder F
++GLIBC_2.30 remainderf F
++GLIBC_2.30 remainderf32 F
++GLIBC_2.30 remainderf32x F
++GLIBC_2.30 remainderf64 F
++GLIBC_2.30 remainderl F
++GLIBC_2.30 remquo F
++GLIBC_2.30 remquof F
++GLIBC_2.30 remquof32 F
++GLIBC_2.30 remquof32x F
++GLIBC_2.30 remquof64 F
++GLIBC_2.30 remquol F
++GLIBC_2.30 rint F
++GLIBC_2.30 rintf F
++GLIBC_2.30 rintf32 F
++GLIBC_2.30 rintf32x F
++GLIBC_2.30 rintf64 F
++GLIBC_2.30 rintl F
++GLIBC_2.30 round F
++GLIBC_2.30 roundeven F
++GLIBC_2.30 roundevenf F
++GLIBC_2.30 roundevenf32 F
++GLIBC_2.30 roundevenf32x F
++GLIBC_2.30 roundevenf64 F
++GLIBC_2.30 roundevenl F
++GLIBC_2.30 roundf F
++GLIBC_2.30 roundf32 F
++GLIBC_2.30 roundf32x F
++GLIBC_2.30 roundf64 F
++GLIBC_2.30 roundl F
++GLIBC_2.30 scalb F
++GLIBC_2.30 scalbf F
++GLIBC_2.30 scalbl F
++GLIBC_2.30 scalbln F
++GLIBC_2.30 scalblnf F
++GLIBC_2.30 scalblnf32 F
++GLIBC_2.30 scalblnf32x F
++GLIBC_2.30 scalblnf64 F
++GLIBC_2.30 scalblnl F
++GLIBC_2.30 scalbn F
++GLIBC_2.30 scalbnf F
++GLIBC_2.30 scalbnf32 F
++GLIBC_2.30 scalbnf32x F
++GLIBC_2.30 scalbnf64 F
++GLIBC_2.30 scalbnl F
++GLIBC_2.30 setpayload F
++GLIBC_2.30 setpayloadf F
++GLIBC_2.30 setpayloadf32 F
++GLIBC_2.30 setpayloadf32x F
++GLIBC_2.30 setpayloadf64 F
++GLIBC_2.30 setpayloadl F
++GLIBC_2.30 setpayloadsig F
++GLIBC_2.30 setpayloadsigf F
++GLIBC_2.30 setpayloadsigf32 F
++GLIBC_2.30 setpayloadsigf32x F
++GLIBC_2.30 setpayloadsigf64 F
++GLIBC_2.30 setpayloadsigl F
++GLIBC_2.30 signgam D 0x4
++GLIBC_2.30 significand F
++GLIBC_2.30 significandf F
++GLIBC_2.30 significandl F
++GLIBC_2.30 sin F
++GLIBC_2.30 sincos F
++GLIBC_2.30 sincosf F
++GLIBC_2.30 sincosf32 F
++GLIBC_2.30 sincosf32x F
++GLIBC_2.30 sincosf64 F
++GLIBC_2.30 sincosl F
++GLIBC_2.30 sinf F
++GLIBC_2.30 sinf32 F
++GLIBC_2.30 sinf32x F
++GLIBC_2.30 sinf64 F
++GLIBC_2.30 sinh F
++GLIBC_2.30 sinhf F
++GLIBC_2.30 sinhf32 F
++GLIBC_2.30 sinhf32x F
++GLIBC_2.30 sinhf64 F
++GLIBC_2.30 sinhl F
++GLIBC_2.30 sinl F
++GLIBC_2.30 sqrt F
++GLIBC_2.30 sqrtf F
++GLIBC_2.30 sqrtf32 F
++GLIBC_2.30 sqrtf32x F
++GLIBC_2.30 sqrtf64 F
++GLIBC_2.30 sqrtl F
++GLIBC_2.30 tan F
++GLIBC_2.30 tanf F
++GLIBC_2.30 tanf32 F
++GLIBC_2.30 tanf32x F
++GLIBC_2.30 tanf64 F
++GLIBC_2.30 tanh F
++GLIBC_2.30 tanhf F
++GLIBC_2.30 tanhf32 F
++GLIBC_2.30 tanhf32x F
++GLIBC_2.30 tanhf64 F
++GLIBC_2.30 tanhl F
++GLIBC_2.30 tanl F
++GLIBC_2.30 tgamma F
++GLIBC_2.30 tgammaf F
++GLIBC_2.30 tgammaf32 F
++GLIBC_2.30 tgammaf32x F
++GLIBC_2.30 tgammaf64 F
++GLIBC_2.30 tgammal F
++GLIBC_2.30 totalorder F
++GLIBC_2.30 totalorderf F
++GLIBC_2.30 totalorderf32 F
++GLIBC_2.30 totalorderf32x F
++GLIBC_2.30 totalorderf64 F
++GLIBC_2.30 totalorderl F
++GLIBC_2.30 totalordermag F
++GLIBC_2.30 totalordermagf F
++GLIBC_2.30 totalordermagf32 F
++GLIBC_2.30 totalordermagf32x F
++GLIBC_2.30 totalordermagf64 F
++GLIBC_2.30 totalordermagl F
++GLIBC_2.30 trunc F
++GLIBC_2.30 truncf F
++GLIBC_2.30 truncf32 F
++GLIBC_2.30 truncf32x F
++GLIBC_2.30 truncf64 F
++GLIBC_2.30 truncl F
++GLIBC_2.30 ufromfp F
++GLIBC_2.30 ufromfpf F
++GLIBC_2.30 ufromfpf32 F
++GLIBC_2.30 ufromfpf32x F
++GLIBC_2.30 ufromfpf64 F
++GLIBC_2.30 ufromfpl F
++GLIBC_2.30 ufromfpx F
++GLIBC_2.30 ufromfpxf F
++GLIBC_2.30 ufromfpxf32 F
++GLIBC_2.30 ufromfpxf32x F
++GLIBC_2.30 ufromfpxf64 F
++GLIBC_2.30 ufromfpxl F
++GLIBC_2.30 y0 F
++GLIBC_2.30 y0f F
++GLIBC_2.30 y0f32 F
++GLIBC_2.30 y0f32x F
++GLIBC_2.30 y0f64 F
++GLIBC_2.30 y0l F
++GLIBC_2.30 y1 F
++GLIBC_2.30 y1f F
++GLIBC_2.30 y1f32 F
++GLIBC_2.30 y1f32x F
++GLIBC_2.30 y1f64 F
++GLIBC_2.30 y1l F
++GLIBC_2.30 yn F
++GLIBC_2.30 ynf F
++GLIBC_2.30 ynf32 F
++GLIBC_2.30 ynf32x F
++GLIBC_2.30 ynf64 F
++GLIBC_2.30 ynl F
+diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+new file mode 100644
+index 00000000000..d89cf8d3014
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+@@ -0,0 +1,240 @@
++GLIBC_2.30 _IO_flockfile F
++GLIBC_2.30 _IO_ftrylockfile F
++GLIBC_2.30 _IO_funlockfile F
++GLIBC_2.30 __close F
++GLIBC_2.30 __connect F
++GLIBC_2.30 __errno_location F
++GLIBC_2.30 __h_errno_location F
++GLIBC_2.30 __libc_allocate_rtsig F
++GLIBC_2.30 __libc_current_sigrtmax F
++GLIBC_2.30 __libc_current_sigrtmin F
++GLIBC_2.30 __lseek F
++GLIBC_2.30 __nanosleep F
++GLIBC_2.30 __open F
++GLIBC_2.30 __open64 F
++GLIBC_2.30 __pread64 F
++GLIBC_2.30 __pthread_cleanup_routine F
++GLIBC_2.30 __pthread_getspecific F
++GLIBC_2.30 __pthread_key_create F
++GLIBC_2.30 __pthread_mutex_destroy F
++GLIBC_2.30 __pthread_mutex_init F
++GLIBC_2.30 __pthread_mutex_lock F
++GLIBC_2.30 __pthread_mutex_trylock F
++GLIBC_2.30 __pthread_mutex_unlock F
++GLIBC_2.30 __pthread_mutexattr_destroy F
++GLIBC_2.30 __pthread_mutexattr_init F
++GLIBC_2.30 __pthread_mutexattr_settype F
++GLIBC_2.30 __pthread_once F
++GLIBC_2.30 __pthread_register_cancel F
++GLIBC_2.30 __pthread_register_cancel_defer F
++GLIBC_2.30 __pthread_rwlock_destroy F
++GLIBC_2.30 __pthread_rwlock_init F
++GLIBC_2.30 __pthread_rwlock_rdlock F
++GLIBC_2.30 __pthread_rwlock_tryrdlock F
++GLIBC_2.30 __pthread_rwlock_trywrlock F
++GLIBC_2.30 __pthread_rwlock_unlock F
++GLIBC_2.30 __pthread_rwlock_wrlock F
++GLIBC_2.30 __pthread_setspecific F
++GLIBC_2.30 __pthread_unregister_cancel F
++GLIBC_2.30 __pthread_unregister_cancel_restore F
++GLIBC_2.30 __pthread_unwind_next F
++GLIBC_2.30 __pwrite64 F
++GLIBC_2.30 __read F
++GLIBC_2.30 __res_state F
++GLIBC_2.30 __send F
++GLIBC_2.30 __sigaction F
++GLIBC_2.30 __wait F
++GLIBC_2.30 __write F
++GLIBC_2.30 _pthread_cleanup_pop F
++GLIBC_2.30 _pthread_cleanup_pop_restore F
++GLIBC_2.30 _pthread_cleanup_push F
++GLIBC_2.30 _pthread_cleanup_push_defer F
++GLIBC_2.30 accept F
++GLIBC_2.30 call_once F
++GLIBC_2.30 close F
++GLIBC_2.30 cnd_broadcast F
++GLIBC_2.30 cnd_destroy F
++GLIBC_2.30 cnd_init F
++GLIBC_2.30 cnd_signal F
++GLIBC_2.30 cnd_timedwait F
++GLIBC_2.30 cnd_wait F
++GLIBC_2.30 connect F
++GLIBC_2.30 flockfile F
++GLIBC_2.30 fsync F
++GLIBC_2.30 ftrylockfile F
++GLIBC_2.30 funlockfile F
++GLIBC_2.30 lseek F
++GLIBC_2.30 lseek64 F
++GLIBC_2.30 msync F
++GLIBC_2.30 mtx_destroy F
++GLIBC_2.30 mtx_init F
++GLIBC_2.30 mtx_lock F
++GLIBC_2.30 mtx_timedlock F
++GLIBC_2.30 mtx_trylock F
++GLIBC_2.30 mtx_unlock F
++GLIBC_2.30 nanosleep F
++GLIBC_2.30 open F
++GLIBC_2.30 open64 F
++GLIBC_2.30 pause F
++GLIBC_2.30 pread F
++GLIBC_2.30 pread64 F
++GLIBC_2.30 pthread_attr_destroy F
++GLIBC_2.30 pthread_attr_getaffinity_np F
++GLIBC_2.30 pthread_attr_getdetachstate F
++GLIBC_2.30 pthread_attr_getguardsize F
++GLIBC_2.30 pthread_attr_getinheritsched F
++GLIBC_2.30 pthread_attr_getschedparam F
++GLIBC_2.30 pthread_attr_getschedpolicy F
++GLIBC_2.30 pthread_attr_getscope F
++GLIBC_2.30 pthread_attr_getstack F
++GLIBC_2.30 pthread_attr_getstackaddr F
++GLIBC_2.30 pthread_attr_getstacksize F
++GLIBC_2.30 pthread_attr_init F
++GLIBC_2.30 pthread_attr_setaffinity_np F
++GLIBC_2.30 pthread_attr_setdetachstate F
++GLIBC_2.30 pthread_attr_setguardsize F
++GLIBC_2.30 pthread_attr_setinheritsched F
++GLIBC_2.30 pthread_attr_setschedparam F
++GLIBC_2.30 pthread_attr_setschedpolicy F
++GLIBC_2.30 pthread_attr_setscope F
++GLIBC_2.30 pthread_attr_setstack F
++GLIBC_2.30 pthread_attr_setstackaddr F
++GLIBC_2.30 pthread_attr_setstacksize F
++GLIBC_2.30 pthread_barrier_destroy F
++GLIBC_2.30 pthread_barrier_init F
++GLIBC_2.30 pthread_barrier_wait F
++GLIBC_2.30 pthread_barrierattr_destroy F
++GLIBC_2.30 pthread_barrierattr_getpshared F
++GLIBC_2.30 pthread_barrierattr_init F
++GLIBC_2.30 pthread_barrierattr_setpshared F
++GLIBC_2.30 pthread_cancel F
++GLIBC_2.30 pthread_cond_broadcast F
++GLIBC_2.30 pthread_cond_clockwait F
++GLIBC_2.30 pthread_cond_destroy F
++GLIBC_2.30 pthread_cond_init F
++GLIBC_2.30 pthread_cond_signal F
++GLIBC_2.30 pthread_cond_timedwait F
++GLIBC_2.30 pthread_cond_wait F
++GLIBC_2.30 pthread_condattr_destroy F
++GLIBC_2.30 pthread_condattr_getclock F
++GLIBC_2.30 pthread_condattr_getpshared F
++GLIBC_2.30 pthread_condattr_init F
++GLIBC_2.30 pthread_condattr_setclock F
++GLIBC_2.30 pthread_condattr_setpshared F
++GLIBC_2.30 pthread_create F
++GLIBC_2.30 pthread_detach F
++GLIBC_2.30 pthread_equal F
++GLIBC_2.30 pthread_exit F
++GLIBC_2.30 pthread_getaffinity_np F
++GLIBC_2.30 pthread_getattr_default_np F
++GLIBC_2.30 pthread_getattr_np F
++GLIBC_2.30 pthread_getconcurrency F
++GLIBC_2.30 pthread_getcpuclockid F
++GLIBC_2.30 pthread_getname_np F
++GLIBC_2.30 pthread_getschedparam F
++GLIBC_2.30 pthread_getspecific F
++GLIBC_2.30 pthread_join F
++GLIBC_2.30 pthread_key_create F
++GLIBC_2.30 pthread_key_delete F
++GLIBC_2.30 pthread_kill F
++GLIBC_2.30 pthread_kill_other_threads_np F
++GLIBC_2.30 pthread_mutex_clocklock F
++GLIBC_2.30 pthread_mutex_consistent F
++GLIBC_2.30 pthread_mutex_consistent_np F
++GLIBC_2.30 pthread_mutex_destroy F
++GLIBC_2.30 pthread_mutex_getprioceiling F
++GLIBC_2.30 pthread_mutex_init F
++GLIBC_2.30 pthread_mutex_lock F
++GLIBC_2.30 pthread_mutex_setprioceiling F
++GLIBC_2.30 pthread_mutex_timedlock F
++GLIBC_2.30 pthread_mutex_trylock F
++GLIBC_2.30 pthread_mutex_unlock F
++GLIBC_2.30 pthread_mutexattr_destroy F
++GLIBC_2.30 pthread_mutexattr_getkind_np F
++GLIBC_2.30 pthread_mutexattr_getprioceiling F
++GLIBC_2.30 pthread_mutexattr_getprotocol F
++GLIBC_2.30 pthread_mutexattr_getpshared F
++GLIBC_2.30 pthread_mutexattr_getrobust F
++GLIBC_2.30 pthread_mutexattr_getrobust_np F
++GLIBC_2.30 pthread_mutexattr_gettype F
++GLIBC_2.30 pthread_mutexattr_init F
++GLIBC_2.30 pthread_mutexattr_setkind_np F
++GLIBC_2.30 pthread_mutexattr_setprioceiling F
++GLIBC_2.30 pthread_mutexattr_setprotocol F
++GLIBC_2.30 pthread_mutexattr_setpshared F
++GLIBC_2.30 pthread_mutexattr_setrobust F
++GLIBC_2.30 pthread_mutexattr_setrobust_np F
++GLIBC_2.30 pthread_mutexattr_settype F
++GLIBC_2.30 pthread_once F
++GLIBC_2.30 pthread_rwlock_clockrdlock F
++GLIBC_2.30 pthread_rwlock_clockwrlock F
++GLIBC_2.30 pthread_rwlock_destroy F
++GLIBC_2.30 pthread_rwlock_init F
++GLIBC_2.30 pthread_rwlock_rdlock F
++GLIBC_2.30 pthread_rwlock_timedrdlock F
++GLIBC_2.30 pthread_rwlock_timedwrlock F
++GLIBC_2.30 pthread_rwlock_tryrdlock F
++GLIBC_2.30 pthread_rwlock_trywrlock F
++GLIBC_2.30 pthread_rwlock_unlock F
++GLIBC_2.30 pthread_rwlock_wrlock F
++GLIBC_2.30 pthread_rwlockattr_destroy F
++GLIBC_2.30 pthread_rwlockattr_getkind_np F
++GLIBC_2.30 pthread_rwlockattr_getpshared F
++GLIBC_2.30 pthread_rwlockattr_init F
++GLIBC_2.30 pthread_rwlockattr_setkind_np F
++GLIBC_2.30 pthread_rwlockattr_setpshared F
++GLIBC_2.30 pthread_setaffinity_np F
++GLIBC_2.30 pthread_setattr_default_np F
++GLIBC_2.30 pthread_setcancelstate F
++GLIBC_2.30 pthread_setcanceltype F
++GLIBC_2.30 pthread_setconcurrency F
++GLIBC_2.30 pthread_setname_np F
++GLIBC_2.30 pthread_setschedparam F
++GLIBC_2.30 pthread_setschedprio F
++GLIBC_2.30 pthread_setspecific F
++GLIBC_2.30 pthread_sigmask F
++GLIBC_2.30 pthread_sigqueue F
++GLIBC_2.30 pthread_spin_destroy F
++GLIBC_2.30 pthread_spin_init F
++GLIBC_2.30 pthread_spin_lock F
++GLIBC_2.30 pthread_spin_trylock F
++GLIBC_2.30 pthread_spin_unlock F
++GLIBC_2.30 pthread_testcancel F
++GLIBC_2.30 pthread_timedjoin_np F
++GLIBC_2.30 pthread_tryjoin_np F
++GLIBC_2.30 pthread_yield F
++GLIBC_2.30 pwrite F
++GLIBC_2.30 pwrite64 F
++GLIBC_2.30 raise F
++GLIBC_2.30 read F
++GLIBC_2.30 recv F
++GLIBC_2.30 recvfrom F
++GLIBC_2.30 recvmsg F
++GLIBC_2.30 sem_clockwait F
++GLIBC_2.30 sem_close F
++GLIBC_2.30 sem_destroy F
++GLIBC_2.30 sem_getvalue F
++GLIBC_2.30 sem_init F
++GLIBC_2.30 sem_open F
++GLIBC_2.30 sem_post F
++GLIBC_2.30 sem_timedwait F
++GLIBC_2.30 sem_trywait F
++GLIBC_2.30 sem_unlink F
++GLIBC_2.30 sem_wait F
++GLIBC_2.30 send F
++GLIBC_2.30 sendmsg F
++GLIBC_2.30 sendto F
++GLIBC_2.30 sigaction F
++GLIBC_2.30 sigwait F
++GLIBC_2.30 tcdrain F
++GLIBC_2.30 thrd_create F
++GLIBC_2.30 thrd_detach F
++GLIBC_2.30 thrd_exit F
++GLIBC_2.30 thrd_join F
++GLIBC_2.30 tss_create F
++GLIBC_2.30 tss_delete F
++GLIBC_2.30 tss_get F
++GLIBC_2.30 tss_set F
++GLIBC_2.30 wait F
++GLIBC_2.30 waitpid F
++GLIBC_2.30 write F
+diff --git a/sysdeps/unix/sysv/linux/arc/libresolv.abilist b/sysdeps/unix/sysv/linux/arc/libresolv.abilist
+new file mode 100644
+index 00000000000..ca745f5b987
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libresolv.abilist
+@@ -0,0 +1,79 @@
++GLIBC_2.30 __b64_ntop F
++GLIBC_2.30 __b64_pton F
++GLIBC_2.30 __dn_comp F
++GLIBC_2.30 __dn_count_labels F
++GLIBC_2.30 __dn_expand F
++GLIBC_2.30 __dn_skipname F
++GLIBC_2.30 __fp_nquery F
++GLIBC_2.30 __fp_query F
++GLIBC_2.30 __fp_resstat F
++GLIBC_2.30 __hostalias F
++GLIBC_2.30 __loc_aton F
++GLIBC_2.30 __loc_ntoa F
++GLIBC_2.30 __p_cdname F
++GLIBC_2.30 __p_cdnname F
++GLIBC_2.30 __p_class F
++GLIBC_2.30 __p_class_syms D 0x54
++GLIBC_2.30 __p_fqname F
++GLIBC_2.30 __p_fqnname F
++GLIBC_2.30 __p_option F
++GLIBC_2.30 __p_query F
++GLIBC_2.30 __p_rcode F
++GLIBC_2.30 __p_time F
++GLIBC_2.30 __p_type F
++GLIBC_2.30 __p_type_syms D 0x228
++GLIBC_2.30 __putlong F
++GLIBC_2.30 __putshort F
++GLIBC_2.30 __res_close F
++GLIBC_2.30 __res_dnok F
++GLIBC_2.30 __res_hnok F
++GLIBC_2.30 __res_hostalias F
++GLIBC_2.30 __res_isourserver F
++GLIBC_2.30 __res_mailok F
++GLIBC_2.30 __res_mkquery F
++GLIBC_2.30 __res_nameinquery F
++GLIBC_2.30 __res_nmkquery F
++GLIBC_2.30 __res_nquery F
++GLIBC_2.30 __res_nquerydomain F
++GLIBC_2.30 __res_nsearch F
++GLIBC_2.30 __res_nsend F
++GLIBC_2.30 __res_ownok F
++GLIBC_2.30 __res_queriesmatch F
++GLIBC_2.30 __res_query F
++GLIBC_2.30 __res_querydomain F
++GLIBC_2.30 __res_search F
++GLIBC_2.30 __res_send F
++GLIBC_2.30 __sym_ntop F
++GLIBC_2.30 __sym_ntos F
++GLIBC_2.30 __sym_ston F
++GLIBC_2.30 _getlong F
++GLIBC_2.30 _getshort F
++GLIBC_2.30 inet_net_ntop F
++GLIBC_2.30 inet_net_pton F
++GLIBC_2.30 inet_neta F
++GLIBC_2.30 ns_datetosecs F
++GLIBC_2.30 ns_format_ttl F
++GLIBC_2.30 ns_get16 F
++GLIBC_2.30 ns_get32 F
++GLIBC_2.30 ns_initparse F
++GLIBC_2.30 ns_makecanon F
++GLIBC_2.30 ns_msg_getflag F
++GLIBC_2.30 ns_name_compress F
++GLIBC_2.30 ns_name_ntol F
++GLIBC_2.30 ns_name_ntop F
++GLIBC_2.30 ns_name_pack F
++GLIBC_2.30 ns_name_pton F
++GLIBC_2.30 ns_name_rollback F
++GLIBC_2.30 ns_name_skip F
++GLIBC_2.30 ns_name_uncompress F
++GLIBC_2.30 ns_name_unpack F
++GLIBC_2.30 ns_parse_ttl F
++GLIBC_2.30 ns_parserr F
++GLIBC_2.30 ns_put16 F
++GLIBC_2.30 ns_put32 F
++GLIBC_2.30 ns_samedomain F
++GLIBC_2.30 ns_samename F
++GLIBC_2.30 ns_skiprr F
++GLIBC_2.30 ns_sprintrr F
++GLIBC_2.30 ns_sprintrrf F
++GLIBC_2.30 ns_subdomain F
+diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
+new file mode 100644
+index 00000000000..8d39a086966
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
+@@ -0,0 +1,35 @@
++GLIBC_2.30 __mq_open_2 F
++GLIBC_2.30 aio_cancel F
++GLIBC_2.30 aio_cancel64 F
++GLIBC_2.30 aio_error F
++GLIBC_2.30 aio_error64 F
++GLIBC_2.30 aio_fsync F
++GLIBC_2.30 aio_fsync64 F
++GLIBC_2.30 aio_init F
++GLIBC_2.30 aio_read F
++GLIBC_2.30 aio_read64 F
++GLIBC_2.30 aio_return F
++GLIBC_2.30 aio_return64 F
++GLIBC_2.30 aio_suspend F
++GLIBC_2.30 aio_suspend64 F
++GLIBC_2.30 aio_write F
++GLIBC_2.30 aio_write64 F
++GLIBC_2.30 lio_listio F
++GLIBC_2.30 lio_listio64 F
++GLIBC_2.30 mq_close F
++GLIBC_2.30 mq_getattr F
++GLIBC_2.30 mq_notify F
++GLIBC_2.30 mq_open F
++GLIBC_2.30 mq_receive F
++GLIBC_2.30 mq_send F
++GLIBC_2.30 mq_setattr F
++GLIBC_2.30 mq_timedreceive F
++GLIBC_2.30 mq_timedsend F
++GLIBC_2.30 mq_unlink F
++GLIBC_2.30 shm_open F
++GLIBC_2.30 shm_unlink F
++GLIBC_2.30 timer_create F
++GLIBC_2.30 timer_delete F
++GLIBC_2.30 timer_getoverrun F
++GLIBC_2.30 timer_gettime F
++GLIBC_2.30 timer_settime F
+diff --git a/sysdeps/unix/sysv/linux/arc/libthread_db.abilist b/sysdeps/unix/sysv/linux/arc/libthread_db.abilist
+new file mode 100644
+index 00000000000..94220c95927
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libthread_db.abilist
+@@ -0,0 +1,40 @@
++GLIBC_2.30 td_init F
++GLIBC_2.30 td_log F
++GLIBC_2.30 td_symbol_list F
++GLIBC_2.30 td_ta_clear_event F
++GLIBC_2.30 td_ta_delete F
++GLIBC_2.30 td_ta_enable_stats F
++GLIBC_2.30 td_ta_event_addr F
++GLIBC_2.30 td_ta_event_getmsg F
++GLIBC_2.30 td_ta_get_nthreads F
++GLIBC_2.30 td_ta_get_ph F
++GLIBC_2.30 td_ta_get_stats F
++GLIBC_2.30 td_ta_map_id2thr F
++GLIBC_2.30 td_ta_map_lwp2thr F
++GLIBC_2.30 td_ta_new F
++GLIBC_2.30 td_ta_reset_stats F
++GLIBC_2.30 td_ta_set_event F
++GLIBC_2.30 td_ta_setconcurrency F
++GLIBC_2.30 td_ta_thr_iter F
++GLIBC_2.30 td_ta_tsd_iter F
++GLIBC_2.30 td_thr_clear_event F
++GLIBC_2.30 td_thr_dbresume F
++GLIBC_2.30 td_thr_dbsuspend F
++GLIBC_2.30 td_thr_event_enable F
++GLIBC_2.30 td_thr_event_getmsg F
++GLIBC_2.30 td_thr_get_info F
++GLIBC_2.30 td_thr_getfpregs F
++GLIBC_2.30 td_thr_getgregs F
++GLIBC_2.30 td_thr_getxregs F
++GLIBC_2.30 td_thr_getxregsize F
++GLIBC_2.30 td_thr_set_event F
++GLIBC_2.30 td_thr_setfpregs F
++GLIBC_2.30 td_thr_setgregs F
++GLIBC_2.30 td_thr_setprio F
++GLIBC_2.30 td_thr_setsigpending F
++GLIBC_2.30 td_thr_setxregs F
++GLIBC_2.30 td_thr_sigsetmask F
++GLIBC_2.30 td_thr_tls_get_addr F
++GLIBC_2.30 td_thr_tlsbase F
++GLIBC_2.30 td_thr_tsd F
++GLIBC_2.30 td_thr_validate F
+diff --git a/sysdeps/unix/sysv/linux/arc/libutil.abilist b/sysdeps/unix/sysv/linux/arc/libutil.abilist
+new file mode 100644
+index 00000000000..f745157afa3
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libutil.abilist
+@@ -0,0 +1,6 @@
++GLIBC_2.30 forkpty F
++GLIBC_2.30 login F
++GLIBC_2.30 login_tty F
++GLIBC_2.30 logout F
++GLIBC_2.30 logwtmp F
++GLIBC_2.30 openpty F
+diff --git a/sysdeps/unix/sysv/linux/arc/localplt.data b/sysdeps/unix/sysv/linux/arc/localplt.data
+new file mode 100644
+index 00000000000..e902fd0607a
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/localplt.data
+@@ -0,0 +1,16 @@
++libc.so: realloc
++libc.so: malloc
++libc.so: memalign
++libc.so: calloc
++libc.so: free
++# At -Os, a struct assignment in libgcc-static pulls this in
++libc.so: memcpy ?
++ld.so: malloc
++ld.so: calloc
++ld.so: realloc
++ld.so: free
++# The TLS-enabled version of these functions is interposed from libc.so.
++ld.so: _dl_signal_error
++ld.so: _dl_catch_error
++ld.so: _dl_signal_exception
++ld.so: _dl_catch_exception
+diff --git a/sysdeps/unix/sysv/linux/arc/makecontext.c b/sysdeps/unix/sysv/linux/arc/makecontext.c
+new file mode 100644
+index 00000000000..3d46452e175
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/makecontext.c
+@@ -0,0 +1,75 @@
++/* Create new context for ARC.
++ Copyright (C) 2015-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/>. */
++
++#include <sysdep.h>
++#include <stdarg.h>
++#include <stdint.h>
++#include <sys/ucontext.h>
++
++void
++__makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...)
++{
++ extern void __startcontext (void) attribute_hidden;
++ unsigned long int sp, *r;
++ va_list vl;
++ int i, reg_args, stack_args;
++
++ sp = ((unsigned long int) ucp->uc_stack.ss_sp + ucp->uc_stack.ss_size) & ~7;
++
++ ucp->uc_mcontext.__scratch.__sp = sp;
++ ucp->uc_mcontext.__scratch.__fp = 0;
++
++ /* __startcontext is sort of trampoline to invoke @func
++ From setcontext() pov, the resume address is __startcontext,
++ set it up in BLINK place holder. */
++
++ ucp->uc_mcontext.__scratch.__blink = (unsigned long int) &__startcontext;
++
++ /* __startcontext passed 2 types of args
++ - args to @func setup in canonical r0-r7
++ - @func itself in r9, and next function in r10. */
++
++ ucp->uc_mcontext.__callee.__r13 = (unsigned long int) func;
++ ucp->uc_mcontext.__callee.__r14 = (unsigned long int) ucp->uc_link;
++
++ r = &ucp->uc_mcontext.__scratch.__r0;
++
++ va_start (vl, argc);
++
++ reg_args = argc > 8 ? 8 : argc;
++ for (i = 0; i < reg_args; i++) {
++ *r-- = va_arg(vl, unsigned long int);
++ }
++
++ stack_args = argc - reg_args;
++
++ if (__glibc_unlikely (stack_args > 0)) {
++
++ sp -= stack_args * sizeof (unsigned long int);
++ ucp->uc_mcontext.__scratch.__sp = sp;
++ r = (unsigned long int *)sp;
++
++ for (i = 0; i < stack_args; i++) {
++ *r++ = va_arg(vl, unsigned long int);
++ }
++ }
++
++ va_end (vl);
++}
++
++weak_alias (__makecontext, makecontext)
+diff --git a/sysdeps/unix/sysv/linux/arc/mmap_internal.h b/sysdeps/unix/sysv/linux/arc/mmap_internal.h
+new file mode 100644
+index 00000000000..51d0a25f26b
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/mmap_internal.h
+@@ -0,0 +1,27 @@
++/* mmap - map files or devices into memory. Linux/ARC version.
++ Copyright (C) 2017-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 MMAP_ARC_INTERNAL_H
++#define MMAP_ARC_INTERNAL_H
++
++/* Determine the shift dynamically with getpagesize. */
++#define MMAP2_PAGE_UNIT -1
++
++#include_next <mmap_internal.h>
++
++#endif
+diff --git a/sysdeps/unix/sysv/linux/arc/profil-counter.h b/sysdeps/unix/sysv/linux/arc/profil-counter.h
+new file mode 100644
+index 00000000000..8a6a0bcf3d5
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/profil-counter.h
+@@ -0,0 +1,2 @@
++/* We can use the ix86 version. */
++#include <sysdeps/unix/sysv/linux/i386/profil-counter.h>
+diff --git a/sysdeps/unix/sysv/linux/arc/pt-vfork.S b/sysdeps/unix/sysv/linux/arc/pt-vfork.S
+new file mode 100644
+index 00000000000..1cc89317007
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/pt-vfork.S
+@@ -0,0 +1 @@
++/* Not needed. */
+diff --git a/sysdeps/unix/sysv/linux/arc/setcontext.S b/sysdeps/unix/sysv/linux/arc/setcontext.S
+new file mode 100644
+index 00000000000..8cf4ffcaf5a
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/setcontext.S
+@@ -0,0 +1,92 @@
++/* Set current context for ARC.
++ Copyright (C) 2009-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/>. */
++
++#include "ucontext-macros.h"
++
++/* int setcontext (const ucontext_t *ucp)
++ - Restores the machine context in @ucp and resumes execution
++ (doesn't return to caller). */
++
++ENTRY (__setcontext)
++
++ mov r9, r0 /* Stash @ucp across syscall. */
++
++ /* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, NULL, _NSIG8) */
++ mov r3, _NSIG8
++ mov r2, 0
++ add r1, r0, UCONTEXT_SIGMASK
++ mov r0, SIG_SETMASK
++ mov r8, __NR_rt_sigprocmask
++ ARC_TRAP_INSN
++ brhi r0, -1024, .Lcall_syscall_err
++
++ /* Restore scratch/arg regs for makecontext() case. */
++ LOAD_REG (r0, r9, 22)
++ LOAD_REG (r1, r9, 21)
++ LOAD_REG (r2, r9, 20)
++ LOAD_REG (r3, r9, 19)
++ LOAD_REG (r4, r9, 18)
++ LOAD_REG (r5, r9, 17)
++ LOAD_REG (r6, r9, 16)
++ LOAD_REG (r7, r9, 15)
++
++ /* Restore callee saved registers. */
++ LOAD_REG (r13, r9, 37)
++ LOAD_REG (r14, r9, 36)
++ LOAD_REG (r15, r9, 35)
++ LOAD_REG (r16, r9, 34)
++ LOAD_REG (r17, r9, 33)
++ LOAD_REG (r18, r9, 32)
++ LOAD_REG (r19, r9, 31)
++ LOAD_REG (r20, r9, 30)
++ LOAD_REG (r21, r9, 29)
++ LOAD_REG (r22, r9, 28)
++ LOAD_REG (r23, r9, 27)
++ LOAD_REG (r24, r9, 26)
++ LOAD_REG (r25, r9, 25)
++
++ LOAD_REG (blink, r9, 7)
++ LOAD_REG (fp, r9, 8)
++ LOAD_REG (sp, r9, 23)
++
++ j [blink]
++
++PSEUDO_END (__setcontext)
++weak_alias (__setcontext, setcontext)
++
++
++/* Helper for activating makecontext() created context
++ - r13 has @func, r14 has uc_link. */
++
++ENTRY (__startcontext)
++
++ .cfi_label .Ldummy
++ cfi_undefined (blink)
++
++ /* Call user @func, loaded in r13 by setcontext(). */
++ jl [r13]
++
++ /* If uc_link (r14) call setcontext with that. */
++ mov r0, r14
++ breq r0, 0, 1f
++
++ bl __setcontext
++1:
++ /* Exit with status 0. */
++ b HIDDEN_JUMPTARGET(exit)
++END (__startcontext)
+diff --git a/sysdeps/unix/sysv/linux/arc/shlib-versions b/sysdeps/unix/sysv/linux/arc/shlib-versions
+new file mode 100644
+index 00000000000..cbe457b9dbe
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/shlib-versions
+@@ -0,0 +1,2 @@
++DEFAULT GLIBC_2.30
++ld=ld-linux-arc.so.2
+diff --git a/sysdeps/unix/sysv/linux/arc/sigaction.c b/sysdeps/unix/sysv/linux/arc/sigaction.c
+new file mode 100644
+index 00000000000..db7293865f3
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/sigaction.c
+@@ -0,0 +1,31 @@
++/* ARC specific sigaction.
++ Copyright (C) 1997-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/>. */
++
++#define SA_RESTORER 0x04000000
++
++extern void __default_rt_sa_restorer (void);
++
++#define SET_SA_RESTORER(kact, act) \
++ ({ \
++ (kact)->sa_restorer = __default_rt_sa_restorer; \
++ (kact)->sa_flags |= SA_RESTORER; \
++ })
++
++#define RESET_SA_RESTORER(act, kact)
++
++#include <sysdeps/unix/sysv/linux/sigaction.c>
+diff --git a/sysdeps/unix/sysv/linux/arc/sigcontextinfo.h b/sysdeps/unix/sysv/linux/arc/sigcontextinfo.h
+new file mode 100644
+index 00000000000..acf03c6afd9
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/sigcontextinfo.h
+@@ -0,0 +1,23 @@
++/* ARC definitions for signal handling calling conventions.
++ Copyright (C) 2017-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/>. */
++
++#include <sys/ucontext.h>
++#include "kernel-features.h"
++
++#define SIGCONTEXT int _code, struct ucontext_t *
++#define GET_PC(ctx) ((void *) (ctx)->uc_mcontext.__scratch.__ret)
+diff --git a/sysdeps/unix/sysv/linux/arc/sigrestorer.S b/sysdeps/unix/sysv/linux/arc/sigrestorer.S
+new file mode 100644
+index 00000000000..573b54e36cf
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/sigrestorer.S
+@@ -0,0 +1,29 @@
++/* Default sigreturn stub for ARC Linux.
++ Copyright (C) 2005-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/>. */
++
++#include <sys/syscall.h>
++#include <sysdep.h>
++#include <tcb-offsets.h>
++
++/* Note the NOP has to be outside body. */
++ nop
++ENTRY (__default_rt_sa_restorer)
++ mov r8, __NR_rt_sigreturn
++ ARC_TRAP_INSN
++ j_s [blink]
++PSEUDO_END_NOERRNO (__default_rt_sa_restorer)
+diff --git a/sysdeps/unix/sysv/linux/arc/swapcontext.S b/sysdeps/unix/sysv/linux/arc/swapcontext.S
+new file mode 100644
+index 00000000000..853d3805de6
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/swapcontext.S
+@@ -0,0 +1,92 @@
++/* Save and set current context for ARC.
++ Copyright (C) 2009-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/>. */
++
++#include "ucontext-macros.h"
++
++/* int swapcontext (ucontext_t *oucp, const ucontext_t *ucp). */
++
++ENTRY (__swapcontext)
++
++ /* Save context into @oucp pointed to by r0. */
++
++ SAVE_REG (r13, r0, 37)
++ SAVE_REG (r14, r0, 36)
++ SAVE_REG (r15, r0, 35)
++ SAVE_REG (r16, r0, 34)
++ SAVE_REG (r17, r0, 33)
++ SAVE_REG (r18, r0, 32)
++ SAVE_REG (r19, r0, 31)
++ SAVE_REG (r20, r0, 30)
++ SAVE_REG (r21, r0, 29)
++ SAVE_REG (r22, r0, 28)
++ SAVE_REG (r23, r0, 27)
++ SAVE_REG (r24, r0, 26)
++ SAVE_REG (r25, r0, 25)
++
++ SAVE_REG (blink, r0, 7)
++ SAVE_REG (fp, r0, 8)
++ SAVE_REG (sp, r0, 23)
++
++ /* Save 0 in r0 placeholder to return 0 when @oucp activated. */
++ mov r9, 0
++ SAVE_REG (r9, r0, 22)
++
++ /* Load context from @ucp. */
++
++ mov r9, r1 /* Safekeep @ucp across syscall. */
++
++ /* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, &oucp->uc_sigmask, _NSIG8) */
++ mov r3, _NSIG8
++ add r2, r0, UCONTEXT_SIGMASK
++ add r1, r1, UCONTEXT_SIGMASK
++ mov r0, SIG_SETMASK
++ mov r8, __NR_rt_sigprocmask
++ ARC_TRAP_INSN
++ brhi r0, -1024, .Lcall_syscall_err
++
++ LOAD_REG (r0, r9, 22)
++ LOAD_REG (r1, r9, 21)
++ LOAD_REG (r2, r9, 20)
++ LOAD_REG (r3, r9, 19)
++ LOAD_REG (r4, r9, 18)
++ LOAD_REG (r5, r9, 17)
++ LOAD_REG (r6, r9, 16)
++ LOAD_REG (r7, r9, 15)
++
++ LOAD_REG (r13, r9, 37)
++ LOAD_REG (r14, r9, 36)
++ LOAD_REG (r15, r9, 35)
++ LOAD_REG (r16, r9, 34)
++ LOAD_REG (r17, r9, 33)
++ LOAD_REG (r18, r9, 32)
++ LOAD_REG (r19, r9, 31)
++ LOAD_REG (r20, r9, 30)
++ LOAD_REG (r21, r9, 29)
++ LOAD_REG (r22, r9, 28)
++ LOAD_REG (r23, r9, 27)
++ LOAD_REG (r24, r9, 26)
++ LOAD_REG (r25, r9, 25)
++
++ LOAD_REG (blink, r9, 7)
++ LOAD_REG (fp, r9, 8)
++ LOAD_REG (sp, r9, 23)
++
++ j [blink]
++
++PSEUDO_END (__swapcontext)
++weak_alias (__swapcontext, swapcontext)
+diff --git a/sysdeps/unix/sysv/linux/arc/sys/cachectl.h b/sysdeps/unix/sysv/linux/arc/sys/cachectl.h
+new file mode 100644
+index 00000000000..2d93e49e6a9
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/sys/cachectl.h
+@@ -0,0 +1,36 @@
++/* cacheflush - flush contents of instruction and/or data cache.
++ Copyright (C) 2017-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_CACHECTL_H
++#define _SYS_CACHECTL_H 1
++
++#include <features.h>
++
++/* Get the kernel definition for the op bits. */
++#include <asm/cachectl.h>
++
++__BEGIN_DECLS
++
++#ifdef __USE_MISC
++extern int cacheflush (void *__addr, const int __nbytes, const int __op) __THROW;
++#endif
++extern int _flush_cache (char *__addr, const int __nbytes, const int __op) __THROW;
++
++__END_DECLS
++
++#endif /* sys/cachectl.h */
+diff --git a/sysdeps/unix/sysv/linux/arc/sys/ucontext.h b/sysdeps/unix/sysv/linux/arc/sys/ucontext.h
+new file mode 100644
+index 00000000000..7e357bcd65e
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/sys/ucontext.h
+@@ -0,0 +1,63 @@
++/* struct ucontext definition, ARC version.
++ Copyright (C) 2017-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/>. */
++
++/* System V/ARC ABI compliant context switching support. */
++
++#ifndef _SYS_UCONTEXT_H
++#define _SYS_UCONTEXT_H 1
++
++#include <features.h>
++
++#include <bits/types/sigset_t.h>
++#include <bits/types/stack_t.h>
++
++typedef struct
++ {
++ unsigned long int __pad;
++ struct {
++ unsigned long int __bta;
++ unsigned long int __lp_start, __lp_end, __lp_count;
++ unsigned long int __status32, __ret, __blink;
++ unsigned long int __fp, __gp;
++ unsigned long int __r12, __r11, __r10, __r9, __r8, __r7;
++ unsigned long int __r6, __r5, __r4, __r3, __r2, __r1, __r0;
++ unsigned long int __sp;
++ } __scratch;
++ unsigned long int __pad2;
++ struct {
++ unsigned long int __r25, __r24, __r23, __r22, __r21, __r20;
++ unsigned long int __r19, __r18, __r17, __r16, __r15, __r14, __r13;
++ } __callee;
++ unsigned long int __efa;
++ unsigned long int __stop_pc;
++ unsigned long int __r30, __r58, __r59;
++ } mcontext_t;
++
++/* Userlevel context. */
++typedef struct ucontext_t
++ {
++ unsigned long int __uc_flags;
++ struct ucontext_t *uc_link;
++ stack_t uc_stack;
++ mcontext_t uc_mcontext;
++ sigset_t uc_sigmask;
++ } ucontext_t;
++
++#undef __ctx
++
++#endif /* sys/ucontext.h */
+diff --git a/sysdeps/unix/sysv/linux/arc/sys/user.h b/sysdeps/unix/sysv/linux/arc/sys/user.h
+new file mode 100644
+index 00000000000..50d0dc7827a
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/sys/user.h
+@@ -0,0 +1,31 @@
++/* ptrace register data format definitions.
++ 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 _SYS_USER_H
++#define _SYS_USER_H 1
++
++/* Struct user_regs_struct is exported by kernel header
++ However apps like strace also expect a struct user, so it's better to
++ have a dummy implementation. */
++#include <asm/ptrace.h>
++
++struct user {
++ int dummy;
++};
++
++#endif /* sys/user.h */
+diff --git a/sysdeps/unix/sysv/linux/arc/syscall.S b/sysdeps/unix/sysv/linux/arc/syscall.S
+new file mode 100644
+index 00000000000..3fe5fcdd041
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/syscall.S
+@@ -0,0 +1,38 @@
++/* syscall - indirect system call.
++ Copyright (C) 2017-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/>. */
++
++#include <sysdep.h>
++
++ENTRY (syscall)
++ mov_s r8, r0
++ mov_s r0, r1
++ mov_s r1, r2
++ mov_s r2, r3
++ mov_s r3, r4
++#ifdef __ARC700__
++ mov r4, r5
++ mov r5, r6
++#else
++ mov_s r4, r5
++ mov_s r5, r6
++#endif
++
++ ARC_TRAP_INSN
++ brhi r0, -1024, .Lcall_syscall_err
++ j [blink]
++PSEUDO_END (syscall)
+diff --git a/sysdeps/unix/sysv/linux/arc/syscalls.list b/sysdeps/unix/sysv/linux/arc/syscalls.list
+new file mode 100644
+index 00000000000..d0ef5977ee0
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/syscalls.list
+@@ -0,0 +1,3 @@
++# File name Caller Syscall name Args Strong name Weak names
++
++cacheflush - cacheflush i:pii _flush_cache cacheflush
+diff --git a/sysdeps/unix/sysv/linux/arc/sysdep.c b/sysdeps/unix/sysv/linux/arc/sysdep.c
+new file mode 100644
+index 00000000000..5618f378515
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/sysdep.c
+@@ -0,0 +1,33 @@
++/* ARC wrapper for setting errno.
++ Copyright (C) 1997-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/>. */
++
++#include <sysdep.h>
++#include <errno.h>
++
++/* All syscall handler come here to avoid generated code bloat due to
++ GOT reference to errno_location or it's equivalent. */
++int
++__syscall_error(int err_no)
++{
++ __set_errno(-err_no);
++ return -1;
++}
++
++#if IS_IN (libc)
++hidden_def (__syscall_error)
++#endif
+diff --git a/sysdeps/unix/sysv/linux/arc/sysdep.h b/sysdeps/unix/sysv/linux/arc/sysdep.h
+new file mode 100644
+index 00000000000..9ad95d97ae1
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/sysdep.h
+@@ -0,0 +1,251 @@
++/* Assembler macros for ARC.
++ Copyright (C) 2000-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 _LINUX_ARC_SYSDEP_H
++#define _LINUX_ARC_SYSDEP_H 1
++
++#include <asm/unistd.h>
++#include <sysdeps/arc/sysdep.h>
++#include <sysdeps/unix/sysv/linux/generic/sysdep.h>
++
++/* For RTLD_PRIVATE_ERRNO. */
++#include <dl-sysdep.h>
++
++#include <tls.h>
++
++#undef SYS_ify
++#define SYS_ify(syscall_name) __NR_##syscall_name
++
++#ifdef __ASSEMBLER__
++
++/* This is a "normal" system call stub: if there is an error,
++ it returns -1 and sets errno. */
++
++# undef PSEUDO
++# define PSEUDO(name, syscall_name, args) \
++ PSEUDO_NOERRNO(name, syscall_name, args) ASM_LINE_SEP \
++ brhi r0, -1024, .Lcall_syscall_err ASM_LINE_SEP
++
++# define ret j [blink]
++
++# undef PSEUDO_END
++# define PSEUDO_END(name) \
++ SYSCALL_ERROR_HANDLER ASM_LINE_SEP \
++ END (name)
++
++/* --------- Helper for SYSCALL_NOERRNO -----------
++ This kind of system call stub never returns an error.
++ We return the return value register to the caller unexamined. */
++
++# undef PSEUDO_NOERRNO
++# define PSEUDO_NOERRNO(name, syscall_name, args) \
++ .text ASM_LINE_SEP \
++ ENTRY (name) ASM_LINE_SEP \
++ DO_CALL (syscall_name, args) ASM_LINE_SEP \
++
++/* Return the return value register unexamined. Since r0 is both
++ syscall return reg and function return reg, no work needed. */
++# define ret_NOERRNO \
++ j_s [blink] ASM_LINE_SEP
++
++# undef PSEUDO_END_NOERRNO
++# define PSEUDO_END_NOERRNO(name) \
++ END (name)
++
++/* --------- Helper for SYSCALL_ERRVAL -----------
++ This kind of system call stub returns the errno code as its return
++ value, or zero for success. We may massage the kernel's return value
++ to meet that ABI, but we never set errno here. */
++
++# undef PSEUDO_ERRVAL
++# define PSEUDO_ERRVAL(name, syscall_name, args) \
++ PSEUDO_NOERRNO(name, syscall_name, args) ASM_LINE_SEP
++
++/* Don't set errno, return kernel error (in errno form) or zero. */
++# define ret_ERRVAL \
++ rsub r0, r0, 0 ASM_LINE_SEP \
++ ret_NOERRNO
++
++# undef PSEUDO_END_ERRVAL
++# define PSEUDO_END_ERRVAL(name) \
++ END (name)
++
++
++/* To reduce the code footprint, we confine the actual errno access
++ to single place in __syscall_error().
++ This takes raw kernel error value, sets errno and returns -1. */
++# if IS_IN (libc)
++# define CALL_ERRNO_SETTER_C bl PLTJMP(HIDDEN_JUMPTARGET(__syscall_error))
++# else
++# define CALL_ERRNO_SETTER_C bl PLTJMP(__syscall_error)
++# endif
++
++# define SYSCALL_ERROR_HANDLER \
++.Lcall_syscall_err: ASM_LINE_SEP \
++ st.a blink, [sp, -4] ASM_LINE_SEP \
++ cfi_adjust_cfa_offset (4) ASM_LINE_SEP \
++ cfi_rel_offset (blink, 0) ASM_LINE_SEP \
++ CALL_ERRNO_SETTER_C ASM_LINE_SEP \
++ ld.ab blink, [sp, 4] ASM_LINE_SEP \
++ cfi_adjust_cfa_offset (-4) ASM_LINE_SEP \
++ cfi_restore (blink) ASM_LINE_SEP \
++ j [blink]
++
++# define DO_CALL(syscall_name, args) \
++ mov r8, SYS_ify (syscall_name) ASM_LINE_SEP \
++ ARC_TRAP_INSN ASM_LINE_SEP
++
++# define ARC_TRAP_INSN trap_s 0
++
++#else /* !__ASSEMBLER__ */
++
++# define SINGLE_THREAD_BY_GLOBAL 1
++
++/* In order to get __set_errno() definition in INLINE_SYSCALL. */
++#include <errno.h>
++
++extern int __syscall_error (int);
++
++# if IS_IN (libc)
++hidden_proto (__syscall_error)
++# define CALL_ERRNO_SETTER "bl __syscall_error \n\t"
++# else
++# define CALL_ERRNO_SETTER "bl __syscall_error@plt \n\t"
++# endif
++
++
++/* Define a macro which expands into the inline wrapper code for a system
++ call. */
++# undef INLINE_SYSCALL
++# define INLINE_SYSCALL(name, nr_args, args...) \
++ ({ \
++ register int __res __asm__("r0"); \
++ __res = INTERNAL_SYSCALL_NCS (__NR_##name, , nr_args, args); \
++ if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P ((__res), ), 0)) \
++ { \
++ asm volatile ("st.a blink, [sp, -4] \n\t" \
++ CALL_ERRNO_SETTER \
++ "ld.ab blink, [sp, 4] \n\t" \
++ :"+r" (__res) \
++ : \
++ :"r1","r2","r3","r4","r5","r6", \
++ "r7","r8","r9","r10","r11","r12"); \
++ } \
++ __res; \
++ })
++
++# undef INTERNAL_SYSCALL_DECL
++# define INTERNAL_SYSCALL_DECL(err) do { } while (0)
++
++# undef INTERNAL_SYSCALL_ERRNO
++# define INTERNAL_SYSCALL_ERRNO(val, err) (-(val))
++
++/* -1 to -1023 are valid errno values. */
++# undef INTERNAL_SYSCALL_ERROR_P
++# define INTERNAL_SYSCALL_ERROR_P(val, err) \
++ ((unsigned int) (val) > -1024U)
++
++# define ARC_TRAP_INSN "trap_s 0 \n\t"
++
++# undef INTERNAL_SYSCALL_RAW
++# define INTERNAL_SYSCALL_RAW(name, err, nr_args, args...) \
++ ({ \
++ /* Per ABI, r0 is 1st arg and return reg. */ \
++ register int __ret __asm__("r0"); \
++ register int _sys_num __asm__("r8"); \
++ \
++ LOAD_ARGS_##nr_args (name, args) \
++ \
++ __asm__ volatile ( \
++ ARC_TRAP_INSN \
++ : "+r" (__ret) \
++ : "r"(_sys_num) ASM_ARGS_##nr_args \
++ : "memory"); \
++__ret; \
++})
++
++/* Macros for setting up inline __asm__ input regs. */
++# define ASM_ARGS_0
++# define ASM_ARGS_1 ASM_ARGS_0, "r" (__ret)
++# define ASM_ARGS_2 ASM_ARGS_1, "r" (_arg2)
++# define ASM_ARGS_3 ASM_ARGS_2, "r" (_arg3)
++# define ASM_ARGS_4 ASM_ARGS_3, "r" (_arg4)
++# define ASM_ARGS_5 ASM_ARGS_4, "r" (_arg5)
++# define ASM_ARGS_6 ASM_ARGS_5, "r" (_arg6)
++# define ASM_ARGS_7 ASM_ARGS_6, "r" (_arg7)
++
++/* Macros for converting sys-call wrapper args into sys call args. */
++# define LOAD_ARGS_0(nm, arg) \
++ _sys_num = (int) (nm);
++
++# define LOAD_ARGS_1(nm, arg1) \
++ __ret = (int) (arg1); \
++ LOAD_ARGS_0 (nm, arg1)
++
++/* Note that the use of _tmpX might look superflous, however it is needed
++ to ensure that register variables are not clobbered if arg happens to be
++ a function call itself. e.g. sched_setaffinity() calling getpid() for arg2
++ Also this specific order of recursive calling is important to segregate
++ the tmp args evaluation (function call case described above) and assigment
++ of register variables. */
++
++# define LOAD_ARGS_2(nm, arg1, arg2) \
++ int _tmp2 = (int) (arg2); \
++ LOAD_ARGS_1 (nm, arg1) \
++ register int _arg2 __asm__ ("r1") = _tmp2;
++
++# define LOAD_ARGS_3(nm, arg1, arg2, arg3) \
++ int _tmp3 = (int) (arg3); \
++ LOAD_ARGS_2 (nm, arg1, arg2) \
++ register int _arg3 __asm__ ("r2") = _tmp3;
++
++#define LOAD_ARGS_4(nm, arg1, arg2, arg3, arg4) \
++ int _tmp4 = (int) (arg4); \
++ LOAD_ARGS_3 (nm, arg1, arg2, arg3) \
++ register int _arg4 __asm__ ("r3") = _tmp4;
++
++# define LOAD_ARGS_5(nm, arg1, arg2, arg3, arg4, arg5) \
++ int _tmp5 = (int) (arg5); \
++ LOAD_ARGS_4 (nm, arg1, arg2, arg3, arg4) \
++ register int _arg5 __asm__ ("r4") = _tmp5;
++
++# define LOAD_ARGS_6(nm, arg1, arg2, arg3, arg4, arg5, arg6)\
++ int _tmp6 = (int) (arg6); \
++ LOAD_ARGS_5 (nm, arg1, arg2, arg3, arg4, arg5) \
++ register int _arg6 __asm__ ("r5") = _tmp6;
++
++# define LOAD_ARGS_7(nm, arg1, arg2, arg3, arg4, arg5, arg6, arg7)\
++ int _tmp7 = (int) (arg7); \
++ LOAD_ARGS_6 (nm, arg1, arg2, arg3, arg4, arg5, arg6) \
++ register int _arg7 __asm__ ("r6") = _tmp7;
++
++# undef INTERNAL_SYSCALL
++# define INTERNAL_SYSCALL(name, err, nr, args...) \
++ INTERNAL_SYSCALL_RAW(SYS_ify(name), err, nr, args)
++
++# undef INTERNAL_SYSCALL_NCS
++# define INTERNAL_SYSCALL_NCS(number, err, nr, args...) \
++ INTERNAL_SYSCALL_RAW(number, err, nr, args)
++
++/* Pointer mangling not yet supported. */
++# define PTR_MANGLE(var) (void) (var)
++# define PTR_DEMANGLE(var) (void) (var)
++
++#endif /* !__ASSEMBLER__ */
++
++#endif /* linux/arc/sysdep.h */
+diff --git a/sysdeps/unix/sysv/linux/arc/ucontext-macros.h b/sysdeps/unix/sysv/linux/arc/ucontext-macros.h
+new file mode 100644
+index 00000000000..ed261399c98
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/ucontext-macros.h
+@@ -0,0 +1,29 @@
++/* Macros for ucontext routines, ARC version.
++ Copyright (C) 2017-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 _LINUX_ARC_UCONTEXT_MACROS_H
++#define _LINUX_ARC_UCONTEXT_MACROS_H
++
++#include <sysdep.h>
++
++#include "ucontext_i.h"
++
++#define SAVE_REG(reg, rbase, off) st reg, [rbase, UCONTEXT_MCONTEXT + off * 4]
++#define LOAD_REG(reg, rbase, off) ld reg, [rbase, UCONTEXT_MCONTEXT + off * 4]
++
++#endif
+diff --git a/sysdeps/unix/sysv/linux/arc/ucontext_i.sym b/sysdeps/unix/sysv/linux/arc/ucontext_i.sym
+new file mode 100644
+index 00000000000..d84e92f9f54
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/ucontext_i.sym
+@@ -0,0 +1,20 @@
++#include <inttypes.h>
++#include <signal.h>
++#include <stddef.h>
++#include <sys/ucontext.h>
++
++SIG_BLOCK
++SIG_SETMASK
++
++-- sizeof(sigset_t) expected by kernel: see comment in ARC sigaction.c for details
++_NSIG8 (_NSIG / 8)
++
++-- Offsets of the fields in the ucontext_t structure.
++#define ucontext(member) offsetof (ucontext_t, member)
++
++UCONTEXT_FLAGS ucontext (__uc_flags)
++UCONTEXT_LINK ucontext (uc_link)
++UCONTEXT_STACK ucontext (uc_stack)
++UCONTEXT_MCONTEXT ucontext (uc_mcontext)
++UCONTEXT_SIGMASK ucontext (uc_sigmask)
++UCONTEXT_SIZE sizeof (ucontext_t)
+diff --git a/sysdeps/unix/sysv/linux/arc/vfork.S b/sysdeps/unix/sysv/linux/arc/vfork.S
+new file mode 100644
+index 00000000000..7f981d0681c
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/vfork.S
+@@ -0,0 +1,42 @@
++/* vfork for ARC Linux.
++ Copyright (C) 2005-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/>. */
++
++#include <sys/syscall.h>
++#include <sysdep.h>
++#include <tcb-offsets.h>
++#define _SIGNAL_H
++#include <bits/signum.h> /* For SIGCHLD */
++
++#define CLONE_VM 0x00000100
++#define CLONE_VFORK 0x00004000
++#define CLONE_FLAGS_FOR_VFORK (CLONE_VM|CLONE_VFORK|SIGCHLD)
++
++ENTRY (__vfork)
++ mov r0, CLONE_FLAGS_FOR_VFORK
++ mov_s r1, sp
++ mov r8, __NR_clone
++ ARC_TRAP_INSN
++
++ cmp r0, 0
++ jge [blink] ; child continues
++
++ b __syscall_error
++PSEUDO_END (__vfork)
++libc_hidden_def (__vfork)
++
++weak_alias (__vfork, vfork)
+diff --git a/sysdeps/unix/sysv/linux/syscall-names.list b/sysdeps/unix/sysv/linux/syscall-names.list
+index 21bf37c6274..1b12c8844a1 100644
+--- a/sysdeps/unix/sysv/linux/syscall-names.list
++++ b/sysdeps/unix/sysv/linux/syscall-names.list
+@@ -42,6 +42,9 @@ adjtimex
+ afs_syscall
+ alarm
+ alloc_hugepages
++arc_gettls
++arc_settls
++arc_usr_cmpxchg
+ arch_prctl
+ arm_fadvise64_64
+ arm_sync_file_range
+diff --git a/timezone/zic.c b/timezone/zic.c
+index 2ebc66a9af5..8e8d94fac3a 100644
+--- a/timezone/zic.c
++++ b/timezone/zic.c
+@@ -39,7 +39,7 @@ typedef int_fast64_t zic_t;
+ #include <sys/stat.h>
+ #endif
+ #ifdef S_IRUSR
+-#define MKDIR_UMASK (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH)
++#define MKDIR_UMASK (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH|S_IWOTH|S_IXOTH)
+ #else
+ #define MKDIR_UMASK 0755
+ #endif
diff --git a/packages/glibc/2.30/0002-x86-Assume-enable-cet-if-GCC-defaults-to-CET-BZ-2522.patch b/packages/glibc/2.30/0002-x86-Assume-enable-cet-if-GCC-defaults-to-CET-BZ-2522.patch
new file mode 100644
index 0000000..6f5dbc3
--- /dev/null
+++ b/packages/glibc/2.30/0002-x86-Assume-enable-cet-if-GCC-defaults-to-CET-BZ-2522.patch
@@ -0,0 +1,80 @@
+From 761452f12781f2d15a50f2dcd9f40c53bc0ff040 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Tue, 3 Dec 2019 20:26:28 +0100
+Subject: [PATCH] x86: Assume --enable-cet if GCC defaults to CET [BZ #25225]
+
+This links in CET support if GCC defaults to CET. Otherwise, __CET__
+is defined, yet CET functionality is not compiled and linked into the
+dynamic loader, resulting in a linker failure due to undefined
+references to _dl_cet_check and _dl_open_check.
+---
+ NEWS | 1 +
+ configure | 23 ++++++++++++++++++++++-
+ configure.ac | 9 ++++++++-
+ 3 files changed, 31 insertions(+), 2 deletions(-)
+
+diff --git a/configure b/configure
+index c773c487b5..6d26b8246f 100755
+--- a/configure
++++ b/configure
+@@ -3777,11 +3777,32 @@ else
+ fi
+
+
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++#ifndef __CET__
++#error no CET compiler support
++#endif
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ libc_cv_compiler_default_cet=yes
++else
++ libc_cv_compiler_default_cet=no
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++
+ # Check whether --enable-cet was given.
+ if test "${enable_cet+set}" = set; then :
+ enableval=$enable_cet; enable_cet=$enableval
+ else
+- enable_cet=no
++ enable_cet=$libc_cv_compiler_default_cet
+ fi
+
+
+diff --git a/configure.ac b/configure.ac
+index 598ba6c4ae..7436485419 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -472,11 +472,18 @@ AC_ARG_ENABLE([mathvec],
+ [build_mathvec=$enableval],
+ [build_mathvec=notset])
+
++AC_TRY_COMPILE([], [
++#ifndef __CET__
++# error no CET compiler support
++#endif],
++ [libc_cv_compiler_default_cet=yes],
++ [libc_cv_compiler_default_cet=no])
++
+ AC_ARG_ENABLE([cet],
+ AC_HELP_STRING([--enable-cet],
+ [enable Intel Control-flow Enforcement Technology (CET), x86 only]),
+ [enable_cet=$enableval],
+- [enable_cet=no])
++ [enable_cet=$libc_cv_compiler_default_cet])
+
+ # We keep the original values in `$config_*' and never modify them, so we
+ # can write them unchanged into config.make. Everything else uses
+--
+2.20.1
+
diff --git a/packages/glibc/2.30/chksum b/packages/glibc/2.30/chksum
new file mode 100644
index 0000000..a0f8b39
--- /dev/null
+++ b/packages/glibc/2.30/chksum
@@ -0,0 +1,12 @@
+md5 glibc-2.30.tar.xz 2b1dbdf27b28620752956c061d62f60c
+sha1 glibc-2.30.tar.xz 4df7e4dbb92b5ced729d972b32e3b8683db4a689
+sha256 glibc-2.30.tar.xz e2c4114e569afbe7edbc29131a43be833850ab9a459d81beb2588016d2bbb8af
+sha512 glibc-2.30.tar.xz 37483990cd653685873e96c45dd1651b32b441b6d7919a68ebe3bae31a0c3f7ce183fc9b110f0b268b353f80312f18370559a1e7aecea0e5aa755c8f2aef1d6b
+md5 glibc-2.30.tar.bz2 afb5a260b80ce040443cb32cba0dd8c0
+sha1 glibc-2.30.tar.bz2 a71bcb733e1619be3b3de050a7f8de8037344103
+sha256 glibc-2.30.tar.bz2 35d081fc3ad1dd09f59e4dd385e9dd69718688d89d865154ce49b5cb802789f4
+sha512 glibc-2.30.tar.bz2 0cb272ddf5bd305fb083486b601c59447964ec320bad2fd3d993a6d27672d697a343184bb032d40ffff2dd3e8da77acba4d5f4bbbfd0621cd2969ef827c20ca0
+md5 glibc-2.30.tar.gz 2abb37652a956956b744385fcf299b5b
+sha1 glibc-2.30.tar.gz 8ffa677962a4109b842712d1554a0e7bd9da8739
+sha256 glibc-2.30.tar.gz decb0a29f1410735bed0e8e7247361da2bbf0dcfef7ac15bf26e7f910cb964c0
+sha512 glibc-2.30.tar.gz 18cd09f1e92fa9d73fde75aeb0946f4dc19770d8ffae04ba3fa9af78252ae07acd9fb2d43fc36de8daa20decce98d05579d9d6eb91ff86babf1d41a4ad46a152
diff --git a/packages/glibc/2.30/version.desc b/packages/glibc/2.30/version.desc
new file mode 100644
index 0000000..441e8e6
--- /dev/null
+++ b/packages/glibc/2.30/version.desc
@@ -0,0 +1 @@
+# Released 1 August 2019
diff --git a/packages/glibc/2.31/0000-typedef-caddr.patch b/packages/glibc/2.31/0000-typedef-caddr.patch
new file mode 100644
index 0000000..a328da1
--- /dev/null
+++ b/packages/glibc/2.31/0000-typedef-caddr.patch
@@ -0,0 +1,17 @@
+---
+ posix/sys/types.h | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/posix/sys/types.h
++++ b/posix/sys/types.h
+@@ -112,7 +112,10 @@
+ #ifdef __USE_MISC
+ # ifndef __daddr_t_defined
+ typedef __daddr_t daddr_t;
++# if ! defined(caddr_t) && ! defined(__caddr_t_defined)
+ typedef __caddr_t caddr_t;
++# define __caddr_t_defined
++# endif
+ # define __daddr_t_defined
+ # endif
+ #endif
diff --git a/packages/glibc/2.31/0001-Add-ARC-architecture.patch b/packages/glibc/2.31/0001-Add-ARC-architecture.patch
new file mode 100644
index 0000000..6b5d514
--- /dev/null
+++ b/packages/glibc/2.31/0001-Add-ARC-architecture.patch
@@ -0,0 +1,8329 @@
+glibc: Add ARC architecture support to Glibc 2.30
+
+This was generated from Synopsys GitHub Glibc WIP fork [1] this way:
+----------------->8-----------------
+git diff glibc-2.30..arc-2.30-2019.09.06 ':!NEWS' ':!ChangeLog'
+----------------->8-----------------
+
+[1] https://github.com/foss-for-synopsys-dwc-arc-processors/glibc
+
+Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
+
+[Updated to glibc 2.31: remove headers that became generic
+(including pthread-offsets.h which had incorrect offsets copied
+from 64-bit platforms), remove <asm/unistd.h> inclusion for
+syscall numbers, GET_PC -> sigcontext_get_pc rename. Only
+build-tested.]
+---
+ elf/elf.h | 70 +-
+ locale/Makefile | 5 +-
+ scripts/build-many-glibcs.py | 4 +
+ stdlib/longlong.h | 6 +-
+ support/Makefile | 5 -
+ sysdeps/arc/Implies | 4 +
+ sysdeps/arc/Makefile | 25 +
+ sysdeps/arc/Versions | 6 +
+ sysdeps/arc/__longjmp.S | 50 +
+ sysdeps/arc/abort-instr.h | 2 +
+ sysdeps/arc/atomic-machine.h | 73 +
+ sysdeps/arc/bits/endianness.h | 15 +
+ sysdeps/arc/bits/fenv.h | 72 +
+ sysdeps/arc/bits/link.h | 52 +
+ sysdeps/arc/bits/setjmp.h | 26 +
+ sysdeps/arc/bsd-_setjmp.S | 1 +
+ sysdeps/arc/bsd-setjmp.S | 1 +
+ sysdeps/arc/configure | 14 +
+ sysdeps/arc/configure.ac | 11 +
+ sysdeps/arc/dl-machine.h | 340 +++
+ sysdeps/arc/dl-runtime.c | 39 +
+ sysdeps/arc/dl-sysdep.h | 25 +
+ sysdeps/arc/dl-tls.h | 30 +
+ sysdeps/arc/dl-trampoline.S | 80 +
+ sysdeps/arc/entry.h | 5 +
+ sysdeps/arc/gccframe.h | 21 +
+ sysdeps/arc/gmp-mparam.h | 23 +
+ sysdeps/arc/jmpbuf-offsets.h | 47 +
+ sysdeps/arc/jmpbuf-unwind.h | 47 +
+ sysdeps/arc/ldsodefs.h | 43 +
+ sysdeps/arc/libc-tls.c | 27 +
+ sysdeps/arc/machine-gmon.h | 35 +
+ sysdeps/arc/memusage.h | 23 +
+ sysdeps/arc/nofpu/Implies | 1 +
+ sysdeps/arc/nofpu/libm-test-ulps | 390 +++
+ sysdeps/arc/nofpu/libm-test-ulps-name | 1 +
+ sysdeps/arc/nofpu/math-tests-exceptions.h | 27 +
+ sysdeps/arc/nofpu/math-tests-rounding.h | 27 +
+ sysdeps/arc/nptl/Makefile | 22 +
+ sysdeps/arc/nptl/bits/pthreadtypes-arch.h | 43 +
+ sysdeps/arc/nptl/bits/semaphore.h | 32 +
+ sysdeps/arc/nptl/pthreaddef.h | 32 +
+ sysdeps/arc/nptl/tcb-offsets.sym | 11 +
+ sysdeps/arc/nptl/tls.h | 150 ++
+ sysdeps/arc/preconfigure | 15 +
+ sysdeps/arc/setjmp.S | 66 +
+ sysdeps/arc/sfp-machine.h | 73 +
+ sysdeps/arc/sotruss-lib.c | 51 +
+ sysdeps/arc/stackinfo.h | 33 +
+ sysdeps/arc/start.S | 89 +
+ sysdeps/arc/sysdep.h | 48 +
+ sysdeps/arc/tls-macros.h | 47 +
+ sysdeps/arc/tst-audit.h | 23 +
+ sysdeps/unix/sysv/linux/arc/Implies | 3 +
+ sysdeps/unix/sysv/linux/arc/Makefile | 20 +
+ sysdeps/unix/sysv/linux/arc/Versions | 16 +
+ sysdeps/unix/sysv/linux/arc/arch-syscall.h | 317 +++
+ sysdeps/unix/sysv/linux/arc/bits/procfs.h | 35 +
+ .../sysv/linux/arc/bits/types/__sigset_t.h | 12 +
+ sysdeps/unix/sysv/linux/arc/c++-types.data | 67 +
+ sysdeps/unix/sysv/linux/arc/clone.S | 98 +
+ sysdeps/unix/sysv/linux/arc/configure | 4 +
+ sysdeps/unix/sysv/linux/arc/configure.ac | 4 +
+ sysdeps/unix/sysv/linux/arc/dl-static.c | 84 +
+ sysdeps/unix/sysv/linux/arc/getcontext.S | 63 +
+ sysdeps/unix/sysv/linux/arc/ipc_priv.h | 21 +
+ sysdeps/unix/sysv/linux/arc/jmp_buf-macros.h | 6 +
+ sysdeps/unix/sysv/linux/arc/kernel-features.h | 28 +
+ sysdeps/unix/sysv/linux/arc/ld.abilist | 9 +
+ sysdeps/unix/sysv/linux/arc/ldsodefs.h | 32 +
+ .../sysv/linux/arc/libBrokenLocale.abilist | 1 +
+ sysdeps/unix/sysv/linux/arc/libanl.abilist | 4 +
+ sysdeps/unix/sysv/linux/arc/libc.abilist | 2084 +++++++++++++++++
+ sysdeps/unix/sysv/linux/arc/libcrypt.abilist | 2 +
+ sysdeps/unix/sysv/linux/arc/libdl.abilist | 9 +
+ sysdeps/unix/sysv/linux/arc/libm.abilist | 753 ++++++
+ .../unix/sysv/linux/arc/libpthread.abilist | 240 ++
+ sysdeps/unix/sysv/linux/arc/libresolv.abilist | 79 +
+ sysdeps/unix/sysv/linux/arc/librt.abilist | 35 +
+ .../unix/sysv/linux/arc/libthread_db.abilist | 40 +
+ sysdeps/unix/sysv/linux/arc/libutil.abilist | 6 +
+ sysdeps/unix/sysv/linux/arc/localplt.data | 16 +
+ sysdeps/unix/sysv/linux/arc/makecontext.c | 75 +
+ sysdeps/unix/sysv/linux/arc/mmap_internal.h | 27 +
+ sysdeps/unix/sysv/linux/arc/pt-vfork.S | 1 +
+ sysdeps/unix/sysv/linux/arc/setcontext.S | 92 +
+ sysdeps/unix/sysv/linux/arc/shlib-versions | 2 +
+ sysdeps/unix/sysv/linux/arc/sigaction.c | 31 +
+ sysdeps/unix/sysv/linux/arc/sigcontextinfo.h | 31 +
+ sysdeps/unix/sysv/linux/arc/sigrestorer.S | 29 +
+ sysdeps/unix/sysv/linux/arc/swapcontext.S | 92 +
+ sysdeps/unix/sysv/linux/arc/sys/cachectl.h | 36 +
+ sysdeps/unix/sysv/linux/arc/sys/ucontext.h | 63 +
+ sysdeps/unix/sysv/linux/arc/sys/user.h | 31 +
+ sysdeps/unix/sysv/linux/arc/syscall.S | 38 +
+ sysdeps/unix/sysv/linux/arc/syscalls.list | 3 +
+ sysdeps/unix/sysv/linux/arc/sysdep.c | 33 +
+ sysdeps/unix/sysv/linux/arc/sysdep.h | 250 ++
+ sysdeps/unix/sysv/linux/arc/ucontext-macros.h | 29 +
+ sysdeps/unix/sysv/linux/arc/ucontext_i.sym | 20 +
+ sysdeps/unix/sysv/linux/arc/vfork.S | 42 +
+ sysdeps/unix/sysv/linux/syscall-names.list | 3 +
+ timezone/zic.c | 2 +-
+ 103 files changed, 7413 insertions(+), 13 deletions(-)
+ create mode 100644 sysdeps/arc/Implies
+ create mode 100644 sysdeps/arc/Makefile
+ create mode 100644 sysdeps/arc/Versions
+ create mode 100644 sysdeps/arc/__longjmp.S
+ create mode 100644 sysdeps/arc/abort-instr.h
+ create mode 100644 sysdeps/arc/atomic-machine.h
+ create mode 100644 sysdeps/arc/bits/endianness.h
+ create mode 100644 sysdeps/arc/bits/fenv.h
+ create mode 100644 sysdeps/arc/bits/link.h
+ create mode 100644 sysdeps/arc/bits/setjmp.h
+ create mode 100644 sysdeps/arc/bsd-_setjmp.S
+ create mode 100644 sysdeps/arc/bsd-setjmp.S
+ create mode 100644 sysdeps/arc/configure
+ create mode 100644 sysdeps/arc/configure.ac
+ create mode 100644 sysdeps/arc/dl-machine.h
+ create mode 100644 sysdeps/arc/dl-runtime.c
+ create mode 100644 sysdeps/arc/dl-sysdep.h
+ create mode 100644 sysdeps/arc/dl-tls.h
+ create mode 100644 sysdeps/arc/dl-trampoline.S
+ create mode 100644 sysdeps/arc/entry.h
+ create mode 100644 sysdeps/arc/gccframe.h
+ create mode 100644 sysdeps/arc/gmp-mparam.h
+ create mode 100644 sysdeps/arc/jmpbuf-offsets.h
+ create mode 100644 sysdeps/arc/jmpbuf-unwind.h
+ create mode 100644 sysdeps/arc/ldsodefs.h
+ create mode 100644 sysdeps/arc/libc-tls.c
+ create mode 100644 sysdeps/arc/machine-gmon.h
+ create mode 100644 sysdeps/arc/memusage.h
+ create mode 100644 sysdeps/arc/nofpu/Implies
+ create mode 100644 sysdeps/arc/nofpu/libm-test-ulps
+ create mode 100644 sysdeps/arc/nofpu/libm-test-ulps-name
+ create mode 100644 sysdeps/arc/nofpu/math-tests-exceptions.h
+ create mode 100644 sysdeps/arc/nofpu/math-tests-rounding.h
+ create mode 100644 sysdeps/arc/nptl/Makefile
+ create mode 100644 sysdeps/arc/nptl/bits/pthreadtypes-arch.h
+ create mode 100644 sysdeps/arc/nptl/bits/semaphore.h
+ create mode 100644 sysdeps/arc/nptl/pthreaddef.h
+ create mode 100644 sysdeps/arc/nptl/tcb-offsets.sym
+ create mode 100644 sysdeps/arc/nptl/tls.h
+ create mode 100644 sysdeps/arc/preconfigure
+ create mode 100644 sysdeps/arc/setjmp.S
+ create mode 100644 sysdeps/arc/sfp-machine.h
+ create mode 100644 sysdeps/arc/sotruss-lib.c
+ create mode 100644 sysdeps/arc/stackinfo.h
+ create mode 100644 sysdeps/arc/start.S
+ create mode 100644 sysdeps/arc/sysdep.h
+ create mode 100644 sysdeps/arc/tls-macros.h
+ create mode 100644 sysdeps/arc/tst-audit.h
+ create mode 100644 sysdeps/unix/sysv/linux/arc/Implies
+ create mode 100644 sysdeps/unix/sysv/linux/arc/Makefile
+ create mode 100644 sysdeps/unix/sysv/linux/arc/Versions
+ create mode 100644 sysdeps/unix/sysv/linux/arc/arch-syscall.h
+ create mode 100644 sysdeps/unix/sysv/linux/arc/bits/procfs.h
+ create mode 100644 sysdeps/unix/sysv/linux/arc/bits/types/__sigset_t.h
+ create mode 100644 sysdeps/unix/sysv/linux/arc/c++-types.data
+ create mode 100644 sysdeps/unix/sysv/linux/arc/clone.S
+ create mode 100644 sysdeps/unix/sysv/linux/arc/configure
+ create mode 100644 sysdeps/unix/sysv/linux/arc/configure.ac
+ create mode 100644 sysdeps/unix/sysv/linux/arc/dl-static.c
+ create mode 100644 sysdeps/unix/sysv/linux/arc/getcontext.S
+ create mode 100644 sysdeps/unix/sysv/linux/arc/ipc_priv.h
+ create mode 100644 sysdeps/unix/sysv/linux/arc/jmp_buf-macros.h
+ create mode 100644 sysdeps/unix/sysv/linux/arc/kernel-features.h
+ create mode 100644 sysdeps/unix/sysv/linux/arc/ld.abilist
+ create mode 100644 sysdeps/unix/sysv/linux/arc/ldsodefs.h
+ create mode 100644 sysdeps/unix/sysv/linux/arc/libBrokenLocale.abilist
+ create mode 100644 sysdeps/unix/sysv/linux/arc/libanl.abilist
+ create mode 100644 sysdeps/unix/sysv/linux/arc/libc.abilist
+ create mode 100644 sysdeps/unix/sysv/linux/arc/libcrypt.abilist
+ create mode 100644 sysdeps/unix/sysv/linux/arc/libdl.abilist
+ create mode 100644 sysdeps/unix/sysv/linux/arc/libm.abilist
+ create mode 100644 sysdeps/unix/sysv/linux/arc/libpthread.abilist
+ create mode 100644 sysdeps/unix/sysv/linux/arc/libresolv.abilist
+ create mode 100644 sysdeps/unix/sysv/linux/arc/librt.abilist
+ create mode 100644 sysdeps/unix/sysv/linux/arc/libthread_db.abilist
+ create mode 100644 sysdeps/unix/sysv/linux/arc/libutil.abilist
+ create mode 100644 sysdeps/unix/sysv/linux/arc/localplt.data
+ create mode 100644 sysdeps/unix/sysv/linux/arc/makecontext.c
+ create mode 100644 sysdeps/unix/sysv/linux/arc/mmap_internal.h
+ create mode 100644 sysdeps/unix/sysv/linux/arc/pt-vfork.S
+ create mode 100644 sysdeps/unix/sysv/linux/arc/setcontext.S
+ create mode 100644 sysdeps/unix/sysv/linux/arc/shlib-versions
+ create mode 100644 sysdeps/unix/sysv/linux/arc/sigaction.c
+ create mode 100644 sysdeps/unix/sysv/linux/arc/sigcontextinfo.h
+ create mode 100644 sysdeps/unix/sysv/linux/arc/sigrestorer.S
+ create mode 100644 sysdeps/unix/sysv/linux/arc/swapcontext.S
+ create mode 100644 sysdeps/unix/sysv/linux/arc/sys/cachectl.h
+ create mode 100644 sysdeps/unix/sysv/linux/arc/sys/ucontext.h
+ create mode 100644 sysdeps/unix/sysv/linux/arc/sys/user.h
+ create mode 100644 sysdeps/unix/sysv/linux/arc/syscall.S
+ create mode 100644 sysdeps/unix/sysv/linux/arc/syscalls.list
+ create mode 100644 sysdeps/unix/sysv/linux/arc/sysdep.c
+ create mode 100644 sysdeps/unix/sysv/linux/arc/sysdep.h
+ create mode 100644 sysdeps/unix/sysv/linux/arc/ucontext-macros.h
+ create mode 100644 sysdeps/unix/sysv/linux/arc/ucontext_i.sym
+ create mode 100644 sysdeps/unix/sysv/linux/arc/vfork.S
+
+diff --git a/elf/elf.h b/elf/elf.h
+index 2549a177d6..1d235cf3ac 100644
+--- a/elf/elf.h
++++ b/elf/elf.h
+@@ -330,7 +330,7 @@ typedef struct
+ #define EM_CLOUDSHIELD 192 /* CloudShield */
+ #define EM_COREA_1ST 193 /* KIPO-KAIST Core-A 1st gen. */
+ #define EM_COREA_2ND 194 /* KIPO-KAIST Core-A 2nd gen. */
+-#define EM_ARC_COMPACT2 195 /* Synopsys ARCompact V2 */
++#define EM_ARCV2 195 /* Synopsys ARCv2 ISA. */
+ #define EM_OPEN8 196 /* Open8 RISC */
+ #define EM_RL78 197 /* Renesas RL78 */
+ #define EM_VIDEOCORE5 198 /* Broadcom VideoCore V */
+@@ -4027,6 +4027,74 @@ enum
+ #define R_NDS32_TLS_TPOFF 102
+ #define R_NDS32_TLS_DESC 119
+
++/* ARCompact/ARCv2 specific relocs. */
++#define R_ARC_NONE 0x0
++#define R_ARC_8 0x1
++#define R_ARC_16 0x2
++#define R_ARC_24 0x3
++#define R_ARC_32 0x4
++#define R_ARC_B26 0x5
++#define R_ARC_B22_PCREL 0x6
++#define R_ARC_H30 0x7
++#define R_ARC_N8 0x8
++#define R_ARC_N16 0x9
++#define R_ARC_N24 0xA
++#define R_ARC_N32 0xB
++#define R_ARC_SDA 0xC
++#define R_ARC_SECTOFF 0xD
++#define R_ARC_S21H_PCREL 0xE
++#define R_ARC_S21W_PCREL 0xF
++#define R_ARC_S25H_PCREL 0x10
++#define R_ARC_S25W_PCREL 0x11
++#define R_ARC_SDA32 0x12
++#define R_ARC_SDA_LDST 0x13
++#define R_ARC_SDA_LDST1 0x14
++#define R_ARC_SDA_LDST2 0x15
++#define R_ARC_SDA16_LD 0x16
++#define R_ARC_SDA16_LD1 0x17
++#define R_ARC_SDA16_LD2 0x18
++#define R_ARC_S13_PCREL 0x19
++#define R_ARC_W 0x1A
++#define R_ARC_32_ME 0x1B
++#define R_ARC_N32_ME 0x1C
++#define R_ARC_SECTOFF_ME 0x1D
++#define R_ARC_SDA32_ME 0x1E
++#define R_ARC_W_ME 0x1F
++#define R_ARC_H30_ME 0x20
++#define R_ARC_SECTOFF_U8 0x21
++#define R_ARC_SECTOFF_S9 0x22
++#define R_AC_SECTOFF_U8 0x23
++#define R_AC_SECTOFF_U8_1 0x24
++#define R_AC_SECTOFF_U8_2 0x25
++#define R_AC_SECTOFF_S9 0x26
++#define R_AC_SECTOFF_S9_1 0x27
++#define R_AC_SECTOFF_S9_2 0x28
++#define R_ARC_SECTOFF_ME_1 0x29
++#define R_ARC_SECTOFF_ME_2 0x2A
++#define R_ARC_SECTOFF_1 0x2B
++#define R_ARC_SECTOFF_2 0x2C
++#define R_ARC_PC32 0x32
++#define R_ARC_GOTPC32 0x33
++#define R_ARC_PLT32 0x34
++#define R_ARC_COPY 0x35
++#define R_ARC_GLOB_DAT 0x36
++#define R_ARC_JUMP_SLOT 0x37
++#define R_ARC_RELATIVE 0x38
++#define R_ARC_GOTOFF 0x39
++#define R_ARC_GOTPC 0x3A
++#define R_ARC_GOT32 0x3B
++
++#define R_ARC_TLS_DTPMOD 0x42
++#define R_ARC_TLS_DTPOFF 0x43
++#define R_ARC_TLS_TPOFF 0x44
++#define R_ARC_TLS_GD_GOT 0x45
++#define R_ARC_TLS_GD_LD 0x46
++#define R_ARC_TLS_GD_CALL 0x47
++#define R_ARC_TLS_IE_GOT 0x48
++#define R_ARC_TLS_DTPOFF_S9 0x4a
++#define R_ARC_TLS_LE_S9 0x4a
++#define R_ARC_TLS_LE_32 0x4b
++
+ __END_DECLS
+
+ #endif /* elf.h */
+diff --git a/locale/Makefile b/locale/Makefile
+index c9694e236e..95a4a432a9 100644
+--- a/locale/Makefile
++++ b/locale/Makefile
+@@ -28,6 +28,7 @@ routines = setlocale findlocale loadlocale loadarchive \
+ localeconv nl_langinfo nl_langinfo_l mb_cur_max \
+ newlocale duplocale freelocale uselocale
+ tests = tst-C-locale tst-locname tst-duplocale
++tests-special = $(objpfx)tst-locale-locpath.out
+ categories = ctype messages monetary numeric time paper name \
+ address telephone measurement identification collate
+ aux = $(categories:%=lc-%) $(categories:%=C-%) SYS_libc C_name \
+@@ -62,10 +63,6 @@ lib-modules := charmap-dir simple-hash xmalloc xstrdup \
+ GPERF = gperf
+ GPERFFLAGS = -acCgopt -k1,2,5,9,$$ -L ANSI-C
+
+-ifeq ($(run-built-tests),yes)
+-tests-special += $(objpfx)tst-locale-locpath.out
+-endif
+-
+ include ../Rules
+
+ CFLAGS-md5.c += -I../crypt
+diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py
+index 90b76caa93..1fdf4d44c7 100755
+--- a/scripts/build-many-glibcs.py
++++ b/scripts/build-many-glibcs.py
+@@ -155,6 +155,9 @@ class Context(object):
+ 'cfg': ['--disable-multi-arch']}])
+ self.add_config(arch='aarch64_be',
+ os_name='linux-gnu')
++ self.add_config(arch='arc',
++ os_name='linux-gnu',
++ gcc_cfg=['--disable-multilib', '--with-cpu=archs'])
+ self.add_config(arch='alpha',
+ os_name='linux-gnu')
+ self.add_config(arch='arm',
+@@ -1201,6 +1204,7 @@ class LinuxHeadersPolicyForUpdateSyscalls(object):
+ def install_linux_headers(policy, cmdlist):
+ """Install Linux kernel headers."""
+ arch_map = {'aarch64': 'arm64',
++ 'arc': 'arc',
+ 'alpha': 'alpha',
+ 'arm': 'arm',
+ 'csky': 'csky',
+diff --git a/stdlib/longlong.h b/stdlib/longlong.h
+index ee4aac1bb5..638b7894d4 100644
+--- a/stdlib/longlong.h
++++ b/stdlib/longlong.h
+@@ -199,7 +199,8 @@ extern UDItype __udiv_qrnnd (UDItype *, UDItype, UDItype, UDItype);
+ : "%r" ((USItype) (ah)), \
+ "rICal" ((USItype) (bh)), \
+ "%r" ((USItype) (al)), \
+- "rICal" ((USItype) (bl)))
++ "rICal" ((USItype) (bl)) \
++ : "cc")
+ #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ __asm__ ("sub.f %1, %4, %5\n\tsbc %0, %2, %3" \
+ : "=r" ((USItype) (sh)), \
+@@ -207,7 +208,8 @@ extern UDItype __udiv_qrnnd (UDItype *, UDItype, UDItype, UDItype);
+ : "r" ((USItype) (ah)), \
+ "rICal" ((USItype) (bh)), \
+ "r" ((USItype) (al)), \
+- "rICal" ((USItype) (bl)))
++ "rICal" ((USItype) (bl)) \
++ : "cc")
+
+ #define __umulsidi3(u,v) ((UDItype)(USItype)u*(USItype)v)
+ #ifdef __ARC_NORM__
+diff --git a/support/Makefile b/support/Makefile
+index 3325feb790..d9fdc46ffa 100644
+--- a/support/Makefile
++++ b/support/Makefile
+@@ -188,12 +188,7 @@ CFLAGS-support_paths.c = \
+ -DSBINDIR_PATH=\"$(sbindir)\" \
+ -DROOTSBINDIR_PATH=\"$(rootsbindir)\"
+
+-ifeq (,$(CXX))
+ LINKS_DSO_PROGRAM = links-dso-program-c
+-else
+-LINKS_DSO_PROGRAM = links-dso-program
+-LDLIBS-links-dso-program = -lstdc++ -lgcc -lgcc_s $(libunwind)
+-endif
+
+ ifeq (yes,$(have-selinux))
+ LDLIBS-$(LINKS_DSO_PROGRAM) += -lselinux
+diff --git a/sysdeps/arc/Implies b/sysdeps/arc/Implies
+new file mode 100644
+index 0000000000..a0f0b00cfa
+--- /dev/null
++++ b/sysdeps/arc/Implies
+@@ -0,0 +1,4 @@
++init_array
++wordsize-32
++ieee754/flt-32
++ieee754/dbl-64
+diff --git a/sysdeps/arc/Makefile b/sysdeps/arc/Makefile
+new file mode 100644
+index 0000000000..8d2fbe00c5
+--- /dev/null
++++ b/sysdeps/arc/Makefile
+@@ -0,0 +1,25 @@
++# ARC Makefile
++# Copyright (C) 1993-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/>.
++
++# We don't support long doubles as a distinct type. We don't need to set
++# this variable; it's here mostly for documentational purposes.
++long-double-fcts = no
++
++ifeq ($(subdir),debug)
++CFLAGS-backtrace.c += -funwind-tables
++endif
+diff --git a/sysdeps/arc/Versions b/sysdeps/arc/Versions
+new file mode 100644
+index 0000000000..ca0856d2db
+--- /dev/null
++++ b/sysdeps/arc/Versions
+@@ -0,0 +1,6 @@
++libc {
++ GLIBC_2.30 {
++ __syscall_error;
++ __mcount;
++ }
++}
+diff --git a/sysdeps/arc/__longjmp.S b/sysdeps/arc/__longjmp.S
+new file mode 100644
+index 0000000000..8296aa445f
+--- /dev/null
++++ b/sysdeps/arc/__longjmp.S
+@@ -0,0 +1,50 @@
++/* longjmp for ARC.
++ Copyright (C) 2017-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/>. */
++
++#include <sysdep.h>
++#include <jmpbuf-offsets.h>
++
++;@ r0 = jump buffer from which regs will be restored
++;@ r1 = value that setjmp( ) will return due to this longjmp
++
++ENTRY (__longjmp)
++
++ ld_s r13, [r0]
++ ld_s r14, [r0,4]
++ ld r15, [r0,8]
++ ld r16, [r0,12]
++ ld r17, [r0,16]
++ ld r18, [r0,20]
++ ld r19, [r0,24]
++ ld r20, [r0,28]
++ ld r21, [r0,32]
++ ld r22, [r0,36]
++ ld r23, [r0,40]
++ ld r24, [r0,44]
++ ld r25, [r0,48]
++
++ ld blink, [r0,60]
++ ld fp, [r0,52]
++ ld sp, [r0,56]
++
++ mov.f r0, r1 ; get the setjmp return value(due to longjmp) in place
++
++ j.d [blink] ; to caller of setjmp location, right after the call
++ mov.z r0, 1 ; can't let setjmp return 0 when it is due to longjmp
++
++END (__longjmp)
+diff --git a/sysdeps/arc/abort-instr.h b/sysdeps/arc/abort-instr.h
+new file mode 100644
+index 0000000000..49f33613c4
+--- /dev/null
++++ b/sysdeps/arc/abort-instr.h
+@@ -0,0 +1,2 @@
++/* FLAG 1 is privilege mode only instruction, hence will crash any program. */
++#define ABORT_INSTRUCTION asm ("flag 1")
+diff --git a/sysdeps/arc/atomic-machine.h b/sysdeps/arc/atomic-machine.h
+new file mode 100644
+index 0000000000..bdc91d0558
+--- /dev/null
++++ b/sysdeps/arc/atomic-machine.h
+@@ -0,0 +1,73 @@
++/* Low-level functions for atomic operations. ARC version.
++ Copyright (C) 2012-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 _ARC_BITS_ATOMIC_H
++#define _ARC_BITS_ATOMIC_H 1
++
++#include <stdint.h>
++
++typedef int32_t atomic32_t;
++typedef uint32_t uatomic32_t;
++typedef int_fast32_t atomic_fast32_t;
++typedef uint_fast32_t uatomic_fast32_t;
++
++typedef intptr_t atomicptr_t;
++typedef uintptr_t uatomicptr_t;
++typedef intmax_t atomic_max_t;
++typedef uintmax_t uatomic_max_t;
++
++#define __HAVE_64B_ATOMICS 0
++#define USE_ATOMIC_COMPILER_BUILTINS 1
++
++/* ARC does have legacy atomic EX reg, [mem] instruction but the micro-arch
++ is not as optimal as LLOCK/SCOND specially for SMP. */
++#define ATOMIC_EXCHANGE_USES_CAS 1
++
++#define __arch_compare_and_exchange_bool_8_acq(mem, newval, oldval) \
++ (abort (), 0)
++#define __arch_compare_and_exchange_bool_16_acq(mem, newval, oldval) \
++ (abort (), 0)
++#define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \
++ (abort (), 0)
++
++#define __arch_compare_and_exchange_val_8_int(mem, newval, oldval, model) \
++ (abort (), (__typeof (*mem)) 0)
++#define __arch_compare_and_exchange_val_16_int(mem, newval, oldval, model) \
++ (abort (), (__typeof (*mem)) 0)
++#define __arch_compare_and_exchange_val_64_int(mem, newval, oldval, model) \
++ (abort (), (__typeof (*mem)) 0)
++
++#define __arch_compare_and_exchange_val_32_int(mem, newval, oldval, model) \
++ ({ \
++ typeof (*mem) __oldval = (oldval); \
++ __atomic_compare_exchange_n (mem, (void *) &__oldval, newval, 0, \
++ model, __ATOMIC_RELAXED); \
++ __oldval; \
++ })
++
++#define atomic_compare_and_exchange_val_acq(mem, new, old) \
++ __atomic_val_bysize (__arch_compare_and_exchange_val, int, \
++ mem, new, old, __ATOMIC_ACQUIRE)
++
++#ifdef __ARC700__
++#define atomic_full_barrier() ({ asm volatile ("sync":::"memory"); })
++#else
++#define atomic_full_barrier() ({ asm volatile ("dmb 3":::"memory"); })
++#endif
++
++#endif /* _ARC_BITS_ATOMIC_H */
+diff --git a/sysdeps/arc/bits/endianness.h b/sysdeps/arc/bits/endianness.h
+new file mode 100644
+index 0000000000..21fae520cd
+--- /dev/null
++++ b/sysdeps/arc/bits/endianness.h
+@@ -0,0 +1,15 @@
++#ifndef _BITS_ENDIANNESS_H
++#define _BITS_ENDIANNESS_H 1
++/* Although ARC CPU can do BE, it is not supported. */
++
++#ifndef _BITS_ENDIAN_H
++# error "Never use <bits/endianness.h> directly; include <endian.h> instead."
++#endif
++
++#ifdef __LITTLE_ENDIAN__
++# define __BYTE_ORDER __LITTLE_ENDIAN
++#endif
++#ifdef __BIG_ENDIAN__
++# error "Big Endian NOt supported on ARC"
++#endif
++#endif /* bits/endianness.h */
+diff --git a/sysdeps/arc/bits/fenv.h b/sysdeps/arc/bits/fenv.h
+new file mode 100644
+index 0000000000..58388fb43a
+--- /dev/null
++++ b/sysdeps/arc/bits/fenv.h
+@@ -0,0 +1,72 @@
++/* Copyright (C) 2012-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 _FENV_H
++# error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
++#endif
++
++enum
++ {
++ FE_INVALID =
++# define FE_INVALID (0x01)
++ FE_INVALID,
++ FE_DIVBYZERO =
++# define FE_DIVBYZERO (0x02)
++ FE_DIVBYZERO,
++ FE_OVERFLOW =
++# define FE_OVERFLOW (0x04)
++ FE_OVERFLOW,
++ FE_UNDERFLOW =
++# define FE_UNDERFLOW (0x08)
++ FE_UNDERFLOW,
++ FE_INEXACT =
++# define FE_INEXACT (0x10)
++ FE_INEXACT
++ };
++
++# define FE_ALL_EXCEPT \
++ (FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT)
++
++enum
++ {
++ FE_TOWARDZERO =
++# define FE_TOWARDZERO (0x0)
++ FE_TOWARDZERO,
++ FE_TONEAREST =
++# define FE_TONEAREST (0x1)
++ FE_TONEAREST,
++ FE_UPWARD =
++# define FE_UPWARD (0x2)
++ FE_UPWARD,
++ FE_DOWNWARD =
++# define FE_DOWNWARD (0x3)
++ FE_DOWNWARD
++ };
++
++typedef unsigned int fexcept_t;
++typedef unsigned int fenv_t;
++
++/* If the default argument is used we use this value. */
++#define FE_DFL_ENV ((const fenv_t *) -1)
++
++#if __GLIBC_USE (IEC_60559_BFP_EXT)
++/* Type representing floating-point control modes. */
++typedef unsigned int femode_t;
++
++/* Default floating-point control modes. */
++# define FE_DFL_MODE ((const femode_t *) -1L)
++#endif
+diff --git a/sysdeps/arc/bits/link.h b/sysdeps/arc/bits/link.h
+new file mode 100644
+index 0000000000..c4508ab666
+--- /dev/null
++++ b/sysdeps/arc/bits/link.h
+@@ -0,0 +1,52 @@
++/* Machine-specific declarations for dynamic linker interface, ARC version.
++ Copyright (C) 2009-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 _LINK_H
++# error "Never include <bits/link.h> directly; use <link.h> instead."
++#endif
++
++/* Registers for entry into PLT on ARC. */
++typedef struct La_arc_regs
++{
++ uint32_t lr_reg[8]; /* r0 through r7 (upto 8 args). */
++} La_arc_regs;
++
++/* Return values for calls from PLT on ARC. */
++typedef struct La_arc_retval
++{
++ /* For ARCv2, a 64-bit integer return value can use 2 regs. */
++ uint32_t lrv_reg[2];
++} La_arc_retval;
++
++__BEGIN_DECLS
++
++extern ElfW(Addr) la_arc_gnu_pltenter (ElfW(Sym) *__sym, unsigned int __ndx,
++ uintptr_t *__refcook,
++ uintptr_t *__defcook,
++ La_arc_regs *__regs,
++ unsigned int *__flags,
++ const char *__symname,
++ long int *__framesizep);
++extern unsigned int la_arc_gnu_pltexit (ElfW(Sym) *__sym, unsigned int __ndx,
++ uintptr_t *__refcook,
++ uintptr_t *__defcook,
++ const La_arc_regs *__inregs,
++ La_arc_retval *__outregs,
++ const char *symname);
++
++__END_DECLS
+diff --git a/sysdeps/arc/bits/setjmp.h b/sysdeps/arc/bits/setjmp.h
+new file mode 100644
+index 0000000000..3cb457d097
+--- /dev/null
++++ b/sysdeps/arc/bits/setjmp.h
+@@ -0,0 +1,26 @@
++/* Define the machine-dependent type `jmp_buf'. ARC version.
++ Copyright (C) 1992-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 _ARC_BITS_SETJMP_H
++#define _ARC_BITS_SETJMP_H 1
++
++/* Saves r13-r25 (callee-saved), fp (frame pointer), sp (stack pointer),
++ blink (branch-n-link). */
++typedef long int __jmp_buf[32];
++
++#endif
+diff --git a/sysdeps/arc/bsd-_setjmp.S b/sysdeps/arc/bsd-_setjmp.S
+new file mode 100644
+index 0000000000..90b99cd8c3
+--- /dev/null
++++ b/sysdeps/arc/bsd-_setjmp.S
+@@ -0,0 +1 @@
++/* _setjmp is in setjmp.S. */
+diff --git a/sysdeps/arc/bsd-setjmp.S b/sysdeps/arc/bsd-setjmp.S
+new file mode 100644
+index 0000000000..d3b823c118
+--- /dev/null
++++ b/sysdeps/arc/bsd-setjmp.S
+@@ -0,0 +1 @@
++/* setjmp is in setjmp.S. */
+diff --git a/sysdeps/arc/configure b/sysdeps/arc/configure
+new file mode 100644
+index 0000000000..52e286da2e
+--- /dev/null
++++ b/sysdeps/arc/configure
+@@ -0,0 +1,14 @@
++# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
++ # Local configure fragment for sysdeps/arc.
++
++$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
++
++libc_cv_have_sdata_section=no
++
++# For ARC, historically ; was used for comments and not newline
++# Later # also got added to comment list, but ; couldn't be switched to
++# canonical newline as there's lots of code out there which will break
++libc_cv_asm_line_sep='`'
++cat >>confdefs.h <<_ACEOF
++#define ASM_LINE_SEP $libc_cv_asm_line_sep
++_ACEOF
+diff --git a/sysdeps/arc/configure.ac b/sysdeps/arc/configure.ac
+new file mode 100644
+index 0000000000..1074d312f0
+--- /dev/null
++++ b/sysdeps/arc/configure.ac
+@@ -0,0 +1,11 @@
++GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
++# Local configure fragment for sysdeps/arc.
++
++AC_DEFINE(PI_STATIC_AND_HIDDEN)
++libc_cv_have_sdata_section=no
++
++# For ARC, historically ; was used for comments and not newline
++# Later # also got added to comment list, but ; couldn't be switched to
++# canonical newline as there's lots of code out there which will break
++libc_cv_asm_line_sep='`'
++AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
+diff --git a/sysdeps/arc/dl-machine.h b/sysdeps/arc/dl-machine.h
+new file mode 100644
+index 0000000000..c81acb9d4f
+--- /dev/null
++++ b/sysdeps/arc/dl-machine.h
+@@ -0,0 +1,340 @@
++/* Machine-dependent ELF dynamic relocation inline functions. ARC version.
++ Copyright (C) 1995-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 dl_machine_h
++#define dl_machine_h
++
++#define ELF_MACHINE_NAME "arc"
++
++#include <entry.h>
++
++#ifndef ENTRY_POINT
++# error ENTRY_POINT needs to be defined for ARC
++#endif
++
++#include <string.h>
++#include <link.h>
++#include <dl-tls.h>
++
++/* Dynamic Linking ABI for ARCv2 ISA.
++
++ PLT
++ -------------------------------- <---- DT_PLTGOT
++ | ld r11, [pcl, off-to-GOT[1] | 0
++ | | 4
++ plt0 | ld r10, [pcl, off-to-GOT[2] | 8
++ | | 12
++ | j [r10] | 16
++ --------------------------------
++ | Base address of GOT | 20
++ --------------------------------
++ | ld r12, [pcl, off-to-GOT[3] | 24
++ plt1 | |
++ | j.d [r12] | 32
++ | mov r12, pcl | 36
++ --------------------------------
++ | | 40
++ ~ ~
++ ~ ~
++ | |
++ --------------------------------
++
++ .got
++ --------------
++ | [0] |
++ | ... | Runtime address for data symbols
++ | [n] |
++ --------------
++
++ .got.plt
++ --------------
++ | [0] | Build address of .dynamic
++ --------------
++ | [1] | Module info - setup by ld.so
++ --------------
++ | [2] | resolver entry point
++ --------------
++ | [3] |
++ | ... | Runtime address for function symbols
++ | [f] |
++ --------------
++
++ For ARCompact, the PLT is 12 bytes due to short instructions
++
++ --------------------------------
++ | ld r12, [pcl, off-to-GOT[3] | 24 (12 bytes each)
++ plt1 | |
++ | j_s.d [r12] | 32
++ | mov_s r12, pcl | 34
++ --------------------------------
++ | | 36 */
++
++/* Return nonzero iff ELF header is compatible with the running host. */
++static inline int
++elf_machine_matches_host (const Elf32_Ehdr *ehdr)
++{
++ return (ehdr->e_machine == EM_ARCV2 /* ARC HS. */
++ || ehdr->e_machine == EM_ARC_COMPACT); /* ARC 700. */
++}
++
++/* Get build time address of .dynamic as setup in GOT[0]
++ This is called very early in _dl_start() so it has not been relocated to
++ runtime value. */
++static inline ElfW(Addr)
++elf_machine_dynamic (void)
++{
++ extern const ElfW(Addr) _GLOBAL_OFFSET_TABLE_[] attribute_hidden;
++ return _GLOBAL_OFFSET_TABLE_[0];
++}
++
++
++/* Return the run-time load address of the shared object. */
++static inline ElfW(Addr)
++elf_machine_load_address (void)
++{
++ ElfW(Addr) build_addr, run_addr;
++
++ /* For build address, below generates
++ ld r0, [pcl, _GLOBAL_OFFSET_TABLE_@pcl]. */
++ build_addr = elf_machine_dynamic ();
++ __asm__ ("add %0, pcl, _DYNAMIC@pcl \n" : "=r" (run_addr));
++
++ return run_addr - build_addr;
++}
++
++/* Set up the loaded object described by L so its unrelocated PLT
++ entries will jump to the on-demand fixup code in dl-runtime.c. */
++
++static inline int
++__attribute__ ((always_inline))
++elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
++{
++ extern void _dl_runtime_resolve (Elf32_Word);
++
++ if (l->l_info[DT_JMPREL] && lazy)
++ {
++ /* On ARC DT_PLTGOT point to .plt whose 5th word (after the PLT header)
++ contains the address of .got. */
++ ElfW(Addr) *plt_base = (ElfW(Addr) *) D_PTR (l, l_info[DT_PLTGOT]);
++ ElfW(Addr) *got = (ElfW(Addr) *) (plt_base[5] + l->l_addr);
++
++ got[1] = (ElfW(Addr)) l; /* Identify this shared object. */
++
++ /* This function will get called to fix up the GOT entry indicated by
++ the offset on the stack, and then jump to the resolved address. */
++ got[2] = (ElfW(Addr)) &_dl_runtime_resolve;
++ }
++
++ return lazy;
++}
++
++/* What this code does:
++ -ldso starts execution here when kernel returns from execve()
++ -calls into generic ldso entry point _dl_start( )
++ -optionally adjusts argc for executable if exec passed as cmd
++ -calls into app main with address of finaliser. */
++
++#define RTLD_START asm ("\
++.text \n\
++.globl __start \n\
++.type __start, @function \n\
++__start: \n\
++ ; (1). bootstrap ld.so \n\
++ bl.d _dl_start \n\
++ mov_s r0, sp ; pass ptr to aux vector tbl \n\
++ mov r13, r0 ; safekeep app elf entry point \n\
++ \n\
++ ; (2). If ldso ran with executable as arg \n\
++ ; skip the extra args calc by dl_start() \n\
++ ld_s r1, [sp] ; orig argc \n\
++ ld r12, [pcl, _dl_skip_args@pcl] \n\
++ breq r12, 0, 1f \n\
++ \n\
++ add2 sp, sp, r12 ; discard argv entries from stack\n\
++ sub_s r1, r1, r12 ; adjusted argc, on stack \n\
++ st_s r1, [sp] \n\
++ add r2, sp, 4 \n\
++ ld r3, [pcl, _dl_argv@gotpc] ; ST doesn't support this addressing mode \n\
++ st r2, [r3] \n\
++1: \n\
++ ; (3). call preinit stuff \n\
++ ld r0, [pcl, _rtld_local@pcl] \n\
++ add r2, sp, 4 ; argv \n\
++ add2 r3, r2, r1 \n\
++ add r3, r3, 4 ; env \n\
++ bl _dl_init@plt \n\
++ \n\
++ ; (4) call app elf entry point \n\
++ add r0, pcl, _dl_fini@pcl \n\
++ j [r13] \n\
++ \n\
++ .size __start,.-__start \n\
++ .previous \n\
++");
++
++/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so
++ PLT entries should not be allowed to define the value.
++ ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
++ of the main executable's symbols, as for a COPY reloc. */
++#define elf_machine_type_class(type) \
++ ((((type) == R_ARC_JUMP_SLOT \
++ || (type) == R_ARC_TLS_DTPMOD \
++ || (type) == R_ARC_TLS_DTPOFF \
++ || (type) == R_ARC_TLS_TPOFF) * ELF_RTYPE_CLASS_PLT) \
++ | (((type) == R_ARC_COPY) * ELF_RTYPE_CLASS_COPY))
++
++/* A reloc type used for ld.so cmdline arg lookups to reject PLT entries. */
++#define ELF_MACHINE_JMP_SLOT R_ARC_JUMP_SLOT
++
++/* ARC uses Elf32_Rela relocations. */
++#define ELF_MACHINE_NO_REL 1
++#define ELF_MACHINE_NO_RELA 0
++
++/* Fixup a PLT entry to bounce directly to the function at VALUE. */
++
++static inline ElfW(Addr)
++elf_machine_fixup_plt (struct link_map *map, lookup_t t,
++ const ElfW(Sym) *refsym, const ElfW(Sym) *sym,
++ const Elf32_Rela *reloc,
++ ElfW(Addr) *reloc_addr, ElfW(Addr) value)
++{
++ return *reloc_addr = value;
++}
++
++/* Return the final value of a plt relocation. */
++static inline ElfW(Addr)
++elf_machine_plt_value (struct link_map *map, const Elf32_Rela *reloc,
++ ElfW(Addr) value)
++{
++ return value;
++}
++
++/* Names of the architecture-specific auditing callback functions. */
++#define ARCH_LA_PLTENTER arc_gnu_pltenter
++#define ARCH_LA_PLTEXIT arc_gnu_pltexit
++
++#endif /* dl_machine_h */
++
++#ifdef RESOLVE_MAP
++
++auto inline void
++__attribute__ ((always_inline))
++elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc,
++ const ElfW(Sym) *sym, const struct r_found_version *version,
++ void *const reloc_addr_arg, int skip_ifunc)
++{
++ ElfW(Addr) *const reloc_addr = reloc_addr_arg;
++ const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
++
++ if (__glibc_unlikely (r_type == R_ARC_RELATIVE))
++ *reloc_addr += map->l_addr;
++ else if (__glibc_unlikely (r_type == R_ARC_NONE))
++ return;
++ else
++ {
++ const ElfW(Sym) *const refsym = sym;
++ struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
++ ElfW(Addr) value = SYMBOL_ADDRESS (sym_map, sym, true);
++
++ switch (r_type)
++ {
++ case R_ARC_COPY:
++ if (__glibc_unlikely (sym == NULL))
++ /* This can happen in trace mode if an object could not be
++ found. */
++ break;
++
++ size_t size = sym->st_size;
++ if (__glibc_unlikely (size != refsym->st_size))
++ {
++ const char *strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
++ if (sym->st_size > refsym->st_size)
++ size = refsym->st_size;
++ if (sym->st_size > refsym->st_size || GLRO(dl_verbose))
++ _dl_error_printf ("\
++ %s: Symbol `%s' has different size in shared object, consider re-linking\n",
++ rtld_progname ?: "<program name unknown>",
++ strtab + refsym->st_name);
++ }
++
++ memcpy (reloc_addr_arg, (void *) value, size);
++ break;
++ case R_ARC_GLOB_DAT:
++ case R_ARC_JUMP_SLOT:
++ *reloc_addr = value;
++ break;
++ case R_ARC_TLS_DTPMOD:
++ if (sym_map != NULL)
++ /* Get the information from the link map returned by the
++ resolv function. */
++ *reloc_addr = sym_map->l_tls_modid;
++ break;
++
++ case R_ARC_TLS_DTPOFF:
++ if (sym != NULL)
++ /* Offset set by the linker in the GOT entry would be overwritten
++ by dynamic loader instead of added to the symbol location.
++ Other target have the same approach on DTSOFF relocs. */
++ *reloc_addr += sym->st_value;
++ break;
++
++ case R_ARC_TLS_TPOFF:
++ if (sym != NULL)
++ {
++ CHECK_STATIC_TLS (map, sym_map);
++ *reloc_addr = sym_map->l_tls_offset + sym->st_value + reloc->r_addend;
++ }
++ break;
++ case R_ARC_32:
++ *reloc_addr += value + reloc->r_addend;
++ break;
++
++ case R_ARC_PC32:
++ *reloc_addr += value + reloc->r_addend - (unsigned long int) reloc_addr;
++ break;
++
++ default:
++ _dl_reloc_bad_type (map, r_type, 0);
++ break;
++ }
++ }
++}
++
++auto inline void
++__attribute__ ((always_inline))
++elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
++ void *const reloc_addr_arg)
++{
++ ElfW(Addr) *const reloc_addr = reloc_addr_arg;
++ *reloc_addr += l_addr; // + reloc->r_addend;
++}
++
++auto inline void
++__attribute__ ((always_inline))
++elf_machine_lazy_rel (struct link_map *map,
++ ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
++ int skip_ifunc)
++{
++ ElfW(Addr) *const reloc_addr = (void *) (l_addr + reloc->r_offset);
++ if (ELF32_R_TYPE (reloc->r_info) == R_ARC_JUMP_SLOT)
++ *reloc_addr += l_addr;
++ else
++ _dl_reloc_bad_type (map, ELF32_R_TYPE (reloc->r_info), 1);
++}
++
++#endif /* RESOLVE_MAP */
+diff --git a/sysdeps/arc/dl-runtime.c b/sysdeps/arc/dl-runtime.c
+new file mode 100644
+index 0000000000..48f4a5a7e1
+--- /dev/null
++++ b/sysdeps/arc/dl-runtime.c
+@@ -0,0 +1,39 @@
++/* dl-runtime helpers for ARC.
++ Copyright (C) 2017-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/>. */
++
++/* PLT jump into resolver passes PC of PLTn, while _dl_fixup expects the
++ address of corresponding .rela.plt entry. */
++
++#ifdef __A7__
++# define ARC_PLT_SIZE 12
++#else
++# define ARC_PLT_SIZE 16
++#endif
++
++#define reloc_index \
++({ \
++ unsigned long int plt0 = D_PTR (l, l_info[DT_PLTGOT]); \
++ unsigned long int pltn = reloc_arg; \
++ /* Exclude PL0 and PLT1. */ \
++ unsigned long int idx = (pltn - plt0)/ARC_PLT_SIZE - 2; \
++ idx; \
++})
++
++#define reloc_offset reloc_index * sizeof (PLTREL)
++
++#include <elf/dl-runtime.c>
+diff --git a/sysdeps/arc/dl-sysdep.h b/sysdeps/arc/dl-sysdep.h
+new file mode 100644
+index 0000000000..ffc30b6937
+--- /dev/null
++++ b/sysdeps/arc/dl-sysdep.h
+@@ -0,0 +1,25 @@
++/* System-specific settings for dynamic linker code. ARC version.
++ Copyright (C) 2009-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/>. */
++
++#include_next <dl-sysdep.h>
++
++/* _dl_argv cannot be attribute_relro, because _dl_start_user
++ might write into it after _dl_start returns. */
++#define DL_ARGV_NOT_RELRO 1
++
++#define DL_EXTERN_PROTECTED_DATA
+diff --git a/sysdeps/arc/dl-tls.h b/sysdeps/arc/dl-tls.h
+new file mode 100644
+index 0000000000..7f0cf91e40
+--- /dev/null
++++ b/sysdeps/arc/dl-tls.h
+@@ -0,0 +1,30 @@
++/* Thread-local storage handling in the ELF dynamic linker. ARC version.
++ Copyright (C) 2012-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/>. */
++
++
++/* Type used for the representation of TLS information in the GOT. */
++typedef struct
++{
++ unsigned long int ti_module;
++ unsigned long int ti_offset;
++} tls_index;
++
++extern void *__tls_get_addr (tls_index *ti);
++
++/* Value used for dtv entries for which the allocation is delayed. */
++#define TLS_DTV_UNALLOCATED ((void *) -1l)
+diff --git a/sysdeps/arc/dl-trampoline.S b/sysdeps/arc/dl-trampoline.S
+new file mode 100644
+index 0000000000..9da75fb1fe
+--- /dev/null
++++ b/sysdeps/arc/dl-trampoline.S
+@@ -0,0 +1,80 @@
++/* PLT trampolines. ARC version.
++ Copyright (C) 2005-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/>. */
++
++#include <sysdep.h>
++#include <libc-symbols.h>
++
++#include <sysdep.h>
++#include <sys/syscall.h>
++
++/* Save the registers which resolver could possibly clobber
++ r0-r9: args to the function - symbol being resolved
++ r10-r12 are already clobbered by PLTn, PLT0 thus neednot be saved. */
++
++.macro SAVE_CALLER_SAVED
++ push_s r0
++ push_s r1
++ push_s r2
++ push_s r3
++ st.a r4, [sp, -4]
++ st.a r5, [sp, -4]
++ st.a r6, [sp, -4]
++ st.a r7, [sp, -4]
++ st.a r8, [sp, -4]
++ st.a r9, [sp, -4]
++ cfi_adjust_cfa_offset (40)
++ push_s blink
++ cfi_adjust_cfa_offset (4)
++ cfi_rel_offset (blink, 0)
++.endm
++
++.macro RESTORE_CALLER_SAVED_BUT_R0
++ ld.ab blink,[sp, 4]
++ cfi_adjust_cfa_offset (-4)
++ cfi_restore (blink)
++ ld.ab r9, [sp, 4]
++ ld.ab r8, [sp, 4]
++ ld.ab r7, [sp, 4]
++ ld.ab r6, [sp, 4]
++ ld.ab r5, [sp, 4]
++ ld.ab r4, [sp, 4]
++ pop_s r3
++ pop_s r2
++ pop_s r1
++ cfi_adjust_cfa_offset (-36)
++.endm
++
++/* Upon entry, PLTn, which led us here, sets up the following regs
++ r11 = Module info (tpnt pointer as expected by resolver)
++ r12 = PC of the PLTn itself - needed by resolver to find
++ corresponding .rela.plt entry. */
++
++ENTRY (_dl_runtime_resolve)
++ ; args to func being resolved, which resolver might clobber
++ SAVE_CALLER_SAVED
++
++ mov_s r1, r12
++ bl.d _dl_fixup
++ mov r0, r11
++
++ RESTORE_CALLER_SAVED_BUT_R0
++ j_s.d [r0] /* r0 has resolved function addr. */
++ pop_s r0 /* restore first arg to resolved call. */
++ cfi_adjust_cfa_offset (-4)
++ cfi_restore (r0)
++END (_dl_runtime_resolve)
+diff --git a/sysdeps/arc/entry.h b/sysdeps/arc/entry.h
+new file mode 100644
+index 0000000000..adb01d981a
+--- /dev/null
++++ b/sysdeps/arc/entry.h
+@@ -0,0 +1,5 @@
++#ifndef __ASSEMBLY__
++extern void __start (void) attribute_hidden;
++#endif
++
++#define ENTRY_POINT __start
+diff --git a/sysdeps/arc/gccframe.h b/sysdeps/arc/gccframe.h
+new file mode 100644
+index 0000000000..40487fa77b
+--- /dev/null
++++ b/sysdeps/arc/gccframe.h
+@@ -0,0 +1,21 @@
++/* Definition of object in frame unwind info. ARC version.
++ Copyright (C) 2017-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/>. */
++
++#define FIRST_PSEUDO_REGISTER 40
++
++#include <sysdeps/generic/gccframe.h>
+diff --git a/sysdeps/arc/gmp-mparam.h b/sysdeps/arc/gmp-mparam.h
+new file mode 100644
+index 0000000000..e30695fc6b
+--- /dev/null
++++ b/sysdeps/arc/gmp-mparam.h
+@@ -0,0 +1,23 @@
++/* gmp-mparam.h -- Compiler/machine parameter header file.
++
++Copyright (C) 2017-2019 Free Software Foundation, Inc.
++
++This file is part of the GNU MP Library.
++
++The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, see
++<http://www.gnu.org/licenses/>. */
++
++#include <sysdeps/generic/gmp-mparam.h>
++
++#define IEEE_DOUBLE_BIG_ENDIAN 0
+diff --git a/sysdeps/arc/jmpbuf-offsets.h b/sysdeps/arc/jmpbuf-offsets.h
+new file mode 100644
+index 0000000000..9760f3a389
+--- /dev/null
++++ b/sysdeps/arc/jmpbuf-offsets.h
+@@ -0,0 +1,47 @@
++/* Private macros for accessing __jmp_buf contents. ARC version.
++ Copyright (C) 2006-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/>. */
++
++/* Save offsets within __jmp_buf
++ We don't use most of these symbols; they are here for documentation. */
++
++/* Callee Regs. */
++#define JB_R13 0
++#define JB_R14 1
++#define JB_R15 2
++#define JB_R16 3
++#define JB_R17 4
++#define JB_R18 5
++#define JB_R19 6
++#define JB_R20 7
++#define JB_R21 8
++#define JB_R22 9
++#define JB_R23 10
++#define JB_R24 11
++#define JB_R25 12
++
++/* Frame Pointer, Stack Pointer, Branch-n-link. */
++#define JB_FP 13
++#define JB_SP 14
++#define JB_BLINK 15
++
++/* We save space for some extra state to accommodate future changes
++ This is number of words. */
++#define JB_NUM 32
++
++/* Helper for generic ____longjmp_chk(). */
++#define JB_FRAME_ADDRESS(buf) ((void *) (unsigned long int) (buf[JB_SP]))
+diff --git a/sysdeps/arc/jmpbuf-unwind.h b/sysdeps/arc/jmpbuf-unwind.h
+new file mode 100644
+index 0000000000..47be5758c7
+--- /dev/null
++++ b/sysdeps/arc/jmpbuf-unwind.h
+@@ -0,0 +1,47 @@
++/* Examine __jmp_buf for unwinding frames. ARC version.
++ Copyright (C) 2005-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/>. */
++
++#include <setjmp.h>
++#include <jmpbuf-offsets.h>
++#include <stdint.h>
++#include <unwind.h>
++
++/* Test if longjmp to JMPBUF would unwind the frame
++ containing a local variable at ADDRESS. */
++
++#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
++ ((void *) (address) < (void *) demangle (jmpbuf[JB_SP]))
++
++#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
++ _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
++
++static inline uintptr_t __attribute__ ((unused))
++_jmpbuf_sp (__jmp_buf jmpbuf)
++{
++ uintptr_t sp = jmpbuf[JB_SP];
++#ifdef PTR_DEMANGLE
++ PTR_DEMANGLE (sp);
++#endif
++ return sp;
++}
++
++#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
++ ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf_sp (_jmpbuf) - (_adj)))
++
++/* We use the normal longjmp for unwinding. */
++#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
+diff --git a/sysdeps/arc/ldsodefs.h b/sysdeps/arc/ldsodefs.h
+new file mode 100644
+index 0000000000..53ef4e1e83
+--- /dev/null
++++ b/sysdeps/arc/ldsodefs.h
+@@ -0,0 +1,43 @@
++/* Run-time dynamic linker data structures for loaded ELF shared objects.
++ Copyright (C) 2000-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 _ARC_LDSODEFS_H
++#define _ARC_LDSODEFS_H 1
++
++#include <elf.h>
++
++struct La_arc_regs;
++struct La_arc_retval;
++
++#define ARCH_PLTENTER_MEMBERS \
++ ElfW(Addr) (*arc_gnu_pltenter) (ElfW(Sym) *, unsigned int, \
++ uintptr_t *, uintptr_t *, \
++ const struct La_arc_regs *, \
++ unsigned int *, const char *, \
++ long int *);
++
++#define ARCH_PLTEXIT_MEMBERS \
++ unsigned int (*arc_gnu_pltexit) (ElfW(Sym) *, unsigned int, \
++ uintptr_t *, uintptr_t *, \
++ const struct La_arc_regs *, \
++ struct La_arc_retval *, \
++ const char *);
++
++#include_next <ldsodefs.h>
++
++#endif
+diff --git a/sysdeps/arc/libc-tls.c b/sysdeps/arc/libc-tls.c
+new file mode 100644
+index 0000000000..903a75a41b
+--- /dev/null
++++ b/sysdeps/arc/libc-tls.c
+@@ -0,0 +1,27 @@
++/* Thread-local storage handling in the ELF dynamic linker. ARC version.
++ Copyright (C) 2005-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/>. */
++
++#include <csu/libc-tls.c>
++#include <dl-tls.h>
++
++void *
++__tls_get_addr (tls_index *ti)
++{
++ dtv_t *dtv = THREAD_DTV ();
++ return (char *) dtv[1].pointer.val + ti->ti_offset;
++}
+diff --git a/sysdeps/arc/machine-gmon.h b/sysdeps/arc/machine-gmon.h
+new file mode 100644
+index 0000000000..1d9e8108d9
+--- /dev/null
++++ b/sysdeps/arc/machine-gmon.h
+@@ -0,0 +1,35 @@
++/* Machine-dependent definitions for profiling support. ARC version.
++ 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/>. */
++
++#include <sysdep.h>
++
++#define _MCOUNT_DECL(frompc, selfpc) \
++static void \
++__mcount_internal (unsigned long int frompc, unsigned long int selfpc)
++
++/* This is very simple as gcc does all the heavy lifting at _mcount call site
++ - sets up caller's blink in r0, so frompc is setup correctly
++ - preserve argument registers for original call. */
++
++#define MCOUNT \
++void \
++_mcount (void *frompc) \
++{ \
++ __mcount_internal ((unsigned long int) frompc, \
++ (unsigned long int) __builtin_return_address(0)); \
++}
+diff --git a/sysdeps/arc/memusage.h b/sysdeps/arc/memusage.h
+new file mode 100644
+index 0000000000..29f234f5ba
+--- /dev/null
++++ b/sysdeps/arc/memusage.h
+@@ -0,0 +1,23 @@
++/* Machine-specific definitions for memory usage profiling, ARC version.
++ Copyright (C) 2000-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/>. */
++
++#define GETSP() ({ register uintptr_t stack_ptr asm ("sp"); stack_ptr; })
++
++#define uatomic32_t unsigned int
++
++#include <sysdeps/generic/memusage.h>
+diff --git a/sysdeps/arc/nofpu/Implies b/sysdeps/arc/nofpu/Implies
+new file mode 100644
+index 0000000000..abcbadb25f
+--- /dev/null
++++ b/sysdeps/arc/nofpu/Implies
+@@ -0,0 +1 @@
++ieee754/soft-fp
+diff --git a/sysdeps/arc/nofpu/libm-test-ulps b/sysdeps/arc/nofpu/libm-test-ulps
+new file mode 100644
+index 0000000000..0e8ef313fa
+--- /dev/null
++++ b/sysdeps/arc/nofpu/libm-test-ulps
+@@ -0,0 +1,390 @@
++# Begin of automatic generation
++
++# Maximal error of functions:
++Function: "acos":
++float: 1
++ifloat: 1
++
++Function: "acosh":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: "asin":
++float: 1
++ifloat: 1
++
++Function: "asinh":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: "atan":
++float: 1
++ifloat: 1
++
++Function: "atan2":
++float: 1
++ifloat: 1
++
++Function: "atanh":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: "cabs":
++double: 1
++idouble: 1
++
++Function: Real part of "cacos":
++double: 1
++float: 2
++idouble: 1
++ifloat: 2
++
++Function: Imaginary part of "cacos":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: Real part of "cacosh":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: Imaginary part of "cacosh":
++double: 1
++float: 2
++idouble: 1
++ifloat: 2
++
++Function: "carg":
++float: 1
++ifloat: 1
++
++Function: Real part of "casin":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Imaginary part of "casin":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: Real part of "casinh":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: Imaginary part of "casinh":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Real part of "catan":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Imaginary part of "catan":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Real part of "catanh":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Imaginary part of "catanh":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: "cbrt":
++double: 3
++float: 1
++idouble: 3
++ifloat: 1
++
++Function: Real part of "ccos":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Imaginary part of "ccos":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Real part of "ccosh":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Imaginary part of "ccosh":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Real part of "cexp":
++double: 2
++float: 1
++idouble: 2
++ifloat: 1
++
++Function: Imaginary part of "cexp":
++double: 1
++float: 2
++idouble: 1
++ifloat: 2
++
++Function: Real part of "clog":
++double: 3
++float: 3
++idouble: 3
++ifloat: 3
++
++Function: Imaginary part of "clog":
++float: 1
++ifloat: 1
++
++Function: Real part of "clog10":
++double: 3
++float: 4
++idouble: 3
++ifloat: 4
++
++Function: Imaginary part of "clog10":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: "cos":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: "cosh":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Real part of "cpow":
++double: 2
++float: 5
++idouble: 2
++ifloat: 5
++
++Function: Imaginary part of "cpow":
++float: 2
++ifloat: 2
++
++Function: Real part of "csin":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Real part of "csinh":
++float: 1
++ifloat: 1
++
++Function: Imaginary part of "csinh":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Real part of "csqrt":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: Imaginary part of "csqrt":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: Real part of "ctan":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: Imaginary part of "ctan":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: Real part of "ctanh":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: Imaginary part of "ctanh":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: "erf":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: "erfc":
++double: 3
++float: 2
++idouble: 3
++ifloat: 2
++
++Function: "exp10":
++double: 2
++idouble: 2
++
++Function: "exp2":
++double: 1
++idouble: 1
++
++Function: "expm1":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: "gamma":
++double: 4
++float: 3
++idouble: 4
++ifloat: 3
++
++Function: "hypot":
++double: 1
++idouble: 1
++
++Function: "j0":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: "j1":
++double: 1
++float: 2
++idouble: 1
++ifloat: 2
++
++Function: "jn":
++double: 4
++float: 4
++idouble: 4
++ifloat: 4
++
++Function: "lgamma":
++double: 4
++float: 3
++idouble: 4
++ifloat: 3
++
++Function: "log10":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: "log1p":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: "log2":
++double: 2
++float: 1
++idouble: 2
++ifloat: 1
++
++Function: "pow":
++double: 1
++idouble: 1
++
++Function: "sin":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: "sincos":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: "sinh":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: "tan":
++float: 1
++ifloat: 1
++
++Function: "tanh":
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++
++Function: "tgamma":
++double: 5
++float: 4
++idouble: 5
++ifloat: 4
++
++Function: "y0":
++double: 2
++float: 1
++idouble: 2
++ifloat: 1
++
++Function: "y1":
++double: 3
++float: 2
++idouble: 3
++ifloat: 2
++
++Function: "yn":
++double: 3
++float: 3
++idouble: 3
++ifloat: 3
++
++# end of automatic generation
+diff --git a/sysdeps/arc/nofpu/libm-test-ulps-name b/sysdeps/arc/nofpu/libm-test-ulps-name
+new file mode 100644
+index 0000000000..8c4fba4f9a
+--- /dev/null
++++ b/sysdeps/arc/nofpu/libm-test-ulps-name
+@@ -0,0 +1 @@
++ARC
+diff --git a/sysdeps/arc/nofpu/math-tests-exceptions.h b/sysdeps/arc/nofpu/math-tests-exceptions.h
+new file mode 100644
+index 0000000000..f5c0b73589
+--- /dev/null
++++ b/sysdeps/arc/nofpu/math-tests-exceptions.h
+@@ -0,0 +1,27 @@
++/* Configuration for math tests. exceptions support ARC version.
++ Copyright (C) 2017-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 ARC_NOFPU_MATH_TESTS_EXCEPTIONS_H
++#define ARC_NOFPU_MATH_TESTS_EXCEPTIONS_H 1
++
++/* Soft-float doesnot support exceptions. */
++#define EXCEPTION_TESTS_float 0
++#define EXCEPTION_TESTS_double 0
++#define EXCEPTION_TESTS_long_double 0
++
++#endif
+diff --git a/sysdeps/arc/nofpu/math-tests-rounding.h b/sysdeps/arc/nofpu/math-tests-rounding.h
+new file mode 100644
+index 0000000000..e8f76338b1
+--- /dev/null
++++ b/sysdeps/arc/nofpu/math-tests-rounding.h
+@@ -0,0 +1,27 @@
++/* Configuration for math tests: rounding mode support. ARC version.
++ Copyright (C) 2017-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 ARC_NOFPU_MATH_TESTS_ROUNDING_H
++#define ARC_NOFPU_MATH_TESTS_ROUNDING_H 1
++
++/* Soft-float only supports to-nearest rounding mode. */
++#define ROUNDING_TESTS_float(MODE) ((MODE) == FE_TONEAREST)
++#define ROUNDING_TESTS_double(MODE) ((MODE) == FE_TONEAREST)
++#define ROUNDING_TESTS_long_double(MODE) ((MODE) == FE_TONEAREST)
++
++#endif
+diff --git a/sysdeps/arc/nptl/Makefile b/sysdeps/arc/nptl/Makefile
+new file mode 100644
+index 0000000000..3c33c9cc11
+--- /dev/null
++++ b/sysdeps/arc/nptl/Makefile
+@@ -0,0 +1,22 @@
++# NPTL makefile fragment for ARC.
++# Copyright (C) 2005-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/>.
++
++ifeq ($(subdir),csu)
++gen-as-const-headers += tcb-offsets.sym
++endif
+diff --git a/sysdeps/arc/nptl/bits/pthreadtypes-arch.h b/sysdeps/arc/nptl/bits/pthreadtypes-arch.h
+new file mode 100644
+index 0000000000..c104ad4444
+--- /dev/null
++++ b/sysdeps/arc/nptl/bits/pthreadtypes-arch.h
+@@ -0,0 +1,43 @@
++/* Machine-specific pthread type layouts. ARC version.
++ Copyright (C) 2012-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 _BITS_PTHREADTYPES_ARCH_H
++#define _BITS_PTHREADTYPES_ARCH_H 1
++
++#include <endian.h>
++
++#define __SIZEOF_PTHREAD_ATTR_T 32
++#define __SIZEOF_PTHREAD_MUTEX_T 32
++#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
++#define __SIZEOF_PTHREAD_COND_T 48
++#define __SIZEOF_PTHREAD_CONDATTR_T 4
++#define __SIZEOF_PTHREAD_RWLOCK_T 32
++#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
++#define __SIZEOF_PTHREAD_BARRIER_T 20
++#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
++
++#define __PTHREAD_COMPAT_PADDING_MID
++#define __PTHREAD_COMPAT_PADDING_END
++#define __PTHREAD_MUTEX_LOCK_ELISION 0
++#define __PTHREAD_MUTEX_NUSERS_AFTER_KIND 0
++#define __PTHREAD_MUTEX_USE_UNION 0
++
++#define __LOCK_ALIGNMENT
++#define __ONCE_ALIGNMENT
++
++#endif /* bits/pthreadtypes-arch.h */
+diff --git a/sysdeps/arc/nptl/bits/semaphore.h b/sysdeps/arc/nptl/bits/semaphore.h
+new file mode 100644
+index 0000000000..662d08401d
+--- /dev/null
++++ b/sysdeps/arc/nptl/bits/semaphore.h
+@@ -0,0 +1,32 @@
++/* Machine-specific POSIX semaphore type layouts. ARC version.
++ 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 _SEMAPHORE_H
++# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
++#endif
++
++#define __SIZEOF_SEM_T 16
++
++/* Value returned if `sem_open' failed. */
++#define SEM_FAILED ((sem_t *) 0)
++
++typedef union
++{
++ char __size[__SIZEOF_SEM_T];
++ long int __align;
++} sem_t;
+diff --git a/sysdeps/arc/nptl/pthreaddef.h b/sysdeps/arc/nptl/pthreaddef.h
+new file mode 100644
+index 0000000000..80a109bbd5
+--- /dev/null
++++ b/sysdeps/arc/nptl/pthreaddef.h
+@@ -0,0 +1,32 @@
++/* pthread machine parameter definitions, ARC version.
++ 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/>. */
++
++/* Default stack size. */
++#define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024)
++
++/* Required stack pointer alignment at beginning. */
++#define STACK_ALIGN 4
++
++/* Minimal stack size after allocating thread descriptor and guard size. */
++#define MINIMAL_REST_STACK 2048
++
++/* Alignment requirement for TCB. */
++#define TCB_ALIGNMENT 4
++
++/* Location of current stack frame. */
++#define CURRENT_STACK_FRAME __builtin_frame_address (0)
+diff --git a/sysdeps/arc/nptl/tcb-offsets.sym b/sysdeps/arc/nptl/tcb-offsets.sym
+new file mode 100644
+index 0000000000..56950e0676
+--- /dev/null
++++ b/sysdeps/arc/nptl/tcb-offsets.sym
+@@ -0,0 +1,11 @@
++#include <sysdep.h>
++#include <tls.h>
++
++-- Derive offsets relative to the thread register.
++#define thread_offsetof(mem) (long)(offsetof(struct pthread, mem) - sizeof(struct pthread))
++
++MULTIPLE_THREADS_OFFSET offsetof (struct pthread, header.multiple_threads)
++TLS_PRE_TCB_SIZE sizeof (struct pthread)
++TLS_TCB_SIZE sizeof(tcbhead_t)
++
++PTHREAD_TID offsetof(struct pthread, tid)
+diff --git a/sysdeps/arc/nptl/tls.h b/sysdeps/arc/nptl/tls.h
+new file mode 100644
+index 0000000000..2c90109d57
+--- /dev/null
++++ b/sysdeps/arc/nptl/tls.h
+@@ -0,0 +1,150 @@
++/* Definition for thread-local data handling. NPTL/ARC version.
++ Copyright (C) 2012-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 _ARC_NPTL_TLS_H
++#define _ARC_NPTL_TLS_H 1
++
++#include <dl-sysdep.h>
++
++#ifndef __ASSEMBLER__
++# include <stdbool.h>
++# include <stddef.h>
++# include <stdint.h>
++
++#include <dl-dtv.h>
++
++/* Get system call information. */
++# include <sysdep.h>
++
++/* The TLS blocks start right after the TCB. */
++# define TLS_DTV_AT_TP 1
++# define TLS_TCB_AT_TP 0
++
++/* Get the thread descriptor definition. */
++# include <nptl/descr.h>
++
++typedef struct
++{
++ dtv_t *dtv;
++ uintptr_t pointer_guard;
++} tcbhead_t;
++
++register struct pthread *__thread_self __asm__("r25");
++
++/* This is the size of the initial TCB. */
++# define TLS_INIT_TCB_SIZE sizeof (tcbhead_t)
++
++/* Alignment requirements for the initial TCB. */
++# define TLS_INIT_TCB_ALIGN __alignof__ (struct pthread)
++
++/* This is the size of the TCB. */
++#ifndef TLS_TCB_SIZE
++# define TLS_TCB_SIZE sizeof (tcbhead_t)
++#endif
++
++/* Alignment requirements for the TCB. */
++# define TLS_TCB_ALIGN __alignof__ (struct pthread)
++
++/* This is the size we need before TCB. */
++# define TLS_PRE_TCB_SIZE sizeof (struct pthread)
++
++/* Install the dtv pointer. The pointer passed is to the element with
++ index -1 which contain the length. */
++# define INSTALL_DTV(tcbp, dtvp) \
++ (((tcbhead_t *) (tcbp))->dtv = (dtvp) + 1)
++
++/* Install new dtv for current thread. */
++# define INSTALL_NEW_DTV(dtv) \
++ (THREAD_DTV() = (dtv))
++
++/* Return dtv of given thread descriptor. */
++# define GET_DTV(tcbp) \
++ (((tcbhead_t *) (tcbp))->dtv)
++
++/* Code to initially initialize the thread pointer. */
++# define TLS_INIT_TP(tcbp) \
++ ({ \
++ long result_var; \
++ __builtin_set_thread_pointer(tcbp); \
++ result_var = INTERNAL_SYSCALL (arc_settls, err, 1, (tcbp)); \
++ INTERNAL_SYSCALL_ERROR_P (result_var, err) \
++ ? "unknown error" : NULL; \
++ })
++
++/* Value passed to 'clone' for initialization of the thread register. */
++# define TLS_DEFINE_INIT_TP(tp, pd) void *tp = (pd) + 1
++
++/* Return the address of the dtv for the current thread. */
++# define THREAD_DTV() \
++ (((tcbhead_t *) __builtin_thread_pointer ())->dtv)
++
++/* Return the thread descriptor for the current thread. */
++# define THREAD_SELF \
++ ((struct pthread *)__builtin_thread_pointer () - 1)
++
++/* Magic for libthread_db to know how to do THREAD_SELF. */
++# define DB_THREAD_SELF \
++ CONST_THREAD_AREA (32, sizeof (struct pthread))
++
++/* Access to data in the thread descriptor is easy. */
++# define THREAD_GETMEM(descr, member) \
++ descr->member
++# define THREAD_GETMEM_NC(descr, member, idx) \
++ descr->member[idx]
++# define THREAD_SETMEM(descr, member, value) \
++ descr->member = (value)
++# define THREAD_SETMEM_NC(descr, member, idx, value) \
++ descr->member[idx] = (value)
++
++/* Get and set the global scope generation counter in struct pthread. */
++#define THREAD_GSCOPE_IN_TCB 1
++#define THREAD_GSCOPE_FLAG_UNUSED 0
++#define THREAD_GSCOPE_FLAG_USED 1
++#define THREAD_GSCOPE_FLAG_WAIT 2
++#define THREAD_GSCOPE_RESET_FLAG() \
++ do \
++ { int __res \
++ = atomic_exchange_rel (&THREAD_SELF->header.gscope_flag, \
++ THREAD_GSCOPE_FLAG_UNUSED); \
++ if (__res == THREAD_GSCOPE_FLAG_WAIT) \
++ lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1, LLL_PRIVATE); \
++ } \
++ while (0)
++#define THREAD_GSCOPE_SET_FLAG() \
++ do \
++ { \
++ THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED; \
++ atomic_write_barrier (); \
++ } \
++ while (0)
++#define THREAD_GSCOPE_WAIT() \
++ GL(dl_wait_lookup_done) ()
++
++#else
++
++# include <tcb-offsets.h>
++
++# r25 is dedicated TLS register for ARC
++.macro THREAD_SELF reg
++ # struct pthread is just ahead of TCB
++ sub \reg, r25, TLS_PRE_TCB_SIZE
++.endm
++
++#endif /* __ASSEMBLER__ */
++
++#endif /* tls.h */
+diff --git a/sysdeps/arc/preconfigure b/sysdeps/arc/preconfigure
+new file mode 100644
+index 0000000000..d9c5429f40
+--- /dev/null
++++ b/sysdeps/arc/preconfigure
+@@ -0,0 +1,15 @@
++case "$machine" in
++arc*)
++ base_machine=arc
++ machine=arc
++
++ gccfloat=`$CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null | grep __ARC_FPU_| wc -l`
++ if test "$gccfloat" != "0"; then
++ echo "glibc being configured for double precision floating point"
++ with_fp_cond=1
++ else
++ with_fp_cond=0
++ fi
++ ;;
++
++esac
+diff --git a/sysdeps/arc/setjmp.S b/sysdeps/arc/setjmp.S
+new file mode 100644
+index 0000000000..518545a99e
+--- /dev/null
++++ b/sysdeps/arc/setjmp.S
+@@ -0,0 +1,66 @@
++/* setjmp for ARC.
++ Copyright (C) 1991-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/>. */
++
++
++#include <sysdep.h>
++
++/* Upon entry r0 = jump buffer into which regs will be saved. */
++ENTRY (setjmp)
++ b.d __sigsetjmp
++ mov r1, 1 ; save signals
++END (setjmp)
++
++/* Upon entry r0 = jump buffer into which regs will be saved. */
++ENTRY (_setjmp)
++ b.d __sigsetjmp
++ mov r1, 0 /* don't save signals. */
++END (_setjmp)
++libc_hidden_def (_setjmp)
++
++/* Upon entry
++ r0 = jump buffer into which regs will be saved
++ r1 = do we need to save signals. */
++ENTRY (__sigsetjmp)
++
++ st_s r13, [r0]
++ st_s r14, [r0,4]
++ st r15, [r0,8]
++ st r16, [r0,12]
++ st r17, [r0,16]
++ st r18, [r0,20]
++ st r19, [r0,24]
++ st r20, [r0,28]
++ st r21, [r0,32]
++ st r22, [r0,36]
++ st r23, [r0,40]
++ st r24, [r0,44]
++ st r25, [r0,48]
++ st fp, [r0,52]
++ st sp, [r0,56]
++
++ /* Make a note of where longjmp will return to.
++ that will be right next to this setjmp call-site which will be
++ contained in blink, since "C" caller of this routine will do
++ a branch-n-link */
++
++ st blink, [r0,60]
++ b __sigjmp_save
++
++END (__sigsetjmp)
++
++libc_hidden_def (__sigsetjmp)
+diff --git a/sysdeps/arc/sfp-machine.h b/sysdeps/arc/sfp-machine.h
+new file mode 100644
+index 0000000000..5ceaf56a98
+--- /dev/null
++++ b/sysdeps/arc/sfp-machine.h
+@@ -0,0 +1,73 @@
++/* Machine-dependent software floating-point definitions. ARC version.
++ Copyright (C) 2004-2019 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Richard Henderson (rth@cygnus.com),
++ Jakub Jelinek (jj@ultra.linux.cz) and
++ David S. Miller (davem@redhat.com).
++
++ 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/>. */
++
++
++#define _FP_W_TYPE_SIZE 32
++#define _FP_W_TYPE unsigned long
++#define _FP_WS_TYPE signed long
++#define _FP_I_TYPE long
++
++#define _FP_MUL_MEAT_S(R,X,Y) \
++ _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm)
++#define _FP_MUL_MEAT_D(R,X,Y) \
++ _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm)
++#define _FP_MUL_MEAT_Q(R,X,Y) \
++ _FP_MUL_MEAT_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
++
++#define _FP_MUL_MEAT_DW_S(R,X,Y) \
++ _FP_MUL_MEAT_DW_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm)
++#define _FP_MUL_MEAT_DW_D(R,X,Y) \
++ _FP_MUL_MEAT_DW_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm)
++#define _FP_MUL_MEAT_DW_Q(R,X,Y) \
++ _FP_MUL_MEAT_DW_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm)
++
++#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_loop(S,R,X,Y)
++#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y)
++#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y)
++
++#define _FP_NANFRAC_S ((_FP_QNANBIT_S << 1) - 1)
++#define _FP_NANFRAC_D ((_FP_QNANBIT_D << 1) - 1), -1
++#define _FP_NANFRAC_Q ((_FP_QNANBIT_Q << 1) - 1), -1, -1, -1
++#define _FP_NANSIGN_S 0
++#define _FP_NANSIGN_D 0
++#define _FP_NANSIGN_Q 0
++
++#define _FP_KEEPNANFRACP 1
++#define _FP_QNANNEGATEDP 0
++
++/* This is arbitrarily taken from the PowerPC version. */
++#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \
++ do { \
++ if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs) \
++ && !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs)) \
++ { \
++ R##_s = Y##_s; \
++ _FP_FRAC_COPY_##wc(R,Y); \
++ } \
++ else \
++ { \
++ R##_s = X##_s; \
++ _FP_FRAC_COPY_##wc(R,X); \
++ } \
++ R##_c = FP_CLS_NAN; \
++ } while (0)
++
++#define _FP_TININESS_AFTER_ROUNDING 0
+diff --git a/sysdeps/arc/sotruss-lib.c b/sysdeps/arc/sotruss-lib.c
+new file mode 100644
+index 0000000000..ffbb5bbd6d
+--- /dev/null
++++ b/sysdeps/arc/sotruss-lib.c
+@@ -0,0 +1,51 @@
++/* Override generic sotruss-lib.c to define actual functions for ARC.
++ Copyright (C) 2017-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/>. */
++
++#define HAVE_ARCH_PLTENTER
++#define HAVE_ARCH_PLTEXIT
++
++#include <elf/sotruss-lib.c>
++
++ElfW(Addr)
++la_arc_gnu_pltenter (ElfW(Sym) *sym __attribute__ ((unused)),
++ unsigned int ndx __attribute__ ((unused)),
++ uintptr_t *refcook, uintptr_t *defcook,
++ La_arc_regs *regs, unsigned int *flags,
++ const char *symname, long int *framesizep)
++{
++ print_enter (refcook, defcook, symname,
++ regs->lr_reg[0], regs->lr_reg[1], regs->lr_reg[2],
++ *flags);
++
++ /* No need to copy anything, we will not need the parameters in any case. */
++ *framesizep = 0;
++
++ return sym->st_value;
++}
++
++unsigned int
++la_arc_gnu_pltexit (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook,
++ uintptr_t *defcook,
++ const struct La_arc_regs *inregs,
++ struct La_arc_retval *outregs, const char *symname)
++{
++ print_exit (refcook, defcook, symname, outregs->lrv_reg[0]);
++
++ return 0;
++}
+diff --git a/sysdeps/arc/stackinfo.h b/sysdeps/arc/stackinfo.h
+new file mode 100644
+index 0000000000..fe69161382
+--- /dev/null
++++ b/sysdeps/arc/stackinfo.h
+@@ -0,0 +1,33 @@
++/* Stack environment definitions for ARC.
++ Copyright (C) 2012-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 file contains a bit of information about the stack allocation
++ of the processor. */
++
++#ifndef _STACKINFO_H
++#define _STACKINFO_H 1
++
++#include <elf.h>
++
++/* On ARC the stack grows down. */
++#define _STACK_GROWS_DOWN 1
++
++/* Default to a non-executable stack. */
++#define DEFAULT_STACK_PERMS (PF_R|PF_W)
++
++#endif /* stackinfo.h */
+diff --git a/sysdeps/arc/start.S b/sysdeps/arc/start.S
+new file mode 100644
+index 0000000000..4ade1e871f
+--- /dev/null
++++ b/sysdeps/arc/start.S
+@@ -0,0 +1,89 @@
++/* Startup code for ARC.
++ Copyright (C) 1995-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.
++
++ In addition to the permissions in the GNU Lesser General Public
++ License, the Free Software Foundation gives you unlimited
++ permission to link the compiled version of this file with other
++ programs, and to distribute those programs without any restriction
++ coming from the use of this file. (The GNU Lesser General Public
++ License restrictions do apply in other respects; for example, they
++ cover modification of the file, and distribution when not linked
++ into another program.)
++
++ Note that people who make modified versions of this file are not
++ obligated to grant this special exception for their modified
++ versions; it is their choice whether to do so. The GNU Lesser
++ General Public License gives permission to release a modified
++ version without this exception; this exception also makes it
++ possible to release a modified version which carries forward this
++ exception.
++
++ 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/>. */
++
++
++#define __ASSEMBLY__ 1
++#include <entry.h>
++#ifndef ENTRY_POINT
++# error ENTRY_POINT needs to be defined for ARC
++#endif
++
++/* When we enter this piece of code, the program stack looks like this:
++ argc argument counter (integer)
++ argv[0] program name (pointer)
++ argv[1...N] program args (pointers)
++ argv[argc-1] end of args (integer)
++ NULL
++ env[0...N] environment variables (pointers)
++ NULL. */
++
++ .text
++ .align 4
++ .global __start
++ .type __start,@function
++__start:
++ mov fp, 0
++ ld_s r1, [sp] ; argc
++
++ mov_s r5, r0 ; rltd_fini
++ add_s r2, sp, 4 ; argv
++ and sp, sp, -8
++ mov r6, sp
++
++ /* __libc_start_main (main, argc, argv, init, fini, rtld_fini, stack_end). */
++
++#ifdef SHARED
++ ld r0, [pcl, @main@gotpc]
++ ld r3, [pcl, @__libc_csu_init@gotpc]
++ ld r4, [pcl, @__libc_csu_fini@gotpc]
++ bl __libc_start_main@plt
++#else
++ mov_s r0, main
++ mov_s r3, __libc_csu_init
++ mov r4, __libc_csu_fini
++ bl __libc_start_main
++#endif
++
++ /* Should never get here. */
++ flag 1
++ .size __start,.-__start
++
++/* Define a symbol for the first piece of initialized data. */
++ .data
++ .globl __data_start
++__data_start:
++ .long 0
++ .weak data_start
++ data_start = __data_start
+diff --git a/sysdeps/arc/sysdep.h b/sysdeps/arc/sysdep.h
+new file mode 100644
+index 0000000000..127e9b01e7
+--- /dev/null
++++ b/sysdeps/arc/sysdep.h
+@@ -0,0 +1,48 @@
++/* Assembler macros for ARC.
++ Copyright (C) 2017-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/>. */
++
++#include <sysdeps/generic/sysdep.h>
++
++#ifdef __ASSEMBLER__
++
++/* Syntactic details of assembler.
++ ; is not newline but comment, # is also for comment. */
++# define ASM_SIZE_DIRECTIVE(name) .size name,.-name
++
++# define ENTRY(name) \
++ .align 4 ASM_LINE_SEP \
++ .globl C_SYMBOL_NAME(name) ASM_LINE_SEP \
++ .type C_SYMBOL_NAME(name),%function ASM_LINE_SEP \
++ C_LABEL(name) ASM_LINE_SEP \
++ cfi_startproc ASM_LINE_SEP \
++ CALL_MCOUNT
++
++# undef END
++# define END(name) \
++ cfi_endproc ASM_LINE_SEP \
++ ASM_SIZE_DIRECTIVE(name)
++
++# ifdef SHARED
++# define PLTJMP(_x) _x##@plt
++# else
++# define PLTJMP(_x) _x
++# endif
++
++# define CALL_MCOUNT /* Do nothing for now. */
++
++#endif /* __ASSEMBLER__ */
+diff --git a/sysdeps/arc/tls-macros.h b/sysdeps/arc/tls-macros.h
+new file mode 100644
+index 0000000000..4d54683eda
+--- /dev/null
++++ b/sysdeps/arc/tls-macros.h
+@@ -0,0 +1,47 @@
++/* Macros to support TLS testing in times of missing compiler support. ARC version.
++ Copyright (C) 2017-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/>. */
++
++
++/* For now. */
++#define TLS_LD(x) TLS_IE(x)
++
++#define TLS_GD(x) \
++ ({ int *__result; \
++ __asm__ ("add r0, pcl, @" #x "@tlsgd \n" \
++ ".tls_gd_ld " #x "`bl __tls_get_addr@plt \n" \
++ "mov %0, r0 \n" \
++ : "=&r" (__result) \
++ ::"r0","r1","r2","r3","r4","r5","r6","r7", \
++ "r8","r9","r10","r11","r12"); \
++ __result; })
++
++#define TLS_LE(x) \
++ ({ int *__result; \
++ void *tp = __builtin_thread_pointer(); \
++ __asm__ ("add %0, %1, @" #x "@tpoff \n" \
++ : "=r" (__result) : "r"(tp)); \
++ __result; })
++
++#define TLS_IE(x) \
++ ({ int *__result; \
++ void *tp = __builtin_thread_pointer(); \
++ __asm__ ("ld %0, [pcl, @" #x "@tlsie] \n" \
++ "add %0, %1, %0 \n" \
++ : "=&r" (__result) : "r" (tp)); \
++ __result; })
+diff --git a/sysdeps/arc/tst-audit.h b/sysdeps/arc/tst-audit.h
+new file mode 100644
+index 0000000000..9237ad2440
+--- /dev/null
++++ b/sysdeps/arc/tst-audit.h
+@@ -0,0 +1,23 @@
++/* Definitions for testing PLT entry/exit auditing. ARC version.
++ Copyright (C) 2009-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/>. */
++
++#define pltenter la_arc_gnu_pltenter
++#define pltexit la_arc_gnu_pltexit
++#define La_regs La_arc_regs
++#define La_retval La_arc_retval
++#define int_retval lrv_reg[0]
+diff --git a/sysdeps/unix/sysv/linux/arc/Implies b/sysdeps/unix/sysv/linux/arc/Implies
+new file mode 100644
+index 0000000000..7f739a0340
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/Implies
+@@ -0,0 +1,3 @@
++arc/nptl
++unix/sysv/linux/generic/wordsize-32
++unix/sysv/linux/generic
+diff --git a/sysdeps/unix/sysv/linux/arc/Makefile b/sysdeps/unix/sysv/linux/arc/Makefile
+new file mode 100644
+index 0000000000..a6c6dfc6ec
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/Makefile
+@@ -0,0 +1,20 @@
++ifeq ($(subdir),stdlib)
++gen-as-const-headers += ucontext_i.sym
++endif
++
++ifeq ($(subdir),signal)
++sysdep_routines += sigrestorer
++endif
++
++ifeq ($(subdir),misc)
++# MIPS/Tile-style cacheflush routine
++sysdep_headers += sys/cachectl.h
++sysdep_routines += cacheflush
++endif
++
++ifeq ($(subdir),elf)
++ifeq ($(build-shared),yes)
++# This is needed for DSO loading from static binaries.
++sysdep-dl-routines += dl-static
++endif
++endif
+diff --git a/sysdeps/unix/sysv/linux/arc/Versions b/sysdeps/unix/sysv/linux/arc/Versions
+new file mode 100644
+index 0000000000..3eedf26ae2
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/Versions
+@@ -0,0 +1,16 @@
++ld {
++ GLIBC_PRIVATE {
++ # used for loading by static libraries
++ _dl_var_init;
++ }
++}
++libc {
++ GLIBC_2.30 {
++ _flush_cache;
++ cacheflush;
++ }
++ GLIBC_PRIVATE {
++ # A copy of sigaction lives in libpthread, and needs these.
++ __default_rt_sa_restorer;
++ }
++}
+diff --git a/sysdeps/unix/sysv/linux/arc/arch-syscall.h b/sysdeps/unix/sysv/linux/arc/arch-syscall.h
+new file mode 100644
+index 0000000000..db25a17ad0
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/arch-syscall.h
+@@ -0,0 +1,317 @@
++/* AUTOGENERATED by update-syscall-lists.py. */
++#define __NR_accept 202
++#define __NR_accept4 242
++#define __NR_acct 89
++#define __NR_add_key 217
++#define __NR_adjtimex 171
++#define __NR_arc_gettls 246
++#define __NR_arc_settls 245
++#define __NR_arc_usr_cmpxchg 248
++#define __NR_bind 200
++#define __NR_bpf 280
++#define __NR_brk 214
++#define __NR_cacheflush 244
++#define __NR_capget 90
++#define __NR_capset 91
++#define __NR_chdir 49
++#define __NR_chroot 51
++#define __NR_clock_adjtime 266
++#define __NR_clock_adjtime64 405
++#define __NR_clock_getres 114
++#define __NR_clock_getres_time64 406
++#define __NR_clock_gettime 113
++#define __NR_clock_gettime64 403
++#define __NR_clock_nanosleep 115
++#define __NR_clock_nanosleep_time64 407
++#define __NR_clock_settime 112
++#define __NR_clock_settime64 404
++#define __NR_clone 220
++#define __NR_clone3 435
++#define __NR_close 57
++#define __NR_connect 203
++#define __NR_copy_file_range 285
++#define __NR_delete_module 106
++#define __NR_dup 23
++#define __NR_dup3 24
++#define __NR_epoll_create1 20
++#define __NR_epoll_ctl 21
++#define __NR_epoll_pwait 22
++#define __NR_eventfd2 19
++#define __NR_execve 221
++#define __NR_execveat 281
++#define __NR_exit 93
++#define __NR_exit_group 94
++#define __NR_faccessat 48
++#define __NR_fadvise64_64 223
++#define __NR_fallocate 47
++#define __NR_fanotify_init 262
++#define __NR_fanotify_mark 263
++#define __NR_fchdir 50
++#define __NR_fchmod 52
++#define __NR_fchmodat 53
++#define __NR_fchown 55
++#define __NR_fchownat 54
++#define __NR_fcntl64 25
++#define __NR_fdatasync 83
++#define __NR_fgetxattr 10
++#define __NR_finit_module 273
++#define __NR_flistxattr 13
++#define __NR_flock 32
++#define __NR_fremovexattr 16
++#define __NR_fsconfig 431
++#define __NR_fsetxattr 7
++#define __NR_fsmount 432
++#define __NR_fsopen 430
++#define __NR_fspick 433
++#define __NR_fstat64 80
++#define __NR_fstatat64 79
++#define __NR_fstatfs64 44
++#define __NR_fsync 82
++#define __NR_ftruncate64 46
++#define __NR_futex 98
++#define __NR_futex_time64 422
++#define __NR_get_mempolicy 236
++#define __NR_get_robust_list 100
++#define __NR_getcpu 168
++#define __NR_getcwd 17
++#define __NR_getdents64 61
++#define __NR_getegid 177
++#define __NR_geteuid 175
++#define __NR_getgid 176
++#define __NR_getgroups 158
++#define __NR_getitimer 102
++#define __NR_getpeername 205
++#define __NR_getpgid 155
++#define __NR_getpid 172
++#define __NR_getppid 173
++#define __NR_getpriority 141
++#define __NR_getrandom 278
++#define __NR_getresgid 150
++#define __NR_getresuid 148
++#define __NR_getrlimit 163
++#define __NR_getrusage 165
++#define __NR_getsid 156
++#define __NR_getsockname 204
++#define __NR_getsockopt 209
++#define __NR_gettid 178
++#define __NR_gettimeofday 169
++#define __NR_getuid 174
++#define __NR_getxattr 8
++#define __NR_init_module 105
++#define __NR_inotify_add_watch 27
++#define __NR_inotify_init1 26
++#define __NR_inotify_rm_watch 28
++#define __NR_io_cancel 3
++#define __NR_io_destroy 1
++#define __NR_io_getevents 4
++#define __NR_io_pgetevents 292
++#define __NR_io_pgetevents_time64 416
++#define __NR_io_setup 0
++#define __NR_io_submit 2
++#define __NR_io_uring_enter 426
++#define __NR_io_uring_register 427
++#define __NR_io_uring_setup 425
++#define __NR_ioctl 29
++#define __NR_ioprio_get 31
++#define __NR_ioprio_set 30
++#define __NR_kcmp 272
++#define __NR_kexec_file_load 294
++#define __NR_kexec_load 104
++#define __NR_keyctl 219
++#define __NR_kill 129
++#define __NR_lgetxattr 9
++#define __NR_linkat 37
++#define __NR_listen 201
++#define __NR_listxattr 11
++#define __NR_llistxattr 12
++#define __NR_llseek 62
++#define __NR_lookup_dcookie 18
++#define __NR_lremovexattr 15
++#define __NR_lsetxattr 6
++#define __NR_madvise 233
++#define __NR_mbind 235
++#define __NR_membarrier 283
++#define __NR_memfd_create 279
++#define __NR_migrate_pages 238
++#define __NR_mincore 232
++#define __NR_mkdirat 34
++#define __NR_mknodat 33
++#define __NR_mlock 228
++#define __NR_mlock2 284
++#define __NR_mlockall 230
++#define __NR_mmap2 222
++#define __NR_mount 40
++#define __NR_move_mount 429
++#define __NR_move_pages 239
++#define __NR_mprotect 226
++#define __NR_mq_getsetattr 185
++#define __NR_mq_notify 184
++#define __NR_mq_open 180
++#define __NR_mq_timedreceive 183
++#define __NR_mq_timedreceive_time64 419
++#define __NR_mq_timedsend 182
++#define __NR_mq_timedsend_time64 418
++#define __NR_mq_unlink 181
++#define __NR_mremap 216
++#define __NR_msgctl 187
++#define __NR_msgget 186
++#define __NR_msgrcv 188
++#define __NR_msgsnd 189
++#define __NR_msync 227
++#define __NR_munlock 229
++#define __NR_munlockall 231
++#define __NR_munmap 215
++#define __NR_name_to_handle_at 264
++#define __NR_nanosleep 101
++#define __NR_nfsservctl 42
++#define __NR_open_by_handle_at 265
++#define __NR_open_tree 428
++#define __NR_openat 56
++#define __NR_perf_event_open 241
++#define __NR_personality 92
++#define __NR_pidfd_open 434
++#define __NR_pidfd_send_signal 424
++#define __NR_pipe2 59
++#define __NR_pivot_root 41
++#define __NR_pkey_alloc 289
++#define __NR_pkey_free 290
++#define __NR_pkey_mprotect 288
++#define __NR_ppoll 73
++#define __NR_ppoll_time64 414
++#define __NR_prctl 167
++#define __NR_pread64 67
++#define __NR_preadv 69
++#define __NR_preadv2 286
++#define __NR_prlimit64 261
++#define __NR_process_vm_readv 270
++#define __NR_process_vm_writev 271
++#define __NR_pselect6 72
++#define __NR_pselect6_time64 413
++#define __NR_ptrace 117
++#define __NR_pwrite64 68
++#define __NR_pwritev 70
++#define __NR_pwritev2 287
++#define __NR_quotactl 60
++#define __NR_read 63
++#define __NR_readahead 213
++#define __NR_readlinkat 78
++#define __NR_readv 65
++#define __NR_reboot 142
++#define __NR_recvfrom 207
++#define __NR_recvmmsg 243
++#define __NR_recvmmsg_time64 417
++#define __NR_recvmsg 212
++#define __NR_remap_file_pages 234
++#define __NR_removexattr 14
++#define __NR_renameat 38
++#define __NR_renameat2 276
++#define __NR_request_key 218
++#define __NR_restart_syscall 128
++#define __NR_rseq 293
++#define __NR_rt_sigaction 134
++#define __NR_rt_sigpending 136
++#define __NR_rt_sigprocmask 135
++#define __NR_rt_sigqueueinfo 138
++#define __NR_rt_sigreturn 139
++#define __NR_rt_sigsuspend 133
++#define __NR_rt_sigtimedwait 137
++#define __NR_rt_sigtimedwait_time64 421
++#define __NR_rt_tgsigqueueinfo 240
++#define __NR_sched_get_priority_max 125
++#define __NR_sched_get_priority_min 126
++#define __NR_sched_getaffinity 123
++#define __NR_sched_getattr 275
++#define __NR_sched_getparam 121
++#define __NR_sched_getscheduler 120
++#define __NR_sched_rr_get_interval 127
++#define __NR_sched_rr_get_interval_time64 423
++#define __NR_sched_setaffinity 122
++#define __NR_sched_setattr 274
++#define __NR_sched_setparam 118
++#define __NR_sched_setscheduler 119
++#define __NR_sched_yield 124
++#define __NR_seccomp 277
++#define __NR_semctl 191
++#define __NR_semget 190
++#define __NR_semop 193
++#define __NR_semtimedop 192
++#define __NR_semtimedop_time64 420
++#define __NR_sendfile64 71
++#define __NR_sendmmsg 269
++#define __NR_sendmsg 211
++#define __NR_sendto 206
++#define __NR_set_mempolicy 237
++#define __NR_set_robust_list 99
++#define __NR_set_tid_address 96
++#define __NR_setdomainname 162
++#define __NR_setfsgid 152
++#define __NR_setfsuid 151
++#define __NR_setgid 144
++#define __NR_setgroups 159
++#define __NR_sethostname 161
++#define __NR_setitimer 103
++#define __NR_setns 268
++#define __NR_setpgid 154
++#define __NR_setpriority 140
++#define __NR_setregid 143
++#define __NR_setresgid 149
++#define __NR_setresuid 147
++#define __NR_setreuid 145
++#define __NR_setrlimit 164
++#define __NR_setsid 157
++#define __NR_setsockopt 208
++#define __NR_settimeofday 170
++#define __NR_setuid 146
++#define __NR_setxattr 5
++#define __NR_shmat 196
++#define __NR_shmctl 195
++#define __NR_shmdt 197
++#define __NR_shmget 194
++#define __NR_shutdown 210
++#define __NR_sigaltstack 132
++#define __NR_signalfd4 74
++#define __NR_socket 198
++#define __NR_socketpair 199
++#define __NR_splice 76
++#define __NR_statfs64 43
++#define __NR_statx 291
++#define __NR_swapoff 225
++#define __NR_swapon 224
++#define __NR_symlinkat 36
++#define __NR_sync 81
++#define __NR_sync_file_range 84
++#define __NR_syncfs 267
++#define __NR_sysfs 247
++#define __NR_sysinfo 179
++#define __NR_syslog 116
++#define __NR_tee 77
++#define __NR_tgkill 131
++#define __NR_timer_create 107
++#define __NR_timer_delete 111
++#define __NR_timer_getoverrun 109
++#define __NR_timer_gettime 108
++#define __NR_timer_gettime64 408
++#define __NR_timer_settime 110
++#define __NR_timer_settime64 409
++#define __NR_timerfd_create 85
++#define __NR_timerfd_gettime 87
++#define __NR_timerfd_gettime64 410
++#define __NR_timerfd_settime 86
++#define __NR_timerfd_settime64 411
++#define __NR_times 153
++#define __NR_tkill 130
++#define __NR_truncate64 45
++#define __NR_umask 166
++#define __NR_umount2 39
++#define __NR_uname 160
++#define __NR_unlinkat 35
++#define __NR_unshare 97
++#define __NR_userfaultfd 282
++#define __NR_utimensat 88
++#define __NR_utimensat_time64 412
++#define __NR_vhangup 58
++#define __NR_vmsplice 75
++#define __NR_wait4 260
++#define __NR_waitid 95
++#define __NR_write 64
++#define __NR_writev 66
+diff --git a/sysdeps/unix/sysv/linux/arc/bits/procfs.h b/sysdeps/unix/sysv/linux/arc/bits/procfs.h
+new file mode 100644
+index 0000000000..b37deaee58
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/bits/procfs.h
+@@ -0,0 +1,35 @@
++/* Types for registers for sys/procfs.h. ARC version.
++ 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_PROCFS_H
++# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> instead."
++#endif
++
++#include <sys/ucontext.h>
++
++/* And the whole bunch of them. We could have used `struct
++ user_regs' directly in the typedef, but tradition says that
++ the register set is an array, which does have some peculiar
++ semantics, so leave it that way. */
++#define ELF_NGREG (sizeof (struct user_regs_struct) / sizeof(elf_greg_t))
++
++typedef unsigned long int elf_greg_t;
++typedef unsigned long int elf_gregset_t[ELF_NGREG];
++
++/* There's no seperate floating point reg file in ARCv2. */
++typedef struct { } elf_fpregset_t;
+diff --git a/sysdeps/unix/sysv/linux/arc/bits/types/__sigset_t.h b/sysdeps/unix/sysv/linux/arc/bits/types/__sigset_t.h
+new file mode 100644
+index 0000000000..795638a30b
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/bits/types/__sigset_t.h
+@@ -0,0 +1,12 @@
++/* Architecture-specific __sigset_t definition. ARC version. */
++#ifndef ____sigset_t_defined
++#define ____sigset_t_defined
++
++/* Linux asm-generic syscall ABI expects sigset_t to hold 64 signals. */
++#define _SIGSET_NWORDS (64 / (8 * sizeof (unsigned long int)))
++typedef struct
++{
++ unsigned long int __val[_SIGSET_NWORDS];
++} __sigset_t;
++
++#endif
+diff --git a/sysdeps/unix/sysv/linux/arc/c++-types.data b/sysdeps/unix/sysv/linux/arc/c++-types.data
+new file mode 100644
+index 0000000000..303f4570c8
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/c++-types.data
+@@ -0,0 +1,67 @@
++blkcnt64_t:x
++blkcnt_t:l
++blksize_t:i
++caddr_t:Pc
++clockid_t:i
++clock_t:l
++daddr_t:i
++dev_t:y
++fd_mask:l
++fsblkcnt64_t:y
++fsblkcnt_t:m
++fsfilcnt64_t:y
++fsfilcnt_t:m
++fsid_t:8__fsid_t
++gid_t:j
++id_t:j
++ino64_t:y
++ino_t:m
++int16_t:s
++int32_t:i
++int64_t:x
++int8_t:a
++intptr_t:i
++key_t:i
++loff_t:x
++mode_t:j
++nlink_t:j
++off64_t:x
++off_t:l
++pid_t:i
++pthread_attr_t:14pthread_attr_t
++pthread_barrier_t:17pthread_barrier_t
++pthread_barrierattr_t:21pthread_barrierattr_t
++pthread_cond_t:14pthread_cond_t
++pthread_condattr_t:18pthread_condattr_t
++pthread_key_t:j
++pthread_mutex_t:15pthread_mutex_t
++pthread_mutexattr_t:19pthread_mutexattr_t
++pthread_once_t:i
++pthread_rwlock_t:16pthread_rwlock_t
++pthread_rwlockattr_t:20pthread_rwlockattr_t
++pthread_spinlock_t:i
++pthread_t:m
++quad_t:x
++register_t:i
++rlim64_t:y
++rlim_t:m
++sigset_t:10__sigset_t
++size_t:j
++socklen_t:j
++ssize_t:i
++suseconds_t:l
++time_t:l
++u_char:h
++uid_t:j
++uint:j
++u_int:j
++u_int16_t:t
++u_int32_t:j
++u_int64_t:y
++u_int8_t:h
++ulong:m
++u_long:m
++u_quad_t:y
++useconds_t:j
++ushort:t
++u_short:t
+diff --git a/sysdeps/unix/sysv/linux/arc/clone.S b/sysdeps/unix/sysv/linux/arc/clone.S
+new file mode 100644
+index 0000000000..55c2a2b60e
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/clone.S
+@@ -0,0 +1,98 @@
++/* clone() implementation for ARC.
++ Copyright (C) 2008-2019 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Andrew Jenner <andrew@codesourcery.com>, 2008.
++
++ 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/>. */
++
++
++#include <sysdep.h>
++#define _ERRNO_H 1
++#include <bits/errno.h>
++#include <tcb-offsets.h>
++
++#define CLONE_SETTLS 0x00080000
++
++/* int clone(int (*fn)(void *), void *child_stack,
++ int flags, void *arg, ...
++ < pid_t *ptid, struct user_desc *tls, pid_t *ctid > );
++
++ NOTE: I'm assuming that the last 3 args are NOT var-args and in case all
++ 3 are not relevant, caller will nevertheless pass those as NULL.
++
++ clone syscall in kernel (ABI: CONFIG_CLONE_BACKWARDS)
++
++ int sys_clone(unsigned long int clone_flags,
++ unsigned long int newsp,
++ int __user *parent_tidptr,
++ void *tls,
++ int __user *child_tidptr). */
++
++ENTRY (__clone)
++ cmp r0, 0 ; @fn can't be NULL
++ cmp.ne r1, 0 ; @child_stack can't be NULL
++ bz .L__sys_err
++
++ ; save some of the orig args
++ ; r0 containg @fn will be clobbered AFTER syscall (with ret val)
++ ; rest are clobbered BEFORE syscall due to different arg ordering
++ mov r10, r0 ; @fn
++ mov r11, r3 ; @args
++ mov r12, r2 ; @clone_flags
++ mov r9, r5 ; @tls
++
++ ; adjust libc args for syscall
++
++ mov r0, r2 ; libc @flags is 1st syscall arg
++ mov r2, r4 ; libc @ptid
++ mov r3, r5 ; libc @tls
++ mov r4, r6 ; libc @ctid
++ mov r8, __NR_clone
++ ARC_TRAP_INSN
++
++ cmp r0, 0 ; return code : 0 new process, !0 parent
++ blt .L__sys_err2 ; < 0 (signed) error
++ jnz [blink] ; Parent returns
++
++ ; ----- child starts here ---------
++
++ ; Setup TP register (only recent kernels v4.19+ do that)
++ and.f 0, r12, CLONE_SETTLS
++ mov.nz r25, r9
++
++ ; child jumps off to @fn with @arg as argument, and returns here
++ jl.d [r10]
++ mov r0, r11
++
++ ; exit() with result from @fn (already in r0)
++ mov r8, __NR_exit
++ ARC_TRAP_INSN
++ ; In case it ever came back
++ flag 1
++
++.L__sys_err:
++ mov r0, -EINVAL
++.L__sys_err2:
++ ; (1) No need to make -ve kernel error code as positive errno
++ ; __syscall_error expects the -ve error code returned by kernel
++ ; (2) r0 still had orig -ve kernel error code
++ ; (3) Tail call to __syscall_error so we dont have to come back
++ ; here hence instead of jmp-n-link (reg push/pop) we do jmp
++ ; (4) No need to route __syscall_error via PLT, B is inherently
++ ; position independent
++ b __syscall_error
++PSEUDO_END (__clone)
++libc_hidden_def (__clone)
++weak_alias (__clone, clone)
+diff --git a/sysdeps/unix/sysv/linux/arc/configure b/sysdeps/unix/sysv/linux/arc/configure
+new file mode 100644
+index 0000000000..f74fa7cb02
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/configure
+@@ -0,0 +1,4 @@
++# This file is generated from configure.in by Autoconf. DO NOT EDIT!
++ # Local configure fragment for sysdeps/unix/sysv/linux/arc.
++
++arch_minimum_kernel=3.9.0
+diff --git a/sysdeps/unix/sysv/linux/arc/configure.ac b/sysdeps/unix/sysv/linux/arc/configure.ac
+new file mode 100644
+index 0000000000..a9528032d3
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/configure.ac
+@@ -0,0 +1,4 @@
++GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
++# Local configure fragment for sysdeps/unix/sysv/linux/arc.
++
++arch_minimum_kernel=3.9.0
+diff --git a/sysdeps/unix/sysv/linux/arc/dl-static.c b/sysdeps/unix/sysv/linux/arc/dl-static.c
+new file mode 100644
+index 0000000000..1a8757c984
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/dl-static.c
+@@ -0,0 +1,84 @@
++/* Variable initialization. ARC version.
++ Copyright (C) 2001-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/>. */
++
++#include <ldsodefs.h>
++
++#ifdef SHARED
++
++void
++_dl_var_init (void *array[])
++{
++ /* It has to match "variables" below. */
++ enum
++ {
++ DL_PAGESIZE = 0
++ };
++
++ GLRO(dl_pagesize) = *((size_t *) array[DL_PAGESIZE]);
++}
++
++#else
++
++static void *variables[] =
++{
++ &GLRO(dl_pagesize)
++};
++
++static void
++_dl_unprotect_relro (struct link_map *l)
++{
++ ElfW(Addr) start = ((l->l_addr + l->l_relro_addr)
++ & ~(GLRO(dl_pagesize) - 1));
++ ElfW(Addr) end = ((l->l_addr + l->l_relro_addr + l->l_relro_size)
++ & ~(GLRO(dl_pagesize) - 1));
++
++ if (start != end)
++ __mprotect ((void *) start, end - start, PROT_READ | PROT_WRITE);
++}
++
++void
++_dl_static_init (struct link_map *l)
++{
++ struct link_map *rtld_map = l;
++ struct r_scope_elem **scope;
++ const ElfW(Sym) *ref = NULL;
++ lookup_t loadbase;
++ void (*f) (void *[]);
++ size_t i;
++
++ loadbase = _dl_lookup_symbol_x ("_dl_var_init", l, &ref, l->l_local_scope,
++ NULL, 0, 1, NULL);
++
++ for (scope = l->l_local_scope; *scope != NULL; scope++)
++ for (i = 0; i < (*scope)->r_nlist; i++)
++ if ((*scope)->r_list[i] == loadbase)
++ {
++ rtld_map = (*scope)->r_list[i];
++ break;
++ }
++
++ if (ref != NULL)
++ {
++ f = (void (*) (void *[])) DL_SYMBOL_ADDRESS (loadbase, ref);
++ _dl_unprotect_relro (rtld_map);
++ f (variables);
++ _dl_protect_relro (rtld_map);
++ }
++}
++
++#endif
+diff --git a/sysdeps/unix/sysv/linux/arc/getcontext.S b/sysdeps/unix/sysv/linux/arc/getcontext.S
+new file mode 100644
+index 0000000000..723cc237d8
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/getcontext.S
+@@ -0,0 +1,63 @@
++/* Save current context for ARC.
++ Copyright (C) 2009-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/>. */
++
++#include "ucontext-macros.h"
++
++/* int getcontext (ucontext_t *ucp)
++ Save machine context in @ucp and return 0 on success, -1 on error
++ - saves callee saved registers only
++ - layout mandated by uncontext_t:m_context (hence different from setjmp). */
++
++ENTRY (__getcontext)
++
++ /* Callee saved registers. */
++ SAVE_REG (r13, r0, 37)
++ SAVE_REG (r14, r0, 36)
++ SAVE_REG (r15, r0, 35)
++ SAVE_REG (r16, r0, 34)
++ SAVE_REG (r17, r0, 33)
++ SAVE_REG (r18, r0, 32)
++ SAVE_REG (r19, r0, 31)
++ SAVE_REG (r20, r0, 30)
++ SAVE_REG (r21, r0, 29)
++ SAVE_REG (r22, r0, 28)
++ SAVE_REG (r23, r0, 27)
++ SAVE_REG (r24, r0, 26)
++ SAVE_REG (r25, r0, 25)
++
++ SAVE_REG (blink, r0, 7)
++ SAVE_REG (fp, r0, 8)
++ SAVE_REG (sp, r0, 23)
++
++ /* Save 0 in r0 placeholder to return 0 when this @ucp activated. */
++ mov r9, 0
++ SAVE_REG (r9, r0, 22)
++
++ /* rt_sigprocmask (SIG_BLOCK, NULL, &ucp->uc_sigmask, _NSIG8). */
++ mov r3, _NSIG8
++ add r2, r0, UCONTEXT_SIGMASK
++ mov r1, 0
++ mov r0, SIG_BLOCK
++ mov r8, __NR_rt_sigprocmask
++ ARC_TRAP_INSN
++ brhi r0, -1024, .Lcall_syscall_err
++ j.d [blink]
++ mov r0, 0 /* Success, error handled in .Lcall_syscall_err. */
++
++PSEUDO_END (__getcontext)
++weak_alias (__getcontext, getcontext)
+diff --git a/sysdeps/unix/sysv/linux/arc/ipc_priv.h b/sysdeps/unix/sysv/linux/arc/ipc_priv.h
+new file mode 100644
+index 0000000000..309eb3064e
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/ipc_priv.h
+@@ -0,0 +1,21 @@
++/* Old SysV permission definition for Linux. ARC version.
++ Copyright (C) 2016-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/>. */
++
++#include <sys/ipc.h> /* For __key_t */
++
++#define __IPC_64 0x0
+diff --git a/sysdeps/unix/sysv/linux/arc/jmp_buf-macros.h b/sysdeps/unix/sysv/linux/arc/jmp_buf-macros.h
+new file mode 100644
+index 0000000000..6c12939848
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/jmp_buf-macros.h
+@@ -0,0 +1,6 @@
++#define JMP_BUF_SIZE (32 + 1 + 64/(8 * sizeof (unsigned long int))) * sizeof (unsigned long int)
++#define SIGJMP_BUF_SIZE (32 + 1 + 64/(8 * sizeof (unsigned long int))) * sizeof (unsigned long int)
++#define JMP_BUF_ALIGN __alignof__ (unsigned long int)
++#define SIGJMP_BUF_ALIGN __alignof__ (unsigned long int)
++#define MASK_WAS_SAVED_OFFSET (32 * sizeof (unsigned long int))
++#define SAVED_MASK_OFFSET (33 * sizeof (unsigned long int))
+diff --git a/sysdeps/unix/sysv/linux/arc/kernel-features.h b/sysdeps/unix/sysv/linux/arc/kernel-features.h
+new file mode 100644
+index 0000000000..00255337bc
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/kernel-features.h
+@@ -0,0 +1,28 @@
++/* Set flags signalling availability of kernel features based on given
++ kernel version number.
++
++ Copyright (C) 2009-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/>. */
++
++/* The minimum supported kernel version for ARC is 3.9,
++ guaranteeing many kernel features. */
++
++#include_next <kernel-features.h>
++
++#undef __ASSUME_CLONE_DEFAULT
++#define __ASSUME_CLONE_BACKWARDS 1
+diff --git a/sysdeps/unix/sysv/linux/arc/ld.abilist b/sysdeps/unix/sysv/linux/arc/ld.abilist
+new file mode 100644
+index 0000000000..41183d7bee
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/ld.abilist
+@@ -0,0 +1,9 @@
++GLIBC_2.30 __libc_stack_end D 0x4
++GLIBC_2.30 __stack_chk_guard D 0x4
++GLIBC_2.30 __tls_get_addr F
++GLIBC_2.30 _dl_mcount F
++GLIBC_2.30 _r_debug D 0x14
++GLIBC_2.30 calloc F
++GLIBC_2.30 free F
++GLIBC_2.30 malloc F
++GLIBC_2.30 realloc F
+diff --git a/sysdeps/unix/sysv/linux/arc/ldsodefs.h b/sysdeps/unix/sysv/linux/arc/ldsodefs.h
+new file mode 100644
+index 0000000000..8c5c6800af
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/ldsodefs.h
+@@ -0,0 +1,32 @@
++/* Run-time dynamic linker data structures for loaded ELF shared objects. ARC
++ Copyright (C) 2001-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 _LDSODEFS_H
++
++/* Get the real definitions. */
++#include_next <ldsodefs.h>
++
++/* Now define our stuff. */
++
++/* We need special support to initialize DSO loaded for statically linked
++ binaries. */
++extern void _dl_static_init (struct link_map *map);
++#undef DL_STATIC_INIT
++#define DL_STATIC_INIT(map) _dl_static_init (map)
++
++#endif /* ldsodefs.h */
+diff --git a/sysdeps/unix/sysv/linux/arc/libBrokenLocale.abilist b/sysdeps/unix/sysv/linux/arc/libBrokenLocale.abilist
+new file mode 100644
+index 0000000000..c6253c0ae8
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libBrokenLocale.abilist
+@@ -0,0 +1 @@
++GLIBC_2.30 __ctype_get_mb_cur_max F
+diff --git a/sysdeps/unix/sysv/linux/arc/libanl.abilist b/sysdeps/unix/sysv/linux/arc/libanl.abilist
+new file mode 100644
+index 0000000000..d3b753219e
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libanl.abilist
+@@ -0,0 +1,4 @@
++GLIBC_2.30 gai_cancel F
++GLIBC_2.30 gai_error F
++GLIBC_2.30 gai_suspend F
++GLIBC_2.30 getaddrinfo_a F
+diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
+new file mode 100644
+index 0000000000..823ae25bcc
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
+@@ -0,0 +1,2084 @@
++GLIBC_2.30 _Exit F
++GLIBC_2.30 _IO_2_1_stderr_ D 0x98
++GLIBC_2.30 _IO_2_1_stdin_ D 0x98
++GLIBC_2.30 _IO_2_1_stdout_ D 0x98
++GLIBC_2.30 _IO_adjust_column F
++GLIBC_2.30 _IO_adjust_wcolumn F
++GLIBC_2.30 _IO_default_doallocate F
++GLIBC_2.30 _IO_default_finish F
++GLIBC_2.30 _IO_default_pbackfail F
++GLIBC_2.30 _IO_default_uflow F
++GLIBC_2.30 _IO_default_xsgetn F
++GLIBC_2.30 _IO_default_xsputn F
++GLIBC_2.30 _IO_do_write F
++GLIBC_2.30 _IO_doallocbuf F
++GLIBC_2.30 _IO_fclose F
++GLIBC_2.30 _IO_fdopen F
++GLIBC_2.30 _IO_feof F
++GLIBC_2.30 _IO_ferror F
++GLIBC_2.30 _IO_fflush F
++GLIBC_2.30 _IO_fgetpos F
++GLIBC_2.30 _IO_fgetpos64 F
++GLIBC_2.30 _IO_fgets F
++GLIBC_2.30 _IO_file_attach F
++GLIBC_2.30 _IO_file_close F
++GLIBC_2.30 _IO_file_close_it F
++GLIBC_2.30 _IO_file_doallocate F
++GLIBC_2.30 _IO_file_finish F
++GLIBC_2.30 _IO_file_fopen F
++GLIBC_2.30 _IO_file_init F
++GLIBC_2.30 _IO_file_jumps D 0x54
++GLIBC_2.30 _IO_file_open F
++GLIBC_2.30 _IO_file_overflow F
++GLIBC_2.30 _IO_file_read F
++GLIBC_2.30 _IO_file_seek F
++GLIBC_2.30 _IO_file_seekoff F
++GLIBC_2.30 _IO_file_setbuf F
++GLIBC_2.30 _IO_file_stat F
++GLIBC_2.30 _IO_file_sync F
++GLIBC_2.30 _IO_file_underflow F
++GLIBC_2.30 _IO_file_write F
++GLIBC_2.30 _IO_file_xsputn F
++GLIBC_2.30 _IO_flockfile F
++GLIBC_2.30 _IO_flush_all F
++GLIBC_2.30 _IO_flush_all_linebuffered F
++GLIBC_2.30 _IO_fopen F
++GLIBC_2.30 _IO_fprintf F
++GLIBC_2.30 _IO_fputs F
++GLIBC_2.30 _IO_fread F
++GLIBC_2.30 _IO_free_backup_area F
++GLIBC_2.30 _IO_free_wbackup_area F
++GLIBC_2.30 _IO_fsetpos F
++GLIBC_2.30 _IO_fsetpos64 F
++GLIBC_2.30 _IO_ftell F
++GLIBC_2.30 _IO_ftrylockfile F
++GLIBC_2.30 _IO_funlockfile F
++GLIBC_2.30 _IO_fwrite F
++GLIBC_2.30 _IO_getc F
++GLIBC_2.30 _IO_getline F
++GLIBC_2.30 _IO_getline_info F
++GLIBC_2.30 _IO_gets F
++GLIBC_2.30 _IO_init F
++GLIBC_2.30 _IO_init_marker F
++GLIBC_2.30 _IO_init_wmarker F
++GLIBC_2.30 _IO_iter_begin F
++GLIBC_2.30 _IO_iter_end F
++GLIBC_2.30 _IO_iter_file F
++GLIBC_2.30 _IO_iter_next F
++GLIBC_2.30 _IO_least_wmarker F
++GLIBC_2.30 _IO_link_in F
++GLIBC_2.30 _IO_list_all D 0x4
++GLIBC_2.30 _IO_list_lock F
++GLIBC_2.30 _IO_list_resetlock F
++GLIBC_2.30 _IO_list_unlock F
++GLIBC_2.30 _IO_marker_delta F
++GLIBC_2.30 _IO_marker_difference F
++GLIBC_2.30 _IO_padn F
++GLIBC_2.30 _IO_peekc_locked F
++GLIBC_2.30 _IO_popen F
++GLIBC_2.30 _IO_printf F
++GLIBC_2.30 _IO_proc_close F
++GLIBC_2.30 _IO_proc_open F
++GLIBC_2.30 _IO_putc F
++GLIBC_2.30 _IO_puts F
++GLIBC_2.30 _IO_remove_marker F
++GLIBC_2.30 _IO_seekmark F
++GLIBC_2.30 _IO_seekoff F
++GLIBC_2.30 _IO_seekpos F
++GLIBC_2.30 _IO_seekwmark F
++GLIBC_2.30 _IO_setb F
++GLIBC_2.30 _IO_setbuffer F
++GLIBC_2.30 _IO_setvbuf F
++GLIBC_2.30 _IO_sgetn F
++GLIBC_2.30 _IO_sprintf F
++GLIBC_2.30 _IO_sputbackc F
++GLIBC_2.30 _IO_sputbackwc F
++GLIBC_2.30 _IO_sscanf F
++GLIBC_2.30 _IO_str_init_readonly F
++GLIBC_2.30 _IO_str_init_static F
++GLIBC_2.30 _IO_str_overflow F
++GLIBC_2.30 _IO_str_pbackfail F
++GLIBC_2.30 _IO_str_seekoff F
++GLIBC_2.30 _IO_str_underflow F
++GLIBC_2.30 _IO_sungetc F
++GLIBC_2.30 _IO_sungetwc F
++GLIBC_2.30 _IO_switch_to_get_mode F
++GLIBC_2.30 _IO_switch_to_main_wget_area F
++GLIBC_2.30 _IO_switch_to_wbackup_area F
++GLIBC_2.30 _IO_switch_to_wget_mode F
++GLIBC_2.30 _IO_un_link F
++GLIBC_2.30 _IO_ungetc F
++GLIBC_2.30 _IO_unsave_markers F
++GLIBC_2.30 _IO_unsave_wmarkers F
++GLIBC_2.30 _IO_vfprintf F
++GLIBC_2.30 _IO_vsprintf F
++GLIBC_2.30 _IO_wdefault_doallocate F
++GLIBC_2.30 _IO_wdefault_finish F
++GLIBC_2.30 _IO_wdefault_pbackfail F
++GLIBC_2.30 _IO_wdefault_uflow F
++GLIBC_2.30 _IO_wdefault_xsgetn F
++GLIBC_2.30 _IO_wdefault_xsputn F
++GLIBC_2.30 _IO_wdo_write F
++GLIBC_2.30 _IO_wdoallocbuf F
++GLIBC_2.30 _IO_wfile_jumps D 0x54
++GLIBC_2.30 _IO_wfile_overflow F
++GLIBC_2.30 _IO_wfile_seekoff F
++GLIBC_2.30 _IO_wfile_sync F
++GLIBC_2.30 _IO_wfile_underflow F
++GLIBC_2.30 _IO_wfile_xsputn F
++GLIBC_2.30 _IO_wmarker_delta F
++GLIBC_2.30 _IO_wsetb F
++GLIBC_2.30 ___brk_addr D 0x4
++GLIBC_2.30 __adjtimex F
++GLIBC_2.30 __after_morecore_hook D 0x4
++GLIBC_2.30 __argz_count F
++GLIBC_2.30 __argz_next F
++GLIBC_2.30 __argz_stringify F
++GLIBC_2.30 __asprintf F
++GLIBC_2.30 __asprintf_chk F
++GLIBC_2.30 __assert F
++GLIBC_2.30 __assert_fail F
++GLIBC_2.30 __assert_perror_fail F
++GLIBC_2.30 __backtrace F
++GLIBC_2.30 __backtrace_symbols F
++GLIBC_2.30 __backtrace_symbols_fd F
++GLIBC_2.30 __bsd_getpgrp F
++GLIBC_2.30 __bzero F
++GLIBC_2.30 __check_rhosts_file D 0x4
++GLIBC_2.30 __chk_fail F
++GLIBC_2.30 __clone F
++GLIBC_2.30 __close F
++GLIBC_2.30 __cmsg_nxthdr F
++GLIBC_2.30 __confstr_chk F
++GLIBC_2.30 __connect F
++GLIBC_2.30 __ctype_b_loc F
++GLIBC_2.30 __ctype_get_mb_cur_max F
++GLIBC_2.30 __ctype_tolower_loc F
++GLIBC_2.30 __ctype_toupper_loc F
++GLIBC_2.30 __curbrk D 0x4
++GLIBC_2.30 __cxa_at_quick_exit F
++GLIBC_2.30 __cxa_atexit F
++GLIBC_2.30 __cxa_finalize F
++GLIBC_2.30 __cxa_thread_atexit_impl F
++GLIBC_2.30 __cyg_profile_func_enter F
++GLIBC_2.30 __cyg_profile_func_exit F
++GLIBC_2.30 __daylight D 0x4
++GLIBC_2.30 __dcgettext F
++GLIBC_2.30 __default_morecore F
++GLIBC_2.30 __dgettext F
++GLIBC_2.30 __dprintf_chk F
++GLIBC_2.30 __dup2 F
++GLIBC_2.30 __duplocale F
++GLIBC_2.30 __endmntent F
++GLIBC_2.30 __environ D 0x4
++GLIBC_2.30 __errno_location F
++GLIBC_2.30 __explicit_bzero_chk F
++GLIBC_2.30 __fbufsize F
++GLIBC_2.30 __fcntl F
++GLIBC_2.30 __fdelt_chk F
++GLIBC_2.30 __fdelt_warn F
++GLIBC_2.30 __ffs F
++GLIBC_2.30 __fgets_chk F
++GLIBC_2.30 __fgets_unlocked_chk F
++GLIBC_2.30 __fgetws_chk F
++GLIBC_2.30 __fgetws_unlocked_chk F
++GLIBC_2.30 __finite F
++GLIBC_2.30 __finitef F
++GLIBC_2.30 __flbf F
++GLIBC_2.30 __fork F
++GLIBC_2.30 __fpending F
++GLIBC_2.30 __fprintf_chk F
++GLIBC_2.30 __fpu_control D 0x4
++GLIBC_2.30 __fpurge F
++GLIBC_2.30 __fread_chk F
++GLIBC_2.30 __fread_unlocked_chk F
++GLIBC_2.30 __freadable F
++GLIBC_2.30 __freading F
++GLIBC_2.30 __free_hook D 0x4
++GLIBC_2.30 __freelocale F
++GLIBC_2.30 __fsetlocking F
++GLIBC_2.30 __fwprintf_chk F
++GLIBC_2.30 __fwritable F
++GLIBC_2.30 __fwriting F
++GLIBC_2.30 __fxstat F
++GLIBC_2.30 __fxstat64 F
++GLIBC_2.30 __fxstatat F
++GLIBC_2.30 __fxstatat64 F
++GLIBC_2.30 __getauxval F
++GLIBC_2.30 __getcwd_chk F
++GLIBC_2.30 __getdelim F
++GLIBC_2.30 __getdomainname_chk F
++GLIBC_2.30 __getgroups_chk F
++GLIBC_2.30 __gethostname_chk F
++GLIBC_2.30 __getlogin_r_chk F
++GLIBC_2.30 __getmntent_r F
++GLIBC_2.30 __getpagesize F
++GLIBC_2.30 __getpgid F
++GLIBC_2.30 __getpid F
++GLIBC_2.30 __gets_chk F
++GLIBC_2.30 __gettimeofday F
++GLIBC_2.30 __getwd_chk F
++GLIBC_2.30 __gmtime_r F
++GLIBC_2.30 __h_errno_location F
++GLIBC_2.30 __isalnum_l F
++GLIBC_2.30 __isalpha_l F
++GLIBC_2.30 __isascii_l F
++GLIBC_2.30 __isblank_l F
++GLIBC_2.30 __iscntrl_l F
++GLIBC_2.30 __isctype F
++GLIBC_2.30 __isdigit_l F
++GLIBC_2.30 __isgraph_l F
++GLIBC_2.30 __isinf F
++GLIBC_2.30 __isinff F
++GLIBC_2.30 __islower_l F
++GLIBC_2.30 __isnan F
++GLIBC_2.30 __isnanf F
++GLIBC_2.30 __isoc99_fscanf F
++GLIBC_2.30 __isoc99_fwscanf F
++GLIBC_2.30 __isoc99_scanf F
++GLIBC_2.30 __isoc99_sscanf F
++GLIBC_2.30 __isoc99_swscanf F
++GLIBC_2.30 __isoc99_vfscanf F
++GLIBC_2.30 __isoc99_vfwscanf F
++GLIBC_2.30 __isoc99_vscanf F
++GLIBC_2.30 __isoc99_vsscanf F
++GLIBC_2.30 __isoc99_vswscanf F
++GLIBC_2.30 __isoc99_vwscanf F
++GLIBC_2.30 __isoc99_wscanf F
++GLIBC_2.30 __isprint_l F
++GLIBC_2.30 __ispunct_l F
++GLIBC_2.30 __isspace_l F
++GLIBC_2.30 __isupper_l F
++GLIBC_2.30 __iswalnum_l F
++GLIBC_2.30 __iswalpha_l F
++GLIBC_2.30 __iswblank_l F
++GLIBC_2.30 __iswcntrl_l F
++GLIBC_2.30 __iswctype F
++GLIBC_2.30 __iswctype_l F
++GLIBC_2.30 __iswdigit_l F
++GLIBC_2.30 __iswgraph_l F
++GLIBC_2.30 __iswlower_l F
++GLIBC_2.30 __iswprint_l F
++GLIBC_2.30 __iswpunct_l F
++GLIBC_2.30 __iswspace_l F
++GLIBC_2.30 __iswupper_l F
++GLIBC_2.30 __iswxdigit_l F
++GLIBC_2.30 __isxdigit_l F
++GLIBC_2.30 __ivaliduser F
++GLIBC_2.30 __key_decryptsession_pk_LOCAL D 0x4
++GLIBC_2.30 __key_encryptsession_pk_LOCAL D 0x4
++GLIBC_2.30 __key_gendes_LOCAL D 0x4
++GLIBC_2.30 __libc_allocate_rtsig F
++GLIBC_2.30 __libc_calloc F
++GLIBC_2.30 __libc_current_sigrtmax F
++GLIBC_2.30 __libc_current_sigrtmin F
++GLIBC_2.30 __libc_free F
++GLIBC_2.30 __libc_freeres F
++GLIBC_2.30 __libc_init_first F
++GLIBC_2.30 __libc_mallinfo F
++GLIBC_2.30 __libc_malloc F
++GLIBC_2.30 __libc_mallopt F
++GLIBC_2.30 __libc_memalign F
++GLIBC_2.30 __libc_pvalloc F
++GLIBC_2.30 __libc_realloc F
++GLIBC_2.30 __libc_sa_len F
++GLIBC_2.30 __libc_start_main F
++GLIBC_2.30 __libc_valloc F
++GLIBC_2.30 __longjmp_chk F
++GLIBC_2.30 __lseek F
++GLIBC_2.30 __lxstat F
++GLIBC_2.30 __lxstat64 F
++GLIBC_2.30 __malloc_hook D 0x4
++GLIBC_2.30 __mbrlen F
++GLIBC_2.30 __mbrtowc F
++GLIBC_2.30 __mbsnrtowcs_chk F
++GLIBC_2.30 __mbsrtowcs_chk F
++GLIBC_2.30 __mbstowcs_chk F
++GLIBC_2.30 __memalign_hook D 0x4
++GLIBC_2.30 __memcpy_chk F
++GLIBC_2.30 __memmove_chk F
++GLIBC_2.30 __mempcpy F
++GLIBC_2.30 __mempcpy_chk F
++GLIBC_2.30 __memset_chk F
++GLIBC_2.30 __monstartup F
++GLIBC_2.30 __morecore D 0x4
++GLIBC_2.30 __nanosleep F
++GLIBC_2.30 __newlocale F
++GLIBC_2.30 __nl_langinfo_l F
++GLIBC_2.30 __nss_configure_lookup F
++GLIBC_2.30 __nss_hostname_digits_dots F
++GLIBC_2.30 __obstack_printf_chk F
++GLIBC_2.30 __obstack_vprintf_chk F
++GLIBC_2.30 __open F
++GLIBC_2.30 __open64 F
++GLIBC_2.30 __open64_2 F
++GLIBC_2.30 __open_2 F
++GLIBC_2.30 __openat64_2 F
++GLIBC_2.30 __openat_2 F
++GLIBC_2.30 __overflow F
++GLIBC_2.30 __pipe F
++GLIBC_2.30 __poll F
++GLIBC_2.30 __poll_chk F
++GLIBC_2.30 __posix_getopt F
++GLIBC_2.30 __ppoll_chk F
++GLIBC_2.30 __pread64 F
++GLIBC_2.30 __pread64_chk F
++GLIBC_2.30 __pread_chk F
++GLIBC_2.30 __printf_chk F
++GLIBC_2.30 __printf_fp F
++GLIBC_2.30 __profile_frequency F
++GLIBC_2.30 __progname D 0x4
++GLIBC_2.30 __progname_full D 0x4
++GLIBC_2.30 __ptsname_r_chk F
++GLIBC_2.30 __pwrite64 F
++GLIBC_2.30 __rawmemchr F
++GLIBC_2.30 __rcmd_errstr D 0x4
++GLIBC_2.30 __read F
++GLIBC_2.30 __read_chk F
++GLIBC_2.30 __readlink_chk F
++GLIBC_2.30 __readlinkat_chk F
++GLIBC_2.30 __realloc_hook D 0x4
++GLIBC_2.30 __realpath_chk F
++GLIBC_2.30 __recv_chk F
++GLIBC_2.30 __recvfrom_chk F
++GLIBC_2.30 __register_atfork F
++GLIBC_2.30 __res_init F
++GLIBC_2.30 __res_nclose F
++GLIBC_2.30 __res_ninit F
++GLIBC_2.30 __res_randomid F
++GLIBC_2.30 __res_state F
++GLIBC_2.30 __rpc_thread_createerr F
++GLIBC_2.30 __rpc_thread_svc_fdset F
++GLIBC_2.30 __rpc_thread_svc_max_pollfd F
++GLIBC_2.30 __rpc_thread_svc_pollfd F
++GLIBC_2.30 __sbrk F
++GLIBC_2.30 __sched_cpualloc F
++GLIBC_2.30 __sched_cpucount F
++GLIBC_2.30 __sched_cpufree F
++GLIBC_2.30 __sched_get_priority_max F
++GLIBC_2.30 __sched_get_priority_min F
++GLIBC_2.30 __sched_getparam F
++GLIBC_2.30 __sched_getscheduler F
++GLIBC_2.30 __sched_setscheduler F
++GLIBC_2.30 __sched_yield F
++GLIBC_2.30 __select F
++GLIBC_2.30 __send F
++GLIBC_2.30 __setmntent F
++GLIBC_2.30 __setpgid F
++GLIBC_2.30 __sigaction F
++GLIBC_2.30 __signbit F
++GLIBC_2.30 __signbitf F
++GLIBC_2.30 __sigpause F
++GLIBC_2.30 __sigsetjmp F
++GLIBC_2.30 __sigsuspend F
++GLIBC_2.30 __snprintf_chk F
++GLIBC_2.30 __sprintf_chk F
++GLIBC_2.30 __stack_chk_fail F
++GLIBC_2.30 __statfs F
++GLIBC_2.30 __stpcpy F
++GLIBC_2.30 __stpcpy_chk F
++GLIBC_2.30 __stpncpy F
++GLIBC_2.30 __stpncpy_chk F
++GLIBC_2.30 __strcasecmp F
++GLIBC_2.30 __strcasecmp_l F
++GLIBC_2.30 __strcasestr F
++GLIBC_2.30 __strcat_chk F
++GLIBC_2.30 __strcoll_l F
++GLIBC_2.30 __strcpy_chk F
++GLIBC_2.30 __strdup F
++GLIBC_2.30 __strerror_r F
++GLIBC_2.30 __strfmon_l F
++GLIBC_2.30 __strftime_l F
++GLIBC_2.30 __strncasecmp_l F
++GLIBC_2.30 __strncat_chk F
++GLIBC_2.30 __strncpy_chk F
++GLIBC_2.30 __strndup F
++GLIBC_2.30 __strsep_g F
++GLIBC_2.30 __strtod_internal F
++GLIBC_2.30 __strtod_l F
++GLIBC_2.30 __strtof_internal F
++GLIBC_2.30 __strtof_l F
++GLIBC_2.30 __strtok_r F
++GLIBC_2.30 __strtol_internal F
++GLIBC_2.30 __strtol_l F
++GLIBC_2.30 __strtold_internal F
++GLIBC_2.30 __strtold_l F
++GLIBC_2.30 __strtoll_internal F
++GLIBC_2.30 __strtoll_l F
++GLIBC_2.30 __strtoul_internal F
++GLIBC_2.30 __strtoul_l F
++GLIBC_2.30 __strtoull_internal F
++GLIBC_2.30 __strtoull_l F
++GLIBC_2.30 __strverscmp F
++GLIBC_2.30 __strxfrm_l F
++GLIBC_2.30 __swprintf_chk F
++GLIBC_2.30 __syscall_error F
++GLIBC_2.30 __sysconf F
++GLIBC_2.30 __syslog_chk F
++GLIBC_2.30 __sysv_signal F
++GLIBC_2.30 __timezone D 0x4
++GLIBC_2.30 __toascii_l F
++GLIBC_2.30 __tolower_l F
++GLIBC_2.30 __toupper_l F
++GLIBC_2.30 __towctrans F
++GLIBC_2.30 __towctrans_l F
++GLIBC_2.30 __towlower_l F
++GLIBC_2.30 __towupper_l F
++GLIBC_2.30 __ttyname_r_chk F
++GLIBC_2.30 __tzname D 0x8
++GLIBC_2.30 __uflow F
++GLIBC_2.30 __underflow F
++GLIBC_2.30 __uselocale F
++GLIBC_2.30 __vasprintf_chk F
++GLIBC_2.30 __vdprintf_chk F
++GLIBC_2.30 __vfork F
++GLIBC_2.30 __vfprintf_chk F
++GLIBC_2.30 __vfscanf F
++GLIBC_2.30 __vfwprintf_chk F
++GLIBC_2.30 __vprintf_chk F
++GLIBC_2.30 __vsnprintf F
++GLIBC_2.30 __vsnprintf_chk F
++GLIBC_2.30 __vsprintf_chk F
++GLIBC_2.30 __vsscanf F
++GLIBC_2.30 __vswprintf_chk F
++GLIBC_2.30 __vsyslog_chk F
++GLIBC_2.30 __vwprintf_chk F
++GLIBC_2.30 __wait F
++GLIBC_2.30 __waitpid F
++GLIBC_2.30 __wcpcpy_chk F
++GLIBC_2.30 __wcpncpy_chk F
++GLIBC_2.30 __wcrtomb_chk F
++GLIBC_2.30 __wcscasecmp_l F
++GLIBC_2.30 __wcscat_chk F
++GLIBC_2.30 __wcscoll_l F
++GLIBC_2.30 __wcscpy_chk F
++GLIBC_2.30 __wcsftime_l F
++GLIBC_2.30 __wcsncasecmp_l F
++GLIBC_2.30 __wcsncat_chk F
++GLIBC_2.30 __wcsncpy_chk F
++GLIBC_2.30 __wcsnrtombs_chk F
++GLIBC_2.30 __wcsrtombs_chk F
++GLIBC_2.30 __wcstod_internal F
++GLIBC_2.30 __wcstod_l F
++GLIBC_2.30 __wcstof_internal F
++GLIBC_2.30 __wcstof_l F
++GLIBC_2.30 __wcstol_internal F
++GLIBC_2.30 __wcstol_l F
++GLIBC_2.30 __wcstold_internal F
++GLIBC_2.30 __wcstold_l F
++GLIBC_2.30 __wcstoll_internal F
++GLIBC_2.30 __wcstoll_l F
++GLIBC_2.30 __wcstombs_chk F
++GLIBC_2.30 __wcstoul_internal F
++GLIBC_2.30 __wcstoul_l F
++GLIBC_2.30 __wcstoull_internal F
++GLIBC_2.30 __wcstoull_l F
++GLIBC_2.30 __wcsxfrm_l F
++GLIBC_2.30 __wctomb_chk F
++GLIBC_2.30 __wctrans_l F
++GLIBC_2.30 __wctype_l F
++GLIBC_2.30 __wmemcpy_chk F
++GLIBC_2.30 __wmemmove_chk F
++GLIBC_2.30 __wmempcpy_chk F
++GLIBC_2.30 __wmemset_chk F
++GLIBC_2.30 __woverflow F
++GLIBC_2.30 __wprintf_chk F
++GLIBC_2.30 __write F
++GLIBC_2.30 __wuflow F
++GLIBC_2.30 __wunderflow F
++GLIBC_2.30 __xmknod F
++GLIBC_2.30 __xmknodat F
++GLIBC_2.30 __xpg_basename F
++GLIBC_2.30 __xpg_sigpause F
++GLIBC_2.30 __xpg_strerror_r F
++GLIBC_2.30 __xstat F
++GLIBC_2.30 __xstat64 F
++GLIBC_2.30 _authenticate F
++GLIBC_2.30 _dl_mcount_wrapper F
++GLIBC_2.30 _dl_mcount_wrapper_check F
++GLIBC_2.30 _environ D 0x4
++GLIBC_2.30 _exit F
++GLIBC_2.30 _flush_cache F
++GLIBC_2.30 _flushlbf F
++GLIBC_2.30 _libc_intl_domainname D 0x5
++GLIBC_2.30 _longjmp F
++GLIBC_2.30 _mcleanup F
++GLIBC_2.30 _mcount F
++GLIBC_2.30 _nl_default_dirname D 0x12
++GLIBC_2.30 _nl_domain_bindings D 0x4
++GLIBC_2.30 _nl_msg_cat_cntr D 0x4
++GLIBC_2.30 _null_auth D 0xc
++GLIBC_2.30 _obstack_allocated_p F
++GLIBC_2.30 _obstack_begin F
++GLIBC_2.30 _obstack_begin_1 F
++GLIBC_2.30 _obstack_free F
++GLIBC_2.30 _obstack_memory_used F
++GLIBC_2.30 _obstack_newchunk F
++GLIBC_2.30 _res D 0x200
++GLIBC_2.30 _res_hconf D 0x30
++GLIBC_2.30 _rpc_dtablesize F
++GLIBC_2.30 _seterr_reply F
++GLIBC_2.30 _setjmp F
++GLIBC_2.30 _sys_errlist D 0x21c
++GLIBC_2.30 _sys_nerr D 0x4
++GLIBC_2.30 _sys_siglist D 0x104
++GLIBC_2.30 _tolower F
++GLIBC_2.30 _toupper F
++GLIBC_2.30 a64l F
++GLIBC_2.30 abort F
++GLIBC_2.30 abs F
++GLIBC_2.30 accept F
++GLIBC_2.30 accept4 F
++GLIBC_2.30 access F
++GLIBC_2.30 acct F
++GLIBC_2.30 addmntent F
++GLIBC_2.30 addseverity F
++GLIBC_2.30 adjtime F
++GLIBC_2.30 adjtimex F
++GLIBC_2.30 alarm F
++GLIBC_2.30 aligned_alloc F
++GLIBC_2.30 alphasort F
++GLIBC_2.30 alphasort64 F
++GLIBC_2.30 argp_err_exit_status D 0x4
++GLIBC_2.30 argp_error F
++GLIBC_2.30 argp_failure F
++GLIBC_2.30 argp_help F
++GLIBC_2.30 argp_parse F
++GLIBC_2.30 argp_program_bug_address D 0x4
++GLIBC_2.30 argp_program_version D 0x4
++GLIBC_2.30 argp_program_version_hook D 0x4
++GLIBC_2.30 argp_state_help F
++GLIBC_2.30 argp_usage F
++GLIBC_2.30 argz_add F
++GLIBC_2.30 argz_add_sep F
++GLIBC_2.30 argz_append F
++GLIBC_2.30 argz_count F
++GLIBC_2.30 argz_create F
++GLIBC_2.30 argz_create_sep F
++GLIBC_2.30 argz_delete F
++GLIBC_2.30 argz_extract F
++GLIBC_2.30 argz_insert F
++GLIBC_2.30 argz_next F
++GLIBC_2.30 argz_replace F
++GLIBC_2.30 argz_stringify F
++GLIBC_2.30 asctime F
++GLIBC_2.30 asctime_r F
++GLIBC_2.30 asprintf F
++GLIBC_2.30 atof F
++GLIBC_2.30 atoi F
++GLIBC_2.30 atol F
++GLIBC_2.30 atoll F
++GLIBC_2.30 authdes_create F
++GLIBC_2.30 authdes_getucred F
++GLIBC_2.30 authdes_pk_create F
++GLIBC_2.30 authnone_create F
++GLIBC_2.30 authunix_create F
++GLIBC_2.30 authunix_create_default F
++GLIBC_2.30 backtrace F
++GLIBC_2.30 backtrace_symbols F
++GLIBC_2.30 backtrace_symbols_fd F
++GLIBC_2.30 basename F
++GLIBC_2.30 bcmp F
++GLIBC_2.30 bcopy F
++GLIBC_2.30 bind F
++GLIBC_2.30 bind_textdomain_codeset F
++GLIBC_2.30 bindresvport F
++GLIBC_2.30 bindtextdomain F
++GLIBC_2.30 brk F
++GLIBC_2.30 bsd_signal F
++GLIBC_2.30 bsearch F
++GLIBC_2.30 btowc F
++GLIBC_2.30 bzero F
++GLIBC_2.30 c16rtomb F
++GLIBC_2.30 c32rtomb F
++GLIBC_2.30 cacheflush F
++GLIBC_2.30 calloc F
++GLIBC_2.30 callrpc F
++GLIBC_2.30 canonicalize_file_name F
++GLIBC_2.30 capget F
++GLIBC_2.30 capset F
++GLIBC_2.30 catclose F
++GLIBC_2.30 catgets F
++GLIBC_2.30 catopen F
++GLIBC_2.30 cbc_crypt F
++GLIBC_2.30 cfgetispeed F
++GLIBC_2.30 cfgetospeed F
++GLIBC_2.30 cfmakeraw F
++GLIBC_2.30 cfsetispeed F
++GLIBC_2.30 cfsetospeed F
++GLIBC_2.30 cfsetspeed F
++GLIBC_2.30 chdir F
++GLIBC_2.30 chflags F
++GLIBC_2.30 chmod F
++GLIBC_2.30 chown F
++GLIBC_2.30 chroot F
++GLIBC_2.30 clearenv F
++GLIBC_2.30 clearerr F
++GLIBC_2.30 clearerr_unlocked F
++GLIBC_2.30 clnt_broadcast F
++GLIBC_2.30 clnt_create F
++GLIBC_2.30 clnt_pcreateerror F
++GLIBC_2.30 clnt_perrno F
++GLIBC_2.30 clnt_perror F
++GLIBC_2.30 clnt_spcreateerror F
++GLIBC_2.30 clnt_sperrno F
++GLIBC_2.30 clnt_sperror F
++GLIBC_2.30 clntraw_create F
++GLIBC_2.30 clnttcp_create F
++GLIBC_2.30 clntudp_bufcreate F
++GLIBC_2.30 clntudp_create F
++GLIBC_2.30 clntunix_create F
++GLIBC_2.30 clock F
++GLIBC_2.30 clock_adjtime F
++GLIBC_2.30 clock_getcpuclockid F
++GLIBC_2.30 clock_getres F
++GLIBC_2.30 clock_gettime F
++GLIBC_2.30 clock_nanosleep F
++GLIBC_2.30 clock_settime F
++GLIBC_2.30 clone F
++GLIBC_2.30 close F
++GLIBC_2.30 closedir F
++GLIBC_2.30 closelog F
++GLIBC_2.30 confstr F
++GLIBC_2.30 connect F
++GLIBC_2.30 copy_file_range F
++GLIBC_2.30 copysign F
++GLIBC_2.30 copysignf F
++GLIBC_2.30 copysignl F
++GLIBC_2.30 creat F
++GLIBC_2.30 creat64 F
++GLIBC_2.30 ctermid F
++GLIBC_2.30 ctime F
++GLIBC_2.30 ctime_r F
++GLIBC_2.30 cuserid F
++GLIBC_2.30 daemon F
++GLIBC_2.30 daylight D 0x4
++GLIBC_2.30 dcgettext F
++GLIBC_2.30 dcngettext F
++GLIBC_2.30 delete_module F
++GLIBC_2.30 des_setparity F
++GLIBC_2.30 dgettext F
++GLIBC_2.30 difftime F
++GLIBC_2.30 dirfd F
++GLIBC_2.30 dirname F
++GLIBC_2.30 div F
++GLIBC_2.30 dl_iterate_phdr F
++GLIBC_2.30 dngettext F
++GLIBC_2.30 dprintf F
++GLIBC_2.30 drand48 F
++GLIBC_2.30 drand48_r F
++GLIBC_2.30 dup F
++GLIBC_2.30 dup2 F
++GLIBC_2.30 dup3 F
++GLIBC_2.30 duplocale F
++GLIBC_2.30 dysize F
++GLIBC_2.30 eaccess F
++GLIBC_2.30 ecb_crypt F
++GLIBC_2.30 ecvt F
++GLIBC_2.30 ecvt_r F
++GLIBC_2.30 endaliasent F
++GLIBC_2.30 endfsent F
++GLIBC_2.30 endgrent F
++GLIBC_2.30 endhostent F
++GLIBC_2.30 endmntent F
++GLIBC_2.30 endnetent F
++GLIBC_2.30 endnetgrent F
++GLIBC_2.30 endprotoent F
++GLIBC_2.30 endpwent F
++GLIBC_2.30 endrpcent F
++GLIBC_2.30 endservent F
++GLIBC_2.30 endsgent F
++GLIBC_2.30 endspent F
++GLIBC_2.30 endttyent F
++GLIBC_2.30 endusershell F
++GLIBC_2.30 endutent F
++GLIBC_2.30 endutxent F
++GLIBC_2.30 environ D 0x4
++GLIBC_2.30 envz_add F
++GLIBC_2.30 envz_entry F
++GLIBC_2.30 envz_get F
++GLIBC_2.30 envz_merge F
++GLIBC_2.30 envz_remove F
++GLIBC_2.30 envz_strip F
++GLIBC_2.30 epoll_create F
++GLIBC_2.30 epoll_create1 F
++GLIBC_2.30 epoll_ctl F
++GLIBC_2.30 epoll_pwait F
++GLIBC_2.30 epoll_wait F
++GLIBC_2.30 erand48 F
++GLIBC_2.30 erand48_r F
++GLIBC_2.30 err F
++GLIBC_2.30 error F
++GLIBC_2.30 error_at_line F
++GLIBC_2.30 error_message_count D 0x4
++GLIBC_2.30 error_one_per_line D 0x4
++GLIBC_2.30 error_print_progname D 0x4
++GLIBC_2.30 errx F
++GLIBC_2.30 ether_aton F
++GLIBC_2.30 ether_aton_r F
++GLIBC_2.30 ether_hostton F
++GLIBC_2.30 ether_line F
++GLIBC_2.30 ether_ntoa F
++GLIBC_2.30 ether_ntoa_r F
++GLIBC_2.30 ether_ntohost F
++GLIBC_2.30 euidaccess F
++GLIBC_2.30 eventfd F
++GLIBC_2.30 eventfd_read F
++GLIBC_2.30 eventfd_write F
++GLIBC_2.30 execl F
++GLIBC_2.30 execle F
++GLIBC_2.30 execlp F
++GLIBC_2.30 execv F
++GLIBC_2.30 execve F
++GLIBC_2.30 execvp F
++GLIBC_2.30 execvpe F
++GLIBC_2.30 exit F
++GLIBC_2.30 explicit_bzero F
++GLIBC_2.30 faccessat F
++GLIBC_2.30 fallocate F
++GLIBC_2.30 fallocate64 F
++GLIBC_2.30 fanotify_init F
++GLIBC_2.30 fanotify_mark F
++GLIBC_2.30 fchdir F
++GLIBC_2.30 fchflags F
++GLIBC_2.30 fchmod F
++GLIBC_2.30 fchmodat F
++GLIBC_2.30 fchown F
++GLIBC_2.30 fchownat F
++GLIBC_2.30 fclose F
++GLIBC_2.30 fcloseall F
++GLIBC_2.30 fcntl F
++GLIBC_2.30 fcntl64 F
++GLIBC_2.30 fcvt F
++GLIBC_2.30 fcvt_r F
++GLIBC_2.30 fdatasync F
++GLIBC_2.30 fdopen F
++GLIBC_2.30 fdopendir F
++GLIBC_2.30 feof F
++GLIBC_2.30 feof_unlocked F
++GLIBC_2.30 ferror F
++GLIBC_2.30 ferror_unlocked F
++GLIBC_2.30 fexecve F
++GLIBC_2.30 fflush F
++GLIBC_2.30 fflush_unlocked F
++GLIBC_2.30 ffs F
++GLIBC_2.30 ffsl F
++GLIBC_2.30 ffsll F
++GLIBC_2.30 fgetc F
++GLIBC_2.30 fgetc_unlocked F
++GLIBC_2.30 fgetgrent F
++GLIBC_2.30 fgetgrent_r F
++GLIBC_2.30 fgetpos F
++GLIBC_2.30 fgetpos64 F
++GLIBC_2.30 fgetpwent F
++GLIBC_2.30 fgetpwent_r F
++GLIBC_2.30 fgets F
++GLIBC_2.30 fgets_unlocked F
++GLIBC_2.30 fgetsgent F
++GLIBC_2.30 fgetsgent_r F
++GLIBC_2.30 fgetspent F
++GLIBC_2.30 fgetspent_r F
++GLIBC_2.30 fgetwc F
++GLIBC_2.30 fgetwc_unlocked F
++GLIBC_2.30 fgetws F
++GLIBC_2.30 fgetws_unlocked F
++GLIBC_2.30 fgetxattr F
++GLIBC_2.30 fileno F
++GLIBC_2.30 fileno_unlocked F
++GLIBC_2.30 finite F
++GLIBC_2.30 finitef F
++GLIBC_2.30 finitel F
++GLIBC_2.30 flistxattr F
++GLIBC_2.30 flock F
++GLIBC_2.30 flockfile F
++GLIBC_2.30 fmemopen F
++GLIBC_2.30 fmtmsg F
++GLIBC_2.30 fnmatch F
++GLIBC_2.30 fopen F
++GLIBC_2.30 fopen64 F
++GLIBC_2.30 fopencookie F
++GLIBC_2.30 fork F
++GLIBC_2.30 fpathconf F
++GLIBC_2.30 fprintf F
++GLIBC_2.30 fputc F
++GLIBC_2.30 fputc_unlocked F
++GLIBC_2.30 fputs F
++GLIBC_2.30 fputs_unlocked F
++GLIBC_2.30 fputwc F
++GLIBC_2.30 fputwc_unlocked F
++GLIBC_2.30 fputws F
++GLIBC_2.30 fputws_unlocked F
++GLIBC_2.30 fread F
++GLIBC_2.30 fread_unlocked F
++GLIBC_2.30 free F
++GLIBC_2.30 freeaddrinfo F
++GLIBC_2.30 freeifaddrs F
++GLIBC_2.30 freelocale F
++GLIBC_2.30 fremovexattr F
++GLIBC_2.30 freopen F
++GLIBC_2.30 freopen64 F
++GLIBC_2.30 frexp F
++GLIBC_2.30 frexpf F
++GLIBC_2.30 frexpl F
++GLIBC_2.30 fscanf F
++GLIBC_2.30 fseek F
++GLIBC_2.30 fseeko F
++GLIBC_2.30 fseeko64 F
++GLIBC_2.30 fsetpos F
++GLIBC_2.30 fsetpos64 F
++GLIBC_2.30 fsetxattr F
++GLIBC_2.30 fstatfs F
++GLIBC_2.30 fstatfs64 F
++GLIBC_2.30 fstatvfs F
++GLIBC_2.30 fstatvfs64 F
++GLIBC_2.30 fsync F
++GLIBC_2.30 ftell F
++GLIBC_2.30 ftello F
++GLIBC_2.30 ftello64 F
++GLIBC_2.30 ftime F
++GLIBC_2.30 ftok F
++GLIBC_2.30 ftruncate F
++GLIBC_2.30 ftruncate64 F
++GLIBC_2.30 ftrylockfile F
++GLIBC_2.30 fts64_children F
++GLIBC_2.30 fts64_close F
++GLIBC_2.30 fts64_open F
++GLIBC_2.30 fts64_read F
++GLIBC_2.30 fts64_set F
++GLIBC_2.30 fts_children F
++GLIBC_2.30 fts_close F
++GLIBC_2.30 fts_open F
++GLIBC_2.30 fts_read F
++GLIBC_2.30 fts_set F
++GLIBC_2.30 ftw F
++GLIBC_2.30 ftw64 F
++GLIBC_2.30 funlockfile F
++GLIBC_2.30 futimens F
++GLIBC_2.30 futimes F
++GLIBC_2.30 futimesat F
++GLIBC_2.30 fwide F
++GLIBC_2.30 fwprintf F
++GLIBC_2.30 fwrite F
++GLIBC_2.30 fwrite_unlocked F
++GLIBC_2.30 fwscanf F
++GLIBC_2.30 gai_strerror F
++GLIBC_2.30 gcvt F
++GLIBC_2.30 get_avphys_pages F
++GLIBC_2.30 get_current_dir_name F
++GLIBC_2.30 get_myaddress F
++GLIBC_2.30 get_nprocs F
++GLIBC_2.30 get_nprocs_conf F
++GLIBC_2.30 get_phys_pages F
++GLIBC_2.30 getaddrinfo F
++GLIBC_2.30 getaliasbyname F
++GLIBC_2.30 getaliasbyname_r F
++GLIBC_2.30 getaliasent F
++GLIBC_2.30 getaliasent_r F
++GLIBC_2.30 getauxval F
++GLIBC_2.30 getc F
++GLIBC_2.30 getc_unlocked F
++GLIBC_2.30 getchar F
++GLIBC_2.30 getchar_unlocked F
++GLIBC_2.30 getcontext F
++GLIBC_2.30 getcpu F
++GLIBC_2.30 getcwd F
++GLIBC_2.30 getdate F
++GLIBC_2.30 getdate_err D 0x4
++GLIBC_2.30 getdate_r F
++GLIBC_2.30 getdelim F
++GLIBC_2.30 getdents64 F
++GLIBC_2.30 getdirentries F
++GLIBC_2.30 getdirentries64 F
++GLIBC_2.30 getdomainname F
++GLIBC_2.30 getdtablesize F
++GLIBC_2.30 getegid F
++GLIBC_2.30 getentropy F
++GLIBC_2.30 getenv F
++GLIBC_2.30 geteuid F
++GLIBC_2.30 getfsent F
++GLIBC_2.30 getfsfile F
++GLIBC_2.30 getfsspec F
++GLIBC_2.30 getgid F
++GLIBC_2.30 getgrent F
++GLIBC_2.30 getgrent_r F
++GLIBC_2.30 getgrgid F
++GLIBC_2.30 getgrgid_r F
++GLIBC_2.30 getgrnam F
++GLIBC_2.30 getgrnam_r F
++GLIBC_2.30 getgrouplist F
++GLIBC_2.30 getgroups F
++GLIBC_2.30 gethostbyaddr F
++GLIBC_2.30 gethostbyaddr_r F
++GLIBC_2.30 gethostbyname F
++GLIBC_2.30 gethostbyname2 F
++GLIBC_2.30 gethostbyname2_r F
++GLIBC_2.30 gethostbyname_r F
++GLIBC_2.30 gethostent F
++GLIBC_2.30 gethostent_r F
++GLIBC_2.30 gethostid F
++GLIBC_2.30 gethostname F
++GLIBC_2.30 getifaddrs F
++GLIBC_2.30 getipv4sourcefilter F
++GLIBC_2.30 getitimer F
++GLIBC_2.30 getline F
++GLIBC_2.30 getloadavg F
++GLIBC_2.30 getlogin F
++GLIBC_2.30 getlogin_r F
++GLIBC_2.30 getmntent F
++GLIBC_2.30 getmntent_r F
++GLIBC_2.30 getnameinfo F
++GLIBC_2.30 getnetbyaddr F
++GLIBC_2.30 getnetbyaddr_r F
++GLIBC_2.30 getnetbyname F
++GLIBC_2.30 getnetbyname_r F
++GLIBC_2.30 getnetent F
++GLIBC_2.30 getnetent_r F
++GLIBC_2.30 getnetgrent F
++GLIBC_2.30 getnetgrent_r F
++GLIBC_2.30 getnetname F
++GLIBC_2.30 getopt F
++GLIBC_2.30 getopt_long F
++GLIBC_2.30 getopt_long_only F
++GLIBC_2.30 getpagesize F
++GLIBC_2.30 getpass F
++GLIBC_2.30 getpeername F
++GLIBC_2.30 getpgid F
++GLIBC_2.30 getpgrp F
++GLIBC_2.30 getpid F
++GLIBC_2.30 getppid F
++GLIBC_2.30 getpriority F
++GLIBC_2.30 getprotobyname F
++GLIBC_2.30 getprotobyname_r F
++GLIBC_2.30 getprotobynumber F
++GLIBC_2.30 getprotobynumber_r F
++GLIBC_2.30 getprotoent F
++GLIBC_2.30 getprotoent_r F
++GLIBC_2.30 getpt F
++GLIBC_2.30 getpublickey F
++GLIBC_2.30 getpw F
++GLIBC_2.30 getpwent F
++GLIBC_2.30 getpwent_r F
++GLIBC_2.30 getpwnam F
++GLIBC_2.30 getpwnam_r F
++GLIBC_2.30 getpwuid F
++GLIBC_2.30 getpwuid_r F
++GLIBC_2.30 getrandom F
++GLIBC_2.30 getresgid F
++GLIBC_2.30 getresuid F
++GLIBC_2.30 getrlimit F
++GLIBC_2.30 getrlimit64 F
++GLIBC_2.30 getrpcbyname F
++GLIBC_2.30 getrpcbyname_r F
++GLIBC_2.30 getrpcbynumber F
++GLIBC_2.30 getrpcbynumber_r F
++GLIBC_2.30 getrpcent F
++GLIBC_2.30 getrpcent_r F
++GLIBC_2.30 getrpcport F
++GLIBC_2.30 getrusage F
++GLIBC_2.30 gets F
++GLIBC_2.30 getsecretkey F
++GLIBC_2.30 getservbyname F
++GLIBC_2.30 getservbyname_r F
++GLIBC_2.30 getservbyport F
++GLIBC_2.30 getservbyport_r F
++GLIBC_2.30 getservent F
++GLIBC_2.30 getservent_r F
++GLIBC_2.30 getsgent F
++GLIBC_2.30 getsgent_r F
++GLIBC_2.30 getsgnam F
++GLIBC_2.30 getsgnam_r F
++GLIBC_2.30 getsid F
++GLIBC_2.30 getsockname F
++GLIBC_2.30 getsockopt F
++GLIBC_2.30 getsourcefilter F
++GLIBC_2.30 getspent F
++GLIBC_2.30 getspent_r F
++GLIBC_2.30 getspnam F
++GLIBC_2.30 getspnam_r F
++GLIBC_2.30 getsubopt F
++GLIBC_2.30 gettext F
++GLIBC_2.30 gettid F
++GLIBC_2.30 gettimeofday F
++GLIBC_2.30 getttyent F
++GLIBC_2.30 getttynam F
++GLIBC_2.30 getuid F
++GLIBC_2.30 getusershell F
++GLIBC_2.30 getutent F
++GLIBC_2.30 getutent_r F
++GLIBC_2.30 getutid F
++GLIBC_2.30 getutid_r F
++GLIBC_2.30 getutline F
++GLIBC_2.30 getutline_r F
++GLIBC_2.30 getutmp F
++GLIBC_2.30 getutmpx F
++GLIBC_2.30 getutxent F
++GLIBC_2.30 getutxid F
++GLIBC_2.30 getutxline F
++GLIBC_2.30 getw F
++GLIBC_2.30 getwc F
++GLIBC_2.30 getwc_unlocked F
++GLIBC_2.30 getwchar F
++GLIBC_2.30 getwchar_unlocked F
++GLIBC_2.30 getwd F
++GLIBC_2.30 getxattr F
++GLIBC_2.30 glob F
++GLIBC_2.30 glob64 F
++GLIBC_2.30 glob_pattern_p F
++GLIBC_2.30 globfree F
++GLIBC_2.30 globfree64 F
++GLIBC_2.30 gmtime F
++GLIBC_2.30 gmtime_r F
++GLIBC_2.30 gnu_dev_major F
++GLIBC_2.30 gnu_dev_makedev F
++GLIBC_2.30 gnu_dev_minor F
++GLIBC_2.30 gnu_get_libc_release F
++GLIBC_2.30 gnu_get_libc_version F
++GLIBC_2.30 grantpt F
++GLIBC_2.30 group_member F
++GLIBC_2.30 gsignal F
++GLIBC_2.30 gtty F
++GLIBC_2.30 h_errlist D 0x14
++GLIBC_2.30 h_nerr D 0x4
++GLIBC_2.30 hasmntopt F
++GLIBC_2.30 hcreate F
++GLIBC_2.30 hcreate_r F
++GLIBC_2.30 hdestroy F
++GLIBC_2.30 hdestroy_r F
++GLIBC_2.30 herror F
++GLIBC_2.30 host2netname F
++GLIBC_2.30 hsearch F
++GLIBC_2.30 hsearch_r F
++GLIBC_2.30 hstrerror F
++GLIBC_2.30 htonl F
++GLIBC_2.30 htons F
++GLIBC_2.30 iconv F
++GLIBC_2.30 iconv_close F
++GLIBC_2.30 iconv_open F
++GLIBC_2.30 if_freenameindex F
++GLIBC_2.30 if_indextoname F
++GLIBC_2.30 if_nameindex F
++GLIBC_2.30 if_nametoindex F
++GLIBC_2.30 imaxabs F
++GLIBC_2.30 imaxdiv F
++GLIBC_2.30 in6addr_any D 0x10
++GLIBC_2.30 in6addr_loopback D 0x10
++GLIBC_2.30 index F
++GLIBC_2.30 inet6_opt_append F
++GLIBC_2.30 inet6_opt_find F
++GLIBC_2.30 inet6_opt_finish F
++GLIBC_2.30 inet6_opt_get_val F
++GLIBC_2.30 inet6_opt_init F
++GLIBC_2.30 inet6_opt_next F
++GLIBC_2.30 inet6_opt_set_val F
++GLIBC_2.30 inet6_option_alloc F
++GLIBC_2.30 inet6_option_append F
++GLIBC_2.30 inet6_option_find F
++GLIBC_2.30 inet6_option_init F
++GLIBC_2.30 inet6_option_next F
++GLIBC_2.30 inet6_option_space F
++GLIBC_2.30 inet6_rth_add F
++GLIBC_2.30 inet6_rth_getaddr F
++GLIBC_2.30 inet6_rth_init F
++GLIBC_2.30 inet6_rth_reverse F
++GLIBC_2.30 inet6_rth_segments F
++GLIBC_2.30 inet6_rth_space F
++GLIBC_2.30 inet_addr F
++GLIBC_2.30 inet_aton F
++GLIBC_2.30 inet_lnaof F
++GLIBC_2.30 inet_makeaddr F
++GLIBC_2.30 inet_netof F
++GLIBC_2.30 inet_network F
++GLIBC_2.30 inet_nsap_addr F
++GLIBC_2.30 inet_nsap_ntoa F
++GLIBC_2.30 inet_ntoa F
++GLIBC_2.30 inet_ntop F
++GLIBC_2.30 inet_pton F
++GLIBC_2.30 init_module F
++GLIBC_2.30 initgroups F
++GLIBC_2.30 initstate F
++GLIBC_2.30 initstate_r F
++GLIBC_2.30 innetgr F
++GLIBC_2.30 inotify_add_watch F
++GLIBC_2.30 inotify_init F
++GLIBC_2.30 inotify_init1 F
++GLIBC_2.30 inotify_rm_watch F
++GLIBC_2.30 insque F
++GLIBC_2.30 ioctl F
++GLIBC_2.30 iruserok F
++GLIBC_2.30 iruserok_af F
++GLIBC_2.30 isalnum F
++GLIBC_2.30 isalnum_l F
++GLIBC_2.30 isalpha F
++GLIBC_2.30 isalpha_l F
++GLIBC_2.30 isascii F
++GLIBC_2.30 isatty F
++GLIBC_2.30 isblank F
++GLIBC_2.30 isblank_l F
++GLIBC_2.30 iscntrl F
++GLIBC_2.30 iscntrl_l F
++GLIBC_2.30 isctype F
++GLIBC_2.30 isdigit F
++GLIBC_2.30 isdigit_l F
++GLIBC_2.30 isfdtype F
++GLIBC_2.30 isgraph F
++GLIBC_2.30 isgraph_l F
++GLIBC_2.30 isinf F
++GLIBC_2.30 isinff F
++GLIBC_2.30 isinfl F
++GLIBC_2.30 islower F
++GLIBC_2.30 islower_l F
++GLIBC_2.30 isnan F
++GLIBC_2.30 isnanf F
++GLIBC_2.30 isnanl F
++GLIBC_2.30 isprint F
++GLIBC_2.30 isprint_l F
++GLIBC_2.30 ispunct F
++GLIBC_2.30 ispunct_l F
++GLIBC_2.30 isspace F
++GLIBC_2.30 isspace_l F
++GLIBC_2.30 isupper F
++GLIBC_2.30 isupper_l F
++GLIBC_2.30 iswalnum F
++GLIBC_2.30 iswalnum_l F
++GLIBC_2.30 iswalpha F
++GLIBC_2.30 iswalpha_l F
++GLIBC_2.30 iswblank F
++GLIBC_2.30 iswblank_l F
++GLIBC_2.30 iswcntrl F
++GLIBC_2.30 iswcntrl_l F
++GLIBC_2.30 iswctype F
++GLIBC_2.30 iswctype_l F
++GLIBC_2.30 iswdigit F
++GLIBC_2.30 iswdigit_l F
++GLIBC_2.30 iswgraph F
++GLIBC_2.30 iswgraph_l F
++GLIBC_2.30 iswlower F
++GLIBC_2.30 iswlower_l F
++GLIBC_2.30 iswprint F
++GLIBC_2.30 iswprint_l F
++GLIBC_2.30 iswpunct F
++GLIBC_2.30 iswpunct_l F
++GLIBC_2.30 iswspace F
++GLIBC_2.30 iswspace_l F
++GLIBC_2.30 iswupper F
++GLIBC_2.30 iswupper_l F
++GLIBC_2.30 iswxdigit F
++GLIBC_2.30 iswxdigit_l F
++GLIBC_2.30 isxdigit F
++GLIBC_2.30 isxdigit_l F
++GLIBC_2.30 jrand48 F
++GLIBC_2.30 jrand48_r F
++GLIBC_2.30 key_decryptsession F
++GLIBC_2.30 key_decryptsession_pk F
++GLIBC_2.30 key_encryptsession F
++GLIBC_2.30 key_encryptsession_pk F
++GLIBC_2.30 key_gendes F
++GLIBC_2.30 key_get_conv F
++GLIBC_2.30 key_secretkey_is_set F
++GLIBC_2.30 key_setnet F
++GLIBC_2.30 key_setsecret F
++GLIBC_2.30 kill F
++GLIBC_2.30 killpg F
++GLIBC_2.30 klogctl F
++GLIBC_2.30 l64a F
++GLIBC_2.30 labs F
++GLIBC_2.30 lchmod F
++GLIBC_2.30 lchown F
++GLIBC_2.30 lckpwdf F
++GLIBC_2.30 lcong48 F
++GLIBC_2.30 lcong48_r F
++GLIBC_2.30 ldexp F
++GLIBC_2.30 ldexpf F
++GLIBC_2.30 ldexpl F
++GLIBC_2.30 ldiv F
++GLIBC_2.30 lfind F
++GLIBC_2.30 lgetxattr F
++GLIBC_2.30 link F
++GLIBC_2.30 linkat F
++GLIBC_2.30 listen F
++GLIBC_2.30 listxattr F
++GLIBC_2.30 llabs F
++GLIBC_2.30 lldiv F
++GLIBC_2.30 llistxattr F
++GLIBC_2.30 localeconv F
++GLIBC_2.30 localtime F
++GLIBC_2.30 localtime_r F
++GLIBC_2.30 lockf F
++GLIBC_2.30 lockf64 F
++GLIBC_2.30 longjmp F
++GLIBC_2.30 lrand48 F
++GLIBC_2.30 lrand48_r F
++GLIBC_2.30 lremovexattr F
++GLIBC_2.30 lsearch F
++GLIBC_2.30 lseek F
++GLIBC_2.30 lseek64 F
++GLIBC_2.30 lsetxattr F
++GLIBC_2.30 lutimes F
++GLIBC_2.30 madvise F
++GLIBC_2.30 makecontext F
++GLIBC_2.30 mallinfo F
++GLIBC_2.30 malloc F
++GLIBC_2.30 malloc_info F
++GLIBC_2.30 malloc_stats F
++GLIBC_2.30 malloc_trim F
++GLIBC_2.30 malloc_usable_size F
++GLIBC_2.30 mallopt F
++GLIBC_2.30 mallwatch D 0x4
++GLIBC_2.30 mblen F
++GLIBC_2.30 mbrlen F
++GLIBC_2.30 mbrtoc16 F
++GLIBC_2.30 mbrtoc32 F
++GLIBC_2.30 mbrtowc F
++GLIBC_2.30 mbsinit F
++GLIBC_2.30 mbsnrtowcs F
++GLIBC_2.30 mbsrtowcs F
++GLIBC_2.30 mbstowcs F
++GLIBC_2.30 mbtowc F
++GLIBC_2.30 mcheck F
++GLIBC_2.30 mcheck_check_all F
++GLIBC_2.30 mcheck_pedantic F
++GLIBC_2.30 memalign F
++GLIBC_2.30 memccpy F
++GLIBC_2.30 memchr F
++GLIBC_2.30 memcmp F
++GLIBC_2.30 memcpy F
++GLIBC_2.30 memfd_create F
++GLIBC_2.30 memfrob F
++GLIBC_2.30 memmem F
++GLIBC_2.30 memmove F
++GLIBC_2.30 mempcpy F
++GLIBC_2.30 memrchr F
++GLIBC_2.30 memset F
++GLIBC_2.30 mincore F
++GLIBC_2.30 mkdir F
++GLIBC_2.30 mkdirat F
++GLIBC_2.30 mkdtemp F
++GLIBC_2.30 mkfifo F
++GLIBC_2.30 mkfifoat F
++GLIBC_2.30 mkostemp F
++GLIBC_2.30 mkostemp64 F
++GLIBC_2.30 mkostemps F
++GLIBC_2.30 mkostemps64 F
++GLIBC_2.30 mkstemp F
++GLIBC_2.30 mkstemp64 F
++GLIBC_2.30 mkstemps F
++GLIBC_2.30 mkstemps64 F
++GLIBC_2.30 mktemp F
++GLIBC_2.30 mktime F
++GLIBC_2.30 mlock F
++GLIBC_2.30 mlock2 F
++GLIBC_2.30 mlockall F
++GLIBC_2.30 mmap F
++GLIBC_2.30 mmap64 F
++GLIBC_2.30 modf F
++GLIBC_2.30 modff F
++GLIBC_2.30 modfl F
++GLIBC_2.30 moncontrol F
++GLIBC_2.30 monstartup F
++GLIBC_2.30 mount F
++GLIBC_2.30 mprobe F
++GLIBC_2.30 mprotect F
++GLIBC_2.30 mrand48 F
++GLIBC_2.30 mrand48_r F
++GLIBC_2.30 mremap F
++GLIBC_2.30 msgctl F
++GLIBC_2.30 msgget F
++GLIBC_2.30 msgrcv F
++GLIBC_2.30 msgsnd F
++GLIBC_2.30 msync F
++GLIBC_2.30 mtrace F
++GLIBC_2.30 munlock F
++GLIBC_2.30 munlockall F
++GLIBC_2.30 munmap F
++GLIBC_2.30 muntrace F
++GLIBC_2.30 name_to_handle_at F
++GLIBC_2.30 nanosleep F
++GLIBC_2.30 netname2host F
++GLIBC_2.30 netname2user F
++GLIBC_2.30 newlocale F
++GLIBC_2.30 nftw F
++GLIBC_2.30 nftw64 F
++GLIBC_2.30 ngettext F
++GLIBC_2.30 nice F
++GLIBC_2.30 nl_langinfo F
++GLIBC_2.30 nl_langinfo_l F
++GLIBC_2.30 nrand48 F
++GLIBC_2.30 nrand48_r F
++GLIBC_2.30 ntohl F
++GLIBC_2.30 ntohs F
++GLIBC_2.30 ntp_adjtime F
++GLIBC_2.30 ntp_gettime F
++GLIBC_2.30 ntp_gettimex F
++GLIBC_2.30 obstack_alloc_failed_handler D 0x4
++GLIBC_2.30 obstack_exit_failure D 0x4
++GLIBC_2.30 obstack_free F
++GLIBC_2.30 obstack_printf F
++GLIBC_2.30 obstack_vprintf F
++GLIBC_2.30 on_exit F
++GLIBC_2.30 open F
++GLIBC_2.30 open64 F
++GLIBC_2.30 open_by_handle_at F
++GLIBC_2.30 open_memstream F
++GLIBC_2.30 open_wmemstream F
++GLIBC_2.30 openat F
++GLIBC_2.30 openat64 F
++GLIBC_2.30 opendir F
++GLIBC_2.30 openlog F
++GLIBC_2.30 optarg D 0x4
++GLIBC_2.30 opterr D 0x4
++GLIBC_2.30 optind D 0x4
++GLIBC_2.30 optopt D 0x4
++GLIBC_2.30 parse_printf_format F
++GLIBC_2.30 passwd2des F
++GLIBC_2.30 pathconf F
++GLIBC_2.30 pause F
++GLIBC_2.30 pclose F
++GLIBC_2.30 perror F
++GLIBC_2.30 personality F
++GLIBC_2.30 pipe F
++GLIBC_2.30 pipe2 F
++GLIBC_2.30 pivot_root F
++GLIBC_2.30 pkey_alloc F
++GLIBC_2.30 pkey_free F
++GLIBC_2.30 pkey_get F
++GLIBC_2.30 pkey_mprotect F
++GLIBC_2.30 pkey_set F
++GLIBC_2.30 pmap_getmaps F
++GLIBC_2.30 pmap_getport F
++GLIBC_2.30 pmap_rmtcall F
++GLIBC_2.30 pmap_set F
++GLIBC_2.30 pmap_unset F
++GLIBC_2.30 poll F
++GLIBC_2.30 popen F
++GLIBC_2.30 posix_fadvise F
++GLIBC_2.30 posix_fadvise64 F
++GLIBC_2.30 posix_fallocate F
++GLIBC_2.30 posix_fallocate64 F
++GLIBC_2.30 posix_madvise F
++GLIBC_2.30 posix_memalign F
++GLIBC_2.30 posix_openpt F
++GLIBC_2.30 posix_spawn F
++GLIBC_2.30 posix_spawn_file_actions_addchdir_np F
++GLIBC_2.30 posix_spawn_file_actions_addclose F
++GLIBC_2.30 posix_spawn_file_actions_adddup2 F
++GLIBC_2.30 posix_spawn_file_actions_addfchdir_np F
++GLIBC_2.30 posix_spawn_file_actions_addopen F
++GLIBC_2.30 posix_spawn_file_actions_destroy F
++GLIBC_2.30 posix_spawn_file_actions_init F
++GLIBC_2.30 posix_spawnattr_destroy F
++GLIBC_2.30 posix_spawnattr_getflags F
++GLIBC_2.30 posix_spawnattr_getpgroup F
++GLIBC_2.30 posix_spawnattr_getschedparam F
++GLIBC_2.30 posix_spawnattr_getschedpolicy F
++GLIBC_2.30 posix_spawnattr_getsigdefault F
++GLIBC_2.30 posix_spawnattr_getsigmask F
++GLIBC_2.30 posix_spawnattr_init F
++GLIBC_2.30 posix_spawnattr_setflags F
++GLIBC_2.30 posix_spawnattr_setpgroup F
++GLIBC_2.30 posix_spawnattr_setschedparam F
++GLIBC_2.30 posix_spawnattr_setschedpolicy F
++GLIBC_2.30 posix_spawnattr_setsigdefault F
++GLIBC_2.30 posix_spawnattr_setsigmask F
++GLIBC_2.30 posix_spawnp F
++GLIBC_2.30 ppoll F
++GLIBC_2.30 prctl F
++GLIBC_2.30 pread F
++GLIBC_2.30 pread64 F
++GLIBC_2.30 preadv F
++GLIBC_2.30 preadv2 F
++GLIBC_2.30 preadv64 F
++GLIBC_2.30 preadv64v2 F
++GLIBC_2.30 printf F
++GLIBC_2.30 printf_size F
++GLIBC_2.30 printf_size_info F
++GLIBC_2.30 prlimit F
++GLIBC_2.30 prlimit64 F
++GLIBC_2.30 process_vm_readv F
++GLIBC_2.30 process_vm_writev F
++GLIBC_2.30 profil F
++GLIBC_2.30 program_invocation_name D 0x4
++GLIBC_2.30 program_invocation_short_name D 0x4
++GLIBC_2.30 pselect F
++GLIBC_2.30 psiginfo F
++GLIBC_2.30 psignal F
++GLIBC_2.30 pthread_attr_destroy F
++GLIBC_2.30 pthread_attr_getdetachstate F
++GLIBC_2.30 pthread_attr_getinheritsched F
++GLIBC_2.30 pthread_attr_getschedparam F
++GLIBC_2.30 pthread_attr_getschedpolicy F
++GLIBC_2.30 pthread_attr_getscope F
++GLIBC_2.30 pthread_attr_init F
++GLIBC_2.30 pthread_attr_setdetachstate F
++GLIBC_2.30 pthread_attr_setinheritsched F
++GLIBC_2.30 pthread_attr_setschedparam F
++GLIBC_2.30 pthread_attr_setschedpolicy F
++GLIBC_2.30 pthread_attr_setscope F
++GLIBC_2.30 pthread_cond_broadcast F
++GLIBC_2.30 pthread_cond_destroy F
++GLIBC_2.30 pthread_cond_init F
++GLIBC_2.30 pthread_cond_signal F
++GLIBC_2.30 pthread_cond_timedwait F
++GLIBC_2.30 pthread_cond_wait F
++GLIBC_2.30 pthread_condattr_destroy F
++GLIBC_2.30 pthread_condattr_init F
++GLIBC_2.30 pthread_equal F
++GLIBC_2.30 pthread_exit F
++GLIBC_2.30 pthread_getschedparam F
++GLIBC_2.30 pthread_mutex_destroy F
++GLIBC_2.30 pthread_mutex_init F
++GLIBC_2.30 pthread_mutex_lock F
++GLIBC_2.30 pthread_mutex_unlock F
++GLIBC_2.30 pthread_self F
++GLIBC_2.30 pthread_setcancelstate F
++GLIBC_2.30 pthread_setcanceltype F
++GLIBC_2.30 pthread_setschedparam F
++GLIBC_2.30 ptrace F
++GLIBC_2.30 ptsname F
++GLIBC_2.30 ptsname_r F
++GLIBC_2.30 putc F
++GLIBC_2.30 putc_unlocked F
++GLIBC_2.30 putchar F
++GLIBC_2.30 putchar_unlocked F
++GLIBC_2.30 putenv F
++GLIBC_2.30 putgrent F
++GLIBC_2.30 putpwent F
++GLIBC_2.30 puts F
++GLIBC_2.30 putsgent F
++GLIBC_2.30 putspent F
++GLIBC_2.30 pututline F
++GLIBC_2.30 pututxline F
++GLIBC_2.30 putw F
++GLIBC_2.30 putwc F
++GLIBC_2.30 putwc_unlocked F
++GLIBC_2.30 putwchar F
++GLIBC_2.30 putwchar_unlocked F
++GLIBC_2.30 pvalloc F
++GLIBC_2.30 pwrite F
++GLIBC_2.30 pwrite64 F
++GLIBC_2.30 pwritev F
++GLIBC_2.30 pwritev2 F
++GLIBC_2.30 pwritev64 F
++GLIBC_2.30 pwritev64v2 F
++GLIBC_2.30 qecvt F
++GLIBC_2.30 qecvt_r F
++GLIBC_2.30 qfcvt F
++GLIBC_2.30 qfcvt_r F
++GLIBC_2.30 qgcvt F
++GLIBC_2.30 qsort F
++GLIBC_2.30 qsort_r F
++GLIBC_2.30 quick_exit F
++GLIBC_2.30 quotactl F
++GLIBC_2.30 raise F
++GLIBC_2.30 rand F
++GLIBC_2.30 rand_r F
++GLIBC_2.30 random F
++GLIBC_2.30 random_r F
++GLIBC_2.30 rawmemchr F
++GLIBC_2.30 rcmd F
++GLIBC_2.30 rcmd_af F
++GLIBC_2.30 re_comp F
++GLIBC_2.30 re_compile_fastmap F
++GLIBC_2.30 re_compile_pattern F
++GLIBC_2.30 re_exec F
++GLIBC_2.30 re_match F
++GLIBC_2.30 re_match_2 F
++GLIBC_2.30 re_search F
++GLIBC_2.30 re_search_2 F
++GLIBC_2.30 re_set_registers F
++GLIBC_2.30 re_set_syntax F
++GLIBC_2.30 re_syntax_options D 0x4
++GLIBC_2.30 read F
++GLIBC_2.30 readahead F
++GLIBC_2.30 readdir F
++GLIBC_2.30 readdir64 F
++GLIBC_2.30 readdir64_r F
++GLIBC_2.30 readdir_r F
++GLIBC_2.30 readlink F
++GLIBC_2.30 readlinkat F
++GLIBC_2.30 readv F
++GLIBC_2.30 realloc F
++GLIBC_2.30 reallocarray F
++GLIBC_2.30 realpath F
++GLIBC_2.30 reboot F
++GLIBC_2.30 recv F
++GLIBC_2.30 recvfrom F
++GLIBC_2.30 recvmmsg F
++GLIBC_2.30 recvmsg F
++GLIBC_2.30 regcomp F
++GLIBC_2.30 regerror F
++GLIBC_2.30 regexec F
++GLIBC_2.30 regfree F
++GLIBC_2.30 register_printf_function F
++GLIBC_2.30 register_printf_modifier F
++GLIBC_2.30 register_printf_specifier F
++GLIBC_2.30 register_printf_type F
++GLIBC_2.30 registerrpc F
++GLIBC_2.30 remap_file_pages F
++GLIBC_2.30 remove F
++GLIBC_2.30 removexattr F
++GLIBC_2.30 remque F
++GLIBC_2.30 rename F
++GLIBC_2.30 renameat F
++GLIBC_2.30 renameat2 F
++GLIBC_2.30 revoke F
++GLIBC_2.30 rewind F
++GLIBC_2.30 rewinddir F
++GLIBC_2.30 rexec F
++GLIBC_2.30 rexec_af F
++GLIBC_2.30 rexecoptions D 0x4
++GLIBC_2.30 rindex F
++GLIBC_2.30 rmdir F
++GLIBC_2.30 rpc_createerr D 0x10
++GLIBC_2.30 rpmatch F
++GLIBC_2.30 rresvport F
++GLIBC_2.30 rresvport_af F
++GLIBC_2.30 rtime F
++GLIBC_2.30 ruserok F
++GLIBC_2.30 ruserok_af F
++GLIBC_2.30 ruserpass F
++GLIBC_2.30 sbrk F
++GLIBC_2.30 scalbn F
++GLIBC_2.30 scalbnf F
++GLIBC_2.30 scalbnl F
++GLIBC_2.30 scandir F
++GLIBC_2.30 scandir64 F
++GLIBC_2.30 scandirat F
++GLIBC_2.30 scandirat64 F
++GLIBC_2.30 scanf F
++GLIBC_2.30 sched_get_priority_max F
++GLIBC_2.30 sched_get_priority_min F
++GLIBC_2.30 sched_getaffinity F
++GLIBC_2.30 sched_getcpu F
++GLIBC_2.30 sched_getparam F
++GLIBC_2.30 sched_getscheduler F
++GLIBC_2.30 sched_rr_get_interval F
++GLIBC_2.30 sched_setaffinity F
++GLIBC_2.30 sched_setparam F
++GLIBC_2.30 sched_setscheduler F
++GLIBC_2.30 sched_yield F
++GLIBC_2.30 secure_getenv F
++GLIBC_2.30 seed48 F
++GLIBC_2.30 seed48_r F
++GLIBC_2.30 seekdir F
++GLIBC_2.30 select F
++GLIBC_2.30 semctl F
++GLIBC_2.30 semget F
++GLIBC_2.30 semop F
++GLIBC_2.30 semtimedop F
++GLIBC_2.30 send F
++GLIBC_2.30 sendfile F
++GLIBC_2.30 sendfile64 F
++GLIBC_2.30 sendmmsg F
++GLIBC_2.30 sendmsg F
++GLIBC_2.30 sendto F
++GLIBC_2.30 setaliasent F
++GLIBC_2.30 setbuf F
++GLIBC_2.30 setbuffer F
++GLIBC_2.30 setcontext F
++GLIBC_2.30 setdomainname F
++GLIBC_2.30 setegid F
++GLIBC_2.30 setenv F
++GLIBC_2.30 seteuid F
++GLIBC_2.30 setfsent F
++GLIBC_2.30 setfsgid F
++GLIBC_2.30 setfsuid F
++GLIBC_2.30 setgid F
++GLIBC_2.30 setgrent F
++GLIBC_2.30 setgroups F
++GLIBC_2.30 sethostent F
++GLIBC_2.30 sethostid F
++GLIBC_2.30 sethostname F
++GLIBC_2.30 setipv4sourcefilter F
++GLIBC_2.30 setitimer F
++GLIBC_2.30 setjmp F
++GLIBC_2.30 setlinebuf F
++GLIBC_2.30 setlocale F
++GLIBC_2.30 setlogin F
++GLIBC_2.30 setlogmask F
++GLIBC_2.30 setmntent F
++GLIBC_2.30 setnetent F
++GLIBC_2.30 setnetgrent F
++GLIBC_2.30 setns F
++GLIBC_2.30 setpgid F
++GLIBC_2.30 setpgrp F
++GLIBC_2.30 setpriority F
++GLIBC_2.30 setprotoent F
++GLIBC_2.30 setpwent F
++GLIBC_2.30 setregid F
++GLIBC_2.30 setresgid F
++GLIBC_2.30 setresuid F
++GLIBC_2.30 setreuid F
++GLIBC_2.30 setrlimit F
++GLIBC_2.30 setrlimit64 F
++GLIBC_2.30 setrpcent F
++GLIBC_2.30 setservent F
++GLIBC_2.30 setsgent F
++GLIBC_2.30 setsid F
++GLIBC_2.30 setsockopt F
++GLIBC_2.30 setsourcefilter F
++GLIBC_2.30 setspent F
++GLIBC_2.30 setstate F
++GLIBC_2.30 setstate_r F
++GLIBC_2.30 settimeofday F
++GLIBC_2.30 setttyent F
++GLIBC_2.30 setuid F
++GLIBC_2.30 setusershell F
++GLIBC_2.30 setutent F
++GLIBC_2.30 setutxent F
++GLIBC_2.30 setvbuf F
++GLIBC_2.30 setxattr F
++GLIBC_2.30 sgetsgent F
++GLIBC_2.30 sgetsgent_r F
++GLIBC_2.30 sgetspent F
++GLIBC_2.30 sgetspent_r F
++GLIBC_2.30 shmat F
++GLIBC_2.30 shmctl F
++GLIBC_2.30 shmdt F
++GLIBC_2.30 shmget F
++GLIBC_2.30 shutdown F
++GLIBC_2.30 sigaction F
++GLIBC_2.30 sigaddset F
++GLIBC_2.30 sigaltstack F
++GLIBC_2.30 sigandset F
++GLIBC_2.30 sigblock F
++GLIBC_2.30 sigdelset F
++GLIBC_2.30 sigemptyset F
++GLIBC_2.30 sigfillset F
++GLIBC_2.30 siggetmask F
++GLIBC_2.30 sighold F
++GLIBC_2.30 sigignore F
++GLIBC_2.30 siginterrupt F
++GLIBC_2.30 sigisemptyset F
++GLIBC_2.30 sigismember F
++GLIBC_2.30 siglongjmp F
++GLIBC_2.30 signal F
++GLIBC_2.30 signalfd F
++GLIBC_2.30 sigorset F
++GLIBC_2.30 sigpause F
++GLIBC_2.30 sigpending F
++GLIBC_2.30 sigprocmask F
++GLIBC_2.30 sigqueue F
++GLIBC_2.30 sigrelse F
++GLIBC_2.30 sigreturn F
++GLIBC_2.30 sigset F
++GLIBC_2.30 sigsetmask F
++GLIBC_2.30 sigstack F
++GLIBC_2.30 sigsuspend F
++GLIBC_2.30 sigtimedwait F
++GLIBC_2.30 sigwait F
++GLIBC_2.30 sigwaitinfo F
++GLIBC_2.30 sleep F
++GLIBC_2.30 snprintf F
++GLIBC_2.30 sockatmark F
++GLIBC_2.30 socket F
++GLIBC_2.30 socketpair F
++GLIBC_2.30 splice F
++GLIBC_2.30 sprintf F
++GLIBC_2.30 sprofil F
++GLIBC_2.30 srand F
++GLIBC_2.30 srand48 F
++GLIBC_2.30 srand48_r F
++GLIBC_2.30 srandom F
++GLIBC_2.30 srandom_r F
++GLIBC_2.30 sscanf F
++GLIBC_2.30 ssignal F
++GLIBC_2.30 sstk F
++GLIBC_2.30 statfs F
++GLIBC_2.30 statfs64 F
++GLIBC_2.30 statvfs F
++GLIBC_2.30 statvfs64 F
++GLIBC_2.30 statx F
++GLIBC_2.30 stderr D 0x4
++GLIBC_2.30 stdin D 0x4
++GLIBC_2.30 stdout D 0x4
++GLIBC_2.30 stime F
++GLIBC_2.30 stpcpy F
++GLIBC_2.30 stpncpy F
++GLIBC_2.30 strcasecmp F
++GLIBC_2.30 strcasecmp_l F
++GLIBC_2.30 strcasestr F
++GLIBC_2.30 strcat F
++GLIBC_2.30 strchr F
++GLIBC_2.30 strchrnul F
++GLIBC_2.30 strcmp F
++GLIBC_2.30 strcoll F
++GLIBC_2.30 strcoll_l F
++GLIBC_2.30 strcpy F
++GLIBC_2.30 strcspn F
++GLIBC_2.30 strdup F
++GLIBC_2.30 strerror F
++GLIBC_2.30 strerror_l F
++GLIBC_2.30 strerror_r F
++GLIBC_2.30 strfmon F
++GLIBC_2.30 strfmon_l F
++GLIBC_2.30 strfromd F
++GLIBC_2.30 strfromf F
++GLIBC_2.30 strfromf32 F
++GLIBC_2.30 strfromf32x F
++GLIBC_2.30 strfromf64 F
++GLIBC_2.30 strfroml F
++GLIBC_2.30 strfry F
++GLIBC_2.30 strftime F
++GLIBC_2.30 strftime_l F
++GLIBC_2.30 strlen F
++GLIBC_2.30 strncasecmp F
++GLIBC_2.30 strncasecmp_l F
++GLIBC_2.30 strncat F
++GLIBC_2.30 strncmp F
++GLIBC_2.30 strncpy F
++GLIBC_2.30 strndup F
++GLIBC_2.30 strnlen F
++GLIBC_2.30 strpbrk F
++GLIBC_2.30 strptime F
++GLIBC_2.30 strptime_l F
++GLIBC_2.30 strrchr F
++GLIBC_2.30 strsep F
++GLIBC_2.30 strsignal F
++GLIBC_2.30 strspn F
++GLIBC_2.30 strstr F
++GLIBC_2.30 strtod F
++GLIBC_2.30 strtod_l F
++GLIBC_2.30 strtof F
++GLIBC_2.30 strtof32 F
++GLIBC_2.30 strtof32_l F
++GLIBC_2.30 strtof32x F
++GLIBC_2.30 strtof32x_l F
++GLIBC_2.30 strtof64 F
++GLIBC_2.30 strtof64_l F
++GLIBC_2.30 strtof_l F
++GLIBC_2.30 strtoimax F
++GLIBC_2.30 strtok F
++GLIBC_2.30 strtok_r F
++GLIBC_2.30 strtol F
++GLIBC_2.30 strtol_l F
++GLIBC_2.30 strtold F
++GLIBC_2.30 strtold_l F
++GLIBC_2.30 strtoll F
++GLIBC_2.30 strtoll_l F
++GLIBC_2.30 strtoq F
++GLIBC_2.30 strtoul F
++GLIBC_2.30 strtoul_l F
++GLIBC_2.30 strtoull F
++GLIBC_2.30 strtoull_l F
++GLIBC_2.30 strtoumax F
++GLIBC_2.30 strtouq F
++GLIBC_2.30 strverscmp F
++GLIBC_2.30 strxfrm F
++GLIBC_2.30 strxfrm_l F
++GLIBC_2.30 stty F
++GLIBC_2.30 svc_exit F
++GLIBC_2.30 svc_fdset D 0x80
++GLIBC_2.30 svc_getreq F
++GLIBC_2.30 svc_getreq_common F
++GLIBC_2.30 svc_getreq_poll F
++GLIBC_2.30 svc_getreqset F
++GLIBC_2.30 svc_max_pollfd D 0x4
++GLIBC_2.30 svc_pollfd D 0x4
++GLIBC_2.30 svc_register F
++GLIBC_2.30 svc_run F
++GLIBC_2.30 svc_sendreply F
++GLIBC_2.30 svc_unregister F
++GLIBC_2.30 svcauthdes_stats D 0xc
++GLIBC_2.30 svcerr_auth F
++GLIBC_2.30 svcerr_decode F
++GLIBC_2.30 svcerr_noproc F
++GLIBC_2.30 svcerr_noprog F
++GLIBC_2.30 svcerr_progvers F
++GLIBC_2.30 svcerr_systemerr F
++GLIBC_2.30 svcerr_weakauth F
++GLIBC_2.30 svcfd_create F
++GLIBC_2.30 svcraw_create F
++GLIBC_2.30 svctcp_create F
++GLIBC_2.30 svcudp_bufcreate F
++GLIBC_2.30 svcudp_create F
++GLIBC_2.30 svcudp_enablecache F
++GLIBC_2.30 svcunix_create F
++GLIBC_2.30 svcunixfd_create F
++GLIBC_2.30 swab F
++GLIBC_2.30 swapcontext F
++GLIBC_2.30 swapoff F
++GLIBC_2.30 swapon F
++GLIBC_2.30 swprintf F
++GLIBC_2.30 swscanf F
++GLIBC_2.30 symlink F
++GLIBC_2.30 symlinkat F
++GLIBC_2.30 sync F
++GLIBC_2.30 sync_file_range F
++GLIBC_2.30 syncfs F
++GLIBC_2.30 sys_errlist D 0x21c
++GLIBC_2.30 sys_nerr D 0x4
++GLIBC_2.30 sys_sigabbrev D 0x104
++GLIBC_2.30 sys_siglist D 0x104
++GLIBC_2.30 syscall F
++GLIBC_2.30 sysconf F
++GLIBC_2.30 sysctl F
++GLIBC_2.30 sysinfo F
++GLIBC_2.30 syslog F
++GLIBC_2.30 system F
++GLIBC_2.30 sysv_signal F
++GLIBC_2.30 tcdrain F
++GLIBC_2.30 tcflow F
++GLIBC_2.30 tcflush F
++GLIBC_2.30 tcgetattr F
++GLIBC_2.30 tcgetpgrp F
++GLIBC_2.30 tcgetsid F
++GLIBC_2.30 tcsendbreak F
++GLIBC_2.30 tcsetattr F
++GLIBC_2.30 tcsetpgrp F
++GLIBC_2.30 tdelete F
++GLIBC_2.30 tdestroy F
++GLIBC_2.30 tee F
++GLIBC_2.30 telldir F
++GLIBC_2.30 tempnam F
++GLIBC_2.30 textdomain F
++GLIBC_2.30 tfind F
++GLIBC_2.30 tgkill F
++GLIBC_2.30 thrd_current F
++GLIBC_2.30 thrd_equal F
++GLIBC_2.30 thrd_sleep F
++GLIBC_2.30 thrd_yield F
++GLIBC_2.30 time F
++GLIBC_2.30 timegm F
++GLIBC_2.30 timelocal F
++GLIBC_2.30 timerfd_create F
++GLIBC_2.30 timerfd_gettime F
++GLIBC_2.30 timerfd_settime F
++GLIBC_2.30 times F
++GLIBC_2.30 timespec_get F
++GLIBC_2.30 timezone D 0x4
++GLIBC_2.30 tmpfile F
++GLIBC_2.30 tmpfile64 F
++GLIBC_2.30 tmpnam F
++GLIBC_2.30 tmpnam_r F
++GLIBC_2.30 toascii F
++GLIBC_2.30 tolower F
++GLIBC_2.30 tolower_l F
++GLIBC_2.30 toupper F
++GLIBC_2.30 toupper_l F
++GLIBC_2.30 towctrans F
++GLIBC_2.30 towctrans_l F
++GLIBC_2.30 towlower F
++GLIBC_2.30 towlower_l F
++GLIBC_2.30 towupper F
++GLIBC_2.30 towupper_l F
++GLIBC_2.30 tr_break F
++GLIBC_2.30 truncate F
++GLIBC_2.30 truncate64 F
++GLIBC_2.30 tsearch F
++GLIBC_2.30 ttyname F
++GLIBC_2.30 ttyname_r F
++GLIBC_2.30 ttyslot F
++GLIBC_2.30 twalk F
++GLIBC_2.30 twalk_r F
++GLIBC_2.30 tzname D 0x8
++GLIBC_2.30 tzset F
++GLIBC_2.30 ualarm F
++GLIBC_2.30 ulckpwdf F
++GLIBC_2.30 ulimit F
++GLIBC_2.30 umask F
++GLIBC_2.30 umount F
++GLIBC_2.30 umount2 F
++GLIBC_2.30 uname F
++GLIBC_2.30 ungetc F
++GLIBC_2.30 ungetwc F
++GLIBC_2.30 unlink F
++GLIBC_2.30 unlinkat F
++GLIBC_2.30 unlockpt F
++GLIBC_2.30 unsetenv F
++GLIBC_2.30 unshare F
++GLIBC_2.30 updwtmp F
++GLIBC_2.30 updwtmpx F
++GLIBC_2.30 uselocale F
++GLIBC_2.30 user2netname F
++GLIBC_2.30 usleep F
++GLIBC_2.30 utime F
++GLIBC_2.30 utimensat F
++GLIBC_2.30 utimes F
++GLIBC_2.30 utmpname F
++GLIBC_2.30 utmpxname F
++GLIBC_2.30 valloc F
++GLIBC_2.30 vasprintf F
++GLIBC_2.30 vdprintf F
++GLIBC_2.30 verr F
++GLIBC_2.30 verrx F
++GLIBC_2.30 versionsort F
++GLIBC_2.30 versionsort64 F
++GLIBC_2.30 vfork F
++GLIBC_2.30 vfprintf F
++GLIBC_2.30 vfscanf F
++GLIBC_2.30 vfwprintf F
++GLIBC_2.30 vfwscanf F
++GLIBC_2.30 vhangup F
++GLIBC_2.30 vlimit F
++GLIBC_2.30 vmsplice F
++GLIBC_2.30 vprintf F
++GLIBC_2.30 vscanf F
++GLIBC_2.30 vsnprintf F
++GLIBC_2.30 vsprintf F
++GLIBC_2.30 vsscanf F
++GLIBC_2.30 vswprintf F
++GLIBC_2.30 vswscanf F
++GLIBC_2.30 vsyslog F
++GLIBC_2.30 vtimes F
++GLIBC_2.30 vwarn F
++GLIBC_2.30 vwarnx F
++GLIBC_2.30 vwprintf F
++GLIBC_2.30 vwscanf F
++GLIBC_2.30 wait F
++GLIBC_2.30 wait3 F
++GLIBC_2.30 wait4 F
++GLIBC_2.30 waitid F
++GLIBC_2.30 waitpid F
++GLIBC_2.30 warn F
++GLIBC_2.30 warnx F
++GLIBC_2.30 wcpcpy F
++GLIBC_2.30 wcpncpy F
++GLIBC_2.30 wcrtomb F
++GLIBC_2.30 wcscasecmp F
++GLIBC_2.30 wcscasecmp_l F
++GLIBC_2.30 wcscat F
++GLIBC_2.30 wcschr F
++GLIBC_2.30 wcschrnul F
++GLIBC_2.30 wcscmp F
++GLIBC_2.30 wcscoll F
++GLIBC_2.30 wcscoll_l F
++GLIBC_2.30 wcscpy F
++GLIBC_2.30 wcscspn F
++GLIBC_2.30 wcsdup F
++GLIBC_2.30 wcsftime F
++GLIBC_2.30 wcsftime_l F
++GLIBC_2.30 wcslen F
++GLIBC_2.30 wcsncasecmp F
++GLIBC_2.30 wcsncasecmp_l F
++GLIBC_2.30 wcsncat F
++GLIBC_2.30 wcsncmp F
++GLIBC_2.30 wcsncpy F
++GLIBC_2.30 wcsnlen F
++GLIBC_2.30 wcsnrtombs F
++GLIBC_2.30 wcspbrk F
++GLIBC_2.30 wcsrchr F
++GLIBC_2.30 wcsrtombs F
++GLIBC_2.30 wcsspn F
++GLIBC_2.30 wcsstr F
++GLIBC_2.30 wcstod F
++GLIBC_2.30 wcstod_l F
++GLIBC_2.30 wcstof F
++GLIBC_2.30 wcstof32 F
++GLIBC_2.30 wcstof32_l F
++GLIBC_2.30 wcstof32x F
++GLIBC_2.30 wcstof32x_l F
++GLIBC_2.30 wcstof64 F
++GLIBC_2.30 wcstof64_l F
++GLIBC_2.30 wcstof_l F
++GLIBC_2.30 wcstoimax F
++GLIBC_2.30 wcstok F
++GLIBC_2.30 wcstol F
++GLIBC_2.30 wcstol_l F
++GLIBC_2.30 wcstold F
++GLIBC_2.30 wcstold_l F
++GLIBC_2.30 wcstoll F
++GLIBC_2.30 wcstoll_l F
++GLIBC_2.30 wcstombs F
++GLIBC_2.30 wcstoq F
++GLIBC_2.30 wcstoul F
++GLIBC_2.30 wcstoul_l F
++GLIBC_2.30 wcstoull F
++GLIBC_2.30 wcstoull_l F
++GLIBC_2.30 wcstoumax F
++GLIBC_2.30 wcstouq F
++GLIBC_2.30 wcswcs F
++GLIBC_2.30 wcswidth F
++GLIBC_2.30 wcsxfrm F
++GLIBC_2.30 wcsxfrm_l F
++GLIBC_2.30 wctob F
++GLIBC_2.30 wctomb F
++GLIBC_2.30 wctrans F
++GLIBC_2.30 wctrans_l F
++GLIBC_2.30 wctype F
++GLIBC_2.30 wctype_l F
++GLIBC_2.30 wcwidth F
++GLIBC_2.30 wmemchr F
++GLIBC_2.30 wmemcmp F
++GLIBC_2.30 wmemcpy F
++GLIBC_2.30 wmemmove F
++GLIBC_2.30 wmempcpy F
++GLIBC_2.30 wmemset F
++GLIBC_2.30 wordexp F
++GLIBC_2.30 wordfree F
++GLIBC_2.30 wprintf F
++GLIBC_2.30 write F
++GLIBC_2.30 writev F
++GLIBC_2.30 wscanf F
++GLIBC_2.30 xdecrypt F
++GLIBC_2.30 xdr_accepted_reply F
++GLIBC_2.30 xdr_array F
++GLIBC_2.30 xdr_authdes_cred F
++GLIBC_2.30 xdr_authdes_verf F
++GLIBC_2.30 xdr_authunix_parms F
++GLIBC_2.30 xdr_bool F
++GLIBC_2.30 xdr_bytes F
++GLIBC_2.30 xdr_callhdr F
++GLIBC_2.30 xdr_callmsg F
++GLIBC_2.30 xdr_char F
++GLIBC_2.30 xdr_cryptkeyarg F
++GLIBC_2.30 xdr_cryptkeyarg2 F
++GLIBC_2.30 xdr_cryptkeyres F
++GLIBC_2.30 xdr_des_block F
++GLIBC_2.30 xdr_double F
++GLIBC_2.30 xdr_enum F
++GLIBC_2.30 xdr_float F
++GLIBC_2.30 xdr_free F
++GLIBC_2.30 xdr_getcredres F
++GLIBC_2.30 xdr_hyper F
++GLIBC_2.30 xdr_int F
++GLIBC_2.30 xdr_int16_t F
++GLIBC_2.30 xdr_int32_t F
++GLIBC_2.30 xdr_int64_t F
++GLIBC_2.30 xdr_int8_t F
++GLIBC_2.30 xdr_key_netstarg F
++GLIBC_2.30 xdr_key_netstres F
++GLIBC_2.30 xdr_keybuf F
++GLIBC_2.30 xdr_keystatus F
++GLIBC_2.30 xdr_long F
++GLIBC_2.30 xdr_longlong_t F
++GLIBC_2.30 xdr_netnamestr F
++GLIBC_2.30 xdr_netobj F
++GLIBC_2.30 xdr_opaque F
++GLIBC_2.30 xdr_opaque_auth F
++GLIBC_2.30 xdr_pmap F
++GLIBC_2.30 xdr_pmaplist F
++GLIBC_2.30 xdr_pointer F
++GLIBC_2.30 xdr_quad_t F
++GLIBC_2.30 xdr_reference F
++GLIBC_2.30 xdr_rejected_reply F
++GLIBC_2.30 xdr_replymsg F
++GLIBC_2.30 xdr_rmtcall_args F
++GLIBC_2.30 xdr_rmtcallres F
++GLIBC_2.30 xdr_short F
++GLIBC_2.30 xdr_sizeof F
++GLIBC_2.30 xdr_string F
++GLIBC_2.30 xdr_u_char F
++GLIBC_2.30 xdr_u_hyper F
++GLIBC_2.30 xdr_u_int F
++GLIBC_2.30 xdr_u_long F
++GLIBC_2.30 xdr_u_longlong_t F
++GLIBC_2.30 xdr_u_quad_t F
++GLIBC_2.30 xdr_u_short F
++GLIBC_2.30 xdr_uint16_t F
++GLIBC_2.30 xdr_uint32_t F
++GLIBC_2.30 xdr_uint64_t F
++GLIBC_2.30 xdr_uint8_t F
++GLIBC_2.30 xdr_union F
++GLIBC_2.30 xdr_unixcred F
++GLIBC_2.30 xdr_vector F
++GLIBC_2.30 xdr_void F
++GLIBC_2.30 xdr_wrapstring F
++GLIBC_2.30 xdrmem_create F
++GLIBC_2.30 xdrrec_create F
++GLIBC_2.30 xdrrec_endofrecord F
++GLIBC_2.30 xdrrec_eof F
++GLIBC_2.30 xdrrec_skiprecord F
++GLIBC_2.30 xdrstdio_create F
++GLIBC_2.30 xencrypt F
++GLIBC_2.30 xprt_register F
++GLIBC_2.30 xprt_unregister F
+diff --git a/sysdeps/unix/sysv/linux/arc/libcrypt.abilist b/sysdeps/unix/sysv/linux/arc/libcrypt.abilist
+new file mode 100644
+index 0000000000..8d83578d8c
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libcrypt.abilist
+@@ -0,0 +1,2 @@
++GLIBC_2.30 crypt F
++GLIBC_2.30 crypt_r F
+diff --git a/sysdeps/unix/sysv/linux/arc/libdl.abilist b/sysdeps/unix/sysv/linux/arc/libdl.abilist
+new file mode 100644
+index 0000000000..3fc6d95b85
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libdl.abilist
+@@ -0,0 +1,9 @@
++GLIBC_2.30 dladdr F
++GLIBC_2.30 dladdr1 F
++GLIBC_2.30 dlclose F
++GLIBC_2.30 dlerror F
++GLIBC_2.30 dlinfo F
++GLIBC_2.30 dlmopen F
++GLIBC_2.30 dlopen F
++GLIBC_2.30 dlsym F
++GLIBC_2.30 dlvsym F
+diff --git a/sysdeps/unix/sysv/linux/arc/libm.abilist b/sysdeps/unix/sysv/linux/arc/libm.abilist
+new file mode 100644
+index 0000000000..43f3a97e6f
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libm.abilist
+@@ -0,0 +1,753 @@
++GLIBC_2.30 __acos_finite F
++GLIBC_2.30 __acosf_finite F
++GLIBC_2.30 __acosh_finite F
++GLIBC_2.30 __acoshf_finite F
++GLIBC_2.30 __asin_finite F
++GLIBC_2.30 __asinf_finite F
++GLIBC_2.30 __atan2_finite F
++GLIBC_2.30 __atan2f_finite F
++GLIBC_2.30 __atanh_finite F
++GLIBC_2.30 __atanhf_finite F
++GLIBC_2.30 __clog10 F
++GLIBC_2.30 __clog10f F
++GLIBC_2.30 __clog10l F
++GLIBC_2.30 __cosh_finite F
++GLIBC_2.30 __coshf_finite F
++GLIBC_2.30 __exp10_finite F
++GLIBC_2.30 __exp10f_finite F
++GLIBC_2.30 __exp2_finite F
++GLIBC_2.30 __exp2f_finite F
++GLIBC_2.30 __exp_finite F
++GLIBC_2.30 __expf_finite F
++GLIBC_2.30 __finite F
++GLIBC_2.30 __finitef F
++GLIBC_2.30 __fmod_finite F
++GLIBC_2.30 __fmodf_finite F
++GLIBC_2.30 __fpclassify F
++GLIBC_2.30 __fpclassifyf F
++GLIBC_2.30 __gamma_r_finite F
++GLIBC_2.30 __gammaf_r_finite F
++GLIBC_2.30 __hypot_finite F
++GLIBC_2.30 __hypotf_finite F
++GLIBC_2.30 __iseqsig F
++GLIBC_2.30 __iseqsigf F
++GLIBC_2.30 __issignaling F
++GLIBC_2.30 __issignalingf F
++GLIBC_2.30 __j0_finite F
++GLIBC_2.30 __j0f_finite F
++GLIBC_2.30 __j1_finite F
++GLIBC_2.30 __j1f_finite F
++GLIBC_2.30 __jn_finite F
++GLIBC_2.30 __jnf_finite F
++GLIBC_2.30 __lgamma_r_finite F
++GLIBC_2.30 __lgammaf_r_finite F
++GLIBC_2.30 __log10_finite F
++GLIBC_2.30 __log10f_finite F
++GLIBC_2.30 __log2_finite F
++GLIBC_2.30 __log2f_finite F
++GLIBC_2.30 __log_finite F
++GLIBC_2.30 __logf_finite F
++GLIBC_2.30 __pow_finite F
++GLIBC_2.30 __powf_finite F
++GLIBC_2.30 __remainder_finite F
++GLIBC_2.30 __remainderf_finite F
++GLIBC_2.30 __scalb_finite F
++GLIBC_2.30 __scalbf_finite F
++GLIBC_2.30 __signbit F
++GLIBC_2.30 __signbitf F
++GLIBC_2.30 __signgam D 0x4
++GLIBC_2.30 __sinh_finite F
++GLIBC_2.30 __sinhf_finite F
++GLIBC_2.30 __sqrt_finite F
++GLIBC_2.30 __sqrtf_finite F
++GLIBC_2.30 __y0_finite F
++GLIBC_2.30 __y0f_finite F
++GLIBC_2.30 __y1_finite F
++GLIBC_2.30 __y1f_finite F
++GLIBC_2.30 __yn_finite F
++GLIBC_2.30 __ynf_finite F
++GLIBC_2.30 acos F
++GLIBC_2.30 acosf F
++GLIBC_2.30 acosf32 F
++GLIBC_2.30 acosf32x F
++GLIBC_2.30 acosf64 F
++GLIBC_2.30 acosh F
++GLIBC_2.30 acoshf F
++GLIBC_2.30 acoshf32 F
++GLIBC_2.30 acoshf32x F
++GLIBC_2.30 acoshf64 F
++GLIBC_2.30 acoshl F
++GLIBC_2.30 acosl F
++GLIBC_2.30 asin F
++GLIBC_2.30 asinf F
++GLIBC_2.30 asinf32 F
++GLIBC_2.30 asinf32x F
++GLIBC_2.30 asinf64 F
++GLIBC_2.30 asinh F
++GLIBC_2.30 asinhf F
++GLIBC_2.30 asinhf32 F
++GLIBC_2.30 asinhf32x F
++GLIBC_2.30 asinhf64 F
++GLIBC_2.30 asinhl F
++GLIBC_2.30 asinl F
++GLIBC_2.30 atan F
++GLIBC_2.30 atan2 F
++GLIBC_2.30 atan2f F
++GLIBC_2.30 atan2f32 F
++GLIBC_2.30 atan2f32x F
++GLIBC_2.30 atan2f64 F
++GLIBC_2.30 atan2l F
++GLIBC_2.30 atanf F
++GLIBC_2.30 atanf32 F
++GLIBC_2.30 atanf32x F
++GLIBC_2.30 atanf64 F
++GLIBC_2.30 atanh F
++GLIBC_2.30 atanhf F
++GLIBC_2.30 atanhf32 F
++GLIBC_2.30 atanhf32x F
++GLIBC_2.30 atanhf64 F
++GLIBC_2.30 atanhl F
++GLIBC_2.30 atanl F
++GLIBC_2.30 cabs F
++GLIBC_2.30 cabsf F
++GLIBC_2.30 cabsf32 F
++GLIBC_2.30 cabsf32x F
++GLIBC_2.30 cabsf64 F
++GLIBC_2.30 cabsl F
++GLIBC_2.30 cacos F
++GLIBC_2.30 cacosf F
++GLIBC_2.30 cacosf32 F
++GLIBC_2.30 cacosf32x F
++GLIBC_2.30 cacosf64 F
++GLIBC_2.30 cacosh F
++GLIBC_2.30 cacoshf F
++GLIBC_2.30 cacoshf32 F
++GLIBC_2.30 cacoshf32x F
++GLIBC_2.30 cacoshf64 F
++GLIBC_2.30 cacoshl F
++GLIBC_2.30 cacosl F
++GLIBC_2.30 canonicalize F
++GLIBC_2.30 canonicalizef F
++GLIBC_2.30 canonicalizef32 F
++GLIBC_2.30 canonicalizef32x F
++GLIBC_2.30 canonicalizef64 F
++GLIBC_2.30 canonicalizel F
++GLIBC_2.30 carg F
++GLIBC_2.30 cargf F
++GLIBC_2.30 cargf32 F
++GLIBC_2.30 cargf32x F
++GLIBC_2.30 cargf64 F
++GLIBC_2.30 cargl F
++GLIBC_2.30 casin F
++GLIBC_2.30 casinf F
++GLIBC_2.30 casinf32 F
++GLIBC_2.30 casinf32x F
++GLIBC_2.30 casinf64 F
++GLIBC_2.30 casinh F
++GLIBC_2.30 casinhf F
++GLIBC_2.30 casinhf32 F
++GLIBC_2.30 casinhf32x F
++GLIBC_2.30 casinhf64 F
++GLIBC_2.30 casinhl F
++GLIBC_2.30 casinl F
++GLIBC_2.30 catan F
++GLIBC_2.30 catanf F
++GLIBC_2.30 catanf32 F
++GLIBC_2.30 catanf32x F
++GLIBC_2.30 catanf64 F
++GLIBC_2.30 catanh F
++GLIBC_2.30 catanhf F
++GLIBC_2.30 catanhf32 F
++GLIBC_2.30 catanhf32x F
++GLIBC_2.30 catanhf64 F
++GLIBC_2.30 catanhl F
++GLIBC_2.30 catanl F
++GLIBC_2.30 cbrt F
++GLIBC_2.30 cbrtf F
++GLIBC_2.30 cbrtf32 F
++GLIBC_2.30 cbrtf32x F
++GLIBC_2.30 cbrtf64 F
++GLIBC_2.30 cbrtl F
++GLIBC_2.30 ccos F
++GLIBC_2.30 ccosf F
++GLIBC_2.30 ccosf32 F
++GLIBC_2.30 ccosf32x F
++GLIBC_2.30 ccosf64 F
++GLIBC_2.30 ccosh F
++GLIBC_2.30 ccoshf F
++GLIBC_2.30 ccoshf32 F
++GLIBC_2.30 ccoshf32x F
++GLIBC_2.30 ccoshf64 F
++GLIBC_2.30 ccoshl F
++GLIBC_2.30 ccosl F
++GLIBC_2.30 ceil F
++GLIBC_2.30 ceilf F
++GLIBC_2.30 ceilf32 F
++GLIBC_2.30 ceilf32x F
++GLIBC_2.30 ceilf64 F
++GLIBC_2.30 ceill F
++GLIBC_2.30 cexp F
++GLIBC_2.30 cexpf F
++GLIBC_2.30 cexpf32 F
++GLIBC_2.30 cexpf32x F
++GLIBC_2.30 cexpf64 F
++GLIBC_2.30 cexpl F
++GLIBC_2.30 cimag F
++GLIBC_2.30 cimagf F
++GLIBC_2.30 cimagf32 F
++GLIBC_2.30 cimagf32x F
++GLIBC_2.30 cimagf64 F
++GLIBC_2.30 cimagl F
++GLIBC_2.30 clog F
++GLIBC_2.30 clog10 F
++GLIBC_2.30 clog10f F
++GLIBC_2.30 clog10f32 F
++GLIBC_2.30 clog10f32x F
++GLIBC_2.30 clog10f64 F
++GLIBC_2.30 clog10l F
++GLIBC_2.30 clogf F
++GLIBC_2.30 clogf32 F
++GLIBC_2.30 clogf32x F
++GLIBC_2.30 clogf64 F
++GLIBC_2.30 clogl F
++GLIBC_2.30 conj F
++GLIBC_2.30 conjf F
++GLIBC_2.30 conjf32 F
++GLIBC_2.30 conjf32x F
++GLIBC_2.30 conjf64 F
++GLIBC_2.30 conjl F
++GLIBC_2.30 copysign F
++GLIBC_2.30 copysignf F
++GLIBC_2.30 copysignf32 F
++GLIBC_2.30 copysignf32x F
++GLIBC_2.30 copysignf64 F
++GLIBC_2.30 copysignl F
++GLIBC_2.30 cos F
++GLIBC_2.30 cosf F
++GLIBC_2.30 cosf32 F
++GLIBC_2.30 cosf32x F
++GLIBC_2.30 cosf64 F
++GLIBC_2.30 cosh F
++GLIBC_2.30 coshf F
++GLIBC_2.30 coshf32 F
++GLIBC_2.30 coshf32x F
++GLIBC_2.30 coshf64 F
++GLIBC_2.30 coshl F
++GLIBC_2.30 cosl F
++GLIBC_2.30 cpow F
++GLIBC_2.30 cpowf F
++GLIBC_2.30 cpowf32 F
++GLIBC_2.30 cpowf32x F
++GLIBC_2.30 cpowf64 F
++GLIBC_2.30 cpowl F
++GLIBC_2.30 cproj F
++GLIBC_2.30 cprojf F
++GLIBC_2.30 cprojf32 F
++GLIBC_2.30 cprojf32x F
++GLIBC_2.30 cprojf64 F
++GLIBC_2.30 cprojl F
++GLIBC_2.30 creal F
++GLIBC_2.30 crealf F
++GLIBC_2.30 crealf32 F
++GLIBC_2.30 crealf32x F
++GLIBC_2.30 crealf64 F
++GLIBC_2.30 creall F
++GLIBC_2.30 csin F
++GLIBC_2.30 csinf F
++GLIBC_2.30 csinf32 F
++GLIBC_2.30 csinf32x F
++GLIBC_2.30 csinf64 F
++GLIBC_2.30 csinh F
++GLIBC_2.30 csinhf F
++GLIBC_2.30 csinhf32 F
++GLIBC_2.30 csinhf32x F
++GLIBC_2.30 csinhf64 F
++GLIBC_2.30 csinhl F
++GLIBC_2.30 csinl F
++GLIBC_2.30 csqrt F
++GLIBC_2.30 csqrtf F
++GLIBC_2.30 csqrtf32 F
++GLIBC_2.30 csqrtf32x F
++GLIBC_2.30 csqrtf64 F
++GLIBC_2.30 csqrtl F
++GLIBC_2.30 ctan F
++GLIBC_2.30 ctanf F
++GLIBC_2.30 ctanf32 F
++GLIBC_2.30 ctanf32x F
++GLIBC_2.30 ctanf64 F
++GLIBC_2.30 ctanh F
++GLIBC_2.30 ctanhf F
++GLIBC_2.30 ctanhf32 F
++GLIBC_2.30 ctanhf32x F
++GLIBC_2.30 ctanhf64 F
++GLIBC_2.30 ctanhl F
++GLIBC_2.30 ctanl F
++GLIBC_2.30 daddl F
++GLIBC_2.30 ddivl F
++GLIBC_2.30 dmull F
++GLIBC_2.30 drem F
++GLIBC_2.30 dremf F
++GLIBC_2.30 dreml F
++GLIBC_2.30 dsubl F
++GLIBC_2.30 erf F
++GLIBC_2.30 erfc F
++GLIBC_2.30 erfcf F
++GLIBC_2.30 erfcf32 F
++GLIBC_2.30 erfcf32x F
++GLIBC_2.30 erfcf64 F
++GLIBC_2.30 erfcl F
++GLIBC_2.30 erff F
++GLIBC_2.30 erff32 F
++GLIBC_2.30 erff32x F
++GLIBC_2.30 erff64 F
++GLIBC_2.30 erfl F
++GLIBC_2.30 exp F
++GLIBC_2.30 exp10 F
++GLIBC_2.30 exp10f F
++GLIBC_2.30 exp10f32 F
++GLIBC_2.30 exp10f32x F
++GLIBC_2.30 exp10f64 F
++GLIBC_2.30 exp10l F
++GLIBC_2.30 exp2 F
++GLIBC_2.30 exp2f F
++GLIBC_2.30 exp2f32 F
++GLIBC_2.30 exp2f32x F
++GLIBC_2.30 exp2f64 F
++GLIBC_2.30 exp2l F
++GLIBC_2.30 expf F
++GLIBC_2.30 expf32 F
++GLIBC_2.30 expf32x F
++GLIBC_2.30 expf64 F
++GLIBC_2.30 expl F
++GLIBC_2.30 expm1 F
++GLIBC_2.30 expm1f F
++GLIBC_2.30 expm1f32 F
++GLIBC_2.30 expm1f32x F
++GLIBC_2.30 expm1f64 F
++GLIBC_2.30 expm1l F
++GLIBC_2.30 f32addf32x F
++GLIBC_2.30 f32addf64 F
++GLIBC_2.30 f32divf32x F
++GLIBC_2.30 f32divf64 F
++GLIBC_2.30 f32mulf32x F
++GLIBC_2.30 f32mulf64 F
++GLIBC_2.30 f32subf32x F
++GLIBC_2.30 f32subf64 F
++GLIBC_2.30 f32xaddf64 F
++GLIBC_2.30 f32xdivf64 F
++GLIBC_2.30 f32xmulf64 F
++GLIBC_2.30 f32xsubf64 F
++GLIBC_2.30 fabs F
++GLIBC_2.30 fabsf F
++GLIBC_2.30 fabsf32 F
++GLIBC_2.30 fabsf32x F
++GLIBC_2.30 fabsf64 F
++GLIBC_2.30 fabsl F
++GLIBC_2.30 fadd F
++GLIBC_2.30 faddl F
++GLIBC_2.30 fdim F
++GLIBC_2.30 fdimf F
++GLIBC_2.30 fdimf32 F
++GLIBC_2.30 fdimf32x F
++GLIBC_2.30 fdimf64 F
++GLIBC_2.30 fdiml F
++GLIBC_2.30 fdiv F
++GLIBC_2.30 fdivl F
++GLIBC_2.30 feclearexcept F
++GLIBC_2.30 fedisableexcept F
++GLIBC_2.30 feenableexcept F
++GLIBC_2.30 fegetenv F
++GLIBC_2.30 fegetexcept F
++GLIBC_2.30 fegetexceptflag F
++GLIBC_2.30 fegetmode F
++GLIBC_2.30 fegetround F
++GLIBC_2.30 feholdexcept F
++GLIBC_2.30 feraiseexcept F
++GLIBC_2.30 fesetenv F
++GLIBC_2.30 fesetexcept F
++GLIBC_2.30 fesetexceptflag F
++GLIBC_2.30 fesetmode F
++GLIBC_2.30 fesetround F
++GLIBC_2.30 fetestexcept F
++GLIBC_2.30 fetestexceptflag F
++GLIBC_2.30 feupdateenv F
++GLIBC_2.30 finite F
++GLIBC_2.30 finitef F
++GLIBC_2.30 finitel F
++GLIBC_2.30 floor F
++GLIBC_2.30 floorf F
++GLIBC_2.30 floorf32 F
++GLIBC_2.30 floorf32x F
++GLIBC_2.30 floorf64 F
++GLIBC_2.30 floorl F
++GLIBC_2.30 fma F
++GLIBC_2.30 fmaf F
++GLIBC_2.30 fmaf32 F
++GLIBC_2.30 fmaf32x F
++GLIBC_2.30 fmaf64 F
++GLIBC_2.30 fmal F
++GLIBC_2.30 fmax F
++GLIBC_2.30 fmaxf F
++GLIBC_2.30 fmaxf32 F
++GLIBC_2.30 fmaxf32x F
++GLIBC_2.30 fmaxf64 F
++GLIBC_2.30 fmaxl F
++GLIBC_2.30 fmaxmag F
++GLIBC_2.30 fmaxmagf F
++GLIBC_2.30 fmaxmagf32 F
++GLIBC_2.30 fmaxmagf32x F
++GLIBC_2.30 fmaxmagf64 F
++GLIBC_2.30 fmaxmagl F
++GLIBC_2.30 fmin F
++GLIBC_2.30 fminf F
++GLIBC_2.30 fminf32 F
++GLIBC_2.30 fminf32x F
++GLIBC_2.30 fminf64 F
++GLIBC_2.30 fminl F
++GLIBC_2.30 fminmag F
++GLIBC_2.30 fminmagf F
++GLIBC_2.30 fminmagf32 F
++GLIBC_2.30 fminmagf32x F
++GLIBC_2.30 fminmagf64 F
++GLIBC_2.30 fminmagl F
++GLIBC_2.30 fmod F
++GLIBC_2.30 fmodf F
++GLIBC_2.30 fmodf32 F
++GLIBC_2.30 fmodf32x F
++GLIBC_2.30 fmodf64 F
++GLIBC_2.30 fmodl F
++GLIBC_2.30 fmul F
++GLIBC_2.30 fmull F
++GLIBC_2.30 frexp F
++GLIBC_2.30 frexpf F
++GLIBC_2.30 frexpf32 F
++GLIBC_2.30 frexpf32x F
++GLIBC_2.30 frexpf64 F
++GLIBC_2.30 frexpl F
++GLIBC_2.30 fromfp F
++GLIBC_2.30 fromfpf F
++GLIBC_2.30 fromfpf32 F
++GLIBC_2.30 fromfpf32x F
++GLIBC_2.30 fromfpf64 F
++GLIBC_2.30 fromfpl F
++GLIBC_2.30 fromfpx F
++GLIBC_2.30 fromfpxf F
++GLIBC_2.30 fromfpxf32 F
++GLIBC_2.30 fromfpxf32x F
++GLIBC_2.30 fromfpxf64 F
++GLIBC_2.30 fromfpxl F
++GLIBC_2.30 fsub F
++GLIBC_2.30 fsubl F
++GLIBC_2.30 gamma F
++GLIBC_2.30 gammaf F
++GLIBC_2.30 gammal F
++GLIBC_2.30 getpayload F
++GLIBC_2.30 getpayloadf F
++GLIBC_2.30 getpayloadf32 F
++GLIBC_2.30 getpayloadf32x F
++GLIBC_2.30 getpayloadf64 F
++GLIBC_2.30 getpayloadl F
++GLIBC_2.30 hypot F
++GLIBC_2.30 hypotf F
++GLIBC_2.30 hypotf32 F
++GLIBC_2.30 hypotf32x F
++GLIBC_2.30 hypotf64 F
++GLIBC_2.30 hypotl F
++GLIBC_2.30 ilogb F
++GLIBC_2.30 ilogbf F
++GLIBC_2.30 ilogbf32 F
++GLIBC_2.30 ilogbf32x F
++GLIBC_2.30 ilogbf64 F
++GLIBC_2.30 ilogbl F
++GLIBC_2.30 j0 F
++GLIBC_2.30 j0f F
++GLIBC_2.30 j0f32 F
++GLIBC_2.30 j0f32x F
++GLIBC_2.30 j0f64 F
++GLIBC_2.30 j0l F
++GLIBC_2.30 j1 F
++GLIBC_2.30 j1f F
++GLIBC_2.30 j1f32 F
++GLIBC_2.30 j1f32x F
++GLIBC_2.30 j1f64 F
++GLIBC_2.30 j1l F
++GLIBC_2.30 jn F
++GLIBC_2.30 jnf F
++GLIBC_2.30 jnf32 F
++GLIBC_2.30 jnf32x F
++GLIBC_2.30 jnf64 F
++GLIBC_2.30 jnl F
++GLIBC_2.30 ldexp F
++GLIBC_2.30 ldexpf F
++GLIBC_2.30 ldexpf32 F
++GLIBC_2.30 ldexpf32x F
++GLIBC_2.30 ldexpf64 F
++GLIBC_2.30 ldexpl F
++GLIBC_2.30 lgamma F
++GLIBC_2.30 lgamma_r F
++GLIBC_2.30 lgammaf F
++GLIBC_2.30 lgammaf32 F
++GLIBC_2.30 lgammaf32_r F
++GLIBC_2.30 lgammaf32x F
++GLIBC_2.30 lgammaf32x_r F
++GLIBC_2.30 lgammaf64 F
++GLIBC_2.30 lgammaf64_r F
++GLIBC_2.30 lgammaf_r F
++GLIBC_2.30 lgammal F
++GLIBC_2.30 lgammal_r F
++GLIBC_2.30 llogb F
++GLIBC_2.30 llogbf F
++GLIBC_2.30 llogbf32 F
++GLIBC_2.30 llogbf32x F
++GLIBC_2.30 llogbf64 F
++GLIBC_2.30 llogbl F
++GLIBC_2.30 llrint F
++GLIBC_2.30 llrintf F
++GLIBC_2.30 llrintf32 F
++GLIBC_2.30 llrintf32x F
++GLIBC_2.30 llrintf64 F
++GLIBC_2.30 llrintl F
++GLIBC_2.30 llround F
++GLIBC_2.30 llroundf F
++GLIBC_2.30 llroundf32 F
++GLIBC_2.30 llroundf32x F
++GLIBC_2.30 llroundf64 F
++GLIBC_2.30 llroundl F
++GLIBC_2.30 log F
++GLIBC_2.30 log10 F
++GLIBC_2.30 log10f F
++GLIBC_2.30 log10f32 F
++GLIBC_2.30 log10f32x F
++GLIBC_2.30 log10f64 F
++GLIBC_2.30 log10l F
++GLIBC_2.30 log1p F
++GLIBC_2.30 log1pf F
++GLIBC_2.30 log1pf32 F
++GLIBC_2.30 log1pf32x F
++GLIBC_2.30 log1pf64 F
++GLIBC_2.30 log1pl F
++GLIBC_2.30 log2 F
++GLIBC_2.30 log2f F
++GLIBC_2.30 log2f32 F
++GLIBC_2.30 log2f32x F
++GLIBC_2.30 log2f64 F
++GLIBC_2.30 log2l F
++GLIBC_2.30 logb F
++GLIBC_2.30 logbf F
++GLIBC_2.30 logbf32 F
++GLIBC_2.30 logbf32x F
++GLIBC_2.30 logbf64 F
++GLIBC_2.30 logbl F
++GLIBC_2.30 logf F
++GLIBC_2.30 logf32 F
++GLIBC_2.30 logf32x F
++GLIBC_2.30 logf64 F
++GLIBC_2.30 logl F
++GLIBC_2.30 lrint F
++GLIBC_2.30 lrintf F
++GLIBC_2.30 lrintf32 F
++GLIBC_2.30 lrintf32x F
++GLIBC_2.30 lrintf64 F
++GLIBC_2.30 lrintl F
++GLIBC_2.30 lround F
++GLIBC_2.30 lroundf F
++GLIBC_2.30 lroundf32 F
++GLIBC_2.30 lroundf32x F
++GLIBC_2.30 lroundf64 F
++GLIBC_2.30 lroundl F
++GLIBC_2.30 modf F
++GLIBC_2.30 modff F
++GLIBC_2.30 modff32 F
++GLIBC_2.30 modff32x F
++GLIBC_2.30 modff64 F
++GLIBC_2.30 modfl F
++GLIBC_2.30 nan F
++GLIBC_2.30 nanf F
++GLIBC_2.30 nanf32 F
++GLIBC_2.30 nanf32x F
++GLIBC_2.30 nanf64 F
++GLIBC_2.30 nanl F
++GLIBC_2.30 nearbyint F
++GLIBC_2.30 nearbyintf F
++GLIBC_2.30 nearbyintf32 F
++GLIBC_2.30 nearbyintf32x F
++GLIBC_2.30 nearbyintf64 F
++GLIBC_2.30 nearbyintl F
++GLIBC_2.30 nextafter F
++GLIBC_2.30 nextafterf F
++GLIBC_2.30 nextafterf32 F
++GLIBC_2.30 nextafterf32x F
++GLIBC_2.30 nextafterf64 F
++GLIBC_2.30 nextafterl F
++GLIBC_2.30 nextdown F
++GLIBC_2.30 nextdownf F
++GLIBC_2.30 nextdownf32 F
++GLIBC_2.30 nextdownf32x F
++GLIBC_2.30 nextdownf64 F
++GLIBC_2.30 nextdownl F
++GLIBC_2.30 nexttoward F
++GLIBC_2.30 nexttowardf F
++GLIBC_2.30 nexttowardl F
++GLIBC_2.30 nextup F
++GLIBC_2.30 nextupf F
++GLIBC_2.30 nextupf32 F
++GLIBC_2.30 nextupf32x F
++GLIBC_2.30 nextupf64 F
++GLIBC_2.30 nextupl F
++GLIBC_2.30 pow F
++GLIBC_2.30 powf F
++GLIBC_2.30 powf32 F
++GLIBC_2.30 powf32x F
++GLIBC_2.30 powf64 F
++GLIBC_2.30 powl F
++GLIBC_2.30 remainder F
++GLIBC_2.30 remainderf F
++GLIBC_2.30 remainderf32 F
++GLIBC_2.30 remainderf32x F
++GLIBC_2.30 remainderf64 F
++GLIBC_2.30 remainderl F
++GLIBC_2.30 remquo F
++GLIBC_2.30 remquof F
++GLIBC_2.30 remquof32 F
++GLIBC_2.30 remquof32x F
++GLIBC_2.30 remquof64 F
++GLIBC_2.30 remquol F
++GLIBC_2.30 rint F
++GLIBC_2.30 rintf F
++GLIBC_2.30 rintf32 F
++GLIBC_2.30 rintf32x F
++GLIBC_2.30 rintf64 F
++GLIBC_2.30 rintl F
++GLIBC_2.30 round F
++GLIBC_2.30 roundeven F
++GLIBC_2.30 roundevenf F
++GLIBC_2.30 roundevenf32 F
++GLIBC_2.30 roundevenf32x F
++GLIBC_2.30 roundevenf64 F
++GLIBC_2.30 roundevenl F
++GLIBC_2.30 roundf F
++GLIBC_2.30 roundf32 F
++GLIBC_2.30 roundf32x F
++GLIBC_2.30 roundf64 F
++GLIBC_2.30 roundl F
++GLIBC_2.30 scalb F
++GLIBC_2.30 scalbf F
++GLIBC_2.30 scalbl F
++GLIBC_2.30 scalbln F
++GLIBC_2.30 scalblnf F
++GLIBC_2.30 scalblnf32 F
++GLIBC_2.30 scalblnf32x F
++GLIBC_2.30 scalblnf64 F
++GLIBC_2.30 scalblnl F
++GLIBC_2.30 scalbn F
++GLIBC_2.30 scalbnf F
++GLIBC_2.30 scalbnf32 F
++GLIBC_2.30 scalbnf32x F
++GLIBC_2.30 scalbnf64 F
++GLIBC_2.30 scalbnl F
++GLIBC_2.30 setpayload F
++GLIBC_2.30 setpayloadf F
++GLIBC_2.30 setpayloadf32 F
++GLIBC_2.30 setpayloadf32x F
++GLIBC_2.30 setpayloadf64 F
++GLIBC_2.30 setpayloadl F
++GLIBC_2.30 setpayloadsig F
++GLIBC_2.30 setpayloadsigf F
++GLIBC_2.30 setpayloadsigf32 F
++GLIBC_2.30 setpayloadsigf32x F
++GLIBC_2.30 setpayloadsigf64 F
++GLIBC_2.30 setpayloadsigl F
++GLIBC_2.30 signgam D 0x4
++GLIBC_2.30 significand F
++GLIBC_2.30 significandf F
++GLIBC_2.30 significandl F
++GLIBC_2.30 sin F
++GLIBC_2.30 sincos F
++GLIBC_2.30 sincosf F
++GLIBC_2.30 sincosf32 F
++GLIBC_2.30 sincosf32x F
++GLIBC_2.30 sincosf64 F
++GLIBC_2.30 sincosl F
++GLIBC_2.30 sinf F
++GLIBC_2.30 sinf32 F
++GLIBC_2.30 sinf32x F
++GLIBC_2.30 sinf64 F
++GLIBC_2.30 sinh F
++GLIBC_2.30 sinhf F
++GLIBC_2.30 sinhf32 F
++GLIBC_2.30 sinhf32x F
++GLIBC_2.30 sinhf64 F
++GLIBC_2.30 sinhl F
++GLIBC_2.30 sinl F
++GLIBC_2.30 sqrt F
++GLIBC_2.30 sqrtf F
++GLIBC_2.30 sqrtf32 F
++GLIBC_2.30 sqrtf32x F
++GLIBC_2.30 sqrtf64 F
++GLIBC_2.30 sqrtl F
++GLIBC_2.30 tan F
++GLIBC_2.30 tanf F
++GLIBC_2.30 tanf32 F
++GLIBC_2.30 tanf32x F
++GLIBC_2.30 tanf64 F
++GLIBC_2.30 tanh F
++GLIBC_2.30 tanhf F
++GLIBC_2.30 tanhf32 F
++GLIBC_2.30 tanhf32x F
++GLIBC_2.30 tanhf64 F
++GLIBC_2.30 tanhl F
++GLIBC_2.30 tanl F
++GLIBC_2.30 tgamma F
++GLIBC_2.30 tgammaf F
++GLIBC_2.30 tgammaf32 F
++GLIBC_2.30 tgammaf32x F
++GLIBC_2.30 tgammaf64 F
++GLIBC_2.30 tgammal F
++GLIBC_2.30 totalorder F
++GLIBC_2.30 totalorderf F
++GLIBC_2.30 totalorderf32 F
++GLIBC_2.30 totalorderf32x F
++GLIBC_2.30 totalorderf64 F
++GLIBC_2.30 totalorderl F
++GLIBC_2.30 totalordermag F
++GLIBC_2.30 totalordermagf F
++GLIBC_2.30 totalordermagf32 F
++GLIBC_2.30 totalordermagf32x F
++GLIBC_2.30 totalordermagf64 F
++GLIBC_2.30 totalordermagl F
++GLIBC_2.30 trunc F
++GLIBC_2.30 truncf F
++GLIBC_2.30 truncf32 F
++GLIBC_2.30 truncf32x F
++GLIBC_2.30 truncf64 F
++GLIBC_2.30 truncl F
++GLIBC_2.30 ufromfp F
++GLIBC_2.30 ufromfpf F
++GLIBC_2.30 ufromfpf32 F
++GLIBC_2.30 ufromfpf32x F
++GLIBC_2.30 ufromfpf64 F
++GLIBC_2.30 ufromfpl F
++GLIBC_2.30 ufromfpx F
++GLIBC_2.30 ufromfpxf F
++GLIBC_2.30 ufromfpxf32 F
++GLIBC_2.30 ufromfpxf32x F
++GLIBC_2.30 ufromfpxf64 F
++GLIBC_2.30 ufromfpxl F
++GLIBC_2.30 y0 F
++GLIBC_2.30 y0f F
++GLIBC_2.30 y0f32 F
++GLIBC_2.30 y0f32x F
++GLIBC_2.30 y0f64 F
++GLIBC_2.30 y0l F
++GLIBC_2.30 y1 F
++GLIBC_2.30 y1f F
++GLIBC_2.30 y1f32 F
++GLIBC_2.30 y1f32x F
++GLIBC_2.30 y1f64 F
++GLIBC_2.30 y1l F
++GLIBC_2.30 yn F
++GLIBC_2.30 ynf F
++GLIBC_2.30 ynf32 F
++GLIBC_2.30 ynf32x F
++GLIBC_2.30 ynf64 F
++GLIBC_2.30 ynl F
+diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+new file mode 100644
+index 0000000000..d89cf8d301
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+@@ -0,0 +1,240 @@
++GLIBC_2.30 _IO_flockfile F
++GLIBC_2.30 _IO_ftrylockfile F
++GLIBC_2.30 _IO_funlockfile F
++GLIBC_2.30 __close F
++GLIBC_2.30 __connect F
++GLIBC_2.30 __errno_location F
++GLIBC_2.30 __h_errno_location F
++GLIBC_2.30 __libc_allocate_rtsig F
++GLIBC_2.30 __libc_current_sigrtmax F
++GLIBC_2.30 __libc_current_sigrtmin F
++GLIBC_2.30 __lseek F
++GLIBC_2.30 __nanosleep F
++GLIBC_2.30 __open F
++GLIBC_2.30 __open64 F
++GLIBC_2.30 __pread64 F
++GLIBC_2.30 __pthread_cleanup_routine F
++GLIBC_2.30 __pthread_getspecific F
++GLIBC_2.30 __pthread_key_create F
++GLIBC_2.30 __pthread_mutex_destroy F
++GLIBC_2.30 __pthread_mutex_init F
++GLIBC_2.30 __pthread_mutex_lock F
++GLIBC_2.30 __pthread_mutex_trylock F
++GLIBC_2.30 __pthread_mutex_unlock F
++GLIBC_2.30 __pthread_mutexattr_destroy F
++GLIBC_2.30 __pthread_mutexattr_init F
++GLIBC_2.30 __pthread_mutexattr_settype F
++GLIBC_2.30 __pthread_once F
++GLIBC_2.30 __pthread_register_cancel F
++GLIBC_2.30 __pthread_register_cancel_defer F
++GLIBC_2.30 __pthread_rwlock_destroy F
++GLIBC_2.30 __pthread_rwlock_init F
++GLIBC_2.30 __pthread_rwlock_rdlock F
++GLIBC_2.30 __pthread_rwlock_tryrdlock F
++GLIBC_2.30 __pthread_rwlock_trywrlock F
++GLIBC_2.30 __pthread_rwlock_unlock F
++GLIBC_2.30 __pthread_rwlock_wrlock F
++GLIBC_2.30 __pthread_setspecific F
++GLIBC_2.30 __pthread_unregister_cancel F
++GLIBC_2.30 __pthread_unregister_cancel_restore F
++GLIBC_2.30 __pthread_unwind_next F
++GLIBC_2.30 __pwrite64 F
++GLIBC_2.30 __read F
++GLIBC_2.30 __res_state F
++GLIBC_2.30 __send F
++GLIBC_2.30 __sigaction F
++GLIBC_2.30 __wait F
++GLIBC_2.30 __write F
++GLIBC_2.30 _pthread_cleanup_pop F
++GLIBC_2.30 _pthread_cleanup_pop_restore F
++GLIBC_2.30 _pthread_cleanup_push F
++GLIBC_2.30 _pthread_cleanup_push_defer F
++GLIBC_2.30 accept F
++GLIBC_2.30 call_once F
++GLIBC_2.30 close F
++GLIBC_2.30 cnd_broadcast F
++GLIBC_2.30 cnd_destroy F
++GLIBC_2.30 cnd_init F
++GLIBC_2.30 cnd_signal F
++GLIBC_2.30 cnd_timedwait F
++GLIBC_2.30 cnd_wait F
++GLIBC_2.30 connect F
++GLIBC_2.30 flockfile F
++GLIBC_2.30 fsync F
++GLIBC_2.30 ftrylockfile F
++GLIBC_2.30 funlockfile F
++GLIBC_2.30 lseek F
++GLIBC_2.30 lseek64 F
++GLIBC_2.30 msync F
++GLIBC_2.30 mtx_destroy F
++GLIBC_2.30 mtx_init F
++GLIBC_2.30 mtx_lock F
++GLIBC_2.30 mtx_timedlock F
++GLIBC_2.30 mtx_trylock F
++GLIBC_2.30 mtx_unlock F
++GLIBC_2.30 nanosleep F
++GLIBC_2.30 open F
++GLIBC_2.30 open64 F
++GLIBC_2.30 pause F
++GLIBC_2.30 pread F
++GLIBC_2.30 pread64 F
++GLIBC_2.30 pthread_attr_destroy F
++GLIBC_2.30 pthread_attr_getaffinity_np F
++GLIBC_2.30 pthread_attr_getdetachstate F
++GLIBC_2.30 pthread_attr_getguardsize F
++GLIBC_2.30 pthread_attr_getinheritsched F
++GLIBC_2.30 pthread_attr_getschedparam F
++GLIBC_2.30 pthread_attr_getschedpolicy F
++GLIBC_2.30 pthread_attr_getscope F
++GLIBC_2.30 pthread_attr_getstack F
++GLIBC_2.30 pthread_attr_getstackaddr F
++GLIBC_2.30 pthread_attr_getstacksize F
++GLIBC_2.30 pthread_attr_init F
++GLIBC_2.30 pthread_attr_setaffinity_np F
++GLIBC_2.30 pthread_attr_setdetachstate F
++GLIBC_2.30 pthread_attr_setguardsize F
++GLIBC_2.30 pthread_attr_setinheritsched F
++GLIBC_2.30 pthread_attr_setschedparam F
++GLIBC_2.30 pthread_attr_setschedpolicy F
++GLIBC_2.30 pthread_attr_setscope F
++GLIBC_2.30 pthread_attr_setstack F
++GLIBC_2.30 pthread_attr_setstackaddr F
++GLIBC_2.30 pthread_attr_setstacksize F
++GLIBC_2.30 pthread_barrier_destroy F
++GLIBC_2.30 pthread_barrier_init F
++GLIBC_2.30 pthread_barrier_wait F
++GLIBC_2.30 pthread_barrierattr_destroy F
++GLIBC_2.30 pthread_barrierattr_getpshared F
++GLIBC_2.30 pthread_barrierattr_init F
++GLIBC_2.30 pthread_barrierattr_setpshared F
++GLIBC_2.30 pthread_cancel F
++GLIBC_2.30 pthread_cond_broadcast F
++GLIBC_2.30 pthread_cond_clockwait F
++GLIBC_2.30 pthread_cond_destroy F
++GLIBC_2.30 pthread_cond_init F
++GLIBC_2.30 pthread_cond_signal F
++GLIBC_2.30 pthread_cond_timedwait F
++GLIBC_2.30 pthread_cond_wait F
++GLIBC_2.30 pthread_condattr_destroy F
++GLIBC_2.30 pthread_condattr_getclock F
++GLIBC_2.30 pthread_condattr_getpshared F
++GLIBC_2.30 pthread_condattr_init F
++GLIBC_2.30 pthread_condattr_setclock F
++GLIBC_2.30 pthread_condattr_setpshared F
++GLIBC_2.30 pthread_create F
++GLIBC_2.30 pthread_detach F
++GLIBC_2.30 pthread_equal F
++GLIBC_2.30 pthread_exit F
++GLIBC_2.30 pthread_getaffinity_np F
++GLIBC_2.30 pthread_getattr_default_np F
++GLIBC_2.30 pthread_getattr_np F
++GLIBC_2.30 pthread_getconcurrency F
++GLIBC_2.30 pthread_getcpuclockid F
++GLIBC_2.30 pthread_getname_np F
++GLIBC_2.30 pthread_getschedparam F
++GLIBC_2.30 pthread_getspecific F
++GLIBC_2.30 pthread_join F
++GLIBC_2.30 pthread_key_create F
++GLIBC_2.30 pthread_key_delete F
++GLIBC_2.30 pthread_kill F
++GLIBC_2.30 pthread_kill_other_threads_np F
++GLIBC_2.30 pthread_mutex_clocklock F
++GLIBC_2.30 pthread_mutex_consistent F
++GLIBC_2.30 pthread_mutex_consistent_np F
++GLIBC_2.30 pthread_mutex_destroy F
++GLIBC_2.30 pthread_mutex_getprioceiling F
++GLIBC_2.30 pthread_mutex_init F
++GLIBC_2.30 pthread_mutex_lock F
++GLIBC_2.30 pthread_mutex_setprioceiling F
++GLIBC_2.30 pthread_mutex_timedlock F
++GLIBC_2.30 pthread_mutex_trylock F
++GLIBC_2.30 pthread_mutex_unlock F
++GLIBC_2.30 pthread_mutexattr_destroy F
++GLIBC_2.30 pthread_mutexattr_getkind_np F
++GLIBC_2.30 pthread_mutexattr_getprioceiling F
++GLIBC_2.30 pthread_mutexattr_getprotocol F
++GLIBC_2.30 pthread_mutexattr_getpshared F
++GLIBC_2.30 pthread_mutexattr_getrobust F
++GLIBC_2.30 pthread_mutexattr_getrobust_np F
++GLIBC_2.30 pthread_mutexattr_gettype F
++GLIBC_2.30 pthread_mutexattr_init F
++GLIBC_2.30 pthread_mutexattr_setkind_np F
++GLIBC_2.30 pthread_mutexattr_setprioceiling F
++GLIBC_2.30 pthread_mutexattr_setprotocol F
++GLIBC_2.30 pthread_mutexattr_setpshared F
++GLIBC_2.30 pthread_mutexattr_setrobust F
++GLIBC_2.30 pthread_mutexattr_setrobust_np F
++GLIBC_2.30 pthread_mutexattr_settype F
++GLIBC_2.30 pthread_once F
++GLIBC_2.30 pthread_rwlock_clockrdlock F
++GLIBC_2.30 pthread_rwlock_clockwrlock F
++GLIBC_2.30 pthread_rwlock_destroy F
++GLIBC_2.30 pthread_rwlock_init F
++GLIBC_2.30 pthread_rwlock_rdlock F
++GLIBC_2.30 pthread_rwlock_timedrdlock F
++GLIBC_2.30 pthread_rwlock_timedwrlock F
++GLIBC_2.30 pthread_rwlock_tryrdlock F
++GLIBC_2.30 pthread_rwlock_trywrlock F
++GLIBC_2.30 pthread_rwlock_unlock F
++GLIBC_2.30 pthread_rwlock_wrlock F
++GLIBC_2.30 pthread_rwlockattr_destroy F
++GLIBC_2.30 pthread_rwlockattr_getkind_np F
++GLIBC_2.30 pthread_rwlockattr_getpshared F
++GLIBC_2.30 pthread_rwlockattr_init F
++GLIBC_2.30 pthread_rwlockattr_setkind_np F
++GLIBC_2.30 pthread_rwlockattr_setpshared F
++GLIBC_2.30 pthread_setaffinity_np F
++GLIBC_2.30 pthread_setattr_default_np F
++GLIBC_2.30 pthread_setcancelstate F
++GLIBC_2.30 pthread_setcanceltype F
++GLIBC_2.30 pthread_setconcurrency F
++GLIBC_2.30 pthread_setname_np F
++GLIBC_2.30 pthread_setschedparam F
++GLIBC_2.30 pthread_setschedprio F
++GLIBC_2.30 pthread_setspecific F
++GLIBC_2.30 pthread_sigmask F
++GLIBC_2.30 pthread_sigqueue F
++GLIBC_2.30 pthread_spin_destroy F
++GLIBC_2.30 pthread_spin_init F
++GLIBC_2.30 pthread_spin_lock F
++GLIBC_2.30 pthread_spin_trylock F
++GLIBC_2.30 pthread_spin_unlock F
++GLIBC_2.30 pthread_testcancel F
++GLIBC_2.30 pthread_timedjoin_np F
++GLIBC_2.30 pthread_tryjoin_np F
++GLIBC_2.30 pthread_yield F
++GLIBC_2.30 pwrite F
++GLIBC_2.30 pwrite64 F
++GLIBC_2.30 raise F
++GLIBC_2.30 read F
++GLIBC_2.30 recv F
++GLIBC_2.30 recvfrom F
++GLIBC_2.30 recvmsg F
++GLIBC_2.30 sem_clockwait F
++GLIBC_2.30 sem_close F
++GLIBC_2.30 sem_destroy F
++GLIBC_2.30 sem_getvalue F
++GLIBC_2.30 sem_init F
++GLIBC_2.30 sem_open F
++GLIBC_2.30 sem_post F
++GLIBC_2.30 sem_timedwait F
++GLIBC_2.30 sem_trywait F
++GLIBC_2.30 sem_unlink F
++GLIBC_2.30 sem_wait F
++GLIBC_2.30 send F
++GLIBC_2.30 sendmsg F
++GLIBC_2.30 sendto F
++GLIBC_2.30 sigaction F
++GLIBC_2.30 sigwait F
++GLIBC_2.30 tcdrain F
++GLIBC_2.30 thrd_create F
++GLIBC_2.30 thrd_detach F
++GLIBC_2.30 thrd_exit F
++GLIBC_2.30 thrd_join F
++GLIBC_2.30 tss_create F
++GLIBC_2.30 tss_delete F
++GLIBC_2.30 tss_get F
++GLIBC_2.30 tss_set F
++GLIBC_2.30 wait F
++GLIBC_2.30 waitpid F
++GLIBC_2.30 write F
+diff --git a/sysdeps/unix/sysv/linux/arc/libresolv.abilist b/sysdeps/unix/sysv/linux/arc/libresolv.abilist
+new file mode 100644
+index 0000000000..ca745f5b98
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libresolv.abilist
+@@ -0,0 +1,79 @@
++GLIBC_2.30 __b64_ntop F
++GLIBC_2.30 __b64_pton F
++GLIBC_2.30 __dn_comp F
++GLIBC_2.30 __dn_count_labels F
++GLIBC_2.30 __dn_expand F
++GLIBC_2.30 __dn_skipname F
++GLIBC_2.30 __fp_nquery F
++GLIBC_2.30 __fp_query F
++GLIBC_2.30 __fp_resstat F
++GLIBC_2.30 __hostalias F
++GLIBC_2.30 __loc_aton F
++GLIBC_2.30 __loc_ntoa F
++GLIBC_2.30 __p_cdname F
++GLIBC_2.30 __p_cdnname F
++GLIBC_2.30 __p_class F
++GLIBC_2.30 __p_class_syms D 0x54
++GLIBC_2.30 __p_fqname F
++GLIBC_2.30 __p_fqnname F
++GLIBC_2.30 __p_option F
++GLIBC_2.30 __p_query F
++GLIBC_2.30 __p_rcode F
++GLIBC_2.30 __p_time F
++GLIBC_2.30 __p_type F
++GLIBC_2.30 __p_type_syms D 0x228
++GLIBC_2.30 __putlong F
++GLIBC_2.30 __putshort F
++GLIBC_2.30 __res_close F
++GLIBC_2.30 __res_dnok F
++GLIBC_2.30 __res_hnok F
++GLIBC_2.30 __res_hostalias F
++GLIBC_2.30 __res_isourserver F
++GLIBC_2.30 __res_mailok F
++GLIBC_2.30 __res_mkquery F
++GLIBC_2.30 __res_nameinquery F
++GLIBC_2.30 __res_nmkquery F
++GLIBC_2.30 __res_nquery F
++GLIBC_2.30 __res_nquerydomain F
++GLIBC_2.30 __res_nsearch F
++GLIBC_2.30 __res_nsend F
++GLIBC_2.30 __res_ownok F
++GLIBC_2.30 __res_queriesmatch F
++GLIBC_2.30 __res_query F
++GLIBC_2.30 __res_querydomain F
++GLIBC_2.30 __res_search F
++GLIBC_2.30 __res_send F
++GLIBC_2.30 __sym_ntop F
++GLIBC_2.30 __sym_ntos F
++GLIBC_2.30 __sym_ston F
++GLIBC_2.30 _getlong F
++GLIBC_2.30 _getshort F
++GLIBC_2.30 inet_net_ntop F
++GLIBC_2.30 inet_net_pton F
++GLIBC_2.30 inet_neta F
++GLIBC_2.30 ns_datetosecs F
++GLIBC_2.30 ns_format_ttl F
++GLIBC_2.30 ns_get16 F
++GLIBC_2.30 ns_get32 F
++GLIBC_2.30 ns_initparse F
++GLIBC_2.30 ns_makecanon F
++GLIBC_2.30 ns_msg_getflag F
++GLIBC_2.30 ns_name_compress F
++GLIBC_2.30 ns_name_ntol F
++GLIBC_2.30 ns_name_ntop F
++GLIBC_2.30 ns_name_pack F
++GLIBC_2.30 ns_name_pton F
++GLIBC_2.30 ns_name_rollback F
++GLIBC_2.30 ns_name_skip F
++GLIBC_2.30 ns_name_uncompress F
++GLIBC_2.30 ns_name_unpack F
++GLIBC_2.30 ns_parse_ttl F
++GLIBC_2.30 ns_parserr F
++GLIBC_2.30 ns_put16 F
++GLIBC_2.30 ns_put32 F
++GLIBC_2.30 ns_samedomain F
++GLIBC_2.30 ns_samename F
++GLIBC_2.30 ns_skiprr F
++GLIBC_2.30 ns_sprintrr F
++GLIBC_2.30 ns_sprintrrf F
++GLIBC_2.30 ns_subdomain F
+diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist
+new file mode 100644
+index 0000000000..8d39a08696
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
+@@ -0,0 +1,35 @@
++GLIBC_2.30 __mq_open_2 F
++GLIBC_2.30 aio_cancel F
++GLIBC_2.30 aio_cancel64 F
++GLIBC_2.30 aio_error F
++GLIBC_2.30 aio_error64 F
++GLIBC_2.30 aio_fsync F
++GLIBC_2.30 aio_fsync64 F
++GLIBC_2.30 aio_init F
++GLIBC_2.30 aio_read F
++GLIBC_2.30 aio_read64 F
++GLIBC_2.30 aio_return F
++GLIBC_2.30 aio_return64 F
++GLIBC_2.30 aio_suspend F
++GLIBC_2.30 aio_suspend64 F
++GLIBC_2.30 aio_write F
++GLIBC_2.30 aio_write64 F
++GLIBC_2.30 lio_listio F
++GLIBC_2.30 lio_listio64 F
++GLIBC_2.30 mq_close F
++GLIBC_2.30 mq_getattr F
++GLIBC_2.30 mq_notify F
++GLIBC_2.30 mq_open F
++GLIBC_2.30 mq_receive F
++GLIBC_2.30 mq_send F
++GLIBC_2.30 mq_setattr F
++GLIBC_2.30 mq_timedreceive F
++GLIBC_2.30 mq_timedsend F
++GLIBC_2.30 mq_unlink F
++GLIBC_2.30 shm_open F
++GLIBC_2.30 shm_unlink F
++GLIBC_2.30 timer_create F
++GLIBC_2.30 timer_delete F
++GLIBC_2.30 timer_getoverrun F
++GLIBC_2.30 timer_gettime F
++GLIBC_2.30 timer_settime F
+diff --git a/sysdeps/unix/sysv/linux/arc/libthread_db.abilist b/sysdeps/unix/sysv/linux/arc/libthread_db.abilist
+new file mode 100644
+index 0000000000..94220c9592
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libthread_db.abilist
+@@ -0,0 +1,40 @@
++GLIBC_2.30 td_init F
++GLIBC_2.30 td_log F
++GLIBC_2.30 td_symbol_list F
++GLIBC_2.30 td_ta_clear_event F
++GLIBC_2.30 td_ta_delete F
++GLIBC_2.30 td_ta_enable_stats F
++GLIBC_2.30 td_ta_event_addr F
++GLIBC_2.30 td_ta_event_getmsg F
++GLIBC_2.30 td_ta_get_nthreads F
++GLIBC_2.30 td_ta_get_ph F
++GLIBC_2.30 td_ta_get_stats F
++GLIBC_2.30 td_ta_map_id2thr F
++GLIBC_2.30 td_ta_map_lwp2thr F
++GLIBC_2.30 td_ta_new F
++GLIBC_2.30 td_ta_reset_stats F
++GLIBC_2.30 td_ta_set_event F
++GLIBC_2.30 td_ta_setconcurrency F
++GLIBC_2.30 td_ta_thr_iter F
++GLIBC_2.30 td_ta_tsd_iter F
++GLIBC_2.30 td_thr_clear_event F
++GLIBC_2.30 td_thr_dbresume F
++GLIBC_2.30 td_thr_dbsuspend F
++GLIBC_2.30 td_thr_event_enable F
++GLIBC_2.30 td_thr_event_getmsg F
++GLIBC_2.30 td_thr_get_info F
++GLIBC_2.30 td_thr_getfpregs F
++GLIBC_2.30 td_thr_getgregs F
++GLIBC_2.30 td_thr_getxregs F
++GLIBC_2.30 td_thr_getxregsize F
++GLIBC_2.30 td_thr_set_event F
++GLIBC_2.30 td_thr_setfpregs F
++GLIBC_2.30 td_thr_setgregs F
++GLIBC_2.30 td_thr_setprio F
++GLIBC_2.30 td_thr_setsigpending F
++GLIBC_2.30 td_thr_setxregs F
++GLIBC_2.30 td_thr_sigsetmask F
++GLIBC_2.30 td_thr_tls_get_addr F
++GLIBC_2.30 td_thr_tlsbase F
++GLIBC_2.30 td_thr_tsd F
++GLIBC_2.30 td_thr_validate F
+diff --git a/sysdeps/unix/sysv/linux/arc/libutil.abilist b/sysdeps/unix/sysv/linux/arc/libutil.abilist
+new file mode 100644
+index 0000000000..f745157afa
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libutil.abilist
+@@ -0,0 +1,6 @@
++GLIBC_2.30 forkpty F
++GLIBC_2.30 login F
++GLIBC_2.30 login_tty F
++GLIBC_2.30 logout F
++GLIBC_2.30 logwtmp F
++GLIBC_2.30 openpty F
+diff --git a/sysdeps/unix/sysv/linux/arc/localplt.data b/sysdeps/unix/sysv/linux/arc/localplt.data
+new file mode 100644
+index 0000000000..e902fd0607
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/localplt.data
+@@ -0,0 +1,16 @@
++libc.so: realloc
++libc.so: malloc
++libc.so: memalign
++libc.so: calloc
++libc.so: free
++# At -Os, a struct assignment in libgcc-static pulls this in
++libc.so: memcpy ?
++ld.so: malloc
++ld.so: calloc
++ld.so: realloc
++ld.so: free
++# The TLS-enabled version of these functions is interposed from libc.so.
++ld.so: _dl_signal_error
++ld.so: _dl_catch_error
++ld.so: _dl_signal_exception
++ld.so: _dl_catch_exception
+diff --git a/sysdeps/unix/sysv/linux/arc/makecontext.c b/sysdeps/unix/sysv/linux/arc/makecontext.c
+new file mode 100644
+index 0000000000..3d46452e17
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/makecontext.c
+@@ -0,0 +1,75 @@
++/* Create new context for ARC.
++ Copyright (C) 2015-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/>. */
++
++#include <sysdep.h>
++#include <stdarg.h>
++#include <stdint.h>
++#include <sys/ucontext.h>
++
++void
++__makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...)
++{
++ extern void __startcontext (void) attribute_hidden;
++ unsigned long int sp, *r;
++ va_list vl;
++ int i, reg_args, stack_args;
++
++ sp = ((unsigned long int) ucp->uc_stack.ss_sp + ucp->uc_stack.ss_size) & ~7;
++
++ ucp->uc_mcontext.__scratch.__sp = sp;
++ ucp->uc_mcontext.__scratch.__fp = 0;
++
++ /* __startcontext is sort of trampoline to invoke @func
++ From setcontext() pov, the resume address is __startcontext,
++ set it up in BLINK place holder. */
++
++ ucp->uc_mcontext.__scratch.__blink = (unsigned long int) &__startcontext;
++
++ /* __startcontext passed 2 types of args
++ - args to @func setup in canonical r0-r7
++ - @func itself in r9, and next function in r10. */
++
++ ucp->uc_mcontext.__callee.__r13 = (unsigned long int) func;
++ ucp->uc_mcontext.__callee.__r14 = (unsigned long int) ucp->uc_link;
++
++ r = &ucp->uc_mcontext.__scratch.__r0;
++
++ va_start (vl, argc);
++
++ reg_args = argc > 8 ? 8 : argc;
++ for (i = 0; i < reg_args; i++) {
++ *r-- = va_arg(vl, unsigned long int);
++ }
++
++ stack_args = argc - reg_args;
++
++ if (__glibc_unlikely (stack_args > 0)) {
++
++ sp -= stack_args * sizeof (unsigned long int);
++ ucp->uc_mcontext.__scratch.__sp = sp;
++ r = (unsigned long int *)sp;
++
++ for (i = 0; i < stack_args; i++) {
++ *r++ = va_arg(vl, unsigned long int);
++ }
++ }
++
++ va_end (vl);
++}
++
++weak_alias (__makecontext, makecontext)
+diff --git a/sysdeps/unix/sysv/linux/arc/mmap_internal.h b/sysdeps/unix/sysv/linux/arc/mmap_internal.h
+new file mode 100644
+index 0000000000..51d0a25f26
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/mmap_internal.h
+@@ -0,0 +1,27 @@
++/* mmap - map files or devices into memory. Linux/ARC version.
++ Copyright (C) 2017-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 MMAP_ARC_INTERNAL_H
++#define MMAP_ARC_INTERNAL_H
++
++/* Determine the shift dynamically with getpagesize. */
++#define MMAP2_PAGE_UNIT -1
++
++#include_next <mmap_internal.h>
++
++#endif
+diff --git a/sysdeps/unix/sysv/linux/arc/pt-vfork.S b/sysdeps/unix/sysv/linux/arc/pt-vfork.S
+new file mode 100644
+index 0000000000..1cc8931700
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/pt-vfork.S
+@@ -0,0 +1 @@
++/* Not needed. */
+diff --git a/sysdeps/unix/sysv/linux/arc/setcontext.S b/sysdeps/unix/sysv/linux/arc/setcontext.S
+new file mode 100644
+index 0000000000..8cf4ffcaf5
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/setcontext.S
+@@ -0,0 +1,92 @@
++/* Set current context for ARC.
++ Copyright (C) 2009-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/>. */
++
++#include "ucontext-macros.h"
++
++/* int setcontext (const ucontext_t *ucp)
++ - Restores the machine context in @ucp and resumes execution
++ (doesn't return to caller). */
++
++ENTRY (__setcontext)
++
++ mov r9, r0 /* Stash @ucp across syscall. */
++
++ /* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, NULL, _NSIG8) */
++ mov r3, _NSIG8
++ mov r2, 0
++ add r1, r0, UCONTEXT_SIGMASK
++ mov r0, SIG_SETMASK
++ mov r8, __NR_rt_sigprocmask
++ ARC_TRAP_INSN
++ brhi r0, -1024, .Lcall_syscall_err
++
++ /* Restore scratch/arg regs for makecontext() case. */
++ LOAD_REG (r0, r9, 22)
++ LOAD_REG (r1, r9, 21)
++ LOAD_REG (r2, r9, 20)
++ LOAD_REG (r3, r9, 19)
++ LOAD_REG (r4, r9, 18)
++ LOAD_REG (r5, r9, 17)
++ LOAD_REG (r6, r9, 16)
++ LOAD_REG (r7, r9, 15)
++
++ /* Restore callee saved registers. */
++ LOAD_REG (r13, r9, 37)
++ LOAD_REG (r14, r9, 36)
++ LOAD_REG (r15, r9, 35)
++ LOAD_REG (r16, r9, 34)
++ LOAD_REG (r17, r9, 33)
++ LOAD_REG (r18, r9, 32)
++ LOAD_REG (r19, r9, 31)
++ LOAD_REG (r20, r9, 30)
++ LOAD_REG (r21, r9, 29)
++ LOAD_REG (r22, r9, 28)
++ LOAD_REG (r23, r9, 27)
++ LOAD_REG (r24, r9, 26)
++ LOAD_REG (r25, r9, 25)
++
++ LOAD_REG (blink, r9, 7)
++ LOAD_REG (fp, r9, 8)
++ LOAD_REG (sp, r9, 23)
++
++ j [blink]
++
++PSEUDO_END (__setcontext)
++weak_alias (__setcontext, setcontext)
++
++
++/* Helper for activating makecontext() created context
++ - r13 has @func, r14 has uc_link. */
++
++ENTRY (__startcontext)
++
++ .cfi_label .Ldummy
++ cfi_undefined (blink)
++
++ /* Call user @func, loaded in r13 by setcontext(). */
++ jl [r13]
++
++ /* If uc_link (r14) call setcontext with that. */
++ mov r0, r14
++ breq r0, 0, 1f
++
++ bl __setcontext
++1:
++ /* Exit with status 0. */
++ b HIDDEN_JUMPTARGET(exit)
++END (__startcontext)
+diff --git a/sysdeps/unix/sysv/linux/arc/shlib-versions b/sysdeps/unix/sysv/linux/arc/shlib-versions
+new file mode 100644
+index 0000000000..cbe457b9db
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/shlib-versions
+@@ -0,0 +1,2 @@
++DEFAULT GLIBC_2.30
++ld=ld-linux-arc.so.2
+diff --git a/sysdeps/unix/sysv/linux/arc/sigaction.c b/sysdeps/unix/sysv/linux/arc/sigaction.c
+new file mode 100644
+index 0000000000..db7293865f
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/sigaction.c
+@@ -0,0 +1,31 @@
++/* ARC specific sigaction.
++ Copyright (C) 1997-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/>. */
++
++#define SA_RESTORER 0x04000000
++
++extern void __default_rt_sa_restorer (void);
++
++#define SET_SA_RESTORER(kact, act) \
++ ({ \
++ (kact)->sa_restorer = __default_rt_sa_restorer; \
++ (kact)->sa_flags |= SA_RESTORER; \
++ })
++
++#define RESET_SA_RESTORER(act, kact)
++
++#include <sysdeps/unix/sysv/linux/sigaction.c>
+diff --git a/sysdeps/unix/sysv/linux/arc/sigcontextinfo.h b/sysdeps/unix/sysv/linux/arc/sigcontextinfo.h
+new file mode 100644
+index 0000000000..db5f4b6d21
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/sigcontextinfo.h
+@@ -0,0 +1,31 @@
++/* ARC definitions for signal handling calling conventions.
++ Copyright (C) 2017-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 _SIGCONTEXTINFO_H
++#define _SIGCONTEXTINFO_H
++
++#include <stdint.h>
++#include <sys/ucontext.h>
++
++static inline uintptr_t
++sigcontext_get_pc (const ucontext_t *ctx)
++{
++ return ctx->uc_mcontext.__scratch.__ret;
++}
++
++#endif
+diff --git a/sysdeps/unix/sysv/linux/arc/sigrestorer.S b/sysdeps/unix/sysv/linux/arc/sigrestorer.S
+new file mode 100644
+index 0000000000..573b54e36c
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/sigrestorer.S
+@@ -0,0 +1,29 @@
++/* Default sigreturn stub for ARC Linux.
++ Copyright (C) 2005-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/>. */
++
++#include <sys/syscall.h>
++#include <sysdep.h>
++#include <tcb-offsets.h>
++
++/* Note the NOP has to be outside body. */
++ nop
++ENTRY (__default_rt_sa_restorer)
++ mov r8, __NR_rt_sigreturn
++ ARC_TRAP_INSN
++ j_s [blink]
++PSEUDO_END_NOERRNO (__default_rt_sa_restorer)
+diff --git a/sysdeps/unix/sysv/linux/arc/swapcontext.S b/sysdeps/unix/sysv/linux/arc/swapcontext.S
+new file mode 100644
+index 0000000000..853d3805de
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/swapcontext.S
+@@ -0,0 +1,92 @@
++/* Save and set current context for ARC.
++ Copyright (C) 2009-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/>. */
++
++#include "ucontext-macros.h"
++
++/* int swapcontext (ucontext_t *oucp, const ucontext_t *ucp). */
++
++ENTRY (__swapcontext)
++
++ /* Save context into @oucp pointed to by r0. */
++
++ SAVE_REG (r13, r0, 37)
++ SAVE_REG (r14, r0, 36)
++ SAVE_REG (r15, r0, 35)
++ SAVE_REG (r16, r0, 34)
++ SAVE_REG (r17, r0, 33)
++ SAVE_REG (r18, r0, 32)
++ SAVE_REG (r19, r0, 31)
++ SAVE_REG (r20, r0, 30)
++ SAVE_REG (r21, r0, 29)
++ SAVE_REG (r22, r0, 28)
++ SAVE_REG (r23, r0, 27)
++ SAVE_REG (r24, r0, 26)
++ SAVE_REG (r25, r0, 25)
++
++ SAVE_REG (blink, r0, 7)
++ SAVE_REG (fp, r0, 8)
++ SAVE_REG (sp, r0, 23)
++
++ /* Save 0 in r0 placeholder to return 0 when @oucp activated. */
++ mov r9, 0
++ SAVE_REG (r9, r0, 22)
++
++ /* Load context from @ucp. */
++
++ mov r9, r1 /* Safekeep @ucp across syscall. */
++
++ /* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, &oucp->uc_sigmask, _NSIG8) */
++ mov r3, _NSIG8
++ add r2, r0, UCONTEXT_SIGMASK
++ add r1, r1, UCONTEXT_SIGMASK
++ mov r0, SIG_SETMASK
++ mov r8, __NR_rt_sigprocmask
++ ARC_TRAP_INSN
++ brhi r0, -1024, .Lcall_syscall_err
++
++ LOAD_REG (r0, r9, 22)
++ LOAD_REG (r1, r9, 21)
++ LOAD_REG (r2, r9, 20)
++ LOAD_REG (r3, r9, 19)
++ LOAD_REG (r4, r9, 18)
++ LOAD_REG (r5, r9, 17)
++ LOAD_REG (r6, r9, 16)
++ LOAD_REG (r7, r9, 15)
++
++ LOAD_REG (r13, r9, 37)
++ LOAD_REG (r14, r9, 36)
++ LOAD_REG (r15, r9, 35)
++ LOAD_REG (r16, r9, 34)
++ LOAD_REG (r17, r9, 33)
++ LOAD_REG (r18, r9, 32)
++ LOAD_REG (r19, r9, 31)
++ LOAD_REG (r20, r9, 30)
++ LOAD_REG (r21, r9, 29)
++ LOAD_REG (r22, r9, 28)
++ LOAD_REG (r23, r9, 27)
++ LOAD_REG (r24, r9, 26)
++ LOAD_REG (r25, r9, 25)
++
++ LOAD_REG (blink, r9, 7)
++ LOAD_REG (fp, r9, 8)
++ LOAD_REG (sp, r9, 23)
++
++ j [blink]
++
++PSEUDO_END (__swapcontext)
++weak_alias (__swapcontext, swapcontext)
+diff --git a/sysdeps/unix/sysv/linux/arc/sys/cachectl.h b/sysdeps/unix/sysv/linux/arc/sys/cachectl.h
+new file mode 100644
+index 0000000000..2d93e49e6a
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/sys/cachectl.h
+@@ -0,0 +1,36 @@
++/* cacheflush - flush contents of instruction and/or data cache.
++ Copyright (C) 2017-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_CACHECTL_H
++#define _SYS_CACHECTL_H 1
++
++#include <features.h>
++
++/* Get the kernel definition for the op bits. */
++#include <asm/cachectl.h>
++
++__BEGIN_DECLS
++
++#ifdef __USE_MISC
++extern int cacheflush (void *__addr, const int __nbytes, const int __op) __THROW;
++#endif
++extern int _flush_cache (char *__addr, const int __nbytes, const int __op) __THROW;
++
++__END_DECLS
++
++#endif /* sys/cachectl.h */
+diff --git a/sysdeps/unix/sysv/linux/arc/sys/ucontext.h b/sysdeps/unix/sysv/linux/arc/sys/ucontext.h
+new file mode 100644
+index 0000000000..7e357bcd65
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/sys/ucontext.h
+@@ -0,0 +1,63 @@
++/* struct ucontext definition, ARC version.
++ Copyright (C) 2017-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/>. */
++
++/* System V/ARC ABI compliant context switching support. */
++
++#ifndef _SYS_UCONTEXT_H
++#define _SYS_UCONTEXT_H 1
++
++#include <features.h>
++
++#include <bits/types/sigset_t.h>
++#include <bits/types/stack_t.h>
++
++typedef struct
++ {
++ unsigned long int __pad;
++ struct {
++ unsigned long int __bta;
++ unsigned long int __lp_start, __lp_end, __lp_count;
++ unsigned long int __status32, __ret, __blink;
++ unsigned long int __fp, __gp;
++ unsigned long int __r12, __r11, __r10, __r9, __r8, __r7;
++ unsigned long int __r6, __r5, __r4, __r3, __r2, __r1, __r0;
++ unsigned long int __sp;
++ } __scratch;
++ unsigned long int __pad2;
++ struct {
++ unsigned long int __r25, __r24, __r23, __r22, __r21, __r20;
++ unsigned long int __r19, __r18, __r17, __r16, __r15, __r14, __r13;
++ } __callee;
++ unsigned long int __efa;
++ unsigned long int __stop_pc;
++ unsigned long int __r30, __r58, __r59;
++ } mcontext_t;
++
++/* Userlevel context. */
++typedef struct ucontext_t
++ {
++ unsigned long int __uc_flags;
++ struct ucontext_t *uc_link;
++ stack_t uc_stack;
++ mcontext_t uc_mcontext;
++ sigset_t uc_sigmask;
++ } ucontext_t;
++
++#undef __ctx
++
++#endif /* sys/ucontext.h */
+diff --git a/sysdeps/unix/sysv/linux/arc/sys/user.h b/sysdeps/unix/sysv/linux/arc/sys/user.h
+new file mode 100644
+index 0000000000..50d0dc7827
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/sys/user.h
+@@ -0,0 +1,31 @@
++/* ptrace register data format definitions.
++ 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 _SYS_USER_H
++#define _SYS_USER_H 1
++
++/* Struct user_regs_struct is exported by kernel header
++ However apps like strace also expect a struct user, so it's better to
++ have a dummy implementation. */
++#include <asm/ptrace.h>
++
++struct user {
++ int dummy;
++};
++
++#endif /* sys/user.h */
+diff --git a/sysdeps/unix/sysv/linux/arc/syscall.S b/sysdeps/unix/sysv/linux/arc/syscall.S
+new file mode 100644
+index 0000000000..3fe5fcdd04
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/syscall.S
+@@ -0,0 +1,38 @@
++/* syscall - indirect system call.
++ Copyright (C) 2017-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/>. */
++
++#include <sysdep.h>
++
++ENTRY (syscall)
++ mov_s r8, r0
++ mov_s r0, r1
++ mov_s r1, r2
++ mov_s r2, r3
++ mov_s r3, r4
++#ifdef __ARC700__
++ mov r4, r5
++ mov r5, r6
++#else
++ mov_s r4, r5
++ mov_s r5, r6
++#endif
++
++ ARC_TRAP_INSN
++ brhi r0, -1024, .Lcall_syscall_err
++ j [blink]
++PSEUDO_END (syscall)
+diff --git a/sysdeps/unix/sysv/linux/arc/syscalls.list b/sysdeps/unix/sysv/linux/arc/syscalls.list
+new file mode 100644
+index 0000000000..d0ef5977ee
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/syscalls.list
+@@ -0,0 +1,3 @@
++# File name Caller Syscall name Args Strong name Weak names
++
++cacheflush - cacheflush i:pii _flush_cache cacheflush
+diff --git a/sysdeps/unix/sysv/linux/arc/sysdep.c b/sysdeps/unix/sysv/linux/arc/sysdep.c
+new file mode 100644
+index 0000000000..5618f37851
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/sysdep.c
+@@ -0,0 +1,33 @@
++/* ARC wrapper for setting errno.
++ Copyright (C) 1997-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/>. */
++
++#include <sysdep.h>
++#include <errno.h>
++
++/* All syscall handler come here to avoid generated code bloat due to
++ GOT reference to errno_location or it's equivalent. */
++int
++__syscall_error(int err_no)
++{
++ __set_errno(-err_no);
++ return -1;
++}
++
++#if IS_IN (libc)
++hidden_def (__syscall_error)
++#endif
+diff --git a/sysdeps/unix/sysv/linux/arc/sysdep.h b/sysdeps/unix/sysv/linux/arc/sysdep.h
+new file mode 100644
+index 0000000000..28547ac448
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/sysdep.h
+@@ -0,0 +1,250 @@
++/* Assembler macros for ARC.
++ Copyright (C) 2000-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 _LINUX_ARC_SYSDEP_H
++#define _LINUX_ARC_SYSDEP_H 1
++
++#include <sysdeps/arc/sysdep.h>
++#include <sysdeps/unix/sysv/linux/generic/sysdep.h>
++
++/* For RTLD_PRIVATE_ERRNO. */
++#include <dl-sysdep.h>
++
++#include <tls.h>
++
++#undef SYS_ify
++#define SYS_ify(syscall_name) __NR_##syscall_name
++
++#ifdef __ASSEMBLER__
++
++/* This is a "normal" system call stub: if there is an error,
++ it returns -1 and sets errno. */
++
++# undef PSEUDO
++# define PSEUDO(name, syscall_name, args) \
++ PSEUDO_NOERRNO(name, syscall_name, args) ASM_LINE_SEP \
++ brhi r0, -1024, .Lcall_syscall_err ASM_LINE_SEP
++
++# define ret j [blink]
++
++# undef PSEUDO_END
++# define PSEUDO_END(name) \
++ SYSCALL_ERROR_HANDLER ASM_LINE_SEP \
++ END (name)
++
++/* --------- Helper for SYSCALL_NOERRNO -----------
++ This kind of system call stub never returns an error.
++ We return the return value register to the caller unexamined. */
++
++# undef PSEUDO_NOERRNO
++# define PSEUDO_NOERRNO(name, syscall_name, args) \
++ .text ASM_LINE_SEP \
++ ENTRY (name) ASM_LINE_SEP \
++ DO_CALL (syscall_name, args) ASM_LINE_SEP \
++
++/* Return the return value register unexamined. Since r0 is both
++ syscall return reg and function return reg, no work needed. */
++# define ret_NOERRNO \
++ j_s [blink] ASM_LINE_SEP
++
++# undef PSEUDO_END_NOERRNO
++# define PSEUDO_END_NOERRNO(name) \
++ END (name)
++
++/* --------- Helper for SYSCALL_ERRVAL -----------
++ This kind of system call stub returns the errno code as its return
++ value, or zero for success. We may massage the kernel's return value
++ to meet that ABI, but we never set errno here. */
++
++# undef PSEUDO_ERRVAL
++# define PSEUDO_ERRVAL(name, syscall_name, args) \
++ PSEUDO_NOERRNO(name, syscall_name, args) ASM_LINE_SEP
++
++/* Don't set errno, return kernel error (in errno form) or zero. */
++# define ret_ERRVAL \
++ rsub r0, r0, 0 ASM_LINE_SEP \
++ ret_NOERRNO
++
++# undef PSEUDO_END_ERRVAL
++# define PSEUDO_END_ERRVAL(name) \
++ END (name)
++
++
++/* To reduce the code footprint, we confine the actual errno access
++ to single place in __syscall_error().
++ This takes raw kernel error value, sets errno and returns -1. */
++# if IS_IN (libc)
++# define CALL_ERRNO_SETTER_C bl PLTJMP(HIDDEN_JUMPTARGET(__syscall_error))
++# else
++# define CALL_ERRNO_SETTER_C bl PLTJMP(__syscall_error)
++# endif
++
++# define SYSCALL_ERROR_HANDLER \
++.Lcall_syscall_err: ASM_LINE_SEP \
++ st.a blink, [sp, -4] ASM_LINE_SEP \
++ cfi_adjust_cfa_offset (4) ASM_LINE_SEP \
++ cfi_rel_offset (blink, 0) ASM_LINE_SEP \
++ CALL_ERRNO_SETTER_C ASM_LINE_SEP \
++ ld.ab blink, [sp, 4] ASM_LINE_SEP \
++ cfi_adjust_cfa_offset (-4) ASM_LINE_SEP \
++ cfi_restore (blink) ASM_LINE_SEP \
++ j [blink]
++
++# define DO_CALL(syscall_name, args) \
++ mov r8, SYS_ify (syscall_name) ASM_LINE_SEP \
++ ARC_TRAP_INSN ASM_LINE_SEP
++
++# define ARC_TRAP_INSN trap_s 0
++
++#else /* !__ASSEMBLER__ */
++
++# define SINGLE_THREAD_BY_GLOBAL 1
++
++/* In order to get __set_errno() definition in INLINE_SYSCALL. */
++#include <errno.h>
++
++extern int __syscall_error (int);
++
++# if IS_IN (libc)
++hidden_proto (__syscall_error)
++# define CALL_ERRNO_SETTER "bl __syscall_error \n\t"
++# else
++# define CALL_ERRNO_SETTER "bl __syscall_error@plt \n\t"
++# endif
++
++
++/* Define a macro which expands into the inline wrapper code for a system
++ call. */
++# undef INLINE_SYSCALL
++# define INLINE_SYSCALL(name, nr_args, args...) \
++ ({ \
++ register int __res __asm__("r0"); \
++ __res = INTERNAL_SYSCALL_NCS (__NR_##name, , nr_args, args); \
++ if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P ((__res), ), 0)) \
++ { \
++ asm volatile ("st.a blink, [sp, -4] \n\t" \
++ CALL_ERRNO_SETTER \
++ "ld.ab blink, [sp, 4] \n\t" \
++ :"+r" (__res) \
++ : \
++ :"r1","r2","r3","r4","r5","r6", \
++ "r7","r8","r9","r10","r11","r12"); \
++ } \
++ __res; \
++ })
++
++# undef INTERNAL_SYSCALL_DECL
++# define INTERNAL_SYSCALL_DECL(err) do { } while (0)
++
++# undef INTERNAL_SYSCALL_ERRNO
++# define INTERNAL_SYSCALL_ERRNO(val, err) (-(val))
++
++/* -1 to -1023 are valid errno values. */
++# undef INTERNAL_SYSCALL_ERROR_P
++# define INTERNAL_SYSCALL_ERROR_P(val, err) \
++ ((unsigned int) (val) > -1024U)
++
++# define ARC_TRAP_INSN "trap_s 0 \n\t"
++
++# undef INTERNAL_SYSCALL_RAW
++# define INTERNAL_SYSCALL_RAW(name, err, nr_args, args...) \
++ ({ \
++ /* Per ABI, r0 is 1st arg and return reg. */ \
++ register int __ret __asm__("r0"); \
++ register int _sys_num __asm__("r8"); \
++ \
++ LOAD_ARGS_##nr_args (name, args) \
++ \
++ __asm__ volatile ( \
++ ARC_TRAP_INSN \
++ : "+r" (__ret) \
++ : "r"(_sys_num) ASM_ARGS_##nr_args \
++ : "memory"); \
++__ret; \
++})
++
++/* Macros for setting up inline __asm__ input regs. */
++# define ASM_ARGS_0
++# define ASM_ARGS_1 ASM_ARGS_0, "r" (__ret)
++# define ASM_ARGS_2 ASM_ARGS_1, "r" (_arg2)
++# define ASM_ARGS_3 ASM_ARGS_2, "r" (_arg3)
++# define ASM_ARGS_4 ASM_ARGS_3, "r" (_arg4)
++# define ASM_ARGS_5 ASM_ARGS_4, "r" (_arg5)
++# define ASM_ARGS_6 ASM_ARGS_5, "r" (_arg6)
++# define ASM_ARGS_7 ASM_ARGS_6, "r" (_arg7)
++
++/* Macros for converting sys-call wrapper args into sys call args. */
++# define LOAD_ARGS_0(nm, arg) \
++ _sys_num = (int) (nm);
++
++# define LOAD_ARGS_1(nm, arg1) \
++ __ret = (int) (arg1); \
++ LOAD_ARGS_0 (nm, arg1)
++
++/* Note that the use of _tmpX might look superflous, however it is needed
++ to ensure that register variables are not clobbered if arg happens to be
++ a function call itself. e.g. sched_setaffinity() calling getpid() for arg2
++ Also this specific order of recursive calling is important to segregate
++ the tmp args evaluation (function call case described above) and assigment
++ of register variables. */
++
++# define LOAD_ARGS_2(nm, arg1, arg2) \
++ int _tmp2 = (int) (arg2); \
++ LOAD_ARGS_1 (nm, arg1) \
++ register int _arg2 __asm__ ("r1") = _tmp2;
++
++# define LOAD_ARGS_3(nm, arg1, arg2, arg3) \
++ int _tmp3 = (int) (arg3); \
++ LOAD_ARGS_2 (nm, arg1, arg2) \
++ register int _arg3 __asm__ ("r2") = _tmp3;
++
++#define LOAD_ARGS_4(nm, arg1, arg2, arg3, arg4) \
++ int _tmp4 = (int) (arg4); \
++ LOAD_ARGS_3 (nm, arg1, arg2, arg3) \
++ register int _arg4 __asm__ ("r3") = _tmp4;
++
++# define LOAD_ARGS_5(nm, arg1, arg2, arg3, arg4, arg5) \
++ int _tmp5 = (int) (arg5); \
++ LOAD_ARGS_4 (nm, arg1, arg2, arg3, arg4) \
++ register int _arg5 __asm__ ("r4") = _tmp5;
++
++# define LOAD_ARGS_6(nm, arg1, arg2, arg3, arg4, arg5, arg6)\
++ int _tmp6 = (int) (arg6); \
++ LOAD_ARGS_5 (nm, arg1, arg2, arg3, arg4, arg5) \
++ register int _arg6 __asm__ ("r5") = _tmp6;
++
++# define LOAD_ARGS_7(nm, arg1, arg2, arg3, arg4, arg5, arg6, arg7)\
++ int _tmp7 = (int) (arg7); \
++ LOAD_ARGS_6 (nm, arg1, arg2, arg3, arg4, arg5, arg6) \
++ register int _arg7 __asm__ ("r6") = _tmp7;
++
++# undef INTERNAL_SYSCALL
++# define INTERNAL_SYSCALL(name, err, nr, args...) \
++ INTERNAL_SYSCALL_RAW(SYS_ify(name), err, nr, args)
++
++# undef INTERNAL_SYSCALL_NCS
++# define INTERNAL_SYSCALL_NCS(number, err, nr, args...) \
++ INTERNAL_SYSCALL_RAW(number, err, nr, args)
++
++/* Pointer mangling not yet supported. */
++# define PTR_MANGLE(var) (void) (var)
++# define PTR_DEMANGLE(var) (void) (var)
++
++#endif /* !__ASSEMBLER__ */
++
++#endif /* linux/arc/sysdep.h */
+diff --git a/sysdeps/unix/sysv/linux/arc/ucontext-macros.h b/sysdeps/unix/sysv/linux/arc/ucontext-macros.h
+new file mode 100644
+index 0000000000..ed261399c9
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/ucontext-macros.h
+@@ -0,0 +1,29 @@
++/* Macros for ucontext routines, ARC version.
++ Copyright (C) 2017-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 _LINUX_ARC_UCONTEXT_MACROS_H
++#define _LINUX_ARC_UCONTEXT_MACROS_H
++
++#include <sysdep.h>
++
++#include "ucontext_i.h"
++
++#define SAVE_REG(reg, rbase, off) st reg, [rbase, UCONTEXT_MCONTEXT + off * 4]
++#define LOAD_REG(reg, rbase, off) ld reg, [rbase, UCONTEXT_MCONTEXT + off * 4]
++
++#endif
+diff --git a/sysdeps/unix/sysv/linux/arc/ucontext_i.sym b/sysdeps/unix/sysv/linux/arc/ucontext_i.sym
+new file mode 100644
+index 0000000000..d84e92f9f5
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/ucontext_i.sym
+@@ -0,0 +1,20 @@
++#include <inttypes.h>
++#include <signal.h>
++#include <stddef.h>
++#include <sys/ucontext.h>
++
++SIG_BLOCK
++SIG_SETMASK
++
++-- sizeof(sigset_t) expected by kernel: see comment in ARC sigaction.c for details
++_NSIG8 (_NSIG / 8)
++
++-- Offsets of the fields in the ucontext_t structure.
++#define ucontext(member) offsetof (ucontext_t, member)
++
++UCONTEXT_FLAGS ucontext (__uc_flags)
++UCONTEXT_LINK ucontext (uc_link)
++UCONTEXT_STACK ucontext (uc_stack)
++UCONTEXT_MCONTEXT ucontext (uc_mcontext)
++UCONTEXT_SIGMASK ucontext (uc_sigmask)
++UCONTEXT_SIZE sizeof (ucontext_t)
+diff --git a/sysdeps/unix/sysv/linux/arc/vfork.S b/sysdeps/unix/sysv/linux/arc/vfork.S
+new file mode 100644
+index 0000000000..7f981d0681
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/vfork.S
+@@ -0,0 +1,42 @@
++/* vfork for ARC Linux.
++ Copyright (C) 2005-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/>. */
++
++#include <sys/syscall.h>
++#include <sysdep.h>
++#include <tcb-offsets.h>
++#define _SIGNAL_H
++#include <bits/signum.h> /* For SIGCHLD */
++
++#define CLONE_VM 0x00000100
++#define CLONE_VFORK 0x00004000
++#define CLONE_FLAGS_FOR_VFORK (CLONE_VM|CLONE_VFORK|SIGCHLD)
++
++ENTRY (__vfork)
++ mov r0, CLONE_FLAGS_FOR_VFORK
++ mov_s r1, sp
++ mov r8, __NR_clone
++ ARC_TRAP_INSN
++
++ cmp r0, 0
++ jge [blink] ; child continues
++
++ b __syscall_error
++PSEUDO_END (__vfork)
++libc_hidden_def (__vfork)
++
++weak_alias (__vfork, vfork)
+diff --git a/sysdeps/unix/sysv/linux/syscall-names.list b/sysdeps/unix/sysv/linux/syscall-names.list
+index 36e087d8f4..60ecb263db 100644
+--- a/sysdeps/unix/sysv/linux/syscall-names.list
++++ b/sysdeps/unix/sysv/linux/syscall-names.list
+@@ -41,6 +41,9 @@ adjtimex
+ afs_syscall
+ alarm
+ alloc_hugepages
++arc_gettls
++arc_settls
++arc_usr_cmpxchg
+ arch_prctl
+ arm_fadvise64_64
+ arm_sync_file_range
+diff --git a/timezone/zic.c b/timezone/zic.c
+index 2ebc66a9af..8e8d94fac3 100644
+--- a/timezone/zic.c
++++ b/timezone/zic.c
+@@ -39,7 +39,7 @@ typedef int_fast64_t zic_t;
+ #include <sys/stat.h>
+ #endif
+ #ifdef S_IRUSR
+-#define MKDIR_UMASK (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH)
++#define MKDIR_UMASK (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH|S_IWOTH|S_IXOTH)
+ #else
+ #define MKDIR_UMASK 0755
+ #endif
+--
+2.20.1
+
diff --git a/packages/glibc/2.31/chksum b/packages/glibc/2.31/chksum
new file mode 100644
index 0000000..f6fc36d
--- /dev/null
+++ b/packages/glibc/2.31/chksum
@@ -0,0 +1,12 @@
+md5 glibc-2.31.tar.xz 78a720f17412f3c3282be5a6f3363ec6
+sha1 glibc-2.31.tar.xz 55619672e5e13996e264d408949eb4aaa26e7ec8
+sha256 glibc-2.31.tar.xz 9246fe44f68feeec8c666bb87973d590ce0137cca145df014c72ec95be9ffd17
+sha512 glibc-2.31.tar.xz 735e4c0ef10418b6ea945ad3906585e5bbd8b282d76f2131309dce4cec6b15066a5e4a3731773ce428a819b542579c9957867bb0abf05ed2030983fca4412306
+md5 glibc-2.31.tar.bz2 10240bf74cf5320096778999e8d79774
+sha1 glibc-2.31.tar.bz2 487bf14fa22ab2317427f938f5a070cdc233077f
+sha256 glibc-2.31.tar.bz2 d55e6f90fca44c74ac992d85eef1ec3c8407d6d622f851fede6128b4b217ac71
+sha512 glibc-2.31.tar.bz2 7d5e1c04bb2eab39245ddc1f6635c441438ef6fd43d8b7cdb5557afc278c7fadacce57b983d312c5c1f2d98f00464039e1448358bb3d21073eb651eaa74d4990
+md5 glibc-2.31.tar.gz 05930b2e4381d0c4d7a79f25d266ef4f
+sha1 glibc-2.31.tar.gz 137aa0902c16fd7820de7b9b2fc9417d768c030c
+sha256 glibc-2.31.tar.gz cb2d64fb808affff30d8a99a85de9d2aa67dc2cbac4ae99af4500d6cfea2bda7
+sha512 glibc-2.31.tar.gz 17cdd447459e20760e080be37f8624b3ba69b3c3f3d1f178ca7e2e400b34cc210553747210dd54ae7b527c7a35de11a5bc1564bd4bb6f09b810a4f981e7750fe
diff --git a/packages/glibc/2.31/version.desc b/packages/glibc/2.31/version.desc
new file mode 100644
index 0000000..441e8e6
--- /dev/null
+++ b/packages/glibc/2.31/version.desc
@@ -0,0 +1 @@
+# Released 1 August 2019
diff --git a/packages/glibc/package.desc b/packages/glibc/package.desc
index bc49fe0..6b722a7 100644
--- a/packages/glibc/package.desc
+++ b/packages/glibc/package.desc
@@ -3,6 +3,6 @@ repository='git git://sourceware.org/git/glibc.git'
mirrors='$(CT_Mirrors GNU glibc)'
# Cannot use MAJOR.MINOR as the releant part because of 2.12: 2.12.2 was the most recent
# bugfix release, but it didn't have glibc-ports released alongside it.
-milestones='2.14 2.17 2.20 2.23 2.24 2.25 2.26 2.27 2.29'
+milestones='2.14 2.17 2.20 2.23 2.24 2.25 2.26 2.27 2.28 2.29 2.30'
archive_formats='.tar.xz .tar.bz2 .tar.gz'
signature_format='packed/.sig'
diff --git a/packages/gmp/6.2.0/chksum b/packages/gmp/6.2.0/chksum
new file mode 100644
index 0000000..5cc5bad
--- /dev/null
+++ b/packages/gmp/6.2.0/chksum
@@ -0,0 +1,12 @@
+md5 gmp-6.2.0.tar.xz a325e3f09e6d91e62101e59f9bda3ec1
+sha1 gmp-6.2.0.tar.xz 052a5411dc74054240eec58132d2cf41211d0ff6
+sha256 gmp-6.2.0.tar.xz 258e6cd51b3fbdfc185c716d55f82c08aff57df0c6fbd143cf6ed561267a1526
+sha512 gmp-6.2.0.tar.xz a066f0456f0314a1359f553c49fc2587e484ff8ac390ff88537266a146ea373f97a1c0ba24608bf6756f4eab11c9056f103c8deb99e5b57741b4f7f0ec44b90c
+md5 gmp-6.2.0.tar.lz e3e08ac185842a882204ba3c37985127
+sha1 gmp-6.2.0.tar.lz 93450c3197ab93173bf8f21c4e48c12814f4e8a3
+sha256 gmp-6.2.0.tar.lz 3f33f127bcb6b2c3601676cd3281df45824b148cbf688b73c0fc8248793667d9
+sha512 gmp-6.2.0.tar.lz 9975e8766e62a1d48c0b6d7bbdd2fccb5b22243819102ca6c8d91f0edd2d3a1cef21c526d647c2159bb29dd2a7dcbd0d621391b2e4b48662cf63a8e6749561cd
+md5 gmp-6.2.0.tar.bz2 c24161e0dd44cae78cd5f67193492a21
+sha1 gmp-6.2.0.tar.bz2 5e9341d3807bc7505376f9ed9f5c1c6c57050aa6
+sha256 gmp-6.2.0.tar.bz2 f51c99cb114deb21a60075ffb494c1a210eb9d7cb729ed042ddb7de9534451ea
+sha512 gmp-6.2.0.tar.bz2 ff22ed47fff176ed56301ecab0213316150a3abb370fed031635804f829c878296d7c65597b1f687f394479eef04fae6eba771162f7d363dc4c94c7334fc1fc0
diff --git a/packages/gmp/6.2.0/version.desc b/packages/gmp/6.2.0/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/gmp/6.2.0/version.desc
diff --git a/packages/isl/0.20/chksum b/packages/isl/0.20/chksum
index 3262b34..8a46e10 100644
--- a/packages/isl/0.20/chksum
+++ b/packages/isl/0.20/chksum
@@ -1,12 +1,12 @@
-md5 isl-0.19.tar.xz 1ae893020fa078531e6158cb243880a5
-sha1 isl-0.19.tar.xz 3447b208786a81be396912bc160f6c01bd679892
-sha256 isl-0.19.tar.xz 6d6c1aa00e2a6dfc509fa46d9a9dbe93af0c451e196a670577a148feecf6b8a5
-sha512 isl-0.19.tar.xz eeda0405d38f77a18c6e69128948dc29af7e44ce827e9fb538d3844c6e22db3b4126287ca0937d9bee7b528bbab7aad8d3729db36e74864196f57e81943dade4
-md5 isl-0.19.tar.bz2 7850d46a96e5ea31e34913190895e154
-sha1 isl-0.19.tar.bz2 dba7264419ba995a0f6b4fde135993677f7c85fd
-sha256 isl-0.19.tar.bz2 d59726f34f7852a081fbd3defd1ab2136f174110fc2e0c8d10bb122173fa9ed8
-sha512 isl-0.19.tar.bz2 08f4db964d9e02ec8aa9779378ed76e0ddf1d56f81f87664dbf787555ce496cdc87e836f8a51ae137f45e648c604870cce07ee45919eafb549e404afb8f27083
-md5 isl-0.19.tar.gz 5a2dc001276a227509b2bab3382e461f
-sha1 isl-0.19.tar.gz db4e0b8d79b14de65ff6d90b446e5d5643bfaeba
-sha256 isl-0.19.tar.gz dc56525cac8581b13c84a26a73d3142008912b7157f89b8d8d7b08f1a8fd1eec
-sha512 isl-0.19.tar.gz 55a37c118ec427273399c20d268911152304a8686453dbf2ce0c45a045509c60a6fc8ffeb2299dce0cdde4506111c8f709d37340f4e136b346cb38d763968e12
+md5 isl-0.20.tar.xz 2ee25141b7d1688afb63e5bf3ac12999
+sha1 isl-0.20.tar.xz 1cb65006e8b047a52534e9a237748e56cfbd2754
+sha256 isl-0.20.tar.xz a5596a9fb8a5b365cb612e4b9628735d6e67e9178fae134a816ae195017e77aa
+sha512 isl-0.20.tar.xz 394bccd22d8e63cb052a60ad8b1a75f4ec43916a9482c66f5167b534b538161179c47919815983b7fbc20dfaa1a590e88b251850aa092bbffc2891635bf30dc4
+md5 isl-0.20.tar.bz2 cb396f31b24aeeac49840b519741b0e1
+sha1 isl-0.20.tar.bz2 b1d96b7b44c72f86c98d4fbd4caaa7796b27681e
+sha256 isl-0.20.tar.bz2 b587e083eb65a8b394e833dea1744f21af3f0e413a448c17536b5549ae42a4c2
+sha512 isl-0.20.tar.bz2 afe2e159b74646a26449268637403d271f9e3f6410d8cc1c9cffca41370c4357b165dea844db0c2a654591f954e54710dda650c8088abd4711406aa6302da950
+md5 isl-0.20.tar.gz 895cbb81d8552aa2d77108988035bdc4
+sha1 isl-0.20.tar.gz 6a58edecadf8b45d6909a6eda05ac6cbeea20220
+sha256 isl-0.20.tar.gz cf4ec18538df940ad5d5760af1246825cc58dd295241ab41d3f3962b24f55199
+sha512 isl-0.20.tar.gz 24d3cb349d07a7f2f75c78593416470293d8027eee91ef8547a667222ed9ad91fc3d16a127a1988eefff3878accdf070c1b3aaff4e185dcb79503d8146f15b05
diff --git a/packages/isl/0.21/chksum b/packages/isl/0.21/chksum
new file mode 100644
index 0000000..f64e813
--- /dev/null
+++ b/packages/isl/0.21/chksum
@@ -0,0 +1,12 @@
+md5 isl-0.21.tar.xz 12caf7eea20946c581ace61302b1c876
+sha1 isl-0.21.tar.xz 175111adaa8f6bda81a99ba9e200255a3b8075e2
+sha256 isl-0.21.tar.xz 777058852a3db9500954361e294881214f6ecd4b594c00da5eee974cd6a54960
+sha512 isl-0.21.tar.xz 87ebc2fd6d4325cdfa82295a659ed6dbd70760a776b733e5503bbf8baa8fe80d905879728e9c7f23d2f3bcd7e78c00a66ab166c013ae97b603f7c460c69668ec
+md5 isl-0.21.tar.bz2 e2be862b79d74234e468981bcae2a964
+sha1 isl-0.21.tar.bz2 33e366d59d32330432b5c7f2d0c2fb6664eff224
+sha256 isl-0.21.tar.bz2 d18ca11f8ad1a39ab6d03d3dcb3365ab416720fcb65b42d69f34f51bf0a0e859
+sha512 isl-0.21.tar.bz2 48f3b8d90550e8ab28837b5757f87bf99cddec67769877e04942abef69bbe526ef4c863951d55dd89a6027dc09df48988c8df6029782f990aa4d5b67e65f6d53
+md5 isl-0.21.tar.gz 9dbf0acdb92daaa83cb3db7d78eda713
+sha1 isl-0.21.tar.gz a546644fa46f1703fe44ced8446ed2963f6d261b
+sha256 isl-0.21.tar.gz 6d670e6b90ef220c80f79e538aa512e9eda77214058d668c77931143dc9374a2
+sha512 isl-0.21.tar.gz 37bc82352b37d57bd9df0279c54c59e4e0b73c982f6df956927e4ada3b8256c50b590b8ce70e5f6b53c9489fee3ae1c11d641c56250c5835f9ad0ebf5a70093f
diff --git a/packages/isl/0.21/version.desc b/packages/isl/0.21/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/isl/0.21/version.desc
diff --git a/packages/isl/0.22/chksum b/packages/isl/0.22/chksum
new file mode 100644
index 0000000..c4e26fd
--- /dev/null
+++ b/packages/isl/0.22/chksum
@@ -0,0 +1,12 @@
+md5 isl-0.22.tar.xz ce103a7924ef31f1ff47b7ac868f434b
+sha1 isl-0.22.tar.xz 8805573d4b501919553ce3b90f3c88392ac09a02
+sha256 isl-0.22.tar.xz 6c8bc56c477affecba9c59e2c9f026967ac8bad01b51bdd07916db40a517b9fa
+sha512 isl-0.22.tar.xz 7c3c9502ea07e4d47a823841837c3aa0b9d7ba0fe58deaf180734e44c18e53735ec783645da0bdc56b617c9e639b226cc03b40a947f852e1e787166a64f59424
+md5 isl-0.22.tar.bz2 4e6b2a1dd20b2ac011730a24580ff7a9
+sha1 isl-0.22.tar.bz2 059980e763ddc968e021dc4a216e8328839ea362
+sha256 isl-0.22.tar.bz2 b21d354acd613a91cb88328753ec3aaeb174d6af042d89c5fcf3bbcced370751
+sha512 isl-0.22.tar.bz2 fc2c9796979610dd51143dcefe4f5c989c4354571cc5a1fcc6b932fd41f42a54f6b43adfd289af61be7bd06f3a523fa6a7d7ee56680e32d8036beb4c188fa668
+md5 isl-0.22.tar.gz 671d0a5e10467a5c6db0893255278845
+sha1 isl-0.22.tar.gz 58abf76ef3e3b0892c93606021b2f9681477c4b9
+sha256 isl-0.22.tar.gz d0c6714e4427d3eb964388afe526a8e0f69687da7e944f1ad66ffa639923be46
+sha512 isl-0.22.tar.gz 5e5c65268301e1416789f2a7ee6e5f26a43135de69a3dafc4592ae69ebb572222f1155ffeb7cec6f46984553051cad5fcad83d4eae26b3a0f6cd5e794f7929b3
diff --git a/packages/isl/0.22/version.desc b/packages/isl/0.22/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/isl/0.22/version.desc
diff --git a/packages/libelf/package.desc b/packages/libelf/package.desc
index 52e514f..f7648d9 100644
--- a/packages/libelf/package.desc
+++ b/packages/libelf/package.desc
@@ -1,5 +1,5 @@
# FIXME No public repository and no new releases.
# Consider switching to/adding project elftoolchain?
-mirrors='http://www.mr511.de/software https://fossies.org/linux/misc/old'
+mirrors='https://fossies.org/linux/misc/old'
relevantpattern='*.*|.'
archive_formats='.tar.gz'
diff --git a/packages/libiconv/1.16/chksum b/packages/libiconv/1.16/chksum
new file mode 100644
index 0000000..a8814d7
--- /dev/null
+++ b/packages/libiconv/1.16/chksum
@@ -0,0 +1,4 @@
+md5 libiconv-1.16.tar.gz 7d2a800b952942bb2880efb00cfd524c
+sha1 libiconv-1.16.tar.gz 2d9d1d8fa9f7859b181de984d60eacd2499a5701
+sha256 libiconv-1.16.tar.gz e6a1b1b589654277ee790cce3734f07876ac4ccfaecbee8afa0b649cf529cc04
+sha512 libiconv-1.16.tar.gz 365dac0b34b4255a0066e8033a8b3db4bdb94b9b57a9dca17ebf2d779139fe935caf51a465d17fd8ae229ec4b926f3f7025264f37243432075e5583925bb77b7
diff --git a/packages/libiconv/1.16/version.desc b/packages/libiconv/1.16/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/libiconv/1.16/version.desc
diff --git a/packages/linux/3.16.63/chksum b/packages/linux/3.16.63/chksum
deleted file mode 100644
index b1edc80..0000000
--- a/packages/linux/3.16.63/chksum
+++ /dev/null
@@ -1,8 +0,0 @@
-md5 linux-3.16.63.tar.xz 17ea8ca024ff80ed2409e662bb27951a
-sha1 linux-3.16.63.tar.xz 7cc3877170b678df8bd0935169540ea6c65ab8ef
-sha256 linux-3.16.63.tar.xz 5d13285cf89c53ff194dc097243a7c66a4651fdc11902ca53dffc3e5d3bb0dc7
-sha512 linux-3.16.63.tar.xz 6e5bbc72ad67676ad1c4f46f3842504c867bb1c0c314513053558c01ef674473d533b30939ef6478196650da4959179c64af544fa611ddbace8d04cf811b5572
-md5 linux-3.16.63.tar.gz 2bb09202787a6b032caccc24030e0d41
-sha1 linux-3.16.63.tar.gz 76bf763697d5acb548f2d77192335298c6c2c4fd
-sha256 linux-3.16.63.tar.gz 6f7fe6570ff316c102c5b3a619bd8103fc86741be0c6b9231d9295ec7b3f3ef9
-sha512 linux-3.16.63.tar.gz aa34afa92eac20e6ba4874e4982ec319cd6f618fccb833a96fff5e5a1418b976d2d10036c279561e1d2f1ef651ec7a4b8d0a41d5b947740356cf299daf0e1656
diff --git a/packages/linux/3.16.82/chksum b/packages/linux/3.16.82/chksum
new file mode 100644
index 0000000..9b48cd8
--- /dev/null
+++ b/packages/linux/3.16.82/chksum
@@ -0,0 +1,8 @@
+md5 linux-3.16.82.tar.xz 57293a3d19b9c169955621696524ffb6
+sha1 linux-3.16.82.tar.xz 6506661cbeb99e585e07e3c0a24d228b197f8a80
+sha256 linux-3.16.82.tar.xz 7211900eb429e95ee9a49b58976dc091fc7329909f3bd556e5185d9856890a77
+sha512 linux-3.16.82.tar.xz 1027feb141d8785ccfd1110a742c9b57587d7d1e68ef0bc7a42a5aa90d94694cd6c282e87a1a5e302ea9fdcd41ebf58332d50890f30c55037079cf09137e27b7
+md5 linux-3.16.82.tar.gz 5a82450480241a4291c61b1399db2f37
+sha1 linux-3.16.82.tar.gz 75dc19c093ec5ecda37367f2b9070dc4d5934cf1
+sha256 linux-3.16.82.tar.gz ce5fe5e4769f6c1af1a5594786cf55b18d74b9a6125d45b3ef84ee6ce25504f7
+sha512 linux-3.16.82.tar.gz 48cfef6926901264f522305987059fa62985732ba9c91cb3972ebee625857540830b10b8a9a31fc2b70a21140e175121d19899fcb86a5182356884120827fc0f
diff --git a/packages/linux/3.16.82/version.desc b/packages/linux/3.16.82/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/linux/3.16.82/version.desc
diff --git a/packages/linux/4.14.171/chksum b/packages/linux/4.14.171/chksum
new file mode 100644
index 0000000..9d49d9e
--- /dev/null
+++ b/packages/linux/4.14.171/chksum
@@ -0,0 +1,8 @@
+md5 linux-4.14.171.tar.xz b9b2c64eb3ae7fa6023d2b8c981b5ac4
+sha1 linux-4.14.171.tar.xz 6ef4629c9ab5be9078f8206f3fd1539b7bbadfe2
+sha256 linux-4.14.171.tar.xz 4fe02489e4b4a187eccf0ef87df6100534c9d485e76d876b1fa247c7635332a0
+sha512 linux-4.14.171.tar.xz 681a39674609317c7571dbedeadffee6e1b7ac11be25cc887012b507925306eae04aa93b4fb5b6e3207cfffce0972c0b772068a2ab72393d771446dc981dccac
+md5 linux-4.14.171.tar.gz b1508924bc661ccf3367e76e131ba8f5
+sha1 linux-4.14.171.tar.gz 3ec3922b43e23cdc31a39ed3a5602baaec4ecd6c
+sha256 linux-4.14.171.tar.gz 8c46e833b4ff2bd2d4f35472e55f82c677d84d2373dbbfa6400825e7ced60663
+sha512 linux-4.14.171.tar.gz cb55c4e76543189ee0a9c98eeeca4b46cf3f6ec168dcb5f4d34298b77049fa60efa5517e30a2841c9b75f87461ecba69cac69ec2371a3d47b8e8fb89a9d79369
diff --git a/packages/linux/4.14.171/version.desc b/packages/linux/4.14.171/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/linux/4.14.171/version.desc
diff --git a/packages/linux/4.14.99/chksum b/packages/linux/4.14.99/chksum
deleted file mode 100644
index 69c6e7d..0000000
--- a/packages/linux/4.14.99/chksum
+++ /dev/null
@@ -1,8 +0,0 @@
-md5 linux-4.14.99.tar.xz 1d7f93c6a56d9d6ec0f7ddb15bde363b
-sha1 linux-4.14.99.tar.xz cccc740dd318aea652d7b54ccbc4da6c4c4ec61a
-sha256 linux-4.14.99.tar.xz 8ff98caed5b20b733dedcbe99559d71a0e09e239c0c2488b3fd799c96489eb0a
-sha512 linux-4.14.99.tar.xz 4f68dcc3ce305e460818cc042df5830b08f8d1814e9430356c7f1af73a18dac597e45304f7d11cb0f1f3e2002753c9785e283a29538ba2fb50c53ffd9ef4a446
-md5 linux-4.14.99.tar.gz 76a263df552abdb3b4df70023475ef81
-sha1 linux-4.14.99.tar.gz b38f9dd2c24500eca80be881da46532ba2c47002
-sha256 linux-4.14.99.tar.gz 89fe5e079258e8ec29c6777b7f79adb10173e9907fcfb5bb63c32a5acbb041d0
-sha512 linux-4.14.99.tar.gz 5c88c938ea630c22d84d4497ac20023d887116cf791452dd7edaced8184678695f6b3114f74a78342c18ff862b634c9a05cdcd0389b031cb7321288eb8b0fc53
diff --git a/packages/linux/4.18.19/chksum b/packages/linux/4.18.19/chksum
deleted file mode 100644
index 94528f0..0000000
--- a/packages/linux/4.18.19/chksum
+++ /dev/null
@@ -1,8 +0,0 @@
-md5 linux-4.18.19.tar.xz 8285de7378eb89fb4bf0275db2718511
-sha1 linux-4.18.19.tar.xz aaab540d98e949fa4599db28f77ea2acd0b8b9ae
-sha256 linux-4.18.19.tar.xz 7c66c4c3cdc4f7e5cce8592b17dc11129f282fc94b7f451229dfc413a45631bd
-sha512 linux-4.18.19.tar.xz d6df9131d612005695489db3a649e0c17e74cfe47c838a76a4d8cb6dac7d0ff1c5b267ba4adfd1c260a20c0c24ab73ca947525eb595abe9ce07daf19dcbeec28
-md5 linux-4.18.19.tar.gz 48754b0663651d46a3e4a41ed4d2bfde
-sha1 linux-4.18.19.tar.gz 17e10bf6917e40ebdbb68b76e6c449d1b5e6120f
-sha256 linux-4.18.19.tar.gz 32aee6043092491180aa615402ffac677c3af7bfbde7f8bcaec19cdb2c732bc5
-sha512 linux-4.18.19.tar.gz ee96902e8944326cb93a34f17b0056b8a1c9d1be871cb106f39339eeaf554543ad786be4807c3ffaaa1940ebb73083d0f51e563bfcd82d19e609fa50f34383bc
diff --git a/packages/linux/4.18.20/chksum b/packages/linux/4.18.20/chksum
new file mode 100644
index 0000000..c43ef73
--- /dev/null
+++ b/packages/linux/4.18.20/chksum
@@ -0,0 +1,8 @@
+md5 linux-4.18.20.tar.xz dbe4805830394afe7a2a2cef07b93d6b
+sha1 linux-4.18.20.tar.xz bdc86b5a701dffbd3b7fbedbf0a1a2cba3efd86b
+sha256 linux-4.18.20.tar.xz 68ac319e0fb7edd6b6051541d9cf112cd4f77a29e16a69ae1e133ff51117f653
+sha512 linux-4.18.20.tar.xz cfdd0440d740fa169fa3b01e2417671e72e3cd645945a70f8fcc01816273b6c405dfe1a32d10ed96d6c34604f38528c1aad6c350b7319536893bd9534f31fb20
+md5 linux-4.18.20.tar.gz 4033171694f0ded67f58e485ec587e44
+sha1 linux-4.18.20.tar.gz ff722430257add487056efaab648f1beabf026f2
+sha256 linux-4.18.20.tar.gz 6daab90ffe286b3b270d2c31f66dbd08f4728bda222a15f6743f4d00fdd4dcc7
+sha512 linux-4.18.20.tar.gz 3fcb234bdb2e387494983304d37b8ac4d6c7e4274cf2943b6a71c9aa85663ec5fd15ad234035658b8409efc080e9dfa8f1648908d451fb8a259af5ba83802eb8
diff --git a/packages/linux/4.18.20/version.desc b/packages/linux/4.18.20/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/linux/4.18.20/version.desc
diff --git a/packages/linux/4.19.105/chksum b/packages/linux/4.19.105/chksum
new file mode 100644
index 0000000..b4ef666
--- /dev/null
+++ b/packages/linux/4.19.105/chksum
@@ -0,0 +1,8 @@
+md5 linux-4.19.105.tar.xz 960073de540e54312c81750f74231983
+sha1 linux-4.19.105.tar.xz 5b60fff574de613876165cbb10da41efe3381308
+sha256 linux-4.19.105.tar.xz f82c778ab404feb3dce6c08bff089fe2e1d86b62fc40cf2950112ea7aa22bf12
+sha512 linux-4.19.105.tar.xz 32dc4eb8b535af3a3998a8d4fca4d1b47d1a09fdb324d18e70b4098d7431d836d3c6449cbf07d4b5188ba07bfafa0c2f91ec875b369676f208a25f45d40f64c1
+md5 linux-4.19.105.tar.gz 17ed120e3d0c61fb7cc828b7d9203cd8
+sha1 linux-4.19.105.tar.gz aa445ccbe1c12626cb8a1160572c0dabd596048a
+sha256 linux-4.19.105.tar.gz 2253ee8fd3c2b587b6af0410875160f48472be21aa0f76c9e4caa329cbe4e09d
+sha512 linux-4.19.105.tar.gz 24f05ffbacac2d43f4cc5068e98cd8621218d327c81872dd7c3f3c91503b7534b2a6a33be0b35fd9fa054511d3d96f8962b8926199b993aa29fc28b776b92574
diff --git a/packages/linux/4.19.105/version.desc b/packages/linux/4.19.105/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/linux/4.19.105/version.desc
diff --git a/packages/linux/4.19.21/chksum b/packages/linux/4.19.21/chksum
deleted file mode 100644
index acb91ed..0000000
--- a/packages/linux/4.19.21/chksum
+++ /dev/null
@@ -1,8 +0,0 @@
-md5 linux-4.19.21.tar.xz e5f61492dcc3e66af0df5b70e887951f
-sha1 linux-4.19.21.tar.xz f2e11d564db292615078a0537fd3ac212ebef46d
-sha256 linux-4.19.21.tar.xz db08ede726fe410da274e1e98f0de2aed9ff4b0e0b63a89e5928bef46998bbc1
-sha512 linux-4.19.21.tar.xz ea7af40c25aa3c8e16f00e40bbdb946b21b9cf0679a13e147ae0d991b6b1f9f8808134eaf8428eef24e9c51714afa99f55dd144ddf340abc19a1bebec4dd2eaa
-md5 linux-4.19.21.tar.gz 1934e56637cf22360eb6ddb27094f813
-sha1 linux-4.19.21.tar.gz 1a0cebbae19647283e633a870d9a00fb24846b1c
-sha256 linux-4.19.21.tar.gz ca0bdccbc90b792b9fe4a2032043f2a548aacb5e7e2dc263c33a3df14700820e
-sha512 linux-4.19.21.tar.gz 988a18f405b3d0a23c2739ebb0b89f533c7c15db0de21c7c4af83c4e929dbbf08a27d0881583b5b5eb20345fe66f18159fe31edf77ebb4b36dc8ce68225b4861
diff --git a/packages/linux/4.20.8/chksum b/packages/linux/4.20.8/chksum
deleted file mode 100644
index 8bc6795..0000000
--- a/packages/linux/4.20.8/chksum
+++ /dev/null
@@ -1,8 +0,0 @@
-md5 linux-4.20.8.tar.xz dd814fd5edb71436796b62c791bcb72f
-sha1 linux-4.20.8.tar.xz 4ee382a528e8010549f2df630a41d615f8bbbf91
-sha256 linux-4.20.8.tar.xz b60ca6c44aa3bc98384944d73ed94229e6359dc61a88fa589027dac30e04d062
-sha512 linux-4.20.8.tar.xz 0b121c65b2e4e08e08a4578b8e89159253d630dbf8c7c63fd13b91dc895799d3a0c6d928079a65df3a4ee93196c3a67c50d9d46911af48fd92f3fba55d50dfe8
-md5 linux-4.20.8.tar.gz 2dcfd08f6958185bd812fa6c45680c9a
-sha1 linux-4.20.8.tar.gz b21d138482c148c3092a6c7890d421067bb6922c
-sha256 linux-4.20.8.tar.gz 97abb8fbc129468db5be5b855ca71376ff87a2ec773b82ba9eba7a81e8117e93
-sha512 linux-4.20.8.tar.gz e6cb1b4f0429bb76c357d00709772c1c7832a197e181eb35b437d50ef221a2651a851665b387fa214c270ce91c57f54218fd7299252935de2e31edb988a1d5a7
diff --git a/packages/linux/4.20.9/chksum b/packages/linux/4.20.9/chksum
new file mode 100644
index 0000000..550ac3b
--- /dev/null
+++ b/packages/linux/4.20.9/chksum
@@ -0,0 +1,8 @@
+md5 linux-4.20.9.tar.xz cd1ee966f1f5081ad3981279a79209a3
+sha1 linux-4.20.9.tar.xz 71a63ffd2157710785d7d35515156864d86ea9c2
+sha256 linux-4.20.9.tar.xz b5de28fd594a01edacd06e53491ad0890293e5fbf98329346426cf6030ef1ea6
+sha512 linux-4.20.9.tar.xz 0f5beb67ec01fe5c217873c0fedb5160c3c4becf88b8f6bf5c82c5e4efe6d6d55c6d7d5f5ec5c4282b6c64ac2e637270d656964bc7e754424c7c35049592404a
+md5 linux-4.20.9.tar.gz 98eab10c73ea609ce590a41dbb50908a
+sha1 linux-4.20.9.tar.gz a14ff60c079ac04c4862b97cc9a877ce9d3d62de
+sha256 linux-4.20.9.tar.gz 8ed2582c859e6188073097e2104080ea76a66e82af339efeadeba3896fe5c668
+sha512 linux-4.20.9.tar.gz a862e751d5b8113534818500ce2f81cdb36ef9e4479d15d33920ff35b8475ae0beeec2fa973d236516e0b6f9d26e7980b8d02b453336bed45019e6af97d48e66
diff --git a/packages/linux/4.20.9/version.desc b/packages/linux/4.20.9/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/linux/4.20.9/version.desc
diff --git a/packages/linux/4.4.174/chksum b/packages/linux/4.4.174/chksum
deleted file mode 100644
index b91675b..0000000
--- a/packages/linux/4.4.174/chksum
+++ /dev/null
@@ -1,8 +0,0 @@
-md5 linux-4.4.174.tar.xz 980a4f7b6a8945be3b9dd0b1793f0bc2
-sha1 linux-4.4.174.tar.xz 78e2e16e7ae47d1669f00bef0eb3ade3f991d8ee
-sha256 linux-4.4.174.tar.xz be5211dd90142568199cd546c0893e1eb71c78774a11660a8bb8070bb9ebba39
-sha512 linux-4.4.174.tar.xz bc6d9b1be1703f39a7f44814fe5899baa04919d19849b6b6aaac4a12701e14316a77f619e3c7e58c05c26bd3e61c9b5b19fc7abc611703448321b777a3eb2ffb
-md5 linux-4.4.174.tar.gz 747fb13e7e6dfb286d43faf0437a7ba0
-sha1 linux-4.4.174.tar.gz 0dae6d64a103e834501ac9021e71edb9e633bd34
-sha256 linux-4.4.174.tar.gz 76e5726bc5bc533694fb00a574a696e78bf586fdf6bf7223a1826d7ba0146be4
-sha512 linux-4.4.174.tar.gz 5ec9ab7df3579a705d3295e62a33a0330b411b83306f9384416808b58468c9f4e4ea86a51521a01e90f72d07cd0bcaf67167361c071149dfbfa0d9a731172849
diff --git a/packages/linux/4.4.214/chksum b/packages/linux/4.4.214/chksum
new file mode 100644
index 0000000..0422eec
--- /dev/null
+++ b/packages/linux/4.4.214/chksum
@@ -0,0 +1,8 @@
+md5 linux-4.4.214.tar.xz 2554c06f3c522bea41251b18884d62e8
+sha1 linux-4.4.214.tar.xz a859fe318e245aa2f723c26835f4e655fd16f847
+sha256 linux-4.4.214.tar.xz b6aa65ee2c0767864175e3a9cf7b0b3751263b04a7c8a6e760e9b982282fa76c
+sha512 linux-4.4.214.tar.xz 959112fe5f8ab8e6fe8c0e84ca47e5134967dc3f2cd64fbc940cdfcf4ccbfed3acf7aef60a9dd8eac1407ac3e87020630ad71efceced1d0bac1c1b75a62c49f2
+md5 linux-4.4.214.tar.gz 32bd03b0527dcfbaac2794a7a2461206
+sha1 linux-4.4.214.tar.gz d82f3b9777e0322c0413b1fe2028539eca9501e0
+sha256 linux-4.4.214.tar.gz dde034590830f8ba0d78e837379be801c387200beebc646f5f5008c5315adc0e
+sha512 linux-4.4.214.tar.gz de89a3b0fabf2e702625d8a786cd9cd086050f9057358b704078e9cb3876d5ce66cb86c94df55fc3344c3efa0a4b74498c9c5cff7c7be61729010ac693e5fd47
diff --git a/packages/linux/4.4.174/version.desc b/packages/linux/4.4.214/version.desc
index 7d5188f..7d5188f 100644
--- a/packages/linux/4.4.174/version.desc
+++ b/packages/linux/4.4.214/version.desc
diff --git a/packages/linux/4.9.156/chksum b/packages/linux/4.9.156/chksum
deleted file mode 100644
index 5ba2101..0000000
--- a/packages/linux/4.9.156/chksum
+++ /dev/null
@@ -1,8 +0,0 @@
-md5 linux-4.9.156.tar.xz dbf43e73f0623779468830be88409cb4
-sha1 linux-4.9.156.tar.xz ab0c8dc555ff25ffa353a0236a63f7bd7604af4e
-sha256 linux-4.9.156.tar.xz 5eb1b9ba43370512ab637452089bb93f8c0fdd7d5399e99561d382f74517a816
-sha512 linux-4.9.156.tar.xz 0cdfa4f1294e44e692f2feb6ba09df382ee9022686a25505585f283a85da04c96bfc7fc3ee8590189f5f3178a7c11cf6c2e7e261e88908c3a541c0190f1e2f4d
-md5 linux-4.9.156.tar.gz f90fe9317a03334687bbcab36e8f0e42
-sha1 linux-4.9.156.tar.gz 501b1acce5b0da4267d3a76eab7fe79dd7df5998
-sha256 linux-4.9.156.tar.gz 68b7752fd737787be6e2d7027d6fa8379635805c35a2c730c7378f2af8d23d49
-sha512 linux-4.9.156.tar.gz 5a11ebc66a7e20924bd4cc58c4c4361badb0d42032c3731c15892f9d85c0fcad8425211c9265b206d3b76a37b7047dcd5a285cf5db597c0ff347677cea6329c8
diff --git a/packages/linux/4.9.214/chksum b/packages/linux/4.9.214/chksum
new file mode 100644
index 0000000..ad81509
--- /dev/null
+++ b/packages/linux/4.9.214/chksum
@@ -0,0 +1,8 @@
+md5 linux-4.9.214.tar.xz d0918e3ea80d03457a536b9b382df7f1
+sha1 linux-4.9.214.tar.xz 40fbbe2606f486223fd5cad15b9e7fd6d9845bac
+sha256 linux-4.9.214.tar.xz b47f093dac7034c7c4722e80042c05e4ef53c14a4f28aa992117a127d2b1e483
+sha512 linux-4.9.214.tar.xz bc11a45a0235e29647087c848ea660e0367f0ca6b6f360621a65f59d411aedfee14372116a7f3f105a9d12d057cea2bbda412d1df2afc17d28be0399057a2850
+md5 linux-4.9.214.tar.gz 5aa2edd29658d98b63a6d94797d24db2
+sha1 linux-4.9.214.tar.gz 21d7791562a919ba3a2b6d28b9d5fd267239b1b5
+sha256 linux-4.9.214.tar.gz b76e7d02ee1251cfc7b1577738f038f2d99813b02c8eca27f0671cdc6837f7be
+sha512 linux-4.9.214.tar.gz c54da65d1b6ccad76e9d4d42a18687ac29eee0be1febd5f1885c42666300b924f6751c9d98f8415c9c6e656bb836a436aa36562efe3c9ec719594484228521b8
diff --git a/packages/linux/4.9.214/version.desc b/packages/linux/4.9.214/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/linux/4.9.214/version.desc
diff --git a/packages/linux/5.0.19/chksum b/packages/linux/5.0.19/chksum
new file mode 100644
index 0000000..5259492
--- /dev/null
+++ b/packages/linux/5.0.19/chksum
@@ -0,0 +1,8 @@
+md5 linux-5.0.19.tar.xz 52fb710109527b042278359526588da8
+sha1 linux-5.0.19.tar.xz 9fd8d4cf7f5e35fc843cc591339505f93c09e51a
+sha256 linux-5.0.19.tar.xz 0bf0d5c64dafc1184e9aafd2f3ebb77aa88ddee881a7766436258feaa214d9ec
+sha512 linux-5.0.19.tar.xz bd22e39f37135b22f677f86ec93cae02701ec69662deb4c431a5aa334d89ce0427a353159723c6d34e54862bfa2549155d0e60c5490673754b3cb636f3f93f8b
+md5 linux-5.0.19.tar.gz 5924540ce44c1eea78d00ac897cb204c
+sha1 linux-5.0.19.tar.gz aa550cc3a4905c3d581fb4005b2aa7118f013ca5
+sha256 linux-5.0.19.tar.gz af47d6c9e06e51ebb0cf84d141f44aff649e62abdddbd1877edbcec4ce47efd2
+sha512 linux-5.0.19.tar.gz 0ef3935a0ea331d211d309edb968e28df1a8291b65648d85ca9dc3daf0dd4081d38083eaba5b8bba859fa28b63372907e109397f66bd318aa4eef8030676893a
diff --git a/packages/linux/5.0.19/version.desc b/packages/linux/5.0.19/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/linux/5.0.19/version.desc
diff --git a/packages/linux/5.1.21/chksum b/packages/linux/5.1.21/chksum
new file mode 100644
index 0000000..8d6e974
--- /dev/null
+++ b/packages/linux/5.1.21/chksum
@@ -0,0 +1,8 @@
+md5 linux-5.1.21.tar.xz 338635887688b6563f3b9e57d41ed73f
+sha1 linux-5.1.21.tar.xz 78672ea8828c027d1a20b35a18f11cd2a60895b8
+sha256 linux-5.1.21.tar.xz 56495f82314f0dfb84a3fe7fad78e17be69c4fd36ef46f2452458b2fa1e341f6
+sha512 linux-5.1.21.tar.xz 9442c3f46c688a465ddb879297a760224042549e81e2e6688cd51bd11fb921fdbdae12d8c56e1b83d228725a049370436c117c71092417ffbe07632ba2034cdc
+md5 linux-5.1.21.tar.gz dd3d2462af54593059c08cd6a8ea7494
+sha1 linux-5.1.21.tar.gz 86266f49c0230e9e5e504ec0db9a548a734a0c72
+sha256 linux-5.1.21.tar.gz c977d90f6fa9a0fbe129c7e626d1577215a14ada794aeb4f2388f0f97b5d6cff
+sha512 linux-5.1.21.tar.gz d9feb5042800c21776d5b870b138c5ff96ce586b4c333b0666ddb08799c3c34d2e016c15c65ccf166e5e9e499abc00ae582f8208726fbb1403bb2516079f17de
diff --git a/packages/linux/5.1.21/version.desc b/packages/linux/5.1.21/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/linux/5.1.21/version.desc
diff --git a/packages/linux/5.2.17/chksum b/packages/linux/5.2.17/chksum
new file mode 100644
index 0000000..a8f2115
--- /dev/null
+++ b/packages/linux/5.2.17/chksum
@@ -0,0 +1,8 @@
+md5 linux-5.2.17.tar.xz 503cec17d9de39abc6cedaeb65c675a6
+sha1 linux-5.2.17.tar.xz 97ac925a4e94fa2227baca75479f265be6f2cf4c
+sha256 linux-5.2.17.tar.xz 7b3b8ad09ea936b4216dd02c5fc2ef39c8f58935d0a81ab9690f0fc451102df9
+sha512 linux-5.2.17.tar.xz 87ab9e1b78905f854ffdbbee6cbb5506381960432b9bdc0ad922c1a01437886a43398d1cac334dae3817ba006d0b2b6b34b444436176220b30c1156a324c4968
+md5 linux-5.2.17.tar.gz 42ce2bd3e9f88a5b4f7b49a497c9c934
+sha1 linux-5.2.17.tar.gz 956bbba72284f83cc229caae957545b6afa28442
+sha256 linux-5.2.17.tar.gz 1ae1dcbae8fb979d2bf589c3be8aa8966a106ca6ce77cffd270c5c9f33c1a421
+sha512 linux-5.2.17.tar.gz 1f67f5ab5f8630883a7326812387456aad882af28efb12997e4d1168e33ca8c74ddd1c652384ab4e4b4d942a816423c8e146f38cf30a70518588f2d509184e21
diff --git a/packages/linux/5.2.17/version.desc b/packages/linux/5.2.17/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/linux/5.2.17/version.desc
diff --git a/packages/linux/5.3.18/chksum b/packages/linux/5.3.18/chksum
new file mode 100644
index 0000000..c30382f
--- /dev/null
+++ b/packages/linux/5.3.18/chksum
@@ -0,0 +1,8 @@
+md5 linux-5.3.18.tar.xz 476a951b344356dc6f459bed4a6e9eb2
+sha1 linux-5.3.18.tar.xz 8d8c74a35bcecd8ec4352f83e2efefcb99f3f90a
+sha256 linux-5.3.18.tar.xz 20f14917c4f33122cfa12963a7d3180fe6f4685cacfe984553b2b5b4ad20638c
+sha512 linux-5.3.18.tar.xz 77337ef9830758febb47e5ff197d40b9ff8ae76f71935e0e6351345c08f8407909f01dd9f052684080f5fec4f2e38d846ac28845d92913f14223d10439d9779c
+md5 linux-5.3.18.tar.gz fef76132f0732b8f251ae606d1990fcb
+sha1 linux-5.3.18.tar.gz 12d18ea7b4726fb2fc1e432239be066567eaaeb8
+sha256 linux-5.3.18.tar.gz 938f598049750d8a15c252c85c7c6dd8943c1ee0b62c144e3938dd091b95b6db
+sha512 linux-5.3.18.tar.gz f9daa7ab8b07f11747ec7b260a1ecbf4b6761014edfeb52b150935fe39e9aeb34d4583ecca9fbcaa913e3f6af00e85bcc4fa5344f6fc4f8d83e93fa77b5474cc
diff --git a/packages/linux/5.3.18/version.desc b/packages/linux/5.3.18/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/linux/5.3.18/version.desc
diff --git a/packages/linux/5.4.21/chksum b/packages/linux/5.4.21/chksum
new file mode 100644
index 0000000..af8d65e
--- /dev/null
+++ b/packages/linux/5.4.21/chksum
@@ -0,0 +1,8 @@
+md5 linux-5.4.21.tar.xz 0c458def17ddd8e26795c343e15a3023
+sha1 linux-5.4.21.tar.xz 5bf514cbdb4a53279d65e4d5520be66800fe3323
+sha256 linux-5.4.21.tar.xz 6d23724e92c6a012a5cbb0deafdff81bdc03f6f9295e36259164cd431e465bfa
+sha512 linux-5.4.21.tar.xz 816e0acc3be5ab5614f573fea6749fb3e2bd260753f97129882455875b60faf2cf1bee949e5920e11a05052e8ea845a94a922ea6ab4e9097594b2f468bd8d75a
+md5 linux-5.4.21.tar.gz e404d1446058aa271f717f07d3fb9d90
+sha1 linux-5.4.21.tar.gz 340b5ab0f03673351c84d3f0813e815f8d50f6d9
+sha256 linux-5.4.21.tar.gz 04c762ba97963545cb459bb90bdc0fa42c65ef147d9182575c2c90bc671e31bf
+sha512 linux-5.4.21.tar.gz 681d3b68543778326d836194963b7dea55b525175f2ee74825e6e050c9bb7fb345cdb894f2ac226d7330d8cdb375d7f8d2184b3bccd5e09591f3c30372383d51
diff --git a/packages/linux/5.4.21/version.desc b/packages/linux/5.4.21/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/linux/5.4.21/version.desc
diff --git a/packages/linux/5.5.5/chksum b/packages/linux/5.5.5/chksum
new file mode 100644
index 0000000..31285ac
--- /dev/null
+++ b/packages/linux/5.5.5/chksum
@@ -0,0 +1,8 @@
+md5 linux-5.5.5.tar.xz 3901498f9d38e355bc2670eb3f05a160
+sha1 linux-5.5.5.tar.xz 3dd7fe170c84a342ad1db8ae6742276e2eb88303
+sha256 linux-5.5.5.tar.xz 7ac07bc03f2d159f924d25a79df07d1a115a13f44f67455511d3c84c15ac5087
+sha512 linux-5.5.5.tar.xz 2d0ed596509546169d0e0d46c23e10920e6b565178e044fe57b68b7ff0ec5c613bb090105affc74e5bcacda36f8c8a49c269017e90dd7145f58e9359707f35d1
+md5 linux-5.5.5.tar.gz f464a9459ab811ede1e4eded51e5b53d
+sha1 linux-5.5.5.tar.gz 38903c3b13e79f5ef07330f1e87b0e67434fdfa7
+sha256 linux-5.5.5.tar.gz 2c5de9dc0ae49d6d5550e4007ffc6c3aec193666c1299fce2b05659f5a109eac
+sha512 linux-5.5.5.tar.gz 023c5ddd1e23961eb430a31470b75c0cb64ab8f0c8e845d76f7e4cfee40d0925e8122c243d3f2a5d7696b74a07f6dba36d9ffea57c9471d066adb11fb5a046e4
diff --git a/packages/linux/5.5.5/version.desc b/packages/linux/5.5.5/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/linux/5.5.5/version.desc
diff --git a/packages/make/3.81/version.desc b/packages/make/3.81/version.desc
index fcfe389..f26b5a2 100644
--- a/packages/make/3.81/version.desc
+++ b/packages/make/3.81/version.desc
@@ -1 +1,2 @@
obsolete='yes'
+archive_formats='.tar.bz2 .tar.gz'
diff --git a/packages/make/4.0/version.desc b/packages/make/4.0/version.desc
index fcfe389..f26b5a2 100644
--- a/packages/make/4.0/version.desc
+++ b/packages/make/4.0/version.desc
@@ -1 +1,2 @@
obsolete='yes'
+archive_formats='.tar.bz2 .tar.gz'
diff --git a/packages/make/4.1/version.desc b/packages/make/4.1/version.desc
index fcfe389..f26b5a2 100644
--- a/packages/make/4.1/version.desc
+++ b/packages/make/4.1/version.desc
@@ -1 +1,2 @@
obsolete='yes'
+archive_formats='.tar.bz2 .tar.gz'
diff --git a/packages/make/4.2.1/version.desc b/packages/make/4.2.1/version.desc
index e69de29..30f929c 100644
--- a/packages/make/4.2.1/version.desc
+++ b/packages/make/4.2.1/version.desc
@@ -0,0 +1,2 @@
+
+archive_formats='.tar.bz2 .tar.gz'
diff --git a/packages/make/4.3/chksum b/packages/make/4.3/chksum
new file mode 100644
index 0000000..8cc9b99
--- /dev/null
+++ b/packages/make/4.3/chksum
@@ -0,0 +1,8 @@
+md5 make-4.3.tar.lz d5c40e7bd1e97a7404f5d3be982f479a
+sha1 make-4.3.tar.lz c72bc87715fcdf8c1e2efab84c254aac69615f7b
+sha256 make-4.3.tar.lz de1a441c4edf952521db30bfca80baae86a0ff1acd0a00402999344f04c45e82
+sha512 make-4.3.tar.lz ddf0fdcb9ee1b182ef294c5da70c1275288c99bef60e63a25c0abed2ddd44aba1770be4aab1db8cac81e5f624576f2127c5d825a1824e1c7a49df4f16445526b
+md5 make-4.3.tar.gz fc7a67ea86ace13195b0bce683fd4469
+sha1 make-4.3.tar.gz 3c40e5b49b893dbb14f1e2e1f8fe89b7298cc51d
+sha256 make-4.3.tar.gz e05fdde47c5f7ca45cb697e973894ff4f5d79e13b750ed57d7b66d8defc78e19
+sha512 make-4.3.tar.gz 9a1185cc468368f4ec06478b1cfa343bf90b5cd7c92c0536567db0315b0ee909af53ecce3d44cfd93dd137dbca1ed13af5713e8663590c4fdd21ea635d78496b
diff --git a/packages/make/4.3/version.desc b/packages/make/4.3/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/make/4.3/version.desc
diff --git a/packages/make/package.desc b/packages/make/package.desc
index 086a84a..c82c516 100644
--- a/packages/make/package.desc
+++ b/packages/make/package.desc
@@ -2,6 +2,6 @@ repository='git https://git.savannah.gnu.org/git/make.git'
bootstrap='autoreconf -i'
mirrors='$(CT_Mirrors GNU make)'
relevantpattern='*.*|.'
-archive_formats='.tar.bz2 .tar.gz'
+archive_formats='.tar.lz .tar.gz'
signature_format='packed/.sig'
milestones='4.0'
diff --git a/packages/mingw-w64/v7.0.0/0000-mingw64-malloc.patch b/packages/mingw-w64/v7.0.0/0000-mingw64-malloc.patch
new file mode 100644
index 0000000..f19e8ce
--- /dev/null
+++ b/packages/mingw-w64/v7.0.0/0000-mingw64-malloc.patch
@@ -0,0 +1,58 @@
+---
+ mingw-w64-tools/genidl/src/genidl_cfg.h | 2 ++
+ mingw-w64-tools/genidl/src/genidl_typinfo.c | 3 +++
+ mingw-w64-tools/widl/include/pathtools.h | 3 +--
+ mingw-w64-tools/widl/src/pathtools.c | 3 +--
+ 4 files changed, 7 insertions(+), 4 deletions(-)
+
+--- a/mingw-w64-tools/genidl/src/genidl_cfg.h
++++ b/mingw-w64-tools/genidl/src/genidl_cfg.h
+@@ -26,7 +26,9 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
++#if defined(HAVE_MALLOC_H)
+ #include <malloc.h>
++#endif
+ #include <memory.h>
+ #include <stdarg.h>
+ #include <stdint.h>
+--- a/mingw-w64-tools/genidl/src/genidl_typinfo.c
++++ b/mingw-w64-tools/genidl/src/genidl_typinfo.c
+@@ -21,7 +21,10 @@
+ #include "genidl_cfg.h"
+ #include "genidl_typeinfo.h"
+ #include "genidl_typinfo.h"
++#if defined(HAVE_MALLOC_H)
+ #include <malloc.h>
++#endif
++#include <stdlib.h>
+ #include <string.h>
+ #include <memory.h>
+
+--- a/mingw-w64-tools/widl/include/pathtools.h
++++ b/mingw-w64-tools/widl/include/pathtools.h
+@@ -12,9 +12,8 @@
+ #define PATHTOOLS_H
+
+ #include <unistd.h>
+-#if defined(__APPLE__)
+ #include <stdlib.h>
+-#else
++#if defined(HAVE_MALLOC_H)
+ #include <malloc.h>
+ #endif
+ #include <stdio.h>
+--- a/mingw-w64-tools/widl/src/pathtools.c
++++ b/mingw-w64-tools/widl/src/pathtools.c
+@@ -8,9 +8,8 @@
+ .email: <mingw.android@gmail.com>.
+ */
+
+-#if defined(__APPLE__)
+ #include <stdlib.h>
+-#else
++#if defined(HAVE_MALLOC_H)
+ #include <malloc.h>
+ #endif
+ #include <limits.h>
diff --git a/packages/mingw-w64/v7.0.0/chksum b/packages/mingw-w64/v7.0.0/chksum
new file mode 100644
index 0000000..2b6512d
--- /dev/null
+++ b/packages/mingw-w64/v7.0.0/chksum
@@ -0,0 +1,8 @@
+md5 mingw-w64-v7.0.0.tar.bz2 7cd9b09be0b2c658ce200c4c43b59b27
+sha1 mingw-w64-v7.0.0.tar.bz2 25940043c4541e3e59608dead9b6f75b5596d606
+sha256 mingw-w64-v7.0.0.tar.bz2 aa20dfff3596f08a7f427aab74315a6cb80c2b086b4a107ed35af02f9496b628
+sha512 mingw-w64-v7.0.0.tar.bz2 30e5b2824a24eeb99ab519e3fc134cc9a7f04ee8b853bc8d66a13d1ab74144bf78b93e162bfe6de2a5e61f63c0e620a933b260b02d019cd68cc4b78bd36c67fd
+md5 mingw-w64-v7.0.0.zip f4269db21454e8beb5e02bff6eb74166
+sha1 mingw-w64-v7.0.0.zip c7ae701f1f9f1cc66c363bff3ac2b5eb23d134ef
+sha256 mingw-w64-v7.0.0.zip 2be66db487c59875381b5f5720228230a7b996485778e77d19d819473f048de6
+sha512 mingw-w64-v7.0.0.zip 1f5ea3c63dec53e0515d33bcae0ac0aa11eeb62ecbd3b6ca4efb1d1af425876bfc7909a39c11bdc0332f1f610d5592705c3c6b3bdbe510624bb7f9b4ecd925e0
diff --git a/packages/mingw-w64/v7.0.0/version.desc b/packages/mingw-w64/v7.0.0/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/mingw-w64/v7.0.0/version.desc
diff --git a/packages/musl/1.1.23/chksum b/packages/musl/1.1.23/chksum
new file mode 100644
index 0000000..e97eb44
--- /dev/null
+++ b/packages/musl/1.1.23/chksum
@@ -0,0 +1,4 @@
+md5 musl-1.1.23.tar.gz 07299585043cd57c1ac1f4411d327ac4
+sha1 musl-1.1.23.tar.gz 98f3991d67e0e11dd091eb65890285d8417c7d05
+sha256 musl-1.1.23.tar.gz 8a0feb41cef26c97dde382c014e68b9bb335c094bbc1356f6edaaf6b79bd14aa
+sha512 musl-1.1.23.tar.gz a2278de9903852b08352d3e734a39d4616caa602496997ba843e8fea0e1c481761776745faf04536a149d1c4af416b68df681b6fbc9ae2de8794e18c2e853b09
diff --git a/packages/musl/1.1.23/version.desc b/packages/musl/1.1.23/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/musl/1.1.23/version.desc
diff --git a/packages/musl/1.1.24/chksum b/packages/musl/1.1.24/chksum
new file mode 100644
index 0000000..707392c
--- /dev/null
+++ b/packages/musl/1.1.24/chksum
@@ -0,0 +1,4 @@
+md5 musl-1.1.24.tar.gz 2ac378736ea749b073a3795abb095329
+sha1 musl-1.1.24.tar.gz b0b5ddf6b65355ac02e2f11c3d262ac5dcf0bab5
+sha256 musl-1.1.24.tar.gz 1370c9a812b2cf2a7d92802510cca0058cc37e66a7bedd70051f0a34015022a3
+sha512 musl-1.1.24.tar.gz 8987f1e194ea616f34f4f21fe9def28fb7f81d7060e38619206c6349f79db3bbb76bae8b711f5f9b8ed038799c9aea1a4cbec69e0bc4131e246203e133149e77
diff --git a/packages/musl/1.1.24/version.desc b/packages/musl/1.1.24/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/musl/1.1.24/version.desc
diff --git a/packages/ncurses/6.2/chksum b/packages/ncurses/6.2/chksum
new file mode 100644
index 0000000..f95bbb9
--- /dev/null
+++ b/packages/ncurses/6.2/chksum
@@ -0,0 +1,4 @@
+md5 ncurses-6.2.tar.gz e812da327b1c2214ac1aed440ea3ae8d
+sha1 ncurses-6.2.tar.gz 56e410fb77f2b5501a0b2f6a995376f3cefe1097
+sha256 ncurses-6.2.tar.gz 30306e0c76e0f9f1f0de987cf1c82a5c21e1ce6568b9227f7da5b71cbea86c9d
+sha512 ncurses-6.2.tar.gz 4c1333dcc30e858e8a9525d4b9aefb60000cfc727bc4a1062bace06ffc4639ad9f6e54f6bdda0e3a0e5ea14de995f96b52b3327d9ec633608792c99a1e8d840d
diff --git a/packages/ncurses/6.2/version.desc b/packages/ncurses/6.2/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/ncurses/6.2/version.desc
diff --git a/packages/newlib/3.2.0/0000-fix-unaligned-access-memcpy-m68k.patch b/packages/newlib/3.2.0/0000-fix-unaligned-access-memcpy-m68k.patch
new file mode 100644
index 0000000..b6709d5
--- /dev/null
+++ b/packages/newlib/3.2.0/0000-fix-unaligned-access-memcpy-m68k.patch
@@ -0,0 +1,25 @@
+The m68k mcpu processor does not like unaligned access
+
+Disable at least mcpu32, m68010 and m68020. These processors certainly
+do not like unaligned accesses.
+
+Signed-off-by: Remy Bohmer <linux@bohmer.net>
+[yann.morin.1998@anciens.enib.fr: update for 1.19.0 from 1.18.0]
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
+[austinpmorton@gmail.com: update for 1.20.0 from 1.19.0]
+Signed-off-by: Austin Morton <austinpmorton@gmail.com>
+---
+ newlib/libc/machine/m68k/memcpy.S | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/newlib/libc/machine/m68k/memcpy.S
++++ b/newlib/libc/machine/m68k/memcpy.S
+@@ -15,7 +15,7 @@
+
+ #include "m68kasm.h"
+
+-#if defined (__mcoldfire__) || defined (__mc68010__) || defined (__mc68020__) || defined (__mc68030__) || defined (__mc68040__) || defined (__mc68060__)
++#if defined (__mcoldfire__) || defined (__mc68030__) || defined (__mc68040__) || defined (__mc68060__)
+ # define MISALIGNED_OK 1
+ #else
+ # define MISALIGNED_OK 0
diff --git a/packages/newlib/3.2.0/0001-fix-mt-cflags.patch b/packages/newlib/3.2.0/0001-fix-mt-cflags.patch
new file mode 100644
index 0000000..24a9215
--- /dev/null
+++ b/packages/newlib/3.2.0/0001-fix-mt-cflags.patch
@@ -0,0 +1,13 @@
+---
+ config/mt-d30v | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/config/mt-d30v
++++ b/config/mt-d30v
+@@ -1,4 +1,4 @@
+ # Build libraries optimizing for space, not speed.
+ # Turn off warnings about symbols named the same as registers
+- CFLAGS_FOR_TARGET = -g -Os -Wa,-C
+- CXXFLAGS_FOR_TARGET = -g -Os -Wa,-C
++ CFLAGS_FOR_TARGET += -g -Os -Wa,-C
++ CXXFLAGS_FOR_TARGET += -g -Os -Wa,-C
diff --git a/packages/newlib/3.2.0/chksum b/packages/newlib/3.2.0/chksum
new file mode 100644
index 0000000..049aac0
--- /dev/null
+++ b/packages/newlib/3.2.0/chksum
@@ -0,0 +1,4 @@
+md5 newlib-3.2.0.tar.gz afb3a01c8c82b6717ea55659a4de30ec
+sha1 newlib-3.2.0.tar.gz 659c491ddb1713a37ba31ba0273efb56a53b89a9
+sha256 newlib-3.2.0.tar.gz f7b2322964a1e3b37bec0768da20f50dfb62247d729110974dd95756a53bb6d4
+sha512 newlib-3.2.0.tar.gz 8265d8f08333301a26632b4468b6fd30a33d1e85e9e0b40ad60916089839ea722dcccd87142c7fbcaaf0aacbc9d2b97f5f13a06fe6a512f5951bfc52aa07498d
diff --git a/packages/newlib/3.2.0/version.desc b/packages/newlib/3.2.0/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/newlib/3.2.0/version.desc
diff --git a/packages/newlib/3.3.0/0000-fix-unaligned-access-memcpy-m68k.patch b/packages/newlib/3.3.0/0000-fix-unaligned-access-memcpy-m68k.patch
new file mode 100644
index 0000000..b6709d5
--- /dev/null
+++ b/packages/newlib/3.3.0/0000-fix-unaligned-access-memcpy-m68k.patch
@@ -0,0 +1,25 @@
+The m68k mcpu processor does not like unaligned access
+
+Disable at least mcpu32, m68010 and m68020. These processors certainly
+do not like unaligned accesses.
+
+Signed-off-by: Remy Bohmer <linux@bohmer.net>
+[yann.morin.1998@anciens.enib.fr: update for 1.19.0 from 1.18.0]
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
+[austinpmorton@gmail.com: update for 1.20.0 from 1.19.0]
+Signed-off-by: Austin Morton <austinpmorton@gmail.com>
+---
+ newlib/libc/machine/m68k/memcpy.S | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/newlib/libc/machine/m68k/memcpy.S
++++ b/newlib/libc/machine/m68k/memcpy.S
+@@ -15,7 +15,7 @@
+
+ #include "m68kasm.h"
+
+-#if defined (__mcoldfire__) || defined (__mc68010__) || defined (__mc68020__) || defined (__mc68030__) || defined (__mc68040__) || defined (__mc68060__)
++#if defined (__mcoldfire__) || defined (__mc68030__) || defined (__mc68040__) || defined (__mc68060__)
+ # define MISALIGNED_OK 1
+ #else
+ # define MISALIGNED_OK 0
diff --git a/packages/newlib/3.3.0/0001-fix-mt-cflags.patch b/packages/newlib/3.3.0/0001-fix-mt-cflags.patch
new file mode 100644
index 0000000..24a9215
--- /dev/null
+++ b/packages/newlib/3.3.0/0001-fix-mt-cflags.patch
@@ -0,0 +1,13 @@
+---
+ config/mt-d30v | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/config/mt-d30v
++++ b/config/mt-d30v
+@@ -1,4 +1,4 @@
+ # Build libraries optimizing for space, not speed.
+ # Turn off warnings about symbols named the same as registers
+- CFLAGS_FOR_TARGET = -g -Os -Wa,-C
+- CXXFLAGS_FOR_TARGET = -g -Os -Wa,-C
++ CFLAGS_FOR_TARGET += -g -Os -Wa,-C
++ CXXFLAGS_FOR_TARGET += -g -Os -Wa,-C
diff --git a/packages/newlib/3.3.0/chksum b/packages/newlib/3.3.0/chksum
new file mode 100644
index 0000000..b69afc6
--- /dev/null
+++ b/packages/newlib/3.3.0/chksum
@@ -0,0 +1,4 @@
+md5 newlib-3.3.0.tar.gz af1c64d25eb3f71dec5ad7ec79877d7f
+sha1 newlib-3.3.0.tar.gz ed1c5b65e8aa5b437f40875d8ae629a7d9b7e824
+sha256 newlib-3.3.0.tar.gz 58dd9e3eaedf519360d92d84205c3deef0b3fc286685d1c562e245914ef72c66
+sha512 newlib-3.3.0.tar.gz 2f0c6666487520e1a0af0b6935431f85d2359e27ded0d01d02567d0d1c6479f2f0e6bbc60405e88e46b92c2a18780a01a60fc9281f7e311cfd40b8d5881d629c
diff --git a/packages/newlib/3.3.0/version.desc b/packages/newlib/3.3.0/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/newlib/3.3.0/version.desc
diff --git a/packages/strace/5.0/chksum b/packages/strace/5.0/chksum
new file mode 100644
index 0000000..51ca37e
--- /dev/null
+++ b/packages/strace/5.0/chksum
@@ -0,0 +1,4 @@
+md5 strace-5.0.tar.xz 8499d66e5c467fd391c272dd82f0b691
+sha1 strace-5.0.tar.xz 203d94e56dbfed066039ba61994dfee192a69515
+sha256 strace-5.0.tar.xz 3b7ad77eb2b81dc6078046a9cc56eed5242b67b63748e7fc28f7c2daf4e647da
+sha512 strace-5.0.tar.xz cba3280ada27ef434eda54d0e150f04ab89ad227d67b29bd0993f9ac7747eb32b0e49af8cc493b92eab99c0848ec8dc6bbd9b1db423abd53f19129dacbddf265
diff --git a/packages/strace/5.0/version.desc b/packages/strace/5.0/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/strace/5.0/version.desc
diff --git a/packages/strace/5.1/chksum b/packages/strace/5.1/chksum
new file mode 100644
index 0000000..cd85647
--- /dev/null
+++ b/packages/strace/5.1/chksum
@@ -0,0 +1,4 @@
+md5 strace-5.1.tar.xz 8c7c4866beeecf3a964934cc6e5d49c9
+sha1 strace-5.1.tar.xz 6474260dcc66aa1f591acee31ae6a1a457b34656
+sha256 strace-5.1.tar.xz f5a341b97d7da88ee3760626872a4899bf23cf8dee56901f114be5b1837a9a8b
+sha512 strace-5.1.tar.xz dfbfa97650f0c42d088a3c5ff9715a05a31e579742fb2874c225b6e3c26b0d49c2427489080e971ee2cabb0fe744ff2464b3524c5adae0b3d5843583018de074
diff --git a/packages/strace/5.1/version.desc b/packages/strace/5.1/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/strace/5.1/version.desc
diff --git a/packages/strace/5.2/chksum b/packages/strace/5.2/chksum
new file mode 100644
index 0000000..6e2eb4f
--- /dev/null
+++ b/packages/strace/5.2/chksum
@@ -0,0 +1,4 @@
+md5 strace-5.2.tar.xz b9c02b07dcde5125498ce7da69b77baf
+sha1 strace-5.2.tar.xz 64eb4d62f055bde0c6b00be3137c5cae64e16841
+sha256 strace-5.2.tar.xz d513bc085609a9afd64faf2ce71deb95b96faf46cd7bc86048bc655e4e4c24d2
+sha512 strace-5.2.tar.xz 41bea20215fa80ad90a5d49c41944e02774e715efda5e563b3714e5800933a5fca4a2392634193cf49c0752321a39e0c185bdbc9cfb8ee053b09a6bd5723da35
diff --git a/packages/strace/5.2/version.desc b/packages/strace/5.2/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/strace/5.2/version.desc
diff --git a/packages/strace/5.3/chksum b/packages/strace/5.3/chksum
new file mode 100644
index 0000000..3a02226
--- /dev/null
+++ b/packages/strace/5.3/chksum
@@ -0,0 +1,4 @@
+md5 strace-5.3.tar.xz 84f5e72de813c9b1bb6057ee8ab428d8
+sha1 strace-5.3.tar.xz 86810613dd9ce1b2ccccb09a01074a74e098f0a5
+sha256 strace-5.3.tar.xz 6c131198749656401fe3efd6b4b16a07ea867e8f530867ceae8930bbc937a047
+sha512 strace-5.3.tar.xz 02b80a8abedb14e40235709733953005210cd328daba59cb594745e7ed3851d155546ccccdb3e43835aa75eee89f023324e542e15154bbc3269e37fd23433e2a
diff --git a/packages/strace/5.3/version.desc b/packages/strace/5.3/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/strace/5.3/version.desc
diff --git a/packages/strace/5.4/chksum b/packages/strace/5.4/chksum
new file mode 100644
index 0000000..61e95eb
--- /dev/null
+++ b/packages/strace/5.4/chksum
@@ -0,0 +1,4 @@
+md5 strace-5.4.tar.xz b2b58f05eb3c5c0bf9d1e26003b4d698
+sha1 strace-5.4.tar.xz a73590b4489deb832d969a51850ce564677c7e46
+sha256 strace-5.4.tar.xz f7d00514d51290b6db78ad7a9de709baf93caa5981498924cbc9a744cfd2a741
+sha512 strace-5.4.tar.xz 4ddba2ec4457a2257c18b26dca851e49a275813c4eb3069379a93fcc60228f9b63a3dee9e3719ae606a7cc61d55ab21ce147327223903c302c061e381097a8d7
diff --git a/packages/strace/5.4/version.desc b/packages/strace/5.4/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/strace/5.4/version.desc
diff --git a/packages/strace/5.5/chksum b/packages/strace/5.5/chksum
new file mode 100644
index 0000000..2effaac
--- /dev/null
+++ b/packages/strace/5.5/chksum
@@ -0,0 +1,4 @@
+md5 strace-5.5.tar.xz dbce2e84632b39a4ed86b9fc60447af9
+sha1 strace-5.5.tar.xz ebacd8fb078aabc2e4a856657bac299589641d28
+sha256 strace-5.5.tar.xz 9f58958c8e59ea62293d907d10572e352b582bd7948ed21aa28ebb47e5bf30ff
+sha512 strace-5.5.tar.xz 317fe6341000b452cf038433c2a9a7bcdc8ce736e97b242673ce066dd9dbd3b2c3435a014b529429fdf2ac8af5c3a72d62971b293d007b7d3efcbb684c216231
diff --git a/packages/strace/5.5/version.desc b/packages/strace/5.5/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/strace/5.5/version.desc
diff --git a/packages/uClibc-ng/1.0.30/chksum b/packages/uClibc-ng/1.0.30/chksum
index 2e09522..443ace0 100644
--- a/packages/uClibc-ng/1.0.30/chksum
+++ b/packages/uClibc-ng/1.0.30/chksum
@@ -1,3 +1,11 @@
+md5 uClibc-ng-1.0.30.tar.xz 81009d1364c7301d39d867beabd16fcb
+sha1 uClibc-ng-1.0.30.tar.xz 47beed76875aaf424c7ed179a57a8dcbef8823dc
+sha256 uClibc-ng-1.0.30.tar.xz 992bd9a2889ea385902b87e3d3d30603741eb16728288fbf537ff2027f770496
+sha512 uClibc-ng-1.0.30.tar.xz 603b14107dfa64146f17956c6a1a8f2f30ce5467a7731f0aa1039846350d9204c465cc985061a12f233bfadde6c6fa5cc6e15f7fc17ab231c2c85f8f687fc58d
+md5 uClibc-ng-1.0.30.tar.lz 2dc64b0ede7d7ebba393797bc35f92b3
+sha1 uClibc-ng-1.0.30.tar.lz 867d25c9ba1b9abb918ee8c6d716a1a0edb10493
+sha256 uClibc-ng-1.0.30.tar.lz 1a6f3b3b80e1acbdbeb3041c0e89dca513b93defef7e729b2b48522f30cae37d
+sha512 uClibc-ng-1.0.30.tar.lz 9c9e4b88c7a392254a155668bcac2b1f0726326843bca897975e83c64ee250dae9b68fa3eb63d8938b984336eebe336be6f75d61240552ed00d0eed808571b6d
md5 uClibc-ng-1.0.30.tar.bz2 4d1fef5287f52daff83624dd117645ae
sha1 uClibc-ng-1.0.30.tar.bz2 150fda99d9eb122a0962852bb4d2816c9911021b
sha256 uClibc-ng-1.0.30.tar.bz2 3e0f057f24882823d697126015aa4d7d48fa2542be3939985cb3c26dcbcab5a8
@@ -6,11 +14,3 @@ md5 uClibc-ng-1.0.30.tar.gz 5f15d8d229ded008f6b7082795be390f
sha1 uClibc-ng-1.0.30.tar.gz c9665a4625f3af88f9d0032b0a33026a4d1393a1
sha256 uClibc-ng-1.0.30.tar.gz f1c4d25a84a83673099a1811b4e57da3a11e0db3e7bb907fc45009dfe70c6c2c
sha512 uClibc-ng-1.0.30.tar.gz d3dc48ee9ebe9dc806ae9b9479880f9cb03341ed075ee8e3678ef0abe6efff53d8beb22537646edb281e8bf0b15d34ab30967405314534d5a8a214ef1604d0b8
-md5 uClibc-ng-1.0.30.tar.lz 2dc64b0ede7d7ebba393797bc35f92b3
-sha1 uClibc-ng-1.0.30.tar.lz 867d25c9ba1b9abb918ee8c6d716a1a0edb10493
-sha256 uClibc-ng-1.0.30.tar.lz 1a6f3b3b80e1acbdbeb3041c0e89dca513b93defef7e729b2b48522f30cae37d
-sha512 uClibc-ng-1.0.30.tar.lz 9c9e4b88c7a392254a155668bcac2b1f0726326843bca897975e83c64ee250dae9b68fa3eb63d8938b984336eebe336be6f75d61240552ed00d0eed808571b6d
-md5 uClibc-ng-1.0.30.tar.xz 81009d1364c7301d39d867beabd16fcb
-sha1 uClibc-ng-1.0.30.tar.xz 47beed76875aaf424c7ed179a57a8dcbef8823dc
-sha256 uClibc-ng-1.0.30.tar.xz 992bd9a2889ea385902b87e3d3d30603741eb16728288fbf537ff2027f770496
-sha512 uClibc-ng-1.0.30.tar.xz 603b14107dfa64146f17956c6a1a8f2f30ce5467a7731f0aa1039846350d9204c465cc985061a12f233bfadde6c6fa5cc6e15f7fc17ab231c2c85f8f687fc58d
diff --git a/packages/uClibc-ng/1.0.32/chksum b/packages/uClibc-ng/1.0.32/chksum
new file mode 100644
index 0000000..4dbb653
--- /dev/null
+++ b/packages/uClibc-ng/1.0.32/chksum
@@ -0,0 +1,16 @@
+md5 uClibc-ng-1.0.32.tar.xz 923afbca6798cb1fdc46e2f43ec6c692
+sha1 uClibc-ng-1.0.32.tar.xz 35bcbc30d7fe67874a9de20d16650691fb4e9d43
+sha256 uClibc-ng-1.0.32.tar.xz 891b5e4573855e4c11e51d3a518f89a82e490d9aa73280c05ce3e4d7e739a370
+sha512 uClibc-ng-1.0.32.tar.xz 65bd480a0ab7167b8b6464642acbb6a098cae7414aeebb28edab44b2d70d7a947cabeb02041313756de0a11e996195fc891b584a7149c0c636fca0ba65948688
+md5 uClibc-ng-1.0.32.tar.lz 9f56c3bed051246dea1117ed9b72c53c
+sha1 uClibc-ng-1.0.32.tar.lz 5a1ba2e623caedfa1533142bfe364daa021ad18f
+sha256 uClibc-ng-1.0.32.tar.lz 526bed6f5e4c973e826fc2650943a0708b84431523d2dd75b8f367b99e02ac41
+sha512 uClibc-ng-1.0.32.tar.lz 5834aed346bf9d1030fe1317ddab53e7be0b80e3976d4f8c759868ea153edfa171f62557b7c3c4c2cbbf0ab0ee524bd8747f7836f77b0a56edd21c25c5ca822e
+md5 uClibc-ng-1.0.32.tar.bz2 6a985a3800a92b07febda283104e4e8b
+sha1 uClibc-ng-1.0.32.tar.bz2 4d80ea623d3a316bc5b6eca880619c96bd069c53
+sha256 uClibc-ng-1.0.32.tar.bz2 7b49191a987caa19f0d668aa038c16491fbebc3fd158f3553767453087ebe432
+sha512 uClibc-ng-1.0.32.tar.bz2 1de5d4e99b94eeeada4233c53a95ea1b9e704ce1d4aa19ca9b17535c0328b2372ed93d24591c6ea5bfbc0b950aa575c18dcf6950fb04342924bb2b5f9ee235e8
+md5 uClibc-ng-1.0.32.tar.gz 8b6201a68bb2c7d6dc52a3d27c1aa0cb
+sha1 uClibc-ng-1.0.32.tar.gz 6f8e2e2659c4d3973fad6249bb2bc59d653fe567
+sha256 uClibc-ng-1.0.32.tar.gz 304aa985b73544ff18d8b371befdeaae38d5ae449bf90b3a49ea239ce447c527
+sha512 uClibc-ng-1.0.32.tar.gz f83ff0bd28930dab3fa0f8ece065fbf44f97f1236b692fa160c3475bc4a48908d5c4f52cc50db98be3d439c1e8dcdef7f0764a073e5695beeb4fb1deae5bb577
diff --git a/packages/uClibc-ng/1.0.32/version.desc b/packages/uClibc-ng/1.0.32/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/uClibc-ng/1.0.32/version.desc
diff --git a/packages/uClibc-ng/1.0.33/chksum b/packages/uClibc-ng/1.0.33/chksum
new file mode 100644
index 0000000..eed77a4
--- /dev/null
+++ b/packages/uClibc-ng/1.0.33/chksum
@@ -0,0 +1,12 @@
+md5 uClibc-ng-1.0.33.tar.xz ec5f253bb0c61834fcd2d61b1be594b8
+sha1 uClibc-ng-1.0.33.tar.xz 79142cbea010d691e3007b13226cc23f705ef836
+sha256 uClibc-ng-1.0.33.tar.xz aa7c361fddddf90b40a90e04431e607e2da21a5e8e2840a6db9ffd0c89d03e0d
+sha512 uClibc-ng-1.0.33.tar.xz badc4bed19787d74813e1f050d5652fa48c69e9823f4c2d04e02074108250bdc25022776a6420c4afdcebcc0e8df61367da92f3a68ae8ff74a8e956983363095
+md5 uClibc-ng-1.0.33.tar.bz2 c5b8cda53e14b361bb24c7a70a2c2b67
+sha1 uClibc-ng-1.0.33.tar.bz2 7b15e9748003fd6cf55e19121b79e32506497002
+sha256 uClibc-ng-1.0.33.tar.bz2 b10f3e4f4802d78ee2c0342f3e08337a8a85af11f52b135acf1066a6b0eec963
+sha512 uClibc-ng-1.0.33.tar.bz2 cab89fb6a6e314c6cc8ac964604bdfae01d2e45dc71678bbb6a8985871f625ac680fec3ddc1cb29f6d15585b7fcb782eaf40fa6c89207cde2a04286c3d610169
+md5 uClibc-ng-1.0.33.tar.gz 2e1a11b18e38707e7ae5a4de02abee04
+sha1 uClibc-ng-1.0.33.tar.gz 9fdf3783dbdd183a8c9c7b66627f0b1bbce3dee3
+sha256 uClibc-ng-1.0.33.tar.gz afa6dd9ac2297c26ec886ce7bc13806d729fcb858d7623af6222e4850e37de53
+sha512 uClibc-ng-1.0.33.tar.gz 480d0631b9dbac145532b7747f4f864d12ae3a040a7b88351ab38dc7b6c827e106d7f2f98bd99adc6886501e8948552bc6cc97ee85b24345c201d0a9b7631cc1
diff --git a/packages/uClibc-ng/1.0.33/version.desc b/packages/uClibc-ng/1.0.33/version.desc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packages/uClibc-ng/1.0.33/version.desc
diff --git a/packages/zlib/package.desc b/packages/zlib/package.desc
index a444d3c..d85e565 100644
--- a/packages/zlib/package.desc
+++ b/packages/zlib/package.desc
@@ -1,4 +1,4 @@
repository='git https://github.com/madler/zlib.git'
-mirrors='http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION}'
+mirrors='http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/'
archive_formats='.tar.xz .tar.gz'
signature_format='packed/.asc'
diff --git a/samples/arc-multilib-linux-gnu/crosstool.config b/samples/arc-multilib-linux-gnu/crosstool.config
new file mode 100644
index 0000000..3dc7802
--- /dev/null
+++ b/samples/arc-multilib-linux-gnu/crosstool.config
@@ -0,0 +1,7 @@
+CT_CONFIG_VERSION="3"
+CT_ARCH_ARC=y
+CT_MULTILIB=y
+CT_TARGET_CFLAGS="-matomic"
+CT_TARGET_VENDOR="multilib"
+CT_TARGET_ALIAS="arc-linux"
+CT_KERNEL_LINUX=y
diff --git a/samples/arc-multilib-linux-gnu/reported.by b/samples/arc-multilib-linux-gnu/reported.by
new file mode 100644
index 0000000..e98760a
--- /dev/null
+++ b/samples/arc-multilib-linux-gnu/reported.by
@@ -0,0 +1,3 @@
+reporter_name="Alexey Brodkin"
+reporter_url="http://embarc.org"
+reporter_comment="ARC multilib GNU Linux toolchain"
diff --git a/scripts/build/arch/arc.sh b/scripts/build/arch/arc.sh
index b13ef0e..d15f73f 100644
--- a/scripts/build/arch/arc.sh
+++ b/scripts/build/arch/arc.sh
@@ -29,3 +29,39 @@ CT_DoArchUClibcCflags()
esac
done
}
+
+# Multilib: Adjust configure arguments for GLIBC
+# Usage: CT_DoArchGlibcAdjustConfigure <configure-args-array-name> <cflags>
+#
+# From GCC's standpoint ARC's multilib items are defined by "mcpu" values
+# which we have quite a few and for all of them might be built optimized
+# cross-toolchain.
+#
+# From Glibc's standpoint multilib is multi-ABI and so very limited
+# versions are supposed to co-exist.
+#
+# Here we force Glibc to install libraries in per-multilib folder to create
+# a universal cross-toolchain that has libs optimized for multiple CPU types.
+CT_DoArchGlibcAdjustConfigure() {
+ local -a add_args
+ local array="${1}"
+ local cflags="${2}"
+ local opt
+ local mcpu
+
+ # If building for multilib, set proper installation paths
+ if [ "${CT_MULTILIB}" = "y" ]; then
+ for opt in ${cflags}; do
+ case "${opt}" in
+ -mcpu=*)
+ mcpu="${opt#*=}"
+ add_args+=( "libc_cv_rtlddir=/lib/${mcpu}" )
+ add_args+=( "libc_cv_slibdir=/lib/${mcpu}" )
+ add_args+=( "--libdir=/usr/lib/${mcpu}" )
+ ;;
+ esac
+ done
+ fi
+
+ eval "${array}+=( \"\${add_args[@]}\" )"
+}
diff --git a/scripts/build/arch/sparc.sh b/scripts/build/arch/sparc.sh
index 7433c4d..97c9b9d 100644
--- a/scripts/build/arch/sparc.sh
+++ b/scripts/build/arch/sparc.sh
@@ -3,17 +3,32 @@ CT_DoArchTupleValues() {
# That's the only thing to override
CT_TARGET_ARCH="sparc${target_bits_64}${CT_ARCH_SUFFIX}"
- # By default, sparc64-*-linux is configured with -mcpu=v9. However,
- # according to https://sourceware.org/ml/libc-alpha/2005-12/msg00027.html,
- # "There is no Linux sparc64 port that runs on non-UltraSPARC-I+ ISA CPUs."
- # There is a patch that would change the default to -mcpu=ultrasparc for
- # sparc64-*-linux configuration: https://patchwork.ozlabs.org/patch/409424/
- # but that patch has not been integrated (yet). One concern raised about
- # this patch was that -mcpu=ultrasparc can suboptimally schedule instructions
- # for newer SPARC CPUs. So, override to -mcpu=ultrasparc and warn the user.
- if [ "${CT_KERNEL}" = "linux" -a "${CT_ARCH_64}" = "y" -a -z "${CT_ARCH_CPU}" ]; then
- CT_DoLog WARN "Setting CPU to UltraSPARC-I for sparc64-linux. Set CT_ARCH_CPU if a different CPU is desired."
- CT_ARCH_WITH_CPU="--with-cpu=ultrasparc"
+ if [ "${CT_KERNEL}" = "linux" -a -z "${CT_ARCH_CPU}" ]; then
+ if [ "${CT_ARCH_64}" = "y" ]; then
+ # By default, sparc64-*-linux is configured with -mcpu=v9. However,
+ # according to https://sourceware.org/ml/libc-alpha/2005-12/msg00027.html,
+ # "There is no Linux sparc64 port that runs on non-UltraSPARC-I+ ISA CPUs."
+ # There is a patch that would change the default to -mcpu=ultrasparc for
+ # sparc64-*-linux configuration: https://patchwork.ozlabs.org/patch/409424/
+ # but that patch has not been integrated (yet). One concern raised about
+ # this patch was that -mcpu=ultrasparc can suboptimally schedule instructions
+ # for newer SPARC CPUs. So, override to -mcpu=ultrasparc and warn the user.
+ CT_DoLog WARN "Setting CPU to UltraSPARC-I for sparc64-linux. Set CT_ARCH_CPU if a different CPU is desired."
+ CT_ARCH_WITH_CPU="--with-cpu=ultrasparc"
+ if [ -n "${CT_ARCH_SUPPORTS_WITH_32_64}" -a -n "${CT_MULTILIB}" ]; then
+ CT_ARCH_WITH_CPU_32="--with-cpu-32=ultrasparc"
+ CT_ARCH_WITH_CPU_64="--with-cpu-64=ultrasparc"
+ fi
+ else
+ # Similarly, sparc-*-linux defaults to v7. GLIBC 2.31 started to reject
+ # pre-v8 configurations with 2.31, and default v8 fails a subsequent test for
+ # using atomics (which are presumably, only available on some v8 CPUs).
+ # Therefore, default to v9.
+ if [ -z "${CT_GLIBC_SPARC_ALLOW_V7}" ]; then
+ CT_DoLog WARN "Setting CPU to V9 for sparc-linux. Set CT_ARCH_CPU if a different CPU is desired."
+ CT_ARCH_WITH_CPU="--with-cpu=v9"
+ fi
+ fi
fi
}
diff --git a/scripts/build/binutils/binutils.sh b/scripts/build/binutils/binutils.sh
index 2a738de..a79bb7e 100644
--- a/scripts/build/binutils/binutils.sh
+++ b/scripts/build/binutils/binutils.sh
@@ -153,11 +153,14 @@ do_binutils_backend() {
if [ "${CT_BINUTILS_PLUGINS}" = "y" ]; then
extra_config+=( --enable-plugins )
fi
- if [ "${CT_BINUTILES_RELRO}" = "y" ]; then
+ if [ "${CT_BINUTILS_RELRO}" = "y" ]; then
extra_config+=( --enable-relro )
elif [ "${CT_BINUTILS_RELRO}" != "m" ]; then
extra_config+=( --disable-relro )
fi
+ if [ "${CT_BINUTILS_DETERMINISTIC_ARCHIVES}" = "y" ]; then
+ extra_config+=( --enable-deterministic-archives )
+ fi
if [ "${CT_BINUTILS_HAS_PKGVERSION_BUGURL}" = "y" ]; then
[ -n "${CT_PKGVERSION}" ] && extra_config+=("--with-pkgversion=${CT_PKGVERSION}")
[ -n "${CT_TOOLCHAIN_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_TOOLCHAIN_BUGURL}")
diff --git a/scripts/build/cc/gcc.sh b/scripts/build/cc/gcc.sh
index 60f259d..3d4db35 100644
--- a/scripts/build/cc/gcc.sh
+++ b/scripts/build/cc/gcc.sh
@@ -351,7 +351,7 @@ do_gcc_core_backend() {
;;
esac
- for tmp in ARCH ABI CPU TUNE FPU FLOAT ENDIAN; do
+ for tmp in ARCH ABI CPU CPU_32 CPU_64 TUNE FPU FLOAT ENDIAN; do
eval tmp="\${CT_ARCH_WITH_${tmp}}"
if [ -n "${tmp}" ]; then
extra_config+=("${tmp}")
@@ -905,7 +905,7 @@ do_gcc_backend() {
# Enable selected languages
extra_config+=("--enable-languages=${lang_list}")
- for tmp in ARCH ABI CPU TUNE FPU FLOAT; do
+ for tmp in ARCH ARCH_32 ARCH_64 ABI CPU CPU_32 CPU_64 TUNE TUNE_32 TUNE_64 FPU FLOAT; do
eval tmp="\${CT_ARCH_WITH_${tmp}}"
if [ -n "${tmp}" ]; then
extra_config+=("${tmp}")
diff --git a/scripts/build/companion_tools/500-dtc.sh b/scripts/build/companion_tools/500-dtc.sh
index ce0b303..a16ff62 100644
--- a/scripts/build/companion_tools/500-dtc.sh
+++ b/scripts/build/companion_tools/500-dtc.sh
@@ -48,11 +48,17 @@ do_dtc_backend()
eval "${arg// /\\ }"
done
+ # Override PKG_CONFIG: if pkg-config is not installed, DTC's makefile
+ # misinterprets the error code and tries to enable YAML support while
+ # not linking against libyaml. NO_YAML=1 is sufficient to make the build
+ # pass; PKG_CONFIG=/bin/true just suppresses some scary error messages.
extra_opts=( \
CC="${host}-gcc" \
AR="${host}-ar" \
PREFIX="${prefix}" \
+ PKG_CONFIG=/bin/true \
NO_PYTHON=1 \
+ NO_YAML=1 \
BIN=dtc \
)
if [ -n "${CT_DTC_VERBOSE}" ]; then
diff --git a/scripts/build/internals.sh b/scripts/build/internals.sh
index 5d35997..821761c 100644
--- a/scripts/build/internals.sh
+++ b/scripts/build/internals.sh
@@ -83,7 +83,7 @@ do_finish() {
case "${_type}" in
*script*executable*)
;;
- *executable*)
+ *executable*|*shared*object*)
CT_DoExecLog ALL ${CT_HOST}-strip ${strip_args} "${_t}"
;;
esac
diff --git a/scripts/build/libc/glibc.sh b/scripts/build/libc/glibc.sh
index 221752d..31fa067 100644
--- a/scripts/build/libc/glibc.sh
+++ b/scripts/build/libc/glibc.sh
@@ -199,7 +199,7 @@ glibc_backend_once()
printf "%s\n" "${CT_GLIBC_CONFIGPARMS}" > configparms
# glibc can't be built without -O2 (reference needed!)
- glibc_cflags+=" -O2"
+ glibc_cflags+=" -g -O2"
case "${CT_GLIBC_ENABLE_FORTIFIED_BUILD}" in
y) ;;
@@ -260,9 +260,12 @@ glibc_backend_once()
# CFLAGS are only applied when compiling .c files. .S files are compiled with ASFLAGS,
# but they are not passed by configure. Thus, pass everything in CC instead.
+ # The CFLAGS variable needs to be cleared, else the default "-g -O2"
+ # would override previous flags.
CT_DoExecLog CFG \
BUILD_CC=${CT_BUILD}-gcc \
CC="${CT_TARGET}-${CT_CC} ${glibc_cflags}" \
+ CFLAGS="" \
AR=${CT_TARGET}-ar \
RANLIB=${CT_TARGET}-ranlib \
"${CONFIG_SHELL}" \
diff --git a/scripts/build/libc/musl.sh b/scripts/build/libc/musl.sh
index 807b3bd..05da1d4 100644
--- a/scripts/build/libc/musl.sh
+++ b/scripts/build/libc/musl.sh
@@ -98,7 +98,8 @@ musl_backend_once() {
# host : same as --target
# target : the machine musl runs on
CT_DoExecLog CFG \
- CFLAGS="${extra_cflags[*]}" \
+ CFLAGS="${CT_TARGET_CFLAGS} ${extra_cflags[*]}" \
+ LDFLAGS="${CT_TARGET_LDFLAGS}" \
CROSS_COMPILE="${CT_TARGET}-" \
${CONFIG_SHELL} \
${src_dir}/configure \
diff --git a/scripts/build/libc/newlib.sh b/scripts/build/libc/newlib.sh
index 95ab791..ddecdb1 100644
--- a/scripts/build/libc/newlib.sh
+++ b/scripts/build/libc/newlib.sh
@@ -55,7 +55,7 @@ newlib_main()
yn_args="IO_POS_ARGS:newlib-io-pos-args
IO_C99FMT:newlib-io-c99-formats
IO_LL:newlib-io-long-long
-NEWLIB_REGISTER_FINI:newlib-register-fini
+REGISTER_FINI:newlib-register-fini
NANO_MALLOC:newlib-nano-malloc
NANO_FORMATTED_IO:newlib-nano-formatted-io
ATEXIT_DYNAMIC_ALLOC:newlib-atexit-dynamic-alloc
@@ -63,7 +63,10 @@ GLOBAL_ATEXIT:newlib-global-atexit
LITE_EXIT:lite-exit
REENT_SMALL:newlib-reent-small
MULTITHREAD:newlib-multithread
+RETARGETABLE_LOCKING:newlib-retargetable-locking
WIDE_ORIENT:newlib-wide-orient
+FSEEK_OPTIMIZATION:newlib-fseek-optimization
+FVWRITE_IN_STREAMIO:newlib-fvwrite-in-streamio
UNBUF_STREAM_OPT:newlib-unbuf-stream-opt
ENABLE_TARGET_OPTSPACE:target-optspace
"
diff --git a/scripts/crosstool-NG.sh b/scripts/crosstool-NG.sh
index 31942b1..14be5ed 100644
--- a/scripts/crosstool-NG.sh
+++ b/scripts/crosstool-NG.sh
@@ -114,7 +114,6 @@ fi
# Where will we work?
CT_WORK_DIR="${CT_WORK_DIR:-${CT_TOP_DIR}/.build}"
-CT_BUILD_DIR="${CT_BUILD_TOP_DIR}/build"
CT_DoExecLog ALL mkdir -p "${CT_WORK_DIR}"
CT_DoExecLog DEBUG rm -f "${CT_WORK_DIR}/backtrace"
diff --git a/scripts/functions b/scripts/functions
index 09df03a..2227de7 100644
--- a/scripts/functions
+++ b/scripts/functions
@@ -1040,7 +1040,8 @@ CT_GetFile()
# TBD these should not be needed if config.sub/guess is a package
# Two wrappers to call config.(guess|sub) either from CT_TOP_DIR or CT_LIB_DIR.
# Those from CT_TOP_DIR, if they exist, will be be more recent than those from CT_LIB_DIR.
-CT_DoConfigGuess() {
+CT_DoConfigGuess()
+{
if [ -r "${CT_TOP_DIR}/scripts/config.guess" ]; then
"${CT_CONFIG_SHELL}" "${CT_TOP_DIR}/scripts/config.guess"
else
@@ -1048,7 +1049,8 @@ CT_DoConfigGuess() {
fi
}
-CT_DoConfigSub() {
+CT_DoConfigSub()
+{
if [ -r "${CT_TOP_DIR}/scripts/config.sub" ]; then
"${CT_CONFIG_SHELL}" "${CT_TOP_DIR}/scripts/config.sub" "$@"
else
@@ -1060,7 +1062,8 @@ CT_DoConfigSub() {
# environment for the next step(s). When this is needed, it can do so by
# invoking this function.
# Usage: CT_EnvModify [export] VAR VALUE
-CT_EnvModify() {
+CT_EnvModify()
+{
local e
if [ "$1" = "export" ]; then
shift
@@ -1075,7 +1078,10 @@ CT_EnvModify() {
# In fact this function takes the environment variables to build the target
# tuple. It is needed both by the normal build sequence, as well as the
# sample saving sequence.
-CT_DoBuildTargetTuple() {
+CT_DoBuildTargetTuple()
+{
+ local tmp
+
# Set the endianness suffix, and the default endianness gcc option
target_endian_eb=
target_endian_be=
@@ -1137,13 +1143,29 @@ CT_DoBuildTargetTuple() {
esac
# Set the default values for ARCH, ABI, CPU, TUNE, FPU and FLOAT
- unset CT_ARCH_ARCH_CFLAG CT_ARCH_ABI_CFLAG CT_ARCH_CPU_CFLAG CT_ARCH_TUNE_CFLAG CT_ARCH_FPU_CFLAG CT_ARCH_FLOAT_CFLAG
- unset CT_ARCH_WITH_ARCH CT_ARCH_WITH_ABI CT_ARCH_WITH_CPU CT_ARCH_WITH_TUNE CT_ARCH_WITH_FPU CT_ARCH_WITH_FLOAT CT_ARCH_WITH_ENDIAN
- [ "${CT_ARCH_ARCH}" ] && { CT_ARCH_ARCH_CFLAG="-march=${CT_ARCH_ARCH}"; CT_ARCH_WITH_ARCH="--with-arch=${CT_ARCH_ARCH}"; }
- [ "${CT_ARCH_ABI}" ] && { CT_ARCH_ABI_CFLAG="-mabi=${CT_ARCH_ABI}"; CT_ARCH_WITH_ABI="--with-abi=${CT_ARCH_ABI}"; }
- [ "${CT_ARCH_CPU}" ] && { CT_ARCH_CPU_CFLAG="-mcpu=${CT_ARCH_CPU}"; CT_ARCH_WITH_CPU="--with-cpu=${CT_ARCH_CPU}"; }
- [ "${CT_ARCH_TUNE}" ] && { CT_ARCH_TUNE_CFLAG="-mtune=${CT_ARCH_TUNE}"; CT_ARCH_WITH_TUNE="--with-tune=${CT_ARCH_TUNE}"; }
- [ "${CT_ARCH_FPU}" ] && { CT_ARCH_FPU_CFLAG="-mfpu=${CT_ARCH_FPU}"; CT_ARCH_WITH_FPU="--with-fpu=${CT_ARCH_FPU}"; }
+ for tmp in ARCH ABI CPU TUNE FPU FLOAT ENDIAN; do
+ eval "unset CT_ARCH_${tmp}_CFLAG CT_ARCH_WITH_${tmp} CT_ARCH_WITH_${tmp}_32 CT_ARCH_WITH_${tmp}_64"
+ done
+
+ [ -n "${CT_ARCH_ABI}" ] && { CT_ARCH_ABI_CFLAG="-mabi=${CT_ARCH_ABI}"; CT_ARCH_WITH_ABI="--with-abi=${CT_ARCH_ABI}"; }
+ [ -n "${CT_ARCH_FPU}" ] && { CT_ARCH_FPU_CFLAG="-mfpu=${CT_ARCH_FPU}"; CT_ARCH_WITH_FPU="--with-fpu=${CT_ARCH_FPU}"; }
+
+ # The options below have distinct variants for multilib-enabled toolchain.
+ # At this time, we just always have them equal to the "main" setting; it
+ # seems that most example configurations are built for a specific CPU.
+ # If there's demand for it, we can turn them into separate knobs in
+ # Kconfig later.
+ for tmp in ARCH CPU TUNE; do
+ eval "val=\${CT_ARCH_${tmp}}"
+ if [ -n "${val}" ]; then
+ eval "CT_ARCH_${tmp}_CFLAG=-m${tmp,,}=${val}"
+ eval "CT_ARCH_WITH_${tmp}=--with-${tmp,,}=${val}"
+ if [ -n "${CT_ARCH_SUPPORTS_WITH_32_64}" -a -n "${CT_MULTILIB}" ]; then
+ eval "CT_ARCH_WITH_${tmp}_32=--with-${tmp,,}-32=${val}"
+ eval "CT_ARCH_WITH_${tmp}_64=--with-${tmp,,}-64=${val}"
+ fi
+ fi
+ done
case "${CT_ARCH_FLOAT}" in
hard)
@@ -1786,7 +1808,7 @@ CT_Mirrors()
'')
# Ignore, this happens before .config is fully evaluated
;;
- [34].*)
+ [345].*)
echo "http://www.kernel.org/pub/linux/kernel/v${version%%.*}.x"
;;
2.6.*)
diff --git a/testing/docker/alpine3.8/Dockerfile b/testing/docker/alpine3.8/Dockerfile
index bfef1bd..43da7ac 100644
--- a/testing/docker/alpine3.8/Dockerfile
+++ b/testing/docker/alpine3.8/Dockerfile
@@ -1,6 +1,6 @@
FROM alpine:3.8
-ARG CTNG_UID
-ARG CTNG_GID
+ARG CTNG_UID=1000
+ARG CTNG_GID=1000
RUN addgroup -g $CTNG_GID ctng
RUN adduser -D -h /home/ctng -G ctng -u $CTNG_UID -s /bin/bash ctng
# Activate community and testing repositories
diff --git a/testing/docker/archlinux/Dockerfile b/testing/docker/archlinux/Dockerfile
index 2298abd..1a6a148 100644
--- a/testing/docker/archlinux/Dockerfile
+++ b/testing/docker/archlinux/Dockerfile
@@ -1,6 +1,6 @@
FROM archlinux/base:latest
-ARG CTNG_UID
-ARG CTNG_GID
+ARG CTNG_UID=1000
+ARG CTNG_GID=1000
RUN pacman -Sy --noconfirm archlinux-keyring
RUN pacman -Syu --noconfirm
RUN pacman -S --noconfirm base-devel git help2man python unzip wget audit
diff --git a/testing/docker/centos6/Dockerfile b/testing/docker/centos6/Dockerfile
index 6c224cd..7f11fe1 100644
--- a/testing/docker/centos6/Dockerfile
+++ b/testing/docker/centos6/Dockerfile
@@ -1,6 +1,6 @@
FROM centos:6
-ARG CTNG_UID
-ARG CTNG_GID
+ARG CTNG_UID=1000
+ARG CTNG_GID=1000
RUN groupadd -g $CTNG_GID ctng
RUN useradd -d /home/ctng -m -g $CTNG_GID -u $CTNG_UID -s /bin/bash ctng
RUN yum install -y epel-release
diff --git a/testing/docker/centos7/Dockerfile b/testing/docker/centos7/Dockerfile
index 0631c19..e7b812a 100644
--- a/testing/docker/centos7/Dockerfile
+++ b/testing/docker/centos7/Dockerfile
@@ -1,6 +1,6 @@
FROM centos:7
-ARG CTNG_UID
-ARG CTNG_GID
+ARG CTNG_UID=1000
+ARG CTNG_GID=1000
RUN groupadd -g $CTNG_GID ctng
RUN useradd -d /home/ctng -m -g $CTNG_GID -u $CTNG_UID -s /bin/bash ctng
RUN yum install -y epel-release
diff --git a/testing/docker/dmgr.sh b/testing/docker/dmgr.sh
index 825362a..e6a93e7 100755
--- a/testing/docker/dmgr.sh
+++ b/testing/docker/dmgr.sh
@@ -170,7 +170,7 @@ fi
case "${action}" in
build|install|sample|enter|root|clean|distclean)
for c in ${selected_containers}; do
- eval "action_${action} ${c} \"$@\""
+ eval "action_${action} ${c%/} \"$@\""
done
;;
"")
diff --git a/testing/docker/fedora29/Dockerfile b/testing/docker/fedora29/Dockerfile
index 65a0c60..15dfb34 100644
--- a/testing/docker/fedora29/Dockerfile
+++ b/testing/docker/fedora29/Dockerfile
@@ -1,6 +1,6 @@
FROM fedora:29
-ARG CTNG_UID
-ARG CTNG_GID
+ARG CTNG_UID=1000
+ARG CTNG_GID=1000
RUN groupadd -g $CTNG_GID ctng
RUN useradd -d /home/ctng -m -g $CTNG_GID -u $CTNG_UID -s /bin/bash ctng
RUN yum install -y autoconf gperf bison file flex texinfo help2man gcc-c++ libtool make patch \
diff --git a/testing/docker/gentoo-amd64/Dockerfile b/testing/docker/gentoo-amd64/Dockerfile
index ec5c131..b261cc3 100644
--- a/testing/docker/gentoo-amd64/Dockerfile
+++ b/testing/docker/gentoo-amd64/Dockerfile
@@ -1,6 +1,6 @@
FROM gentoo/stage3-amd64-hardened
-ARG CTNG_UID
-ARG CTNG_GID
+ARG CTNG_UID=1000
+ARG CTNG_GID=1000
RUN groupadd -g $CTNG_GID ctng
RUN useradd -d /home/ctng -m -g $CTNG_GID -u $CTNG_UID -s /bin/bash ctng
RUN wget -O /sbin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.2.1/dumb-init_1.2.1_amd64
diff --git a/testing/docker/mint19-amd64/Dockerfile b/testing/docker/mint19-amd64/Dockerfile
index 2b4f1ae..cfc05e3 100644
--- a/testing/docker/mint19-amd64/Dockerfile
+++ b/testing/docker/mint19-amd64/Dockerfile
@@ -1,6 +1,6 @@
FROM linuxmintd/mint19-amd64
-ARG CTNG_UID
-ARG CTNG_GID
+ARG CTNG_UID=1000
+ARG CTNG_GID=1000
RUN groupadd -g $CTNG_GID ctng
RUN useradd -d /home/ctng -m -g $CTNG_GID -u $CTNG_UID -s /bin/bash ctng
RUN apt-get update
diff --git a/testing/docker/ubuntu16.04/Dockerfile b/testing/docker/ubuntu16.04/Dockerfile
index e2ea06d..a0b68ae 100644
--- a/testing/docker/ubuntu16.04/Dockerfile
+++ b/testing/docker/ubuntu16.04/Dockerfile
@@ -1,6 +1,6 @@
FROM ubuntu:16.04
-ARG CTNG_UID
-ARG CTNG_GID
+ARG CTNG_UID=1000
+ARG CTNG_GID=1000
RUN groupadd -g $CTNG_GID ctng
RUN useradd -d /home/ctng -m -g $CTNG_GID -u $CTNG_UID -s /bin/bash ctng
RUN apt-get update
diff --git a/testing/docker/ubuntu18.04/Dockerfile b/testing/docker/ubuntu18.04/Dockerfile
index 5dab842..918dd93 100644
--- a/testing/docker/ubuntu18.04/Dockerfile
+++ b/testing/docker/ubuntu18.04/Dockerfile
@@ -1,6 +1,6 @@
FROM ubuntu:18.04
-ARG CTNG_UID
-ARG CTNG_GID
+ARG CTNG_UID=1000
+ARG CTNG_GID=1000
RUN groupadd -g $CTNG_GID ctng
RUN useradd -d /home/ctng -m -g $CTNG_GID -u $CTNG_UID -s /bin/bash ctng
RUN apt-get update
diff --git a/testing/docker/ubuntu18.10/Dockerfile b/testing/docker/ubuntu19.10/Dockerfile
index 6789a5c..0c39ffc 100644
--- a/testing/docker/ubuntu18.10/Dockerfile
+++ b/testing/docker/ubuntu19.10/Dockerfile
@@ -1,12 +1,12 @@
-FROM ubuntu:18.10
-ARG CTNG_UID
-ARG CTNG_GID
+FROM ubuntu:19.10
+ARG CTNG_UID=1000
+ARG CTNG_GID=1000
RUN groupadd -g $CTNG_GID ctng
RUN useradd -d /home/ctng -m -g $CTNG_GID -u $CTNG_UID -s /bin/bash ctng
RUN apt-get update
RUN apt-get install -y gcc g++ gperf bison flex texinfo help2man make libncurses5-dev \
python3-dev autoconf automake libtool libtool-bin gawk wget bzip2 xz-utils unzip \
- patch libstdc++6
+ patch libstdc++6 rsync git
RUN wget -O /sbin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.2.1/dumb-init_1.2.1_amd64
RUN chmod a+x /sbin/dumb-init
RUN echo 'export PATH=/opt/ctng/bin:$PATH' >> /etc/profile