summaryrefslogtreecommitdiffstats
path: root/bsp/meta-synopsys/recipes-core/glibc/files/0031-Add-ARC-architecture.patch
diff options
context:
space:
mode:
authorToshikazuOhiwa <toshikazu_ohiwa@mail.toyota.co.jp>2020-03-30 09:24:26 +0900
committerToshikazuOhiwa <toshikazu_ohiwa@mail.toyota.co.jp>2020-03-30 09:24:26 +0900
commit5b80bfd7bffd4c20d80b7c70a7130529e9a755dd (patch)
treeb4bb18dcd1487dbf1ea8127e5671b7bb2eded033 /bsp/meta-synopsys/recipes-core/glibc/files/0031-Add-ARC-architecture.patch
parent706ad73eb02caf8532deaf5d38995bd258725cb8 (diff)
agl-basesystem
Diffstat (limited to 'bsp/meta-synopsys/recipes-core/glibc/files/0031-Add-ARC-architecture.patch')
-rw-r--r--bsp/meta-synopsys/recipes-core/glibc/files/0031-Add-ARC-architecture.patch8475
1 files changed, 8475 insertions, 0 deletions
diff --git a/bsp/meta-synopsys/recipes-core/glibc/files/0031-Add-ARC-architecture.patch b/bsp/meta-synopsys/recipes-core/glibc/files/0031-Add-ARC-architecture.patch
new file mode 100644
index 00000000..46f8de8e
--- /dev/null
+++ b/bsp/meta-synopsys/recipes-core/glibc/files/0031-Add-ARC-architecture.patch
@@ -0,0 +1,8475 @@
+glibc: Update to arc-2018.09-rc2 tag
+
+This was generated from Synopsys GitHub Glibc WIP fork [1] this way:
+----------------->8-----------------
+git diff glibc-2.28..arc-2018.09-rc2 ':!NEWS'
+----------------->8-----------------
+
+[1] https://github.com/foss-for-synopsys-dwc-arc-processors/glibc
+
+Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
+
+Upstream-Status: Pending
+---
+diff --git a/elf/elf.h b/elf/elf.h
+index 7e2b072a7f75..5b0b20d58934 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 */
+@@ -3925,6 +3925,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/posix/tst-getaddrinfo4.c b/posix/tst-getaddrinfo4.c
+index dc9e423448af..0139dee777a1 100644
+--- a/posix/tst-getaddrinfo4.c
++++ b/posix/tst-getaddrinfo4.c
+@@ -39,6 +39,7 @@ try (const char *service, int family, int flags)
+ case 0:
+ case EAI_AGAIN:
+ case EAI_NONAME:
++ case EAI_NODATA:
+ printf ("SUCCESS getaddrinfo(service=%s, family=%d, flags=%d): %s: %m\n",
+ service ?: "NULL", family, flags, gai_strerror (res));
+ return 0;
+diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py
+index 8ef463f57ad6..07171a7ad7b7 100755
+--- a/scripts/build-many-glibcs.py
++++ b/scripts/build-many-glibcs.py
+@@ -165,6 +165,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',
+@@ -778,13 +781,13 @@ class Context(object):
+ git_branch = 'binutils-%s-branch' % version.translate(trans)
+ return self.git_checkout(component, git_url, git_branch, update)
+ elif component == 'gcc':
++ git_url = 'git://gcc.gnu.org/git/gcc.git'
+ if version == 'mainline':
+- branch = 'trunk'
++ branch = 'master'
+ else:
+ trans = str.maketrans({'.': '_'})
+- branch = 'branches/gcc-%s-branch' % version.translate(trans)
+- svn_url = 'svn://gcc.gnu.org/svn/gcc/%s' % branch
+- return self.gcc_checkout(svn_url, update)
++ branch = 'gcc-%s-branch' % version.translate(trans)
++ return self.git_checkout(component, git_url, branch, update)
+ elif component == 'glibc':
+ git_url = 'git://sourceware.org/git/glibc.git'
+ if version == 'mainline':
+@@ -1245,6 +1248,7 @@ class Config(object):
+ def install_linux_headers(self, cmdlist):
+ """Install Linux kernel headers."""
+ arch_map = {'aarch64': 'arm64',
++ 'arc': 'arc',
+ 'alpha': 'alpha',
+ 'arm': 'arm',
+ 'hppa': 'parisc',
+@@ -1640,11 +1644,11 @@ def get_parser():
+ parser = argparse.ArgumentParser(description=__doc__)
+ parser.add_argument('-j', dest='parallelism',
+ help='Run this number of jobs in parallel',
+- type=int, default=os.cpu_count())
++ type=int, default=1)
+ parser.add_argument('--keep', dest='keep',
+ help='Whether to keep all build directories, '
+ 'none or only those from failed builds',
+- default='none', choices=('none', 'all', 'failed'))
++ default='all', choices=('none', 'all', 'failed'))
+ parser.add_argument('--replace-sources', action='store_true',
+ help='Remove and replace source directories '
+ 'with the wrong version of a component')
+diff --git a/stdlib/longlong.h b/stdlib/longlong.h
+index c7c6977c9fd6..fb982dd530c9 100644
+--- a/stdlib/longlong.h
++++ b/stdlib/longlong.h
+@@ -197,17 +197,17 @@ extern UDItype __udiv_qrnnd (UDItype *, UDItype, UDItype, UDItype);
+ : "=r" ((USItype) (sh)), \
+ "=&r" ((USItype) (sl)) \
+ : "%r" ((USItype) (ah)), \
+- "rIJ" ((USItype) (bh)), \
++ "rICal" ((USItype) (bh)), \
+ "%r" ((USItype) (al)), \
+- "rIJ" ((USItype) (bl)))
++ "rICal" ((USItype) (bl)))
+ #define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ __asm__ ("sub.f %1, %4, %5\n\tsbc %0, %2, %3" \
+ : "=r" ((USItype) (sh)), \
+ "=&r" ((USItype) (sl)) \
+ : "r" ((USItype) (ah)), \
+- "rIJ" ((USItype) (bh)), \
++ "rICal" ((USItype) (bh)), \
+ "r" ((USItype) (al)), \
+- "rIJ" ((USItype) (bl)))
++ "rICal" ((USItype) (bl)))
+
+ #define __umulsidi3(u,v) ((UDItype)(USItype)u*(USItype)v)
+ #ifdef __ARC_NORM__
+@@ -221,8 +221,8 @@ extern UDItype __udiv_qrnnd (UDItype *, UDItype, UDItype, UDItype);
+ } \
+ while (0)
+ #define COUNT_LEADING_ZEROS_0 32
+-#endif
+-#endif
++#endif /* __ARC_NORM__ */
++#endif /* __arc__ */
+
+ #if defined (__arm__) && (defined (__thumb2__) || !defined (__thumb__)) \
+ && W_TYPE_SIZE == 32
+@@ -858,42 +858,6 @@ extern UDItype __umulsidi3 (USItype, USItype);
+ #endif
+ #endif /* __mips__ */
+
+-#if defined (__ns32000__) && W_TYPE_SIZE == 32
+-#define umul_ppmm(w1, w0, u, v) \
+- ({union {UDItype __ll; \
+- struct {USItype __l, __h;} __i; \
+- } __xx; \
+- __asm__ ("meid %2,%0" \
+- : "=g" (__xx.__ll) \
+- : "%0" ((USItype) (u)), \
+- "g" ((USItype) (v))); \
+- (w1) = __xx.__i.__h; (w0) = __xx.__i.__l;})
+-#define __umulsidi3(u, v) \
+- ({UDItype __w; \
+- __asm__ ("meid %2,%0" \
+- : "=g" (__w) \
+- : "%0" ((USItype) (u)), \
+- "g" ((USItype) (v))); \
+- __w; })
+-#define udiv_qrnnd(q, r, n1, n0, d) \
+- ({union {UDItype __ll; \
+- struct {USItype __l, __h;} __i; \
+- } __xx; \
+- __xx.__i.__h = (n1); __xx.__i.__l = (n0); \
+- __asm__ ("deid %2,%0" \
+- : "=g" (__xx.__ll) \
+- : "0" (__xx.__ll), \
+- "g" ((USItype) (d))); \
+- (r) = __xx.__i.__l; (q) = __xx.__i.__h; })
+-#define count_trailing_zeros(count,x) \
+- do { \
+- __asm__ ("ffsd %2,%0" \
+- : "=r" ((USItype) (count)) \
+- : "0" ((USItype) 0), \
+- "r" ((USItype) (x))); \
+- } while (0)
+-#endif /* __ns32000__ */
+-
+ /* FIXME: We should test _IBMR2 here when we add assembly support for the
+ system vendor compilers.
+ FIXME: What's needed for gcc PowerPC VxWorks? __vxworks__ is not good
+@@ -1086,7 +1050,7 @@ extern UDItype __umulsidi3 (USItype, USItype);
+ } while (0)
+ #endif
+
+-#if defined(__sh__) && (!defined (__SHMEDIA__) || !__SHMEDIA__) && W_TYPE_SIZE == 32
++#if defined(__sh__) && W_TYPE_SIZE == 32
+ #ifndef __sh1__
+ #define umul_ppmm(w1, w0, u, v) \
+ __asm__ ( \
+@@ -1159,21 +1123,6 @@ extern UDItype __umulsidi3 (USItype, USItype);
+
+ #endif /* __sh__ */
+
+-#if defined (__SH5__) && defined (__SHMEDIA__) && __SHMEDIA__ && W_TYPE_SIZE == 32
+-#define __umulsidi3(u,v) ((UDItype)(USItype)u*(USItype)v)
+-#define count_leading_zeros(count, x) \
+- do \
+- { \
+- UDItype x_ = (USItype)(x); \
+- SItype c_; \
+- \
+- __asm__ ("nsb %1, %0" : "=r" (c_) : "r" (x_)); \
+- (count) = c_ - 31; \
+- } \
+- while (0)
+-#define COUNT_LEADING_ZEROS_0 32
+-#endif
+-
+ #if defined (__sparc__) && !defined (__arch64__) && !defined (__sparcv9) \
+ && W_TYPE_SIZE == 32
+ #define add_ssaaaa(sh, sl, ah, al, bh, bl) \
+diff --git a/sysdeps/arc/Implies b/sysdeps/arc/Implies
+new file mode 100644
+index 000000000000..7d69983412d8
+--- /dev/null
++++ b/sysdeps/arc/Implies
+@@ -0,0 +1,4 @@
++wordsize-32
++ieee754/soft-fp
++ieee754/dbl-64
++ieee754/flt-32
+diff --git a/sysdeps/arc/Makefile b/sysdeps/arc/Makefile
+new file mode 100644
+index 000000000000..a88eda115b95
+--- /dev/null
++++ b/sysdeps/arc/Makefile
+@@ -0,0 +1,25 @@
++# ARC Makefile
++# Copyright (C) 1993-2018 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 000000000000..1041bccc1f1a
+--- /dev/null
++++ b/sysdeps/arc/Versions
+@@ -0,0 +1,14 @@
++libc {
++ GLIBC_2.27 {
++ __adddf3; __addsf3; __divdf3; __divsf3; __eqdf2; __eqsf2; __extendsfdf2;
++ __fixdfdi; __fixdfsi; __fixsfdi; __fixsfsi;
++ __fixunsdfdi; __fixunsdfsi; __fixunssfdi; __fixunssfsi;
++ __floatdidf; __floatdisf; __floatsidf; __floatsisf;
++ __floatundidf; __floatundisf; __floatunsidf; __floatunsisf;
++ __gedf2; __gesf2; __gtdf2; __gtsf2; __ledf2; __lesf2; __ltdf2; __ltsf2;
++ __muldf3; __mulsf3; __nedf2; __nesf2; __negdf2; __negsf2;
++ __subdf3; __subsf3; __truncdfsf2; __unorddf2; __unordsf2;
++ __syscall_error;
++ __mcount;
++ }
++}
+diff --git a/sysdeps/arc/__longjmp.S b/sysdeps/arc/__longjmp.S
+new file mode 100644
+index 000000000000..5ef271536bcc
+--- /dev/null
++++ b/sysdeps/arc/__longjmp.S
+@@ -0,0 +1,50 @@
++/* longjmp for ARC.
++ Copyright (C) 2017-2018 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 000000000000..474098e9a819
+--- /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 000000000000..1a8d976794d0
+--- /dev/null
++++ b/sysdeps/arc/atomic-machine.h
+@@ -0,0 +1,89 @@
++/* Low-level functions for atomic operations. ARC version.
++ Copyright (C) 2012-2018 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 0
++#define ATOMIC_EXCHANGE_USES_CAS 1
++
++#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
++ (abort (), (__typeof (*mem)) 0)
++#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
++ (abort (), (__typeof (*mem)) 0)
++#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
++ (abort (), (__typeof (*mem)) 0)
++
++#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_32_acq(mem, newval, oldval) \
++ ({ \
++ __typeof(*(mem)) prev; \
++ \
++ __asm__ __volatile__( \
++ "1: llock %0, [%1] \n" \
++ " brne %0, %2, 2f \n" \
++ " scond %3, [%1] \n" \
++ " bnz 1b \n" \
++ "2: \n" \
++ : "=&r"(prev) \
++ : "r"(mem), "ir"(oldval), \
++ "r"(newval) /* can't be "ir". scond can't take limm for "b" */\
++ : "cc", "memory"); \
++ \
++ prev; \
++ })
++
++# define atomic_exchange_acq(mem, newvalue) \
++ ({ \
++ __typeof(*(mem)) __val = (newvalue); \
++ \
++ __asm__ __volatile__( \
++ "1: ex %0, [%1] \n" \
++ : "+r"(__val) \
++ : "r"(mem) \
++ : "memory"); \
++ \
++ __val; \
++ })
++
++#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 000000000000..88fbcf39a58a
+--- /dev/null
++++ b/sysdeps/arc/bits/endian.h
+@@ -0,0 +1,12 @@
++/* The ARC architecture has selectable endianness. */
++
++#ifndef _ENDIAN_H
++# error "Never use <bits/endian.h> directly; include <endian.h> instead."
++#endif
++
++#ifdef __BIG_ENDIAN__
++# define __BYTE_ORDER __BIG_ENDIAN
++#endif
++#ifdef __LITTLE_ENDIAN__
++# define __BYTE_ORDER __LITTLE_ENDIAN
++#endif
+diff --git a/sysdeps/arc/bits/fenv.h b/sysdeps/arc/bits/fenv.h
+new file mode 100644
+index 000000000000..df576e8dd5e3
+--- /dev/null
++++ b/sysdeps/arc/bits/fenv.h
+@@ -0,0 +1,52 @@
++/* Copyright (C) 2012-2018 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
++
++/* ARC hardware FPU does not support exceptions,
++ nor does the software floating-point support. */
++#define FE_ALL_EXCEPT 0
++
++/* ARC supports only round-to-nearest. The software
++ floating-point support also acts this way. */
++enum
++ {
++ __FE_UNDEFINED = 0,
++
++ FE_TONEAREST =
++#define FE_TONEAREST 1
++ FE_TONEAREST,
++ };
++
++/* Type representing exception flags. */
++typedef unsigned int fexcept_t;
++
++/* Type representing floating-point environment. */
++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 000000000000..1f4da2d9941c
+--- /dev/null
++++ b/sysdeps/arc/bits/link.h
+@@ -0,0 +1,52 @@
++/* Machine-specific declarations for dynamic linker interface, ARC version.
++ Copyright (C) 2009-2018 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 Elf32_Addr la_arc_gnu_pltenter (Elf32_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 (Elf32_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 000000000000..3a014955ee5a
+--- /dev/null
++++ b/sysdeps/arc/bits/setjmp.h
+@@ -0,0 +1,33 @@
++/* Define the machine-dependent type `jmp_buf'. ARC version.
++ Copyright (C) 1992-2018 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_SETJMP_H
++#define _BITS_SETJMP_H 1
++
++#if !defined(_SETJMP_H) && !defined(_PTHREAD_H)
++# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
++#endif
++
++#ifndef __ASSEMBLER__
++
++/* Saves r13-r25 (callee-saved), fp (frame pointer), sp (stack pointer),
++ * blink (branch-n-link) */
++typedef int __jmp_buf[32];
++#endif
++
++#endif
+diff --git a/sysdeps/arc/bsd-_setjmp.S b/sysdeps/arc/bsd-_setjmp.S
+new file mode 100644
+index 000000000000..4e6a2da560c4
+--- /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 000000000000..1da848d2f1ee
+--- /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 000000000000..2033957d0d9f
+--- /dev/null
++++ b/sysdeps/arc/configure
+@@ -0,0 +1,17 @@
++# 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
++
++
++libc_cv_fpie=no
+diff --git a/sysdeps/arc/configure.ac b/sysdeps/arc/configure.ac
+new file mode 100644
+index 000000000000..91e58efb35c8
+--- /dev/null
++++ b/sysdeps/arc/configure.ac
+@@ -0,0 +1,13 @@
++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)
++
++libc_cv_fpie=no
+diff --git a/sysdeps/arc/crti.S b/sysdeps/arc/crti.S
+new file mode 100644
+index 000000000000..ea741b30e3cf
+--- /dev/null
++++ b/sysdeps/arc/crti.S
+@@ -0,0 +1,79 @@
++/* Special .init and .fini section support for ARC.
++ Copyright (C) 2012-2018 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/>. */
++
++#include <libc-symbols.h>
++#include <sysdep.h>
++
++#ifndef PREINIT_FUNCTION
++# define PREINIT_FUNCTION __gmon_start__
++#endif
++
++#ifndef PREINIT_FUNCTION_WEAK
++# define PREINIT_FUNCTION_WEAK 1
++#endif
++
++#if PREINIT_FUNCTION_WEAK
++ weak_extern (PREINIT_FUNCTION)
++#else
++ .hidden PREINIT_FUNCTION
++#endif
++
++ .section .init
++ .align 4
++ .global _init
++ .hidden _init
++ .type _init,@function
++_init:
++ st.a blink, [sp,-4]
++ st.a fp, [sp,-4]
++ mov fp, sp
++#if PREINIT_FUNCTION_WEAK
++ ld r0, [pcl, @PREINIT_FUNCTION@gotpc]
++ tst r0, r0
++ jlnz [r0]
++#else
++ bl PREINIT_FUNCTION
++#endif
++
++ .section .fini
++ .align 4
++ .global _fini
++ .hidden _fini
++ .type _fini,@function
++_fini:
++ st.a blink,[sp,-4]
++ st.a fp,[sp,-4]
++ mov fp,sp
++ .align 4
+diff --git a/sysdeps/arc/crtn.S b/sysdeps/arc/crtn.S
+new file mode 100644
+index 000000000000..c6c58c5593c9
+--- /dev/null
++++ b/sysdeps/arc/crtn.S
+@@ -0,0 +1,56 @@
++/* Special .init and .fini section support for ARC.
++ Copyright (C) 2012-2018 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/>. */
++
++ .section .init
++ .align 4
++ .global _init
++ .type _init,@function
++ ; EPILOGUE
++ ld.ab fp,[sp,4]
++ ld blink,[sp,0]
++ j.d [blink]
++ add sp,sp,4
++; .size _init,.-_init
++
++ .section .fini
++ .align 4
++ .global _fini
++ .type _fini,@function
++ ; EPILOGUE
++ ld.ab fp,[sp,4]
++ ld blink,[sp,0]
++ j.d [blink]
++ add sp,sp,4
++; .size _fini,.-_fini
+diff --git a/sysdeps/arc/dl-machine.h b/sysdeps/arc/dl-machine.h
+new file mode 100644
+index 000000000000..f4757904084a
+--- /dev/null
++++ b/sysdeps/arc/dl-machine.h
+@@ -0,0 +1,339 @@
++/* Machine-dependent ELF dynamic relocation inline functions. ARC version.
++ Copyright (C) 1995-2018 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 Elf32_Addr
++elf_machine_dynamic (void)
++{
++ extern const Elf32_Addr _GLOBAL_OFFSET_TABLE_[] attribute_hidden;
++ return _GLOBAL_OFFSET_TABLE_[0];
++}
++
++
++/* Return the run-time load address of the shared object. */
++static inline Elf32_Addr
++elf_machine_load_address (void)
++{
++ Elf32_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 */
++ Elf32_Addr *plt_base = (Elf32_Addr *) D_PTR (l, l_info[DT_PLTGOT]);
++ Elf32_Addr *got = (Elf32_Addr *) (plt_base[5] + l->l_addr);
++
++ got[1] = (Elf32_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] = (Elf32_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 Elf32_Addr
++elf_machine_fixup_plt (struct link_map *map, lookup_t t,
++ const ElfW(Sym) *refsym, const ElfW(Sym) *sym,
++ const Elf32_Rela *reloc,
++ Elf32_Addr *reloc_addr, Elf32_Addr value)
++{
++ return *reloc_addr = value;
++}
++
++/* Return the final value of a plt relocation. */
++static inline Elf32_Addr
++elf_machine_plt_value (struct link_map *map, const Elf32_Rela *reloc,
++ Elf32_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)
++{
++ Elf32_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 Elf32_Sym *const refsym = sym;
++ struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
++ Elf32_Addr value = SYMBOL_ADDRESS (sym_map, sym, true);
++
++ switch (r_type)
++ {
++ case R_ARC_COPY:
++ if (sym == NULL)
++ /* This can happen in trace mode if an object could not be
++ found. */
++ break;
++ if (sym->st_size > refsym->st_size
++ || (sym->st_size < refsym->st_size && GLRO(dl_verbose)))
++ {
++ const char *strtab;
++
++ strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
++ _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,
++ MIN (sym->st_size, refsym->st_size));
++ break;
++ case R_ARC_GLOB_DAT:
++ case R_ARC_JUMP_SLOT:
++ *reloc_addr = value;
++ break;
++ case R_ARC_TLS_DTPMOD:
++ /* Get the information from the link map returned by the
++ resolv function. */
++ if (sym_map != NULL)
++ *reloc_addr = sym_map->l_tls_modid;
++ break;
++
++ case R_ARC_TLS_DTPOFF:
++ if (sym != NULL)
++ {
++ *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) 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)
++{
++ Elf32_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)
++{
++ Elf32_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 000000000000..76d39fab5ab8
+--- /dev/null
++++ b/sysdeps/arc/dl-runtime.c
+@@ -0,0 +1,21 @@
++/* 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 plt0 = D_PTR (l, l_info[DT_PLTGOT]); \
++ unsigned long pltn = reloc_arg; \
++ /* exclude PL0 and PLT1 */ \
++ unsigned long 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 000000000000..a3e734c1020c
+--- /dev/null
++++ b/sysdeps/arc/dl-sysdep.h
+@@ -0,0 +1,25 @@
++/* System-specific settings for dynamic linker code. ARC version.
++ Copyright (C) 2009-2018 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 000000000000..42b5df9ca4da
+--- /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-2018 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 000000000000..0fc9786ec1d3
+--- /dev/null
++++ b/sysdeps/arc/dl-trampoline.S
+@@ -0,0 +1,81 @@
++/* PLT trampolines. ARC version.
++ Copyright (C) 2005-2018 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 000000000000..adb01d981afd
+--- /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 000000000000..54a1225284b6
+--- /dev/null
++++ b/sysdeps/arc/gccframe.h
+@@ -0,0 +1,21 @@
++/* Definition of object in frame unwind info. ARC version.
++ Copyright (C) 2017-2018 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 000000000000..2b09517766e3
+--- /dev/null
++++ b/sysdeps/arc/gmp-mparam.h
+@@ -0,0 +1,23 @@
++/* gmp-mparam.h -- Compiler/machine parameter header file.
++
++Copyright (C) 2017-2018 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 000000000000..c9cf4bc2e355
+--- /dev/null
++++ b/sysdeps/arc/jmpbuf-offsets.h
+@@ -0,0 +1,46 @@
++/* Private macros for accessing __jmp_buf contents. ARC version.
++ Copyright (C) 2006-2018 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. */
++#define JB_NUM 32 /* words */
++
++/* Helper for generic ____longjmp_chk(). */
++#define JB_FRAME_ADDRESS(buf) ((void *) (unsigned long) (buf[JB_SP]))
+diff --git a/sysdeps/arc/jmpbuf-unwind.h b/sysdeps/arc/jmpbuf-unwind.h
+new file mode 100644
+index 000000000000..d87ac13b3416
+--- /dev/null
++++ b/sysdeps/arc/jmpbuf-unwind.h
+@@ -0,0 +1,47 @@
++/* Examine __jmp_buf for unwinding frames. ARC version.
++ Copyright (C) 2005-2018 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 000000000000..3fafc683da2e
+--- /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-2018 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 000000000000..c6c865daac3e
+--- /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-2018 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/libm-test-ulps b/sysdeps/arc/libm-test-ulps
+new file mode 100644
+index 000000000000..0e8ef313fa94
+--- /dev/null
++++ b/sysdeps/arc/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/libm-test-ulps-name b/sysdeps/arc/libm-test-ulps-name
+new file mode 100644
+index 000000000000..8c4fba4f9ae0
+--- /dev/null
++++ b/sysdeps/arc/libm-test-ulps-name
+@@ -0,0 +1 @@
++ARC
+diff --git a/sysdeps/arc/machine-gmon.h b/sysdeps/arc/machine-gmon.h
+new file mode 100644
+index 000000000000..55facf77a858
+--- /dev/null
++++ b/sysdeps/arc/machine-gmon.h
+@@ -0,0 +1,33 @@
++/* Machine-dependent definitions for profiling support. ARC version.
++ Copyright (C) 1996-2018 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 frompc, unsigned long 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/math-tests.h b/sysdeps/arc/math-tests.h
+new file mode 100644
+index 000000000000..2fe08698ff49
+--- /dev/null
++++ b/sysdeps/arc/math-tests.h
+@@ -0,0 +1,28 @@
++/* Configuration for math tests. ARC version.
++ Copyright (C) 2017-2018 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/>. */
++
++/* Current ARC soft-float does not support exceptions or rounding
++ modes. */
++#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)
++#define EXCEPTION_TESTS_float 0
++#define EXCEPTION_TESTS_double 0
++#define EXCEPTION_TESTS_long_double 0
++
++#include_next <math-tests.h>
+diff --git a/sysdeps/arc/math_private.h b/sysdeps/arc/math_private.h
+new file mode 100644
+index 000000000000..35046d842533
+--- /dev/null
++++ b/sysdeps/arc/math_private.h
+@@ -0,0 +1,6 @@
++#ifndef ARC_MATH_PRIVATE_H
++#define ARC_MATH_PRIVATE_H
++
++#include_next <math_private.h>
++
++#endif
+diff --git a/sysdeps/arc/memusage.h b/sysdeps/arc/memusage.h
+new file mode 100644
+index 000000000000..536f1fdbf614
+--- /dev/null
++++ b/sysdeps/arc/memusage.h
+@@ -0,0 +1,23 @@
++/* Machine-specific definitions for memory usage profiling, ARC version.
++ Copyright (C) 2000-2018 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/nptl/Makefile b/sysdeps/arc/nptl/Makefile
+new file mode 100644
+index 000000000000..afeb58a8c1cb
+--- /dev/null
++++ b/sysdeps/arc/nptl/Makefile
+@@ -0,0 +1,22 @@
++# NPTL makefile fragment for ARC.
++# Copyright (C) 2005-2018 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 000000000000..473d9ec2bf0d
+--- /dev/null
++++ b/sysdeps/arc/nptl/bits/pthreadtypes-arch.h
+@@ -0,0 +1,72 @@
++/* Machine-specific pthread type layouts. ARC version.
++ Copyright (C) 2012-2018 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 36
++#define __SIZEOF_PTHREAD_MUTEX_T 24
++#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
++
++/* Data structure for mutex handling. */
++#define __PTHREAD_COMPAT_PADDING_MID
++#define __PTHREAD_COMPAT_PADDING_END
++#define __PTHREAD_MUTEX_LOCK_ELISION 0
++#define __PTHREAD_MUTEX_NUSERS_AFTER_KIND 1
++#define __PTHREAD_MUTEX_USE_UNION 1
++
++#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 000000000000..1ecc8ab8a65b
+--- /dev/null
++++ b/sysdeps/arc/nptl/bits/semaphore.h
+@@ -0,0 +1,32 @@
++/* Machine-specific POSIX semaphore type layouts. ARC version.
++ Copyright (C) 2002-2018 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 000000000000..9617354dc7e3
+--- /dev/null
++++ b/sysdeps/arc/nptl/pthread-offsets.h
+@@ -0,0 +1,5 @@
++#define __PTHREAD_MUTEX_NUSERS_OFFSET 16
++#define __PTHREAD_MUTEX_KIND_OFFSET 12
++#define __PTHREAD_MUTEX_SPINS_OFFSET 20
++#define __PTHREAD_MUTEX_ELISION_OFFSET 22
++#define __PTHREAD_MUTEX_LIST_OFFSET 20
+diff --git a/sysdeps/arc/nptl/pthreaddef.h b/sysdeps/arc/nptl/pthreaddef.h
+new file mode 100644
+index 000000000000..41e13c53038c
+--- /dev/null
++++ b/sysdeps/arc/nptl/pthreaddef.h
+@@ -0,0 +1,32 @@
++/* pthread machine parameter definitions, ARC version.
++ Copyright (C) 2002-2018 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 000000000000..56950e0676ed
+--- /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 000000000000..b6c2023ef3f6
+--- /dev/null
++++ b/sysdeps/arc/nptl/tls.h
+@@ -0,0 +1,150 @@
++/* Definition for thread-local data handling. NPTL/ARC version.
++ Copyright (C) 2012-2018 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 000000000000..8a24fcb18319
+--- /dev/null
++++ b/sysdeps/arc/preconfigure
+@@ -0,0 +1,6 @@
++case "$machine" in
++arc*)
++ base_machine=arc
++ machine=arc
++ ;;
++esac
+diff --git a/sysdeps/arc/setjmp.S b/sysdeps/arc/setjmp.S
+new file mode 100644
+index 000000000000..cbd44e538339
+--- /dev/null
++++ b/sysdeps/arc/setjmp.S
+@@ -0,0 +1,64 @@
++/* setjmp for ARC.
++ Copyright (C) 1991-2018 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>
++
++;@ r0 = jump buffer into which regs will be saved
++ENTRY(setjmp)
++ b.d __sigsetjmp
++ mov r1, 1 ; save signals
++END(setjmp)
++
++;@ 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)
++
++;@ 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 000000000000..95eefc187430
+--- /dev/null
++++ b/sysdeps/arc/sfp-machine.h
+@@ -0,0 +1,51 @@
++#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 000000000000..fc6a009e913a
+--- /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-2018 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 000000000000..42821ada1027
+--- /dev/null
++++ b/sysdeps/arc/stackinfo.h
+@@ -0,0 +1,33 @@
++/* Stack environment definitions for ARC.
++ Copyright (C) 2012-2018 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 000000000000..79e73e27d00d
+--- /dev/null
++++ b/sysdeps/arc/start.S
+@@ -0,0 +1,89 @@
++/* Startup code for ARC
++ Copyright (C) 1995-2018 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
++
++#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
++ /* __libc_start_main (main, argc, argv, init, fini, rtld_fini, stack_end) */
++
++ /* 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 000000000000..920611277089
+--- /dev/null
++++ b/sysdeps/arc/sysdep.h
+@@ -0,0 +1,51 @@
++/* Assembler macros for ARC.
++ Copyright (C) 2017-2018 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.
++ * One weirness is ; is not newline but comment
++ * Although # 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 000000000000..51855edef6e7
+--- /dev/null
++++ b/sysdeps/arc/tls-macros.h
+@@ -0,0 +1,29 @@
++/* Macros to support TLS testing in times of missing compiler support. */
++
++/* 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 000000000000..8ae3734cd50c
+--- /dev/null
++++ b/sysdeps/arc/tst-audit.h
+@@ -0,0 +1,23 @@
++/* Definitions for testing PLT entry/exit auditing. ARC version.
++ Copyright (C) 2009-2018 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/make-syscalls.sh b/sysdeps/unix/make-syscalls.sh
+index e39b2d6d5214..6a5c10d54e87 100644
+--- a/sysdeps/unix/make-syscalls.sh
++++ b/sysdeps/unix/make-syscalls.sh
+@@ -7,7 +7,7 @@
+ #
+ # This script is used to process the syscall data encoded in the various
+ # syscalls.list files to produce thin assembly syscall wrappers around the
+-# appropriate OS syscall. See syscall-template.s for more details on the
++# appropriate OS syscall. See syscall-template.S for more details on the
+ # actual wrapper.
+ #
+ # Syscall Signature Prefixes:
+diff --git a/sysdeps/unix/sysv/linux/arc/Implies b/sysdeps/unix/sysv/linux/arc/Implies
+new file mode 100644
+index 000000000000..7f739a0340b6
+--- /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 000000000000..a6c6dfc6ec64
+--- /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 000000000000..87974e40aa75
+--- /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.27 {
++ _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/mman.h b/sysdeps/unix/sysv/linux/arc/bits/mman.h
+new file mode 100644
+index 000000000000..d52a82eae4ad
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/bits/mman.h
+@@ -0,0 +1,42 @@
++/* Definitions for POSIX memory map interface. Linux/ARC version.
++
++ Copyright (C) 1997-2018 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_MMAN_H
++# error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
++#endif
++
++/* The following definitions basically come from the kernel headers.
++ But the kernel header is not namespace clean. */
++
++/* These are Linux-specific. */
++#ifdef __USE_MISC
++# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
++# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
++# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
++# define MAP_LOCKED 0x02000 /* Lock the mapping. */
++# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
++# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
++# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
++# define MAP_STACK 0x20000 /* Allocation is for a stack. */
++# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */
++#endif
++
++/* Include generic Linux declarations. */
++#include <bits/mman-linux.h>
+diff --git a/sysdeps/unix/sysv/linux/arc/bits/sigaction.h b/sysdeps/unix/sysv/linux/arc/bits/sigaction.h
+new file mode 100644
+index 000000000000..47e86c06ce98
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/bits/sigaction.h
+@@ -0,0 +1,85 @@
++/* The proper definitions for Linux's sigaction.
++ Copyright (C) 1993-2018 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_SIGACTION_H
++#define _BITS_SIGACTION_H 1
++
++#ifndef _SIGNAL_H
++# error "Never include <bits/sigaction.h> directly; use <signal.h> instead."
++#endif
++
++/* Structure describing the action to be taken when a signal arrives.
++ * The generic struct is NOT ABI compatible with asm-generic Linux syscall variant*/
++
++struct sigaction
++ {
++ /* Signal handler. */
++#if defined __USE_POSIX199309 || defined __USE_XOPEN_EXTENDED
++ union
++ {
++ /* Used if SA_SIGINFO is not set. */
++ __sighandler_t sa_handler;
++ /* Used if SA_SIGINFO is set. */
++ void (*sa_sigaction) (int, siginfo_t *, void *);
++ }
++ __sigaction_handler;
++# define sa_handler __sigaction_handler.sa_handler
++# define sa_sigaction __sigaction_handler.sa_sigaction
++#else
++ __sighandler_t sa_handler;
++#endif
++
++ /* Special flags. */
++ int sa_flags;
++
++ /* Restore handler. */
++ void (*sa_restorer) (void);
++
++ /* Additional set of signals to be blocked. */
++ __sigset_t sa_mask;
++ };
++
++/* Bits in `sa_flags'. */
++#define SA_NOCLDSTOP 1 /* Don't send SIGCHLD when children stop. */
++#define SA_NOCLDWAIT 2 /* Don't create zombie on child death. */
++#define SA_SIGINFO 4 /* Invoke signal-catching function with
++ three arguments instead of one. */
++#if defined __USE_XOPEN_EXTENDED || defined __USE_MISC
++# define SA_ONSTACK 0x08000000 /* Use signal stack by using `sa_restorer'. */
++#endif
++#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
++# define SA_RESTART 0x10000000 /* Restart syscall on signal return. */
++# define SA_NODEFER 0x40000000 /* Don't automatically block the signal when
++ its handler is being executed. */
++# define SA_RESETHAND 0x80000000 /* Reset to SIG_DFL on entry to handler. */
++#endif
++#ifdef __USE_MISC
++# define SA_INTERRUPT 0x20000000 /* Historical no-op. */
++
++/* Some aliases for the SA_ constants. */
++# define SA_NOMASK SA_NODEFER
++# define SA_ONESHOT SA_RESETHAND
++# define SA_STACK SA_ONSTACK
++#endif
++
++/* Values for the HOW argument to `sigprocmask'. */
++#define SIG_BLOCK 0 /* Block signals. */
++#define SIG_UNBLOCK 1 /* Unblock signals. */
++#define SIG_SETMASK 2 /* Set the set of blocked signals. */
++
++#endif
+\ No newline at end of file
+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 000000000000..303f4570c8ee
+--- /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/cacheflush.c b/sysdeps/unix/sysv/linux/arc/cacheflush.c
+new file mode 100644
+index 000000000000..7b14211eccf7
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/cacheflush.c
+@@ -0,0 +1,29 @@
++/* cacheflush system call for ARC Linux.
++ Copyright (C) 2017-2018 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 <stddef.h>
++#include <unistd.h>
++
++/* Flush cache(s). */
++int
++_flush_cache (char *addr, const int nbytes, const int op)
++{
++ return INLINE_SYSCALL (cacheflush, 3, addr, nbytes, op);
++}
++weak_alias (_flush_cache, cacheflush)
+diff --git a/sysdeps/unix/sysv/linux/arc/clone.S b/sysdeps/unix/sysv/linux/arc/clone.S
+new file mode 100644
+index 000000000000..04f2df5ef06d
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/clone.S
+@@ -0,0 +1,100 @@
++/* clone() implementation for ARC.
++ Copyright (C) 2008-2018 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.
++; Current (Jul 2012) upstream powerpc/clone.S assumes similarly.
++; Our LTP (from 2007) doesn't seem to have tests to prove otherwise
++
++; clone syscall in kernel (ABI: CONFIG_CLONE_BACKWARDS)
++;
++; int sys_clone(unsigned long clone_flags,
++; unsigned long 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 000000000000..f74fa7cb0259
+--- /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 000000000000..a9528032d32a
+--- /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 000000000000..2683ee5e7e2a
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/dl-static.c
+@@ -0,0 +1,84 @@
++/* Variable initialization. ARC version.
++ Copyright (C) 2001-2018 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 000000000000..af31f581e846
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/getcontext.S
+@@ -0,0 +1,65 @@
++/* Save current context for ARC
++ Copyright (C) 2009-2018 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 case 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 000000000000..5f6e9815d169
+--- /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-2018 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 000000000000..2fec69d21657
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/jmp_buf-macros.h
+@@ -0,0 +1,6 @@
++#define JMP_BUF_SIZE (32 + 1 + 1024/32) * 4
++#define SIGJMP_BUF_SIZE (32 + 1 + 1024/32) * 4
++#define JMP_BUF_ALIGN 4
++#define SIGJMP_BUF_ALIGN 4
++#define MASK_WAS_SAVED_OFFSET 32 * 4
++#define SAVED_MASK_OFFSET 33 * 4
+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 000000000000..d8f667ca4759
+--- /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-2018 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 000000000000..1aad547f8a4b
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/ld.abilist
+@@ -0,0 +1,9 @@
++GLIBC_2.27 __libc_stack_end D 0x4
++GLIBC_2.27 __stack_chk_guard D 0x4
++GLIBC_2.27 __tls_get_addr F
++GLIBC_2.27 _dl_mcount F
++GLIBC_2.27 _r_debug D 0x14
++GLIBC_2.27 calloc F
++GLIBC_2.27 free F
++GLIBC_2.27 malloc F
++GLIBC_2.27 realloc F
+diff --git a/sysdeps/unix/sysv/linux/arc/ldconfig.h b/sysdeps/unix/sysv/linux/arc/ldconfig.h
+new file mode 100644
+index 000000000000..c38ce20edaea
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/ldconfig.h
+@@ -0,0 +1,25 @@
++/* dynamic linker names for ARC
++ Copyright (C) 2001-2018 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/ldconfig.h>
++
++#define SYSDEP_KNOWN_INTERPRETER_NAMES \
++ { "/lib/ld-linux.so.2", FLAG_ELF_LIBC6 },
++#define SYSDEP_KNOWN_LIBRARY_NAMES \
++ { "libc.so.6", FLAG_ELF_LIBC6 }, \
++ { "libm.so.6", FLAG_ELF_LIBC6 },
+diff --git a/sysdeps/unix/sysv/linux/arc/ldsodefs.h b/sysdeps/unix/sysv/linux/arc/ldsodefs.h
+new file mode 100644
+index 000000000000..005c49a7b7cd
+--- /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-2018 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 000000000000..18968d3c01d1
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libBrokenLocale.abilist
+@@ -0,0 +1 @@
++GLIBC_2.27 __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 000000000000..711fc87c2af1
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libanl.abilist
+@@ -0,0 +1,4 @@
++GLIBC_2.27 gai_cancel F
++GLIBC_2.27 gai_error F
++GLIBC_2.27 gai_suspend F
++GLIBC_2.27 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 000000000000..b25e35d50280
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
+@@ -0,0 +1,2091 @@
++GLIBC_2.27 _Exit F
++GLIBC_2.27 _IO_2_1_stderr_ D 0x98
++GLIBC_2.27 _IO_2_1_stdin_ D 0x98
++GLIBC_2.27 _IO_2_1_stdout_ D 0x98
++GLIBC_2.27 _IO_adjust_column F
++GLIBC_2.27 _IO_adjust_wcolumn F
++GLIBC_2.27 _IO_default_doallocate F
++GLIBC_2.27 _IO_default_finish F
++GLIBC_2.27 _IO_default_pbackfail F
++GLIBC_2.27 _IO_default_uflow F
++GLIBC_2.27 _IO_default_xsgetn F
++GLIBC_2.27 _IO_default_xsputn F
++GLIBC_2.27 _IO_do_write F
++GLIBC_2.27 _IO_doallocbuf F
++GLIBC_2.27 _IO_fclose F
++GLIBC_2.27 _IO_fdopen F
++GLIBC_2.27 _IO_feof F
++GLIBC_2.27 _IO_ferror F
++GLIBC_2.27 _IO_fflush F
++GLIBC_2.27 _IO_fgetpos F
++GLIBC_2.27 _IO_fgetpos64 F
++GLIBC_2.27 _IO_fgets F
++GLIBC_2.27 _IO_file_attach F
++GLIBC_2.27 _IO_file_close F
++GLIBC_2.27 _IO_file_close_it F
++GLIBC_2.27 _IO_file_doallocate F
++GLIBC_2.27 _IO_file_finish F
++GLIBC_2.27 _IO_file_fopen F
++GLIBC_2.27 _IO_file_init F
++GLIBC_2.27 _IO_file_jumps D 0x54
++GLIBC_2.27 _IO_file_open F
++GLIBC_2.27 _IO_file_overflow F
++GLIBC_2.27 _IO_file_read F
++GLIBC_2.27 _IO_file_seek F
++GLIBC_2.27 _IO_file_seekoff F
++GLIBC_2.27 _IO_file_setbuf F
++GLIBC_2.27 _IO_file_stat F
++GLIBC_2.27 _IO_file_sync F
++GLIBC_2.27 _IO_file_underflow F
++GLIBC_2.27 _IO_file_write F
++GLIBC_2.27 _IO_file_xsputn F
++GLIBC_2.27 _IO_flockfile F
++GLIBC_2.27 _IO_flush_all F
++GLIBC_2.27 _IO_flush_all_linebuffered F
++GLIBC_2.27 _IO_fopen F
++GLIBC_2.27 _IO_fprintf F
++GLIBC_2.27 _IO_fputs F
++GLIBC_2.27 _IO_fread F
++GLIBC_2.27 _IO_free_backup_area F
++GLIBC_2.27 _IO_free_wbackup_area F
++GLIBC_2.27 _IO_fsetpos F
++GLIBC_2.27 _IO_fsetpos64 F
++GLIBC_2.27 _IO_ftell F
++GLIBC_2.27 _IO_ftrylockfile F
++GLIBC_2.27 _IO_funlockfile F
++GLIBC_2.27 _IO_fwrite F
++GLIBC_2.27 _IO_getc F
++GLIBC_2.27 _IO_getline F
++GLIBC_2.27 _IO_getline_info F
++GLIBC_2.27 _IO_gets F
++GLIBC_2.27 _IO_init F
++GLIBC_2.27 _IO_init_marker F
++GLIBC_2.27 _IO_init_wmarker F
++GLIBC_2.27 _IO_iter_begin F
++GLIBC_2.27 _IO_iter_end F
++GLIBC_2.27 _IO_iter_file F
++GLIBC_2.27 _IO_iter_next F
++GLIBC_2.27 _IO_least_wmarker F
++GLIBC_2.27 _IO_link_in F
++GLIBC_2.27 _IO_list_all D 0x4
++GLIBC_2.27 _IO_list_lock F
++GLIBC_2.27 _IO_list_resetlock F
++GLIBC_2.27 _IO_list_unlock F
++GLIBC_2.27 _IO_marker_delta F
++GLIBC_2.27 _IO_marker_difference F
++GLIBC_2.27 _IO_padn F
++GLIBC_2.27 _IO_peekc_locked F
++GLIBC_2.27 _IO_popen F
++GLIBC_2.27 _IO_printf F
++GLIBC_2.27 _IO_proc_close F
++GLIBC_2.27 _IO_proc_open F
++GLIBC_2.27 _IO_putc F
++GLIBC_2.27 _IO_puts F
++GLIBC_2.27 _IO_remove_marker F
++GLIBC_2.27 _IO_seekmark F
++GLIBC_2.27 _IO_seekoff F
++GLIBC_2.27 _IO_seekpos F
++GLIBC_2.27 _IO_seekwmark F
++GLIBC_2.27 _IO_setb F
++GLIBC_2.27 _IO_setbuffer F
++GLIBC_2.27 _IO_setvbuf F
++GLIBC_2.27 _IO_sgetn F
++GLIBC_2.27 _IO_sprintf F
++GLIBC_2.27 _IO_sputbackc F
++GLIBC_2.27 _IO_sputbackwc F
++GLIBC_2.27 _IO_sscanf F
++GLIBC_2.27 _IO_str_init_readonly F
++GLIBC_2.27 _IO_str_init_static F
++GLIBC_2.27 _IO_str_overflow F
++GLIBC_2.27 _IO_str_pbackfail F
++GLIBC_2.27 _IO_str_seekoff F
++GLIBC_2.27 _IO_str_underflow F
++GLIBC_2.27 _IO_sungetc F
++GLIBC_2.27 _IO_sungetwc F
++GLIBC_2.27 _IO_switch_to_get_mode F
++GLIBC_2.27 _IO_switch_to_main_wget_area F
++GLIBC_2.27 _IO_switch_to_wbackup_area F
++GLIBC_2.27 _IO_switch_to_wget_mode F
++GLIBC_2.27 _IO_un_link F
++GLIBC_2.27 _IO_ungetc F
++GLIBC_2.27 _IO_unsave_markers F
++GLIBC_2.27 _IO_unsave_wmarkers F
++GLIBC_2.27 _IO_vfprintf F
++GLIBC_2.27 _IO_vfscanf F
++GLIBC_2.27 _IO_vsprintf F
++GLIBC_2.27 _IO_wdefault_doallocate F
++GLIBC_2.27 _IO_wdefault_finish F
++GLIBC_2.27 _IO_wdefault_pbackfail F
++GLIBC_2.27 _IO_wdefault_uflow F
++GLIBC_2.27 _IO_wdefault_xsgetn F
++GLIBC_2.27 _IO_wdefault_xsputn F
++GLIBC_2.27 _IO_wdo_write F
++GLIBC_2.27 _IO_wdoallocbuf F
++GLIBC_2.27 _IO_wfile_jumps D 0x54
++GLIBC_2.27 _IO_wfile_overflow F
++GLIBC_2.27 _IO_wfile_seekoff F
++GLIBC_2.27 _IO_wfile_sync F
++GLIBC_2.27 _IO_wfile_underflow F
++GLIBC_2.27 _IO_wfile_xsputn F
++GLIBC_2.27 _IO_wmarker_delta F
++GLIBC_2.27 _IO_wsetb F
++GLIBC_2.27 ___brk_addr D 0x4
++GLIBC_2.27 __adjtimex F
++GLIBC_2.27 __after_morecore_hook D 0x4
++GLIBC_2.27 __argz_count F
++GLIBC_2.27 __argz_next F
++GLIBC_2.27 __argz_stringify F
++GLIBC_2.27 __asprintf F
++GLIBC_2.27 __asprintf_chk F
++GLIBC_2.27 __assert F
++GLIBC_2.27 __assert_fail F
++GLIBC_2.27 __assert_perror_fail F
++GLIBC_2.27 __backtrace F
++GLIBC_2.27 __backtrace_symbols F
++GLIBC_2.27 __backtrace_symbols_fd F
++GLIBC_2.27 __bsd_getpgrp F
++GLIBC_2.27 __bzero F
++GLIBC_2.27 __check_rhosts_file D 0x4
++GLIBC_2.27 __chk_fail F
++GLIBC_2.27 __clone F
++GLIBC_2.27 __close F
++GLIBC_2.27 __cmsg_nxthdr F
++GLIBC_2.27 __confstr_chk F
++GLIBC_2.27 __connect F
++GLIBC_2.27 __ctype_b_loc F
++GLIBC_2.27 __ctype_get_mb_cur_max F
++GLIBC_2.27 __ctype_tolower_loc F
++GLIBC_2.27 __ctype_toupper_loc F
++GLIBC_2.27 __curbrk D 0x4
++GLIBC_2.27 __cxa_at_quick_exit F
++GLIBC_2.27 __cxa_atexit F
++GLIBC_2.27 __cxa_finalize F
++GLIBC_2.27 __cxa_thread_atexit_impl F
++GLIBC_2.27 __cyg_profile_func_enter F
++GLIBC_2.27 __cyg_profile_func_exit F
++GLIBC_2.27 __daylight D 0x4
++GLIBC_2.27 __dcgettext F
++GLIBC_2.27 __default_morecore F
++GLIBC_2.27 __dgettext F
++GLIBC_2.27 __dprintf_chk F
++GLIBC_2.27 __dup2 F
++GLIBC_2.27 __duplocale F
++GLIBC_2.27 __endmntent F
++GLIBC_2.27 __environ D 0x4
++GLIBC_2.27 __errno_location F
++GLIBC_2.27 __explicit_bzero_chk F
++GLIBC_2.27 __fbufsize F
++GLIBC_2.27 __fcntl F
++GLIBC_2.27 __fdelt_chk F
++GLIBC_2.27 __fdelt_warn F
++GLIBC_2.27 __ffs F
++GLIBC_2.27 __fgets_chk F
++GLIBC_2.27 __fgets_unlocked_chk F
++GLIBC_2.27 __fgetws_chk F
++GLIBC_2.27 __fgetws_unlocked_chk F
++GLIBC_2.27 __finite F
++GLIBC_2.27 __finitef F
++GLIBC_2.27 __flbf F
++GLIBC_2.27 __fork F
++GLIBC_2.27 __fpending F
++GLIBC_2.27 __fprintf_chk F
++GLIBC_2.27 __fpu_control D 0x4
++GLIBC_2.27 __fpurge F
++GLIBC_2.27 __fread_chk F
++GLIBC_2.27 __fread_unlocked_chk F
++GLIBC_2.27 __freadable F
++GLIBC_2.27 __freading F
++GLIBC_2.27 __free_hook D 0x4
++GLIBC_2.27 __freelocale F
++GLIBC_2.27 __fsetlocking F
++GLIBC_2.27 __fwprintf_chk F
++GLIBC_2.27 __fwritable F
++GLIBC_2.27 __fwriting F
++GLIBC_2.27 __fxstat F
++GLIBC_2.27 __fxstat64 F
++GLIBC_2.27 __fxstatat F
++GLIBC_2.27 __fxstatat64 F
++GLIBC_2.27 __getauxval F
++GLIBC_2.27 __getcwd_chk F
++GLIBC_2.27 __getdelim F
++GLIBC_2.27 __getdomainname_chk F
++GLIBC_2.27 __getgroups_chk F
++GLIBC_2.27 __gethostname_chk F
++GLIBC_2.27 __getlogin_r_chk F
++GLIBC_2.27 __getmntent_r F
++GLIBC_2.27 __getpagesize F
++GLIBC_2.27 __getpgid F
++GLIBC_2.27 __getpid F
++GLIBC_2.27 __gets_chk F
++GLIBC_2.27 __gettimeofday F
++GLIBC_2.27 __getwd_chk F
++GLIBC_2.27 __gmtime_r F
++GLIBC_2.27 __h_errno_location F
++GLIBC_2.27 __isalnum_l F
++GLIBC_2.27 __isalpha_l F
++GLIBC_2.27 __isascii_l F
++GLIBC_2.27 __isblank_l F
++GLIBC_2.27 __iscntrl_l F
++GLIBC_2.27 __isctype F
++GLIBC_2.27 __isdigit_l F
++GLIBC_2.27 __isgraph_l F
++GLIBC_2.27 __isinf F
++GLIBC_2.27 __isinff F
++GLIBC_2.27 __islower_l F
++GLIBC_2.27 __isnan F
++GLIBC_2.27 __isnanf F
++GLIBC_2.27 __isoc99_fscanf F
++GLIBC_2.27 __isoc99_fwscanf F
++GLIBC_2.27 __isoc99_scanf F
++GLIBC_2.27 __isoc99_sscanf F
++GLIBC_2.27 __isoc99_swscanf F
++GLIBC_2.27 __isoc99_vfscanf F
++GLIBC_2.27 __isoc99_vfwscanf F
++GLIBC_2.27 __isoc99_vscanf F
++GLIBC_2.27 __isoc99_vsscanf F
++GLIBC_2.27 __isoc99_vswscanf F
++GLIBC_2.27 __isoc99_vwscanf F
++GLIBC_2.27 __isoc99_wscanf F
++GLIBC_2.27 __isprint_l F
++GLIBC_2.27 __ispunct_l F
++GLIBC_2.27 __isspace_l F
++GLIBC_2.27 __isupper_l F
++GLIBC_2.27 __iswalnum_l F
++GLIBC_2.27 __iswalpha_l F
++GLIBC_2.27 __iswblank_l F
++GLIBC_2.27 __iswcntrl_l F
++GLIBC_2.27 __iswctype F
++GLIBC_2.27 __iswctype_l F
++GLIBC_2.27 __iswdigit_l F
++GLIBC_2.27 __iswgraph_l F
++GLIBC_2.27 __iswlower_l F
++GLIBC_2.27 __iswprint_l F
++GLIBC_2.27 __iswpunct_l F
++GLIBC_2.27 __iswspace_l F
++GLIBC_2.27 __iswupper_l F
++GLIBC_2.27 __iswxdigit_l F
++GLIBC_2.27 __isxdigit_l F
++GLIBC_2.27 __ivaliduser F
++GLIBC_2.27 __key_decryptsession_pk_LOCAL D 0x4
++GLIBC_2.27 __key_encryptsession_pk_LOCAL D 0x4
++GLIBC_2.27 __key_gendes_LOCAL D 0x4
++GLIBC_2.27 __libc_allocate_rtsig F
++GLIBC_2.27 __libc_calloc F
++GLIBC_2.27 __libc_current_sigrtmax F
++GLIBC_2.27 __libc_current_sigrtmin F
++GLIBC_2.27 __libc_free F
++GLIBC_2.27 __libc_freeres F
++GLIBC_2.27 __libc_init_first F
++GLIBC_2.27 __libc_mallinfo F
++GLIBC_2.27 __libc_malloc F
++GLIBC_2.27 __libc_mallopt F
++GLIBC_2.27 __libc_memalign F
++GLIBC_2.27 __libc_pvalloc F
++GLIBC_2.27 __libc_realloc F
++GLIBC_2.27 __libc_sa_len F
++GLIBC_2.27 __libc_start_main F
++GLIBC_2.27 __libc_valloc F
++GLIBC_2.27 __longjmp_chk F
++GLIBC_2.27 __lseek F
++GLIBC_2.27 __lxstat F
++GLIBC_2.27 __lxstat64 F
++GLIBC_2.27 __malloc_hook D 0x4
++GLIBC_2.27 __mbrlen F
++GLIBC_2.27 __mbrtowc F
++GLIBC_2.27 __mbsnrtowcs_chk F
++GLIBC_2.27 __mbsrtowcs_chk F
++GLIBC_2.27 __mbstowcs_chk F
++GLIBC_2.27 __memalign_hook D 0x4
++GLIBC_2.27 __memcpy_chk F
++GLIBC_2.27 __memmove_chk F
++GLIBC_2.27 __mempcpy F
++GLIBC_2.27 __mempcpy_chk F
++GLIBC_2.27 __memset_chk F
++GLIBC_2.27 __monstartup F
++GLIBC_2.27 __morecore D 0x4
++GLIBC_2.27 __nanosleep F
++GLIBC_2.27 __newlocale F
++GLIBC_2.27 __nl_langinfo_l F
++GLIBC_2.27 __nss_configure_lookup F
++GLIBC_2.27 __nss_database_lookup F
++GLIBC_2.27 __nss_hostname_digits_dots F
++GLIBC_2.27 __nss_next F
++GLIBC_2.27 __obstack_printf_chk F
++GLIBC_2.27 __obstack_vprintf_chk F
++GLIBC_2.27 __open F
++GLIBC_2.27 __open64 F
++GLIBC_2.27 __open64_2 F
++GLIBC_2.27 __open_2 F
++GLIBC_2.27 __openat64_2 F
++GLIBC_2.27 __openat_2 F
++GLIBC_2.27 __overflow F
++GLIBC_2.27 __pipe F
++GLIBC_2.27 __poll F
++GLIBC_2.27 __poll_chk F
++GLIBC_2.27 __posix_getopt F
++GLIBC_2.27 __ppoll_chk F
++GLIBC_2.27 __pread64 F
++GLIBC_2.27 __pread64_chk F
++GLIBC_2.27 __pread_chk F
++GLIBC_2.27 __printf_chk F
++GLIBC_2.27 __printf_fp F
++GLIBC_2.27 __profile_frequency F
++GLIBC_2.27 __progname D 0x4
++GLIBC_2.27 __progname_full D 0x4
++GLIBC_2.27 __ptsname_r_chk F
++GLIBC_2.27 __pwrite64 F
++GLIBC_2.27 __rawmemchr F
++GLIBC_2.27 __rcmd_errstr D 0x4
++GLIBC_2.27 __read F
++GLIBC_2.27 __read_chk F
++GLIBC_2.27 __readlink_chk F
++GLIBC_2.27 __readlinkat_chk F
++GLIBC_2.27 __realloc_hook D 0x4
++GLIBC_2.27 __realpath_chk F
++GLIBC_2.27 __recv_chk F
++GLIBC_2.27 __recvfrom_chk F
++GLIBC_2.27 __register_atfork F
++GLIBC_2.27 __res_init F
++GLIBC_2.27 __res_nclose F
++GLIBC_2.27 __res_ninit F
++GLIBC_2.27 __res_randomid F
++GLIBC_2.27 __res_state F
++GLIBC_2.27 __rpc_thread_createerr F
++GLIBC_2.27 __rpc_thread_svc_fdset F
++GLIBC_2.27 __rpc_thread_svc_max_pollfd F
++GLIBC_2.27 __rpc_thread_svc_pollfd F
++GLIBC_2.27 __sbrk F
++GLIBC_2.27 __sched_cpualloc F
++GLIBC_2.27 __sched_cpucount F
++GLIBC_2.27 __sched_cpufree F
++GLIBC_2.27 __sched_get_priority_max F
++GLIBC_2.27 __sched_get_priority_min F
++GLIBC_2.27 __sched_getparam F
++GLIBC_2.27 __sched_getscheduler F
++GLIBC_2.27 __sched_setscheduler F
++GLIBC_2.27 __sched_yield F
++GLIBC_2.27 __select F
++GLIBC_2.27 __send F
++GLIBC_2.27 __setmntent F
++GLIBC_2.27 __setpgid F
++GLIBC_2.27 __sigaction F
++GLIBC_2.27 __signbit F
++GLIBC_2.27 __signbitf F
++GLIBC_2.27 __sigpause F
++GLIBC_2.27 __sigsetjmp F
++GLIBC_2.27 __sigsuspend F
++GLIBC_2.27 __snprintf_chk F
++GLIBC_2.27 __sprintf_chk F
++GLIBC_2.27 __stack_chk_fail F
++GLIBC_2.27 __statfs F
++GLIBC_2.27 __stpcpy F
++GLIBC_2.27 __stpcpy_chk F
++GLIBC_2.27 __stpncpy F
++GLIBC_2.27 __stpncpy_chk F
++GLIBC_2.27 __strcasecmp F
++GLIBC_2.27 __strcasecmp_l F
++GLIBC_2.27 __strcasestr F
++GLIBC_2.27 __strcat_chk F
++GLIBC_2.27 __strcoll_l F
++GLIBC_2.27 __strcpy_chk F
++GLIBC_2.27 __strdup F
++GLIBC_2.27 __strerror_r F
++GLIBC_2.27 __strfmon_l F
++GLIBC_2.27 __strftime_l F
++GLIBC_2.27 __strncasecmp_l F
++GLIBC_2.27 __strncat_chk F
++GLIBC_2.27 __strncpy_chk F
++GLIBC_2.27 __strndup F
++GLIBC_2.27 __strsep_g F
++GLIBC_2.27 __strtod_internal F
++GLIBC_2.27 __strtod_l F
++GLIBC_2.27 __strtof_internal F
++GLIBC_2.27 __strtof_l F
++GLIBC_2.27 __strtok_r F
++GLIBC_2.27 __strtol_internal F
++GLIBC_2.27 __strtol_l F
++GLIBC_2.27 __strtold_internal F
++GLIBC_2.27 __strtold_l F
++GLIBC_2.27 __strtoll_internal F
++GLIBC_2.27 __strtoll_l F
++GLIBC_2.27 __strtoul_internal F
++GLIBC_2.27 __strtoul_l F
++GLIBC_2.27 __strtoull_internal F
++GLIBC_2.27 __strtoull_l F
++GLIBC_2.27 __strverscmp F
++GLIBC_2.27 __strxfrm_l F
++GLIBC_2.27 __swprintf_chk F
++GLIBC_2.27 __syscall_error F
++GLIBC_2.27 __sysconf F
++GLIBC_2.27 __syslog_chk F
++GLIBC_2.27 __sysv_signal F
++GLIBC_2.27 __timezone D 0x4
++GLIBC_2.27 __toascii_l F
++GLIBC_2.27 __tolower_l F
++GLIBC_2.27 __toupper_l F
++GLIBC_2.27 __towctrans F
++GLIBC_2.27 __towctrans_l F
++GLIBC_2.27 __towlower_l F
++GLIBC_2.27 __towupper_l F
++GLIBC_2.27 __ttyname_r_chk F
++GLIBC_2.27 __tzname D 0x8
++GLIBC_2.27 __uflow F
++GLIBC_2.27 __underflow F
++GLIBC_2.27 __uselocale F
++GLIBC_2.27 __vasprintf_chk F
++GLIBC_2.27 __vdprintf_chk F
++GLIBC_2.27 __vfork F
++GLIBC_2.27 __vfprintf_chk F
++GLIBC_2.27 __vfscanf F
++GLIBC_2.27 __vfwprintf_chk F
++GLIBC_2.27 __vprintf_chk F
++GLIBC_2.27 __vsnprintf F
++GLIBC_2.27 __vsnprintf_chk F
++GLIBC_2.27 __vsprintf_chk F
++GLIBC_2.27 __vsscanf F
++GLIBC_2.27 __vswprintf_chk F
++GLIBC_2.27 __vsyslog_chk F
++GLIBC_2.27 __vwprintf_chk F
++GLIBC_2.27 __wait F
++GLIBC_2.27 __waitpid F
++GLIBC_2.27 __wcpcpy_chk F
++GLIBC_2.27 __wcpncpy_chk F
++GLIBC_2.27 __wcrtomb_chk F
++GLIBC_2.27 __wcscasecmp_l F
++GLIBC_2.27 __wcscat_chk F
++GLIBC_2.27 __wcscoll_l F
++GLIBC_2.27 __wcscpy_chk F
++GLIBC_2.27 __wcsftime_l F
++GLIBC_2.27 __wcsncasecmp_l F
++GLIBC_2.27 __wcsncat_chk F
++GLIBC_2.27 __wcsncpy_chk F
++GLIBC_2.27 __wcsnrtombs_chk F
++GLIBC_2.27 __wcsrtombs_chk F
++GLIBC_2.27 __wcstod_internal F
++GLIBC_2.27 __wcstod_l F
++GLIBC_2.27 __wcstof_internal F
++GLIBC_2.27 __wcstof_l F
++GLIBC_2.27 __wcstol_internal F
++GLIBC_2.27 __wcstol_l F
++GLIBC_2.27 __wcstold_internal F
++GLIBC_2.27 __wcstold_l F
++GLIBC_2.27 __wcstoll_internal F
++GLIBC_2.27 __wcstoll_l F
++GLIBC_2.27 __wcstombs_chk F
++GLIBC_2.27 __wcstoul_internal F
++GLIBC_2.27 __wcstoul_l F
++GLIBC_2.27 __wcstoull_internal F
++GLIBC_2.27 __wcstoull_l F
++GLIBC_2.27 __wcsxfrm_l F
++GLIBC_2.27 __wctomb_chk F
++GLIBC_2.27 __wctrans_l F
++GLIBC_2.27 __wctype_l F
++GLIBC_2.27 __wmemcpy_chk F
++GLIBC_2.27 __wmemmove_chk F
++GLIBC_2.27 __wmempcpy_chk F
++GLIBC_2.27 __wmemset_chk F
++GLIBC_2.27 __woverflow F
++GLIBC_2.27 __wprintf_chk F
++GLIBC_2.27 __write F
++GLIBC_2.27 __wuflow F
++GLIBC_2.27 __wunderflow F
++GLIBC_2.27 __xmknod F
++GLIBC_2.27 __xmknodat F
++GLIBC_2.27 __xpg_basename F
++GLIBC_2.27 __xpg_sigpause F
++GLIBC_2.27 __xpg_strerror_r F
++GLIBC_2.27 __xstat F
++GLIBC_2.27 __xstat64 F
++GLIBC_2.27 _authenticate F
++GLIBC_2.27 _dl_mcount_wrapper F
++GLIBC_2.27 _dl_mcount_wrapper_check F
++GLIBC_2.27 _environ D 0x4
++GLIBC_2.27 _exit F
++GLIBC_2.27 _flush_cache F
++GLIBC_2.27 _flushlbf F
++GLIBC_2.27 _libc_intl_domainname D 0x5
++GLIBC_2.27 _longjmp F
++GLIBC_2.27 _mcleanup F
++GLIBC_2.27 _mcount F
++GLIBC_2.27 _nl_default_dirname D 0x12
++GLIBC_2.27 _nl_domain_bindings D 0x4
++GLIBC_2.27 _nl_msg_cat_cntr D 0x4
++GLIBC_2.27 _null_auth D 0xc
++GLIBC_2.27 _obstack_allocated_p F
++GLIBC_2.27 _obstack_begin F
++GLIBC_2.27 _obstack_begin_1 F
++GLIBC_2.27 _obstack_free F
++GLIBC_2.27 _obstack_memory_used F
++GLIBC_2.27 _obstack_newchunk F
++GLIBC_2.27 _res D 0x200
++GLIBC_2.27 _res_hconf D 0x30
++GLIBC_2.27 _rpc_dtablesize F
++GLIBC_2.27 _seterr_reply F
++GLIBC_2.27 _setjmp F
++GLIBC_2.27 _sys_errlist D 0x21c
++GLIBC_2.27 _sys_nerr D 0x4
++GLIBC_2.27 _sys_siglist D 0x104
++GLIBC_2.27 _tolower F
++GLIBC_2.27 _toupper F
++GLIBC_2.27 a64l F
++GLIBC_2.27 abort F
++GLIBC_2.27 abs F
++GLIBC_2.27 accept F
++GLIBC_2.27 accept4 F
++GLIBC_2.27 access F
++GLIBC_2.27 acct F
++GLIBC_2.27 addmntent F
++GLIBC_2.27 addseverity F
++GLIBC_2.27 adjtime F
++GLIBC_2.27 adjtimex F
++GLIBC_2.27 alarm F
++GLIBC_2.27 aligned_alloc F
++GLIBC_2.27 alphasort F
++GLIBC_2.27 alphasort64 F
++GLIBC_2.27 argp_err_exit_status D 0x4
++GLIBC_2.27 argp_error F
++GLIBC_2.27 argp_failure F
++GLIBC_2.27 argp_help F
++GLIBC_2.27 argp_parse F
++GLIBC_2.27 argp_program_bug_address D 0x4
++GLIBC_2.27 argp_program_version D 0x4
++GLIBC_2.27 argp_program_version_hook D 0x4
++GLIBC_2.27 argp_state_help F
++GLIBC_2.27 argp_usage F
++GLIBC_2.27 argz_add F
++GLIBC_2.27 argz_add_sep F
++GLIBC_2.27 argz_append F
++GLIBC_2.27 argz_count F
++GLIBC_2.27 argz_create F
++GLIBC_2.27 argz_create_sep F
++GLIBC_2.27 argz_delete F
++GLIBC_2.27 argz_extract F
++GLIBC_2.27 argz_insert F
++GLIBC_2.27 argz_next F
++GLIBC_2.27 argz_replace F
++GLIBC_2.27 argz_stringify F
++GLIBC_2.27 asctime F
++GLIBC_2.27 asctime_r F
++GLIBC_2.27 asprintf F
++GLIBC_2.27 atof F
++GLIBC_2.27 atoi F
++GLIBC_2.27 atol F
++GLIBC_2.27 atoll F
++GLIBC_2.27 authdes_create F
++GLIBC_2.27 authdes_getucred F
++GLIBC_2.27 authdes_pk_create F
++GLIBC_2.27 authnone_create F
++GLIBC_2.27 authunix_create F
++GLIBC_2.27 authunix_create_default F
++GLIBC_2.27 backtrace F
++GLIBC_2.27 backtrace_symbols F
++GLIBC_2.27 backtrace_symbols_fd F
++GLIBC_2.27 basename F
++GLIBC_2.27 bcmp F
++GLIBC_2.27 bcopy F
++GLIBC_2.27 bind F
++GLIBC_2.27 bind_textdomain_codeset F
++GLIBC_2.27 bindresvport F
++GLIBC_2.27 bindtextdomain F
++GLIBC_2.27 brk F
++GLIBC_2.27 bsd_signal F
++GLIBC_2.27 bsearch F
++GLIBC_2.27 btowc F
++GLIBC_2.27 bzero F
++GLIBC_2.27 c16rtomb F
++GLIBC_2.27 c32rtomb F
++GLIBC_2.27 cacheflush F
++GLIBC_2.27 calloc F
++GLIBC_2.27 callrpc F
++GLIBC_2.27 canonicalize_file_name F
++GLIBC_2.27 capget F
++GLIBC_2.27 capset F
++GLIBC_2.27 catclose F
++GLIBC_2.27 catgets F
++GLIBC_2.27 catopen F
++GLIBC_2.27 cbc_crypt F
++GLIBC_2.27 cfgetispeed F
++GLIBC_2.27 cfgetospeed F
++GLIBC_2.27 cfmakeraw F
++GLIBC_2.27 cfsetispeed F
++GLIBC_2.27 cfsetospeed F
++GLIBC_2.27 cfsetspeed F
++GLIBC_2.27 chdir F
++GLIBC_2.27 chflags F
++GLIBC_2.27 chmod F
++GLIBC_2.27 chown F
++GLIBC_2.27 chroot F
++GLIBC_2.27 clearenv F
++GLIBC_2.27 clearerr F
++GLIBC_2.27 clearerr_unlocked F
++GLIBC_2.27 clnt_broadcast F
++GLIBC_2.27 clnt_create F
++GLIBC_2.27 clnt_pcreateerror F
++GLIBC_2.27 clnt_perrno F
++GLIBC_2.27 clnt_perror F
++GLIBC_2.27 clnt_spcreateerror F
++GLIBC_2.27 clnt_sperrno F
++GLIBC_2.27 clnt_sperror F
++GLIBC_2.27 clntraw_create F
++GLIBC_2.27 clnttcp_create F
++GLIBC_2.27 clntudp_bufcreate F
++GLIBC_2.27 clntudp_create F
++GLIBC_2.27 clntunix_create F
++GLIBC_2.27 clock F
++GLIBC_2.27 clock_adjtime F
++GLIBC_2.27 clock_getcpuclockid F
++GLIBC_2.27 clock_getres F
++GLIBC_2.27 clock_gettime F
++GLIBC_2.27 clock_nanosleep F
++GLIBC_2.27 clock_settime F
++GLIBC_2.27 clone F
++GLIBC_2.27 close F
++GLIBC_2.27 closedir F
++GLIBC_2.27 closelog F
++GLIBC_2.27 confstr F
++GLIBC_2.27 connect F
++GLIBC_2.27 copy_file_range F
++GLIBC_2.27 copysign F
++GLIBC_2.27 copysignf F
++GLIBC_2.27 copysignl F
++GLIBC_2.27 creat F
++GLIBC_2.27 creat64 F
++GLIBC_2.27 ctermid F
++GLIBC_2.27 ctime F
++GLIBC_2.27 ctime_r F
++GLIBC_2.27 cuserid F
++GLIBC_2.27 daemon F
++GLIBC_2.27 daylight D 0x4
++GLIBC_2.27 dcgettext F
++GLIBC_2.27 dcngettext F
++GLIBC_2.27 delete_module F
++GLIBC_2.27 des_setparity F
++GLIBC_2.27 dgettext F
++GLIBC_2.27 difftime F
++GLIBC_2.27 dirfd F
++GLIBC_2.27 dirname F
++GLIBC_2.27 div F
++GLIBC_2.27 dl_iterate_phdr F
++GLIBC_2.27 dngettext F
++GLIBC_2.27 dprintf F
++GLIBC_2.27 drand48 F
++GLIBC_2.27 drand48_r F
++GLIBC_2.27 dup F
++GLIBC_2.27 dup2 F
++GLIBC_2.27 dup3 F
++GLIBC_2.27 duplocale F
++GLIBC_2.27 dysize F
++GLIBC_2.27 eaccess F
++GLIBC_2.27 ecb_crypt F
++GLIBC_2.27 ecvt F
++GLIBC_2.27 ecvt_r F
++GLIBC_2.27 endaliasent F
++GLIBC_2.27 endfsent F
++GLIBC_2.27 endgrent F
++GLIBC_2.27 endhostent F
++GLIBC_2.27 endmntent F
++GLIBC_2.27 endnetent F
++GLIBC_2.27 endnetgrent F
++GLIBC_2.27 endprotoent F
++GLIBC_2.27 endpwent F
++GLIBC_2.27 endrpcent F
++GLIBC_2.27 endservent F
++GLIBC_2.27 endsgent F
++GLIBC_2.27 endspent F
++GLIBC_2.27 endttyent F
++GLIBC_2.27 endusershell F
++GLIBC_2.27 endutent F
++GLIBC_2.27 endutxent F
++GLIBC_2.27 environ D 0x4
++GLIBC_2.27 envz_add F
++GLIBC_2.27 envz_entry F
++GLIBC_2.27 envz_get F
++GLIBC_2.27 envz_merge F
++GLIBC_2.27 envz_remove F
++GLIBC_2.27 envz_strip F
++GLIBC_2.27 epoll_create F
++GLIBC_2.27 epoll_create1 F
++GLIBC_2.27 epoll_ctl F
++GLIBC_2.27 epoll_pwait F
++GLIBC_2.27 epoll_wait F
++GLIBC_2.27 erand48 F
++GLIBC_2.27 erand48_r F
++GLIBC_2.27 err F
++GLIBC_2.27 error F
++GLIBC_2.27 error_at_line F
++GLIBC_2.27 error_message_count D 0x4
++GLIBC_2.27 error_one_per_line D 0x4
++GLIBC_2.27 error_print_progname D 0x4
++GLIBC_2.27 errx F
++GLIBC_2.27 ether_aton F
++GLIBC_2.27 ether_aton_r F
++GLIBC_2.27 ether_hostton F
++GLIBC_2.27 ether_line F
++GLIBC_2.27 ether_ntoa F
++GLIBC_2.27 ether_ntoa_r F
++GLIBC_2.27 ether_ntohost F
++GLIBC_2.27 euidaccess F
++GLIBC_2.27 eventfd F
++GLIBC_2.27 eventfd_read F
++GLIBC_2.27 eventfd_write F
++GLIBC_2.27 execl F
++GLIBC_2.27 execle F
++GLIBC_2.27 execlp F
++GLIBC_2.27 execv F
++GLIBC_2.27 execve F
++GLIBC_2.27 execvp F
++GLIBC_2.27 execvpe F
++GLIBC_2.27 exit F
++GLIBC_2.27 explicit_bzero F
++GLIBC_2.27 faccessat F
++GLIBC_2.27 fallocate F
++GLIBC_2.27 fallocate64 F
++GLIBC_2.27 fanotify_init F
++GLIBC_2.27 fanotify_mark F
++GLIBC_2.27 fattach F
++GLIBC_2.27 fchdir F
++GLIBC_2.27 fchflags F
++GLIBC_2.27 fchmod F
++GLIBC_2.27 fchmodat F
++GLIBC_2.27 fchown F
++GLIBC_2.27 fchownat F
++GLIBC_2.27 fclose F
++GLIBC_2.27 fcloseall F
++GLIBC_2.27 fcntl F
++GLIBC_2.27 fcvt F
++GLIBC_2.27 fcvt_r F
++GLIBC_2.27 fdatasync F
++GLIBC_2.27 fdetach F
++GLIBC_2.27 fdopen F
++GLIBC_2.27 fdopendir F
++GLIBC_2.27 feof F
++GLIBC_2.27 feof_unlocked F
++GLIBC_2.27 ferror F
++GLIBC_2.27 ferror_unlocked F
++GLIBC_2.27 fexecve F
++GLIBC_2.27 fflush F
++GLIBC_2.27 fflush_unlocked F
++GLIBC_2.27 ffs F
++GLIBC_2.27 ffsl F
++GLIBC_2.27 ffsll F
++GLIBC_2.27 fgetc F
++GLIBC_2.27 fgetc_unlocked F
++GLIBC_2.27 fgetgrent F
++GLIBC_2.27 fgetgrent_r F
++GLIBC_2.27 fgetpos F
++GLIBC_2.27 fgetpos64 F
++GLIBC_2.27 fgetpwent F
++GLIBC_2.27 fgetpwent_r F
++GLIBC_2.27 fgets F
++GLIBC_2.27 fgets_unlocked F
++GLIBC_2.27 fgetsgent F
++GLIBC_2.27 fgetsgent_r F
++GLIBC_2.27 fgetspent F
++GLIBC_2.27 fgetspent_r F
++GLIBC_2.27 fgetwc F
++GLIBC_2.27 fgetwc_unlocked F
++GLIBC_2.27 fgetws F
++GLIBC_2.27 fgetws_unlocked F
++GLIBC_2.27 fgetxattr F
++GLIBC_2.27 fileno F
++GLIBC_2.27 fileno_unlocked F
++GLIBC_2.27 finite F
++GLIBC_2.27 finitef F
++GLIBC_2.27 finitel F
++GLIBC_2.27 flistxattr F
++GLIBC_2.27 flock F
++GLIBC_2.27 flockfile F
++GLIBC_2.27 fmemopen F
++GLIBC_2.27 fmtmsg F
++GLIBC_2.27 fnmatch F
++GLIBC_2.27 fopen F
++GLIBC_2.27 fopen64 F
++GLIBC_2.27 fopencookie F
++GLIBC_2.27 fork F
++GLIBC_2.27 fpathconf F
++GLIBC_2.27 fprintf F
++GLIBC_2.27 fputc F
++GLIBC_2.27 fputc_unlocked F
++GLIBC_2.27 fputs F
++GLIBC_2.27 fputs_unlocked F
++GLIBC_2.27 fputwc F
++GLIBC_2.27 fputwc_unlocked F
++GLIBC_2.27 fputws F
++GLIBC_2.27 fputws_unlocked F
++GLIBC_2.27 fread F
++GLIBC_2.27 fread_unlocked F
++GLIBC_2.27 free F
++GLIBC_2.27 freeaddrinfo F
++GLIBC_2.27 freeifaddrs F
++GLIBC_2.27 freelocale F
++GLIBC_2.27 fremovexattr F
++GLIBC_2.27 freopen F
++GLIBC_2.27 freopen64 F
++GLIBC_2.27 frexp F
++GLIBC_2.27 frexpf F
++GLIBC_2.27 frexpl F
++GLIBC_2.27 fscanf F
++GLIBC_2.27 fseek F
++GLIBC_2.27 fseeko F
++GLIBC_2.27 fseeko64 F
++GLIBC_2.27 fsetpos F
++GLIBC_2.27 fsetpos64 F
++GLIBC_2.27 fsetxattr F
++GLIBC_2.27 fstatfs F
++GLIBC_2.27 fstatfs64 F
++GLIBC_2.27 fstatvfs F
++GLIBC_2.27 fstatvfs64 F
++GLIBC_2.27 fsync F
++GLIBC_2.27 ftell F
++GLIBC_2.27 ftello F
++GLIBC_2.27 ftello64 F
++GLIBC_2.27 ftime F
++GLIBC_2.27 ftok F
++GLIBC_2.27 ftruncate F
++GLIBC_2.27 ftruncate64 F
++GLIBC_2.27 ftrylockfile F
++GLIBC_2.27 fts64_children F
++GLIBC_2.27 fts64_close F
++GLIBC_2.27 fts64_open F
++GLIBC_2.27 fts64_read F
++GLIBC_2.27 fts64_set F
++GLIBC_2.27 fts_children F
++GLIBC_2.27 fts_close F
++GLIBC_2.27 fts_open F
++GLIBC_2.27 fts_read F
++GLIBC_2.27 fts_set F
++GLIBC_2.27 ftw F
++GLIBC_2.27 ftw64 F
++GLIBC_2.27 funlockfile F
++GLIBC_2.27 futimens F
++GLIBC_2.27 futimes F
++GLIBC_2.27 futimesat F
++GLIBC_2.27 fwide F
++GLIBC_2.27 fwprintf F
++GLIBC_2.27 fwrite F
++GLIBC_2.27 fwrite_unlocked F
++GLIBC_2.27 fwscanf F
++GLIBC_2.27 gai_strerror F
++GLIBC_2.27 gcvt F
++GLIBC_2.27 get_avphys_pages F
++GLIBC_2.27 get_current_dir_name F
++GLIBC_2.27 get_myaddress F
++GLIBC_2.27 get_nprocs F
++GLIBC_2.27 get_nprocs_conf F
++GLIBC_2.27 get_phys_pages F
++GLIBC_2.27 getaddrinfo F
++GLIBC_2.27 getaliasbyname F
++GLIBC_2.27 getaliasbyname_r F
++GLIBC_2.27 getaliasent F
++GLIBC_2.27 getaliasent_r F
++GLIBC_2.27 getauxval F
++GLIBC_2.27 getc F
++GLIBC_2.27 getc_unlocked F
++GLIBC_2.27 getchar F
++GLIBC_2.27 getchar_unlocked F
++GLIBC_2.27 getcontext F
++GLIBC_2.27 getcwd F
++GLIBC_2.27 getdate F
++GLIBC_2.27 getdate_err D 0x4
++GLIBC_2.27 getdate_r F
++GLIBC_2.27 getdelim F
++GLIBC_2.27 getdirentries F
++GLIBC_2.27 getdirentries64 F
++GLIBC_2.27 getdomainname F
++GLIBC_2.27 getdtablesize F
++GLIBC_2.27 getegid F
++GLIBC_2.27 getentropy F
++GLIBC_2.27 getenv F
++GLIBC_2.27 geteuid F
++GLIBC_2.27 getfsent F
++GLIBC_2.27 getfsfile F
++GLIBC_2.27 getfsspec F
++GLIBC_2.27 getgid F
++GLIBC_2.27 getgrent F
++GLIBC_2.27 getgrent_r F
++GLIBC_2.27 getgrgid F
++GLIBC_2.27 getgrgid_r F
++GLIBC_2.27 getgrnam F
++GLIBC_2.27 getgrnam_r F
++GLIBC_2.27 getgrouplist F
++GLIBC_2.27 getgroups F
++GLIBC_2.27 gethostbyaddr F
++GLIBC_2.27 gethostbyaddr_r F
++GLIBC_2.27 gethostbyname F
++GLIBC_2.27 gethostbyname2 F
++GLIBC_2.27 gethostbyname2_r F
++GLIBC_2.27 gethostbyname_r F
++GLIBC_2.27 gethostent F
++GLIBC_2.27 gethostent_r F
++GLIBC_2.27 gethostid F
++GLIBC_2.27 gethostname F
++GLIBC_2.27 getifaddrs F
++GLIBC_2.27 getipv4sourcefilter F
++GLIBC_2.27 getitimer F
++GLIBC_2.27 getline F
++GLIBC_2.27 getloadavg F
++GLIBC_2.27 getlogin F
++GLIBC_2.27 getlogin_r F
++GLIBC_2.27 getmntent F
++GLIBC_2.27 getmntent_r F
++GLIBC_2.27 getmsg F
++GLIBC_2.27 getnameinfo F
++GLIBC_2.27 getnetbyaddr F
++GLIBC_2.27 getnetbyaddr_r F
++GLIBC_2.27 getnetbyname F
++GLIBC_2.27 getnetbyname_r F
++GLIBC_2.27 getnetent F
++GLIBC_2.27 getnetent_r F
++GLIBC_2.27 getnetgrent F
++GLIBC_2.27 getnetgrent_r F
++GLIBC_2.27 getnetname F
++GLIBC_2.27 getopt F
++GLIBC_2.27 getopt_long F
++GLIBC_2.27 getopt_long_only F
++GLIBC_2.27 getpagesize F
++GLIBC_2.27 getpass F
++GLIBC_2.27 getpeername F
++GLIBC_2.27 getpgid F
++GLIBC_2.27 getpgrp F
++GLIBC_2.27 getpid F
++GLIBC_2.27 getpmsg F
++GLIBC_2.27 getppid F
++GLIBC_2.27 getpriority F
++GLIBC_2.27 getprotobyname F
++GLIBC_2.27 getprotobyname_r F
++GLIBC_2.27 getprotobynumber F
++GLIBC_2.27 getprotobynumber_r F
++GLIBC_2.27 getprotoent F
++GLIBC_2.27 getprotoent_r F
++GLIBC_2.27 getpt F
++GLIBC_2.27 getpublickey F
++GLIBC_2.27 getpw F
++GLIBC_2.27 getpwent F
++GLIBC_2.27 getpwent_r F
++GLIBC_2.27 getpwnam F
++GLIBC_2.27 getpwnam_r F
++GLIBC_2.27 getpwuid F
++GLIBC_2.27 getpwuid_r F
++GLIBC_2.27 getrandom F
++GLIBC_2.27 getresgid F
++GLIBC_2.27 getresuid F
++GLIBC_2.27 getrlimit F
++GLIBC_2.27 getrlimit64 F
++GLIBC_2.27 getrpcbyname F
++GLIBC_2.27 getrpcbyname_r F
++GLIBC_2.27 getrpcbynumber F
++GLIBC_2.27 getrpcbynumber_r F
++GLIBC_2.27 getrpcent F
++GLIBC_2.27 getrpcent_r F
++GLIBC_2.27 getrpcport F
++GLIBC_2.27 getrusage F
++GLIBC_2.27 gets F
++GLIBC_2.27 getsecretkey F
++GLIBC_2.27 getservbyname F
++GLIBC_2.27 getservbyname_r F
++GLIBC_2.27 getservbyport F
++GLIBC_2.27 getservbyport_r F
++GLIBC_2.27 getservent F
++GLIBC_2.27 getservent_r F
++GLIBC_2.27 getsgent F
++GLIBC_2.27 getsgent_r F
++GLIBC_2.27 getsgnam F
++GLIBC_2.27 getsgnam_r F
++GLIBC_2.27 getsid F
++GLIBC_2.27 getsockname F
++GLIBC_2.27 getsockopt F
++GLIBC_2.27 getsourcefilter F
++GLIBC_2.27 getspent F
++GLIBC_2.27 getspent_r F
++GLIBC_2.27 getspnam F
++GLIBC_2.27 getspnam_r F
++GLIBC_2.27 getsubopt F
++GLIBC_2.27 gettext F
++GLIBC_2.27 gettimeofday F
++GLIBC_2.27 getttyent F
++GLIBC_2.27 getttynam F
++GLIBC_2.27 getuid F
++GLIBC_2.27 getusershell F
++GLIBC_2.27 getutent F
++GLIBC_2.27 getutent_r F
++GLIBC_2.27 getutid F
++GLIBC_2.27 getutid_r F
++GLIBC_2.27 getutline F
++GLIBC_2.27 getutline_r F
++GLIBC_2.27 getutmp F
++GLIBC_2.27 getutmpx F
++GLIBC_2.27 getutxent F
++GLIBC_2.27 getutxid F
++GLIBC_2.27 getutxline F
++GLIBC_2.27 getw F
++GLIBC_2.27 getwc F
++GLIBC_2.27 getwc_unlocked F
++GLIBC_2.27 getwchar F
++GLIBC_2.27 getwchar_unlocked F
++GLIBC_2.27 getwd F
++GLIBC_2.27 getxattr F
++GLIBC_2.27 glob F
++GLIBC_2.27 glob64 F
++GLIBC_2.27 glob_pattern_p F
++GLIBC_2.27 globfree F
++GLIBC_2.27 globfree64 F
++GLIBC_2.27 gmtime F
++GLIBC_2.27 gmtime_r F
++GLIBC_2.27 gnu_dev_major F
++GLIBC_2.27 gnu_dev_makedev F
++GLIBC_2.27 gnu_dev_minor F
++GLIBC_2.27 gnu_get_libc_release F
++GLIBC_2.27 gnu_get_libc_version F
++GLIBC_2.27 grantpt F
++GLIBC_2.27 group_member F
++GLIBC_2.27 gsignal F
++GLIBC_2.27 gtty F
++GLIBC_2.27 h_errlist D 0x14
++GLIBC_2.27 h_nerr D 0x4
++GLIBC_2.27 hasmntopt F
++GLIBC_2.27 hcreate F
++GLIBC_2.27 hcreate_r F
++GLIBC_2.27 hdestroy F
++GLIBC_2.27 hdestroy_r F
++GLIBC_2.27 herror F
++GLIBC_2.27 host2netname F
++GLIBC_2.27 hsearch F
++GLIBC_2.27 hsearch_r F
++GLIBC_2.27 hstrerror F
++GLIBC_2.27 htonl F
++GLIBC_2.27 htons F
++GLIBC_2.27 iconv F
++GLIBC_2.27 iconv_close F
++GLIBC_2.27 iconv_open F
++GLIBC_2.27 if_freenameindex F
++GLIBC_2.27 if_indextoname F
++GLIBC_2.27 if_nameindex F
++GLIBC_2.27 if_nametoindex F
++GLIBC_2.27 imaxabs F
++GLIBC_2.27 imaxdiv F
++GLIBC_2.27 in6addr_any D 0x10
++GLIBC_2.27 in6addr_loopback D 0x10
++GLIBC_2.27 index F
++GLIBC_2.27 inet6_opt_append F
++GLIBC_2.27 inet6_opt_find F
++GLIBC_2.27 inet6_opt_finish F
++GLIBC_2.27 inet6_opt_get_val F
++GLIBC_2.27 inet6_opt_init F
++GLIBC_2.27 inet6_opt_next F
++GLIBC_2.27 inet6_opt_set_val F
++GLIBC_2.27 inet6_option_alloc F
++GLIBC_2.27 inet6_option_append F
++GLIBC_2.27 inet6_option_find F
++GLIBC_2.27 inet6_option_init F
++GLIBC_2.27 inet6_option_next F
++GLIBC_2.27 inet6_option_space F
++GLIBC_2.27 inet6_rth_add F
++GLIBC_2.27 inet6_rth_getaddr F
++GLIBC_2.27 inet6_rth_init F
++GLIBC_2.27 inet6_rth_reverse F
++GLIBC_2.27 inet6_rth_segments F
++GLIBC_2.27 inet6_rth_space F
++GLIBC_2.27 inet_addr F
++GLIBC_2.27 inet_aton F
++GLIBC_2.27 inet_lnaof F
++GLIBC_2.27 inet_makeaddr F
++GLIBC_2.27 inet_netof F
++GLIBC_2.27 inet_network F
++GLIBC_2.27 inet_nsap_addr F
++GLIBC_2.27 inet_nsap_ntoa F
++GLIBC_2.27 inet_ntoa F
++GLIBC_2.27 inet_ntop F
++GLIBC_2.27 inet_pton F
++GLIBC_2.27 init_module F
++GLIBC_2.27 initgroups F
++GLIBC_2.27 initstate F
++GLIBC_2.27 initstate_r F
++GLIBC_2.27 innetgr F
++GLIBC_2.27 inotify_add_watch F
++GLIBC_2.27 inotify_init F
++GLIBC_2.27 inotify_init1 F
++GLIBC_2.27 inotify_rm_watch F
++GLIBC_2.27 insque F
++GLIBC_2.27 ioctl F
++GLIBC_2.27 iruserok F
++GLIBC_2.27 iruserok_af F
++GLIBC_2.27 isalnum F
++GLIBC_2.27 isalnum_l F
++GLIBC_2.27 isalpha F
++GLIBC_2.27 isalpha_l F
++GLIBC_2.27 isascii F
++GLIBC_2.27 isastream F
++GLIBC_2.27 isatty F
++GLIBC_2.27 isblank F
++GLIBC_2.27 isblank_l F
++GLIBC_2.27 iscntrl F
++GLIBC_2.27 iscntrl_l F
++GLIBC_2.27 isctype F
++GLIBC_2.27 isdigit F
++GLIBC_2.27 isdigit_l F
++GLIBC_2.27 isfdtype F
++GLIBC_2.27 isgraph F
++GLIBC_2.27 isgraph_l F
++GLIBC_2.27 isinf F
++GLIBC_2.27 isinff F
++GLIBC_2.27 isinfl F
++GLIBC_2.27 islower F
++GLIBC_2.27 islower_l F
++GLIBC_2.27 isnan F
++GLIBC_2.27 isnanf F
++GLIBC_2.27 isnanl F
++GLIBC_2.27 isprint F
++GLIBC_2.27 isprint_l F
++GLIBC_2.27 ispunct F
++GLIBC_2.27 ispunct_l F
++GLIBC_2.27 isspace F
++GLIBC_2.27 isspace_l F
++GLIBC_2.27 isupper F
++GLIBC_2.27 isupper_l F
++GLIBC_2.27 iswalnum F
++GLIBC_2.27 iswalnum_l F
++GLIBC_2.27 iswalpha F
++GLIBC_2.27 iswalpha_l F
++GLIBC_2.27 iswblank F
++GLIBC_2.27 iswblank_l F
++GLIBC_2.27 iswcntrl F
++GLIBC_2.27 iswcntrl_l F
++GLIBC_2.27 iswctype F
++GLIBC_2.27 iswctype_l F
++GLIBC_2.27 iswdigit F
++GLIBC_2.27 iswdigit_l F
++GLIBC_2.27 iswgraph F
++GLIBC_2.27 iswgraph_l F
++GLIBC_2.27 iswlower F
++GLIBC_2.27 iswlower_l F
++GLIBC_2.27 iswprint F
++GLIBC_2.27 iswprint_l F
++GLIBC_2.27 iswpunct F
++GLIBC_2.27 iswpunct_l F
++GLIBC_2.27 iswspace F
++GLIBC_2.27 iswspace_l F
++GLIBC_2.27 iswupper F
++GLIBC_2.27 iswupper_l F
++GLIBC_2.27 iswxdigit F
++GLIBC_2.27 iswxdigit_l F
++GLIBC_2.27 isxdigit F
++GLIBC_2.27 isxdigit_l F
++GLIBC_2.27 jrand48 F
++GLIBC_2.27 jrand48_r F
++GLIBC_2.27 key_decryptsession F
++GLIBC_2.27 key_decryptsession_pk F
++GLIBC_2.27 key_encryptsession F
++GLIBC_2.27 key_encryptsession_pk F
++GLIBC_2.27 key_gendes F
++GLIBC_2.27 key_get_conv F
++GLIBC_2.27 key_secretkey_is_set F
++GLIBC_2.27 key_setnet F
++GLIBC_2.27 key_setsecret F
++GLIBC_2.27 kill F
++GLIBC_2.27 killpg F
++GLIBC_2.27 klogctl F
++GLIBC_2.27 l64a F
++GLIBC_2.27 labs F
++GLIBC_2.27 lchmod F
++GLIBC_2.27 lchown F
++GLIBC_2.27 lckpwdf F
++GLIBC_2.27 lcong48 F
++GLIBC_2.27 lcong48_r F
++GLIBC_2.27 ldexp F
++GLIBC_2.27 ldexpf F
++GLIBC_2.27 ldexpl F
++GLIBC_2.27 ldiv F
++GLIBC_2.27 lfind F
++GLIBC_2.27 lgetxattr F
++GLIBC_2.27 link F
++GLIBC_2.27 linkat F
++GLIBC_2.27 listen F
++GLIBC_2.27 listxattr F
++GLIBC_2.27 llabs F
++GLIBC_2.27 lldiv F
++GLIBC_2.27 llistxattr F
++GLIBC_2.27 llseek F
++GLIBC_2.27 localeconv F
++GLIBC_2.27 localtime F
++GLIBC_2.27 localtime_r F
++GLIBC_2.27 lockf F
++GLIBC_2.27 lockf64 F
++GLIBC_2.27 longjmp F
++GLIBC_2.27 lrand48 F
++GLIBC_2.27 lrand48_r F
++GLIBC_2.27 lremovexattr F
++GLIBC_2.27 lsearch F
++GLIBC_2.27 lseek F
++GLIBC_2.27 lseek64 F
++GLIBC_2.27 lsetxattr F
++GLIBC_2.27 lutimes F
++GLIBC_2.27 madvise F
++GLIBC_2.27 makecontext F
++GLIBC_2.27 mallinfo F
++GLIBC_2.27 malloc F
++GLIBC_2.27 malloc_info F
++GLIBC_2.27 malloc_stats F
++GLIBC_2.27 malloc_trim F
++GLIBC_2.27 malloc_usable_size F
++GLIBC_2.27 mallopt F
++GLIBC_2.27 mallwatch D 0x4
++GLIBC_2.27 mblen F
++GLIBC_2.27 mbrlen F
++GLIBC_2.27 mbrtoc16 F
++GLIBC_2.27 mbrtoc32 F
++GLIBC_2.27 mbrtowc F
++GLIBC_2.27 mbsinit F
++GLIBC_2.27 mbsnrtowcs F
++GLIBC_2.27 mbsrtowcs F
++GLIBC_2.27 mbstowcs F
++GLIBC_2.27 mbtowc F
++GLIBC_2.27 mcheck F
++GLIBC_2.27 mcheck_check_all F
++GLIBC_2.27 mcheck_pedantic F
++GLIBC_2.27 memalign F
++GLIBC_2.27 memccpy F
++GLIBC_2.27 memchr F
++GLIBC_2.27 memcmp F
++GLIBC_2.27 memcpy F
++GLIBC_2.27 memfd_create F
++GLIBC_2.27 memfrob F
++GLIBC_2.27 memmem F
++GLIBC_2.27 memmove F
++GLIBC_2.27 mempcpy F
++GLIBC_2.27 memrchr F
++GLIBC_2.27 memset F
++GLIBC_2.27 mincore F
++GLIBC_2.27 mkdir F
++GLIBC_2.27 mkdirat F
++GLIBC_2.27 mkdtemp F
++GLIBC_2.27 mkfifo F
++GLIBC_2.27 mkfifoat F
++GLIBC_2.27 mkostemp F
++GLIBC_2.27 mkostemp64 F
++GLIBC_2.27 mkostemps F
++GLIBC_2.27 mkostemps64 F
++GLIBC_2.27 mkstemp F
++GLIBC_2.27 mkstemp64 F
++GLIBC_2.27 mkstemps F
++GLIBC_2.27 mkstemps64 F
++GLIBC_2.27 mktemp F
++GLIBC_2.27 mktime F
++GLIBC_2.27 mlock F
++GLIBC_2.27 mlock2 F
++GLIBC_2.27 mlockall F
++GLIBC_2.27 mmap F
++GLIBC_2.27 mmap64 F
++GLIBC_2.27 modf F
++GLIBC_2.27 modff F
++GLIBC_2.27 modfl F
++GLIBC_2.27 moncontrol F
++GLIBC_2.27 monstartup F
++GLIBC_2.27 mount F
++GLIBC_2.27 mprobe F
++GLIBC_2.27 mprotect F
++GLIBC_2.27 mrand48 F
++GLIBC_2.27 mrand48_r F
++GLIBC_2.27 mremap F
++GLIBC_2.27 msgctl F
++GLIBC_2.27 msgget F
++GLIBC_2.27 msgrcv F
++GLIBC_2.27 msgsnd F
++GLIBC_2.27 msync F
++GLIBC_2.27 mtrace F
++GLIBC_2.27 munlock F
++GLIBC_2.27 munlockall F
++GLIBC_2.27 munmap F
++GLIBC_2.27 muntrace F
++GLIBC_2.27 name_to_handle_at F
++GLIBC_2.27 nanosleep F
++GLIBC_2.27 netname2host F
++GLIBC_2.27 netname2user F
++GLIBC_2.27 newlocale F
++GLIBC_2.27 nfsservctl F
++GLIBC_2.27 nftw F
++GLIBC_2.27 nftw64 F
++GLIBC_2.27 ngettext F
++GLIBC_2.27 nice F
++GLIBC_2.27 nl_langinfo F
++GLIBC_2.27 nl_langinfo_l F
++GLIBC_2.27 nrand48 F
++GLIBC_2.27 nrand48_r F
++GLIBC_2.27 ntohl F
++GLIBC_2.27 ntohs F
++GLIBC_2.27 ntp_adjtime F
++GLIBC_2.27 ntp_gettime F
++GLIBC_2.27 ntp_gettimex F
++GLIBC_2.27 obstack_alloc_failed_handler D 0x4
++GLIBC_2.27 obstack_exit_failure D 0x4
++GLIBC_2.27 obstack_free F
++GLIBC_2.27 obstack_printf F
++GLIBC_2.27 obstack_vprintf F
++GLIBC_2.27 on_exit F
++GLIBC_2.27 open F
++GLIBC_2.27 open64 F
++GLIBC_2.27 open_by_handle_at F
++GLIBC_2.27 open_memstream F
++GLIBC_2.27 open_wmemstream F
++GLIBC_2.27 openat F
++GLIBC_2.27 openat64 F
++GLIBC_2.27 opendir F
++GLIBC_2.27 openlog F
++GLIBC_2.27 optarg D 0x4
++GLIBC_2.27 opterr D 0x4
++GLIBC_2.27 optind D 0x4
++GLIBC_2.27 optopt D 0x4
++GLIBC_2.27 parse_printf_format F
++GLIBC_2.27 passwd2des F
++GLIBC_2.27 pathconf F
++GLIBC_2.27 pause F
++GLIBC_2.27 pclose F
++GLIBC_2.27 perror F
++GLIBC_2.27 personality F
++GLIBC_2.27 pipe F
++GLIBC_2.27 pipe2 F
++GLIBC_2.27 pivot_root F
++GLIBC_2.27 pkey_alloc F
++GLIBC_2.27 pkey_free F
++GLIBC_2.27 pkey_get F
++GLIBC_2.27 pkey_mprotect F
++GLIBC_2.27 pkey_set F
++GLIBC_2.27 pmap_getmaps F
++GLIBC_2.27 pmap_getport F
++GLIBC_2.27 pmap_rmtcall F
++GLIBC_2.27 pmap_set F
++GLIBC_2.27 pmap_unset F
++GLIBC_2.27 poll F
++GLIBC_2.27 popen F
++GLIBC_2.27 posix_fadvise F
++GLIBC_2.27 posix_fadvise64 F
++GLIBC_2.27 posix_fallocate F
++GLIBC_2.27 posix_fallocate64 F
++GLIBC_2.27 posix_madvise F
++GLIBC_2.27 posix_memalign F
++GLIBC_2.27 posix_openpt F
++GLIBC_2.27 posix_spawn F
++GLIBC_2.27 posix_spawn_file_actions_addclose F
++GLIBC_2.27 posix_spawn_file_actions_adddup2 F
++GLIBC_2.27 posix_spawn_file_actions_addopen F
++GLIBC_2.27 posix_spawn_file_actions_destroy F
++GLIBC_2.27 posix_spawn_file_actions_init F
++GLIBC_2.27 posix_spawnattr_destroy F
++GLIBC_2.27 posix_spawnattr_getflags F
++GLIBC_2.27 posix_spawnattr_getpgroup F
++GLIBC_2.27 posix_spawnattr_getschedparam F
++GLIBC_2.27 posix_spawnattr_getschedpolicy F
++GLIBC_2.27 posix_spawnattr_getsigdefault F
++GLIBC_2.27 posix_spawnattr_getsigmask F
++GLIBC_2.27 posix_spawnattr_init F
++GLIBC_2.27 posix_spawnattr_setflags F
++GLIBC_2.27 posix_spawnattr_setpgroup F
++GLIBC_2.27 posix_spawnattr_setschedparam F
++GLIBC_2.27 posix_spawnattr_setschedpolicy F
++GLIBC_2.27 posix_spawnattr_setsigdefault F
++GLIBC_2.27 posix_spawnattr_setsigmask F
++GLIBC_2.27 posix_spawnp F
++GLIBC_2.27 ppoll F
++GLIBC_2.27 prctl F
++GLIBC_2.27 pread F
++GLIBC_2.27 pread64 F
++GLIBC_2.27 preadv F
++GLIBC_2.27 preadv2 F
++GLIBC_2.27 preadv64 F
++GLIBC_2.27 preadv64v2 F
++GLIBC_2.27 printf F
++GLIBC_2.27 printf_size F
++GLIBC_2.27 printf_size_info F
++GLIBC_2.27 prlimit F
++GLIBC_2.27 prlimit64 F
++GLIBC_2.27 process_vm_readv F
++GLIBC_2.27 process_vm_writev F
++GLIBC_2.27 profil F
++GLIBC_2.27 program_invocation_name D 0x4
++GLIBC_2.27 program_invocation_short_name D 0x4
++GLIBC_2.27 pselect F
++GLIBC_2.27 psiginfo F
++GLIBC_2.27 psignal F
++GLIBC_2.27 pthread_attr_destroy F
++GLIBC_2.27 pthread_attr_getdetachstate F
++GLIBC_2.27 pthread_attr_getinheritsched F
++GLIBC_2.27 pthread_attr_getschedparam F
++GLIBC_2.27 pthread_attr_getschedpolicy F
++GLIBC_2.27 pthread_attr_getscope F
++GLIBC_2.27 pthread_attr_init F
++GLIBC_2.27 pthread_attr_setdetachstate F
++GLIBC_2.27 pthread_attr_setinheritsched F
++GLIBC_2.27 pthread_attr_setschedparam F
++GLIBC_2.27 pthread_attr_setschedpolicy F
++GLIBC_2.27 pthread_attr_setscope F
++GLIBC_2.27 pthread_cond_broadcast F
++GLIBC_2.27 pthread_cond_destroy F
++GLIBC_2.27 pthread_cond_init F
++GLIBC_2.27 pthread_cond_signal F
++GLIBC_2.27 pthread_cond_timedwait F
++GLIBC_2.27 pthread_cond_wait F
++GLIBC_2.27 pthread_condattr_destroy F
++GLIBC_2.27 pthread_condattr_init F
++GLIBC_2.27 pthread_equal F
++GLIBC_2.27 pthread_exit F
++GLIBC_2.27 pthread_getschedparam F
++GLIBC_2.27 pthread_mutex_destroy F
++GLIBC_2.27 pthread_mutex_init F
++GLIBC_2.27 pthread_mutex_lock F
++GLIBC_2.27 pthread_mutex_unlock F
++GLIBC_2.27 pthread_self F
++GLIBC_2.27 pthread_setcancelstate F
++GLIBC_2.27 pthread_setcanceltype F
++GLIBC_2.27 pthread_setschedparam F
++GLIBC_2.27 ptrace F
++GLIBC_2.27 ptsname F
++GLIBC_2.27 ptsname_r F
++GLIBC_2.27 putc F
++GLIBC_2.27 putc_unlocked F
++GLIBC_2.27 putchar F
++GLIBC_2.27 putchar_unlocked F
++GLIBC_2.27 putenv F
++GLIBC_2.27 putgrent F
++GLIBC_2.27 putmsg F
++GLIBC_2.27 putpmsg F
++GLIBC_2.27 putpwent F
++GLIBC_2.27 puts F
++GLIBC_2.27 putsgent F
++GLIBC_2.27 putspent F
++GLIBC_2.27 pututline F
++GLIBC_2.27 pututxline F
++GLIBC_2.27 putw F
++GLIBC_2.27 putwc F
++GLIBC_2.27 putwc_unlocked F
++GLIBC_2.27 putwchar F
++GLIBC_2.27 putwchar_unlocked F
++GLIBC_2.27 pvalloc F
++GLIBC_2.27 pwrite F
++GLIBC_2.27 pwrite64 F
++GLIBC_2.27 pwritev F
++GLIBC_2.27 pwritev2 F
++GLIBC_2.27 pwritev64 F
++GLIBC_2.27 pwritev64v2 F
++GLIBC_2.27 qecvt F
++GLIBC_2.27 qecvt_r F
++GLIBC_2.27 qfcvt F
++GLIBC_2.27 qfcvt_r F
++GLIBC_2.27 qgcvt F
++GLIBC_2.27 qsort F
++GLIBC_2.27 qsort_r F
++GLIBC_2.27 quick_exit F
++GLIBC_2.27 quotactl F
++GLIBC_2.27 raise F
++GLIBC_2.27 rand F
++GLIBC_2.27 rand_r F
++GLIBC_2.27 random F
++GLIBC_2.27 random_r F
++GLIBC_2.27 rawmemchr F
++GLIBC_2.27 rcmd F
++GLIBC_2.27 rcmd_af F
++GLIBC_2.27 re_comp F
++GLIBC_2.27 re_compile_fastmap F
++GLIBC_2.27 re_compile_pattern F
++GLIBC_2.27 re_exec F
++GLIBC_2.27 re_match F
++GLIBC_2.27 re_match_2 F
++GLIBC_2.27 re_search F
++GLIBC_2.27 re_search_2 F
++GLIBC_2.27 re_set_registers F
++GLIBC_2.27 re_set_syntax F
++GLIBC_2.27 re_syntax_options D 0x4
++GLIBC_2.27 read F
++GLIBC_2.27 readahead F
++GLIBC_2.27 readdir F
++GLIBC_2.27 readdir64 F
++GLIBC_2.27 readdir64_r F
++GLIBC_2.27 readdir_r F
++GLIBC_2.27 readlink F
++GLIBC_2.27 readlinkat F
++GLIBC_2.27 readv F
++GLIBC_2.27 realloc F
++GLIBC_2.27 reallocarray F
++GLIBC_2.27 realpath F
++GLIBC_2.27 reboot F
++GLIBC_2.27 recv F
++GLIBC_2.27 recvfrom F
++GLIBC_2.27 recvmmsg F
++GLIBC_2.27 recvmsg F
++GLIBC_2.27 regcomp F
++GLIBC_2.27 regerror F
++GLIBC_2.27 regexec F
++GLIBC_2.27 regfree F
++GLIBC_2.27 register_printf_function F
++GLIBC_2.27 register_printf_modifier F
++GLIBC_2.27 register_printf_specifier F
++GLIBC_2.27 register_printf_type F
++GLIBC_2.27 registerrpc F
++GLIBC_2.27 remap_file_pages F
++GLIBC_2.27 remove F
++GLIBC_2.27 removexattr F
++GLIBC_2.27 remque F
++GLIBC_2.27 rename F
++GLIBC_2.27 renameat F
++GLIBC_2.27 revoke F
++GLIBC_2.27 rewind F
++GLIBC_2.27 rewinddir F
++GLIBC_2.27 rexec F
++GLIBC_2.27 rexec_af F
++GLIBC_2.27 rexecoptions D 0x4
++GLIBC_2.27 rindex F
++GLIBC_2.27 rmdir F
++GLIBC_2.27 rpc_createerr D 0x10
++GLIBC_2.27 rpmatch F
++GLIBC_2.27 rresvport F
++GLIBC_2.27 rresvport_af F
++GLIBC_2.27 rtime F
++GLIBC_2.27 ruserok F
++GLIBC_2.27 ruserok_af F
++GLIBC_2.27 ruserpass F
++GLIBC_2.27 sbrk F
++GLIBC_2.27 scalbn F
++GLIBC_2.27 scalbnf F
++GLIBC_2.27 scalbnl F
++GLIBC_2.27 scandir F
++GLIBC_2.27 scandir64 F
++GLIBC_2.27 scandirat F
++GLIBC_2.27 scandirat64 F
++GLIBC_2.27 scanf F
++GLIBC_2.27 sched_get_priority_max F
++GLIBC_2.27 sched_get_priority_min F
++GLIBC_2.27 sched_getaffinity F
++GLIBC_2.27 sched_getcpu F
++GLIBC_2.27 sched_getparam F
++GLIBC_2.27 sched_getscheduler F
++GLIBC_2.27 sched_rr_get_interval F
++GLIBC_2.27 sched_setaffinity F
++GLIBC_2.27 sched_setparam F
++GLIBC_2.27 sched_setscheduler F
++GLIBC_2.27 sched_yield F
++GLIBC_2.27 secure_getenv F
++GLIBC_2.27 seed48 F
++GLIBC_2.27 seed48_r F
++GLIBC_2.27 seekdir F
++GLIBC_2.27 select F
++GLIBC_2.27 semctl F
++GLIBC_2.27 semget F
++GLIBC_2.27 semop F
++GLIBC_2.27 semtimedop F
++GLIBC_2.27 send F
++GLIBC_2.27 sendfile F
++GLIBC_2.27 sendfile64 F
++GLIBC_2.27 sendmmsg F
++GLIBC_2.27 sendmsg F
++GLIBC_2.27 sendto F
++GLIBC_2.27 setaliasent F
++GLIBC_2.27 setbuf F
++GLIBC_2.27 setbuffer F
++GLIBC_2.27 setcontext F
++GLIBC_2.27 setdomainname F
++GLIBC_2.27 setegid F
++GLIBC_2.27 setenv F
++GLIBC_2.27 seteuid F
++GLIBC_2.27 setfsent F
++GLIBC_2.27 setfsgid F
++GLIBC_2.27 setfsuid F
++GLIBC_2.27 setgid F
++GLIBC_2.27 setgrent F
++GLIBC_2.27 setgroups F
++GLIBC_2.27 sethostent F
++GLIBC_2.27 sethostid F
++GLIBC_2.27 sethostname F
++GLIBC_2.27 setipv4sourcefilter F
++GLIBC_2.27 setitimer F
++GLIBC_2.27 setjmp F
++GLIBC_2.27 setlinebuf F
++GLIBC_2.27 setlocale F
++GLIBC_2.27 setlogin F
++GLIBC_2.27 setlogmask F
++GLIBC_2.27 setmntent F
++GLIBC_2.27 setnetent F
++GLIBC_2.27 setnetgrent F
++GLIBC_2.27 setns F
++GLIBC_2.27 setpgid F
++GLIBC_2.27 setpgrp F
++GLIBC_2.27 setpriority F
++GLIBC_2.27 setprotoent F
++GLIBC_2.27 setpwent F
++GLIBC_2.27 setregid F
++GLIBC_2.27 setresgid F
++GLIBC_2.27 setresuid F
++GLIBC_2.27 setreuid F
++GLIBC_2.27 setrlimit F
++GLIBC_2.27 setrlimit64 F
++GLIBC_2.27 setrpcent F
++GLIBC_2.27 setservent F
++GLIBC_2.27 setsgent F
++GLIBC_2.27 setsid F
++GLIBC_2.27 setsockopt F
++GLIBC_2.27 setsourcefilter F
++GLIBC_2.27 setspent F
++GLIBC_2.27 setstate F
++GLIBC_2.27 setstate_r F
++GLIBC_2.27 settimeofday F
++GLIBC_2.27 setttyent F
++GLIBC_2.27 setuid F
++GLIBC_2.27 setusershell F
++GLIBC_2.27 setutent F
++GLIBC_2.27 setutxent F
++GLIBC_2.27 setvbuf F
++GLIBC_2.27 setxattr F
++GLIBC_2.27 sgetsgent F
++GLIBC_2.27 sgetsgent_r F
++GLIBC_2.27 sgetspent F
++GLIBC_2.27 sgetspent_r F
++GLIBC_2.27 shmat F
++GLIBC_2.27 shmctl F
++GLIBC_2.27 shmdt F
++GLIBC_2.27 shmget F
++GLIBC_2.27 shutdown F
++GLIBC_2.27 sigaction F
++GLIBC_2.27 sigaddset F
++GLIBC_2.27 sigaltstack F
++GLIBC_2.27 sigandset F
++GLIBC_2.27 sigblock F
++GLIBC_2.27 sigdelset F
++GLIBC_2.27 sigemptyset F
++GLIBC_2.27 sigfillset F
++GLIBC_2.27 siggetmask F
++GLIBC_2.27 sighold F
++GLIBC_2.27 sigignore F
++GLIBC_2.27 siginterrupt F
++GLIBC_2.27 sigisemptyset F
++GLIBC_2.27 sigismember F
++GLIBC_2.27 siglongjmp F
++GLIBC_2.27 signal F
++GLIBC_2.27 signalfd F
++GLIBC_2.27 sigorset F
++GLIBC_2.27 sigpause F
++GLIBC_2.27 sigpending F
++GLIBC_2.27 sigprocmask F
++GLIBC_2.27 sigqueue F
++GLIBC_2.27 sigrelse F
++GLIBC_2.27 sigreturn F
++GLIBC_2.27 sigset F
++GLIBC_2.27 sigsetmask F
++GLIBC_2.27 sigstack F
++GLIBC_2.27 sigsuspend F
++GLIBC_2.27 sigtimedwait F
++GLIBC_2.27 sigwait F
++GLIBC_2.27 sigwaitinfo F
++GLIBC_2.27 sleep F
++GLIBC_2.27 snprintf F
++GLIBC_2.27 sockatmark F
++GLIBC_2.27 socket F
++GLIBC_2.27 socketpair F
++GLIBC_2.27 splice F
++GLIBC_2.27 sprintf F
++GLIBC_2.27 sprofil F
++GLIBC_2.27 srand F
++GLIBC_2.27 srand48 F
++GLIBC_2.27 srand48_r F
++GLIBC_2.27 srandom F
++GLIBC_2.27 srandom_r F
++GLIBC_2.27 sscanf F
++GLIBC_2.27 ssignal F
++GLIBC_2.27 sstk F
++GLIBC_2.27 statfs F
++GLIBC_2.27 statfs64 F
++GLIBC_2.27 statvfs F
++GLIBC_2.27 statvfs64 F
++GLIBC_2.27 stderr D 0x4
++GLIBC_2.27 stdin D 0x4
++GLIBC_2.27 stdout D 0x4
++GLIBC_2.27 stime F
++GLIBC_2.27 stpcpy F
++GLIBC_2.27 stpncpy F
++GLIBC_2.27 strcasecmp F
++GLIBC_2.27 strcasecmp_l F
++GLIBC_2.27 strcasestr F
++GLIBC_2.27 strcat F
++GLIBC_2.27 strchr F
++GLIBC_2.27 strchrnul F
++GLIBC_2.27 strcmp F
++GLIBC_2.27 strcoll F
++GLIBC_2.27 strcoll_l F
++GLIBC_2.27 strcpy F
++GLIBC_2.27 strcspn F
++GLIBC_2.27 strdup F
++GLIBC_2.27 strerror F
++GLIBC_2.27 strerror_l F
++GLIBC_2.27 strerror_r F
++GLIBC_2.27 strfmon F
++GLIBC_2.27 strfmon_l F
++GLIBC_2.27 strfromd F
++GLIBC_2.27 strfromf F
++GLIBC_2.27 strfromf32 F
++GLIBC_2.27 strfromf32x F
++GLIBC_2.27 strfromf64 F
++GLIBC_2.27 strfroml F
++GLIBC_2.27 strfry F
++GLIBC_2.27 strftime F
++GLIBC_2.27 strftime_l F
++GLIBC_2.27 strlen F
++GLIBC_2.27 strncasecmp F
++GLIBC_2.27 strncasecmp_l F
++GLIBC_2.27 strncat F
++GLIBC_2.27 strncmp F
++GLIBC_2.27 strncpy F
++GLIBC_2.27 strndup F
++GLIBC_2.27 strnlen F
++GLIBC_2.27 strpbrk F
++GLIBC_2.27 strptime F
++GLIBC_2.27 strptime_l F
++GLIBC_2.27 strrchr F
++GLIBC_2.27 strsep F
++GLIBC_2.27 strsignal F
++GLIBC_2.27 strspn F
++GLIBC_2.27 strstr F
++GLIBC_2.27 strtod F
++GLIBC_2.27 strtod_l F
++GLIBC_2.27 strtof F
++GLIBC_2.27 strtof32 F
++GLIBC_2.27 strtof32_l F
++GLIBC_2.27 strtof32x F
++GLIBC_2.27 strtof32x_l F
++GLIBC_2.27 strtof64 F
++GLIBC_2.27 strtof64_l F
++GLIBC_2.27 strtof_l F
++GLIBC_2.27 strtoimax F
++GLIBC_2.27 strtok F
++GLIBC_2.27 strtok_r F
++GLIBC_2.27 strtol F
++GLIBC_2.27 strtol_l F
++GLIBC_2.27 strtold F
++GLIBC_2.27 strtold_l F
++GLIBC_2.27 strtoll F
++GLIBC_2.27 strtoll_l F
++GLIBC_2.27 strtoq F
++GLIBC_2.27 strtoul F
++GLIBC_2.27 strtoul_l F
++GLIBC_2.27 strtoull F
++GLIBC_2.27 strtoull_l F
++GLIBC_2.27 strtoumax F
++GLIBC_2.27 strtouq F
++GLIBC_2.27 strverscmp F
++GLIBC_2.27 strxfrm F
++GLIBC_2.27 strxfrm_l F
++GLIBC_2.27 stty F
++GLIBC_2.27 svc_exit F
++GLIBC_2.27 svc_fdset D 0x80
++GLIBC_2.27 svc_getreq F
++GLIBC_2.27 svc_getreq_common F
++GLIBC_2.27 svc_getreq_poll F
++GLIBC_2.27 svc_getreqset F
++GLIBC_2.27 svc_max_pollfd D 0x4
++GLIBC_2.27 svc_pollfd D 0x4
++GLIBC_2.27 svc_register F
++GLIBC_2.27 svc_run F
++GLIBC_2.27 svc_sendreply F
++GLIBC_2.27 svc_unregister F
++GLIBC_2.27 svcauthdes_stats D 0xc
++GLIBC_2.27 svcerr_auth F
++GLIBC_2.27 svcerr_decode F
++GLIBC_2.27 svcerr_noproc F
++GLIBC_2.27 svcerr_noprog F
++GLIBC_2.27 svcerr_progvers F
++GLIBC_2.27 svcerr_systemerr F
++GLIBC_2.27 svcerr_weakauth F
++GLIBC_2.27 svcfd_create F
++GLIBC_2.27 svcraw_create F
++GLIBC_2.27 svctcp_create F
++GLIBC_2.27 svcudp_bufcreate F
++GLIBC_2.27 svcudp_create F
++GLIBC_2.27 svcudp_enablecache F
++GLIBC_2.27 svcunix_create F
++GLIBC_2.27 svcunixfd_create F
++GLIBC_2.27 swab F
++GLIBC_2.27 swapcontext F
++GLIBC_2.27 swapoff F
++GLIBC_2.27 swapon F
++GLIBC_2.27 swprintf F
++GLIBC_2.27 swscanf F
++GLIBC_2.27 symlink F
++GLIBC_2.27 symlinkat F
++GLIBC_2.27 sync F
++GLIBC_2.27 sync_file_range F
++GLIBC_2.27 syncfs F
++GLIBC_2.27 sys_errlist D 0x21c
++GLIBC_2.27 sys_nerr D 0x4
++GLIBC_2.27 sys_sigabbrev D 0x104
++GLIBC_2.27 sys_siglist D 0x104
++GLIBC_2.27 syscall F
++GLIBC_2.27 sysconf F
++GLIBC_2.27 sysctl F
++GLIBC_2.27 sysinfo F
++GLIBC_2.27 syslog F
++GLIBC_2.27 system F
++GLIBC_2.27 sysv_signal F
++GLIBC_2.27 tcdrain F
++GLIBC_2.27 tcflow F
++GLIBC_2.27 tcflush F
++GLIBC_2.27 tcgetattr F
++GLIBC_2.27 tcgetpgrp F
++GLIBC_2.27 tcgetsid F
++GLIBC_2.27 tcsendbreak F
++GLIBC_2.27 tcsetattr F
++GLIBC_2.27 tcsetpgrp F
++GLIBC_2.27 tdelete F
++GLIBC_2.27 tdestroy F
++GLIBC_2.27 tee F
++GLIBC_2.27 telldir F
++GLIBC_2.27 tempnam F
++GLIBC_2.27 textdomain F
++GLIBC_2.27 tfind F
++GLIBC_2.27 time F
++GLIBC_2.27 timegm F
++GLIBC_2.27 timelocal F
++GLIBC_2.27 timerfd_create F
++GLIBC_2.27 timerfd_gettime F
++GLIBC_2.27 timerfd_settime F
++GLIBC_2.27 times F
++GLIBC_2.27 timespec_get F
++GLIBC_2.27 timezone D 0x4
++GLIBC_2.27 tmpfile F
++GLIBC_2.27 tmpfile64 F
++GLIBC_2.27 tmpnam F
++GLIBC_2.27 tmpnam_r F
++GLIBC_2.27 toascii F
++GLIBC_2.27 tolower F
++GLIBC_2.27 tolower_l F
++GLIBC_2.27 toupper F
++GLIBC_2.27 toupper_l F
++GLIBC_2.27 towctrans F
++GLIBC_2.27 towctrans_l F
++GLIBC_2.27 towlower F
++GLIBC_2.27 towlower_l F
++GLIBC_2.27 towupper F
++GLIBC_2.27 towupper_l F
++GLIBC_2.27 tr_break F
++GLIBC_2.27 truncate F
++GLIBC_2.27 truncate64 F
++GLIBC_2.27 tsearch F
++GLIBC_2.27 ttyname F
++GLIBC_2.27 ttyname_r F
++GLIBC_2.27 ttyslot F
++GLIBC_2.27 twalk F
++GLIBC_2.27 tzname D 0x8
++GLIBC_2.27 tzset F
++GLIBC_2.27 ualarm F
++GLIBC_2.27 ulckpwdf F
++GLIBC_2.27 ulimit F
++GLIBC_2.27 umask F
++GLIBC_2.27 umount F
++GLIBC_2.27 umount2 F
++GLIBC_2.27 uname F
++GLIBC_2.27 ungetc F
++GLIBC_2.27 ungetwc F
++GLIBC_2.27 unlink F
++GLIBC_2.27 unlinkat F
++GLIBC_2.27 unlockpt F
++GLIBC_2.27 unsetenv F
++GLIBC_2.27 unshare F
++GLIBC_2.27 updwtmp F
++GLIBC_2.27 updwtmpx F
++GLIBC_2.27 uselocale F
++GLIBC_2.27 user2netname F
++GLIBC_2.27 usleep F
++GLIBC_2.27 ustat F
++GLIBC_2.27 utime F
++GLIBC_2.27 utimensat F
++GLIBC_2.27 utimes F
++GLIBC_2.27 utmpname F
++GLIBC_2.27 utmpxname F
++GLIBC_2.27 valloc F
++GLIBC_2.27 vasprintf F
++GLIBC_2.27 vdprintf F
++GLIBC_2.27 verr F
++GLIBC_2.27 verrx F
++GLIBC_2.27 versionsort F
++GLIBC_2.27 versionsort64 F
++GLIBC_2.27 vfork F
++GLIBC_2.27 vfprintf F
++GLIBC_2.27 vfscanf F
++GLIBC_2.27 vfwprintf F
++GLIBC_2.27 vfwscanf F
++GLIBC_2.27 vhangup F
++GLIBC_2.27 vlimit F
++GLIBC_2.27 vmsplice F
++GLIBC_2.27 vprintf F
++GLIBC_2.27 vscanf F
++GLIBC_2.27 vsnprintf F
++GLIBC_2.27 vsprintf F
++GLIBC_2.27 vsscanf F
++GLIBC_2.27 vswprintf F
++GLIBC_2.27 vswscanf F
++GLIBC_2.27 vsyslog F
++GLIBC_2.27 vtimes F
++GLIBC_2.27 vwarn F
++GLIBC_2.27 vwarnx F
++GLIBC_2.27 vwprintf F
++GLIBC_2.27 vwscanf F
++GLIBC_2.27 wait F
++GLIBC_2.27 wait3 F
++GLIBC_2.27 wait4 F
++GLIBC_2.27 waitid F
++GLIBC_2.27 waitpid F
++GLIBC_2.27 warn F
++GLIBC_2.27 warnx F
++GLIBC_2.27 wcpcpy F
++GLIBC_2.27 wcpncpy F
++GLIBC_2.27 wcrtomb F
++GLIBC_2.27 wcscasecmp F
++GLIBC_2.27 wcscasecmp_l F
++GLIBC_2.27 wcscat F
++GLIBC_2.27 wcschr F
++GLIBC_2.27 wcschrnul F
++GLIBC_2.27 wcscmp F
++GLIBC_2.27 wcscoll F
++GLIBC_2.27 wcscoll_l F
++GLIBC_2.27 wcscpy F
++GLIBC_2.27 wcscspn F
++GLIBC_2.27 wcsdup F
++GLIBC_2.27 wcsftime F
++GLIBC_2.27 wcsftime_l F
++GLIBC_2.27 wcslen F
++GLIBC_2.27 wcsncasecmp F
++GLIBC_2.27 wcsncasecmp_l F
++GLIBC_2.27 wcsncat F
++GLIBC_2.27 wcsncmp F
++GLIBC_2.27 wcsncpy F
++GLIBC_2.27 wcsnlen F
++GLIBC_2.27 wcsnrtombs F
++GLIBC_2.27 wcspbrk F
++GLIBC_2.27 wcsrchr F
++GLIBC_2.27 wcsrtombs F
++GLIBC_2.27 wcsspn F
++GLIBC_2.27 wcsstr F
++GLIBC_2.27 wcstod F
++GLIBC_2.27 wcstod_l F
++GLIBC_2.27 wcstof F
++GLIBC_2.27 wcstof32 F
++GLIBC_2.27 wcstof32_l F
++GLIBC_2.27 wcstof32x F
++GLIBC_2.27 wcstof32x_l F
++GLIBC_2.27 wcstof64 F
++GLIBC_2.27 wcstof64_l F
++GLIBC_2.27 wcstof_l F
++GLIBC_2.27 wcstoimax F
++GLIBC_2.27 wcstok F
++GLIBC_2.27 wcstol F
++GLIBC_2.27 wcstol_l F
++GLIBC_2.27 wcstold F
++GLIBC_2.27 wcstold_l F
++GLIBC_2.27 wcstoll F
++GLIBC_2.27 wcstoll_l F
++GLIBC_2.27 wcstombs F
++GLIBC_2.27 wcstoq F
++GLIBC_2.27 wcstoul F
++GLIBC_2.27 wcstoul_l F
++GLIBC_2.27 wcstoull F
++GLIBC_2.27 wcstoull_l F
++GLIBC_2.27 wcstoumax F
++GLIBC_2.27 wcstouq F
++GLIBC_2.27 wcswcs F
++GLIBC_2.27 wcswidth F
++GLIBC_2.27 wcsxfrm F
++GLIBC_2.27 wcsxfrm_l F
++GLIBC_2.27 wctob F
++GLIBC_2.27 wctomb F
++GLIBC_2.27 wctrans F
++GLIBC_2.27 wctrans_l F
++GLIBC_2.27 wctype F
++GLIBC_2.27 wctype_l F
++GLIBC_2.27 wcwidth F
++GLIBC_2.27 wmemchr F
++GLIBC_2.27 wmemcmp F
++GLIBC_2.27 wmemcpy F
++GLIBC_2.27 wmemmove F
++GLIBC_2.27 wmempcpy F
++GLIBC_2.27 wmemset F
++GLIBC_2.27 wordexp F
++GLIBC_2.27 wordfree F
++GLIBC_2.27 wprintf F
++GLIBC_2.27 write F
++GLIBC_2.27 writev F
++GLIBC_2.27 wscanf F
++GLIBC_2.27 xdecrypt F
++GLIBC_2.27 xdr_accepted_reply F
++GLIBC_2.27 xdr_array F
++GLIBC_2.27 xdr_authdes_cred F
++GLIBC_2.27 xdr_authdes_verf F
++GLIBC_2.27 xdr_authunix_parms F
++GLIBC_2.27 xdr_bool F
++GLIBC_2.27 xdr_bytes F
++GLIBC_2.27 xdr_callhdr F
++GLIBC_2.27 xdr_callmsg F
++GLIBC_2.27 xdr_char F
++GLIBC_2.27 xdr_cryptkeyarg F
++GLIBC_2.27 xdr_cryptkeyarg2 F
++GLIBC_2.27 xdr_cryptkeyres F
++GLIBC_2.27 xdr_des_block F
++GLIBC_2.27 xdr_double F
++GLIBC_2.27 xdr_enum F
++GLIBC_2.27 xdr_float F
++GLIBC_2.27 xdr_free F
++GLIBC_2.27 xdr_getcredres F
++GLIBC_2.27 xdr_hyper F
++GLIBC_2.27 xdr_int F
++GLIBC_2.27 xdr_int16_t F
++GLIBC_2.27 xdr_int32_t F
++GLIBC_2.27 xdr_int64_t F
++GLIBC_2.27 xdr_int8_t F
++GLIBC_2.27 xdr_key_netstarg F
++GLIBC_2.27 xdr_key_netstres F
++GLIBC_2.27 xdr_keybuf F
++GLIBC_2.27 xdr_keystatus F
++GLIBC_2.27 xdr_long F
++GLIBC_2.27 xdr_longlong_t F
++GLIBC_2.27 xdr_netnamestr F
++GLIBC_2.27 xdr_netobj F
++GLIBC_2.27 xdr_opaque F
++GLIBC_2.27 xdr_opaque_auth F
++GLIBC_2.27 xdr_pmap F
++GLIBC_2.27 xdr_pmaplist F
++GLIBC_2.27 xdr_pointer F
++GLIBC_2.27 xdr_quad_t F
++GLIBC_2.27 xdr_reference F
++GLIBC_2.27 xdr_rejected_reply F
++GLIBC_2.27 xdr_replymsg F
++GLIBC_2.27 xdr_rmtcall_args F
++GLIBC_2.27 xdr_rmtcallres F
++GLIBC_2.27 xdr_short F
++GLIBC_2.27 xdr_sizeof F
++GLIBC_2.27 xdr_string F
++GLIBC_2.27 xdr_u_char F
++GLIBC_2.27 xdr_u_hyper F
++GLIBC_2.27 xdr_u_int F
++GLIBC_2.27 xdr_u_long F
++GLIBC_2.27 xdr_u_longlong_t F
++GLIBC_2.27 xdr_u_quad_t F
++GLIBC_2.27 xdr_u_short F
++GLIBC_2.27 xdr_uint16_t F
++GLIBC_2.27 xdr_uint32_t F
++GLIBC_2.27 xdr_uint64_t F
++GLIBC_2.27 xdr_uint8_t F
++GLIBC_2.27 xdr_union F
++GLIBC_2.27 xdr_unixcred F
++GLIBC_2.27 xdr_vector F
++GLIBC_2.27 xdr_void F
++GLIBC_2.27 xdr_wrapstring F
++GLIBC_2.27 xdrmem_create F
++GLIBC_2.27 xdrrec_create F
++GLIBC_2.27 xdrrec_endofrecord F
++GLIBC_2.27 xdrrec_eof F
++GLIBC_2.27 xdrrec_skiprecord F
++GLIBC_2.27 xdrstdio_create F
++GLIBC_2.27 xencrypt F
++GLIBC_2.27 xprt_register F
++GLIBC_2.27 xprt_unregister F
++GLIBC_2.28 fcntl F
++GLIBC_2.28 fcntl64 F
++GLIBC_2.28 renameat2 F
++GLIBC_2.28 statx F
++GLIBC_2.28 thrd_current F
++GLIBC_2.28 thrd_equal F
++GLIBC_2.28 thrd_sleep F
++GLIBC_2.28 thrd_yield F
+diff --git a/sysdeps/unix/sysv/linux/arc/libcrypt.abilist b/sysdeps/unix/sysv/linux/arc/libcrypt.abilist
+new file mode 100644
+index 000000000000..9484dca79ea6
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libcrypt.abilist
+@@ -0,0 +1,7 @@
++GLIBC_2.27 crypt F
++GLIBC_2.27 crypt_r F
++GLIBC_2.27 encrypt F
++GLIBC_2.27 encrypt_r F
++GLIBC_2.27 fcrypt F
++GLIBC_2.27 setkey F
++GLIBC_2.27 setkey_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 000000000000..16adcae553d8
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libdl.abilist
+@@ -0,0 +1,9 @@
++GLIBC_2.27 dladdr F
++GLIBC_2.27 dladdr1 F
++GLIBC_2.27 dlclose F
++GLIBC_2.27 dlerror F
++GLIBC_2.27 dlinfo F
++GLIBC_2.27 dlmopen F
++GLIBC_2.27 dlopen F
++GLIBC_2.27 dlsym F
++GLIBC_2.27 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 000000000000..52b3db50a2bb
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libm.abilist
+@@ -0,0 +1,753 @@
++GLIBC_2.27 __acos_finite F
++GLIBC_2.27 __acosf_finite F
++GLIBC_2.27 __acosh_finite F
++GLIBC_2.27 __acoshf_finite F
++GLIBC_2.27 __asin_finite F
++GLIBC_2.27 __asinf_finite F
++GLIBC_2.27 __atan2_finite F
++GLIBC_2.27 __atan2f_finite F
++GLIBC_2.27 __atanh_finite F
++GLIBC_2.27 __atanhf_finite F
++GLIBC_2.27 __clog10 F
++GLIBC_2.27 __clog10f F
++GLIBC_2.27 __clog10l F
++GLIBC_2.27 __cosh_finite F
++GLIBC_2.27 __coshf_finite F
++GLIBC_2.27 __exp10_finite F
++GLIBC_2.27 __exp10f_finite F
++GLIBC_2.27 __exp2_finite F
++GLIBC_2.27 __exp2f_finite F
++GLIBC_2.27 __exp_finite F
++GLIBC_2.27 __expf_finite F
++GLIBC_2.27 __finite F
++GLIBC_2.27 __finitef F
++GLIBC_2.27 __fmod_finite F
++GLIBC_2.27 __fmodf_finite F
++GLIBC_2.27 __fpclassify F
++GLIBC_2.27 __fpclassifyf F
++GLIBC_2.27 __gamma_r_finite F
++GLIBC_2.27 __gammaf_r_finite F
++GLIBC_2.27 __hypot_finite F
++GLIBC_2.27 __hypotf_finite F
++GLIBC_2.27 __iseqsig F
++GLIBC_2.27 __iseqsigf F
++GLIBC_2.27 __issignaling F
++GLIBC_2.27 __issignalingf F
++GLIBC_2.27 __j0_finite F
++GLIBC_2.27 __j0f_finite F
++GLIBC_2.27 __j1_finite F
++GLIBC_2.27 __j1f_finite F
++GLIBC_2.27 __jn_finite F
++GLIBC_2.27 __jnf_finite F
++GLIBC_2.27 __lgamma_r_finite F
++GLIBC_2.27 __lgammaf_r_finite F
++GLIBC_2.27 __log10_finite F
++GLIBC_2.27 __log10f_finite F
++GLIBC_2.27 __log2_finite F
++GLIBC_2.27 __log2f_finite F
++GLIBC_2.27 __log_finite F
++GLIBC_2.27 __logf_finite F
++GLIBC_2.27 __pow_finite F
++GLIBC_2.27 __powf_finite F
++GLIBC_2.27 __remainder_finite F
++GLIBC_2.27 __remainderf_finite F
++GLIBC_2.27 __scalb_finite F
++GLIBC_2.27 __scalbf_finite F
++GLIBC_2.27 __signbit F
++GLIBC_2.27 __signbitf F
++GLIBC_2.27 __signgam D 0x4
++GLIBC_2.27 __sinh_finite F
++GLIBC_2.27 __sinhf_finite F
++GLIBC_2.27 __sqrt_finite F
++GLIBC_2.27 __sqrtf_finite F
++GLIBC_2.27 __y0_finite F
++GLIBC_2.27 __y0f_finite F
++GLIBC_2.27 __y1_finite F
++GLIBC_2.27 __y1f_finite F
++GLIBC_2.27 __yn_finite F
++GLIBC_2.27 __ynf_finite F
++GLIBC_2.27 acos F
++GLIBC_2.27 acosf F
++GLIBC_2.27 acosf32 F
++GLIBC_2.27 acosf32x F
++GLIBC_2.27 acosf64 F
++GLIBC_2.27 acosh F
++GLIBC_2.27 acoshf F
++GLIBC_2.27 acoshf32 F
++GLIBC_2.27 acoshf32x F
++GLIBC_2.27 acoshf64 F
++GLIBC_2.27 acoshl F
++GLIBC_2.27 acosl F
++GLIBC_2.27 asin F
++GLIBC_2.27 asinf F
++GLIBC_2.27 asinf32 F
++GLIBC_2.27 asinf32x F
++GLIBC_2.27 asinf64 F
++GLIBC_2.27 asinh F
++GLIBC_2.27 asinhf F
++GLIBC_2.27 asinhf32 F
++GLIBC_2.27 asinhf32x F
++GLIBC_2.27 asinhf64 F
++GLIBC_2.27 asinhl F
++GLIBC_2.27 asinl F
++GLIBC_2.27 atan F
++GLIBC_2.27 atan2 F
++GLIBC_2.27 atan2f F
++GLIBC_2.27 atan2f32 F
++GLIBC_2.27 atan2f32x F
++GLIBC_2.27 atan2f64 F
++GLIBC_2.27 atan2l F
++GLIBC_2.27 atanf F
++GLIBC_2.27 atanf32 F
++GLIBC_2.27 atanf32x F
++GLIBC_2.27 atanf64 F
++GLIBC_2.27 atanh F
++GLIBC_2.27 atanhf F
++GLIBC_2.27 atanhf32 F
++GLIBC_2.27 atanhf32x F
++GLIBC_2.27 atanhf64 F
++GLIBC_2.27 atanhl F
++GLIBC_2.27 atanl F
++GLIBC_2.27 cabs F
++GLIBC_2.27 cabsf F
++GLIBC_2.27 cabsf32 F
++GLIBC_2.27 cabsf32x F
++GLIBC_2.27 cabsf64 F
++GLIBC_2.27 cabsl F
++GLIBC_2.27 cacos F
++GLIBC_2.27 cacosf F
++GLIBC_2.27 cacosf32 F
++GLIBC_2.27 cacosf32x F
++GLIBC_2.27 cacosf64 F
++GLIBC_2.27 cacosh F
++GLIBC_2.27 cacoshf F
++GLIBC_2.27 cacoshf32 F
++GLIBC_2.27 cacoshf32x F
++GLIBC_2.27 cacoshf64 F
++GLIBC_2.27 cacoshl F
++GLIBC_2.27 cacosl F
++GLIBC_2.27 canonicalize F
++GLIBC_2.27 canonicalizef F
++GLIBC_2.27 canonicalizef32 F
++GLIBC_2.27 canonicalizef32x F
++GLIBC_2.27 canonicalizef64 F
++GLIBC_2.27 canonicalizel F
++GLIBC_2.27 carg F
++GLIBC_2.27 cargf F
++GLIBC_2.27 cargf32 F
++GLIBC_2.27 cargf32x F
++GLIBC_2.27 cargf64 F
++GLIBC_2.27 cargl F
++GLIBC_2.27 casin F
++GLIBC_2.27 casinf F
++GLIBC_2.27 casinf32 F
++GLIBC_2.27 casinf32x F
++GLIBC_2.27 casinf64 F
++GLIBC_2.27 casinh F
++GLIBC_2.27 casinhf F
++GLIBC_2.27 casinhf32 F
++GLIBC_2.27 casinhf32x F
++GLIBC_2.27 casinhf64 F
++GLIBC_2.27 casinhl F
++GLIBC_2.27 casinl F
++GLIBC_2.27 catan F
++GLIBC_2.27 catanf F
++GLIBC_2.27 catanf32 F
++GLIBC_2.27 catanf32x F
++GLIBC_2.27 catanf64 F
++GLIBC_2.27 catanh F
++GLIBC_2.27 catanhf F
++GLIBC_2.27 catanhf32 F
++GLIBC_2.27 catanhf32x F
++GLIBC_2.27 catanhf64 F
++GLIBC_2.27 catanhl F
++GLIBC_2.27 catanl F
++GLIBC_2.27 cbrt F
++GLIBC_2.27 cbrtf F
++GLIBC_2.27 cbrtf32 F
++GLIBC_2.27 cbrtf32x F
++GLIBC_2.27 cbrtf64 F
++GLIBC_2.27 cbrtl F
++GLIBC_2.27 ccos F
++GLIBC_2.27 ccosf F
++GLIBC_2.27 ccosf32 F
++GLIBC_2.27 ccosf32x F
++GLIBC_2.27 ccosf64 F
++GLIBC_2.27 ccosh F
++GLIBC_2.27 ccoshf F
++GLIBC_2.27 ccoshf32 F
++GLIBC_2.27 ccoshf32x F
++GLIBC_2.27 ccoshf64 F
++GLIBC_2.27 ccoshl F
++GLIBC_2.27 ccosl F
++GLIBC_2.27 ceil F
++GLIBC_2.27 ceilf F
++GLIBC_2.27 ceilf32 F
++GLIBC_2.27 ceilf32x F
++GLIBC_2.27 ceilf64 F
++GLIBC_2.27 ceill F
++GLIBC_2.27 cexp F
++GLIBC_2.27 cexpf F
++GLIBC_2.27 cexpf32 F
++GLIBC_2.27 cexpf32x F
++GLIBC_2.27 cexpf64 F
++GLIBC_2.27 cexpl F
++GLIBC_2.27 cimag F
++GLIBC_2.27 cimagf F
++GLIBC_2.27 cimagf32 F
++GLIBC_2.27 cimagf32x F
++GLIBC_2.27 cimagf64 F
++GLIBC_2.27 cimagl F
++GLIBC_2.27 clog F
++GLIBC_2.27 clog10 F
++GLIBC_2.27 clog10f F
++GLIBC_2.27 clog10f32 F
++GLIBC_2.27 clog10f32x F
++GLIBC_2.27 clog10f64 F
++GLIBC_2.27 clog10l F
++GLIBC_2.27 clogf F
++GLIBC_2.27 clogf32 F
++GLIBC_2.27 clogf32x F
++GLIBC_2.27 clogf64 F
++GLIBC_2.27 clogl F
++GLIBC_2.27 conj F
++GLIBC_2.27 conjf F
++GLIBC_2.27 conjf32 F
++GLIBC_2.27 conjf32x F
++GLIBC_2.27 conjf64 F
++GLIBC_2.27 conjl F
++GLIBC_2.27 copysign F
++GLIBC_2.27 copysignf F
++GLIBC_2.27 copysignf32 F
++GLIBC_2.27 copysignf32x F
++GLIBC_2.27 copysignf64 F
++GLIBC_2.27 copysignl F
++GLIBC_2.27 cos F
++GLIBC_2.27 cosf F
++GLIBC_2.27 cosf32 F
++GLIBC_2.27 cosf32x F
++GLIBC_2.27 cosf64 F
++GLIBC_2.27 cosh F
++GLIBC_2.27 coshf F
++GLIBC_2.27 coshf32 F
++GLIBC_2.27 coshf32x F
++GLIBC_2.27 coshf64 F
++GLIBC_2.27 coshl F
++GLIBC_2.27 cosl F
++GLIBC_2.27 cpow F
++GLIBC_2.27 cpowf F
++GLIBC_2.27 cpowf32 F
++GLIBC_2.27 cpowf32x F
++GLIBC_2.27 cpowf64 F
++GLIBC_2.27 cpowl F
++GLIBC_2.27 cproj F
++GLIBC_2.27 cprojf F
++GLIBC_2.27 cprojf32 F
++GLIBC_2.27 cprojf32x F
++GLIBC_2.27 cprojf64 F
++GLIBC_2.27 cprojl F
++GLIBC_2.27 creal F
++GLIBC_2.27 crealf F
++GLIBC_2.27 crealf32 F
++GLIBC_2.27 crealf32x F
++GLIBC_2.27 crealf64 F
++GLIBC_2.27 creall F
++GLIBC_2.27 csin F
++GLIBC_2.27 csinf F
++GLIBC_2.27 csinf32 F
++GLIBC_2.27 csinf32x F
++GLIBC_2.27 csinf64 F
++GLIBC_2.27 csinh F
++GLIBC_2.27 csinhf F
++GLIBC_2.27 csinhf32 F
++GLIBC_2.27 csinhf32x F
++GLIBC_2.27 csinhf64 F
++GLIBC_2.27 csinhl F
++GLIBC_2.27 csinl F
++GLIBC_2.27 csqrt F
++GLIBC_2.27 csqrtf F
++GLIBC_2.27 csqrtf32 F
++GLIBC_2.27 csqrtf32x F
++GLIBC_2.27 csqrtf64 F
++GLIBC_2.27 csqrtl F
++GLIBC_2.27 ctan F
++GLIBC_2.27 ctanf F
++GLIBC_2.27 ctanf32 F
++GLIBC_2.27 ctanf32x F
++GLIBC_2.27 ctanf64 F
++GLIBC_2.27 ctanh F
++GLIBC_2.27 ctanhf F
++GLIBC_2.27 ctanhf32 F
++GLIBC_2.27 ctanhf32x F
++GLIBC_2.27 ctanhf64 F
++GLIBC_2.27 ctanhl F
++GLIBC_2.27 ctanl F
++GLIBC_2.27 drem F
++GLIBC_2.27 dremf F
++GLIBC_2.27 dreml F
++GLIBC_2.27 erf F
++GLIBC_2.27 erfc F
++GLIBC_2.27 erfcf F
++GLIBC_2.27 erfcf32 F
++GLIBC_2.27 erfcf32x F
++GLIBC_2.27 erfcf64 F
++GLIBC_2.27 erfcl F
++GLIBC_2.27 erff F
++GLIBC_2.27 erff32 F
++GLIBC_2.27 erff32x F
++GLIBC_2.27 erff64 F
++GLIBC_2.27 erfl F
++GLIBC_2.27 exp F
++GLIBC_2.27 exp10 F
++GLIBC_2.27 exp10f F
++GLIBC_2.27 exp10f32 F
++GLIBC_2.27 exp10f32x F
++GLIBC_2.27 exp10f64 F
++GLIBC_2.27 exp10l F
++GLIBC_2.27 exp2 F
++GLIBC_2.27 exp2f F
++GLIBC_2.27 exp2f32 F
++GLIBC_2.27 exp2f32x F
++GLIBC_2.27 exp2f64 F
++GLIBC_2.27 exp2l F
++GLIBC_2.27 expf F
++GLIBC_2.27 expf32 F
++GLIBC_2.27 expf32x F
++GLIBC_2.27 expf64 F
++GLIBC_2.27 expl F
++GLIBC_2.27 expm1 F
++GLIBC_2.27 expm1f F
++GLIBC_2.27 expm1f32 F
++GLIBC_2.27 expm1f32x F
++GLIBC_2.27 expm1f64 F
++GLIBC_2.27 expm1l F
++GLIBC_2.27 fabs F
++GLIBC_2.27 fabsf F
++GLIBC_2.27 fabsf32 F
++GLIBC_2.27 fabsf32x F
++GLIBC_2.27 fabsf64 F
++GLIBC_2.27 fabsl F
++GLIBC_2.27 fdim F
++GLIBC_2.27 fdimf F
++GLIBC_2.27 fdimf32 F
++GLIBC_2.27 fdimf32x F
++GLIBC_2.27 fdimf64 F
++GLIBC_2.27 fdiml F
++GLIBC_2.27 feclearexcept F
++GLIBC_2.27 fedisableexcept F
++GLIBC_2.27 feenableexcept F
++GLIBC_2.27 fegetenv F
++GLIBC_2.27 fegetexcept F
++GLIBC_2.27 fegetexceptflag F
++GLIBC_2.27 fegetmode F
++GLIBC_2.27 fegetround F
++GLIBC_2.27 feholdexcept F
++GLIBC_2.27 feraiseexcept F
++GLIBC_2.27 fesetenv F
++GLIBC_2.27 fesetexcept F
++GLIBC_2.27 fesetexceptflag F
++GLIBC_2.27 fesetmode F
++GLIBC_2.27 fesetround F
++GLIBC_2.27 fetestexcept F
++GLIBC_2.27 fetestexceptflag F
++GLIBC_2.27 feupdateenv F
++GLIBC_2.27 finite F
++GLIBC_2.27 finitef F
++GLIBC_2.27 finitel F
++GLIBC_2.27 floor F
++GLIBC_2.27 floorf F
++GLIBC_2.27 floorf32 F
++GLIBC_2.27 floorf32x F
++GLIBC_2.27 floorf64 F
++GLIBC_2.27 floorl F
++GLIBC_2.27 fma F
++GLIBC_2.27 fmaf F
++GLIBC_2.27 fmaf32 F
++GLIBC_2.27 fmaf32x F
++GLIBC_2.27 fmaf64 F
++GLIBC_2.27 fmal F
++GLIBC_2.27 fmax F
++GLIBC_2.27 fmaxf F
++GLIBC_2.27 fmaxf32 F
++GLIBC_2.27 fmaxf32x F
++GLIBC_2.27 fmaxf64 F
++GLIBC_2.27 fmaxl F
++GLIBC_2.27 fmaxmag F
++GLIBC_2.27 fmaxmagf F
++GLIBC_2.27 fmaxmagf32 F
++GLIBC_2.27 fmaxmagf32x F
++GLIBC_2.27 fmaxmagf64 F
++GLIBC_2.27 fmaxmagl F
++GLIBC_2.27 fmin F
++GLIBC_2.27 fminf F
++GLIBC_2.27 fminf32 F
++GLIBC_2.27 fminf32x F
++GLIBC_2.27 fminf64 F
++GLIBC_2.27 fminl F
++GLIBC_2.27 fminmag F
++GLIBC_2.27 fminmagf F
++GLIBC_2.27 fminmagf32 F
++GLIBC_2.27 fminmagf32x F
++GLIBC_2.27 fminmagf64 F
++GLIBC_2.27 fminmagl F
++GLIBC_2.27 fmod F
++GLIBC_2.27 fmodf F
++GLIBC_2.27 fmodf32 F
++GLIBC_2.27 fmodf32x F
++GLIBC_2.27 fmodf64 F
++GLIBC_2.27 fmodl F
++GLIBC_2.27 frexp F
++GLIBC_2.27 frexpf F
++GLIBC_2.27 frexpf32 F
++GLIBC_2.27 frexpf32x F
++GLIBC_2.27 frexpf64 F
++GLIBC_2.27 frexpl F
++GLIBC_2.27 fromfp F
++GLIBC_2.27 fromfpf F
++GLIBC_2.27 fromfpf32 F
++GLIBC_2.27 fromfpf32x F
++GLIBC_2.27 fromfpf64 F
++GLIBC_2.27 fromfpl F
++GLIBC_2.27 fromfpx F
++GLIBC_2.27 fromfpxf F
++GLIBC_2.27 fromfpxf32 F
++GLIBC_2.27 fromfpxf32x F
++GLIBC_2.27 fromfpxf64 F
++GLIBC_2.27 fromfpxl F
++GLIBC_2.27 gamma F
++GLIBC_2.27 gammaf F
++GLIBC_2.27 gammal F
++GLIBC_2.27 getpayload F
++GLIBC_2.27 getpayloadf F
++GLIBC_2.27 getpayloadf32 F
++GLIBC_2.27 getpayloadf32x F
++GLIBC_2.27 getpayloadf64 F
++GLIBC_2.27 getpayloadl F
++GLIBC_2.27 hypot F
++GLIBC_2.27 hypotf F
++GLIBC_2.27 hypotf32 F
++GLIBC_2.27 hypotf32x F
++GLIBC_2.27 hypotf64 F
++GLIBC_2.27 hypotl F
++GLIBC_2.27 ilogb F
++GLIBC_2.27 ilogbf F
++GLIBC_2.27 ilogbf32 F
++GLIBC_2.27 ilogbf32x F
++GLIBC_2.27 ilogbf64 F
++GLIBC_2.27 ilogbl F
++GLIBC_2.27 j0 F
++GLIBC_2.27 j0f F
++GLIBC_2.27 j0f32 F
++GLIBC_2.27 j0f32x F
++GLIBC_2.27 j0f64 F
++GLIBC_2.27 j0l F
++GLIBC_2.27 j1 F
++GLIBC_2.27 j1f F
++GLIBC_2.27 j1f32 F
++GLIBC_2.27 j1f32x F
++GLIBC_2.27 j1f64 F
++GLIBC_2.27 j1l F
++GLIBC_2.27 jn F
++GLIBC_2.27 jnf F
++GLIBC_2.27 jnf32 F
++GLIBC_2.27 jnf32x F
++GLIBC_2.27 jnf64 F
++GLIBC_2.27 jnl F
++GLIBC_2.27 ldexp F
++GLIBC_2.27 ldexpf F
++GLIBC_2.27 ldexpf32 F
++GLIBC_2.27 ldexpf32x F
++GLIBC_2.27 ldexpf64 F
++GLIBC_2.27 ldexpl F
++GLIBC_2.27 lgamma F
++GLIBC_2.27 lgamma_r F
++GLIBC_2.27 lgammaf F
++GLIBC_2.27 lgammaf32 F
++GLIBC_2.27 lgammaf32_r F
++GLIBC_2.27 lgammaf32x F
++GLIBC_2.27 lgammaf32x_r F
++GLIBC_2.27 lgammaf64 F
++GLIBC_2.27 lgammaf64_r F
++GLIBC_2.27 lgammaf_r F
++GLIBC_2.27 lgammal F
++GLIBC_2.27 lgammal_r F
++GLIBC_2.27 llogb F
++GLIBC_2.27 llogbf F
++GLIBC_2.27 llogbf32 F
++GLIBC_2.27 llogbf32x F
++GLIBC_2.27 llogbf64 F
++GLIBC_2.27 llogbl F
++GLIBC_2.27 llrint F
++GLIBC_2.27 llrintf F
++GLIBC_2.27 llrintf32 F
++GLIBC_2.27 llrintf32x F
++GLIBC_2.27 llrintf64 F
++GLIBC_2.27 llrintl F
++GLIBC_2.27 llround F
++GLIBC_2.27 llroundf F
++GLIBC_2.27 llroundf32 F
++GLIBC_2.27 llroundf32x F
++GLIBC_2.27 llroundf64 F
++GLIBC_2.27 llroundl F
++GLIBC_2.27 log F
++GLIBC_2.27 log10 F
++GLIBC_2.27 log10f F
++GLIBC_2.27 log10f32 F
++GLIBC_2.27 log10f32x F
++GLIBC_2.27 log10f64 F
++GLIBC_2.27 log10l F
++GLIBC_2.27 log1p F
++GLIBC_2.27 log1pf F
++GLIBC_2.27 log1pf32 F
++GLIBC_2.27 log1pf32x F
++GLIBC_2.27 log1pf64 F
++GLIBC_2.27 log1pl F
++GLIBC_2.27 log2 F
++GLIBC_2.27 log2f F
++GLIBC_2.27 log2f32 F
++GLIBC_2.27 log2f32x F
++GLIBC_2.27 log2f64 F
++GLIBC_2.27 log2l F
++GLIBC_2.27 logb F
++GLIBC_2.27 logbf F
++GLIBC_2.27 logbf32 F
++GLIBC_2.27 logbf32x F
++GLIBC_2.27 logbf64 F
++GLIBC_2.27 logbl F
++GLIBC_2.27 logf F
++GLIBC_2.27 logf32 F
++GLIBC_2.27 logf32x F
++GLIBC_2.27 logf64 F
++GLIBC_2.27 logl F
++GLIBC_2.27 lrint F
++GLIBC_2.27 lrintf F
++GLIBC_2.27 lrintf32 F
++GLIBC_2.27 lrintf32x F
++GLIBC_2.27 lrintf64 F
++GLIBC_2.27 lrintl F
++GLIBC_2.27 lround F
++GLIBC_2.27 lroundf F
++GLIBC_2.27 lroundf32 F
++GLIBC_2.27 lroundf32x F
++GLIBC_2.27 lroundf64 F
++GLIBC_2.27 lroundl F
++GLIBC_2.27 modf F
++GLIBC_2.27 modff F
++GLIBC_2.27 modff32 F
++GLIBC_2.27 modff32x F
++GLIBC_2.27 modff64 F
++GLIBC_2.27 modfl F
++GLIBC_2.27 nan F
++GLIBC_2.27 nanf F
++GLIBC_2.27 nanf32 F
++GLIBC_2.27 nanf32x F
++GLIBC_2.27 nanf64 F
++GLIBC_2.27 nanl F
++GLIBC_2.27 nearbyint F
++GLIBC_2.27 nearbyintf F
++GLIBC_2.27 nearbyintf32 F
++GLIBC_2.27 nearbyintf32x F
++GLIBC_2.27 nearbyintf64 F
++GLIBC_2.27 nearbyintl F
++GLIBC_2.27 nextafter F
++GLIBC_2.27 nextafterf F
++GLIBC_2.27 nextafterf32 F
++GLIBC_2.27 nextafterf32x F
++GLIBC_2.27 nextafterf64 F
++GLIBC_2.27 nextafterl F
++GLIBC_2.27 nextdown F
++GLIBC_2.27 nextdownf F
++GLIBC_2.27 nextdownf32 F
++GLIBC_2.27 nextdownf32x F
++GLIBC_2.27 nextdownf64 F
++GLIBC_2.27 nextdownl F
++GLIBC_2.27 nexttoward F
++GLIBC_2.27 nexttowardf F
++GLIBC_2.27 nexttowardl F
++GLIBC_2.27 nextup F
++GLIBC_2.27 nextupf F
++GLIBC_2.27 nextupf32 F
++GLIBC_2.27 nextupf32x F
++GLIBC_2.27 nextupf64 F
++GLIBC_2.27 nextupl F
++GLIBC_2.27 pow F
++GLIBC_2.27 powf F
++GLIBC_2.27 powf32 F
++GLIBC_2.27 powf32x F
++GLIBC_2.27 powf64 F
++GLIBC_2.27 powl F
++GLIBC_2.27 remainder F
++GLIBC_2.27 remainderf F
++GLIBC_2.27 remainderf32 F
++GLIBC_2.27 remainderf32x F
++GLIBC_2.27 remainderf64 F
++GLIBC_2.27 remainderl F
++GLIBC_2.27 remquo F
++GLIBC_2.27 remquof F
++GLIBC_2.27 remquof32 F
++GLIBC_2.27 remquof32x F
++GLIBC_2.27 remquof64 F
++GLIBC_2.27 remquol F
++GLIBC_2.27 rint F
++GLIBC_2.27 rintf F
++GLIBC_2.27 rintf32 F
++GLIBC_2.27 rintf32x F
++GLIBC_2.27 rintf64 F
++GLIBC_2.27 rintl F
++GLIBC_2.27 round F
++GLIBC_2.27 roundeven F
++GLIBC_2.27 roundevenf F
++GLIBC_2.27 roundevenf32 F
++GLIBC_2.27 roundevenf32x F
++GLIBC_2.27 roundevenf64 F
++GLIBC_2.27 roundevenl F
++GLIBC_2.27 roundf F
++GLIBC_2.27 roundf32 F
++GLIBC_2.27 roundf32x F
++GLIBC_2.27 roundf64 F
++GLIBC_2.27 roundl F
++GLIBC_2.27 scalb F
++GLIBC_2.27 scalbf F
++GLIBC_2.27 scalbl F
++GLIBC_2.27 scalbln F
++GLIBC_2.27 scalblnf F
++GLIBC_2.27 scalblnf32 F
++GLIBC_2.27 scalblnf32x F
++GLIBC_2.27 scalblnf64 F
++GLIBC_2.27 scalblnl F
++GLIBC_2.27 scalbn F
++GLIBC_2.27 scalbnf F
++GLIBC_2.27 scalbnf32 F
++GLIBC_2.27 scalbnf32x F
++GLIBC_2.27 scalbnf64 F
++GLIBC_2.27 scalbnl F
++GLIBC_2.27 setpayload F
++GLIBC_2.27 setpayloadf F
++GLIBC_2.27 setpayloadf32 F
++GLIBC_2.27 setpayloadf32x F
++GLIBC_2.27 setpayloadf64 F
++GLIBC_2.27 setpayloadl F
++GLIBC_2.27 setpayloadsig F
++GLIBC_2.27 setpayloadsigf F
++GLIBC_2.27 setpayloadsigf32 F
++GLIBC_2.27 setpayloadsigf32x F
++GLIBC_2.27 setpayloadsigf64 F
++GLIBC_2.27 setpayloadsigl F
++GLIBC_2.27 signgam D 0x4
++GLIBC_2.27 significand F
++GLIBC_2.27 significandf F
++GLIBC_2.27 significandl F
++GLIBC_2.27 sin F
++GLIBC_2.27 sincos F
++GLIBC_2.27 sincosf F
++GLIBC_2.27 sincosf32 F
++GLIBC_2.27 sincosf32x F
++GLIBC_2.27 sincosf64 F
++GLIBC_2.27 sincosl F
++GLIBC_2.27 sinf F
++GLIBC_2.27 sinf32 F
++GLIBC_2.27 sinf32x F
++GLIBC_2.27 sinf64 F
++GLIBC_2.27 sinh F
++GLIBC_2.27 sinhf F
++GLIBC_2.27 sinhf32 F
++GLIBC_2.27 sinhf32x F
++GLIBC_2.27 sinhf64 F
++GLIBC_2.27 sinhl F
++GLIBC_2.27 sinl F
++GLIBC_2.27 sqrt F
++GLIBC_2.27 sqrtf F
++GLIBC_2.27 sqrtf32 F
++GLIBC_2.27 sqrtf32x F
++GLIBC_2.27 sqrtf64 F
++GLIBC_2.27 sqrtl F
++GLIBC_2.27 tan F
++GLIBC_2.27 tanf F
++GLIBC_2.27 tanf32 F
++GLIBC_2.27 tanf32x F
++GLIBC_2.27 tanf64 F
++GLIBC_2.27 tanh F
++GLIBC_2.27 tanhf F
++GLIBC_2.27 tanhf32 F
++GLIBC_2.27 tanhf32x F
++GLIBC_2.27 tanhf64 F
++GLIBC_2.27 tanhl F
++GLIBC_2.27 tanl F
++GLIBC_2.27 tgamma F
++GLIBC_2.27 tgammaf F
++GLIBC_2.27 tgammaf32 F
++GLIBC_2.27 tgammaf32x F
++GLIBC_2.27 tgammaf64 F
++GLIBC_2.27 tgammal F
++GLIBC_2.27 totalorder F
++GLIBC_2.27 totalorderf F
++GLIBC_2.27 totalorderf32 F
++GLIBC_2.27 totalorderf32x F
++GLIBC_2.27 totalorderf64 F
++GLIBC_2.27 totalorderl F
++GLIBC_2.27 totalordermag F
++GLIBC_2.27 totalordermagf F
++GLIBC_2.27 totalordermagf32 F
++GLIBC_2.27 totalordermagf32x F
++GLIBC_2.27 totalordermagf64 F
++GLIBC_2.27 totalordermagl F
++GLIBC_2.27 trunc F
++GLIBC_2.27 truncf F
++GLIBC_2.27 truncf32 F
++GLIBC_2.27 truncf32x F
++GLIBC_2.27 truncf64 F
++GLIBC_2.27 truncl F
++GLIBC_2.27 ufromfp F
++GLIBC_2.27 ufromfpf F
++GLIBC_2.27 ufromfpf32 F
++GLIBC_2.27 ufromfpf32x F
++GLIBC_2.27 ufromfpf64 F
++GLIBC_2.27 ufromfpl F
++GLIBC_2.27 ufromfpx F
++GLIBC_2.27 ufromfpxf F
++GLIBC_2.27 ufromfpxf32 F
++GLIBC_2.27 ufromfpxf32x F
++GLIBC_2.27 ufromfpxf64 F
++GLIBC_2.27 ufromfpxl F
++GLIBC_2.27 y0 F
++GLIBC_2.27 y0f F
++GLIBC_2.27 y0f32 F
++GLIBC_2.27 y0f32x F
++GLIBC_2.27 y0f64 F
++GLIBC_2.27 y0l F
++GLIBC_2.27 y1 F
++GLIBC_2.27 y1f F
++GLIBC_2.27 y1f32 F
++GLIBC_2.27 y1f32x F
++GLIBC_2.27 y1f64 F
++GLIBC_2.27 y1l F
++GLIBC_2.27 yn F
++GLIBC_2.27 ynf F
++GLIBC_2.27 ynf32 F
++GLIBC_2.27 ynf32x F
++GLIBC_2.27 ynf64 F
++GLIBC_2.27 ynl F
++GLIBC_2.28 daddl F
++GLIBC_2.28 ddivl F
++GLIBC_2.28 dmull F
++GLIBC_2.28 dsubl F
++GLIBC_2.28 f32addf32x F
++GLIBC_2.28 f32addf64 F
++GLIBC_2.28 f32divf32x F
++GLIBC_2.28 f32divf64 F
++GLIBC_2.28 f32mulf32x F
++GLIBC_2.28 f32mulf64 F
++GLIBC_2.28 f32subf32x F
++GLIBC_2.28 f32subf64 F
++GLIBC_2.28 f32xaddf64 F
++GLIBC_2.28 f32xdivf64 F
++GLIBC_2.28 f32xmulf64 F
++GLIBC_2.28 f32xsubf64 F
++GLIBC_2.28 fadd F
++GLIBC_2.28 faddl F
++GLIBC_2.28 fdiv F
++GLIBC_2.28 fdivl F
++GLIBC_2.28 fmul F
++GLIBC_2.28 fmull F
++GLIBC_2.28 fsub F
++GLIBC_2.28 fsubl F
+diff --git a/sysdeps/unix/sysv/linux/arc/libnsl.abilist b/sysdeps/unix/sysv/linux/arc/libnsl.abilist
+new file mode 100644
+index 000000000000..0767472d06e6
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libnsl.abilist
+@@ -0,0 +1,120 @@
++GLIBC_2.27 __free_fdresult F
++GLIBC_2.27 __nis_default_access F
++GLIBC_2.27 __nis_default_group F
++GLIBC_2.27 __nis_default_owner F
++GLIBC_2.27 __nis_default_ttl F
++GLIBC_2.27 __nis_finddirectory F
++GLIBC_2.27 __nisbind_connect F
++GLIBC_2.27 __nisbind_create F
++GLIBC_2.27 __nisbind_destroy F
++GLIBC_2.27 __nisbind_next F
++GLIBC_2.27 __yp_check F
++GLIBC_2.27 nis_add F
++GLIBC_2.27 nis_add_entry F
++GLIBC_2.27 nis_addmember F
++GLIBC_2.27 nis_checkpoint F
++GLIBC_2.27 nis_clone_directory F
++GLIBC_2.27 nis_clone_object F
++GLIBC_2.27 nis_clone_result F
++GLIBC_2.27 nis_creategroup F
++GLIBC_2.27 nis_destroy_object F
++GLIBC_2.27 nis_destroygroup F
++GLIBC_2.27 nis_dir_cmp F
++GLIBC_2.27 nis_domain_of F
++GLIBC_2.27 nis_domain_of_r F
++GLIBC_2.27 nis_first_entry F
++GLIBC_2.27 nis_free_directory F
++GLIBC_2.27 nis_free_object F
++GLIBC_2.27 nis_free_request F
++GLIBC_2.27 nis_freenames F
++GLIBC_2.27 nis_freeresult F
++GLIBC_2.27 nis_freeservlist F
++GLIBC_2.27 nis_freetags F
++GLIBC_2.27 nis_getnames F
++GLIBC_2.27 nis_getservlist F
++GLIBC_2.27 nis_ismember F
++GLIBC_2.27 nis_leaf_of F
++GLIBC_2.27 nis_leaf_of_r F
++GLIBC_2.27 nis_lerror F
++GLIBC_2.27 nis_list F
++GLIBC_2.27 nis_local_directory F
++GLIBC_2.27 nis_local_group F
++GLIBC_2.27 nis_local_host F
++GLIBC_2.27 nis_local_principal F
++GLIBC_2.27 nis_lookup F
++GLIBC_2.27 nis_mkdir F
++GLIBC_2.27 nis_modify F
++GLIBC_2.27 nis_modify_entry F
++GLIBC_2.27 nis_name_of F
++GLIBC_2.27 nis_name_of_r F
++GLIBC_2.27 nis_next_entry F
++GLIBC_2.27 nis_perror F
++GLIBC_2.27 nis_ping F
++GLIBC_2.27 nis_print_directory F
++GLIBC_2.27 nis_print_entry F
++GLIBC_2.27 nis_print_group F
++GLIBC_2.27 nis_print_group_entry F
++GLIBC_2.27 nis_print_link F
++GLIBC_2.27 nis_print_object F
++GLIBC_2.27 nis_print_result F
++GLIBC_2.27 nis_print_rights F
++GLIBC_2.27 nis_print_table F
++GLIBC_2.27 nis_read_obj F
++GLIBC_2.27 nis_remove F
++GLIBC_2.27 nis_remove_entry F
++GLIBC_2.27 nis_removemember F
++GLIBC_2.27 nis_rmdir F
++GLIBC_2.27 nis_servstate F
++GLIBC_2.27 nis_sperrno F
++GLIBC_2.27 nis_sperror F
++GLIBC_2.27 nis_sperror_r F
++GLIBC_2.27 nis_stats F
++GLIBC_2.27 nis_verifygroup F
++GLIBC_2.27 nis_write_obj F
++GLIBC_2.27 readColdStartFile F
++GLIBC_2.27 writeColdStartFile F
++GLIBC_2.27 xdr_cback_data F
++GLIBC_2.27 xdr_domainname F
++GLIBC_2.27 xdr_keydat F
++GLIBC_2.27 xdr_mapname F
++GLIBC_2.27 xdr_obj_p F
++GLIBC_2.27 xdr_peername F
++GLIBC_2.27 xdr_valdat F
++GLIBC_2.27 xdr_yp_buf F
++GLIBC_2.27 xdr_ypall F
++GLIBC_2.27 xdr_ypbind_binding F
++GLIBC_2.27 xdr_ypbind_resp F
++GLIBC_2.27 xdr_ypbind_resptype F
++GLIBC_2.27 xdr_ypbind_setdom F
++GLIBC_2.27 xdr_ypdelete_args F
++GLIBC_2.27 xdr_ypmap_parms F
++GLIBC_2.27 xdr_ypmaplist F
++GLIBC_2.27 xdr_yppush_status F
++GLIBC_2.27 xdr_yppushresp_xfr F
++GLIBC_2.27 xdr_ypreq_key F
++GLIBC_2.27 xdr_ypreq_nokey F
++GLIBC_2.27 xdr_ypreq_xfr F
++GLIBC_2.27 xdr_ypresp_all F
++GLIBC_2.27 xdr_ypresp_key_val F
++GLIBC_2.27 xdr_ypresp_maplist F
++GLIBC_2.27 xdr_ypresp_master F
++GLIBC_2.27 xdr_ypresp_order F
++GLIBC_2.27 xdr_ypresp_val F
++GLIBC_2.27 xdr_ypresp_xfr F
++GLIBC_2.27 xdr_ypstat F
++GLIBC_2.27 xdr_ypupdate_args F
++GLIBC_2.27 xdr_ypxfrstat F
++GLIBC_2.27 yp_all F
++GLIBC_2.27 yp_bind F
++GLIBC_2.27 yp_first F
++GLIBC_2.27 yp_get_default_domain F
++GLIBC_2.27 yp_maplist F
++GLIBC_2.27 yp_master F
++GLIBC_2.27 yp_match F
++GLIBC_2.27 yp_next F
++GLIBC_2.27 yp_order F
++GLIBC_2.27 yp_unbind F
++GLIBC_2.27 yp_update F
++GLIBC_2.27 ypbinderr_string F
++GLIBC_2.27 yperr_string F
++GLIBC_2.27 ypprot_err F
+diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+new file mode 100644
+index 000000000000..c370fda73db9
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+@@ -0,0 +1,237 @@
++GLIBC_2.27 _IO_flockfile F
++GLIBC_2.27 _IO_ftrylockfile F
++GLIBC_2.27 _IO_funlockfile F
++GLIBC_2.27 __close F
++GLIBC_2.27 __connect F
++GLIBC_2.27 __errno_location F
++GLIBC_2.27 __fcntl F
++GLIBC_2.27 __h_errno_location F
++GLIBC_2.27 __libc_allocate_rtsig F
++GLIBC_2.27 __libc_current_sigrtmax F
++GLIBC_2.27 __libc_current_sigrtmin F
++GLIBC_2.27 __lseek F
++GLIBC_2.27 __nanosleep F
++GLIBC_2.27 __open F
++GLIBC_2.27 __open64 F
++GLIBC_2.27 __pread64 F
++GLIBC_2.27 __pthread_cleanup_routine F
++GLIBC_2.27 __pthread_getspecific F
++GLIBC_2.27 __pthread_key_create F
++GLIBC_2.27 __pthread_mutex_destroy F
++GLIBC_2.27 __pthread_mutex_init F
++GLIBC_2.27 __pthread_mutex_lock F
++GLIBC_2.27 __pthread_mutex_trylock F
++GLIBC_2.27 __pthread_mutex_unlock F
++GLIBC_2.27 __pthread_mutexattr_destroy F
++GLIBC_2.27 __pthread_mutexattr_init F
++GLIBC_2.27 __pthread_mutexattr_settype F
++GLIBC_2.27 __pthread_once F
++GLIBC_2.27 __pthread_register_cancel F
++GLIBC_2.27 __pthread_register_cancel_defer F
++GLIBC_2.27 __pthread_rwlock_destroy F
++GLIBC_2.27 __pthread_rwlock_init F
++GLIBC_2.27 __pthread_rwlock_rdlock F
++GLIBC_2.27 __pthread_rwlock_tryrdlock F
++GLIBC_2.27 __pthread_rwlock_trywrlock F
++GLIBC_2.27 __pthread_rwlock_unlock F
++GLIBC_2.27 __pthread_rwlock_wrlock F
++GLIBC_2.27 __pthread_setspecific F
++GLIBC_2.27 __pthread_unregister_cancel F
++GLIBC_2.27 __pthread_unregister_cancel_restore F
++GLIBC_2.27 __pthread_unwind_next F
++GLIBC_2.27 __pwrite64 F
++GLIBC_2.27 __read F
++GLIBC_2.27 __res_state F
++GLIBC_2.27 __send F
++GLIBC_2.27 __sigaction F
++GLIBC_2.27 __wait F
++GLIBC_2.27 __write F
++GLIBC_2.27 _pthread_cleanup_pop F
++GLIBC_2.27 _pthread_cleanup_pop_restore F
++GLIBC_2.27 _pthread_cleanup_push F
++GLIBC_2.27 _pthread_cleanup_push_defer F
++GLIBC_2.27 accept F
++GLIBC_2.27 close F
++GLIBC_2.27 connect F
++GLIBC_2.27 fcntl F
++GLIBC_2.27 flockfile F
++GLIBC_2.27 fsync F
++GLIBC_2.27 ftrylockfile F
++GLIBC_2.27 funlockfile F
++GLIBC_2.27 lseek F
++GLIBC_2.27 lseek64 F
++GLIBC_2.27 msync F
++GLIBC_2.27 nanosleep F
++GLIBC_2.27 open F
++GLIBC_2.27 open64 F
++GLIBC_2.27 pause F
++GLIBC_2.27 pread F
++GLIBC_2.27 pread64 F
++GLIBC_2.27 pthread_attr_destroy F
++GLIBC_2.27 pthread_attr_getaffinity_np F
++GLIBC_2.27 pthread_attr_getdetachstate F
++GLIBC_2.27 pthread_attr_getguardsize F
++GLIBC_2.27 pthread_attr_getinheritsched F
++GLIBC_2.27 pthread_attr_getschedparam F
++GLIBC_2.27 pthread_attr_getschedpolicy F
++GLIBC_2.27 pthread_attr_getscope F
++GLIBC_2.27 pthread_attr_getstack F
++GLIBC_2.27 pthread_attr_getstackaddr F
++GLIBC_2.27 pthread_attr_getstacksize F
++GLIBC_2.27 pthread_attr_init F
++GLIBC_2.27 pthread_attr_setaffinity_np F
++GLIBC_2.27 pthread_attr_setdetachstate F
++GLIBC_2.27 pthread_attr_setguardsize F
++GLIBC_2.27 pthread_attr_setinheritsched F
++GLIBC_2.27 pthread_attr_setschedparam F
++GLIBC_2.27 pthread_attr_setschedpolicy F
++GLIBC_2.27 pthread_attr_setscope F
++GLIBC_2.27 pthread_attr_setstack F
++GLIBC_2.27 pthread_attr_setstackaddr F
++GLIBC_2.27 pthread_attr_setstacksize F
++GLIBC_2.27 pthread_barrier_destroy F
++GLIBC_2.27 pthread_barrier_init F
++GLIBC_2.27 pthread_barrier_wait F
++GLIBC_2.27 pthread_barrierattr_destroy F
++GLIBC_2.27 pthread_barrierattr_getpshared F
++GLIBC_2.27 pthread_barrierattr_init F
++GLIBC_2.27 pthread_barrierattr_setpshared F
++GLIBC_2.27 pthread_cancel F
++GLIBC_2.27 pthread_cond_broadcast F
++GLIBC_2.27 pthread_cond_destroy F
++GLIBC_2.27 pthread_cond_init F
++GLIBC_2.27 pthread_cond_signal F
++GLIBC_2.27 pthread_cond_timedwait F
++GLIBC_2.27 pthread_cond_wait F
++GLIBC_2.27 pthread_condattr_destroy F
++GLIBC_2.27 pthread_condattr_getclock F
++GLIBC_2.27 pthread_condattr_getpshared F
++GLIBC_2.27 pthread_condattr_init F
++GLIBC_2.27 pthread_condattr_setclock F
++GLIBC_2.27 pthread_condattr_setpshared F
++GLIBC_2.27 pthread_create F
++GLIBC_2.27 pthread_detach F
++GLIBC_2.27 pthread_equal F
++GLIBC_2.27 pthread_exit F
++GLIBC_2.27 pthread_getaffinity_np F
++GLIBC_2.27 pthread_getattr_default_np F
++GLIBC_2.27 pthread_getattr_np F
++GLIBC_2.27 pthread_getconcurrency F
++GLIBC_2.27 pthread_getcpuclockid F
++GLIBC_2.27 pthread_getname_np F
++GLIBC_2.27 pthread_getschedparam F
++GLIBC_2.27 pthread_getspecific F
++GLIBC_2.27 pthread_join F
++GLIBC_2.27 pthread_key_create F
++GLIBC_2.27 pthread_key_delete F
++GLIBC_2.27 pthread_kill F
++GLIBC_2.27 pthread_kill_other_threads_np F
++GLIBC_2.27 pthread_mutex_consistent F
++GLIBC_2.27 pthread_mutex_consistent_np F
++GLIBC_2.27 pthread_mutex_destroy F
++GLIBC_2.27 pthread_mutex_getprioceiling F
++GLIBC_2.27 pthread_mutex_init F
++GLIBC_2.27 pthread_mutex_lock F
++GLIBC_2.27 pthread_mutex_setprioceiling F
++GLIBC_2.27 pthread_mutex_timedlock F
++GLIBC_2.27 pthread_mutex_trylock F
++GLIBC_2.27 pthread_mutex_unlock F
++GLIBC_2.27 pthread_mutexattr_destroy F
++GLIBC_2.27 pthread_mutexattr_getkind_np F
++GLIBC_2.27 pthread_mutexattr_getprioceiling F
++GLIBC_2.27 pthread_mutexattr_getprotocol F
++GLIBC_2.27 pthread_mutexattr_getpshared F
++GLIBC_2.27 pthread_mutexattr_getrobust F
++GLIBC_2.27 pthread_mutexattr_getrobust_np F
++GLIBC_2.27 pthread_mutexattr_gettype F
++GLIBC_2.27 pthread_mutexattr_init F
++GLIBC_2.27 pthread_mutexattr_setkind_np F
++GLIBC_2.27 pthread_mutexattr_setprioceiling F
++GLIBC_2.27 pthread_mutexattr_setprotocol F
++GLIBC_2.27 pthread_mutexattr_setpshared F
++GLIBC_2.27 pthread_mutexattr_setrobust F
++GLIBC_2.27 pthread_mutexattr_setrobust_np F
++GLIBC_2.27 pthread_mutexattr_settype F
++GLIBC_2.27 pthread_once F
++GLIBC_2.27 pthread_rwlock_destroy F
++GLIBC_2.27 pthread_rwlock_init F
++GLIBC_2.27 pthread_rwlock_rdlock F
++GLIBC_2.27 pthread_rwlock_timedrdlock F
++GLIBC_2.27 pthread_rwlock_timedwrlock F
++GLIBC_2.27 pthread_rwlock_tryrdlock F
++GLIBC_2.27 pthread_rwlock_trywrlock F
++GLIBC_2.27 pthread_rwlock_unlock F
++GLIBC_2.27 pthread_rwlock_wrlock F
++GLIBC_2.27 pthread_rwlockattr_destroy F
++GLIBC_2.27 pthread_rwlockattr_getkind_np F
++GLIBC_2.27 pthread_rwlockattr_getpshared F
++GLIBC_2.27 pthread_rwlockattr_init F
++GLIBC_2.27 pthread_rwlockattr_setkind_np F
++GLIBC_2.27 pthread_rwlockattr_setpshared F
++GLIBC_2.27 pthread_setaffinity_np F
++GLIBC_2.27 pthread_setattr_default_np F
++GLIBC_2.27 pthread_setcancelstate F
++GLIBC_2.27 pthread_setcanceltype F
++GLIBC_2.27 pthread_setconcurrency F
++GLIBC_2.27 pthread_setname_np F
++GLIBC_2.27 pthread_setschedparam F
++GLIBC_2.27 pthread_setschedprio F
++GLIBC_2.27 pthread_setspecific F
++GLIBC_2.27 pthread_sigmask F
++GLIBC_2.27 pthread_sigqueue F
++GLIBC_2.27 pthread_spin_destroy F
++GLIBC_2.27 pthread_spin_init F
++GLIBC_2.27 pthread_spin_lock F
++GLIBC_2.27 pthread_spin_trylock F
++GLIBC_2.27 pthread_spin_unlock F
++GLIBC_2.27 pthread_testcancel F
++GLIBC_2.27 pthread_timedjoin_np F
++GLIBC_2.27 pthread_tryjoin_np F
++GLIBC_2.27 pthread_yield F
++GLIBC_2.27 pwrite F
++GLIBC_2.27 pwrite64 F
++GLIBC_2.27 raise F
++GLIBC_2.27 read F
++GLIBC_2.27 recv F
++GLIBC_2.27 recvfrom F
++GLIBC_2.27 recvmsg F
++GLIBC_2.27 sem_close F
++GLIBC_2.27 sem_destroy F
++GLIBC_2.27 sem_getvalue F
++GLIBC_2.27 sem_init F
++GLIBC_2.27 sem_open F
++GLIBC_2.27 sem_post F
++GLIBC_2.27 sem_timedwait F
++GLIBC_2.27 sem_trywait F
++GLIBC_2.27 sem_unlink F
++GLIBC_2.27 sem_wait F
++GLIBC_2.27 send F
++GLIBC_2.27 sendmsg F
++GLIBC_2.27 sendto F
++GLIBC_2.27 sigaction F
++GLIBC_2.27 sigwait F
++GLIBC_2.27 tcdrain F
++GLIBC_2.27 wait F
++GLIBC_2.27 waitpid F
++GLIBC_2.27 write F
++GLIBC_2.28 call_once F
++GLIBC_2.28 cnd_broadcast F
++GLIBC_2.28 cnd_destroy F
++GLIBC_2.28 cnd_init F
++GLIBC_2.28 cnd_signal F
++GLIBC_2.28 cnd_timedwait F
++GLIBC_2.28 cnd_wait F
++GLIBC_2.28 mtx_destroy F
++GLIBC_2.28 mtx_init F
++GLIBC_2.28 mtx_lock F
++GLIBC_2.28 mtx_timedlock F
++GLIBC_2.28 mtx_trylock F
++GLIBC_2.28 mtx_unlock F
++GLIBC_2.28 thrd_create F
++GLIBC_2.28 thrd_detach F
++GLIBC_2.28 thrd_exit F
++GLIBC_2.28 thrd_join F
++GLIBC_2.28 tss_create F
++GLIBC_2.28 tss_delete F
++GLIBC_2.28 tss_get F
++GLIBC_2.28 tss_set F
+diff --git a/sysdeps/unix/sysv/linux/arc/libresolv.abilist b/sysdeps/unix/sysv/linux/arc/libresolv.abilist
+new file mode 100644
+index 000000000000..69f26d515dd0
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libresolv.abilist
+@@ -0,0 +1,79 @@
++GLIBC_2.27 __b64_ntop F
++GLIBC_2.27 __b64_pton F
++GLIBC_2.27 __dn_comp F
++GLIBC_2.27 __dn_count_labels F
++GLIBC_2.27 __dn_expand F
++GLIBC_2.27 __dn_skipname F
++GLIBC_2.27 __fp_nquery F
++GLIBC_2.27 __fp_query F
++GLIBC_2.27 __fp_resstat F
++GLIBC_2.27 __hostalias F
++GLIBC_2.27 __loc_aton F
++GLIBC_2.27 __loc_ntoa F
++GLIBC_2.27 __p_cdname F
++GLIBC_2.27 __p_cdnname F
++GLIBC_2.27 __p_class F
++GLIBC_2.27 __p_class_syms D 0x54
++GLIBC_2.27 __p_fqname F
++GLIBC_2.27 __p_fqnname F
++GLIBC_2.27 __p_option F
++GLIBC_2.27 __p_query F
++GLIBC_2.27 __p_rcode F
++GLIBC_2.27 __p_time F
++GLIBC_2.27 __p_type F
++GLIBC_2.27 __p_type_syms D 0x228
++GLIBC_2.27 __putlong F
++GLIBC_2.27 __putshort F
++GLIBC_2.27 __res_close F
++GLIBC_2.27 __res_dnok F
++GLIBC_2.27 __res_hnok F
++GLIBC_2.27 __res_hostalias F
++GLIBC_2.27 __res_isourserver F
++GLIBC_2.27 __res_mailok F
++GLIBC_2.27 __res_mkquery F
++GLIBC_2.27 __res_nameinquery F
++GLIBC_2.27 __res_nmkquery F
++GLIBC_2.27 __res_nquery F
++GLIBC_2.27 __res_nquerydomain F
++GLIBC_2.27 __res_nsearch F
++GLIBC_2.27 __res_nsend F
++GLIBC_2.27 __res_ownok F
++GLIBC_2.27 __res_queriesmatch F
++GLIBC_2.27 __res_query F
++GLIBC_2.27 __res_querydomain F
++GLIBC_2.27 __res_search F
++GLIBC_2.27 __res_send F
++GLIBC_2.27 __sym_ntop F
++GLIBC_2.27 __sym_ntos F
++GLIBC_2.27 __sym_ston F
++GLIBC_2.27 _getlong F
++GLIBC_2.27 _getshort F
++GLIBC_2.27 inet_net_ntop F
++GLIBC_2.27 inet_net_pton F
++GLIBC_2.27 inet_neta F
++GLIBC_2.27 ns_datetosecs F
++GLIBC_2.27 ns_format_ttl F
++GLIBC_2.27 ns_get16 F
++GLIBC_2.27 ns_get32 F
++GLIBC_2.27 ns_initparse F
++GLIBC_2.27 ns_makecanon F
++GLIBC_2.27 ns_msg_getflag F
++GLIBC_2.27 ns_name_compress F
++GLIBC_2.27 ns_name_ntol F
++GLIBC_2.27 ns_name_ntop F
++GLIBC_2.27 ns_name_pack F
++GLIBC_2.27 ns_name_pton F
++GLIBC_2.27 ns_name_rollback F
++GLIBC_2.27 ns_name_skip F
++GLIBC_2.27 ns_name_uncompress F
++GLIBC_2.27 ns_name_unpack F
++GLIBC_2.27 ns_parse_ttl F
++GLIBC_2.27 ns_parserr F
++GLIBC_2.27 ns_put16 F
++GLIBC_2.27 ns_put32 F
++GLIBC_2.27 ns_samedomain F
++GLIBC_2.27 ns_samename F
++GLIBC_2.27 ns_skiprr F
++GLIBC_2.27 ns_sprintrr F
++GLIBC_2.27 ns_sprintrrf F
++GLIBC_2.27 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 000000000000..bfd262ecc57c
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/librt.abilist
+@@ -0,0 +1,35 @@
++GLIBC_2.27 __mq_open_2 F
++GLIBC_2.27 aio_cancel F
++GLIBC_2.27 aio_cancel64 F
++GLIBC_2.27 aio_error F
++GLIBC_2.27 aio_error64 F
++GLIBC_2.27 aio_fsync F
++GLIBC_2.27 aio_fsync64 F
++GLIBC_2.27 aio_init F
++GLIBC_2.27 aio_read F
++GLIBC_2.27 aio_read64 F
++GLIBC_2.27 aio_return F
++GLIBC_2.27 aio_return64 F
++GLIBC_2.27 aio_suspend F
++GLIBC_2.27 aio_suspend64 F
++GLIBC_2.27 aio_write F
++GLIBC_2.27 aio_write64 F
++GLIBC_2.27 lio_listio F
++GLIBC_2.27 lio_listio64 F
++GLIBC_2.27 mq_close F
++GLIBC_2.27 mq_getattr F
++GLIBC_2.27 mq_notify F
++GLIBC_2.27 mq_open F
++GLIBC_2.27 mq_receive F
++GLIBC_2.27 mq_send F
++GLIBC_2.27 mq_setattr F
++GLIBC_2.27 mq_timedreceive F
++GLIBC_2.27 mq_timedsend F
++GLIBC_2.27 mq_unlink F
++GLIBC_2.27 shm_open F
++GLIBC_2.27 shm_unlink F
++GLIBC_2.27 timer_create F
++GLIBC_2.27 timer_delete F
++GLIBC_2.27 timer_getoverrun F
++GLIBC_2.27 timer_gettime F
++GLIBC_2.27 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 000000000000..4122e563a1d3
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libthread_db.abilist
+@@ -0,0 +1,40 @@
++GLIBC_2.27 td_init F
++GLIBC_2.27 td_log F
++GLIBC_2.27 td_symbol_list F
++GLIBC_2.27 td_ta_clear_event F
++GLIBC_2.27 td_ta_delete F
++GLIBC_2.27 td_ta_enable_stats F
++GLIBC_2.27 td_ta_event_addr F
++GLIBC_2.27 td_ta_event_getmsg F
++GLIBC_2.27 td_ta_get_nthreads F
++GLIBC_2.27 td_ta_get_ph F
++GLIBC_2.27 td_ta_get_stats F
++GLIBC_2.27 td_ta_map_id2thr F
++GLIBC_2.27 td_ta_map_lwp2thr F
++GLIBC_2.27 td_ta_new F
++GLIBC_2.27 td_ta_reset_stats F
++GLIBC_2.27 td_ta_set_event F
++GLIBC_2.27 td_ta_setconcurrency F
++GLIBC_2.27 td_ta_thr_iter F
++GLIBC_2.27 td_ta_tsd_iter F
++GLIBC_2.27 td_thr_clear_event F
++GLIBC_2.27 td_thr_dbresume F
++GLIBC_2.27 td_thr_dbsuspend F
++GLIBC_2.27 td_thr_event_enable F
++GLIBC_2.27 td_thr_event_getmsg F
++GLIBC_2.27 td_thr_get_info F
++GLIBC_2.27 td_thr_getfpregs F
++GLIBC_2.27 td_thr_getgregs F
++GLIBC_2.27 td_thr_getxregs F
++GLIBC_2.27 td_thr_getxregsize F
++GLIBC_2.27 td_thr_set_event F
++GLIBC_2.27 td_thr_setfpregs F
++GLIBC_2.27 td_thr_setgregs F
++GLIBC_2.27 td_thr_setprio F
++GLIBC_2.27 td_thr_setsigpending F
++GLIBC_2.27 td_thr_setxregs F
++GLIBC_2.27 td_thr_sigsetmask F
++GLIBC_2.27 td_thr_tls_get_addr F
++GLIBC_2.27 td_thr_tlsbase F
++GLIBC_2.27 td_thr_tsd F
++GLIBC_2.27 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 000000000000..cbfec8d46e60
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/libutil.abilist
+@@ -0,0 +1,6 @@
++GLIBC_2.27 forkpty F
++GLIBC_2.27 login F
++GLIBC_2.27 login_tty F
++GLIBC_2.27 logout F
++GLIBC_2.27 logwtmp F
++GLIBC_2.27 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 000000000000..815f218daa67
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/localplt.data
+@@ -0,0 +1,15 @@
++libc.so: realloc
++libc.so: malloc
++libc.so: memalign
++libc.so: calloc
++libc.so: free
++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 000000000000..8d233f83da7e
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/makecontext.c
+@@ -0,0 +1,75 @@
++/* Create new context for ARC
++ Copyright (C) 2015-2018 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 sp, *r;
++ va_list vl;
++ int i, reg_args, stack_args;
++
++ sp = ((unsigned long) 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) &__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) func;
++ ucp->uc_mcontext.callee.r14 = (unsigned long) ucp->uc_link;
++ ucp->uc_mcontext.callee.r15 = 0;
++
++ 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);
++ }
++
++ stack_args = argc - reg_args;
++
++ if (__glibc_unlikely(stack_args > 0)) {
++
++ sp -= stack_args * sizeof (unsigned long);
++ ucp->uc_mcontext.scratch.sp = sp;
++ r = (unsigned long *)sp;
++
++ for (i = 0; i < stack_args; i++) {
++ *r++ = va_arg(vl, unsigned long);
++ }
++ }
++
++ 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 000000000000..3c8c55d57d0e
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/mmap_internal.h
+@@ -0,0 +1,26 @@
++/* mmap - map files or devices into memory. Linux/ARC version.
++ Copyright (C) 2017-2018 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
++
++#define MMAP2_PAGE_UNIT 8192ULL /* 8K page is default for ARC */
++
++#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 000000000000..8a6a0bcf3d59
+--- /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 000000000000..65cc3823ac87
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/pt-vfork.S
+@@ -0,0 +1 @@
++#include <sysdeps/unix/sysv/linux/alpha/pt-vfork.S>
+diff --git a/sysdeps/unix/sysv/linux/arc/setcontext.S b/sysdeps/unix/sysv/linux/arc/setcontext.S
+new file mode 100644
+index 000000000000..6ec2ec0ddc79
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/setcontext.S
+@@ -0,0 +1,95 @@
++/* Set current context for ARC
++ Copyright (C) 2009-2018 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_register (blink, r15)
++
++ /* 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 000000000000..fdfe223b4371
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/shlib-versions
+@@ -0,0 +1,2 @@
++DEFAULT GLIBC_2.27
++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 000000000000..b437af677d58
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/sigaction.c
+@@ -0,0 +1,63 @@
++/* ARC specific sigaction and signal restorer
++ Copyright (C) 1997-2018 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>
++#include <signal.h>
++#include <string.h>
++#include <sys/syscall.h>
++
++extern void __default_rt_sa_restorer(void);
++
++#define SA_RESTORER 0x04000000
++
++/* If @act is not NULL, change the action for @sig to @act.
++ If @oact is not NULL, put the old action for @sig in @oact. */
++int
++__libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
++{
++ struct sigaction kact;
++ const struct sigaction *arg;
++
++ /*
++ * SA_RESTORER is only relevant for act != NULL case
++ * (!act means caller only wants to know @oact)
++ */
++ if (act && !(act->sa_flags & SA_RESTORER)) {
++ kact.sa_restorer = __default_rt_sa_restorer;
++ kact.sa_flags = act->sa_flags | SA_RESTORER;
++
++ kact.sa_handler = act->sa_handler;
++ kact.sa_mask = act->sa_mask;
++
++ arg = &kact;
++ } else {
++ arg = act;
++ }
++
++ /*
++ * syscall also expects sizeof(sa_mask) and asm-generic kernel syscall
++ * ABI mandates it be 2 words (8 bytes below) although glibc defines
++ * sigset_to be much larger (1024 / 32 == 64 bytes)
++ */
++ return INLINE_SYSCALL(rt_sigaction, 4, sig, arg, oact, _NSIG / 8);
++}
++
++libc_hidden_def (__libc_sigaction)
++
++#include <nptl/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 000000000000..852bbd96d47f
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/sigcontextinfo.h
+@@ -0,0 +1,23 @@
++/* ARC definitions for signal handling calling conventions.
++ Copyright (C) 2017-2018 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 000000000000..d74cf0ec00e3
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/sigrestorer.S
+@@ -0,0 +1,28 @@
++/* Default sigreturn stub for ARC Linux.
++ Copyright (C) 2005-2018 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>
++
++ 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 000000000000..ad6bf70ab5e2
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/swapcontext.S
+@@ -0,0 +1,92 @@
++/* Save and set current context for ARC
++ Copyright (C) 2009-2018 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 000000000000..c2ba820e50b7
+--- /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-2018 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/procfs.h b/sysdeps/unix/sysv/linux/arc/sys/procfs.h
+new file mode 100644
+index 000000000000..3c1689bc4b91
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/sys/procfs.h
+@@ -0,0 +1,123 @@
++/* Core image file related definitions, ARC version.
++ Copyright (C) 1996-2018 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
++#define _SYS_PROCFS_H 1
++
++/* This is somewhat modelled after the file of the same name on SVR4
++ systems. It provides a definition of the core file format for ELF
++ used on Linux. It doesn't have anything to do with the /proc file
++ system, even though Linux has one.
++
++ Anyway, the whole purpose of this file is for GDB and GDB only.
++ Don't read too much into it. Don't use it for anything other than
++ GDB unless you know what you are doing. */
++
++#include <features.h>
++#include <sys/time.h>
++#include <sys/types.h>
++#include <sys/user.h>
++
++__BEGIN_DECLS
++
++/* Type for a general-purpose register. */
++typedef unsigned long elf_greg_t;
++
++/* 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 elf_greg_t elf_gregset_t[ELF_NGREG];
++
++/* Register set for the floating-point registers. */
++typedef struct { } elf_fpregset_t;
++
++/* Signal info. */
++struct elf_siginfo
++ {
++ int si_signo; /* Signal number. */
++ int si_code; /* Extra code. */
++ int si_errno; /* Errno. */
++ };
++
++/* Definitions to generate Intel SVR4-like core files. These mostly
++ have the same names as the SVR4 types with "elf_" tacked on the
++ front to prevent clashes with Linux definitions, and the typedef
++ forms have been avoided. This is mostly like the SVR4 structure,
++ but more Linuxy, with things that Linux does not support and which
++ GDB doesn't really use excluded. */
++
++struct elf_prstatus
++ {
++ struct elf_siginfo pr_info; /* Info associated with signal. */
++ short int pr_cursig; /* Current signal. */
++ unsigned long int pr_sigpend; /* Set of pending signals. */
++ unsigned long int pr_sighold; /* Set of held signals. */
++ __pid_t pr_pid;
++ __pid_t pr_ppid;
++ __pid_t pr_pgrp;
++ __pid_t pr_sid;
++ struct timeval pr_utime; /* User time. */
++ struct timeval pr_stime; /* System time. */
++ struct timeval pr_cutime; /* Cumulative user time. */
++ struct timeval pr_cstime; /* Cumulative system time. */
++ elf_gregset_t pr_reg; /* GP registers. */
++ int pr_fpvalid; /* True if math copro being used. */
++ };
++
++
++#define ELF_PRARGSZ (80) /* Number of chars for args. */
++
++struct elf_prpsinfo
++ {
++ char pr_state; /* Numeric process state. */
++ char pr_sname; /* Char for pr_state. */
++ char pr_zomb; /* Zombie. */
++ char pr_nice; /* Nice val. */
++ unsigned long int pr_flag; /* Flags. */
++ unsigned short int pr_uid;
++ unsigned short int pr_gid;
++ int pr_pid, pr_ppid, pr_pgrp, pr_sid;
++ /* Lots missing */
++ char pr_fname[16]; /* Filename of executable. */
++ char pr_psargs[ELF_PRARGSZ]; /* Initial part of arg list. */
++ };
++
++/* The rest of this file provides the types for emulation of the
++ Solaris <proc_service.h> interfaces that should be implemented by
++ users of libthread_db. */
++
++/* Addresses. */
++typedef void *psaddr_t;
++
++/* Register sets. Linux has different names. */
++typedef elf_gregset_t prgregset_t;
++typedef elf_fpregset_t prfpregset_t;
++
++/* We don't have any differences between processes and threads,
++ therefore have only one PID type. */
++typedef __pid_t lwpid_t;
++
++/* Process status and info. In the end we do provide typedefs for them. */
++typedef struct elf_prstatus prstatus_t;
++typedef struct elf_prpsinfo prpsinfo_t;
++
++__END_DECLS
++
++#endif /* sys/procfs.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 000000000000..e91abc3d9fba
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/sys/ucontext.h
+@@ -0,0 +1,71 @@
++/* struct ucontext definition, ARC version.
++ Copyright (C) 2017-2018 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>
++
++#ifdef __USE_MISC
++# define __ctx(fld) fld
++#else
++# define __ctx(fld) __ ## fld
++#endif
++
++typedef struct
++ {
++ unsigned long __ctx(pad);
++ struct {
++ unsigned long __ctx(bta);
++ unsigned long __ctx(lp_start), __ctx(lp_end), __ctx(lp_count);
++ unsigned long __ctx(status32), __ctx(ret), __ctx(blink);
++ unsigned long __ctx(fp), __ctx(gp);
++ unsigned long __ctx(r12), __ctx(r11), __ctx(r10), __ctx(r9), __ctx(r8);
++ unsigned long __ctx(r7), __ctx(r6), __ctx(r5), __ctx(r4), __ctx(r3);
++ unsigned long __ctx(r2), __ctx(r1), __ctx(r0);
++ unsigned long __ctx(sp);
++ } __ctx(scratch);
++ unsigned long __ctx(pad2);
++ struct {
++ unsigned long __ctx(r25), __ctx(r24), __ctx(r23), __ctx(r22), __ctx(r21);
++ unsigned long __ctx(r20), __ctx(r19), __ctx(r18), __ctx(r17), __ctx(r16);
++ unsigned long __ctx(r15), __ctx(r14), __ctx(r13);
++ } __ctx(callee);
++ unsigned long __ctx(efa);
++ unsigned long __ctx(stop_pc);
++ unsigned long __ctx(r30), __ctx(r58), __ctx(r59);
++ } mcontext_t;
++
++/* Userlevel context. */
++typedef struct ucontext_t
++ {
++ unsigned long __ctx(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 000000000000..1f7129799bf6
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/sys/user.h
+@@ -0,0 +1,32 @@
++/* ptrace register data format definitions.
++ Copyright (C) 1998-2018 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 000000000000..8f76fa43e95f
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/syscall.S
+@@ -0,0 +1,38 @@
++/* syscall - indirect system call.
++ Copyright (C) 2017-2018 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/sysdep.c b/sysdeps/unix/sysv/linux/arc/sysdep.c
+new file mode 100644
+index 000000000000..d9bcc305b846
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/sysdep.c
+@@ -0,0 +1,33 @@
++/* ARC wrapper for setting errno
++ Copyright (C) 1997-2018 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 000000000000..9ed06a3206b0
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/sysdep.h
+@@ -0,0 +1,260 @@
++/* Assembler macros for ARC.
++ Copyright (C) 2000-2018 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
++ * r0 is both syscall return reg and function return reg, so no need to do
++ * anything
++ */
++# 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 000000000000..a5d861476f3c
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/ucontext-macros.h
+@@ -0,0 +1,29 @@
++/* Macros for ucontext routines - ARC
++ Copyright (C) 2017-2018 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 000000000000..f0a209e581ab
+--- /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 000000000000..6d7f63c9900b
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/vfork.S
+@@ -0,0 +1,42 @@
++/* vfork for ARC Linux.
++ Copyright (C) 2005-2018 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 5306d538e644..d038840b67d3 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/tst-tzset.c b/timezone/tst-tzset.c
+index 27f986b56dab..fca704c2ad2d 100644
+--- a/timezone/tst-tzset.c
++++ b/timezone/tst-tzset.c
+@@ -25,7 +25,6 @@
+ #include <time.h>
+ #include <unistd.h>
+
+-#define TIMEOUT 5
+ static int do_test (void);
+ #define TEST_FUNCTION do_test ()
+ #include "../test-skeleton.c"
+diff --git a/timezone/zic.c b/timezone/zic.c
+index e738386600c2..53b25256d78c 100644
+--- a/timezone/zic.c
++++ b/timezone/zic.c
+@@ -36,7 +36,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_IWGRP|S_IXGRP|S_IROTH|S_IWOTH|S_IXOTH)
+ #else
+ #define MKDIR_UMASK 0755
+ #endif