diff options
author | ToshikazuOhiwa <toshikazu_ohiwa@mail.toyota.co.jp> | 2020-03-30 09:24:26 +0900 |
---|---|---|
committer | ToshikazuOhiwa <toshikazu_ohiwa@mail.toyota.co.jp> | 2020-03-30 09:24:26 +0900 |
commit | 5b80bfd7bffd4c20d80b7c70a7130529e9a755dd (patch) | |
tree | b4bb18dcd1487dbf1ea8127e5671b7bb2eded033 /bsp/meta-synopsys/recipes-core | |
parent | 706ad73eb02caf8532deaf5d38995bd258725cb8 (diff) |
agl-basesystem
Diffstat (limited to 'bsp/meta-synopsys/recipes-core')
8 files changed, 8680 insertions, 0 deletions
diff --git a/bsp/meta-synopsys/recipes-core/expat/expat_2.2.6.bbappend b/bsp/meta-synopsys/recipes-core/expat/expat_2.2.6.bbappend new file mode 100644 index 00000000..59ef6dd7 --- /dev/null +++ b/bsp/meta-synopsys/recipes-core/expat/expat_2.2.6.bbappend @@ -0,0 +1 @@ +CFLAGS_append = " -O1" 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 diff --git a/bsp/meta-synopsys/recipes-core/glibc/files/0032-Add-with-nonshared-cflags-option-to-configure.patch b/bsp/meta-synopsys/recipes-core/glibc/files/0032-Add-with-nonshared-cflags-option-to-configure.patch new file mode 100644 index 00000000..06556430 --- /dev/null +++ b/bsp/meta-synopsys/recipes-core/glibc/files/0032-Add-with-nonshared-cflags-option-to-configure.patch @@ -0,0 +1,162 @@ +From 2add82381a59df74de413d11166a9840e870e072 Mon Sep 17 00:00:00 2001 +From: Florian Weimer <fweimer@redhat.com> +Date: Fri, 17 Aug 2018 11:44:39 +0200 +Subject: [PATCH] Add --with-nonshared-cflags option to configure + +Upstream status: Backport [https://sourceware.org/git/?p=glibc.git;a=commit;f=INSTALL;h=6413fcde4fe0272eee469aaf41c8bb1d6e6a270f] + +Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> +--- + INSTALL | 16 ++++++++++++++++ + Makeconfig | 2 +- + config.make.in | 1 + + configure | 14 ++++++++++++++ + configure.ac | 8 ++++++++ + manual/install.texi | 14 ++++++++++++++ + 6 files changed, 54 insertions(+), 1 deletion(-) + +diff --git a/INSTALL b/INSTALL +index 781cb8415b..3e566ebfef 100644 +--- a/INSTALL ++++ b/INSTALL +@@ -90,6 +90,22 @@ if 'CFLAGS' is specified it must enable optimization. For example: + library will still be usable, but functionality may be lost--for + example, you can't build a shared libc with old binutils. + ++'--with-nonshared-cflags=CFLAGS' ++ Use additional compiler flags CFLAGS to build the parts of the ++ library which are always statically linked into applications and ++ libraries even with shared linking (that is, the object files ++ contained in 'lib*_nonshared.a' libraries). The build process will ++ automatically use the appropriate flags, but this option can be ++ used to set additional flags required for building applications and ++ libraries, to match local policy. For example, if such a policy ++ requires that all code linked into applications must be built with ++ source fortification, ++ '--with-nonshared-cflags=-Wp,-D_FORTIFY_SOURCE=2' will make sure ++ that the objects in 'libc_nonshared.a' are compiled with this flag ++ (although this will not affect the generated code in this ++ particular case and potentially change debugging information and ++ metadata only). ++ + '--disable-shared' + Don't build shared libraries even if it is possible. Not all + systems support shared libraries; you need ELF support and +diff --git a/Makeconfig b/Makeconfig +index 608ffe648c..b0b27f0113 100644 +--- a/Makeconfig ++++ b/Makeconfig +@@ -1038,7 +1038,7 @@ object-suffixes-for-libc += .oS + # Must build the routines as PIC, though, because they can end up in (users') + # shared objects. We don't want to use CFLAGS-os because users may, for + # example, make that processor-specific. +-CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag) ++CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag) $(extra-nonshared-cflags) + CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1 + libtype.oS = lib%_nonshared.a + endif +diff --git a/config.make.in b/config.make.in +index d9891b2cd8..a6fe48d31f 100644 +--- a/config.make.in ++++ b/config.make.in +@@ -110,6 +110,7 @@ BUILD_CC = @BUILD_CC@ + CFLAGS = @CFLAGS@ + CPPFLAGS-config = @CPPFLAGS@ + CPPUNDEFS = @CPPUNDEFS@ ++extra-nonshared-cflags = @extra_nonshared_cflags@ + ASFLAGS-config = @ASFLAGS_config@ + AR = @AR@ + NM = @NM@ +diff --git a/configure b/configure +index fde57d63fe..285a6537f0 100755 +--- a/configure ++++ b/configure +@@ -684,6 +684,7 @@ force_install + bindnow + hardcoded_path_in_tests + enable_timezone_tools ++extra_nonshared_cflags + use_default_link + sysheaders + ac_ct_CXX +@@ -762,6 +763,7 @@ with_binutils + with_selinux + with_headers + with_default_link ++with_nonshared_cflags + enable_sanity_checks + enable_shared + enable_profile +@@ -1482,6 +1484,8 @@ Optional Packages: + --with-headers=PATH location of system headers to use (for example + /usr/src/linux/include) [default=compiler default] + --with-default-link do not use explicit linker scripts ++ --with-nonshared-cflags=CFLAGS ++ build nonshared libraries with additional CFLAGS + --with-cpu=CPU select code for CPU variant + + Some influential environment variables: +@@ -3339,6 +3343,16 @@ else + fi + + ++ ++# Check whether --with-nonshared-cflags was given. ++if test "${with_nonshared_cflags+set}" = set; then : ++ withval=$with_nonshared_cflags; extra_nonshared_cflags=$withval ++else ++ extra_nonshared_cflags= ++fi ++ ++ ++ + # Check whether --enable-sanity-checks was given. + if test "${enable_sanity_checks+set}" = set; then : + enableval=$enable_sanity_checks; enable_sanity=$enableval +diff --git a/configure.ac b/configure.ac +index 014e09a5d5..8045d44dd0 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -154,6 +154,14 @@ AC_ARG_WITH([default-link], + [use_default_link=$withval], + [use_default_link=default]) + ++dnl Additional build flags injection. ++AC_ARG_WITH([nonshared-cflags], ++ AC_HELP_STRING([--with-nonshared-cflags=CFLAGS], ++ [build nonshared libraries with additional CFLAGS]), ++ [extra_nonshared_cflags=$withval], ++ [extra_nonshared_cflags=]) ++AC_SUBST(extra_nonshared_cflags) ++ + AC_ARG_ENABLE([sanity-checks], + AC_HELP_STRING([--disable-sanity-checks], + [really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]), +diff --git a/manual/install.texi b/manual/install.texi +index c39e63bf3b..5476bb66f7 100644 +--- a/manual/install.texi ++++ b/manual/install.texi +@@ -117,6 +117,20 @@ problem and suppress these constructs, so that the library will still be + usable, but functionality may be lost---for example, you can't build a + shared libc with old binutils. + ++@item --with-nonshared-cflags=@var{cflags} ++Use additional compiler flags @var{cflags} to build the parts of the ++library which are always statically linked into applications and ++libraries even with shared linking (that is, the object files contained ++in @file{lib*_nonshared.a} libraries). The build process will ++automatically use the appropriate flags, but this option can be used to ++set additional flags required for building applications and libraries, ++to match local policy. For example, if such a policy requires that all ++code linked into applications must be built with source fortification, ++@samp{--with-nonshared-cflags=-Wp,-D_FORTIFY_SOURCE=2} will make sure ++that the objects in @file{libc_nonshared.a} are compiled with this flag ++(although this will not affect the generated code in this particular ++case and potentially change debugging information and metadata only). ++ + @c disable static doesn't work currently + @c @item --disable-static + @c Don't build static libraries. Static libraries aren't that useful these +-- +2.16.2 + diff --git a/bsp/meta-synopsys/recipes-core/glibc/glibc-initial_2.28.bbappend b/bsp/meta-synopsys/recipes-core/glibc/glibc-initial_2.28.bbappend new file mode 100644 index 00000000..25f96bf3 --- /dev/null +++ b/bsp/meta-synopsys/recipes-core/glibc/glibc-initial_2.28.bbappend @@ -0,0 +1,4 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/files:" +SRC_URI += "file://0031-Add-ARC-architecture.patch \ + file://0032-Add-with-nonshared-cflags-option-to-configure.patch \ +" diff --git a/bsp/meta-synopsys/recipes-core/glibc/glibc_2.28.bbappend b/bsp/meta-synopsys/recipes-core/glibc/glibc_2.28.bbappend new file mode 100644 index 00000000..25f96bf3 --- /dev/null +++ b/bsp/meta-synopsys/recipes-core/glibc/glibc_2.28.bbappend @@ -0,0 +1,4 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/files:" +SRC_URI += "file://0031-Add-ARC-architecture.patch \ + file://0032-Add-with-nonshared-cflags-option-to-configure.patch \ +" diff --git a/bsp/meta-synopsys/recipes-core/systemd/systemd-conf.bbappend b/bsp/meta-synopsys/recipes-core/systemd/systemd-conf.bbappend new file mode 100644 index 00000000..6d076184 --- /dev/null +++ b/bsp/meta-synopsys/recipes-core/systemd/systemd-conf.bbappend @@ -0,0 +1,6 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" +SRC_URI += "\ + file://0001-Add-MESA_LOADER_DRIVER_OVERRIDE-imx-drm-env-to-etc-s.patch \ +" + + diff --git a/bsp/meta-synopsys/recipes-core/systemd/systemd-conf/0001-Add-MESA_LOADER_DRIVER_OVERRIDE-imx-drm-env-to-etc-s.patch b/bsp/meta-synopsys/recipes-core/systemd/systemd-conf/0001-Add-MESA_LOADER_DRIVER_OVERRIDE-imx-drm-env-to-etc-s.patch new file mode 100644 index 00000000..d002368e --- /dev/null +++ b/bsp/meta-synopsys/recipes-core/systemd/systemd-conf/0001-Add-MESA_LOADER_DRIVER_OVERRIDE-imx-drm-env-to-etc-s.patch @@ -0,0 +1,27 @@ +From 37cba4c262828c9a33466e71206046dbeb151300 Mon Sep 17 00:00:00 2001 +From: Evgeniy Didin <Evgeniy.Didin@synopsys.com> +Date: Tue, 2 Apr 2019 17:49:52 +0300 +Subject: [PATCH] Add MESA_LOADER_DRIVER_OVERRIDE=imx-drm env to + /etc/systemd/system.conf + +Signed-off-by: Evgeniy Didin <Evgeniy.Didin@synopsys.com> +--- + src/core/system.conf.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/core/system.conf.in b/src/core/system.conf.in +index f0a59a79a5..2851151ad0 100644 +--- a/src/core/system.conf.in ++++ b/src/core/system.conf.in +@@ -38,7 +38,7 @@ + #DefaultRestartSec=100ms + #DefaultStartLimitIntervalSec=10s + #DefaultStartLimitBurst=5 +-#DefaultEnvironment= ++DefaultEnvironment="MESA_LOADER_DRIVER_OVERRIDE=imx-drm" + #DefaultCPUAccounting=no + #DefaultIOAccounting=no + #DefaultIPAccounting=no +-- +2.16.2 + diff --git a/bsp/meta-synopsys/recipes-core/util-linux/util-linux_%.bbappend b/bsp/meta-synopsys/recipes-core/util-linux/util-linux_%.bbappend new file mode 100644 index 00000000..50339c4e --- /dev/null +++ b/bsp/meta-synopsys/recipes-core/util-linux/util-linux_%.bbappend @@ -0,0 +1 @@ +EXTRA_OECONF += "--disable-tls" |