diff options
103 files changed, 9655 insertions, 92 deletions
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/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/libc/glibc.in b/config/libc/glibc.in index 4138707..c753359 100644 --- a/config/libc/glibc.in +++ b/config/libc/glibc.in @@ -37,10 +37,12 @@ config GLIBC_DEP_BINUTILS # 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_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,7 +59,7 @@ 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 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/maintainer/manage-packages.sh b/maintainer/manage-packages.sh index becc05e..0841244 100755 --- a/maintainer/manage-packages.sh +++ b/maintainer/manage-packages.sh @@ -249,6 +249,9 @@ config OBSOLETE config EXPERIMENTAL def_bool y +config CONFIGURE_has_lzip + def_bool y + config CONFIGURE_has_wget def_bool y 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.9.156/version.desc b/packages/bison/3.4.2/version.desc index e69de29..e69de29 100644 --- a/packages/linux/4.9.156/version.desc +++ b/packages/bison/3.4.2/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.20.8/version.desc b/packages/dtc/1.5.1/version.desc index e69de29..e69de29 100644 --- a/packages/linux/4.20.8/version.desc +++ b/packages/dtc/1.5.1/version.desc 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..1c7e8b8 --- /dev/null +++ b/packages/expat/2.2.9/chksum @@ -0,0 +1,4 @@ +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 diff --git a/packages/linux/4.19.21/version.desc b/packages/expat/2.2.9/version.desc index e69de29..e69de29 100644 --- a/packages/linux/4.19.21/version.desc +++ b/packages/expat/2.2.9/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/linux/4.18.19/version.desc b/packages/gcc/9.2.0/version.desc index e69de29..e69de29 100644 --- a/packages/linux/4.18.19/version.desc +++ b/packages/gcc/9.2.0/version.desc 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/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/linux/4.14.99/version.desc b/packages/gdb/8.3.1/version.desc index e69de29..e69de29 100644 --- a/packages/linux/4.14.99/version.desc +++ b/packages/gdb/8.3.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/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/linux/3.16.63/version.desc b/packages/gettext/0.20.1/version.desc index e69de29..e69de29 100644 --- a/packages/linux/3.16.63/version.desc +++ 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.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.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/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/package.desc b/packages/glibc/package.desc index bc49fe0..03a01b3 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.29 2.30' archive_formats='.tar.xz .tar.bz2 .tar.gz' signature_format='packed/.sig' diff --git a/packages/isl/0.20/chksum b/packages/isl/0.20/chksum index 3262b34..ed56d48 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.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 +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 diff --git a/packages/isl/0.21/chksum b/packages/isl/0.21/chksum new file mode 100644 index 0000000..80d9110 --- /dev/null +++ b/packages/isl/0.21/chksum @@ -0,0 +1,12 @@ +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 +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 diff --git a/packages/expat/2.2.6/version.desc b/packages/isl/0.21/version.desc index e69de29..e69de29 100644 --- a/packages/expat/2.2.6/version.desc +++ b/packages/isl/0.21/version.desc 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.74/chksum b/packages/linux/3.16.74/chksum new file mode 100644 index 0000000..7d0ff56 --- /dev/null +++ b/packages/linux/3.16.74/chksum @@ -0,0 +1,8 @@ +md5 linux-3.16.74.tar.xz a6a844c694b12d376dac398e447ca709 +sha1 linux-3.16.74.tar.xz b537d583b4e9f65451bf3c23e13c911ddfd40320 +sha256 linux-3.16.74.tar.xz 474409b745fe77f8d87c283a37e4ce6556508ac513734ed88914386bb390ad56 +sha512 linux-3.16.74.tar.xz 7e8993b0456adff7860be9460bdae4380d9d30e7d790fc9b335ffa6229776f8401fb512b95b0b82c2ed7d7db65518b7ea1aab3de815357cbff75a2afdfbf12e4 +md5 linux-3.16.74.tar.gz fb1e354f42035ab055979124d5f7c4ab +sha1 linux-3.16.74.tar.gz 34667ba26f5302ffb3eda15b49b3ce65b37b6ba3 +sha256 linux-3.16.74.tar.gz 8c655087f35f9dee033e6763ca9766615a172e0f4ecb6c77f2ae6863ff072a0a +sha512 linux-3.16.74.tar.gz 2d64577f95ce9046ec0fd06daca08180d043f637b2c5772254c2ad125270ec51b438cdbb86db6f0b5c4cec77f36cf9042f200dbe52b57f9a3ad6f7511ebc01dd diff --git a/packages/linux/3.16.74/version.desc b/packages/linux/3.16.74/version.desc new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/packages/linux/3.16.74/version.desc diff --git a/packages/linux/4.14.146/chksum b/packages/linux/4.14.146/chksum new file mode 100644 index 0000000..3e83b23 --- /dev/null +++ b/packages/linux/4.14.146/chksum @@ -0,0 +1,8 @@ +md5 linux-4.14.146.tar.xz d55e9c282ff19a9ded75d4c3746c604e +sha1 linux-4.14.146.tar.xz c2dfd7d67ad0e005433fe1954f23f529d642528c +sha256 linux-4.14.146.tar.xz a3c54b887ea3e679382bd4c0536e6a281b071dab2258bd3ee8af75baef2023f5 +sha512 linux-4.14.146.tar.xz abdc0693f85e1ce109794bb0302ae69571226fb73799948f8359dd5c2bee0d79f54120b6a05d2b1b6b8cd74fc115861289c7ed8fe91a92f4da2cb5a3201a627a +md5 linux-4.14.146.tar.gz e0fdecd5d7ee3e88bb6bdff4dc668d19 +sha1 linux-4.14.146.tar.gz d40ebe36c768a468deb20f56e3bcd158c007b9ff +sha256 linux-4.14.146.tar.gz d88eaf9c4be24a30198415032c157c07e05e8b1a1b4f35589359d196461830c0 +sha512 linux-4.14.146.tar.gz 04ec160f49e97e8f0a5ceded1fd72e9cbf68b7ab4a82d58bc03ea8e8a8d165dca149489923b7934c438bba20d8133e73335a2e1fd818d663c2dd060482d086f8 diff --git a/packages/linux/4.14.146/version.desc b/packages/linux/4.14.146/version.desc new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/packages/linux/4.14.146/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.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.19.75/chksum b/packages/linux/4.19.75/chksum new file mode 100644 index 0000000..f514f46 --- /dev/null +++ b/packages/linux/4.19.75/chksum @@ -0,0 +1,8 @@ +md5 linux-4.19.75.tar.xz 119378025b0a17e25269d44a21cc766c +sha1 linux-4.19.75.tar.xz 3433e69d3be9438867e0185fb27c1c417251918e +sha256 linux-4.19.75.tar.xz dd5e7147e1e4501560fba5beb86dae6bf6ba843518ab3d4cad283de77b651b78 +sha512 linux-4.19.75.tar.xz f8830ab02523df74325cd6b3dc0250970e68c9f686a6874bc4eef11b18162dd5dd7315db2cd11aeea7f1667546149e46842150a1d11121fa8cfbb04df9db4583 +md5 linux-4.19.75.tar.gz bc6f2e6d90752df4bb350a0fe62f8894 +sha1 linux-4.19.75.tar.gz 6e15b4240c22b10864bde6791286878fbeed2471 +sha256 linux-4.19.75.tar.gz 133009321f994ceb0b6c73176b3b4c3e9e3f6a7223e0c7b4f2a7ec301897a347 +sha512 linux-4.19.75.tar.gz b108099c6f7dbee921de3e48df19ef1feebfcb7f08427267d6cfd632664d746334775bba35ceabe1028bcbdd00d28808980c4685255f2b9705e03f7fcc2e8764 diff --git a/packages/linux/4.19.75/version.desc b/packages/linux/4.19.75/version.desc new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/packages/linux/4.19.75/version.desc 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.194/chksum b/packages/linux/4.4.194/chksum new file mode 100644 index 0000000..c854610 --- /dev/null +++ b/packages/linux/4.4.194/chksum @@ -0,0 +1,8 @@ +md5 linux-4.4.194.tar.xz 1511ed3daf0f638711be43c9d9c1b436 +sha1 linux-4.4.194.tar.xz c3b7ce03ea4ebe49c4ee151c82e1ddeec9779d77 +sha256 linux-4.4.194.tar.xz 7f63e893f1a178c25646a302ae7425423a3f1b72fc5d6895a2716e4bb6b8744f +sha512 linux-4.4.194.tar.xz 0ceb04034d1cd096685f6f9e76ad0a7c85c5ad2d716ea3974f300f03cfb477a1e0e1c35d78f28bd48d9a96af127a02c12e3b6734842086260579e9199f3fbcf3 +md5 linux-4.4.194.tar.gz 193efa3eedc5bc77aa8133a407918319 +sha1 linux-4.4.194.tar.gz 2d4de1f52f3fae0bac0abccf0b4c525a64219bcc +sha256 linux-4.4.194.tar.gz 940b4a0ec5393f4e57c2fc18cecd2ef87f24d867d1f3542e68ae134b73209761 +sha512 linux-4.4.194.tar.gz 0091cd8a2ba116a2a598be8b1ad67759d0458cf728157ee367cf85d03e444fa011028f1a56976e57231d9d0effcf0a61d895ba9cca3ce83106cd2fdf928cb5fa diff --git a/packages/linux/4.4.174/version.desc b/packages/linux/4.4.194/version.desc index 7d5188f..7d5188f 100644 --- a/packages/linux/4.4.174/version.desc +++ b/packages/linux/4.4.194/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.194/chksum b/packages/linux/4.9.194/chksum new file mode 100644 index 0000000..b2aaba9 --- /dev/null +++ b/packages/linux/4.9.194/chksum @@ -0,0 +1,8 @@ +md5 linux-4.9.194.tar.xz 9100d5dcad93bb66bd3a0e9a7fcaead3 +sha1 linux-4.9.194.tar.xz daa02c61ce7b47e6f92095bbbb40c423536bfb1d +sha256 linux-4.9.194.tar.xz d5f4bb7584e461f1faa9a3f94c2ad292246fe692b0e992e072dac255f806c2e3 +sha512 linux-4.9.194.tar.xz 6a2b525e94d89bd9ee9987a7551f24205cc98e1a8ddad8531eb1b3aeb034e1072aca357e57fd2a796c4038bf3525f6a49696d181d977a295840b09c745839ec8 +md5 linux-4.9.194.tar.gz 9458de3eb994a0ff7167237c7ff22b98 +sha1 linux-4.9.194.tar.gz 33197368b70076b24ed52d813e0f205dbca6b2b3 +sha256 linux-4.9.194.tar.gz 6028e577c3037273418aac2b86f992b1459b245687e9195f5df8b46d3b62b96d +sha512 linux-4.9.194.tar.gz 30dd70482e8fa10bb78fd3ad2da1a6f38646bde8599ec61ac1a3fc52f69964300d4463fe976590c74d8349019a5de12424e42a25353cc73d0152b7b30cfed229 diff --git a/packages/linux/4.9.194/version.desc b/packages/linux/4.9.194/version.desc new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/packages/linux/4.9.194/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.1/chksum b/packages/linux/5.3.1/chksum new file mode 100644 index 0000000..adc98c6 --- /dev/null +++ b/packages/linux/5.3.1/chksum @@ -0,0 +1,8 @@ +md5 linux-5.3.1.tar.xz 4c68633ce304b8fbc7be2d3452060c11 +sha1 linux-5.3.1.tar.xz aab70d4145f188e7f9a04d8714cec9d87341b184 +sha256 linux-5.3.1.tar.xz 9890b5a909d316211d045a95f5f0680e39749f2319cb26d7cd067efaa692f858 +sha512 linux-5.3.1.tar.xz 7aa3dbcd17fe373f8bd0b463c78db668ebbf4830e3c4227726161accec4e11ece946c753d4c01ad2a5f76d8d14878d71bc37ad261a0879d27046f19e7b4d0536 +md5 linux-5.3.1.tar.gz c0b7c5633752418d462218bf8e10e88a +sha1 linux-5.3.1.tar.gz 4d9dcdae7cf3a7c2304b2d7b7440443be8d39562 +sha256 linux-5.3.1.tar.gz 8ebc7c9d27c087bad25e9c6a1cf806aaeca5fb419aca8356d06a165b2873076d +sha512 linux-5.3.1.tar.gz a715507dd3a171c19e4ab8ea498f15b4fec05ee5cddafac831bfd7b4a8f1bdc0926accde5fd26c01417ab4eff112a23b2ab093a3c3c044970904e2bfdf8afffe diff --git a/packages/linux/5.3.1/version.desc b/packages/linux/5.3.1/version.desc new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/packages/linux/5.3.1/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/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/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/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/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..ef0b16c 100644 --- a/scripts/build/libc/newlib.sh +++ b/scripts/build/libc/newlib.sh @@ -63,6 +63,7 @@ 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 UNBUF_STREAM_OPT:newlib-unbuf-stream-opt ENABLE_TARGET_OPTSPACE:target-optspace diff --git a/scripts/functions b/scripts/functions index 09df03a..1b3b7dc 100644 --- a/scripts/functions +++ b/scripts/functions @@ -1786,7 +1786,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/ubuntu18.10/Dockerfile b/testing/docker/ubuntu19.04/Dockerfile index 6789a5c..110bf42 100644 --- a/testing/docker/ubuntu18.10/Dockerfile +++ b/testing/docker/ubuntu19.04/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:18.10 +FROM ubuntu:19.04 ARG CTNG_UID ARG CTNG_GID RUN groupadd -g $CTNG_GID ctng @@ -6,7 +6,7 @@ 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 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 |