glibc: Update to arc-2.29-2019.02.08 tag This was generated from Synopsys GitHub Glibc WIP fork [1] this way: ----------------->8----------------- git diff glibc-2.29..arc-2.29-2019.02.08 ':!NEWS' ':!ChangeLog' ----------------->8----------------- [1] https://github.com/foss-for-synopsys-dwc-arc-processors/glibc Signed-off-by: Alexey Brodkin Upstream-Status: Pending --- diff --git a/elf/elf.h b/elf/elf.h index 47a514a389f..bc2184f643c 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 */ @@ -3996,6 +3996,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/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py index 025876486a3..40bf9398d48 100755 --- a/scripts/build-many-glibcs.py +++ b/scripts/build-many-glibcs.py @@ -155,6 +155,9 @@ class Context(object): 'cfg': ['--disable-multi-arch']}]) self.add_config(arch='aarch64_be', os_name='linux-gnu') + self.add_config(arch='arc', + os_name='linux-gnu', + gcc_cfg=['--disable-multilib', '--with-cpu=archs']) self.add_config(arch='alpha', os_name='linux-gnu') self.add_config(arch='arm', @@ -1265,6 +1268,7 @@ class Config(object): def install_linux_headers(self, cmdlist): """Install Linux kernel headers.""" arch_map = {'aarch64': 'arm64', + 'arc': 'arc', 'alpha': 'alpha', 'arm': 'arm', 'csky': 'csky', diff --git a/support/Makefile b/support/Makefile index 432cf2fe6cb..e2a0c0cccf4 100644 --- a/support/Makefile +++ b/support/Makefile @@ -169,12 +169,7 @@ CFLAGS-support_paths.c = \ -DINSTDIR_PATH=\"$(prefix)\" \ -DLIBDIR_PATH=\"$(libdir)\" -ifeq (,$(CXX)) LINKS_DSO_PROGRAM = links-dso-program-c -else -LINKS_DSO_PROGRAM = links-dso-program -LDLIBS-links-dso-program = -lstdc++ -lgcc -lgcc_s $(libunwind) -endif LDLIBS-test-container = $(libsupport) diff --git a/sysdeps/arc/Implies b/sysdeps/arc/Implies new file mode 100644 index 00000000000..a0f0b00cfac --- /dev/null +++ b/sysdeps/arc/Implies @@ -0,0 +1,4 @@ +init_array +wordsize-32 +ieee754/flt-32 +ieee754/dbl-64 diff --git a/sysdeps/arc/Makefile b/sysdeps/arc/Makefile new file mode 100644 index 00000000000..8d2fbe00c5e --- /dev/null +++ b/sysdeps/arc/Makefile @@ -0,0 +1,25 @@ +# ARC Makefile +# Copyright (C) 1993-2019 Free Software Foundation, Inc. +# This file is part of the GNU C Library. + +# The GNU C Library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. + +# The GNU C Library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. + +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library. If not, see +# . + +# We don't support long doubles as a distinct type. We don't need to set +# this variable; it's here mostly for documentational purposes. +long-double-fcts = no + +ifeq ($(subdir),debug) +CFLAGS-backtrace.c += -funwind-tables +endif diff --git a/sysdeps/arc/Versions b/sysdeps/arc/Versions new file mode 100644 index 00000000000..a41ad34f953 --- /dev/null +++ b/sysdeps/arc/Versions @@ -0,0 +1,6 @@ +libc { + GLIBC_2.29 { + __syscall_error; + __mcount; + } +} diff --git a/sysdeps/arc/__longjmp.S b/sysdeps/arc/__longjmp.S new file mode 100644 index 00000000000..8296aa445f6 --- /dev/null +++ b/sysdeps/arc/__longjmp.S @@ -0,0 +1,50 @@ +/* longjmp for ARC. + Copyright (C) 2017-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + +;@ r0 = jump buffer from which regs will be restored +;@ r1 = value that setjmp( ) will return due to this longjmp + +ENTRY (__longjmp) + + ld_s r13, [r0] + ld_s r14, [r0,4] + ld r15, [r0,8] + ld r16, [r0,12] + ld r17, [r0,16] + ld r18, [r0,20] + ld r19, [r0,24] + ld r20, [r0,28] + ld r21, [r0,32] + ld r22, [r0,36] + ld r23, [r0,40] + ld r24, [r0,44] + ld r25, [r0,48] + + ld blink, [r0,60] + ld fp, [r0,52] + ld sp, [r0,56] + + mov.f r0, r1 ; get the setjmp return value(due to longjmp) in place + + j.d [blink] ; to caller of setjmp location, right after the call + mov.z r0, 1 ; can't let setjmp return 0 when it is due to longjmp + +END (__longjmp) diff --git a/sysdeps/arc/abort-instr.h b/sysdeps/arc/abort-instr.h new file mode 100644 index 00000000000..49f33613c40 --- /dev/null +++ b/sysdeps/arc/abort-instr.h @@ -0,0 +1,2 @@ +/* FLAG 1 is privilege mode only instruction, hence will crash any program. */ +#define ABORT_INSTRUCTION asm ("flag 1") diff --git a/sysdeps/arc/atomic-machine.h b/sysdeps/arc/atomic-machine.h new file mode 100644 index 00000000000..bdc91d0558f --- /dev/null +++ b/sysdeps/arc/atomic-machine.h @@ -0,0 +1,73 @@ +/* Low-level functions for atomic operations. ARC version. + Copyright (C) 2012-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _ARC_BITS_ATOMIC_H +#define _ARC_BITS_ATOMIC_H 1 + +#include + +typedef int32_t atomic32_t; +typedef uint32_t uatomic32_t; +typedef int_fast32_t atomic_fast32_t; +typedef uint_fast32_t uatomic_fast32_t; + +typedef intptr_t atomicptr_t; +typedef uintptr_t uatomicptr_t; +typedef intmax_t atomic_max_t; +typedef uintmax_t uatomic_max_t; + +#define __HAVE_64B_ATOMICS 0 +#define USE_ATOMIC_COMPILER_BUILTINS 1 + +/* ARC does have legacy atomic EX reg, [mem] instruction but the micro-arch + is not as optimal as LLOCK/SCOND specially for SMP. */ +#define ATOMIC_EXCHANGE_USES_CAS 1 + +#define __arch_compare_and_exchange_bool_8_acq(mem, newval, oldval) \ + (abort (), 0) +#define __arch_compare_and_exchange_bool_16_acq(mem, newval, oldval) \ + (abort (), 0) +#define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \ + (abort (), 0) + +#define __arch_compare_and_exchange_val_8_int(mem, newval, oldval, model) \ + (abort (), (__typeof (*mem)) 0) +#define __arch_compare_and_exchange_val_16_int(mem, newval, oldval, model) \ + (abort (), (__typeof (*mem)) 0) +#define __arch_compare_and_exchange_val_64_int(mem, newval, oldval, model) \ + (abort (), (__typeof (*mem)) 0) + +#define __arch_compare_and_exchange_val_32_int(mem, newval, oldval, model) \ + ({ \ + typeof (*mem) __oldval = (oldval); \ + __atomic_compare_exchange_n (mem, (void *) &__oldval, newval, 0, \ + model, __ATOMIC_RELAXED); \ + __oldval; \ + }) + +#define atomic_compare_and_exchange_val_acq(mem, new, old) \ + __atomic_val_bysize (__arch_compare_and_exchange_val, int, \ + mem, new, old, __ATOMIC_ACQUIRE) + +#ifdef __ARC700__ +#define atomic_full_barrier() ({ asm volatile ("sync":::"memory"); }) +#else +#define atomic_full_barrier() ({ asm volatile ("dmb 3":::"memory"); }) +#endif + +#endif /* _ARC_BITS_ATOMIC_H */ diff --git a/sysdeps/arc/bits/endian.h b/sysdeps/arc/bits/endian.h new file mode 100644 index 00000000000..46f41e3cffe --- /dev/null +++ b/sysdeps/arc/bits/endian.h @@ -0,0 +1,12 @@ +/* Although ARC CPU can do BE, it is not supported. */ + +#ifndef _ENDIAN_H +# error "Never use directly; include instead." +#endif + +#ifdef __LITTLE_ENDIAN__ +# define __BYTE_ORDER __LITTLE_ENDIAN +#endif +#ifdef __BIG_ENDIAN__ +# error "Big Endian NOt supported on ARC" +#endif diff --git a/sysdeps/arc/bits/fenv.h b/sysdeps/arc/bits/fenv.h new file mode 100644 index 00000000000..58388fb43a3 --- /dev/null +++ b/sysdeps/arc/bits/fenv.h @@ -0,0 +1,72 @@ +/* Copyright (C) 2012-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _FENV_H +# error "Never use directly; include instead." +#endif + +enum + { + FE_INVALID = +# define FE_INVALID (0x01) + FE_INVALID, + FE_DIVBYZERO = +# define FE_DIVBYZERO (0x02) + FE_DIVBYZERO, + FE_OVERFLOW = +# define FE_OVERFLOW (0x04) + FE_OVERFLOW, + FE_UNDERFLOW = +# define FE_UNDERFLOW (0x08) + FE_UNDERFLOW, + FE_INEXACT = +# define FE_INEXACT (0x10) + FE_INEXACT + }; + +# define FE_ALL_EXCEPT \ + (FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT) + +enum + { + FE_TOWARDZERO = +# define FE_TOWARDZERO (0x0) + FE_TOWARDZERO, + FE_TONEAREST = +# define FE_TONEAREST (0x1) + FE_TONEAREST, + FE_UPWARD = +# define FE_UPWARD (0x2) + FE_UPWARD, + FE_DOWNWARD = +# define FE_DOWNWARD (0x3) + FE_DOWNWARD + }; + +typedef unsigned int fexcept_t; +typedef unsigned int fenv_t; + +/* If the default argument is used we use this value. */ +#define FE_DFL_ENV ((const fenv_t *) -1) + +#if __GLIBC_USE (IEC_60559_BFP_EXT) +/* Type representing floating-point control modes. */ +typedef unsigned int femode_t; + +/* Default floating-point control modes. */ +# define FE_DFL_MODE ((const femode_t *) -1L) +#endif diff --git a/sysdeps/arc/bits/link.h b/sysdeps/arc/bits/link.h new file mode 100644 index 00000000000..c4508ab6664 --- /dev/null +++ b/sysdeps/arc/bits/link.h @@ -0,0 +1,52 @@ +/* Machine-specific declarations for dynamic linker interface, ARC version. + Copyright (C) 2009-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _LINK_H +# error "Never include directly; use instead." +#endif + +/* Registers for entry into PLT on ARC. */ +typedef struct La_arc_regs +{ + uint32_t lr_reg[8]; /* r0 through r7 (upto 8 args). */ +} La_arc_regs; + +/* Return values for calls from PLT on ARC. */ +typedef struct La_arc_retval +{ + /* For ARCv2, a 64-bit integer return value can use 2 regs. */ + uint32_t lrv_reg[2]; +} La_arc_retval; + +__BEGIN_DECLS + +extern ElfW(Addr) la_arc_gnu_pltenter (ElfW(Sym) *__sym, unsigned int __ndx, + uintptr_t *__refcook, + uintptr_t *__defcook, + La_arc_regs *__regs, + unsigned int *__flags, + const char *__symname, + long int *__framesizep); +extern unsigned int la_arc_gnu_pltexit (ElfW(Sym) *__sym, unsigned int __ndx, + uintptr_t *__refcook, + uintptr_t *__defcook, + const La_arc_regs *__inregs, + La_arc_retval *__outregs, + const char *symname); + +__END_DECLS diff --git a/sysdeps/arc/bits/setjmp.h b/sysdeps/arc/bits/setjmp.h new file mode 100644 index 00000000000..3cb457d097c --- /dev/null +++ b/sysdeps/arc/bits/setjmp.h @@ -0,0 +1,26 @@ +/* Define the machine-dependent type `jmp_buf'. ARC version. + Copyright (C) 1992-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _ARC_BITS_SETJMP_H +#define _ARC_BITS_SETJMP_H 1 + +/* Saves r13-r25 (callee-saved), fp (frame pointer), sp (stack pointer), + blink (branch-n-link). */ +typedef long int __jmp_buf[32]; + +#endif diff --git a/sysdeps/arc/bsd-_setjmp.S b/sysdeps/arc/bsd-_setjmp.S new file mode 100644 index 00000000000..90b99cd8c3e --- /dev/null +++ b/sysdeps/arc/bsd-_setjmp.S @@ -0,0 +1 @@ +/* _setjmp is in setjmp.S. */ diff --git a/sysdeps/arc/bsd-setjmp.S b/sysdeps/arc/bsd-setjmp.S new file mode 100644 index 00000000000..d3b823c118b --- /dev/null +++ b/sysdeps/arc/bsd-setjmp.S @@ -0,0 +1 @@ +/* setjmp is in setjmp.S. */ diff --git a/sysdeps/arc/configure b/sysdeps/arc/configure new file mode 100644 index 00000000000..52e286da2eb --- /dev/null +++ b/sysdeps/arc/configure @@ -0,0 +1,14 @@ +# This file is generated from configure.ac by Autoconf. DO NOT EDIT! + # Local configure fragment for sysdeps/arc. + +$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h + +libc_cv_have_sdata_section=no + +# For ARC, historically ; was used for comments and not newline +# Later # also got added to comment list, but ; couldn't be switched to +# canonical newline as there's lots of code out there which will break +libc_cv_asm_line_sep='`' +cat >>confdefs.h <<_ACEOF +#define ASM_LINE_SEP $libc_cv_asm_line_sep +_ACEOF diff --git a/sysdeps/arc/configure.ac b/sysdeps/arc/configure.ac new file mode 100644 index 00000000000..1074d312f03 --- /dev/null +++ b/sysdeps/arc/configure.ac @@ -0,0 +1,11 @@ +GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. +# Local configure fragment for sysdeps/arc. + +AC_DEFINE(PI_STATIC_AND_HIDDEN) +libc_cv_have_sdata_section=no + +# For ARC, historically ; was used for comments and not newline +# Later # also got added to comment list, but ; couldn't be switched to +# canonical newline as there's lots of code out there which will break +libc_cv_asm_line_sep='`' +AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep) diff --git a/sysdeps/arc/dl-machine.h b/sysdeps/arc/dl-machine.h new file mode 100644 index 00000000000..c81acb9d4fd --- /dev/null +++ b/sysdeps/arc/dl-machine.h @@ -0,0 +1,340 @@ +/* Machine-dependent ELF dynamic relocation inline functions. ARC version. + Copyright (C) 1995-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef dl_machine_h +#define dl_machine_h + +#define ELF_MACHINE_NAME "arc" + +#include + +#ifndef ENTRY_POINT +# error ENTRY_POINT needs to be defined for ARC +#endif + +#include +#include +#include + +/* Dynamic Linking ABI for ARCv2 ISA. + + PLT + -------------------------------- <---- DT_PLTGOT + | ld r11, [pcl, off-to-GOT[1] | 0 + | | 4 + plt0 | ld r10, [pcl, off-to-GOT[2] | 8 + | | 12 + | j [r10] | 16 + -------------------------------- + | Base address of GOT | 20 + -------------------------------- + | ld r12, [pcl, off-to-GOT[3] | 24 + plt1 | | + | j.d [r12] | 32 + | mov r12, pcl | 36 + -------------------------------- + | | 40 + ~ ~ + ~ ~ + | | + -------------------------------- + + .got + -------------- + | [0] | + | ... | Runtime address for data symbols + | [n] | + -------------- + + .got.plt + -------------- + | [0] | Build address of .dynamic + -------------- + | [1] | Module info - setup by ld.so + -------------- + | [2] | resolver entry point + -------------- + | [3] | + | ... | Runtime address for function symbols + | [f] | + -------------- + + For ARCompact, the PLT is 12 bytes due to short instructions + + -------------------------------- + | ld r12, [pcl, off-to-GOT[3] | 24 (12 bytes each) + plt1 | | + | j_s.d [r12] | 32 + | mov_s r12, pcl | 34 + -------------------------------- + | | 36 */ + +/* Return nonzero iff ELF header is compatible with the running host. */ +static inline int +elf_machine_matches_host (const Elf32_Ehdr *ehdr) +{ + return (ehdr->e_machine == EM_ARCV2 /* ARC HS. */ + || ehdr->e_machine == EM_ARC_COMPACT); /* ARC 700. */ +} + +/* Get build time address of .dynamic as setup in GOT[0] + This is called very early in _dl_start() so it has not been relocated to + runtime value. */ +static inline ElfW(Addr) +elf_machine_dynamic (void) +{ + extern const ElfW(Addr) _GLOBAL_OFFSET_TABLE_[] attribute_hidden; + return _GLOBAL_OFFSET_TABLE_[0]; +} + + +/* Return the run-time load address of the shared object. */ +static inline ElfW(Addr) +elf_machine_load_address (void) +{ + ElfW(Addr) build_addr, run_addr; + + /* For build address, below generates + ld r0, [pcl, _GLOBAL_OFFSET_TABLE_@pcl]. */ + build_addr = elf_machine_dynamic (); + __asm__ ("add %0, pcl, _DYNAMIC@pcl \n" : "=r" (run_addr)); + + return run_addr - build_addr; +} + +/* Set up the loaded object described by L so its unrelocated PLT + entries will jump to the on-demand fixup code in dl-runtime.c. */ + +static inline int +__attribute__ ((always_inline)) +elf_machine_runtime_setup (struct link_map *l, int lazy, int profile) +{ + extern void _dl_runtime_resolve (Elf32_Word); + + if (l->l_info[DT_JMPREL] && lazy) + { + /* On ARC DT_PLTGOT point to .plt whose 5th word (after the PLT header) + contains the address of .got. */ + ElfW(Addr) *plt_base = (ElfW(Addr) *) D_PTR (l, l_info[DT_PLTGOT]); + ElfW(Addr) *got = (ElfW(Addr) *) (plt_base[5] + l->l_addr); + + got[1] = (ElfW(Addr)) l; /* Identify this shared object. */ + + /* This function will get called to fix up the GOT entry indicated by + the offset on the stack, and then jump to the resolved address. */ + got[2] = (ElfW(Addr)) &_dl_runtime_resolve; + } + + return lazy; +} + +/* What this code does: + -ldso starts execution here when kernel returns from execve() + -calls into generic ldso entry point _dl_start( ) + -optionally adjusts argc for executable if exec passed as cmd + -calls into app main with address of finaliser. */ + +#define RTLD_START asm ("\ +.text \n\ +.globl __start \n\ +.type __start, @function \n\ +__start: \n\ + ; (1). bootstrap ld.so \n\ + bl.d _dl_start \n\ + mov_s r0, sp ; pass ptr to aux vector tbl \n\ + mov r13, r0 ; safekeep app elf entry point \n\ + \n\ + ; (2). If ldso ran with executable as arg \n\ + ; skip the extra args calc by dl_start() \n\ + ld_s r1, [sp] ; orig argc \n\ + ld r12, [pcl, _dl_skip_args@pcl] \n\ + breq r12, 0, 1f \n\ + \n\ + add2 sp, sp, r12 ; discard argv entries from stack\n\ + sub_s r1, r1, r12 ; adjusted argc, on stack \n\ + st_s r1, [sp] \n\ + add r2, sp, 4 \n\ + ld r3, [pcl, _dl_argv@gotpc] ; ST doesn't support this addressing mode \n\ + st r2, [r3] \n\ +1: \n\ + ; (3). call preinit stuff \n\ + ld r0, [pcl, _rtld_local@pcl] \n\ + add r2, sp, 4 ; argv \n\ + add2 r3, r2, r1 \n\ + add r3, r3, 4 ; env \n\ + bl _dl_init@plt \n\ + \n\ + ; (4) call app elf entry point \n\ + add r0, pcl, _dl_fini@pcl \n\ + j [r13] \n\ + \n\ + .size __start,.-__start \n\ + .previous \n\ +"); + +/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so + PLT entries should not be allowed to define the value. + ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one + of the main executable's symbols, as for a COPY reloc. */ +#define elf_machine_type_class(type) \ + ((((type) == R_ARC_JUMP_SLOT \ + || (type) == R_ARC_TLS_DTPMOD \ + || (type) == R_ARC_TLS_DTPOFF \ + || (type) == R_ARC_TLS_TPOFF) * ELF_RTYPE_CLASS_PLT) \ + | (((type) == R_ARC_COPY) * ELF_RTYPE_CLASS_COPY)) + +/* A reloc type used for ld.so cmdline arg lookups to reject PLT entries. */ +#define ELF_MACHINE_JMP_SLOT R_ARC_JUMP_SLOT + +/* ARC uses Elf32_Rela relocations. */ +#define ELF_MACHINE_NO_REL 1 +#define ELF_MACHINE_NO_RELA 0 + +/* Fixup a PLT entry to bounce directly to the function at VALUE. */ + +static inline ElfW(Addr) +elf_machine_fixup_plt (struct link_map *map, lookup_t t, + const ElfW(Sym) *refsym, const ElfW(Sym) *sym, + const Elf32_Rela *reloc, + ElfW(Addr) *reloc_addr, ElfW(Addr) value) +{ + return *reloc_addr = value; +} + +/* Return the final value of a plt relocation. */ +static inline ElfW(Addr) +elf_machine_plt_value (struct link_map *map, const Elf32_Rela *reloc, + ElfW(Addr) value) +{ + return value; +} + +/* Names of the architecture-specific auditing callback functions. */ +#define ARCH_LA_PLTENTER arc_gnu_pltenter +#define ARCH_LA_PLTEXIT arc_gnu_pltexit + +#endif /* dl_machine_h */ + +#ifdef RESOLVE_MAP + +auto inline void +__attribute__ ((always_inline)) +elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc, + const ElfW(Sym) *sym, const struct r_found_version *version, + void *const reloc_addr_arg, int skip_ifunc) +{ + ElfW(Addr) *const reloc_addr = reloc_addr_arg; + const unsigned int r_type = ELF32_R_TYPE (reloc->r_info); + + if (__glibc_unlikely (r_type == R_ARC_RELATIVE)) + *reloc_addr += map->l_addr; + else if (__glibc_unlikely (r_type == R_ARC_NONE)) + return; + else + { + const ElfW(Sym) *const refsym = sym; + struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type); + ElfW(Addr) value = SYMBOL_ADDRESS (sym_map, sym, true); + + switch (r_type) + { + case R_ARC_COPY: + if (__glibc_unlikely (sym == NULL)) + /* This can happen in trace mode if an object could not be + found. */ + break; + + size_t size = sym->st_size; + if (__glibc_unlikely (size != refsym->st_size)) + { + const char *strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]); + if (sym->st_size > refsym->st_size) + size = refsym->st_size; + if (sym->st_size > refsym->st_size || GLRO(dl_verbose)) + _dl_error_printf ("\ + %s: Symbol `%s' has different size in shared object, consider re-linking\n", + rtld_progname ?: "", + strtab + refsym->st_name); + } + + memcpy (reloc_addr_arg, (void *) value, size); + break; + case R_ARC_GLOB_DAT: + case R_ARC_JUMP_SLOT: + *reloc_addr = value; + break; + case R_ARC_TLS_DTPMOD: + if (sym_map != NULL) + /* Get the information from the link map returned by the + resolv function. */ + *reloc_addr = sym_map->l_tls_modid; + break; + + case R_ARC_TLS_DTPOFF: + if (sym != NULL) + /* Offset set by the linker in the GOT entry would be overwritten + by dynamic loader instead of added to the symbol location. + Other target have the same approach on DTSOFF relocs. */ + *reloc_addr += sym->st_value; + break; + + case R_ARC_TLS_TPOFF: + if (sym != NULL) + { + CHECK_STATIC_TLS (map, sym_map); + *reloc_addr = sym_map->l_tls_offset + sym->st_value + reloc->r_addend; + } + break; + case R_ARC_32: + *reloc_addr += value + reloc->r_addend; + break; + + case R_ARC_PC32: + *reloc_addr += value + reloc->r_addend - (unsigned long int) reloc_addr; + break; + + default: + _dl_reloc_bad_type (map, r_type, 0); + break; + } + } +} + +auto inline void +__attribute__ ((always_inline)) +elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc, + void *const reloc_addr_arg) +{ + ElfW(Addr) *const reloc_addr = reloc_addr_arg; + *reloc_addr += l_addr; // + reloc->r_addend; +} + +auto inline void +__attribute__ ((always_inline)) +elf_machine_lazy_rel (struct link_map *map, + ElfW(Addr) l_addr, const ElfW(Rela) *reloc, + int skip_ifunc) +{ + ElfW(Addr) *const reloc_addr = (void *) (l_addr + reloc->r_offset); + if (ELF32_R_TYPE (reloc->r_info) == R_ARC_JUMP_SLOT) + *reloc_addr += l_addr; + else + _dl_reloc_bad_type (map, ELF32_R_TYPE (reloc->r_info), 1); +} + +#endif /* RESOLVE_MAP */ diff --git a/sysdeps/arc/dl-runtime.c b/sysdeps/arc/dl-runtime.c new file mode 100644 index 00000000000..48f4a5a7e1d --- /dev/null +++ b/sysdeps/arc/dl-runtime.c @@ -0,0 +1,39 @@ +/* dl-runtime helpers for ARC. + Copyright (C) 2017-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +/* PLT jump into resolver passes PC of PLTn, while _dl_fixup expects the + address of corresponding .rela.plt entry. */ + +#ifdef __A7__ +# define ARC_PLT_SIZE 12 +#else +# define ARC_PLT_SIZE 16 +#endif + +#define reloc_index \ +({ \ + unsigned long int plt0 = D_PTR (l, l_info[DT_PLTGOT]); \ + unsigned long int pltn = reloc_arg; \ + /* Exclude PL0 and PLT1. */ \ + unsigned long int idx = (pltn - plt0)/ARC_PLT_SIZE - 2; \ + idx; \ +}) + +#define reloc_offset reloc_index * sizeof (PLTREL) + +#include diff --git a/sysdeps/arc/dl-sysdep.h b/sysdeps/arc/dl-sysdep.h new file mode 100644 index 00000000000..ffc30b69372 --- /dev/null +++ b/sysdeps/arc/dl-sysdep.h @@ -0,0 +1,25 @@ +/* System-specific settings for dynamic linker code. ARC version. + Copyright (C) 2009-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include_next + +/* _dl_argv cannot be attribute_relro, because _dl_start_user + might write into it after _dl_start returns. */ +#define DL_ARGV_NOT_RELRO 1 + +#define DL_EXTERN_PROTECTED_DATA diff --git a/sysdeps/arc/dl-tls.h b/sysdeps/arc/dl-tls.h new file mode 100644 index 00000000000..7f0cf91e402 --- /dev/null +++ b/sysdeps/arc/dl-tls.h @@ -0,0 +1,30 @@ +/* Thread-local storage handling in the ELF dynamic linker. ARC version. + Copyright (C) 2012-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + + +/* Type used for the representation of TLS information in the GOT. */ +typedef struct +{ + unsigned long int ti_module; + unsigned long int ti_offset; +} tls_index; + +extern void *__tls_get_addr (tls_index *ti); + +/* Value used for dtv entries for which the allocation is delayed. */ +#define TLS_DTV_UNALLOCATED ((void *) -1l) diff --git a/sysdeps/arc/dl-trampoline.S b/sysdeps/arc/dl-trampoline.S new file mode 100644 index 00000000000..9da75fb1fe2 --- /dev/null +++ b/sysdeps/arc/dl-trampoline.S @@ -0,0 +1,80 @@ +/* PLT trampolines. ARC version. + Copyright (C) 2005-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + +#include +#include + +/* Save the registers which resolver could possibly clobber + r0-r9: args to the function - symbol being resolved + r10-r12 are already clobbered by PLTn, PLT0 thus neednot be saved. */ + +.macro SAVE_CALLER_SAVED + push_s r0 + push_s r1 + push_s r2 + push_s r3 + st.a r4, [sp, -4] + st.a r5, [sp, -4] + st.a r6, [sp, -4] + st.a r7, [sp, -4] + st.a r8, [sp, -4] + st.a r9, [sp, -4] + cfi_adjust_cfa_offset (40) + push_s blink + cfi_adjust_cfa_offset (4) + cfi_rel_offset (blink, 0) +.endm + +.macro RESTORE_CALLER_SAVED_BUT_R0 + ld.ab blink,[sp, 4] + cfi_adjust_cfa_offset (-4) + cfi_restore (blink) + ld.ab r9, [sp, 4] + ld.ab r8, [sp, 4] + ld.ab r7, [sp, 4] + ld.ab r6, [sp, 4] + ld.ab r5, [sp, 4] + ld.ab r4, [sp, 4] + pop_s r3 + pop_s r2 + pop_s r1 + cfi_adjust_cfa_offset (-36) +.endm + +/* Upon entry, PLTn, which led us here, sets up the following regs + r11 = Module info (tpnt pointer as expected by resolver) + r12 = PC of the PLTn itself - needed by resolver to find + corresponding .rela.plt entry. */ + +ENTRY (_dl_runtime_resolve) + ; args to func being resolved, which resolver might clobber + SAVE_CALLER_SAVED + + mov_s r1, r12 + bl.d _dl_fixup + mov r0, r11 + + RESTORE_CALLER_SAVED_BUT_R0 + j_s.d [r0] /* r0 has resolved function addr. */ + pop_s r0 /* restore first arg to resolved call. */ + cfi_adjust_cfa_offset (-4) + cfi_restore (r0) +END (_dl_runtime_resolve) diff --git a/sysdeps/arc/entry.h b/sysdeps/arc/entry.h new file mode 100644 index 00000000000..adb01d981af --- /dev/null +++ b/sysdeps/arc/entry.h @@ -0,0 +1,5 @@ +#ifndef __ASSEMBLY__ +extern void __start (void) attribute_hidden; +#endif + +#define ENTRY_POINT __start diff --git a/sysdeps/arc/gccframe.h b/sysdeps/arc/gccframe.h new file mode 100644 index 00000000000..40487fa77b4 --- /dev/null +++ b/sysdeps/arc/gccframe.h @@ -0,0 +1,21 @@ +/* Definition of object in frame unwind info. ARC version. + Copyright (C) 2017-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#define FIRST_PSEUDO_REGISTER 40 + +#include diff --git a/sysdeps/arc/gmp-mparam.h b/sysdeps/arc/gmp-mparam.h new file mode 100644 index 00000000000..e30695fc6b2 --- /dev/null +++ b/sysdeps/arc/gmp-mparam.h @@ -0,0 +1,23 @@ +/* gmp-mparam.h -- Compiler/machine parameter header file. + +Copyright (C) 2017-2019 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP Library is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or (at your +option) any later version. + +The GNU MP Library is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public +License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with the GNU MP Library; see the file COPYING.LIB. If not, see +. */ + +#include + +#define IEEE_DOUBLE_BIG_ENDIAN 0 diff --git a/sysdeps/arc/jmpbuf-offsets.h b/sysdeps/arc/jmpbuf-offsets.h new file mode 100644 index 00000000000..9760f3a3891 --- /dev/null +++ b/sysdeps/arc/jmpbuf-offsets.h @@ -0,0 +1,47 @@ +/* Private macros for accessing __jmp_buf contents. ARC version. + Copyright (C) 2006-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +/* Save offsets within __jmp_buf + We don't use most of these symbols; they are here for documentation. */ + +/* Callee Regs. */ +#define JB_R13 0 +#define JB_R14 1 +#define JB_R15 2 +#define JB_R16 3 +#define JB_R17 4 +#define JB_R18 5 +#define JB_R19 6 +#define JB_R20 7 +#define JB_R21 8 +#define JB_R22 9 +#define JB_R23 10 +#define JB_R24 11 +#define JB_R25 12 + +/* Frame Pointer, Stack Pointer, Branch-n-link. */ +#define JB_FP 13 +#define JB_SP 14 +#define JB_BLINK 15 + +/* We save space for some extra state to accommodate future changes + This is number of words. */ +#define JB_NUM 32 + +/* Helper for generic ____longjmp_chk(). */ +#define JB_FRAME_ADDRESS(buf) ((void *) (unsigned long int) (buf[JB_SP])) diff --git a/sysdeps/arc/jmpbuf-unwind.h b/sysdeps/arc/jmpbuf-unwind.h new file mode 100644 index 00000000000..47be5758c75 --- /dev/null +++ b/sysdeps/arc/jmpbuf-unwind.h @@ -0,0 +1,47 @@ +/* Examine __jmp_buf for unwinding frames. ARC version. + Copyright (C) 2005-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include + +/* Test if longjmp to JMPBUF would unwind the frame + containing a local variable at ADDRESS. */ + +#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \ + ((void *) (address) < (void *) demangle (jmpbuf[JB_SP])) + +#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \ + _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj) + +static inline uintptr_t __attribute__ ((unused)) +_jmpbuf_sp (__jmp_buf jmpbuf) +{ + uintptr_t sp = jmpbuf[JB_SP]; +#ifdef PTR_DEMANGLE + PTR_DEMANGLE (sp); +#endif + return sp; +} + +#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \ + ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf_sp (_jmpbuf) - (_adj))) + +/* We use the normal longjmp for unwinding. */ +#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val) diff --git a/sysdeps/arc/ldsodefs.h b/sysdeps/arc/ldsodefs.h new file mode 100644 index 00000000000..53ef4e1e83d --- /dev/null +++ b/sysdeps/arc/ldsodefs.h @@ -0,0 +1,43 @@ +/* Run-time dynamic linker data structures for loaded ELF shared objects. + Copyright (C) 2000-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _ARC_LDSODEFS_H +#define _ARC_LDSODEFS_H 1 + +#include + +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 + +#endif diff --git a/sysdeps/arc/libc-tls.c b/sysdeps/arc/libc-tls.c new file mode 100644 index 00000000000..903a75a41b5 --- /dev/null +++ b/sysdeps/arc/libc-tls.c @@ -0,0 +1,27 @@ +/* Thread-local storage handling in the ELF dynamic linker. ARC version. + Copyright (C) 2005-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include + +void * +__tls_get_addr (tls_index *ti) +{ + dtv_t *dtv = THREAD_DTV (); + return (char *) dtv[1].pointer.val + ti->ti_offset; +} diff --git a/sysdeps/arc/machine-gmon.h b/sysdeps/arc/machine-gmon.h new file mode 100644 index 00000000000..1d9e8108d9b --- /dev/null +++ b/sysdeps/arc/machine-gmon.h @@ -0,0 +1,35 @@ +/* Machine-dependent definitions for profiling support. ARC version. + Copyright (C) 1996-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include + +#define _MCOUNT_DECL(frompc, selfpc) \ +static void \ +__mcount_internal (unsigned long int frompc, unsigned long int selfpc) + +/* This is very simple as gcc does all the heavy lifting at _mcount call site + - sets up caller's blink in r0, so frompc is setup correctly + - preserve argument registers for original call. */ + +#define MCOUNT \ +void \ +_mcount (void *frompc) \ +{ \ + __mcount_internal ((unsigned long int) frompc, \ + (unsigned long int) __builtin_return_address(0)); \ +} diff --git a/sysdeps/arc/memusage.h b/sysdeps/arc/memusage.h new file mode 100644 index 00000000000..29f234f5bac --- /dev/null +++ b/sysdeps/arc/memusage.h @@ -0,0 +1,23 @@ +/* Machine-specific definitions for memory usage profiling, ARC version. + Copyright (C) 2000-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#define GETSP() ({ register uintptr_t stack_ptr asm ("sp"); stack_ptr; }) + +#define uatomic32_t unsigned int + +#include diff --git a/sysdeps/arc/nofpu/Implies b/sysdeps/arc/nofpu/Implies new file mode 100644 index 00000000000..abcbadb25f2 --- /dev/null +++ b/sysdeps/arc/nofpu/Implies @@ -0,0 +1 @@ +ieee754/soft-fp diff --git a/sysdeps/arc/nofpu/libm-test-ulps b/sysdeps/arc/nofpu/libm-test-ulps new file mode 100644 index 00000000000..0e8ef313fa9 --- /dev/null +++ b/sysdeps/arc/nofpu/libm-test-ulps @@ -0,0 +1,390 @@ +# Begin of automatic generation + +# Maximal error of functions: +Function: "acos": +float: 1 +ifloat: 1 + +Function: "acosh": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 + +Function: "asin": +float: 1 +ifloat: 1 + +Function: "asinh": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: "atan": +float: 1 +ifloat: 1 + +Function: "atan2": +float: 1 +ifloat: 1 + +Function: "atanh": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 + +Function: "cabs": +double: 1 +idouble: 1 + +Function: Real part of "cacos": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 + +Function: Imaginary part of "cacos": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 + +Function: Real part of "cacosh": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 + +Function: Imaginary part of "cacosh": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 + +Function: "carg": +float: 1 +ifloat: 1 + +Function: Real part of "casin": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Imaginary part of "casin": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 + +Function: Real part of "casinh": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 + +Function: Imaginary part of "casinh": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Real part of "catan": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Imaginary part of "catan": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Real part of "catanh": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Imaginary part of "catanh": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: "cbrt": +double: 3 +float: 1 +idouble: 3 +ifloat: 1 + +Function: Real part of "ccos": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Imaginary part of "ccos": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Real part of "ccosh": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Imaginary part of "ccosh": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Real part of "cexp": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 + +Function: Imaginary part of "cexp": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 + +Function: Real part of "clog": +double: 3 +float: 3 +idouble: 3 +ifloat: 3 + +Function: Imaginary part of "clog": +float: 1 +ifloat: 1 + +Function: Real part of "clog10": +double: 3 +float: 4 +idouble: 3 +ifloat: 4 + +Function: Imaginary part of "clog10": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 + +Function: "cos": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: "cosh": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Real part of "cpow": +double: 2 +float: 5 +idouble: 2 +ifloat: 5 + +Function: Imaginary part of "cpow": +float: 2 +ifloat: 2 + +Function: Real part of "csin": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Real part of "csinh": +float: 1 +ifloat: 1 + +Function: Imaginary part of "csinh": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Real part of "csqrt": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 + +Function: Imaginary part of "csqrt": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 + +Function: Real part of "ctan": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: Imaginary part of "ctan": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 + +Function: Real part of "ctanh": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 + +Function: Imaginary part of "ctanh": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 + +Function: "erf": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: "erfc": +double: 3 +float: 2 +idouble: 3 +ifloat: 2 + +Function: "exp10": +double: 2 +idouble: 2 + +Function: "exp2": +double: 1 +idouble: 1 + +Function: "expm1": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: "gamma": +double: 4 +float: 3 +idouble: 4 +ifloat: 3 + +Function: "hypot": +double: 1 +idouble: 1 + +Function: "j0": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 + +Function: "j1": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 + +Function: "jn": +double: 4 +float: 4 +idouble: 4 +ifloat: 4 + +Function: "lgamma": +double: 4 +float: 3 +idouble: 4 +ifloat: 3 + +Function: "log10": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 + +Function: "log1p": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: "log2": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 + +Function: "pow": +double: 1 +idouble: 1 + +Function: "sin": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: "sincos": +double: 1 +float: 1 +idouble: 1 +ifloat: 1 + +Function: "sinh": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 + +Function: "tan": +float: 1 +ifloat: 1 + +Function: "tanh": +double: 2 +float: 2 +idouble: 2 +ifloat: 2 + +Function: "tgamma": +double: 5 +float: 4 +idouble: 5 +ifloat: 4 + +Function: "y0": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 + +Function: "y1": +double: 3 +float: 2 +idouble: 3 +ifloat: 2 + +Function: "yn": +double: 3 +float: 3 +idouble: 3 +ifloat: 3 + +# end of automatic generation diff --git a/sysdeps/arc/nofpu/libm-test-ulps-name b/sysdeps/arc/nofpu/libm-test-ulps-name new file mode 100644 index 00000000000..8c4fba4f9ae --- /dev/null +++ b/sysdeps/arc/nofpu/libm-test-ulps-name @@ -0,0 +1 @@ +ARC diff --git a/sysdeps/arc/nofpu/math-tests-exceptions.h b/sysdeps/arc/nofpu/math-tests-exceptions.h new file mode 100644 index 00000000000..f5c0b73589e --- /dev/null +++ b/sysdeps/arc/nofpu/math-tests-exceptions.h @@ -0,0 +1,27 @@ +/* Configuration for math tests. exceptions support ARC version. + Copyright (C) 2017-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef ARC_NOFPU_MATH_TESTS_EXCEPTIONS_H +#define ARC_NOFPU_MATH_TESTS_EXCEPTIONS_H 1 + +/* Soft-float doesnot support exceptions. */ +#define EXCEPTION_TESTS_float 0 +#define EXCEPTION_TESTS_double 0 +#define EXCEPTION_TESTS_long_double 0 + +#endif diff --git a/sysdeps/arc/nofpu/math-tests-rounding.h b/sysdeps/arc/nofpu/math-tests-rounding.h new file mode 100644 index 00000000000..e8f76338b1e --- /dev/null +++ b/sysdeps/arc/nofpu/math-tests-rounding.h @@ -0,0 +1,27 @@ +/* Configuration for math tests: rounding mode support. ARC version. + Copyright (C) 2017-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef ARC_NOFPU_MATH_TESTS_ROUNDING_H +#define ARC_NOFPU_MATH_TESTS_ROUNDING_H 1 + +/* Soft-float only supports to-nearest rounding mode. */ +#define ROUNDING_TESTS_float(MODE) ((MODE) == FE_TONEAREST) +#define ROUNDING_TESTS_double(MODE) ((MODE) == FE_TONEAREST) +#define ROUNDING_TESTS_long_double(MODE) ((MODE) == FE_TONEAREST) + +#endif diff --git a/sysdeps/arc/nptl/Makefile b/sysdeps/arc/nptl/Makefile new file mode 100644 index 00000000000..3c33c9cc112 --- /dev/null +++ b/sysdeps/arc/nptl/Makefile @@ -0,0 +1,22 @@ +# NPTL makefile fragment for ARC. +# Copyright (C) 2005-2019 Free Software Foundation, Inc. +# +# This file is part of the GNU C Library. +# +# The GNU C Library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# The GNU C Library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library. If not, see +# . + +ifeq ($(subdir),csu) +gen-as-const-headers += tcb-offsets.sym +endif diff --git a/sysdeps/arc/nptl/bits/pthreadtypes-arch.h b/sysdeps/arc/nptl/bits/pthreadtypes-arch.h new file mode 100644 index 00000000000..eae884f61cf --- /dev/null +++ b/sysdeps/arc/nptl/bits/pthreadtypes-arch.h @@ -0,0 +1,71 @@ +/* Machine-specific pthread type layouts. ARC version. + Copyright (C) 2012-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _BITS_PTHREADTYPES_ARCH_H +#define _BITS_PTHREADTYPES_ARCH_H 1 + +#include + +#define __SIZEOF_PTHREAD_ATTR_T 32 +#define __SIZEOF_PTHREAD_MUTEX_T 32 +#define __SIZEOF_PTHREAD_MUTEXATTR_T 4 +#define __SIZEOF_PTHREAD_COND_T 48 +#define __SIZEOF_PTHREAD_CONDATTR_T 4 +#define __SIZEOF_PTHREAD_RWLOCK_T 32 +#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8 +#define __SIZEOF_PTHREAD_BARRIER_T 20 +#define __SIZEOF_PTHREAD_BARRIERATTR_T 4 + +#define __PTHREAD_COMPAT_PADDING_MID +#define __PTHREAD_COMPAT_PADDING_END +#define __PTHREAD_MUTEX_LOCK_ELISION 0 +#define __PTHREAD_MUTEX_NUSERS_AFTER_KIND 0 +#define __PTHREAD_MUTEX_USE_UNION 0 + +#define __LOCK_ALIGNMENT +#define __ONCE_ALIGNMENT + +struct __pthread_rwlock_arch_t +{ + unsigned int __readers; + unsigned int __writers; + unsigned int __wrphase_futex; + unsigned int __writers_futex; + unsigned int __pad3; + unsigned int __pad4; +#if __BYTE_ORDER == __BIG_ENDIAN + unsigned char __pad1; + unsigned char __pad2; + unsigned char __shared; + /* FLAGS must stay at this position in the structure to maintain + binary compatibility. */ + unsigned char __flags; +#else + /* FLAGS must stay at this position in the structure to maintain + binary compatibility. */ + unsigned char __flags; + unsigned char __shared; + unsigned char __pad1; + unsigned char __pad2; +#endif + int __cur_writer; +}; + +#define __PTHREAD_RWLOCK_ELISION_EXTRA 0 + +#endif /* bits/pthreadtypes-arch.h */ diff --git a/sysdeps/arc/nptl/bits/semaphore.h b/sysdeps/arc/nptl/bits/semaphore.h new file mode 100644 index 00000000000..662d08401d0 --- /dev/null +++ b/sysdeps/arc/nptl/bits/semaphore.h @@ -0,0 +1,32 @@ +/* Machine-specific POSIX semaphore type layouts. ARC version. + Copyright (C) 2002-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _SEMAPHORE_H +# error "Never use directly; include instead." +#endif + +#define __SIZEOF_SEM_T 16 + +/* Value returned if `sem_open' failed. */ +#define SEM_FAILED ((sem_t *) 0) + +typedef union +{ + char __size[__SIZEOF_SEM_T]; + long int __align; +} sem_t; diff --git a/sysdeps/arc/nptl/pthread-offsets.h b/sysdeps/arc/nptl/pthread-offsets.h new file mode 100644 index 00000000000..c363e8cda8d --- /dev/null +++ b/sysdeps/arc/nptl/pthread-offsets.h @@ -0,0 +1,4 @@ +#define __PTHREAD_MUTEX_NUSERS_OFFSET 12 +#define __PTHREAD_MUTEX_KIND_OFFSET 16 +#define __PTHREAD_MUTEX_SPINS_OFFSET 20 +#define __PTHREAD_MUTEX_LIST_OFFSET 24 diff --git a/sysdeps/arc/nptl/pthreaddef.h b/sysdeps/arc/nptl/pthreaddef.h new file mode 100644 index 00000000000..80a109bbd52 --- /dev/null +++ b/sysdeps/arc/nptl/pthreaddef.h @@ -0,0 +1,32 @@ +/* pthread machine parameter definitions, ARC version. + Copyright (C) 2002-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +/* Default stack size. */ +#define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024) + +/* Required stack pointer alignment at beginning. */ +#define STACK_ALIGN 4 + +/* Minimal stack size after allocating thread descriptor and guard size. */ +#define MINIMAL_REST_STACK 2048 + +/* Alignment requirement for TCB. */ +#define TCB_ALIGNMENT 4 + +/* Location of current stack frame. */ +#define CURRENT_STACK_FRAME __builtin_frame_address (0) diff --git a/sysdeps/arc/nptl/tcb-offsets.sym b/sysdeps/arc/nptl/tcb-offsets.sym new file mode 100644 index 00000000000..56950e0676e --- /dev/null +++ b/sysdeps/arc/nptl/tcb-offsets.sym @@ -0,0 +1,11 @@ +#include +#include + +-- Derive offsets relative to the thread register. +#define thread_offsetof(mem) (long)(offsetof(struct pthread, mem) - sizeof(struct pthread)) + +MULTIPLE_THREADS_OFFSET offsetof (struct pthread, header.multiple_threads) +TLS_PRE_TCB_SIZE sizeof (struct pthread) +TLS_TCB_SIZE sizeof(tcbhead_t) + +PTHREAD_TID offsetof(struct pthread, tid) diff --git a/sysdeps/arc/nptl/tls.h b/sysdeps/arc/nptl/tls.h new file mode 100644 index 00000000000..2c90109d570 --- /dev/null +++ b/sysdeps/arc/nptl/tls.h @@ -0,0 +1,150 @@ +/* Definition for thread-local data handling. NPTL/ARC version. + Copyright (C) 2012-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _ARC_NPTL_TLS_H +#define _ARC_NPTL_TLS_H 1 + +#include + +#ifndef __ASSEMBLER__ +# include +# include +# include + +#include + +/* Get system call information. */ +# include + +/* 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 + +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 + +# r25 is dedicated TLS register for ARC +.macro THREAD_SELF reg + # struct pthread is just ahead of TCB + sub \reg, r25, TLS_PRE_TCB_SIZE +.endm + +#endif /* __ASSEMBLER__ */ + +#endif /* tls.h */ diff --git a/sysdeps/arc/preconfigure b/sysdeps/arc/preconfigure new file mode 100644 index 00000000000..1152a179c4a --- /dev/null +++ b/sysdeps/arc/preconfigure @@ -0,0 +1,14 @@ +case "$machine" in +arc*) + base_machine=arc + machine=arc + + gccfloat=`$CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null | grep __ARC_FPU_| wc -l` + if test "$gccfloat" != "0"; then + echo "glibc being configured for double precision floating point" + with_fp_cond=1 + else + with_fp_cond=0 + fi + ;; +esac diff --git a/sysdeps/arc/setjmp.S b/sysdeps/arc/setjmp.S new file mode 100644 index 00000000000..518545a99e8 --- /dev/null +++ b/sysdeps/arc/setjmp.S @@ -0,0 +1,66 @@ +/* setjmp for ARC. + Copyright (C) 1991-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + + +#include + +/* Upon entry r0 = jump buffer into which regs will be saved. */ +ENTRY (setjmp) + b.d __sigsetjmp + mov r1, 1 ; save signals +END (setjmp) + +/* Upon entry r0 = jump buffer into which regs will be saved. */ +ENTRY (_setjmp) + b.d __sigsetjmp + mov r1, 0 /* don't save signals. */ +END (_setjmp) +libc_hidden_def (_setjmp) + +/* Upon entry + r0 = jump buffer into which regs will be saved + r1 = do we need to save signals. */ +ENTRY (__sigsetjmp) + + st_s r13, [r0] + st_s r14, [r0,4] + st r15, [r0,8] + st r16, [r0,12] + st r17, [r0,16] + st r18, [r0,20] + st r19, [r0,24] + st r20, [r0,28] + st r21, [r0,32] + st r22, [r0,36] + st r23, [r0,40] + st r24, [r0,44] + st r25, [r0,48] + st fp, [r0,52] + st sp, [r0,56] + + /* Make a note of where longjmp will return to. + that will be right next to this setjmp call-site which will be + contained in blink, since "C" caller of this routine will do + a branch-n-link */ + + st blink, [r0,60] + b __sigjmp_save + +END (__sigsetjmp) + +libc_hidden_def (__sigsetjmp) diff --git a/sysdeps/arc/sfp-machine.h b/sysdeps/arc/sfp-machine.h new file mode 100644 index 00000000000..5ceaf56a988 --- /dev/null +++ b/sysdeps/arc/sfp-machine.h @@ -0,0 +1,73 @@ +/* Machine-dependent software floating-point definitions. ARC version. + Copyright (C) 2004-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Richard Henderson (rth@cygnus.com), + Jakub Jelinek (jj@ultra.linux.cz) and + David S. Miller (davem@redhat.com). + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + + +#define _FP_W_TYPE_SIZE 32 +#define _FP_W_TYPE unsigned long +#define _FP_WS_TYPE signed long +#define _FP_I_TYPE long + +#define _FP_MUL_MEAT_S(R,X,Y) \ + _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm) +#define _FP_MUL_MEAT_D(R,X,Y) \ + _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm) +#define _FP_MUL_MEAT_Q(R,X,Y) \ + _FP_MUL_MEAT_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm) + +#define _FP_MUL_MEAT_DW_S(R,X,Y) \ + _FP_MUL_MEAT_DW_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm) +#define _FP_MUL_MEAT_DW_D(R,X,Y) \ + _FP_MUL_MEAT_DW_2_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm) +#define _FP_MUL_MEAT_DW_Q(R,X,Y) \ + _FP_MUL_MEAT_DW_4_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm) + +#define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_loop(S,R,X,Y) +#define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y) +#define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y) + +#define _FP_NANFRAC_S ((_FP_QNANBIT_S << 1) - 1) +#define _FP_NANFRAC_D ((_FP_QNANBIT_D << 1) - 1), -1 +#define _FP_NANFRAC_Q ((_FP_QNANBIT_Q << 1) - 1), -1, -1, -1 +#define _FP_NANSIGN_S 0 +#define _FP_NANSIGN_D 0 +#define _FP_NANSIGN_Q 0 + +#define _FP_KEEPNANFRACP 1 +#define _FP_QNANNEGATEDP 0 + +/* This is arbitrarily taken from the PowerPC version. */ +#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \ + do { \ + if ((_FP_FRAC_HIGH_RAW_##fs(X) & _FP_QNANBIT_##fs) \ + && !(_FP_FRAC_HIGH_RAW_##fs(Y) & _FP_QNANBIT_##fs)) \ + { \ + R##_s = Y##_s; \ + _FP_FRAC_COPY_##wc(R,Y); \ + } \ + else \ + { \ + R##_s = X##_s; \ + _FP_FRAC_COPY_##wc(R,X); \ + } \ + R##_c = FP_CLS_NAN; \ + } while (0) + +#define _FP_TININESS_AFTER_ROUNDING 0 diff --git a/sysdeps/arc/sotruss-lib.c b/sysdeps/arc/sotruss-lib.c new file mode 100644 index 00000000000..ffbb5bbd6d0 --- /dev/null +++ b/sysdeps/arc/sotruss-lib.c @@ -0,0 +1,51 @@ +/* Override generic sotruss-lib.c to define actual functions for ARC. + Copyright (C) 2017-2019 Free Software Foundation, Inc. + + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#define HAVE_ARCH_PLTENTER +#define HAVE_ARCH_PLTEXIT + +#include + +ElfW(Addr) +la_arc_gnu_pltenter (ElfW(Sym) *sym __attribute__ ((unused)), + unsigned int ndx __attribute__ ((unused)), + uintptr_t *refcook, uintptr_t *defcook, + La_arc_regs *regs, unsigned int *flags, + const char *symname, long int *framesizep) +{ + print_enter (refcook, defcook, symname, + regs->lr_reg[0], regs->lr_reg[1], regs->lr_reg[2], + *flags); + + /* No need to copy anything, we will not need the parameters in any case. */ + *framesizep = 0; + + return sym->st_value; +} + +unsigned int +la_arc_gnu_pltexit (ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook, + uintptr_t *defcook, + const struct La_arc_regs *inregs, + struct La_arc_retval *outregs, const char *symname) +{ + print_exit (refcook, defcook, symname, outregs->lrv_reg[0]); + + return 0; +} diff --git a/sysdeps/arc/stackinfo.h b/sysdeps/arc/stackinfo.h new file mode 100644 index 00000000000..fe69161382a --- /dev/null +++ b/sysdeps/arc/stackinfo.h @@ -0,0 +1,33 @@ +/* Stack environment definitions for ARC. + Copyright (C) 2012-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +/* This file contains a bit of information about the stack allocation + of the processor. */ + +#ifndef _STACKINFO_H +#define _STACKINFO_H 1 + +#include + +/* On ARC the stack grows down. */ +#define _STACK_GROWS_DOWN 1 + +/* Default to a non-executable stack. */ +#define DEFAULT_STACK_PERMS (PF_R|PF_W) + +#endif /* stackinfo.h */ diff --git a/sysdeps/arc/start.S b/sysdeps/arc/start.S new file mode 100644 index 00000000000..4ade1e871f6 --- /dev/null +++ b/sysdeps/arc/start.S @@ -0,0 +1,89 @@ +/* Startup code for ARC. + Copyright (C) 1995-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + In addition to the permissions in the GNU Lesser General Public + License, the Free Software Foundation gives you unlimited + permission to link the compiled version of this file with other + programs, and to distribute those programs without any restriction + coming from the use of this file. (The GNU Lesser General Public + License restrictions do apply in other respects; for example, they + cover modification of the file, and distribution when not linked + into another program.) + + Note that people who make modified versions of this file are not + obligated to grant this special exception for their modified + versions; it is their choice whether to do so. The GNU Lesser + General Public License gives permission to release a modified + version without this exception; this exception also makes it + possible to release a modified version which carries forward this + exception. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + + +#define __ASSEMBLY__ 1 +#include +#ifndef ENTRY_POINT +# error ENTRY_POINT needs to be defined for ARC +#endif + +/* When we enter this piece of code, the program stack looks like this: + argc argument counter (integer) + argv[0] program name (pointer) + argv[1...N] program args (pointers) + argv[argc-1] end of args (integer) + NULL + env[0...N] environment variables (pointers) + NULL. */ + + .text + .align 4 + .global __start + .type __start,@function +__start: + mov fp, 0 + ld_s r1, [sp] ; argc + + mov_s r5, r0 ; rltd_fini + add_s r2, sp, 4 ; argv + and sp, sp, -8 + mov r6, sp + + /* __libc_start_main (main, argc, argv, init, fini, rtld_fini, stack_end). */ + +#ifdef SHARED + ld r0, [pcl, @main@gotpc] + ld r3, [pcl, @__libc_csu_init@gotpc] + ld r4, [pcl, @__libc_csu_fini@gotpc] + bl __libc_start_main@plt +#else + mov_s r0, main + mov_s r3, __libc_csu_init + mov r4, __libc_csu_fini + bl __libc_start_main +#endif + + /* Should never get here. */ + flag 1 + .size __start,.-__start + +/* Define a symbol for the first piece of initialized data. */ + .data + .globl __data_start +__data_start: + .long 0 + .weak data_start + data_start = __data_start diff --git a/sysdeps/arc/sysdep.h b/sysdeps/arc/sysdep.h new file mode 100644 index 00000000000..127e9b01e73 --- /dev/null +++ b/sysdeps/arc/sysdep.h @@ -0,0 +1,48 @@ +/* Assembler macros for ARC. + Copyright (C) 2017-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include + +#ifdef __ASSEMBLER__ + +/* Syntactic details of assembler. + ; is not newline but comment, # is also for comment. */ +# define ASM_SIZE_DIRECTIVE(name) .size name,.-name + +# define ENTRY(name) \ + .align 4 ASM_LINE_SEP \ + .globl C_SYMBOL_NAME(name) ASM_LINE_SEP \ + .type C_SYMBOL_NAME(name),%function ASM_LINE_SEP \ + C_LABEL(name) ASM_LINE_SEP \ + cfi_startproc ASM_LINE_SEP \ + CALL_MCOUNT + +# undef END +# define END(name) \ + cfi_endproc ASM_LINE_SEP \ + ASM_SIZE_DIRECTIVE(name) + +# ifdef SHARED +# define PLTJMP(_x) _x##@plt +# else +# define PLTJMP(_x) _x +# endif + +# define CALL_MCOUNT /* Do nothing for now. */ + +#endif /* __ASSEMBLER__ */ diff --git a/sysdeps/arc/tls-macros.h b/sysdeps/arc/tls-macros.h new file mode 100644 index 00000000000..4d54683eda4 --- /dev/null +++ b/sysdeps/arc/tls-macros.h @@ -0,0 +1,47 @@ +/* Macros to support TLS testing in times of missing compiler support. ARC version. + Copyright (C) 2017-2019 Free Software Foundation, Inc. + + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + + +/* For now. */ +#define TLS_LD(x) TLS_IE(x) + +#define TLS_GD(x) \ + ({ int *__result; \ + __asm__ ("add r0, pcl, @" #x "@tlsgd \n" \ + ".tls_gd_ld " #x "`bl __tls_get_addr@plt \n" \ + "mov %0, r0 \n" \ + : "=&r" (__result) \ + ::"r0","r1","r2","r3","r4","r5","r6","r7", \ + "r8","r9","r10","r11","r12"); \ + __result; }) + +#define TLS_LE(x) \ + ({ int *__result; \ + void *tp = __builtin_thread_pointer(); \ + __asm__ ("add %0, %1, @" #x "@tpoff \n" \ + : "=r" (__result) : "r"(tp)); \ + __result; }) + +#define TLS_IE(x) \ + ({ int *__result; \ + void *tp = __builtin_thread_pointer(); \ + __asm__ ("ld %0, [pcl, @" #x "@tlsie] \n" \ + "add %0, %1, %0 \n" \ + : "=&r" (__result) : "r" (tp)); \ + __result; }) diff --git a/sysdeps/arc/tst-audit.h b/sysdeps/arc/tst-audit.h new file mode 100644 index 00000000000..9237ad2440c --- /dev/null +++ b/sysdeps/arc/tst-audit.h @@ -0,0 +1,23 @@ +/* Definitions for testing PLT entry/exit auditing. ARC version. + Copyright (C) 2009-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#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 e39b2d6d521..6a5c10d54e8 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 00000000000..7f739a0340b --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/Implies @@ -0,0 +1,3 @@ +arc/nptl +unix/sysv/linux/generic/wordsize-32 +unix/sysv/linux/generic diff --git a/sysdeps/unix/sysv/linux/arc/Makefile b/sysdeps/unix/sysv/linux/arc/Makefile new file mode 100644 index 00000000000..a6c6dfc6ec6 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/Makefile @@ -0,0 +1,20 @@ +ifeq ($(subdir),stdlib) +gen-as-const-headers += ucontext_i.sym +endif + +ifeq ($(subdir),signal) +sysdep_routines += sigrestorer +endif + +ifeq ($(subdir),misc) +# MIPS/Tile-style cacheflush routine +sysdep_headers += sys/cachectl.h +sysdep_routines += cacheflush +endif + +ifeq ($(subdir),elf) +ifeq ($(build-shared),yes) +# This is needed for DSO loading from static binaries. +sysdep-dl-routines += dl-static +endif +endif diff --git a/sysdeps/unix/sysv/linux/arc/Versions b/sysdeps/unix/sysv/linux/arc/Versions new file mode 100644 index 00000000000..3d12161f7fe --- /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.29 { + _flush_cache; + cacheflush; + } + GLIBC_PRIVATE { + # A copy of sigaction lives in libpthread, and needs these. + __default_rt_sa_restorer; + } +} diff --git a/sysdeps/unix/sysv/linux/arc/bits/procfs.h b/sysdeps/unix/sysv/linux/arc/bits/procfs.h new file mode 100644 index 00000000000..b37deaee587 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/bits/procfs.h @@ -0,0 +1,35 @@ +/* Types for registers for sys/procfs.h. ARC version. + Copyright (C) 1996-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _SYS_PROCFS_H +# error "Never include directly; use instead." +#endif + +#include + +/* And the whole bunch of them. We could have used `struct + user_regs' directly in the typedef, but tradition says that + the register set is an array, which does have some peculiar + semantics, so leave it that way. */ +#define ELF_NGREG (sizeof (struct user_regs_struct) / sizeof(elf_greg_t)) + +typedef unsigned long int elf_greg_t; +typedef unsigned long int elf_gregset_t[ELF_NGREG]; + +/* There's no seperate floating point reg file in ARCv2. */ +typedef struct { } elf_fpregset_t; diff --git a/sysdeps/unix/sysv/linux/arc/bits/types/__sigset_t.h b/sysdeps/unix/sysv/linux/arc/bits/types/__sigset_t.h new file mode 100644 index 00000000000..795638a30bd --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/bits/types/__sigset_t.h @@ -0,0 +1,12 @@ +/* Architecture-specific __sigset_t definition. ARC version. */ +#ifndef ____sigset_t_defined +#define ____sigset_t_defined + +/* Linux asm-generic syscall ABI expects sigset_t to hold 64 signals. */ +#define _SIGSET_NWORDS (64 / (8 * sizeof (unsigned long int))) +typedef struct +{ + unsigned long int __val[_SIGSET_NWORDS]; +} __sigset_t; + +#endif diff --git a/sysdeps/unix/sysv/linux/arc/c++-types.data b/sysdeps/unix/sysv/linux/arc/c++-types.data new file mode 100644 index 00000000000..303f4570c8e --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/c++-types.data @@ -0,0 +1,67 @@ +blkcnt64_t:x +blkcnt_t:l +blksize_t:i +caddr_t:Pc +clockid_t:i +clock_t:l +daddr_t:i +dev_t:y +fd_mask:l +fsblkcnt64_t:y +fsblkcnt_t:m +fsfilcnt64_t:y +fsfilcnt_t:m +fsid_t:8__fsid_t +gid_t:j +id_t:j +ino64_t:y +ino_t:m +int16_t:s +int32_t:i +int64_t:x +int8_t:a +intptr_t:i +key_t:i +loff_t:x +mode_t:j +nlink_t:j +off64_t:x +off_t:l +pid_t:i +pthread_attr_t:14pthread_attr_t +pthread_barrier_t:17pthread_barrier_t +pthread_barrierattr_t:21pthread_barrierattr_t +pthread_cond_t:14pthread_cond_t +pthread_condattr_t:18pthread_condattr_t +pthread_key_t:j +pthread_mutex_t:15pthread_mutex_t +pthread_mutexattr_t:19pthread_mutexattr_t +pthread_once_t:i +pthread_rwlock_t:16pthread_rwlock_t +pthread_rwlockattr_t:20pthread_rwlockattr_t +pthread_spinlock_t:i +pthread_t:m +quad_t:x +register_t:i +rlim64_t:y +rlim_t:m +sigset_t:10__sigset_t +size_t:j +socklen_t:j +ssize_t:i +suseconds_t:l +time_t:l +u_char:h +uid_t:j +uint:j +u_int:j +u_int16_t:t +u_int32_t:j +u_int64_t:y +u_int8_t:h +ulong:m +u_long:m +u_quad_t:y +useconds_t:j +ushort:t +u_short:t diff --git a/sysdeps/unix/sysv/linux/arc/clone.S b/sysdeps/unix/sysv/linux/arc/clone.S new file mode 100644 index 00000000000..55c2a2b60ed --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/clone.S @@ -0,0 +1,98 @@ +/* clone() implementation for ARC. + Copyright (C) 2008-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Andrew Jenner , 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 + . */ + + +#include +#define _ERRNO_H 1 +#include +#include + +#define CLONE_SETTLS 0x00080000 + +/* int clone(int (*fn)(void *), void *child_stack, + int flags, void *arg, ... + < pid_t *ptid, struct user_desc *tls, pid_t *ctid > ); + + NOTE: I'm assuming that the last 3 args are NOT var-args and in case all + 3 are not relevant, caller will nevertheless pass those as NULL. + + clone syscall in kernel (ABI: CONFIG_CLONE_BACKWARDS) + + int sys_clone(unsigned long int clone_flags, + unsigned long int newsp, + int __user *parent_tidptr, + void *tls, + int __user *child_tidptr). */ + +ENTRY (__clone) + cmp r0, 0 ; @fn can't be NULL + cmp.ne r1, 0 ; @child_stack can't be NULL + bz .L__sys_err + + ; save some of the orig args + ; r0 containg @fn will be clobbered AFTER syscall (with ret val) + ; rest are clobbered BEFORE syscall due to different arg ordering + mov r10, r0 ; @fn + mov r11, r3 ; @args + mov r12, r2 ; @clone_flags + mov r9, r5 ; @tls + + ; adjust libc args for syscall + + mov r0, r2 ; libc @flags is 1st syscall arg + mov r2, r4 ; libc @ptid + mov r3, r5 ; libc @tls + mov r4, r6 ; libc @ctid + mov r8, __NR_clone + ARC_TRAP_INSN + + cmp r0, 0 ; return code : 0 new process, !0 parent + blt .L__sys_err2 ; < 0 (signed) error + jnz [blink] ; Parent returns + + ; ----- child starts here --------- + + ; Setup TP register (only recent kernels v4.19+ do that) + and.f 0, r12, CLONE_SETTLS + mov.nz r25, r9 + + ; child jumps off to @fn with @arg as argument, and returns here + jl.d [r10] + mov r0, r11 + + ; exit() with result from @fn (already in r0) + mov r8, __NR_exit + ARC_TRAP_INSN + ; In case it ever came back + flag 1 + +.L__sys_err: + mov r0, -EINVAL +.L__sys_err2: + ; (1) No need to make -ve kernel error code as positive errno + ; __syscall_error expects the -ve error code returned by kernel + ; (2) r0 still had orig -ve kernel error code + ; (3) Tail call to __syscall_error so we dont have to come back + ; here hence instead of jmp-n-link (reg push/pop) we do jmp + ; (4) No need to route __syscall_error via PLT, B is inherently + ; position independent + b __syscall_error +PSEUDO_END (__clone) +libc_hidden_def (__clone) +weak_alias (__clone, clone) diff --git a/sysdeps/unix/sysv/linux/arc/configure b/sysdeps/unix/sysv/linux/arc/configure new file mode 100644 index 00000000000..f74fa7cb025 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/configure @@ -0,0 +1,4 @@ +# This file is generated from configure.in by Autoconf. DO NOT EDIT! + # Local configure fragment for sysdeps/unix/sysv/linux/arc. + +arch_minimum_kernel=3.9.0 diff --git a/sysdeps/unix/sysv/linux/arc/configure.ac b/sysdeps/unix/sysv/linux/arc/configure.ac new file mode 100644 index 00000000000..a9528032d32 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/configure.ac @@ -0,0 +1,4 @@ +GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. +# Local configure fragment for sysdeps/unix/sysv/linux/arc. + +arch_minimum_kernel=3.9.0 diff --git a/sysdeps/unix/sysv/linux/arc/dl-static.c b/sysdeps/unix/sysv/linux/arc/dl-static.c new file mode 100644 index 00000000000..1a8757c9840 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/dl-static.c @@ -0,0 +1,84 @@ +/* Variable initialization. ARC version. + Copyright (C) 2001-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include + +#ifdef SHARED + +void +_dl_var_init (void *array[]) +{ + /* It has to match "variables" below. */ + enum + { + DL_PAGESIZE = 0 + }; + + GLRO(dl_pagesize) = *((size_t *) array[DL_PAGESIZE]); +} + +#else + +static void *variables[] = +{ + &GLRO(dl_pagesize) +}; + +static void +_dl_unprotect_relro (struct link_map *l) +{ + ElfW(Addr) start = ((l->l_addr + l->l_relro_addr) + & ~(GLRO(dl_pagesize) - 1)); + ElfW(Addr) end = ((l->l_addr + l->l_relro_addr + l->l_relro_size) + & ~(GLRO(dl_pagesize) - 1)); + + if (start != end) + __mprotect ((void *) start, end - start, PROT_READ | PROT_WRITE); +} + +void +_dl_static_init (struct link_map *l) +{ + struct link_map *rtld_map = l; + struct r_scope_elem **scope; + const ElfW(Sym) *ref = NULL; + lookup_t loadbase; + void (*f) (void *[]); + size_t i; + + loadbase = _dl_lookup_symbol_x ("_dl_var_init", l, &ref, l->l_local_scope, + NULL, 0, 1, NULL); + + for (scope = l->l_local_scope; *scope != NULL; scope++) + for (i = 0; i < (*scope)->r_nlist; i++) + if ((*scope)->r_list[i] == loadbase) + { + rtld_map = (*scope)->r_list[i]; + break; + } + + if (ref != NULL) + { + f = (void (*) (void *[])) DL_SYMBOL_ADDRESS (loadbase, ref); + _dl_unprotect_relro (rtld_map); + f (variables); + _dl_protect_relro (rtld_map); + } +} + +#endif diff --git a/sysdeps/unix/sysv/linux/arc/getcontext.S b/sysdeps/unix/sysv/linux/arc/getcontext.S new file mode 100644 index 00000000000..723cc237d87 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/getcontext.S @@ -0,0 +1,63 @@ +/* Save current context for ARC. + Copyright (C) 2009-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include "ucontext-macros.h" + +/* int getcontext (ucontext_t *ucp) + Save machine context in @ucp and return 0 on success, -1 on error + - saves callee saved registers only + - layout mandated by uncontext_t:m_context (hence different from setjmp). */ + +ENTRY (__getcontext) + + /* Callee saved registers. */ + SAVE_REG (r13, r0, 37) + SAVE_REG (r14, r0, 36) + SAVE_REG (r15, r0, 35) + SAVE_REG (r16, r0, 34) + SAVE_REG (r17, r0, 33) + SAVE_REG (r18, r0, 32) + SAVE_REG (r19, r0, 31) + SAVE_REG (r20, r0, 30) + SAVE_REG (r21, r0, 29) + SAVE_REG (r22, r0, 28) + SAVE_REG (r23, r0, 27) + SAVE_REG (r24, r0, 26) + SAVE_REG (r25, r0, 25) + + SAVE_REG (blink, r0, 7) + SAVE_REG (fp, r0, 8) + SAVE_REG (sp, r0, 23) + + /* Save 0 in r0 placeholder to return 0 when this @ucp activated. */ + mov r9, 0 + SAVE_REG (r9, r0, 22) + + /* rt_sigprocmask (SIG_BLOCK, NULL, &ucp->uc_sigmask, _NSIG8). */ + mov r3, _NSIG8 + add r2, r0, UCONTEXT_SIGMASK + mov r1, 0 + mov r0, SIG_BLOCK + mov r8, __NR_rt_sigprocmask + ARC_TRAP_INSN + brhi r0, -1024, .Lcall_syscall_err + j.d [blink] + mov r0, 0 /* Success, error handled in .Lcall_syscall_err. */ + +PSEUDO_END (__getcontext) +weak_alias (__getcontext, getcontext) diff --git a/sysdeps/unix/sysv/linux/arc/ipc_priv.h b/sysdeps/unix/sysv/linux/arc/ipc_priv.h new file mode 100644 index 00000000000..309eb3064e9 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/ipc_priv.h @@ -0,0 +1,21 @@ +/* Old SysV permission definition for Linux. ARC version. + Copyright (C) 2016-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include /* For __key_t */ + +#define __IPC_64 0x0 diff --git a/sysdeps/unix/sysv/linux/arc/jmp_buf-macros.h b/sysdeps/unix/sysv/linux/arc/jmp_buf-macros.h new file mode 100644 index 00000000000..6c129398483 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/jmp_buf-macros.h @@ -0,0 +1,6 @@ +#define JMP_BUF_SIZE (32 + 1 + 64/(8 * sizeof (unsigned long int))) * sizeof (unsigned long int) +#define SIGJMP_BUF_SIZE (32 + 1 + 64/(8 * sizeof (unsigned long int))) * sizeof (unsigned long int) +#define JMP_BUF_ALIGN __alignof__ (unsigned long int) +#define SIGJMP_BUF_ALIGN __alignof__ (unsigned long int) +#define MASK_WAS_SAVED_OFFSET (32 * sizeof (unsigned long int)) +#define SAVED_MASK_OFFSET (33 * sizeof (unsigned long int)) diff --git a/sysdeps/unix/sysv/linux/arc/kernel-features.h b/sysdeps/unix/sysv/linux/arc/kernel-features.h new file mode 100644 index 00000000000..00255337bc8 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/kernel-features.h @@ -0,0 +1,28 @@ +/* Set flags signalling availability of kernel features based on given + kernel version number. + + Copyright (C) 2009-2019 Free Software Foundation, Inc. + + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +/* The minimum supported kernel version for ARC is 3.9, + guaranteeing many kernel features. */ + +#include_next + +#undef __ASSUME_CLONE_DEFAULT +#define __ASSUME_CLONE_BACKWARDS 1 diff --git a/sysdeps/unix/sysv/linux/arc/ld.abilist b/sysdeps/unix/sysv/linux/arc/ld.abilist new file mode 100644 index 00000000000..71576160edd --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/ld.abilist @@ -0,0 +1,9 @@ +GLIBC_2.29 __libc_stack_end D 0x4 +GLIBC_2.29 __stack_chk_guard D 0x4 +GLIBC_2.29 __tls_get_addr F +GLIBC_2.29 _dl_mcount F +GLIBC_2.29 _r_debug D 0x14 +GLIBC_2.29 calloc F +GLIBC_2.29 free F +GLIBC_2.29 malloc F +GLIBC_2.29 realloc F diff --git a/sysdeps/unix/sysv/linux/arc/ldsodefs.h b/sysdeps/unix/sysv/linux/arc/ldsodefs.h new file mode 100644 index 00000000000..8c5c6800af1 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/ldsodefs.h @@ -0,0 +1,32 @@ +/* Run-time dynamic linker data structures for loaded ELF shared objects. ARC + Copyright (C) 2001-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _LDSODEFS_H + +/* Get the real definitions. */ +#include_next + +/* Now define our stuff. */ + +/* We need special support to initialize DSO loaded for statically linked + binaries. */ +extern void _dl_static_init (struct link_map *map); +#undef DL_STATIC_INIT +#define DL_STATIC_INIT(map) _dl_static_init (map) + +#endif /* ldsodefs.h */ diff --git a/sysdeps/unix/sysv/linux/arc/libBrokenLocale.abilist b/sysdeps/unix/sysv/linux/arc/libBrokenLocale.abilist new file mode 100644 index 00000000000..96b4163a254 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/libBrokenLocale.abilist @@ -0,0 +1 @@ +GLIBC_2.29 __ctype_get_mb_cur_max F diff --git a/sysdeps/unix/sysv/linux/arc/libanl.abilist b/sysdeps/unix/sysv/linux/arc/libanl.abilist new file mode 100644 index 00000000000..416a6f8ddb2 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/libanl.abilist @@ -0,0 +1,4 @@ +GLIBC_2.29 gai_cancel F +GLIBC_2.29 gai_error F +GLIBC_2.29 gai_suspend F +GLIBC_2.29 getaddrinfo_a F diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist new file mode 100644 index 00000000000..1e9a5dc9f09 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist @@ -0,0 +1,2089 @@ +GLIBC_2.29 _Exit F +GLIBC_2.29 _IO_2_1_stderr_ D 0x98 +GLIBC_2.29 _IO_2_1_stdin_ D 0x98 +GLIBC_2.29 _IO_2_1_stdout_ D 0x98 +GLIBC_2.29 _IO_adjust_column F +GLIBC_2.29 _IO_adjust_wcolumn F +GLIBC_2.29 _IO_default_doallocate F +GLIBC_2.29 _IO_default_finish F +GLIBC_2.29 _IO_default_pbackfail F +GLIBC_2.29 _IO_default_uflow F +GLIBC_2.29 _IO_default_xsgetn F +GLIBC_2.29 _IO_default_xsputn F +GLIBC_2.29 _IO_do_write F +GLIBC_2.29 _IO_doallocbuf F +GLIBC_2.29 _IO_fclose F +GLIBC_2.29 _IO_fdopen F +GLIBC_2.29 _IO_feof F +GLIBC_2.29 _IO_ferror F +GLIBC_2.29 _IO_fflush F +GLIBC_2.29 _IO_fgetpos F +GLIBC_2.29 _IO_fgetpos64 F +GLIBC_2.29 _IO_fgets F +GLIBC_2.29 _IO_file_attach F +GLIBC_2.29 _IO_file_close F +GLIBC_2.29 _IO_file_close_it F +GLIBC_2.29 _IO_file_doallocate F +GLIBC_2.29 _IO_file_finish F +GLIBC_2.29 _IO_file_fopen F +GLIBC_2.29 _IO_file_init F +GLIBC_2.29 _IO_file_jumps D 0x54 +GLIBC_2.29 _IO_file_open F +GLIBC_2.29 _IO_file_overflow F +GLIBC_2.29 _IO_file_read F +GLIBC_2.29 _IO_file_seek F +GLIBC_2.29 _IO_file_seekoff F +GLIBC_2.29 _IO_file_setbuf F +GLIBC_2.29 _IO_file_stat F +GLIBC_2.29 _IO_file_sync F +GLIBC_2.29 _IO_file_underflow F +GLIBC_2.29 _IO_file_write F +GLIBC_2.29 _IO_file_xsputn F +GLIBC_2.29 _IO_flockfile F +GLIBC_2.29 _IO_flush_all F +GLIBC_2.29 _IO_flush_all_linebuffered F +GLIBC_2.29 _IO_fopen F +GLIBC_2.29 _IO_fprintf F +GLIBC_2.29 _IO_fputs F +GLIBC_2.29 _IO_fread F +GLIBC_2.29 _IO_free_backup_area F +GLIBC_2.29 _IO_free_wbackup_area F +GLIBC_2.29 _IO_fsetpos F +GLIBC_2.29 _IO_fsetpos64 F +GLIBC_2.29 _IO_ftell F +GLIBC_2.29 _IO_ftrylockfile F +GLIBC_2.29 _IO_funlockfile F +GLIBC_2.29 _IO_fwrite F +GLIBC_2.29 _IO_getc F +GLIBC_2.29 _IO_getline F +GLIBC_2.29 _IO_getline_info F +GLIBC_2.29 _IO_gets F +GLIBC_2.29 _IO_init F +GLIBC_2.29 _IO_init_marker F +GLIBC_2.29 _IO_init_wmarker F +GLIBC_2.29 _IO_iter_begin F +GLIBC_2.29 _IO_iter_end F +GLIBC_2.29 _IO_iter_file F +GLIBC_2.29 _IO_iter_next F +GLIBC_2.29 _IO_least_wmarker F +GLIBC_2.29 _IO_link_in F +GLIBC_2.29 _IO_list_all D 0x4 +GLIBC_2.29 _IO_list_lock F +GLIBC_2.29 _IO_list_resetlock F +GLIBC_2.29 _IO_list_unlock F +GLIBC_2.29 _IO_marker_delta F +GLIBC_2.29 _IO_marker_difference F +GLIBC_2.29 _IO_padn F +GLIBC_2.29 _IO_peekc_locked F +GLIBC_2.29 _IO_popen F +GLIBC_2.29 _IO_printf F +GLIBC_2.29 _IO_proc_close F +GLIBC_2.29 _IO_proc_open F +GLIBC_2.29 _IO_putc F +GLIBC_2.29 _IO_puts F +GLIBC_2.29 _IO_remove_marker F +GLIBC_2.29 _IO_seekmark F +GLIBC_2.29 _IO_seekoff F +GLIBC_2.29 _IO_seekpos F +GLIBC_2.29 _IO_seekwmark F +GLIBC_2.29 _IO_setb F +GLIBC_2.29 _IO_setbuffer F +GLIBC_2.29 _IO_setvbuf F +GLIBC_2.29 _IO_sgetn F +GLIBC_2.29 _IO_sprintf F +GLIBC_2.29 _IO_sputbackc F +GLIBC_2.29 _IO_sputbackwc F +GLIBC_2.29 _IO_sscanf F +GLIBC_2.29 _IO_str_init_readonly F +GLIBC_2.29 _IO_str_init_static F +GLIBC_2.29 _IO_str_overflow F +GLIBC_2.29 _IO_str_pbackfail F +GLIBC_2.29 _IO_str_seekoff F +GLIBC_2.29 _IO_str_underflow F +GLIBC_2.29 _IO_sungetc F +GLIBC_2.29 _IO_sungetwc F +GLIBC_2.29 _IO_switch_to_get_mode F +GLIBC_2.29 _IO_switch_to_main_wget_area F +GLIBC_2.29 _IO_switch_to_wbackup_area F +GLIBC_2.29 _IO_switch_to_wget_mode F +GLIBC_2.29 _IO_un_link F +GLIBC_2.29 _IO_ungetc F +GLIBC_2.29 _IO_unsave_markers F +GLIBC_2.29 _IO_unsave_wmarkers F +GLIBC_2.29 _IO_vfprintf F +GLIBC_2.29 _IO_vsprintf F +GLIBC_2.29 _IO_wdefault_doallocate F +GLIBC_2.29 _IO_wdefault_finish F +GLIBC_2.29 _IO_wdefault_pbackfail F +GLIBC_2.29 _IO_wdefault_uflow F +GLIBC_2.29 _IO_wdefault_xsgetn F +GLIBC_2.29 _IO_wdefault_xsputn F +GLIBC_2.29 _IO_wdo_write F +GLIBC_2.29 _IO_wdoallocbuf F +GLIBC_2.29 _IO_wfile_jumps D 0x54 +GLIBC_2.29 _IO_wfile_overflow F +GLIBC_2.29 _IO_wfile_seekoff F +GLIBC_2.29 _IO_wfile_sync F +GLIBC_2.29 _IO_wfile_underflow F +GLIBC_2.29 _IO_wfile_xsputn F +GLIBC_2.29 _IO_wmarker_delta F +GLIBC_2.29 _IO_wsetb F +GLIBC_2.29 ___brk_addr D 0x4 +GLIBC_2.29 __adjtimex F +GLIBC_2.29 __after_morecore_hook D 0x4 +GLIBC_2.29 __argz_count F +GLIBC_2.29 __argz_next F +GLIBC_2.29 __argz_stringify F +GLIBC_2.29 __asprintf F +GLIBC_2.29 __asprintf_chk F +GLIBC_2.29 __assert F +GLIBC_2.29 __assert_fail F +GLIBC_2.29 __assert_perror_fail F +GLIBC_2.29 __backtrace F +GLIBC_2.29 __backtrace_symbols F +GLIBC_2.29 __backtrace_symbols_fd F +GLIBC_2.29 __bsd_getpgrp F +GLIBC_2.29 __bzero F +GLIBC_2.29 __check_rhosts_file D 0x4 +GLIBC_2.29 __chk_fail F +GLIBC_2.29 __clone F +GLIBC_2.29 __close F +GLIBC_2.29 __cmsg_nxthdr F +GLIBC_2.29 __confstr_chk F +GLIBC_2.29 __connect F +GLIBC_2.29 __ctype_b_loc F +GLIBC_2.29 __ctype_get_mb_cur_max F +GLIBC_2.29 __ctype_tolower_loc F +GLIBC_2.29 __ctype_toupper_loc F +GLIBC_2.29 __curbrk D 0x4 +GLIBC_2.29 __cxa_at_quick_exit F +GLIBC_2.29 __cxa_atexit F +GLIBC_2.29 __cxa_finalize F +GLIBC_2.29 __cxa_thread_atexit_impl F +GLIBC_2.29 __cyg_profile_func_enter F +GLIBC_2.29 __cyg_profile_func_exit F +GLIBC_2.29 __daylight D 0x4 +GLIBC_2.29 __dcgettext F +GLIBC_2.29 __default_morecore F +GLIBC_2.29 __dgettext F +GLIBC_2.29 __dprintf_chk F +GLIBC_2.29 __dup2 F +GLIBC_2.29 __duplocale F +GLIBC_2.29 __endmntent F +GLIBC_2.29 __environ D 0x4 +GLIBC_2.29 __errno_location F +GLIBC_2.29 __explicit_bzero_chk F +GLIBC_2.29 __fbufsize F +GLIBC_2.29 __fcntl F +GLIBC_2.29 __fdelt_chk F +GLIBC_2.29 __fdelt_warn F +GLIBC_2.29 __ffs F +GLIBC_2.29 __fgets_chk F +GLIBC_2.29 __fgets_unlocked_chk F +GLIBC_2.29 __fgetws_chk F +GLIBC_2.29 __fgetws_unlocked_chk F +GLIBC_2.29 __finite F +GLIBC_2.29 __finitef F +GLIBC_2.29 __flbf F +GLIBC_2.29 __fork F +GLIBC_2.29 __fpending F +GLIBC_2.29 __fprintf_chk F +GLIBC_2.29 __fpu_control D 0x4 +GLIBC_2.29 __fpurge F +GLIBC_2.29 __fread_chk F +GLIBC_2.29 __fread_unlocked_chk F +GLIBC_2.29 __freadable F +GLIBC_2.29 __freading F +GLIBC_2.29 __free_hook D 0x4 +GLIBC_2.29 __freelocale F +GLIBC_2.29 __fsetlocking F +GLIBC_2.29 __fwprintf_chk F +GLIBC_2.29 __fwritable F +GLIBC_2.29 __fwriting F +GLIBC_2.29 __fxstat F +GLIBC_2.29 __fxstat64 F +GLIBC_2.29 __fxstatat F +GLIBC_2.29 __fxstatat64 F +GLIBC_2.29 __getauxval F +GLIBC_2.29 __getcwd_chk F +GLIBC_2.29 __getdelim F +GLIBC_2.29 __getdomainname_chk F +GLIBC_2.29 __getgroups_chk F +GLIBC_2.29 __gethostname_chk F +GLIBC_2.29 __getlogin_r_chk F +GLIBC_2.29 __getmntent_r F +GLIBC_2.29 __getpagesize F +GLIBC_2.29 __getpgid F +GLIBC_2.29 __getpid F +GLIBC_2.29 __gets_chk F +GLIBC_2.29 __gettimeofday F +GLIBC_2.29 __getwd_chk F +GLIBC_2.29 __gmtime_r F +GLIBC_2.29 __h_errno_location F +GLIBC_2.29 __isalnum_l F +GLIBC_2.29 __isalpha_l F +GLIBC_2.29 __isascii_l F +GLIBC_2.29 __isblank_l F +GLIBC_2.29 __iscntrl_l F +GLIBC_2.29 __isctype F +GLIBC_2.29 __isdigit_l F +GLIBC_2.29 __isgraph_l F +GLIBC_2.29 __isinf F +GLIBC_2.29 __isinff F +GLIBC_2.29 __islower_l F +GLIBC_2.29 __isnan F +GLIBC_2.29 __isnanf F +GLIBC_2.29 __isoc99_fscanf F +GLIBC_2.29 __isoc99_fwscanf F +GLIBC_2.29 __isoc99_scanf F +GLIBC_2.29 __isoc99_sscanf F +GLIBC_2.29 __isoc99_swscanf F +GLIBC_2.29 __isoc99_vfscanf F +GLIBC_2.29 __isoc99_vfwscanf F +GLIBC_2.29 __isoc99_vscanf F +GLIBC_2.29 __isoc99_vsscanf F +GLIBC_2.29 __isoc99_vswscanf F +GLIBC_2.29 __isoc99_vwscanf F +GLIBC_2.29 __isoc99_wscanf F +GLIBC_2.29 __isprint_l F +GLIBC_2.29 __ispunct_l F +GLIBC_2.29 __isspace_l F +GLIBC_2.29 __isupper_l F +GLIBC_2.29 __iswalnum_l F +GLIBC_2.29 __iswalpha_l F +GLIBC_2.29 __iswblank_l F +GLIBC_2.29 __iswcntrl_l F +GLIBC_2.29 __iswctype F +GLIBC_2.29 __iswctype_l F +GLIBC_2.29 __iswdigit_l F +GLIBC_2.29 __iswgraph_l F +GLIBC_2.29 __iswlower_l F +GLIBC_2.29 __iswprint_l F +GLIBC_2.29 __iswpunct_l F +GLIBC_2.29 __iswspace_l F +GLIBC_2.29 __iswupper_l F +GLIBC_2.29 __iswxdigit_l F +GLIBC_2.29 __isxdigit_l F +GLIBC_2.29 __ivaliduser F +GLIBC_2.29 __key_decryptsession_pk_LOCAL D 0x4 +GLIBC_2.29 __key_encryptsession_pk_LOCAL D 0x4 +GLIBC_2.29 __key_gendes_LOCAL D 0x4 +GLIBC_2.29 __libc_allocate_rtsig F +GLIBC_2.29 __libc_calloc F +GLIBC_2.29 __libc_current_sigrtmax F +GLIBC_2.29 __libc_current_sigrtmin F +GLIBC_2.29 __libc_free F +GLIBC_2.29 __libc_freeres F +GLIBC_2.29 __libc_init_first F +GLIBC_2.29 __libc_mallinfo F +GLIBC_2.29 __libc_malloc F +GLIBC_2.29 __libc_mallopt F +GLIBC_2.29 __libc_memalign F +GLIBC_2.29 __libc_pvalloc F +GLIBC_2.29 __libc_realloc F +GLIBC_2.29 __libc_sa_len F +GLIBC_2.29 __libc_start_main F +GLIBC_2.29 __libc_valloc F +GLIBC_2.29 __longjmp_chk F +GLIBC_2.29 __lseek F +GLIBC_2.29 __lxstat F +GLIBC_2.29 __lxstat64 F +GLIBC_2.29 __malloc_hook D 0x4 +GLIBC_2.29 __mbrlen F +GLIBC_2.29 __mbrtowc F +GLIBC_2.29 __mbsnrtowcs_chk F +GLIBC_2.29 __mbsrtowcs_chk F +GLIBC_2.29 __mbstowcs_chk F +GLIBC_2.29 __memalign_hook D 0x4 +GLIBC_2.29 __memcpy_chk F +GLIBC_2.29 __memmove_chk F +GLIBC_2.29 __mempcpy F +GLIBC_2.29 __mempcpy_chk F +GLIBC_2.29 __memset_chk F +GLIBC_2.29 __monstartup F +GLIBC_2.29 __morecore D 0x4 +GLIBC_2.29 __nanosleep F +GLIBC_2.29 __newlocale F +GLIBC_2.29 __nl_langinfo_l F +GLIBC_2.29 __nss_configure_lookup F +GLIBC_2.29 __nss_database_lookup F +GLIBC_2.29 __nss_hostname_digits_dots F +GLIBC_2.29 __nss_next F +GLIBC_2.29 __obstack_printf_chk F +GLIBC_2.29 __obstack_vprintf_chk F +GLIBC_2.29 __open F +GLIBC_2.29 __open64 F +GLIBC_2.29 __open64_2 F +GLIBC_2.29 __open_2 F +GLIBC_2.29 __openat64_2 F +GLIBC_2.29 __openat_2 F +GLIBC_2.29 __overflow F +GLIBC_2.29 __pipe F +GLIBC_2.29 __poll F +GLIBC_2.29 __poll_chk F +GLIBC_2.29 __posix_getopt F +GLIBC_2.29 __ppoll_chk F +GLIBC_2.29 __pread64 F +GLIBC_2.29 __pread64_chk F +GLIBC_2.29 __pread_chk F +GLIBC_2.29 __printf_chk F +GLIBC_2.29 __printf_fp F +GLIBC_2.29 __profile_frequency F +GLIBC_2.29 __progname D 0x4 +GLIBC_2.29 __progname_full D 0x4 +GLIBC_2.29 __ptsname_r_chk F +GLIBC_2.29 __pwrite64 F +GLIBC_2.29 __rawmemchr F +GLIBC_2.29 __rcmd_errstr D 0x4 +GLIBC_2.29 __read F +GLIBC_2.29 __read_chk F +GLIBC_2.29 __readlink_chk F +GLIBC_2.29 __readlinkat_chk F +GLIBC_2.29 __realloc_hook D 0x4 +GLIBC_2.29 __realpath_chk F +GLIBC_2.29 __recv_chk F +GLIBC_2.29 __recvfrom_chk F +GLIBC_2.29 __register_atfork F +GLIBC_2.29 __res_init F +GLIBC_2.29 __res_nclose F +GLIBC_2.29 __res_ninit F +GLIBC_2.29 __res_randomid F +GLIBC_2.29 __res_state F +GLIBC_2.29 __rpc_thread_createerr F +GLIBC_2.29 __rpc_thread_svc_fdset F +GLIBC_2.29 __rpc_thread_svc_max_pollfd F +GLIBC_2.29 __rpc_thread_svc_pollfd F +GLIBC_2.29 __sbrk F +GLIBC_2.29 __sched_cpualloc F +GLIBC_2.29 __sched_cpucount F +GLIBC_2.29 __sched_cpufree F +GLIBC_2.29 __sched_get_priority_max F +GLIBC_2.29 __sched_get_priority_min F +GLIBC_2.29 __sched_getparam F +GLIBC_2.29 __sched_getscheduler F +GLIBC_2.29 __sched_setscheduler F +GLIBC_2.29 __sched_yield F +GLIBC_2.29 __select F +GLIBC_2.29 __send F +GLIBC_2.29 __setmntent F +GLIBC_2.29 __setpgid F +GLIBC_2.29 __sigaction F +GLIBC_2.29 __signbit F +GLIBC_2.29 __signbitf F +GLIBC_2.29 __sigpause F +GLIBC_2.29 __sigsetjmp F +GLIBC_2.29 __sigsuspend F +GLIBC_2.29 __snprintf_chk F +GLIBC_2.29 __sprintf_chk F +GLIBC_2.29 __stack_chk_fail F +GLIBC_2.29 __statfs F +GLIBC_2.29 __stpcpy F +GLIBC_2.29 __stpcpy_chk F +GLIBC_2.29 __stpncpy F +GLIBC_2.29 __stpncpy_chk F +GLIBC_2.29 __strcasecmp F +GLIBC_2.29 __strcasecmp_l F +GLIBC_2.29 __strcasestr F +GLIBC_2.29 __strcat_chk F +GLIBC_2.29 __strcoll_l F +GLIBC_2.29 __strcpy_chk F +GLIBC_2.29 __strdup F +GLIBC_2.29 __strerror_r F +GLIBC_2.29 __strfmon_l F +GLIBC_2.29 __strftime_l F +GLIBC_2.29 __strncasecmp_l F +GLIBC_2.29 __strncat_chk F +GLIBC_2.29 __strncpy_chk F +GLIBC_2.29 __strndup F +GLIBC_2.29 __strsep_g F +GLIBC_2.29 __strtod_internal F +GLIBC_2.29 __strtod_l F +GLIBC_2.29 __strtof_internal F +GLIBC_2.29 __strtof_l F +GLIBC_2.29 __strtok_r F +GLIBC_2.29 __strtol_internal F +GLIBC_2.29 __strtol_l F +GLIBC_2.29 __strtold_internal F +GLIBC_2.29 __strtold_l F +GLIBC_2.29 __strtoll_internal F +GLIBC_2.29 __strtoll_l F +GLIBC_2.29 __strtoul_internal F +GLIBC_2.29 __strtoul_l F +GLIBC_2.29 __strtoull_internal F +GLIBC_2.29 __strtoull_l F +GLIBC_2.29 __strverscmp F +GLIBC_2.29 __strxfrm_l F +GLIBC_2.29 __swprintf_chk F +GLIBC_2.29 __syscall_error F +GLIBC_2.29 __sysconf F +GLIBC_2.29 __syslog_chk F +GLIBC_2.29 __sysv_signal F +GLIBC_2.29 __timezone D 0x4 +GLIBC_2.29 __toascii_l F +GLIBC_2.29 __tolower_l F +GLIBC_2.29 __toupper_l F +GLIBC_2.29 __towctrans F +GLIBC_2.29 __towctrans_l F +GLIBC_2.29 __towlower_l F +GLIBC_2.29 __towupper_l F +GLIBC_2.29 __ttyname_r_chk F +GLIBC_2.29 __tzname D 0x8 +GLIBC_2.29 __uflow F +GLIBC_2.29 __underflow F +GLIBC_2.29 __uselocale F +GLIBC_2.29 __vasprintf_chk F +GLIBC_2.29 __vdprintf_chk F +GLIBC_2.29 __vfork F +GLIBC_2.29 __vfprintf_chk F +GLIBC_2.29 __vfscanf F +GLIBC_2.29 __vfwprintf_chk F +GLIBC_2.29 __vprintf_chk F +GLIBC_2.29 __vsnprintf F +GLIBC_2.29 __vsnprintf_chk F +GLIBC_2.29 __vsprintf_chk F +GLIBC_2.29 __vsscanf F +GLIBC_2.29 __vswprintf_chk F +GLIBC_2.29 __vsyslog_chk F +GLIBC_2.29 __vwprintf_chk F +GLIBC_2.29 __wait F +GLIBC_2.29 __waitpid F +GLIBC_2.29 __wcpcpy_chk F +GLIBC_2.29 __wcpncpy_chk F +GLIBC_2.29 __wcrtomb_chk F +GLIBC_2.29 __wcscasecmp_l F +GLIBC_2.29 __wcscat_chk F +GLIBC_2.29 __wcscoll_l F +GLIBC_2.29 __wcscpy_chk F +GLIBC_2.29 __wcsftime_l F +GLIBC_2.29 __wcsncasecmp_l F +GLIBC_2.29 __wcsncat_chk F +GLIBC_2.29 __wcsncpy_chk F +GLIBC_2.29 __wcsnrtombs_chk F +GLIBC_2.29 __wcsrtombs_chk F +GLIBC_2.29 __wcstod_internal F +GLIBC_2.29 __wcstod_l F +GLIBC_2.29 __wcstof_internal F +GLIBC_2.29 __wcstof_l F +GLIBC_2.29 __wcstol_internal F +GLIBC_2.29 __wcstol_l F +GLIBC_2.29 __wcstold_internal F +GLIBC_2.29 __wcstold_l F +GLIBC_2.29 __wcstoll_internal F +GLIBC_2.29 __wcstoll_l F +GLIBC_2.29 __wcstombs_chk F +GLIBC_2.29 __wcstoul_internal F +GLIBC_2.29 __wcstoul_l F +GLIBC_2.29 __wcstoull_internal F +GLIBC_2.29 __wcstoull_l F +GLIBC_2.29 __wcsxfrm_l F +GLIBC_2.29 __wctomb_chk F +GLIBC_2.29 __wctrans_l F +GLIBC_2.29 __wctype_l F +GLIBC_2.29 __wmemcpy_chk F +GLIBC_2.29 __wmemmove_chk F +GLIBC_2.29 __wmempcpy_chk F +GLIBC_2.29 __wmemset_chk F +GLIBC_2.29 __woverflow F +GLIBC_2.29 __wprintf_chk F +GLIBC_2.29 __write F +GLIBC_2.29 __wuflow F +GLIBC_2.29 __wunderflow F +GLIBC_2.29 __xmknod F +GLIBC_2.29 __xmknodat F +GLIBC_2.29 __xpg_basename F +GLIBC_2.29 __xpg_sigpause F +GLIBC_2.29 __xpg_strerror_r F +GLIBC_2.29 __xstat F +GLIBC_2.29 __xstat64 F +GLIBC_2.29 _authenticate F +GLIBC_2.29 _dl_mcount_wrapper F +GLIBC_2.29 _dl_mcount_wrapper_check F +GLIBC_2.29 _environ D 0x4 +GLIBC_2.29 _exit F +GLIBC_2.29 _flush_cache F +GLIBC_2.29 _flushlbf F +GLIBC_2.29 _libc_intl_domainname D 0x5 +GLIBC_2.29 _longjmp F +GLIBC_2.29 _mcleanup F +GLIBC_2.29 _mcount F +GLIBC_2.29 _nl_default_dirname D 0x12 +GLIBC_2.29 _nl_domain_bindings D 0x4 +GLIBC_2.29 _nl_msg_cat_cntr D 0x4 +GLIBC_2.29 _null_auth D 0xc +GLIBC_2.29 _obstack_allocated_p F +GLIBC_2.29 _obstack_begin F +GLIBC_2.29 _obstack_begin_1 F +GLIBC_2.29 _obstack_free F +GLIBC_2.29 _obstack_memory_used F +GLIBC_2.29 _obstack_newchunk F +GLIBC_2.29 _res D 0x200 +GLIBC_2.29 _res_hconf D 0x30 +GLIBC_2.29 _rpc_dtablesize F +GLIBC_2.29 _seterr_reply F +GLIBC_2.29 _setjmp F +GLIBC_2.29 _sys_errlist D 0x21c +GLIBC_2.29 _sys_nerr D 0x4 +GLIBC_2.29 _sys_siglist D 0x104 +GLIBC_2.29 _tolower F +GLIBC_2.29 _toupper F +GLIBC_2.29 a64l F +GLIBC_2.29 abort F +GLIBC_2.29 abs F +GLIBC_2.29 accept F +GLIBC_2.29 accept4 F +GLIBC_2.29 access F +GLIBC_2.29 acct F +GLIBC_2.29 addmntent F +GLIBC_2.29 addseverity F +GLIBC_2.29 adjtime F +GLIBC_2.29 adjtimex F +GLIBC_2.29 alarm F +GLIBC_2.29 aligned_alloc F +GLIBC_2.29 alphasort F +GLIBC_2.29 alphasort64 F +GLIBC_2.29 argp_err_exit_status D 0x4 +GLIBC_2.29 argp_error F +GLIBC_2.29 argp_failure F +GLIBC_2.29 argp_help F +GLIBC_2.29 argp_parse F +GLIBC_2.29 argp_program_bug_address D 0x4 +GLIBC_2.29 argp_program_version D 0x4 +GLIBC_2.29 argp_program_version_hook D 0x4 +GLIBC_2.29 argp_state_help F +GLIBC_2.29 argp_usage F +GLIBC_2.29 argz_add F +GLIBC_2.29 argz_add_sep F +GLIBC_2.29 argz_append F +GLIBC_2.29 argz_count F +GLIBC_2.29 argz_create F +GLIBC_2.29 argz_create_sep F +GLIBC_2.29 argz_delete F +GLIBC_2.29 argz_extract F +GLIBC_2.29 argz_insert F +GLIBC_2.29 argz_next F +GLIBC_2.29 argz_replace F +GLIBC_2.29 argz_stringify F +GLIBC_2.29 asctime F +GLIBC_2.29 asctime_r F +GLIBC_2.29 asprintf F +GLIBC_2.29 atof F +GLIBC_2.29 atoi F +GLIBC_2.29 atol F +GLIBC_2.29 atoll F +GLIBC_2.29 authdes_create F +GLIBC_2.29 authdes_getucred F +GLIBC_2.29 authdes_pk_create F +GLIBC_2.29 authnone_create F +GLIBC_2.29 authunix_create F +GLIBC_2.29 authunix_create_default F +GLIBC_2.29 backtrace F +GLIBC_2.29 backtrace_symbols F +GLIBC_2.29 backtrace_symbols_fd F +GLIBC_2.29 basename F +GLIBC_2.29 bcmp F +GLIBC_2.29 bcopy F +GLIBC_2.29 bind F +GLIBC_2.29 bind_textdomain_codeset F +GLIBC_2.29 bindresvport F +GLIBC_2.29 bindtextdomain F +GLIBC_2.29 brk F +GLIBC_2.29 bsd_signal F +GLIBC_2.29 bsearch F +GLIBC_2.29 btowc F +GLIBC_2.29 bzero F +GLIBC_2.29 c16rtomb F +GLIBC_2.29 c32rtomb F +GLIBC_2.29 cacheflush F +GLIBC_2.29 calloc F +GLIBC_2.29 callrpc F +GLIBC_2.29 canonicalize_file_name F +GLIBC_2.29 capget F +GLIBC_2.29 capset F +GLIBC_2.29 catclose F +GLIBC_2.29 catgets F +GLIBC_2.29 catopen F +GLIBC_2.29 cbc_crypt F +GLIBC_2.29 cfgetispeed F +GLIBC_2.29 cfgetospeed F +GLIBC_2.29 cfmakeraw F +GLIBC_2.29 cfsetispeed F +GLIBC_2.29 cfsetospeed F +GLIBC_2.29 cfsetspeed F +GLIBC_2.29 chdir F +GLIBC_2.29 chflags F +GLIBC_2.29 chmod F +GLIBC_2.29 chown F +GLIBC_2.29 chroot F +GLIBC_2.29 clearenv F +GLIBC_2.29 clearerr F +GLIBC_2.29 clearerr_unlocked F +GLIBC_2.29 clnt_broadcast F +GLIBC_2.29 clnt_create F +GLIBC_2.29 clnt_pcreateerror F +GLIBC_2.29 clnt_perrno F +GLIBC_2.29 clnt_perror F +GLIBC_2.29 clnt_spcreateerror F +GLIBC_2.29 clnt_sperrno F +GLIBC_2.29 clnt_sperror F +GLIBC_2.29 clntraw_create F +GLIBC_2.29 clnttcp_create F +GLIBC_2.29 clntudp_bufcreate F +GLIBC_2.29 clntudp_create F +GLIBC_2.29 clntunix_create F +GLIBC_2.29 clock F +GLIBC_2.29 clock_adjtime F +GLIBC_2.29 clock_getcpuclockid F +GLIBC_2.29 clock_getres F +GLIBC_2.29 clock_gettime F +GLIBC_2.29 clock_nanosleep F +GLIBC_2.29 clock_settime F +GLIBC_2.29 clone F +GLIBC_2.29 close F +GLIBC_2.29 closedir F +GLIBC_2.29 closelog F +GLIBC_2.29 confstr F +GLIBC_2.29 connect F +GLIBC_2.29 copy_file_range F +GLIBC_2.29 copysign F +GLIBC_2.29 copysignf F +GLIBC_2.29 copysignl F +GLIBC_2.29 creat F +GLIBC_2.29 creat64 F +GLIBC_2.29 ctermid F +GLIBC_2.29 ctime F +GLIBC_2.29 ctime_r F +GLIBC_2.29 cuserid F +GLIBC_2.29 daemon F +GLIBC_2.29 daylight D 0x4 +GLIBC_2.29 dcgettext F +GLIBC_2.29 dcngettext F +GLIBC_2.29 delete_module F +GLIBC_2.29 des_setparity F +GLIBC_2.29 dgettext F +GLIBC_2.29 difftime F +GLIBC_2.29 dirfd F +GLIBC_2.29 dirname F +GLIBC_2.29 div F +GLIBC_2.29 dl_iterate_phdr F +GLIBC_2.29 dngettext F +GLIBC_2.29 dprintf F +GLIBC_2.29 drand48 F +GLIBC_2.29 drand48_r F +GLIBC_2.29 dup F +GLIBC_2.29 dup2 F +GLIBC_2.29 dup3 F +GLIBC_2.29 duplocale F +GLIBC_2.29 dysize F +GLIBC_2.29 eaccess F +GLIBC_2.29 ecb_crypt F +GLIBC_2.29 ecvt F +GLIBC_2.29 ecvt_r F +GLIBC_2.29 endaliasent F +GLIBC_2.29 endfsent F +GLIBC_2.29 endgrent F +GLIBC_2.29 endhostent F +GLIBC_2.29 endmntent F +GLIBC_2.29 endnetent F +GLIBC_2.29 endnetgrent F +GLIBC_2.29 endprotoent F +GLIBC_2.29 endpwent F +GLIBC_2.29 endrpcent F +GLIBC_2.29 endservent F +GLIBC_2.29 endsgent F +GLIBC_2.29 endspent F +GLIBC_2.29 endttyent F +GLIBC_2.29 endusershell F +GLIBC_2.29 endutent F +GLIBC_2.29 endutxent F +GLIBC_2.29 environ D 0x4 +GLIBC_2.29 envz_add F +GLIBC_2.29 envz_entry F +GLIBC_2.29 envz_get F +GLIBC_2.29 envz_merge F +GLIBC_2.29 envz_remove F +GLIBC_2.29 envz_strip F +GLIBC_2.29 epoll_create F +GLIBC_2.29 epoll_create1 F +GLIBC_2.29 epoll_ctl F +GLIBC_2.29 epoll_pwait F +GLIBC_2.29 epoll_wait F +GLIBC_2.29 erand48 F +GLIBC_2.29 erand48_r F +GLIBC_2.29 err F +GLIBC_2.29 error F +GLIBC_2.29 error_at_line F +GLIBC_2.29 error_message_count D 0x4 +GLIBC_2.29 error_one_per_line D 0x4 +GLIBC_2.29 error_print_progname D 0x4 +GLIBC_2.29 errx F +GLIBC_2.29 ether_aton F +GLIBC_2.29 ether_aton_r F +GLIBC_2.29 ether_hostton F +GLIBC_2.29 ether_line F +GLIBC_2.29 ether_ntoa F +GLIBC_2.29 ether_ntoa_r F +GLIBC_2.29 ether_ntohost F +GLIBC_2.29 euidaccess F +GLIBC_2.29 eventfd F +GLIBC_2.29 eventfd_read F +GLIBC_2.29 eventfd_write F +GLIBC_2.29 execl F +GLIBC_2.29 execle F +GLIBC_2.29 execlp F +GLIBC_2.29 execv F +GLIBC_2.29 execve F +GLIBC_2.29 execvp F +GLIBC_2.29 execvpe F +GLIBC_2.29 exit F +GLIBC_2.29 explicit_bzero F +GLIBC_2.29 faccessat F +GLIBC_2.29 fallocate F +GLIBC_2.29 fallocate64 F +GLIBC_2.29 fanotify_init F +GLIBC_2.29 fanotify_mark F +GLIBC_2.29 fattach F +GLIBC_2.29 fchdir F +GLIBC_2.29 fchflags F +GLIBC_2.29 fchmod F +GLIBC_2.29 fchmodat F +GLIBC_2.29 fchown F +GLIBC_2.29 fchownat F +GLIBC_2.29 fclose F +GLIBC_2.29 fcloseall F +GLIBC_2.29 fcntl F +GLIBC_2.29 fcntl64 F +GLIBC_2.29 fcvt F +GLIBC_2.29 fcvt_r F +GLIBC_2.29 fdatasync F +GLIBC_2.29 fdetach F +GLIBC_2.29 fdopen F +GLIBC_2.29 fdopendir F +GLIBC_2.29 feof F +GLIBC_2.29 feof_unlocked F +GLIBC_2.29 ferror F +GLIBC_2.29 ferror_unlocked F +GLIBC_2.29 fexecve F +GLIBC_2.29 fflush F +GLIBC_2.29 fflush_unlocked F +GLIBC_2.29 ffs F +GLIBC_2.29 ffsl F +GLIBC_2.29 ffsll F +GLIBC_2.29 fgetc F +GLIBC_2.29 fgetc_unlocked F +GLIBC_2.29 fgetgrent F +GLIBC_2.29 fgetgrent_r F +GLIBC_2.29 fgetpos F +GLIBC_2.29 fgetpos64 F +GLIBC_2.29 fgetpwent F +GLIBC_2.29 fgetpwent_r F +GLIBC_2.29 fgets F +GLIBC_2.29 fgets_unlocked F +GLIBC_2.29 fgetsgent F +GLIBC_2.29 fgetsgent_r F +GLIBC_2.29 fgetspent F +GLIBC_2.29 fgetspent_r F +GLIBC_2.29 fgetwc F +GLIBC_2.29 fgetwc_unlocked F +GLIBC_2.29 fgetws F +GLIBC_2.29 fgetws_unlocked F +GLIBC_2.29 fgetxattr F +GLIBC_2.29 fileno F +GLIBC_2.29 fileno_unlocked F +GLIBC_2.29 finite F +GLIBC_2.29 finitef F +GLIBC_2.29 finitel F +GLIBC_2.29 flistxattr F +GLIBC_2.29 flock F +GLIBC_2.29 flockfile F +GLIBC_2.29 fmemopen F +GLIBC_2.29 fmtmsg F +GLIBC_2.29 fnmatch F +GLIBC_2.29 fopen F +GLIBC_2.29 fopen64 F +GLIBC_2.29 fopencookie F +GLIBC_2.29 fork F +GLIBC_2.29 fpathconf F +GLIBC_2.29 fprintf F +GLIBC_2.29 fputc F +GLIBC_2.29 fputc_unlocked F +GLIBC_2.29 fputs F +GLIBC_2.29 fputs_unlocked F +GLIBC_2.29 fputwc F +GLIBC_2.29 fputwc_unlocked F +GLIBC_2.29 fputws F +GLIBC_2.29 fputws_unlocked F +GLIBC_2.29 fread F +GLIBC_2.29 fread_unlocked F +GLIBC_2.29 free F +GLIBC_2.29 freeaddrinfo F +GLIBC_2.29 freeifaddrs F +GLIBC_2.29 freelocale F +GLIBC_2.29 fremovexattr F +GLIBC_2.29 freopen F +GLIBC_2.29 freopen64 F +GLIBC_2.29 frexp F +GLIBC_2.29 frexpf F +GLIBC_2.29 frexpl F +GLIBC_2.29 fscanf F +GLIBC_2.29 fseek F +GLIBC_2.29 fseeko F +GLIBC_2.29 fseeko64 F +GLIBC_2.29 fsetpos F +GLIBC_2.29 fsetpos64 F +GLIBC_2.29 fsetxattr F +GLIBC_2.29 fstatfs F +GLIBC_2.29 fstatfs64 F +GLIBC_2.29 fstatvfs F +GLIBC_2.29 fstatvfs64 F +GLIBC_2.29 fsync F +GLIBC_2.29 ftell F +GLIBC_2.29 ftello F +GLIBC_2.29 ftello64 F +GLIBC_2.29 ftime F +GLIBC_2.29 ftok F +GLIBC_2.29 ftruncate F +GLIBC_2.29 ftruncate64 F +GLIBC_2.29 ftrylockfile F +GLIBC_2.29 fts64_children F +GLIBC_2.29 fts64_close F +GLIBC_2.29 fts64_open F +GLIBC_2.29 fts64_read F +GLIBC_2.29 fts64_set F +GLIBC_2.29 fts_children F +GLIBC_2.29 fts_close F +GLIBC_2.29 fts_open F +GLIBC_2.29 fts_read F +GLIBC_2.29 fts_set F +GLIBC_2.29 ftw F +GLIBC_2.29 ftw64 F +GLIBC_2.29 funlockfile F +GLIBC_2.29 futimens F +GLIBC_2.29 futimes F +GLIBC_2.29 futimesat F +GLIBC_2.29 fwide F +GLIBC_2.29 fwprintf F +GLIBC_2.29 fwrite F +GLIBC_2.29 fwrite_unlocked F +GLIBC_2.29 fwscanf F +GLIBC_2.29 gai_strerror F +GLIBC_2.29 gcvt F +GLIBC_2.29 get_avphys_pages F +GLIBC_2.29 get_current_dir_name F +GLIBC_2.29 get_myaddress F +GLIBC_2.29 get_nprocs F +GLIBC_2.29 get_nprocs_conf F +GLIBC_2.29 get_phys_pages F +GLIBC_2.29 getaddrinfo F +GLIBC_2.29 getaliasbyname F +GLIBC_2.29 getaliasbyname_r F +GLIBC_2.29 getaliasent F +GLIBC_2.29 getaliasent_r F +GLIBC_2.29 getauxval F +GLIBC_2.29 getc F +GLIBC_2.29 getc_unlocked F +GLIBC_2.29 getchar F +GLIBC_2.29 getchar_unlocked F +GLIBC_2.29 getcontext F +GLIBC_2.29 getcpu F +GLIBC_2.29 getcwd F +GLIBC_2.29 getdate F +GLIBC_2.29 getdate_err D 0x4 +GLIBC_2.29 getdate_r F +GLIBC_2.29 getdelim F +GLIBC_2.29 getdirentries F +GLIBC_2.29 getdirentries64 F +GLIBC_2.29 getdomainname F +GLIBC_2.29 getdtablesize F +GLIBC_2.29 getegid F +GLIBC_2.29 getentropy F +GLIBC_2.29 getenv F +GLIBC_2.29 geteuid F +GLIBC_2.29 getfsent F +GLIBC_2.29 getfsfile F +GLIBC_2.29 getfsspec F +GLIBC_2.29 getgid F +GLIBC_2.29 getgrent F +GLIBC_2.29 getgrent_r F +GLIBC_2.29 getgrgid F +GLIBC_2.29 getgrgid_r F +GLIBC_2.29 getgrnam F +GLIBC_2.29 getgrnam_r F +GLIBC_2.29 getgrouplist F +GLIBC_2.29 getgroups F +GLIBC_2.29 gethostbyaddr F +GLIBC_2.29 gethostbyaddr_r F +GLIBC_2.29 gethostbyname F +GLIBC_2.29 gethostbyname2 F +GLIBC_2.29 gethostbyname2_r F +GLIBC_2.29 gethostbyname_r F +GLIBC_2.29 gethostent F +GLIBC_2.29 gethostent_r F +GLIBC_2.29 gethostid F +GLIBC_2.29 gethostname F +GLIBC_2.29 getifaddrs F +GLIBC_2.29 getipv4sourcefilter F +GLIBC_2.29 getitimer F +GLIBC_2.29 getline F +GLIBC_2.29 getloadavg F +GLIBC_2.29 getlogin F +GLIBC_2.29 getlogin_r F +GLIBC_2.29 getmntent F +GLIBC_2.29 getmntent_r F +GLIBC_2.29 getmsg F +GLIBC_2.29 getnameinfo F +GLIBC_2.29 getnetbyaddr F +GLIBC_2.29 getnetbyaddr_r F +GLIBC_2.29 getnetbyname F +GLIBC_2.29 getnetbyname_r F +GLIBC_2.29 getnetent F +GLIBC_2.29 getnetent_r F +GLIBC_2.29 getnetgrent F +GLIBC_2.29 getnetgrent_r F +GLIBC_2.29 getnetname F +GLIBC_2.29 getopt F +GLIBC_2.29 getopt_long F +GLIBC_2.29 getopt_long_only F +GLIBC_2.29 getpagesize F +GLIBC_2.29 getpass F +GLIBC_2.29 getpeername F +GLIBC_2.29 getpgid F +GLIBC_2.29 getpgrp F +GLIBC_2.29 getpid F +GLIBC_2.29 getpmsg F +GLIBC_2.29 getppid F +GLIBC_2.29 getpriority F +GLIBC_2.29 getprotobyname F +GLIBC_2.29 getprotobyname_r F +GLIBC_2.29 getprotobynumber F +GLIBC_2.29 getprotobynumber_r F +GLIBC_2.29 getprotoent F +GLIBC_2.29 getprotoent_r F +GLIBC_2.29 getpt F +GLIBC_2.29 getpublickey F +GLIBC_2.29 getpw F +GLIBC_2.29 getpwent F +GLIBC_2.29 getpwent_r F +GLIBC_2.29 getpwnam F +GLIBC_2.29 getpwnam_r F +GLIBC_2.29 getpwuid F +GLIBC_2.29 getpwuid_r F +GLIBC_2.29 getrandom F +GLIBC_2.29 getresgid F +GLIBC_2.29 getresuid F +GLIBC_2.29 getrlimit F +GLIBC_2.29 getrlimit64 F +GLIBC_2.29 getrpcbyname F +GLIBC_2.29 getrpcbyname_r F +GLIBC_2.29 getrpcbynumber F +GLIBC_2.29 getrpcbynumber_r F +GLIBC_2.29 getrpcent F +GLIBC_2.29 getrpcent_r F +GLIBC_2.29 getrpcport F +GLIBC_2.29 getrusage F +GLIBC_2.29 gets F +GLIBC_2.29 getsecretkey F +GLIBC_2.29 getservbyname F +GLIBC_2.29 getservbyname_r F +GLIBC_2.29 getservbyport F +GLIBC_2.29 getservbyport_r F +GLIBC_2.29 getservent F +GLIBC_2.29 getservent_r F +GLIBC_2.29 getsgent F +GLIBC_2.29 getsgent_r F +GLIBC_2.29 getsgnam F +GLIBC_2.29 getsgnam_r F +GLIBC_2.29 getsid F +GLIBC_2.29 getsockname F +GLIBC_2.29 getsockopt F +GLIBC_2.29 getsourcefilter F +GLIBC_2.29 getspent F +GLIBC_2.29 getspent_r F +GLIBC_2.29 getspnam F +GLIBC_2.29 getspnam_r F +GLIBC_2.29 getsubopt F +GLIBC_2.29 gettext F +GLIBC_2.29 gettimeofday F +GLIBC_2.29 getttyent F +GLIBC_2.29 getttynam F +GLIBC_2.29 getuid F +GLIBC_2.29 getusershell F +GLIBC_2.29 getutent F +GLIBC_2.29 getutent_r F +GLIBC_2.29 getutid F +GLIBC_2.29 getutid_r F +GLIBC_2.29 getutline F +GLIBC_2.29 getutline_r F +GLIBC_2.29 getutmp F +GLIBC_2.29 getutmpx F +GLIBC_2.29 getutxent F +GLIBC_2.29 getutxid F +GLIBC_2.29 getutxline F +GLIBC_2.29 getw F +GLIBC_2.29 getwc F +GLIBC_2.29 getwc_unlocked F +GLIBC_2.29 getwchar F +GLIBC_2.29 getwchar_unlocked F +GLIBC_2.29 getwd F +GLIBC_2.29 getxattr F +GLIBC_2.29 glob F +GLIBC_2.29 glob64 F +GLIBC_2.29 glob_pattern_p F +GLIBC_2.29 globfree F +GLIBC_2.29 globfree64 F +GLIBC_2.29 gmtime F +GLIBC_2.29 gmtime_r F +GLIBC_2.29 gnu_dev_major F +GLIBC_2.29 gnu_dev_makedev F +GLIBC_2.29 gnu_dev_minor F +GLIBC_2.29 gnu_get_libc_release F +GLIBC_2.29 gnu_get_libc_version F +GLIBC_2.29 grantpt F +GLIBC_2.29 group_member F +GLIBC_2.29 gsignal F +GLIBC_2.29 gtty F +GLIBC_2.29 h_errlist D 0x14 +GLIBC_2.29 h_nerr D 0x4 +GLIBC_2.29 hasmntopt F +GLIBC_2.29 hcreate F +GLIBC_2.29 hcreate_r F +GLIBC_2.29 hdestroy F +GLIBC_2.29 hdestroy_r F +GLIBC_2.29 herror F +GLIBC_2.29 host2netname F +GLIBC_2.29 hsearch F +GLIBC_2.29 hsearch_r F +GLIBC_2.29 hstrerror F +GLIBC_2.29 htonl F +GLIBC_2.29 htons F +GLIBC_2.29 iconv F +GLIBC_2.29 iconv_close F +GLIBC_2.29 iconv_open F +GLIBC_2.29 if_freenameindex F +GLIBC_2.29 if_indextoname F +GLIBC_2.29 if_nameindex F +GLIBC_2.29 if_nametoindex F +GLIBC_2.29 imaxabs F +GLIBC_2.29 imaxdiv F +GLIBC_2.29 in6addr_any D 0x10 +GLIBC_2.29 in6addr_loopback D 0x10 +GLIBC_2.29 index F +GLIBC_2.29 inet6_opt_append F +GLIBC_2.29 inet6_opt_find F +GLIBC_2.29 inet6_opt_finish F +GLIBC_2.29 inet6_opt_get_val F +GLIBC_2.29 inet6_opt_init F +GLIBC_2.29 inet6_opt_next F +GLIBC_2.29 inet6_opt_set_val F +GLIBC_2.29 inet6_option_alloc F +GLIBC_2.29 inet6_option_append F +GLIBC_2.29 inet6_option_find F +GLIBC_2.29 inet6_option_init F +GLIBC_2.29 inet6_option_next F +GLIBC_2.29 inet6_option_space F +GLIBC_2.29 inet6_rth_add F +GLIBC_2.29 inet6_rth_getaddr F +GLIBC_2.29 inet6_rth_init F +GLIBC_2.29 inet6_rth_reverse F +GLIBC_2.29 inet6_rth_segments F +GLIBC_2.29 inet6_rth_space F +GLIBC_2.29 inet_addr F +GLIBC_2.29 inet_aton F +GLIBC_2.29 inet_lnaof F +GLIBC_2.29 inet_makeaddr F +GLIBC_2.29 inet_netof F +GLIBC_2.29 inet_network F +GLIBC_2.29 inet_nsap_addr F +GLIBC_2.29 inet_nsap_ntoa F +GLIBC_2.29 inet_ntoa F +GLIBC_2.29 inet_ntop F +GLIBC_2.29 inet_pton F +GLIBC_2.29 init_module F +GLIBC_2.29 initgroups F +GLIBC_2.29 initstate F +GLIBC_2.29 initstate_r F +GLIBC_2.29 innetgr F +GLIBC_2.29 inotify_add_watch F +GLIBC_2.29 inotify_init F +GLIBC_2.29 inotify_init1 F +GLIBC_2.29 inotify_rm_watch F +GLIBC_2.29 insque F +GLIBC_2.29 ioctl F +GLIBC_2.29 iruserok F +GLIBC_2.29 iruserok_af F +GLIBC_2.29 isalnum F +GLIBC_2.29 isalnum_l F +GLIBC_2.29 isalpha F +GLIBC_2.29 isalpha_l F +GLIBC_2.29 isascii F +GLIBC_2.29 isastream F +GLIBC_2.29 isatty F +GLIBC_2.29 isblank F +GLIBC_2.29 isblank_l F +GLIBC_2.29 iscntrl F +GLIBC_2.29 iscntrl_l F +GLIBC_2.29 isctype F +GLIBC_2.29 isdigit F +GLIBC_2.29 isdigit_l F +GLIBC_2.29 isfdtype F +GLIBC_2.29 isgraph F +GLIBC_2.29 isgraph_l F +GLIBC_2.29 isinf F +GLIBC_2.29 isinff F +GLIBC_2.29 isinfl F +GLIBC_2.29 islower F +GLIBC_2.29 islower_l F +GLIBC_2.29 isnan F +GLIBC_2.29 isnanf F +GLIBC_2.29 isnanl F +GLIBC_2.29 isprint F +GLIBC_2.29 isprint_l F +GLIBC_2.29 ispunct F +GLIBC_2.29 ispunct_l F +GLIBC_2.29 isspace F +GLIBC_2.29 isspace_l F +GLIBC_2.29 isupper F +GLIBC_2.29 isupper_l F +GLIBC_2.29 iswalnum F +GLIBC_2.29 iswalnum_l F +GLIBC_2.29 iswalpha F +GLIBC_2.29 iswalpha_l F +GLIBC_2.29 iswblank F +GLIBC_2.29 iswblank_l F +GLIBC_2.29 iswcntrl F +GLIBC_2.29 iswcntrl_l F +GLIBC_2.29 iswctype F +GLIBC_2.29 iswctype_l F +GLIBC_2.29 iswdigit F +GLIBC_2.29 iswdigit_l F +GLIBC_2.29 iswgraph F +GLIBC_2.29 iswgraph_l F +GLIBC_2.29 iswlower F +GLIBC_2.29 iswlower_l F +GLIBC_2.29 iswprint F +GLIBC_2.29 iswprint_l F +GLIBC_2.29 iswpunct F +GLIBC_2.29 iswpunct_l F +GLIBC_2.29 iswspace F +GLIBC_2.29 iswspace_l F +GLIBC_2.29 iswupper F +GLIBC_2.29 iswupper_l F +GLIBC_2.29 iswxdigit F +GLIBC_2.29 iswxdigit_l F +GLIBC_2.29 isxdigit F +GLIBC_2.29 isxdigit_l F +GLIBC_2.29 jrand48 F +GLIBC_2.29 jrand48_r F +GLIBC_2.29 key_decryptsession F +GLIBC_2.29 key_decryptsession_pk F +GLIBC_2.29 key_encryptsession F +GLIBC_2.29 key_encryptsession_pk F +GLIBC_2.29 key_gendes F +GLIBC_2.29 key_get_conv F +GLIBC_2.29 key_secretkey_is_set F +GLIBC_2.29 key_setnet F +GLIBC_2.29 key_setsecret F +GLIBC_2.29 kill F +GLIBC_2.29 killpg F +GLIBC_2.29 klogctl F +GLIBC_2.29 l64a F +GLIBC_2.29 labs F +GLIBC_2.29 lchmod F +GLIBC_2.29 lchown F +GLIBC_2.29 lckpwdf F +GLIBC_2.29 lcong48 F +GLIBC_2.29 lcong48_r F +GLIBC_2.29 ldexp F +GLIBC_2.29 ldexpf F +GLIBC_2.29 ldexpl F +GLIBC_2.29 ldiv F +GLIBC_2.29 lfind F +GLIBC_2.29 lgetxattr F +GLIBC_2.29 link F +GLIBC_2.29 linkat F +GLIBC_2.29 listen F +GLIBC_2.29 listxattr F +GLIBC_2.29 llabs F +GLIBC_2.29 lldiv F +GLIBC_2.29 llistxattr F +GLIBC_2.29 localeconv F +GLIBC_2.29 localtime F +GLIBC_2.29 localtime_r F +GLIBC_2.29 lockf F +GLIBC_2.29 lockf64 F +GLIBC_2.29 longjmp F +GLIBC_2.29 lrand48 F +GLIBC_2.29 lrand48_r F +GLIBC_2.29 lremovexattr F +GLIBC_2.29 lsearch F +GLIBC_2.29 lseek F +GLIBC_2.29 lseek64 F +GLIBC_2.29 lsetxattr F +GLIBC_2.29 lutimes F +GLIBC_2.29 madvise F +GLIBC_2.29 makecontext F +GLIBC_2.29 mallinfo F +GLIBC_2.29 malloc F +GLIBC_2.29 malloc_info F +GLIBC_2.29 malloc_stats F +GLIBC_2.29 malloc_trim F +GLIBC_2.29 malloc_usable_size F +GLIBC_2.29 mallopt F +GLIBC_2.29 mallwatch D 0x4 +GLIBC_2.29 mblen F +GLIBC_2.29 mbrlen F +GLIBC_2.29 mbrtoc16 F +GLIBC_2.29 mbrtoc32 F +GLIBC_2.29 mbrtowc F +GLIBC_2.29 mbsinit F +GLIBC_2.29 mbsnrtowcs F +GLIBC_2.29 mbsrtowcs F +GLIBC_2.29 mbstowcs F +GLIBC_2.29 mbtowc F +GLIBC_2.29 mcheck F +GLIBC_2.29 mcheck_check_all F +GLIBC_2.29 mcheck_pedantic F +GLIBC_2.29 memalign F +GLIBC_2.29 memccpy F +GLIBC_2.29 memchr F +GLIBC_2.29 memcmp F +GLIBC_2.29 memcpy F +GLIBC_2.29 memfd_create F +GLIBC_2.29 memfrob F +GLIBC_2.29 memmem F +GLIBC_2.29 memmove F +GLIBC_2.29 mempcpy F +GLIBC_2.29 memrchr F +GLIBC_2.29 memset F +GLIBC_2.29 mincore F +GLIBC_2.29 mkdir F +GLIBC_2.29 mkdirat F +GLIBC_2.29 mkdtemp F +GLIBC_2.29 mkfifo F +GLIBC_2.29 mkfifoat F +GLIBC_2.29 mkostemp F +GLIBC_2.29 mkostemp64 F +GLIBC_2.29 mkostemps F +GLIBC_2.29 mkostemps64 F +GLIBC_2.29 mkstemp F +GLIBC_2.29 mkstemp64 F +GLIBC_2.29 mkstemps F +GLIBC_2.29 mkstemps64 F +GLIBC_2.29 mktemp F +GLIBC_2.29 mktime F +GLIBC_2.29 mlock F +GLIBC_2.29 mlock2 F +GLIBC_2.29 mlockall F +GLIBC_2.29 mmap F +GLIBC_2.29 mmap64 F +GLIBC_2.29 modf F +GLIBC_2.29 modff F +GLIBC_2.29 modfl F +GLIBC_2.29 moncontrol F +GLIBC_2.29 monstartup F +GLIBC_2.29 mount F +GLIBC_2.29 mprobe F +GLIBC_2.29 mprotect F +GLIBC_2.29 mrand48 F +GLIBC_2.29 mrand48_r F +GLIBC_2.29 mremap F +GLIBC_2.29 msgctl F +GLIBC_2.29 msgget F +GLIBC_2.29 msgrcv F +GLIBC_2.29 msgsnd F +GLIBC_2.29 msync F +GLIBC_2.29 mtrace F +GLIBC_2.29 munlock F +GLIBC_2.29 munlockall F +GLIBC_2.29 munmap F +GLIBC_2.29 muntrace F +GLIBC_2.29 name_to_handle_at F +GLIBC_2.29 nanosleep F +GLIBC_2.29 netname2host F +GLIBC_2.29 netname2user F +GLIBC_2.29 newlocale F +GLIBC_2.29 nftw F +GLIBC_2.29 nftw64 F +GLIBC_2.29 ngettext F +GLIBC_2.29 nice F +GLIBC_2.29 nl_langinfo F +GLIBC_2.29 nl_langinfo_l F +GLIBC_2.29 nrand48 F +GLIBC_2.29 nrand48_r F +GLIBC_2.29 ntohl F +GLIBC_2.29 ntohs F +GLIBC_2.29 ntp_adjtime F +GLIBC_2.29 ntp_gettime F +GLIBC_2.29 ntp_gettimex F +GLIBC_2.29 obstack_alloc_failed_handler D 0x4 +GLIBC_2.29 obstack_exit_failure D 0x4 +GLIBC_2.29 obstack_free F +GLIBC_2.29 obstack_printf F +GLIBC_2.29 obstack_vprintf F +GLIBC_2.29 on_exit F +GLIBC_2.29 open F +GLIBC_2.29 open64 F +GLIBC_2.29 open_by_handle_at F +GLIBC_2.29 open_memstream F +GLIBC_2.29 open_wmemstream F +GLIBC_2.29 openat F +GLIBC_2.29 openat64 F +GLIBC_2.29 opendir F +GLIBC_2.29 openlog F +GLIBC_2.29 optarg D 0x4 +GLIBC_2.29 opterr D 0x4 +GLIBC_2.29 optind D 0x4 +GLIBC_2.29 optopt D 0x4 +GLIBC_2.29 parse_printf_format F +GLIBC_2.29 passwd2des F +GLIBC_2.29 pathconf F +GLIBC_2.29 pause F +GLIBC_2.29 pclose F +GLIBC_2.29 perror F +GLIBC_2.29 personality F +GLIBC_2.29 pipe F +GLIBC_2.29 pipe2 F +GLIBC_2.29 pivot_root F +GLIBC_2.29 pkey_alloc F +GLIBC_2.29 pkey_free F +GLIBC_2.29 pkey_get F +GLIBC_2.29 pkey_mprotect F +GLIBC_2.29 pkey_set F +GLIBC_2.29 pmap_getmaps F +GLIBC_2.29 pmap_getport F +GLIBC_2.29 pmap_rmtcall F +GLIBC_2.29 pmap_set F +GLIBC_2.29 pmap_unset F +GLIBC_2.29 poll F +GLIBC_2.29 popen F +GLIBC_2.29 posix_fadvise F +GLIBC_2.29 posix_fadvise64 F +GLIBC_2.29 posix_fallocate F +GLIBC_2.29 posix_fallocate64 F +GLIBC_2.29 posix_madvise F +GLIBC_2.29 posix_memalign F +GLIBC_2.29 posix_openpt F +GLIBC_2.29 posix_spawn F +GLIBC_2.29 posix_spawn_file_actions_addchdir_np F +GLIBC_2.29 posix_spawn_file_actions_addclose F +GLIBC_2.29 posix_spawn_file_actions_adddup2 F +GLIBC_2.29 posix_spawn_file_actions_addfchdir_np F +GLIBC_2.29 posix_spawn_file_actions_addopen F +GLIBC_2.29 posix_spawn_file_actions_destroy F +GLIBC_2.29 posix_spawn_file_actions_init F +GLIBC_2.29 posix_spawnattr_destroy F +GLIBC_2.29 posix_spawnattr_getflags F +GLIBC_2.29 posix_spawnattr_getpgroup F +GLIBC_2.29 posix_spawnattr_getschedparam F +GLIBC_2.29 posix_spawnattr_getschedpolicy F +GLIBC_2.29 posix_spawnattr_getsigdefault F +GLIBC_2.29 posix_spawnattr_getsigmask F +GLIBC_2.29 posix_spawnattr_init F +GLIBC_2.29 posix_spawnattr_setflags F +GLIBC_2.29 posix_spawnattr_setpgroup F +GLIBC_2.29 posix_spawnattr_setschedparam F +GLIBC_2.29 posix_spawnattr_setschedpolicy F +GLIBC_2.29 posix_spawnattr_setsigdefault F +GLIBC_2.29 posix_spawnattr_setsigmask F +GLIBC_2.29 posix_spawnp F +GLIBC_2.29 ppoll F +GLIBC_2.29 prctl F +GLIBC_2.29 pread F +GLIBC_2.29 pread64 F +GLIBC_2.29 preadv F +GLIBC_2.29 preadv2 F +GLIBC_2.29 preadv64 F +GLIBC_2.29 preadv64v2 F +GLIBC_2.29 printf F +GLIBC_2.29 printf_size F +GLIBC_2.29 printf_size_info F +GLIBC_2.29 prlimit F +GLIBC_2.29 prlimit64 F +GLIBC_2.29 process_vm_readv F +GLIBC_2.29 process_vm_writev F +GLIBC_2.29 profil F +GLIBC_2.29 program_invocation_name D 0x4 +GLIBC_2.29 program_invocation_short_name D 0x4 +GLIBC_2.29 pselect F +GLIBC_2.29 psiginfo F +GLIBC_2.29 psignal F +GLIBC_2.29 pthread_attr_destroy F +GLIBC_2.29 pthread_attr_getdetachstate F +GLIBC_2.29 pthread_attr_getinheritsched F +GLIBC_2.29 pthread_attr_getschedparam F +GLIBC_2.29 pthread_attr_getschedpolicy F +GLIBC_2.29 pthread_attr_getscope F +GLIBC_2.29 pthread_attr_init F +GLIBC_2.29 pthread_attr_setdetachstate F +GLIBC_2.29 pthread_attr_setinheritsched F +GLIBC_2.29 pthread_attr_setschedparam F +GLIBC_2.29 pthread_attr_setschedpolicy F +GLIBC_2.29 pthread_attr_setscope F +GLIBC_2.29 pthread_cond_broadcast F +GLIBC_2.29 pthread_cond_destroy F +GLIBC_2.29 pthread_cond_init F +GLIBC_2.29 pthread_cond_signal F +GLIBC_2.29 pthread_cond_timedwait F +GLIBC_2.29 pthread_cond_wait F +GLIBC_2.29 pthread_condattr_destroy F +GLIBC_2.29 pthread_condattr_init F +GLIBC_2.29 pthread_equal F +GLIBC_2.29 pthread_exit F +GLIBC_2.29 pthread_getschedparam F +GLIBC_2.29 pthread_mutex_destroy F +GLIBC_2.29 pthread_mutex_init F +GLIBC_2.29 pthread_mutex_lock F +GLIBC_2.29 pthread_mutex_unlock F +GLIBC_2.29 pthread_self F +GLIBC_2.29 pthread_setcancelstate F +GLIBC_2.29 pthread_setcanceltype F +GLIBC_2.29 pthread_setschedparam F +GLIBC_2.29 ptrace F +GLIBC_2.29 ptsname F +GLIBC_2.29 ptsname_r F +GLIBC_2.29 putc F +GLIBC_2.29 putc_unlocked F +GLIBC_2.29 putchar F +GLIBC_2.29 putchar_unlocked F +GLIBC_2.29 putenv F +GLIBC_2.29 putgrent F +GLIBC_2.29 putmsg F +GLIBC_2.29 putpmsg F +GLIBC_2.29 putpwent F +GLIBC_2.29 puts F +GLIBC_2.29 putsgent F +GLIBC_2.29 putspent F +GLIBC_2.29 pututline F +GLIBC_2.29 pututxline F +GLIBC_2.29 putw F +GLIBC_2.29 putwc F +GLIBC_2.29 putwc_unlocked F +GLIBC_2.29 putwchar F +GLIBC_2.29 putwchar_unlocked F +GLIBC_2.29 pvalloc F +GLIBC_2.29 pwrite F +GLIBC_2.29 pwrite64 F +GLIBC_2.29 pwritev F +GLIBC_2.29 pwritev2 F +GLIBC_2.29 pwritev64 F +GLIBC_2.29 pwritev64v2 F +GLIBC_2.29 qecvt F +GLIBC_2.29 qecvt_r F +GLIBC_2.29 qfcvt F +GLIBC_2.29 qfcvt_r F +GLIBC_2.29 qgcvt F +GLIBC_2.29 qsort F +GLIBC_2.29 qsort_r F +GLIBC_2.29 quick_exit F +GLIBC_2.29 quotactl F +GLIBC_2.29 raise F +GLIBC_2.29 rand F +GLIBC_2.29 rand_r F +GLIBC_2.29 random F +GLIBC_2.29 random_r F +GLIBC_2.29 rawmemchr F +GLIBC_2.29 rcmd F +GLIBC_2.29 rcmd_af F +GLIBC_2.29 re_comp F +GLIBC_2.29 re_compile_fastmap F +GLIBC_2.29 re_compile_pattern F +GLIBC_2.29 re_exec F +GLIBC_2.29 re_match F +GLIBC_2.29 re_match_2 F +GLIBC_2.29 re_search F +GLIBC_2.29 re_search_2 F +GLIBC_2.29 re_set_registers F +GLIBC_2.29 re_set_syntax F +GLIBC_2.29 re_syntax_options D 0x4 +GLIBC_2.29 read F +GLIBC_2.29 readahead F +GLIBC_2.29 readdir F +GLIBC_2.29 readdir64 F +GLIBC_2.29 readdir64_r F +GLIBC_2.29 readdir_r F +GLIBC_2.29 readlink F +GLIBC_2.29 readlinkat F +GLIBC_2.29 readv F +GLIBC_2.29 realloc F +GLIBC_2.29 reallocarray F +GLIBC_2.29 realpath F +GLIBC_2.29 reboot F +GLIBC_2.29 recv F +GLIBC_2.29 recvfrom F +GLIBC_2.29 recvmmsg F +GLIBC_2.29 recvmsg F +GLIBC_2.29 regcomp F +GLIBC_2.29 regerror F +GLIBC_2.29 regexec F +GLIBC_2.29 regfree F +GLIBC_2.29 register_printf_function F +GLIBC_2.29 register_printf_modifier F +GLIBC_2.29 register_printf_specifier F +GLIBC_2.29 register_printf_type F +GLIBC_2.29 registerrpc F +GLIBC_2.29 remap_file_pages F +GLIBC_2.29 remove F +GLIBC_2.29 removexattr F +GLIBC_2.29 remque F +GLIBC_2.29 rename F +GLIBC_2.29 renameat F +GLIBC_2.29 renameat2 F +GLIBC_2.29 revoke F +GLIBC_2.29 rewind F +GLIBC_2.29 rewinddir F +GLIBC_2.29 rexec F +GLIBC_2.29 rexec_af F +GLIBC_2.29 rexecoptions D 0x4 +GLIBC_2.29 rindex F +GLIBC_2.29 rmdir F +GLIBC_2.29 rpc_createerr D 0x10 +GLIBC_2.29 rpmatch F +GLIBC_2.29 rresvport F +GLIBC_2.29 rresvport_af F +GLIBC_2.29 rtime F +GLIBC_2.29 ruserok F +GLIBC_2.29 ruserok_af F +GLIBC_2.29 ruserpass F +GLIBC_2.29 sbrk F +GLIBC_2.29 scalbn F +GLIBC_2.29 scalbnf F +GLIBC_2.29 scalbnl F +GLIBC_2.29 scandir F +GLIBC_2.29 scandir64 F +GLIBC_2.29 scandirat F +GLIBC_2.29 scandirat64 F +GLIBC_2.29 scanf F +GLIBC_2.29 sched_get_priority_max F +GLIBC_2.29 sched_get_priority_min F +GLIBC_2.29 sched_getaffinity F +GLIBC_2.29 sched_getcpu F +GLIBC_2.29 sched_getparam F +GLIBC_2.29 sched_getscheduler F +GLIBC_2.29 sched_rr_get_interval F +GLIBC_2.29 sched_setaffinity F +GLIBC_2.29 sched_setparam F +GLIBC_2.29 sched_setscheduler F +GLIBC_2.29 sched_yield F +GLIBC_2.29 secure_getenv F +GLIBC_2.29 seed48 F +GLIBC_2.29 seed48_r F +GLIBC_2.29 seekdir F +GLIBC_2.29 select F +GLIBC_2.29 semctl F +GLIBC_2.29 semget F +GLIBC_2.29 semop F +GLIBC_2.29 semtimedop F +GLIBC_2.29 send F +GLIBC_2.29 sendfile F +GLIBC_2.29 sendfile64 F +GLIBC_2.29 sendmmsg F +GLIBC_2.29 sendmsg F +GLIBC_2.29 sendto F +GLIBC_2.29 setaliasent F +GLIBC_2.29 setbuf F +GLIBC_2.29 setbuffer F +GLIBC_2.29 setcontext F +GLIBC_2.29 setdomainname F +GLIBC_2.29 setegid F +GLIBC_2.29 setenv F +GLIBC_2.29 seteuid F +GLIBC_2.29 setfsent F +GLIBC_2.29 setfsgid F +GLIBC_2.29 setfsuid F +GLIBC_2.29 setgid F +GLIBC_2.29 setgrent F +GLIBC_2.29 setgroups F +GLIBC_2.29 sethostent F +GLIBC_2.29 sethostid F +GLIBC_2.29 sethostname F +GLIBC_2.29 setipv4sourcefilter F +GLIBC_2.29 setitimer F +GLIBC_2.29 setjmp F +GLIBC_2.29 setlinebuf F +GLIBC_2.29 setlocale F +GLIBC_2.29 setlogin F +GLIBC_2.29 setlogmask F +GLIBC_2.29 setmntent F +GLIBC_2.29 setnetent F +GLIBC_2.29 setnetgrent F +GLIBC_2.29 setns F +GLIBC_2.29 setpgid F +GLIBC_2.29 setpgrp F +GLIBC_2.29 setpriority F +GLIBC_2.29 setprotoent F +GLIBC_2.29 setpwent F +GLIBC_2.29 setregid F +GLIBC_2.29 setresgid F +GLIBC_2.29 setresuid F +GLIBC_2.29 setreuid F +GLIBC_2.29 setrlimit F +GLIBC_2.29 setrlimit64 F +GLIBC_2.29 setrpcent F +GLIBC_2.29 setservent F +GLIBC_2.29 setsgent F +GLIBC_2.29 setsid F +GLIBC_2.29 setsockopt F +GLIBC_2.29 setsourcefilter F +GLIBC_2.29 setspent F +GLIBC_2.29 setstate F +GLIBC_2.29 setstate_r F +GLIBC_2.29 settimeofday F +GLIBC_2.29 setttyent F +GLIBC_2.29 setuid F +GLIBC_2.29 setusershell F +GLIBC_2.29 setutent F +GLIBC_2.29 setutxent F +GLIBC_2.29 setvbuf F +GLIBC_2.29 setxattr F +GLIBC_2.29 sgetsgent F +GLIBC_2.29 sgetsgent_r F +GLIBC_2.29 sgetspent F +GLIBC_2.29 sgetspent_r F +GLIBC_2.29 shmat F +GLIBC_2.29 shmctl F +GLIBC_2.29 shmdt F +GLIBC_2.29 shmget F +GLIBC_2.29 shutdown F +GLIBC_2.29 sigaction F +GLIBC_2.29 sigaddset F +GLIBC_2.29 sigaltstack F +GLIBC_2.29 sigandset F +GLIBC_2.29 sigblock F +GLIBC_2.29 sigdelset F +GLIBC_2.29 sigemptyset F +GLIBC_2.29 sigfillset F +GLIBC_2.29 siggetmask F +GLIBC_2.29 sighold F +GLIBC_2.29 sigignore F +GLIBC_2.29 siginterrupt F +GLIBC_2.29 sigisemptyset F +GLIBC_2.29 sigismember F +GLIBC_2.29 siglongjmp F +GLIBC_2.29 signal F +GLIBC_2.29 signalfd F +GLIBC_2.29 sigorset F +GLIBC_2.29 sigpause F +GLIBC_2.29 sigpending F +GLIBC_2.29 sigprocmask F +GLIBC_2.29 sigqueue F +GLIBC_2.29 sigrelse F +GLIBC_2.29 sigreturn F +GLIBC_2.29 sigset F +GLIBC_2.29 sigsetmask F +GLIBC_2.29 sigstack F +GLIBC_2.29 sigsuspend F +GLIBC_2.29 sigtimedwait F +GLIBC_2.29 sigwait F +GLIBC_2.29 sigwaitinfo F +GLIBC_2.29 sleep F +GLIBC_2.29 snprintf F +GLIBC_2.29 sockatmark F +GLIBC_2.29 socket F +GLIBC_2.29 socketpair F +GLIBC_2.29 splice F +GLIBC_2.29 sprintf F +GLIBC_2.29 sprofil F +GLIBC_2.29 srand F +GLIBC_2.29 srand48 F +GLIBC_2.29 srand48_r F +GLIBC_2.29 srandom F +GLIBC_2.29 srandom_r F +GLIBC_2.29 sscanf F +GLIBC_2.29 ssignal F +GLIBC_2.29 sstk F +GLIBC_2.29 statfs F +GLIBC_2.29 statfs64 F +GLIBC_2.29 statvfs F +GLIBC_2.29 statvfs64 F +GLIBC_2.29 statx F +GLIBC_2.29 stderr D 0x4 +GLIBC_2.29 stdin D 0x4 +GLIBC_2.29 stdout D 0x4 +GLIBC_2.29 stime F +GLIBC_2.29 stpcpy F +GLIBC_2.29 stpncpy F +GLIBC_2.29 strcasecmp F +GLIBC_2.29 strcasecmp_l F +GLIBC_2.29 strcasestr F +GLIBC_2.29 strcat F +GLIBC_2.29 strchr F +GLIBC_2.29 strchrnul F +GLIBC_2.29 strcmp F +GLIBC_2.29 strcoll F +GLIBC_2.29 strcoll_l F +GLIBC_2.29 strcpy F +GLIBC_2.29 strcspn F +GLIBC_2.29 strdup F +GLIBC_2.29 strerror F +GLIBC_2.29 strerror_l F +GLIBC_2.29 strerror_r F +GLIBC_2.29 strfmon F +GLIBC_2.29 strfmon_l F +GLIBC_2.29 strfromd F +GLIBC_2.29 strfromf F +GLIBC_2.29 strfromf32 F +GLIBC_2.29 strfromf32x F +GLIBC_2.29 strfromf64 F +GLIBC_2.29 strfroml F +GLIBC_2.29 strfry F +GLIBC_2.29 strftime F +GLIBC_2.29 strftime_l F +GLIBC_2.29 strlen F +GLIBC_2.29 strncasecmp F +GLIBC_2.29 strncasecmp_l F +GLIBC_2.29 strncat F +GLIBC_2.29 strncmp F +GLIBC_2.29 strncpy F +GLIBC_2.29 strndup F +GLIBC_2.29 strnlen F +GLIBC_2.29 strpbrk F +GLIBC_2.29 strptime F +GLIBC_2.29 strptime_l F +GLIBC_2.29 strrchr F +GLIBC_2.29 strsep F +GLIBC_2.29 strsignal F +GLIBC_2.29 strspn F +GLIBC_2.29 strstr F +GLIBC_2.29 strtod F +GLIBC_2.29 strtod_l F +GLIBC_2.29 strtof F +GLIBC_2.29 strtof32 F +GLIBC_2.29 strtof32_l F +GLIBC_2.29 strtof32x F +GLIBC_2.29 strtof32x_l F +GLIBC_2.29 strtof64 F +GLIBC_2.29 strtof64_l F +GLIBC_2.29 strtof_l F +GLIBC_2.29 strtoimax F +GLIBC_2.29 strtok F +GLIBC_2.29 strtok_r F +GLIBC_2.29 strtol F +GLIBC_2.29 strtol_l F +GLIBC_2.29 strtold F +GLIBC_2.29 strtold_l F +GLIBC_2.29 strtoll F +GLIBC_2.29 strtoll_l F +GLIBC_2.29 strtoq F +GLIBC_2.29 strtoul F +GLIBC_2.29 strtoul_l F +GLIBC_2.29 strtoull F +GLIBC_2.29 strtoull_l F +GLIBC_2.29 strtoumax F +GLIBC_2.29 strtouq F +GLIBC_2.29 strverscmp F +GLIBC_2.29 strxfrm F +GLIBC_2.29 strxfrm_l F +GLIBC_2.29 stty F +GLIBC_2.29 svc_exit F +GLIBC_2.29 svc_fdset D 0x80 +GLIBC_2.29 svc_getreq F +GLIBC_2.29 svc_getreq_common F +GLIBC_2.29 svc_getreq_poll F +GLIBC_2.29 svc_getreqset F +GLIBC_2.29 svc_max_pollfd D 0x4 +GLIBC_2.29 svc_pollfd D 0x4 +GLIBC_2.29 svc_register F +GLIBC_2.29 svc_run F +GLIBC_2.29 svc_sendreply F +GLIBC_2.29 svc_unregister F +GLIBC_2.29 svcauthdes_stats D 0xc +GLIBC_2.29 svcerr_auth F +GLIBC_2.29 svcerr_decode F +GLIBC_2.29 svcerr_noproc F +GLIBC_2.29 svcerr_noprog F +GLIBC_2.29 svcerr_progvers F +GLIBC_2.29 svcerr_systemerr F +GLIBC_2.29 svcerr_weakauth F +GLIBC_2.29 svcfd_create F +GLIBC_2.29 svcraw_create F +GLIBC_2.29 svctcp_create F +GLIBC_2.29 svcudp_bufcreate F +GLIBC_2.29 svcudp_create F +GLIBC_2.29 svcudp_enablecache F +GLIBC_2.29 svcunix_create F +GLIBC_2.29 svcunixfd_create F +GLIBC_2.29 swab F +GLIBC_2.29 swapcontext F +GLIBC_2.29 swapoff F +GLIBC_2.29 swapon F +GLIBC_2.29 swprintf F +GLIBC_2.29 swscanf F +GLIBC_2.29 symlink F +GLIBC_2.29 symlinkat F +GLIBC_2.29 sync F +GLIBC_2.29 sync_file_range F +GLIBC_2.29 syncfs F +GLIBC_2.29 sys_errlist D 0x21c +GLIBC_2.29 sys_nerr D 0x4 +GLIBC_2.29 sys_sigabbrev D 0x104 +GLIBC_2.29 sys_siglist D 0x104 +GLIBC_2.29 syscall F +GLIBC_2.29 sysconf F +GLIBC_2.29 sysctl F +GLIBC_2.29 sysinfo F +GLIBC_2.29 syslog F +GLIBC_2.29 system F +GLIBC_2.29 sysv_signal F +GLIBC_2.29 tcdrain F +GLIBC_2.29 tcflow F +GLIBC_2.29 tcflush F +GLIBC_2.29 tcgetattr F +GLIBC_2.29 tcgetpgrp F +GLIBC_2.29 tcgetsid F +GLIBC_2.29 tcsendbreak F +GLIBC_2.29 tcsetattr F +GLIBC_2.29 tcsetpgrp F +GLIBC_2.29 tdelete F +GLIBC_2.29 tdestroy F +GLIBC_2.29 tee F +GLIBC_2.29 telldir F +GLIBC_2.29 tempnam F +GLIBC_2.29 textdomain F +GLIBC_2.29 tfind F +GLIBC_2.29 thrd_current F +GLIBC_2.29 thrd_equal F +GLIBC_2.29 thrd_sleep F +GLIBC_2.29 thrd_yield F +GLIBC_2.29 time F +GLIBC_2.29 timegm F +GLIBC_2.29 timelocal F +GLIBC_2.29 timerfd_create F +GLIBC_2.29 timerfd_gettime F +GLIBC_2.29 timerfd_settime F +GLIBC_2.29 times F +GLIBC_2.29 timespec_get F +GLIBC_2.29 timezone D 0x4 +GLIBC_2.29 tmpfile F +GLIBC_2.29 tmpfile64 F +GLIBC_2.29 tmpnam F +GLIBC_2.29 tmpnam_r F +GLIBC_2.29 toascii F +GLIBC_2.29 tolower F +GLIBC_2.29 tolower_l F +GLIBC_2.29 toupper F +GLIBC_2.29 toupper_l F +GLIBC_2.29 towctrans F +GLIBC_2.29 towctrans_l F +GLIBC_2.29 towlower F +GLIBC_2.29 towlower_l F +GLIBC_2.29 towupper F +GLIBC_2.29 towupper_l F +GLIBC_2.29 tr_break F +GLIBC_2.29 truncate F +GLIBC_2.29 truncate64 F +GLIBC_2.29 tsearch F +GLIBC_2.29 ttyname F +GLIBC_2.29 ttyname_r F +GLIBC_2.29 ttyslot F +GLIBC_2.29 twalk F +GLIBC_2.29 tzname D 0x8 +GLIBC_2.29 tzset F +GLIBC_2.29 ualarm F +GLIBC_2.29 ulckpwdf F +GLIBC_2.29 ulimit F +GLIBC_2.29 umask F +GLIBC_2.29 umount F +GLIBC_2.29 umount2 F +GLIBC_2.29 uname F +GLIBC_2.29 ungetc F +GLIBC_2.29 ungetwc F +GLIBC_2.29 unlink F +GLIBC_2.29 unlinkat F +GLIBC_2.29 unlockpt F +GLIBC_2.29 unsetenv F +GLIBC_2.29 unshare F +GLIBC_2.29 updwtmp F +GLIBC_2.29 updwtmpx F +GLIBC_2.29 uselocale F +GLIBC_2.29 user2netname F +GLIBC_2.29 usleep F +GLIBC_2.29 utime F +GLIBC_2.29 utimensat F +GLIBC_2.29 utimes F +GLIBC_2.29 utmpname F +GLIBC_2.29 utmpxname F +GLIBC_2.29 valloc F +GLIBC_2.29 vasprintf F +GLIBC_2.29 vdprintf F +GLIBC_2.29 verr F +GLIBC_2.29 verrx F +GLIBC_2.29 versionsort F +GLIBC_2.29 versionsort64 F +GLIBC_2.29 vfork F +GLIBC_2.29 vfprintf F +GLIBC_2.29 vfscanf F +GLIBC_2.29 vfwprintf F +GLIBC_2.29 vfwscanf F +GLIBC_2.29 vhangup F +GLIBC_2.29 vlimit F +GLIBC_2.29 vmsplice F +GLIBC_2.29 vprintf F +GLIBC_2.29 vscanf F +GLIBC_2.29 vsnprintf F +GLIBC_2.29 vsprintf F +GLIBC_2.29 vsscanf F +GLIBC_2.29 vswprintf F +GLIBC_2.29 vswscanf F +GLIBC_2.29 vsyslog F +GLIBC_2.29 vtimes F +GLIBC_2.29 vwarn F +GLIBC_2.29 vwarnx F +GLIBC_2.29 vwprintf F +GLIBC_2.29 vwscanf F +GLIBC_2.29 wait F +GLIBC_2.29 wait3 F +GLIBC_2.29 wait4 F +GLIBC_2.29 waitid F +GLIBC_2.29 waitpid F +GLIBC_2.29 warn F +GLIBC_2.29 warnx F +GLIBC_2.29 wcpcpy F +GLIBC_2.29 wcpncpy F +GLIBC_2.29 wcrtomb F +GLIBC_2.29 wcscasecmp F +GLIBC_2.29 wcscasecmp_l F +GLIBC_2.29 wcscat F +GLIBC_2.29 wcschr F +GLIBC_2.29 wcschrnul F +GLIBC_2.29 wcscmp F +GLIBC_2.29 wcscoll F +GLIBC_2.29 wcscoll_l F +GLIBC_2.29 wcscpy F +GLIBC_2.29 wcscspn F +GLIBC_2.29 wcsdup F +GLIBC_2.29 wcsftime F +GLIBC_2.29 wcsftime_l F +GLIBC_2.29 wcslen F +GLIBC_2.29 wcsncasecmp F +GLIBC_2.29 wcsncasecmp_l F +GLIBC_2.29 wcsncat F +GLIBC_2.29 wcsncmp F +GLIBC_2.29 wcsncpy F +GLIBC_2.29 wcsnlen F +GLIBC_2.29 wcsnrtombs F +GLIBC_2.29 wcspbrk F +GLIBC_2.29 wcsrchr F +GLIBC_2.29 wcsrtombs F +GLIBC_2.29 wcsspn F +GLIBC_2.29 wcsstr F +GLIBC_2.29 wcstod F +GLIBC_2.29 wcstod_l F +GLIBC_2.29 wcstof F +GLIBC_2.29 wcstof32 F +GLIBC_2.29 wcstof32_l F +GLIBC_2.29 wcstof32x F +GLIBC_2.29 wcstof32x_l F +GLIBC_2.29 wcstof64 F +GLIBC_2.29 wcstof64_l F +GLIBC_2.29 wcstof_l F +GLIBC_2.29 wcstoimax F +GLIBC_2.29 wcstok F +GLIBC_2.29 wcstol F +GLIBC_2.29 wcstol_l F +GLIBC_2.29 wcstold F +GLIBC_2.29 wcstold_l F +GLIBC_2.29 wcstoll F +GLIBC_2.29 wcstoll_l F +GLIBC_2.29 wcstombs F +GLIBC_2.29 wcstoq F +GLIBC_2.29 wcstoul F +GLIBC_2.29 wcstoul_l F +GLIBC_2.29 wcstoull F +GLIBC_2.29 wcstoull_l F +GLIBC_2.29 wcstoumax F +GLIBC_2.29 wcstouq F +GLIBC_2.29 wcswcs F +GLIBC_2.29 wcswidth F +GLIBC_2.29 wcsxfrm F +GLIBC_2.29 wcsxfrm_l F +GLIBC_2.29 wctob F +GLIBC_2.29 wctomb F +GLIBC_2.29 wctrans F +GLIBC_2.29 wctrans_l F +GLIBC_2.29 wctype F +GLIBC_2.29 wctype_l F +GLIBC_2.29 wcwidth F +GLIBC_2.29 wmemchr F +GLIBC_2.29 wmemcmp F +GLIBC_2.29 wmemcpy F +GLIBC_2.29 wmemmove F +GLIBC_2.29 wmempcpy F +GLIBC_2.29 wmemset F +GLIBC_2.29 wordexp F +GLIBC_2.29 wordfree F +GLIBC_2.29 wprintf F +GLIBC_2.29 write F +GLIBC_2.29 writev F +GLIBC_2.29 wscanf F +GLIBC_2.29 xdecrypt F +GLIBC_2.29 xdr_accepted_reply F +GLIBC_2.29 xdr_array F +GLIBC_2.29 xdr_authdes_cred F +GLIBC_2.29 xdr_authdes_verf F +GLIBC_2.29 xdr_authunix_parms F +GLIBC_2.29 xdr_bool F +GLIBC_2.29 xdr_bytes F +GLIBC_2.29 xdr_callhdr F +GLIBC_2.29 xdr_callmsg F +GLIBC_2.29 xdr_char F +GLIBC_2.29 xdr_cryptkeyarg F +GLIBC_2.29 xdr_cryptkeyarg2 F +GLIBC_2.29 xdr_cryptkeyres F +GLIBC_2.29 xdr_des_block F +GLIBC_2.29 xdr_double F +GLIBC_2.29 xdr_enum F +GLIBC_2.29 xdr_float F +GLIBC_2.29 xdr_free F +GLIBC_2.29 xdr_getcredres F +GLIBC_2.29 xdr_hyper F +GLIBC_2.29 xdr_int F +GLIBC_2.29 xdr_int16_t F +GLIBC_2.29 xdr_int32_t F +GLIBC_2.29 xdr_int64_t F +GLIBC_2.29 xdr_int8_t F +GLIBC_2.29 xdr_key_netstarg F +GLIBC_2.29 xdr_key_netstres F +GLIBC_2.29 xdr_keybuf F +GLIBC_2.29 xdr_keystatus F +GLIBC_2.29 xdr_long F +GLIBC_2.29 xdr_longlong_t F +GLIBC_2.29 xdr_netnamestr F +GLIBC_2.29 xdr_netobj F +GLIBC_2.29 xdr_opaque F +GLIBC_2.29 xdr_opaque_auth F +GLIBC_2.29 xdr_pmap F +GLIBC_2.29 xdr_pmaplist F +GLIBC_2.29 xdr_pointer F +GLIBC_2.29 xdr_quad_t F +GLIBC_2.29 xdr_reference F +GLIBC_2.29 xdr_rejected_reply F +GLIBC_2.29 xdr_replymsg F +GLIBC_2.29 xdr_rmtcall_args F +GLIBC_2.29 xdr_rmtcallres F +GLIBC_2.29 xdr_short F +GLIBC_2.29 xdr_sizeof F +GLIBC_2.29 xdr_string F +GLIBC_2.29 xdr_u_char F +GLIBC_2.29 xdr_u_hyper F +GLIBC_2.29 xdr_u_int F +GLIBC_2.29 xdr_u_long F +GLIBC_2.29 xdr_u_longlong_t F +GLIBC_2.29 xdr_u_quad_t F +GLIBC_2.29 xdr_u_short F +GLIBC_2.29 xdr_uint16_t F +GLIBC_2.29 xdr_uint32_t F +GLIBC_2.29 xdr_uint64_t F +GLIBC_2.29 xdr_uint8_t F +GLIBC_2.29 xdr_union F +GLIBC_2.29 xdr_unixcred F +GLIBC_2.29 xdr_vector F +GLIBC_2.29 xdr_void F +GLIBC_2.29 xdr_wrapstring F +GLIBC_2.29 xdrmem_create F +GLIBC_2.29 xdrrec_create F +GLIBC_2.29 xdrrec_endofrecord F +GLIBC_2.29 xdrrec_eof F +GLIBC_2.29 xdrrec_skiprecord F +GLIBC_2.29 xdrstdio_create F +GLIBC_2.29 xencrypt F +GLIBC_2.29 xprt_register F +GLIBC_2.29 xprt_unregister F diff --git a/sysdeps/unix/sysv/linux/arc/libcrypt.abilist b/sysdeps/unix/sysv/linux/arc/libcrypt.abilist new file mode 100644 index 00000000000..da3abbf8fb8 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/libcrypt.abilist @@ -0,0 +1,2 @@ +GLIBC_2.29 crypt F +GLIBC_2.29 crypt_r F diff --git a/sysdeps/unix/sysv/linux/arc/libdl.abilist b/sysdeps/unix/sysv/linux/arc/libdl.abilist new file mode 100644 index 00000000000..8fcb609ddcf --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/libdl.abilist @@ -0,0 +1,9 @@ +GLIBC_2.29 dladdr F +GLIBC_2.29 dladdr1 F +GLIBC_2.29 dlclose F +GLIBC_2.29 dlerror F +GLIBC_2.29 dlinfo F +GLIBC_2.29 dlmopen F +GLIBC_2.29 dlopen F +GLIBC_2.29 dlsym F +GLIBC_2.29 dlvsym F diff --git a/sysdeps/unix/sysv/linux/arc/libm.abilist b/sysdeps/unix/sysv/linux/arc/libm.abilist new file mode 100644 index 00000000000..497f6226447 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/libm.abilist @@ -0,0 +1,753 @@ +GLIBC_2.29 __acos_finite F +GLIBC_2.29 __acosf_finite F +GLIBC_2.29 __acosh_finite F +GLIBC_2.29 __acoshf_finite F +GLIBC_2.29 __asin_finite F +GLIBC_2.29 __asinf_finite F +GLIBC_2.29 __atan2_finite F +GLIBC_2.29 __atan2f_finite F +GLIBC_2.29 __atanh_finite F +GLIBC_2.29 __atanhf_finite F +GLIBC_2.29 __clog10 F +GLIBC_2.29 __clog10f F +GLIBC_2.29 __clog10l F +GLIBC_2.29 __cosh_finite F +GLIBC_2.29 __coshf_finite F +GLIBC_2.29 __exp10_finite F +GLIBC_2.29 __exp10f_finite F +GLIBC_2.29 __exp2_finite F +GLIBC_2.29 __exp2f_finite F +GLIBC_2.29 __exp_finite F +GLIBC_2.29 __expf_finite F +GLIBC_2.29 __finite F +GLIBC_2.29 __finitef F +GLIBC_2.29 __fmod_finite F +GLIBC_2.29 __fmodf_finite F +GLIBC_2.29 __fpclassify F +GLIBC_2.29 __fpclassifyf F +GLIBC_2.29 __gamma_r_finite F +GLIBC_2.29 __gammaf_r_finite F +GLIBC_2.29 __hypot_finite F +GLIBC_2.29 __hypotf_finite F +GLIBC_2.29 __iseqsig F +GLIBC_2.29 __iseqsigf F +GLIBC_2.29 __issignaling F +GLIBC_2.29 __issignalingf F +GLIBC_2.29 __j0_finite F +GLIBC_2.29 __j0f_finite F +GLIBC_2.29 __j1_finite F +GLIBC_2.29 __j1f_finite F +GLIBC_2.29 __jn_finite F +GLIBC_2.29 __jnf_finite F +GLIBC_2.29 __lgamma_r_finite F +GLIBC_2.29 __lgammaf_r_finite F +GLIBC_2.29 __log10_finite F +GLIBC_2.29 __log10f_finite F +GLIBC_2.29 __log2_finite F +GLIBC_2.29 __log2f_finite F +GLIBC_2.29 __log_finite F +GLIBC_2.29 __logf_finite F +GLIBC_2.29 __pow_finite F +GLIBC_2.29 __powf_finite F +GLIBC_2.29 __remainder_finite F +GLIBC_2.29 __remainderf_finite F +GLIBC_2.29 __scalb_finite F +GLIBC_2.29 __scalbf_finite F +GLIBC_2.29 __signbit F +GLIBC_2.29 __signbitf F +GLIBC_2.29 __signgam D 0x4 +GLIBC_2.29 __sinh_finite F +GLIBC_2.29 __sinhf_finite F +GLIBC_2.29 __sqrt_finite F +GLIBC_2.29 __sqrtf_finite F +GLIBC_2.29 __y0_finite F +GLIBC_2.29 __y0f_finite F +GLIBC_2.29 __y1_finite F +GLIBC_2.29 __y1f_finite F +GLIBC_2.29 __yn_finite F +GLIBC_2.29 __ynf_finite F +GLIBC_2.29 acos F +GLIBC_2.29 acosf F +GLIBC_2.29 acosf32 F +GLIBC_2.29 acosf32x F +GLIBC_2.29 acosf64 F +GLIBC_2.29 acosh F +GLIBC_2.29 acoshf F +GLIBC_2.29 acoshf32 F +GLIBC_2.29 acoshf32x F +GLIBC_2.29 acoshf64 F +GLIBC_2.29 acoshl F +GLIBC_2.29 acosl F +GLIBC_2.29 asin F +GLIBC_2.29 asinf F +GLIBC_2.29 asinf32 F +GLIBC_2.29 asinf32x F +GLIBC_2.29 asinf64 F +GLIBC_2.29 asinh F +GLIBC_2.29 asinhf F +GLIBC_2.29 asinhf32 F +GLIBC_2.29 asinhf32x F +GLIBC_2.29 asinhf64 F +GLIBC_2.29 asinhl F +GLIBC_2.29 asinl F +GLIBC_2.29 atan F +GLIBC_2.29 atan2 F +GLIBC_2.29 atan2f F +GLIBC_2.29 atan2f32 F +GLIBC_2.29 atan2f32x F +GLIBC_2.29 atan2f64 F +GLIBC_2.29 atan2l F +GLIBC_2.29 atanf F +GLIBC_2.29 atanf32 F +GLIBC_2.29 atanf32x F +GLIBC_2.29 atanf64 F +GLIBC_2.29 atanh F +GLIBC_2.29 atanhf F +GLIBC_2.29 atanhf32 F +GLIBC_2.29 atanhf32x F +GLIBC_2.29 atanhf64 F +GLIBC_2.29 atanhl F +GLIBC_2.29 atanl F +GLIBC_2.29 cabs F +GLIBC_2.29 cabsf F +GLIBC_2.29 cabsf32 F +GLIBC_2.29 cabsf32x F +GLIBC_2.29 cabsf64 F +GLIBC_2.29 cabsl F +GLIBC_2.29 cacos F +GLIBC_2.29 cacosf F +GLIBC_2.29 cacosf32 F +GLIBC_2.29 cacosf32x F +GLIBC_2.29 cacosf64 F +GLIBC_2.29 cacosh F +GLIBC_2.29 cacoshf F +GLIBC_2.29 cacoshf32 F +GLIBC_2.29 cacoshf32x F +GLIBC_2.29 cacoshf64 F +GLIBC_2.29 cacoshl F +GLIBC_2.29 cacosl F +GLIBC_2.29 canonicalize F +GLIBC_2.29 canonicalizef F +GLIBC_2.29 canonicalizef32 F +GLIBC_2.29 canonicalizef32x F +GLIBC_2.29 canonicalizef64 F +GLIBC_2.29 canonicalizel F +GLIBC_2.29 carg F +GLIBC_2.29 cargf F +GLIBC_2.29 cargf32 F +GLIBC_2.29 cargf32x F +GLIBC_2.29 cargf64 F +GLIBC_2.29 cargl F +GLIBC_2.29 casin F +GLIBC_2.29 casinf F +GLIBC_2.29 casinf32 F +GLIBC_2.29 casinf32x F +GLIBC_2.29 casinf64 F +GLIBC_2.29 casinh F +GLIBC_2.29 casinhf F +GLIBC_2.29 casinhf32 F +GLIBC_2.29 casinhf32x F +GLIBC_2.29 casinhf64 F +GLIBC_2.29 casinhl F +GLIBC_2.29 casinl F +GLIBC_2.29 catan F +GLIBC_2.29 catanf F +GLIBC_2.29 catanf32 F +GLIBC_2.29 catanf32x F +GLIBC_2.29 catanf64 F +GLIBC_2.29 catanh F +GLIBC_2.29 catanhf F +GLIBC_2.29 catanhf32 F +GLIBC_2.29 catanhf32x F +GLIBC_2.29 catanhf64 F +GLIBC_2.29 catanhl F +GLIBC_2.29 catanl F +GLIBC_2.29 cbrt F +GLIBC_2.29 cbrtf F +GLIBC_2.29 cbrtf32 F +GLIBC_2.29 cbrtf32x F +GLIBC_2.29 cbrtf64 F +GLIBC_2.29 cbrtl F +GLIBC_2.29 ccos F +GLIBC_2.29 ccosf F +GLIBC_2.29 ccosf32 F +GLIBC_2.29 ccosf32x F +GLIBC_2.29 ccosf64 F +GLIBC_2.29 ccosh F +GLIBC_2.29 ccoshf F +GLIBC_2.29 ccoshf32 F +GLIBC_2.29 ccoshf32x F +GLIBC_2.29 ccoshf64 F +GLIBC_2.29 ccoshl F +GLIBC_2.29 ccosl F +GLIBC_2.29 ceil F +GLIBC_2.29 ceilf F +GLIBC_2.29 ceilf32 F +GLIBC_2.29 ceilf32x F +GLIBC_2.29 ceilf64 F +GLIBC_2.29 ceill F +GLIBC_2.29 cexp F +GLIBC_2.29 cexpf F +GLIBC_2.29 cexpf32 F +GLIBC_2.29 cexpf32x F +GLIBC_2.29 cexpf64 F +GLIBC_2.29 cexpl F +GLIBC_2.29 cimag F +GLIBC_2.29 cimagf F +GLIBC_2.29 cimagf32 F +GLIBC_2.29 cimagf32x F +GLIBC_2.29 cimagf64 F +GLIBC_2.29 cimagl F +GLIBC_2.29 clog F +GLIBC_2.29 clog10 F +GLIBC_2.29 clog10f F +GLIBC_2.29 clog10f32 F +GLIBC_2.29 clog10f32x F +GLIBC_2.29 clog10f64 F +GLIBC_2.29 clog10l F +GLIBC_2.29 clogf F +GLIBC_2.29 clogf32 F +GLIBC_2.29 clogf32x F +GLIBC_2.29 clogf64 F +GLIBC_2.29 clogl F +GLIBC_2.29 conj F +GLIBC_2.29 conjf F +GLIBC_2.29 conjf32 F +GLIBC_2.29 conjf32x F +GLIBC_2.29 conjf64 F +GLIBC_2.29 conjl F +GLIBC_2.29 copysign F +GLIBC_2.29 copysignf F +GLIBC_2.29 copysignf32 F +GLIBC_2.29 copysignf32x F +GLIBC_2.29 copysignf64 F +GLIBC_2.29 copysignl F +GLIBC_2.29 cos F +GLIBC_2.29 cosf F +GLIBC_2.29 cosf32 F +GLIBC_2.29 cosf32x F +GLIBC_2.29 cosf64 F +GLIBC_2.29 cosh F +GLIBC_2.29 coshf F +GLIBC_2.29 coshf32 F +GLIBC_2.29 coshf32x F +GLIBC_2.29 coshf64 F +GLIBC_2.29 coshl F +GLIBC_2.29 cosl F +GLIBC_2.29 cpow F +GLIBC_2.29 cpowf F +GLIBC_2.29 cpowf32 F +GLIBC_2.29 cpowf32x F +GLIBC_2.29 cpowf64 F +GLIBC_2.29 cpowl F +GLIBC_2.29 cproj F +GLIBC_2.29 cprojf F +GLIBC_2.29 cprojf32 F +GLIBC_2.29 cprojf32x F +GLIBC_2.29 cprojf64 F +GLIBC_2.29 cprojl F +GLIBC_2.29 creal F +GLIBC_2.29 crealf F +GLIBC_2.29 crealf32 F +GLIBC_2.29 crealf32x F +GLIBC_2.29 crealf64 F +GLIBC_2.29 creall F +GLIBC_2.29 csin F +GLIBC_2.29 csinf F +GLIBC_2.29 csinf32 F +GLIBC_2.29 csinf32x F +GLIBC_2.29 csinf64 F +GLIBC_2.29 csinh F +GLIBC_2.29 csinhf F +GLIBC_2.29 csinhf32 F +GLIBC_2.29 csinhf32x F +GLIBC_2.29 csinhf64 F +GLIBC_2.29 csinhl F +GLIBC_2.29 csinl F +GLIBC_2.29 csqrt F +GLIBC_2.29 csqrtf F +GLIBC_2.29 csqrtf32 F +GLIBC_2.29 csqrtf32x F +GLIBC_2.29 csqrtf64 F +GLIBC_2.29 csqrtl F +GLIBC_2.29 ctan F +GLIBC_2.29 ctanf F +GLIBC_2.29 ctanf32 F +GLIBC_2.29 ctanf32x F +GLIBC_2.29 ctanf64 F +GLIBC_2.29 ctanh F +GLIBC_2.29 ctanhf F +GLIBC_2.29 ctanhf32 F +GLIBC_2.29 ctanhf32x F +GLIBC_2.29 ctanhf64 F +GLIBC_2.29 ctanhl F +GLIBC_2.29 ctanl F +GLIBC_2.29 daddl F +GLIBC_2.29 ddivl F +GLIBC_2.29 dmull F +GLIBC_2.29 drem F +GLIBC_2.29 dremf F +GLIBC_2.29 dreml F +GLIBC_2.29 dsubl F +GLIBC_2.29 erf F +GLIBC_2.29 erfc F +GLIBC_2.29 erfcf F +GLIBC_2.29 erfcf32 F +GLIBC_2.29 erfcf32x F +GLIBC_2.29 erfcf64 F +GLIBC_2.29 erfcl F +GLIBC_2.29 erff F +GLIBC_2.29 erff32 F +GLIBC_2.29 erff32x F +GLIBC_2.29 erff64 F +GLIBC_2.29 erfl F +GLIBC_2.29 exp F +GLIBC_2.29 exp10 F +GLIBC_2.29 exp10f F +GLIBC_2.29 exp10f32 F +GLIBC_2.29 exp10f32x F +GLIBC_2.29 exp10f64 F +GLIBC_2.29 exp10l F +GLIBC_2.29 exp2 F +GLIBC_2.29 exp2f F +GLIBC_2.29 exp2f32 F +GLIBC_2.29 exp2f32x F +GLIBC_2.29 exp2f64 F +GLIBC_2.29 exp2l F +GLIBC_2.29 expf F +GLIBC_2.29 expf32 F +GLIBC_2.29 expf32x F +GLIBC_2.29 expf64 F +GLIBC_2.29 expl F +GLIBC_2.29 expm1 F +GLIBC_2.29 expm1f F +GLIBC_2.29 expm1f32 F +GLIBC_2.29 expm1f32x F +GLIBC_2.29 expm1f64 F +GLIBC_2.29 expm1l F +GLIBC_2.29 f32addf32x F +GLIBC_2.29 f32addf64 F +GLIBC_2.29 f32divf32x F +GLIBC_2.29 f32divf64 F +GLIBC_2.29 f32mulf32x F +GLIBC_2.29 f32mulf64 F +GLIBC_2.29 f32subf32x F +GLIBC_2.29 f32subf64 F +GLIBC_2.29 f32xaddf64 F +GLIBC_2.29 f32xdivf64 F +GLIBC_2.29 f32xmulf64 F +GLIBC_2.29 f32xsubf64 F +GLIBC_2.29 fabs F +GLIBC_2.29 fabsf F +GLIBC_2.29 fabsf32 F +GLIBC_2.29 fabsf32x F +GLIBC_2.29 fabsf64 F +GLIBC_2.29 fabsl F +GLIBC_2.29 fadd F +GLIBC_2.29 faddl F +GLIBC_2.29 fdim F +GLIBC_2.29 fdimf F +GLIBC_2.29 fdimf32 F +GLIBC_2.29 fdimf32x F +GLIBC_2.29 fdimf64 F +GLIBC_2.29 fdiml F +GLIBC_2.29 fdiv F +GLIBC_2.29 fdivl F +GLIBC_2.29 feclearexcept F +GLIBC_2.29 fedisableexcept F +GLIBC_2.29 feenableexcept F +GLIBC_2.29 fegetenv F +GLIBC_2.29 fegetexcept F +GLIBC_2.29 fegetexceptflag F +GLIBC_2.29 fegetmode F +GLIBC_2.29 fegetround F +GLIBC_2.29 feholdexcept F +GLIBC_2.29 feraiseexcept F +GLIBC_2.29 fesetenv F +GLIBC_2.29 fesetexcept F +GLIBC_2.29 fesetexceptflag F +GLIBC_2.29 fesetmode F +GLIBC_2.29 fesetround F +GLIBC_2.29 fetestexcept F +GLIBC_2.29 fetestexceptflag F +GLIBC_2.29 feupdateenv F +GLIBC_2.29 finite F +GLIBC_2.29 finitef F +GLIBC_2.29 finitel F +GLIBC_2.29 floor F +GLIBC_2.29 floorf F +GLIBC_2.29 floorf32 F +GLIBC_2.29 floorf32x F +GLIBC_2.29 floorf64 F +GLIBC_2.29 floorl F +GLIBC_2.29 fma F +GLIBC_2.29 fmaf F +GLIBC_2.29 fmaf32 F +GLIBC_2.29 fmaf32x F +GLIBC_2.29 fmaf64 F +GLIBC_2.29 fmal F +GLIBC_2.29 fmax F +GLIBC_2.29 fmaxf F +GLIBC_2.29 fmaxf32 F +GLIBC_2.29 fmaxf32x F +GLIBC_2.29 fmaxf64 F +GLIBC_2.29 fmaxl F +GLIBC_2.29 fmaxmag F +GLIBC_2.29 fmaxmagf F +GLIBC_2.29 fmaxmagf32 F +GLIBC_2.29 fmaxmagf32x F +GLIBC_2.29 fmaxmagf64 F +GLIBC_2.29 fmaxmagl F +GLIBC_2.29 fmin F +GLIBC_2.29 fminf F +GLIBC_2.29 fminf32 F +GLIBC_2.29 fminf32x F +GLIBC_2.29 fminf64 F +GLIBC_2.29 fminl F +GLIBC_2.29 fminmag F +GLIBC_2.29 fminmagf F +GLIBC_2.29 fminmagf32 F +GLIBC_2.29 fminmagf32x F +GLIBC_2.29 fminmagf64 F +GLIBC_2.29 fminmagl F +GLIBC_2.29 fmod F +GLIBC_2.29 fmodf F +GLIBC_2.29 fmodf32 F +GLIBC_2.29 fmodf32x F +GLIBC_2.29 fmodf64 F +GLIBC_2.29 fmodl F +GLIBC_2.29 fmul F +GLIBC_2.29 fmull F +GLIBC_2.29 frexp F +GLIBC_2.29 frexpf F +GLIBC_2.29 frexpf32 F +GLIBC_2.29 frexpf32x F +GLIBC_2.29 frexpf64 F +GLIBC_2.29 frexpl F +GLIBC_2.29 fromfp F +GLIBC_2.29 fromfpf F +GLIBC_2.29 fromfpf32 F +GLIBC_2.29 fromfpf32x F +GLIBC_2.29 fromfpf64 F +GLIBC_2.29 fromfpl F +GLIBC_2.29 fromfpx F +GLIBC_2.29 fromfpxf F +GLIBC_2.29 fromfpxf32 F +GLIBC_2.29 fromfpxf32x F +GLIBC_2.29 fromfpxf64 F +GLIBC_2.29 fromfpxl F +GLIBC_2.29 fsub F +GLIBC_2.29 fsubl F +GLIBC_2.29 gamma F +GLIBC_2.29 gammaf F +GLIBC_2.29 gammal F +GLIBC_2.29 getpayload F +GLIBC_2.29 getpayloadf F +GLIBC_2.29 getpayloadf32 F +GLIBC_2.29 getpayloadf32x F +GLIBC_2.29 getpayloadf64 F +GLIBC_2.29 getpayloadl F +GLIBC_2.29 hypot F +GLIBC_2.29 hypotf F +GLIBC_2.29 hypotf32 F +GLIBC_2.29 hypotf32x F +GLIBC_2.29 hypotf64 F +GLIBC_2.29 hypotl F +GLIBC_2.29 ilogb F +GLIBC_2.29 ilogbf F +GLIBC_2.29 ilogbf32 F +GLIBC_2.29 ilogbf32x F +GLIBC_2.29 ilogbf64 F +GLIBC_2.29 ilogbl F +GLIBC_2.29 j0 F +GLIBC_2.29 j0f F +GLIBC_2.29 j0f32 F +GLIBC_2.29 j0f32x F +GLIBC_2.29 j0f64 F +GLIBC_2.29 j0l F +GLIBC_2.29 j1 F +GLIBC_2.29 j1f F +GLIBC_2.29 j1f32 F +GLIBC_2.29 j1f32x F +GLIBC_2.29 j1f64 F +GLIBC_2.29 j1l F +GLIBC_2.29 jn F +GLIBC_2.29 jnf F +GLIBC_2.29 jnf32 F +GLIBC_2.29 jnf32x F +GLIBC_2.29 jnf64 F +GLIBC_2.29 jnl F +GLIBC_2.29 ldexp F +GLIBC_2.29 ldexpf F +GLIBC_2.29 ldexpf32 F +GLIBC_2.29 ldexpf32x F +GLIBC_2.29 ldexpf64 F +GLIBC_2.29 ldexpl F +GLIBC_2.29 lgamma F +GLIBC_2.29 lgamma_r F +GLIBC_2.29 lgammaf F +GLIBC_2.29 lgammaf32 F +GLIBC_2.29 lgammaf32_r F +GLIBC_2.29 lgammaf32x F +GLIBC_2.29 lgammaf32x_r F +GLIBC_2.29 lgammaf64 F +GLIBC_2.29 lgammaf64_r F +GLIBC_2.29 lgammaf_r F +GLIBC_2.29 lgammal F +GLIBC_2.29 lgammal_r F +GLIBC_2.29 llogb F +GLIBC_2.29 llogbf F +GLIBC_2.29 llogbf32 F +GLIBC_2.29 llogbf32x F +GLIBC_2.29 llogbf64 F +GLIBC_2.29 llogbl F +GLIBC_2.29 llrint F +GLIBC_2.29 llrintf F +GLIBC_2.29 llrintf32 F +GLIBC_2.29 llrintf32x F +GLIBC_2.29 llrintf64 F +GLIBC_2.29 llrintl F +GLIBC_2.29 llround F +GLIBC_2.29 llroundf F +GLIBC_2.29 llroundf32 F +GLIBC_2.29 llroundf32x F +GLIBC_2.29 llroundf64 F +GLIBC_2.29 llroundl F +GLIBC_2.29 log F +GLIBC_2.29 log10 F +GLIBC_2.29 log10f F +GLIBC_2.29 log10f32 F +GLIBC_2.29 log10f32x F +GLIBC_2.29 log10f64 F +GLIBC_2.29 log10l F +GLIBC_2.29 log1p F +GLIBC_2.29 log1pf F +GLIBC_2.29 log1pf32 F +GLIBC_2.29 log1pf32x F +GLIBC_2.29 log1pf64 F +GLIBC_2.29 log1pl F +GLIBC_2.29 log2 F +GLIBC_2.29 log2f F +GLIBC_2.29 log2f32 F +GLIBC_2.29 log2f32x F +GLIBC_2.29 log2f64 F +GLIBC_2.29 log2l F +GLIBC_2.29 logb F +GLIBC_2.29 logbf F +GLIBC_2.29 logbf32 F +GLIBC_2.29 logbf32x F +GLIBC_2.29 logbf64 F +GLIBC_2.29 logbl F +GLIBC_2.29 logf F +GLIBC_2.29 logf32 F +GLIBC_2.29 logf32x F +GLIBC_2.29 logf64 F +GLIBC_2.29 logl F +GLIBC_2.29 lrint F +GLIBC_2.29 lrintf F +GLIBC_2.29 lrintf32 F +GLIBC_2.29 lrintf32x F +GLIBC_2.29 lrintf64 F +GLIBC_2.29 lrintl F +GLIBC_2.29 lround F +GLIBC_2.29 lroundf F +GLIBC_2.29 lroundf32 F +GLIBC_2.29 lroundf32x F +GLIBC_2.29 lroundf64 F +GLIBC_2.29 lroundl F +GLIBC_2.29 modf F +GLIBC_2.29 modff F +GLIBC_2.29 modff32 F +GLIBC_2.29 modff32x F +GLIBC_2.29 modff64 F +GLIBC_2.29 modfl F +GLIBC_2.29 nan F +GLIBC_2.29 nanf F +GLIBC_2.29 nanf32 F +GLIBC_2.29 nanf32x F +GLIBC_2.29 nanf64 F +GLIBC_2.29 nanl F +GLIBC_2.29 nearbyint F +GLIBC_2.29 nearbyintf F +GLIBC_2.29 nearbyintf32 F +GLIBC_2.29 nearbyintf32x F +GLIBC_2.29 nearbyintf64 F +GLIBC_2.29 nearbyintl F +GLIBC_2.29 nextafter F +GLIBC_2.29 nextafterf F +GLIBC_2.29 nextafterf32 F +GLIBC_2.29 nextafterf32x F +GLIBC_2.29 nextafterf64 F +GLIBC_2.29 nextafterl F +GLIBC_2.29 nextdown F +GLIBC_2.29 nextdownf F +GLIBC_2.29 nextdownf32 F +GLIBC_2.29 nextdownf32x F +GLIBC_2.29 nextdownf64 F +GLIBC_2.29 nextdownl F +GLIBC_2.29 nexttoward F +GLIBC_2.29 nexttowardf F +GLIBC_2.29 nexttowardl F +GLIBC_2.29 nextup F +GLIBC_2.29 nextupf F +GLIBC_2.29 nextupf32 F +GLIBC_2.29 nextupf32x F +GLIBC_2.29 nextupf64 F +GLIBC_2.29 nextupl F +GLIBC_2.29 pow F +GLIBC_2.29 powf F +GLIBC_2.29 powf32 F +GLIBC_2.29 powf32x F +GLIBC_2.29 powf64 F +GLIBC_2.29 powl F +GLIBC_2.29 remainder F +GLIBC_2.29 remainderf F +GLIBC_2.29 remainderf32 F +GLIBC_2.29 remainderf32x F +GLIBC_2.29 remainderf64 F +GLIBC_2.29 remainderl F +GLIBC_2.29 remquo F +GLIBC_2.29 remquof F +GLIBC_2.29 remquof32 F +GLIBC_2.29 remquof32x F +GLIBC_2.29 remquof64 F +GLIBC_2.29 remquol F +GLIBC_2.29 rint F +GLIBC_2.29 rintf F +GLIBC_2.29 rintf32 F +GLIBC_2.29 rintf32x F +GLIBC_2.29 rintf64 F +GLIBC_2.29 rintl F +GLIBC_2.29 round F +GLIBC_2.29 roundeven F +GLIBC_2.29 roundevenf F +GLIBC_2.29 roundevenf32 F +GLIBC_2.29 roundevenf32x F +GLIBC_2.29 roundevenf64 F +GLIBC_2.29 roundevenl F +GLIBC_2.29 roundf F +GLIBC_2.29 roundf32 F +GLIBC_2.29 roundf32x F +GLIBC_2.29 roundf64 F +GLIBC_2.29 roundl F +GLIBC_2.29 scalb F +GLIBC_2.29 scalbf F +GLIBC_2.29 scalbl F +GLIBC_2.29 scalbln F +GLIBC_2.29 scalblnf F +GLIBC_2.29 scalblnf32 F +GLIBC_2.29 scalblnf32x F +GLIBC_2.29 scalblnf64 F +GLIBC_2.29 scalblnl F +GLIBC_2.29 scalbn F +GLIBC_2.29 scalbnf F +GLIBC_2.29 scalbnf32 F +GLIBC_2.29 scalbnf32x F +GLIBC_2.29 scalbnf64 F +GLIBC_2.29 scalbnl F +GLIBC_2.29 setpayload F +GLIBC_2.29 setpayloadf F +GLIBC_2.29 setpayloadf32 F +GLIBC_2.29 setpayloadf32x F +GLIBC_2.29 setpayloadf64 F +GLIBC_2.29 setpayloadl F +GLIBC_2.29 setpayloadsig F +GLIBC_2.29 setpayloadsigf F +GLIBC_2.29 setpayloadsigf32 F +GLIBC_2.29 setpayloadsigf32x F +GLIBC_2.29 setpayloadsigf64 F +GLIBC_2.29 setpayloadsigl F +GLIBC_2.29 signgam D 0x4 +GLIBC_2.29 significand F +GLIBC_2.29 significandf F +GLIBC_2.29 significandl F +GLIBC_2.29 sin F +GLIBC_2.29 sincos F +GLIBC_2.29 sincosf F +GLIBC_2.29 sincosf32 F +GLIBC_2.29 sincosf32x F +GLIBC_2.29 sincosf64 F +GLIBC_2.29 sincosl F +GLIBC_2.29 sinf F +GLIBC_2.29 sinf32 F +GLIBC_2.29 sinf32x F +GLIBC_2.29 sinf64 F +GLIBC_2.29 sinh F +GLIBC_2.29 sinhf F +GLIBC_2.29 sinhf32 F +GLIBC_2.29 sinhf32x F +GLIBC_2.29 sinhf64 F +GLIBC_2.29 sinhl F +GLIBC_2.29 sinl F +GLIBC_2.29 sqrt F +GLIBC_2.29 sqrtf F +GLIBC_2.29 sqrtf32 F +GLIBC_2.29 sqrtf32x F +GLIBC_2.29 sqrtf64 F +GLIBC_2.29 sqrtl F +GLIBC_2.29 tan F +GLIBC_2.29 tanf F +GLIBC_2.29 tanf32 F +GLIBC_2.29 tanf32x F +GLIBC_2.29 tanf64 F +GLIBC_2.29 tanh F +GLIBC_2.29 tanhf F +GLIBC_2.29 tanhf32 F +GLIBC_2.29 tanhf32x F +GLIBC_2.29 tanhf64 F +GLIBC_2.29 tanhl F +GLIBC_2.29 tanl F +GLIBC_2.29 tgamma F +GLIBC_2.29 tgammaf F +GLIBC_2.29 tgammaf32 F +GLIBC_2.29 tgammaf32x F +GLIBC_2.29 tgammaf64 F +GLIBC_2.29 tgammal F +GLIBC_2.29 totalorder F +GLIBC_2.29 totalorderf F +GLIBC_2.29 totalorderf32 F +GLIBC_2.29 totalorderf32x F +GLIBC_2.29 totalorderf64 F +GLIBC_2.29 totalorderl F +GLIBC_2.29 totalordermag F +GLIBC_2.29 totalordermagf F +GLIBC_2.29 totalordermagf32 F +GLIBC_2.29 totalordermagf32x F +GLIBC_2.29 totalordermagf64 F +GLIBC_2.29 totalordermagl F +GLIBC_2.29 trunc F +GLIBC_2.29 truncf F +GLIBC_2.29 truncf32 F +GLIBC_2.29 truncf32x F +GLIBC_2.29 truncf64 F +GLIBC_2.29 truncl F +GLIBC_2.29 ufromfp F +GLIBC_2.29 ufromfpf F +GLIBC_2.29 ufromfpf32 F +GLIBC_2.29 ufromfpf32x F +GLIBC_2.29 ufromfpf64 F +GLIBC_2.29 ufromfpl F +GLIBC_2.29 ufromfpx F +GLIBC_2.29 ufromfpxf F +GLIBC_2.29 ufromfpxf32 F +GLIBC_2.29 ufromfpxf32x F +GLIBC_2.29 ufromfpxf64 F +GLIBC_2.29 ufromfpxl F +GLIBC_2.29 y0 F +GLIBC_2.29 y0f F +GLIBC_2.29 y0f32 F +GLIBC_2.29 y0f32x F +GLIBC_2.29 y0f64 F +GLIBC_2.29 y0l F +GLIBC_2.29 y1 F +GLIBC_2.29 y1f F +GLIBC_2.29 y1f32 F +GLIBC_2.29 y1f32x F +GLIBC_2.29 y1f64 F +GLIBC_2.29 y1l F +GLIBC_2.29 yn F +GLIBC_2.29 ynf F +GLIBC_2.29 ynf32 F +GLIBC_2.29 ynf32x F +GLIBC_2.29 ynf64 F +GLIBC_2.29 ynl F diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist new file mode 100644 index 00000000000..ea4b79a518e --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist @@ -0,0 +1,235 @@ +GLIBC_2.29 _IO_flockfile F +GLIBC_2.29 _IO_ftrylockfile F +GLIBC_2.29 _IO_funlockfile F +GLIBC_2.29 __close F +GLIBC_2.29 __connect F +GLIBC_2.29 __errno_location F +GLIBC_2.29 __h_errno_location F +GLIBC_2.29 __libc_allocate_rtsig F +GLIBC_2.29 __libc_current_sigrtmax F +GLIBC_2.29 __libc_current_sigrtmin F +GLIBC_2.29 __lseek F +GLIBC_2.29 __nanosleep F +GLIBC_2.29 __open F +GLIBC_2.29 __open64 F +GLIBC_2.29 __pread64 F +GLIBC_2.29 __pthread_cleanup_routine F +GLIBC_2.29 __pthread_getspecific F +GLIBC_2.29 __pthread_key_create F +GLIBC_2.29 __pthread_mutex_destroy F +GLIBC_2.29 __pthread_mutex_init F +GLIBC_2.29 __pthread_mutex_lock F +GLIBC_2.29 __pthread_mutex_trylock F +GLIBC_2.29 __pthread_mutex_unlock F +GLIBC_2.29 __pthread_mutexattr_destroy F +GLIBC_2.29 __pthread_mutexattr_init F +GLIBC_2.29 __pthread_mutexattr_settype F +GLIBC_2.29 __pthread_once F +GLIBC_2.29 __pthread_register_cancel F +GLIBC_2.29 __pthread_register_cancel_defer F +GLIBC_2.29 __pthread_rwlock_destroy F +GLIBC_2.29 __pthread_rwlock_init F +GLIBC_2.29 __pthread_rwlock_rdlock F +GLIBC_2.29 __pthread_rwlock_tryrdlock F +GLIBC_2.29 __pthread_rwlock_trywrlock F +GLIBC_2.29 __pthread_rwlock_unlock F +GLIBC_2.29 __pthread_rwlock_wrlock F +GLIBC_2.29 __pthread_setspecific F +GLIBC_2.29 __pthread_unregister_cancel F +GLIBC_2.29 __pthread_unregister_cancel_restore F +GLIBC_2.29 __pthread_unwind_next F +GLIBC_2.29 __pwrite64 F +GLIBC_2.29 __read F +GLIBC_2.29 __res_state F +GLIBC_2.29 __send F +GLIBC_2.29 __sigaction F +GLIBC_2.29 __wait F +GLIBC_2.29 __write F +GLIBC_2.29 _pthread_cleanup_pop F +GLIBC_2.29 _pthread_cleanup_pop_restore F +GLIBC_2.29 _pthread_cleanup_push F +GLIBC_2.29 _pthread_cleanup_push_defer F +GLIBC_2.29 accept F +GLIBC_2.29 call_once F +GLIBC_2.29 close F +GLIBC_2.29 cnd_broadcast F +GLIBC_2.29 cnd_destroy F +GLIBC_2.29 cnd_init F +GLIBC_2.29 cnd_signal F +GLIBC_2.29 cnd_timedwait F +GLIBC_2.29 cnd_wait F +GLIBC_2.29 connect F +GLIBC_2.29 flockfile F +GLIBC_2.29 fsync F +GLIBC_2.29 ftrylockfile F +GLIBC_2.29 funlockfile F +GLIBC_2.29 lseek F +GLIBC_2.29 lseek64 F +GLIBC_2.29 msync F +GLIBC_2.29 mtx_destroy F +GLIBC_2.29 mtx_init F +GLIBC_2.29 mtx_lock F +GLIBC_2.29 mtx_timedlock F +GLIBC_2.29 mtx_trylock F +GLIBC_2.29 mtx_unlock F +GLIBC_2.29 nanosleep F +GLIBC_2.29 open F +GLIBC_2.29 open64 F +GLIBC_2.29 pause F +GLIBC_2.29 pread F +GLIBC_2.29 pread64 F +GLIBC_2.29 pthread_attr_destroy F +GLIBC_2.29 pthread_attr_getaffinity_np F +GLIBC_2.29 pthread_attr_getdetachstate F +GLIBC_2.29 pthread_attr_getguardsize F +GLIBC_2.29 pthread_attr_getinheritsched F +GLIBC_2.29 pthread_attr_getschedparam F +GLIBC_2.29 pthread_attr_getschedpolicy F +GLIBC_2.29 pthread_attr_getscope F +GLIBC_2.29 pthread_attr_getstack F +GLIBC_2.29 pthread_attr_getstackaddr F +GLIBC_2.29 pthread_attr_getstacksize F +GLIBC_2.29 pthread_attr_init F +GLIBC_2.29 pthread_attr_setaffinity_np F +GLIBC_2.29 pthread_attr_setdetachstate F +GLIBC_2.29 pthread_attr_setguardsize F +GLIBC_2.29 pthread_attr_setinheritsched F +GLIBC_2.29 pthread_attr_setschedparam F +GLIBC_2.29 pthread_attr_setschedpolicy F +GLIBC_2.29 pthread_attr_setscope F +GLIBC_2.29 pthread_attr_setstack F +GLIBC_2.29 pthread_attr_setstackaddr F +GLIBC_2.29 pthread_attr_setstacksize F +GLIBC_2.29 pthread_barrier_destroy F +GLIBC_2.29 pthread_barrier_init F +GLIBC_2.29 pthread_barrier_wait F +GLIBC_2.29 pthread_barrierattr_destroy F +GLIBC_2.29 pthread_barrierattr_getpshared F +GLIBC_2.29 pthread_barrierattr_init F +GLIBC_2.29 pthread_barrierattr_setpshared F +GLIBC_2.29 pthread_cancel F +GLIBC_2.29 pthread_cond_broadcast F +GLIBC_2.29 pthread_cond_destroy F +GLIBC_2.29 pthread_cond_init F +GLIBC_2.29 pthread_cond_signal F +GLIBC_2.29 pthread_cond_timedwait F +GLIBC_2.29 pthread_cond_wait F +GLIBC_2.29 pthread_condattr_destroy F +GLIBC_2.29 pthread_condattr_getclock F +GLIBC_2.29 pthread_condattr_getpshared F +GLIBC_2.29 pthread_condattr_init F +GLIBC_2.29 pthread_condattr_setclock F +GLIBC_2.29 pthread_condattr_setpshared F +GLIBC_2.29 pthread_create F +GLIBC_2.29 pthread_detach F +GLIBC_2.29 pthread_equal F +GLIBC_2.29 pthread_exit F +GLIBC_2.29 pthread_getaffinity_np F +GLIBC_2.29 pthread_getattr_default_np F +GLIBC_2.29 pthread_getattr_np F +GLIBC_2.29 pthread_getconcurrency F +GLIBC_2.29 pthread_getcpuclockid F +GLIBC_2.29 pthread_getname_np F +GLIBC_2.29 pthread_getschedparam F +GLIBC_2.29 pthread_getspecific F +GLIBC_2.29 pthread_join F +GLIBC_2.29 pthread_key_create F +GLIBC_2.29 pthread_key_delete F +GLIBC_2.29 pthread_kill F +GLIBC_2.29 pthread_kill_other_threads_np F +GLIBC_2.29 pthread_mutex_consistent F +GLIBC_2.29 pthread_mutex_consistent_np F +GLIBC_2.29 pthread_mutex_destroy F +GLIBC_2.29 pthread_mutex_getprioceiling F +GLIBC_2.29 pthread_mutex_init F +GLIBC_2.29 pthread_mutex_lock F +GLIBC_2.29 pthread_mutex_setprioceiling F +GLIBC_2.29 pthread_mutex_timedlock F +GLIBC_2.29 pthread_mutex_trylock F +GLIBC_2.29 pthread_mutex_unlock F +GLIBC_2.29 pthread_mutexattr_destroy F +GLIBC_2.29 pthread_mutexattr_getkind_np F +GLIBC_2.29 pthread_mutexattr_getprioceiling F +GLIBC_2.29 pthread_mutexattr_getprotocol F +GLIBC_2.29 pthread_mutexattr_getpshared F +GLIBC_2.29 pthread_mutexattr_getrobust F +GLIBC_2.29 pthread_mutexattr_getrobust_np F +GLIBC_2.29 pthread_mutexattr_gettype F +GLIBC_2.29 pthread_mutexattr_init F +GLIBC_2.29 pthread_mutexattr_setkind_np F +GLIBC_2.29 pthread_mutexattr_setprioceiling F +GLIBC_2.29 pthread_mutexattr_setprotocol F +GLIBC_2.29 pthread_mutexattr_setpshared F +GLIBC_2.29 pthread_mutexattr_setrobust F +GLIBC_2.29 pthread_mutexattr_setrobust_np F +GLIBC_2.29 pthread_mutexattr_settype F +GLIBC_2.29 pthread_once F +GLIBC_2.29 pthread_rwlock_destroy F +GLIBC_2.29 pthread_rwlock_init F +GLIBC_2.29 pthread_rwlock_rdlock F +GLIBC_2.29 pthread_rwlock_timedrdlock F +GLIBC_2.29 pthread_rwlock_timedwrlock F +GLIBC_2.29 pthread_rwlock_tryrdlock F +GLIBC_2.29 pthread_rwlock_trywrlock F +GLIBC_2.29 pthread_rwlock_unlock F +GLIBC_2.29 pthread_rwlock_wrlock F +GLIBC_2.29 pthread_rwlockattr_destroy F +GLIBC_2.29 pthread_rwlockattr_getkind_np F +GLIBC_2.29 pthread_rwlockattr_getpshared F +GLIBC_2.29 pthread_rwlockattr_init F +GLIBC_2.29 pthread_rwlockattr_setkind_np F +GLIBC_2.29 pthread_rwlockattr_setpshared F +GLIBC_2.29 pthread_setaffinity_np F +GLIBC_2.29 pthread_setattr_default_np F +GLIBC_2.29 pthread_setcancelstate F +GLIBC_2.29 pthread_setcanceltype F +GLIBC_2.29 pthread_setconcurrency F +GLIBC_2.29 pthread_setname_np F +GLIBC_2.29 pthread_setschedparam F +GLIBC_2.29 pthread_setschedprio F +GLIBC_2.29 pthread_setspecific F +GLIBC_2.29 pthread_sigmask F +GLIBC_2.29 pthread_sigqueue F +GLIBC_2.29 pthread_spin_destroy F +GLIBC_2.29 pthread_spin_init F +GLIBC_2.29 pthread_spin_lock F +GLIBC_2.29 pthread_spin_trylock F +GLIBC_2.29 pthread_spin_unlock F +GLIBC_2.29 pthread_testcancel F +GLIBC_2.29 pthread_timedjoin_np F +GLIBC_2.29 pthread_tryjoin_np F +GLIBC_2.29 pthread_yield F +GLIBC_2.29 pwrite F +GLIBC_2.29 pwrite64 F +GLIBC_2.29 raise F +GLIBC_2.29 read F +GLIBC_2.29 recv F +GLIBC_2.29 recvfrom F +GLIBC_2.29 recvmsg F +GLIBC_2.29 sem_close F +GLIBC_2.29 sem_destroy F +GLIBC_2.29 sem_getvalue F +GLIBC_2.29 sem_init F +GLIBC_2.29 sem_open F +GLIBC_2.29 sem_post F +GLIBC_2.29 sem_timedwait F +GLIBC_2.29 sem_trywait F +GLIBC_2.29 sem_unlink F +GLIBC_2.29 sem_wait F +GLIBC_2.29 send F +GLIBC_2.29 sendmsg F +GLIBC_2.29 sendto F +GLIBC_2.29 sigaction F +GLIBC_2.29 sigwait F +GLIBC_2.29 tcdrain F +GLIBC_2.29 thrd_create F +GLIBC_2.29 thrd_detach F +GLIBC_2.29 thrd_exit F +GLIBC_2.29 thrd_join F +GLIBC_2.29 tss_create F +GLIBC_2.29 tss_delete F +GLIBC_2.29 tss_get F +GLIBC_2.29 tss_set F +GLIBC_2.29 wait F +GLIBC_2.29 waitpid F +GLIBC_2.29 write F diff --git a/sysdeps/unix/sysv/linux/arc/libresolv.abilist b/sysdeps/unix/sysv/linux/arc/libresolv.abilist new file mode 100644 index 00000000000..2830a7efd17 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/libresolv.abilist @@ -0,0 +1,79 @@ +GLIBC_2.29 __b64_ntop F +GLIBC_2.29 __b64_pton F +GLIBC_2.29 __dn_comp F +GLIBC_2.29 __dn_count_labels F +GLIBC_2.29 __dn_expand F +GLIBC_2.29 __dn_skipname F +GLIBC_2.29 __fp_nquery F +GLIBC_2.29 __fp_query F +GLIBC_2.29 __fp_resstat F +GLIBC_2.29 __hostalias F +GLIBC_2.29 __loc_aton F +GLIBC_2.29 __loc_ntoa F +GLIBC_2.29 __p_cdname F +GLIBC_2.29 __p_cdnname F +GLIBC_2.29 __p_class F +GLIBC_2.29 __p_class_syms D 0x54 +GLIBC_2.29 __p_fqname F +GLIBC_2.29 __p_fqnname F +GLIBC_2.29 __p_option F +GLIBC_2.29 __p_query F +GLIBC_2.29 __p_rcode F +GLIBC_2.29 __p_time F +GLIBC_2.29 __p_type F +GLIBC_2.29 __p_type_syms D 0x228 +GLIBC_2.29 __putlong F +GLIBC_2.29 __putshort F +GLIBC_2.29 __res_close F +GLIBC_2.29 __res_dnok F +GLIBC_2.29 __res_hnok F +GLIBC_2.29 __res_hostalias F +GLIBC_2.29 __res_isourserver F +GLIBC_2.29 __res_mailok F +GLIBC_2.29 __res_mkquery F +GLIBC_2.29 __res_nameinquery F +GLIBC_2.29 __res_nmkquery F +GLIBC_2.29 __res_nquery F +GLIBC_2.29 __res_nquerydomain F +GLIBC_2.29 __res_nsearch F +GLIBC_2.29 __res_nsend F +GLIBC_2.29 __res_ownok F +GLIBC_2.29 __res_queriesmatch F +GLIBC_2.29 __res_query F +GLIBC_2.29 __res_querydomain F +GLIBC_2.29 __res_search F +GLIBC_2.29 __res_send F +GLIBC_2.29 __sym_ntop F +GLIBC_2.29 __sym_ntos F +GLIBC_2.29 __sym_ston F +GLIBC_2.29 _getlong F +GLIBC_2.29 _getshort F +GLIBC_2.29 inet_net_ntop F +GLIBC_2.29 inet_net_pton F +GLIBC_2.29 inet_neta F +GLIBC_2.29 ns_datetosecs F +GLIBC_2.29 ns_format_ttl F +GLIBC_2.29 ns_get16 F +GLIBC_2.29 ns_get32 F +GLIBC_2.29 ns_initparse F +GLIBC_2.29 ns_makecanon F +GLIBC_2.29 ns_msg_getflag F +GLIBC_2.29 ns_name_compress F +GLIBC_2.29 ns_name_ntol F +GLIBC_2.29 ns_name_ntop F +GLIBC_2.29 ns_name_pack F +GLIBC_2.29 ns_name_pton F +GLIBC_2.29 ns_name_rollback F +GLIBC_2.29 ns_name_skip F +GLIBC_2.29 ns_name_uncompress F +GLIBC_2.29 ns_name_unpack F +GLIBC_2.29 ns_parse_ttl F +GLIBC_2.29 ns_parserr F +GLIBC_2.29 ns_put16 F +GLIBC_2.29 ns_put32 F +GLIBC_2.29 ns_samedomain F +GLIBC_2.29 ns_samename F +GLIBC_2.29 ns_skiprr F +GLIBC_2.29 ns_sprintrr F +GLIBC_2.29 ns_sprintrrf F +GLIBC_2.29 ns_subdomain F diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist new file mode 100644 index 00000000000..c6690ef7c13 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist @@ -0,0 +1,35 @@ +GLIBC_2.29 __mq_open_2 F +GLIBC_2.29 aio_cancel F +GLIBC_2.29 aio_cancel64 F +GLIBC_2.29 aio_error F +GLIBC_2.29 aio_error64 F +GLIBC_2.29 aio_fsync F +GLIBC_2.29 aio_fsync64 F +GLIBC_2.29 aio_init F +GLIBC_2.29 aio_read F +GLIBC_2.29 aio_read64 F +GLIBC_2.29 aio_return F +GLIBC_2.29 aio_return64 F +GLIBC_2.29 aio_suspend F +GLIBC_2.29 aio_suspend64 F +GLIBC_2.29 aio_write F +GLIBC_2.29 aio_write64 F +GLIBC_2.29 lio_listio F +GLIBC_2.29 lio_listio64 F +GLIBC_2.29 mq_close F +GLIBC_2.29 mq_getattr F +GLIBC_2.29 mq_notify F +GLIBC_2.29 mq_open F +GLIBC_2.29 mq_receive F +GLIBC_2.29 mq_send F +GLIBC_2.29 mq_setattr F +GLIBC_2.29 mq_timedreceive F +GLIBC_2.29 mq_timedsend F +GLIBC_2.29 mq_unlink F +GLIBC_2.29 shm_open F +GLIBC_2.29 shm_unlink F +GLIBC_2.29 timer_create F +GLIBC_2.29 timer_delete F +GLIBC_2.29 timer_getoverrun F +GLIBC_2.29 timer_gettime F +GLIBC_2.29 timer_settime F diff --git a/sysdeps/unix/sysv/linux/arc/libthread_db.abilist b/sysdeps/unix/sysv/linux/arc/libthread_db.abilist new file mode 100644 index 00000000000..37e9bace552 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/libthread_db.abilist @@ -0,0 +1,40 @@ +GLIBC_2.29 td_init F +GLIBC_2.29 td_log F +GLIBC_2.29 td_symbol_list F +GLIBC_2.29 td_ta_clear_event F +GLIBC_2.29 td_ta_delete F +GLIBC_2.29 td_ta_enable_stats F +GLIBC_2.29 td_ta_event_addr F +GLIBC_2.29 td_ta_event_getmsg F +GLIBC_2.29 td_ta_get_nthreads F +GLIBC_2.29 td_ta_get_ph F +GLIBC_2.29 td_ta_get_stats F +GLIBC_2.29 td_ta_map_id2thr F +GLIBC_2.29 td_ta_map_lwp2thr F +GLIBC_2.29 td_ta_new F +GLIBC_2.29 td_ta_reset_stats F +GLIBC_2.29 td_ta_set_event F +GLIBC_2.29 td_ta_setconcurrency F +GLIBC_2.29 td_ta_thr_iter F +GLIBC_2.29 td_ta_tsd_iter F +GLIBC_2.29 td_thr_clear_event F +GLIBC_2.29 td_thr_dbresume F +GLIBC_2.29 td_thr_dbsuspend F +GLIBC_2.29 td_thr_event_enable F +GLIBC_2.29 td_thr_event_getmsg F +GLIBC_2.29 td_thr_get_info F +GLIBC_2.29 td_thr_getfpregs F +GLIBC_2.29 td_thr_getgregs F +GLIBC_2.29 td_thr_getxregs F +GLIBC_2.29 td_thr_getxregsize F +GLIBC_2.29 td_thr_set_event F +GLIBC_2.29 td_thr_setfpregs F +GLIBC_2.29 td_thr_setgregs F +GLIBC_2.29 td_thr_setprio F +GLIBC_2.29 td_thr_setsigpending F +GLIBC_2.29 td_thr_setxregs F +GLIBC_2.29 td_thr_sigsetmask F +GLIBC_2.29 td_thr_tls_get_addr F +GLIBC_2.29 td_thr_tlsbase F +GLIBC_2.29 td_thr_tsd F +GLIBC_2.29 td_thr_validate F diff --git a/sysdeps/unix/sysv/linux/arc/libutil.abilist b/sysdeps/unix/sysv/linux/arc/libutil.abilist new file mode 100644 index 00000000000..cbd11999a4f --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/libutil.abilist @@ -0,0 +1,6 @@ +GLIBC_2.29 forkpty F +GLIBC_2.29 login F +GLIBC_2.29 login_tty F +GLIBC_2.29 logout F +GLIBC_2.29 logwtmp F +GLIBC_2.29 openpty F diff --git a/sysdeps/unix/sysv/linux/arc/localplt.data b/sysdeps/unix/sysv/linux/arc/localplt.data new file mode 100644 index 00000000000..e902fd0607a --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/localplt.data @@ -0,0 +1,16 @@ +libc.so: realloc +libc.so: malloc +libc.so: memalign +libc.so: calloc +libc.so: free +# At -Os, a struct assignment in libgcc-static pulls this in +libc.so: memcpy ? +ld.so: malloc +ld.so: calloc +ld.so: realloc +ld.so: free +# The TLS-enabled version of these functions is interposed from libc.so. +ld.so: _dl_signal_error +ld.so: _dl_catch_error +ld.so: _dl_signal_exception +ld.so: _dl_catch_exception diff --git a/sysdeps/unix/sysv/linux/arc/makecontext.c b/sysdeps/unix/sysv/linux/arc/makecontext.c new file mode 100644 index 00000000000..3d46452e175 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/makecontext.c @@ -0,0 +1,75 @@ +/* Create new context for ARC. + Copyright (C) 2015-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include +#include +#include + +void +__makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...) +{ + extern void __startcontext (void) attribute_hidden; + unsigned long int sp, *r; + va_list vl; + int i, reg_args, stack_args; + + sp = ((unsigned long int) ucp->uc_stack.ss_sp + ucp->uc_stack.ss_size) & ~7; + + ucp->uc_mcontext.__scratch.__sp = sp; + ucp->uc_mcontext.__scratch.__fp = 0; + + /* __startcontext is sort of trampoline to invoke @func + From setcontext() pov, the resume address is __startcontext, + set it up in BLINK place holder. */ + + ucp->uc_mcontext.__scratch.__blink = (unsigned long int) &__startcontext; + + /* __startcontext passed 2 types of args + - args to @func setup in canonical r0-r7 + - @func itself in r9, and next function in r10. */ + + ucp->uc_mcontext.__callee.__r13 = (unsigned long int) func; + ucp->uc_mcontext.__callee.__r14 = (unsigned long int) ucp->uc_link; + + r = &ucp->uc_mcontext.__scratch.__r0; + + va_start (vl, argc); + + reg_args = argc > 8 ? 8 : argc; + for (i = 0; i < reg_args; i++) { + *r-- = va_arg(vl, unsigned long int); + } + + stack_args = argc - reg_args; + + if (__glibc_unlikely (stack_args > 0)) { + + sp -= stack_args * sizeof (unsigned long int); + ucp->uc_mcontext.__scratch.__sp = sp; + r = (unsigned long int *)sp; + + for (i = 0; i < stack_args; i++) { + *r++ = va_arg(vl, unsigned long int); + } + } + + va_end (vl); +} + +weak_alias (__makecontext, makecontext) diff --git a/sysdeps/unix/sysv/linux/arc/mmap_internal.h b/sysdeps/unix/sysv/linux/arc/mmap_internal.h new file mode 100644 index 00000000000..3f28f352d91 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/mmap_internal.h @@ -0,0 +1,27 @@ +/* mmap - map files or devices into memory. Linux/ARC version. + Copyright (C) 2017-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef MMAP_ARC_INTERNAL_H +#define MMAP_ARC_INTERNAL_H + +/* 8K page is default for ARC. */ +#define MMAP2_PAGE_UNIT 8192ULL + +#include_next + +#endif diff --git a/sysdeps/unix/sysv/linux/arc/profil-counter.h b/sysdeps/unix/sysv/linux/arc/profil-counter.h new file mode 100644 index 00000000000..8a6a0bcf3d5 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/profil-counter.h @@ -0,0 +1,2 @@ +/* We can use the ix86 version. */ +#include diff --git a/sysdeps/unix/sysv/linux/arc/pt-vfork.S b/sysdeps/unix/sysv/linux/arc/pt-vfork.S new file mode 100644 index 00000000000..1cc89317007 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/pt-vfork.S @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/unix/sysv/linux/arc/setcontext.S b/sysdeps/unix/sysv/linux/arc/setcontext.S new file mode 100644 index 00000000000..8cf4ffcaf5a --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/setcontext.S @@ -0,0 +1,92 @@ +/* Set current context for ARC. + Copyright (C) 2009-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include "ucontext-macros.h" + +/* int setcontext (const ucontext_t *ucp) + - Restores the machine context in @ucp and resumes execution + (doesn't return to caller). */ + +ENTRY (__setcontext) + + mov r9, r0 /* Stash @ucp across syscall. */ + + /* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, NULL, _NSIG8) */ + mov r3, _NSIG8 + mov r2, 0 + add r1, r0, UCONTEXT_SIGMASK + mov r0, SIG_SETMASK + mov r8, __NR_rt_sigprocmask + ARC_TRAP_INSN + brhi r0, -1024, .Lcall_syscall_err + + /* Restore scratch/arg regs for makecontext() case. */ + LOAD_REG (r0, r9, 22) + LOAD_REG (r1, r9, 21) + LOAD_REG (r2, r9, 20) + LOAD_REG (r3, r9, 19) + LOAD_REG (r4, r9, 18) + LOAD_REG (r5, r9, 17) + LOAD_REG (r6, r9, 16) + LOAD_REG (r7, r9, 15) + + /* Restore callee saved registers. */ + LOAD_REG (r13, r9, 37) + LOAD_REG (r14, r9, 36) + LOAD_REG (r15, r9, 35) + LOAD_REG (r16, r9, 34) + LOAD_REG (r17, r9, 33) + LOAD_REG (r18, r9, 32) + LOAD_REG (r19, r9, 31) + LOAD_REG (r20, r9, 30) + LOAD_REG (r21, r9, 29) + LOAD_REG (r22, r9, 28) + LOAD_REG (r23, r9, 27) + LOAD_REG (r24, r9, 26) + LOAD_REG (r25, r9, 25) + + LOAD_REG (blink, r9, 7) + LOAD_REG (fp, r9, 8) + LOAD_REG (sp, r9, 23) + + j [blink] + +PSEUDO_END (__setcontext) +weak_alias (__setcontext, setcontext) + + +/* Helper for activating makecontext() created context + - r13 has @func, r14 has uc_link. */ + +ENTRY (__startcontext) + + .cfi_label .Ldummy + cfi_undefined (blink) + + /* Call user @func, loaded in r13 by setcontext(). */ + jl [r13] + + /* If uc_link (r14) call setcontext with that. */ + mov r0, r14 + breq r0, 0, 1f + + bl __setcontext +1: + /* Exit with status 0. */ + b HIDDEN_JUMPTARGET(exit) +END (__startcontext) diff --git a/sysdeps/unix/sysv/linux/arc/shlib-versions b/sysdeps/unix/sysv/linux/arc/shlib-versions new file mode 100644 index 00000000000..e527acd7789 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/shlib-versions @@ -0,0 +1,2 @@ +DEFAULT GLIBC_2.29 +ld=ld-linux-arc.so.2 diff --git a/sysdeps/unix/sysv/linux/arc/sigaction.c b/sysdeps/unix/sysv/linux/arc/sigaction.c new file mode 100644 index 00000000000..db7293865f3 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/sigaction.c @@ -0,0 +1,31 @@ +/* ARC specific sigaction. + Copyright (C) 1997-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#define SA_RESTORER 0x04000000 + +extern void __default_rt_sa_restorer (void); + +#define SET_SA_RESTORER(kact, act) \ + ({ \ + (kact)->sa_restorer = __default_rt_sa_restorer; \ + (kact)->sa_flags |= SA_RESTORER; \ + }) + +#define RESET_SA_RESTORER(act, kact) + +#include diff --git a/sysdeps/unix/sysv/linux/arc/sigcontextinfo.h b/sysdeps/unix/sysv/linux/arc/sigcontextinfo.h new file mode 100644 index 00000000000..acf03c6afd9 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/sigcontextinfo.h @@ -0,0 +1,23 @@ +/* ARC definitions for signal handling calling conventions. + Copyright (C) 2017-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include "kernel-features.h" + +#define SIGCONTEXT int _code, struct ucontext_t * +#define GET_PC(ctx) ((void *) (ctx)->uc_mcontext.__scratch.__ret) diff --git a/sysdeps/unix/sysv/linux/arc/sigrestorer.S b/sysdeps/unix/sysv/linux/arc/sigrestorer.S new file mode 100644 index 00000000000..573b54e36cf --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/sigrestorer.S @@ -0,0 +1,29 @@ +/* Default sigreturn stub for ARC Linux. + Copyright (C) 2005-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include +#include + +/* Note the NOP has to be outside body. */ + nop +ENTRY (__default_rt_sa_restorer) + mov r8, __NR_rt_sigreturn + ARC_TRAP_INSN + j_s [blink] +PSEUDO_END_NOERRNO (__default_rt_sa_restorer) diff --git a/sysdeps/unix/sysv/linux/arc/swapcontext.S b/sysdeps/unix/sysv/linux/arc/swapcontext.S new file mode 100644 index 00000000000..853d3805de6 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/swapcontext.S @@ -0,0 +1,92 @@ +/* Save and set current context for ARC. + Copyright (C) 2009-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include "ucontext-macros.h" + +/* int swapcontext (ucontext_t *oucp, const ucontext_t *ucp). */ + +ENTRY (__swapcontext) + + /* Save context into @oucp pointed to by r0. */ + + SAVE_REG (r13, r0, 37) + SAVE_REG (r14, r0, 36) + SAVE_REG (r15, r0, 35) + SAVE_REG (r16, r0, 34) + SAVE_REG (r17, r0, 33) + SAVE_REG (r18, r0, 32) + SAVE_REG (r19, r0, 31) + SAVE_REG (r20, r0, 30) + SAVE_REG (r21, r0, 29) + SAVE_REG (r22, r0, 28) + SAVE_REG (r23, r0, 27) + SAVE_REG (r24, r0, 26) + SAVE_REG (r25, r0, 25) + + SAVE_REG (blink, r0, 7) + SAVE_REG (fp, r0, 8) + SAVE_REG (sp, r0, 23) + + /* Save 0 in r0 placeholder to return 0 when @oucp activated. */ + mov r9, 0 + SAVE_REG (r9, r0, 22) + + /* Load context from @ucp. */ + + mov r9, r1 /* Safekeep @ucp across syscall. */ + + /* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, &oucp->uc_sigmask, _NSIG8) */ + mov r3, _NSIG8 + add r2, r0, UCONTEXT_SIGMASK + add r1, r1, UCONTEXT_SIGMASK + mov r0, SIG_SETMASK + mov r8, __NR_rt_sigprocmask + ARC_TRAP_INSN + brhi r0, -1024, .Lcall_syscall_err + + LOAD_REG (r0, r9, 22) + LOAD_REG (r1, r9, 21) + LOAD_REG (r2, r9, 20) + LOAD_REG (r3, r9, 19) + LOAD_REG (r4, r9, 18) + LOAD_REG (r5, r9, 17) + LOAD_REG (r6, r9, 16) + LOAD_REG (r7, r9, 15) + + LOAD_REG (r13, r9, 37) + LOAD_REG (r14, r9, 36) + LOAD_REG (r15, r9, 35) + LOAD_REG (r16, r9, 34) + LOAD_REG (r17, r9, 33) + LOAD_REG (r18, r9, 32) + LOAD_REG (r19, r9, 31) + LOAD_REG (r20, r9, 30) + LOAD_REG (r21, r9, 29) + LOAD_REG (r22, r9, 28) + LOAD_REG (r23, r9, 27) + LOAD_REG (r24, r9, 26) + LOAD_REG (r25, r9, 25) + + LOAD_REG (blink, r9, 7) + LOAD_REG (fp, r9, 8) + LOAD_REG (sp, r9, 23) + + j [blink] + +PSEUDO_END (__swapcontext) +weak_alias (__swapcontext, swapcontext) diff --git a/sysdeps/unix/sysv/linux/arc/sys/cachectl.h b/sysdeps/unix/sysv/linux/arc/sys/cachectl.h new file mode 100644 index 00000000000..2d93e49e6a9 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/sys/cachectl.h @@ -0,0 +1,36 @@ +/* cacheflush - flush contents of instruction and/or data cache. + Copyright (C) 2017-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _SYS_CACHECTL_H +#define _SYS_CACHECTL_H 1 + +#include + +/* Get the kernel definition for the op bits. */ +#include + +__BEGIN_DECLS + +#ifdef __USE_MISC +extern int cacheflush (void *__addr, const int __nbytes, const int __op) __THROW; +#endif +extern int _flush_cache (char *__addr, const int __nbytes, const int __op) __THROW; + +__END_DECLS + +#endif /* sys/cachectl.h */ diff --git a/sysdeps/unix/sysv/linux/arc/sys/ucontext.h b/sysdeps/unix/sysv/linux/arc/sys/ucontext.h new file mode 100644 index 00000000000..7e357bcd65e --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/sys/ucontext.h @@ -0,0 +1,63 @@ +/* struct ucontext definition, ARC version. + Copyright (C) 2017-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +/* System V/ARC ABI compliant context switching support. */ + +#ifndef _SYS_UCONTEXT_H +#define _SYS_UCONTEXT_H 1 + +#include + +#include +#include + +typedef struct + { + unsigned long int __pad; + struct { + unsigned long int __bta; + unsigned long int __lp_start, __lp_end, __lp_count; + unsigned long int __status32, __ret, __blink; + unsigned long int __fp, __gp; + unsigned long int __r12, __r11, __r10, __r9, __r8, __r7; + unsigned long int __r6, __r5, __r4, __r3, __r2, __r1, __r0; + unsigned long int __sp; + } __scratch; + unsigned long int __pad2; + struct { + unsigned long int __r25, __r24, __r23, __r22, __r21, __r20; + unsigned long int __r19, __r18, __r17, __r16, __r15, __r14, __r13; + } __callee; + unsigned long int __efa; + unsigned long int __stop_pc; + unsigned long int __r30, __r58, __r59; + } mcontext_t; + +/* Userlevel context. */ +typedef struct ucontext_t + { + unsigned long int __uc_flags; + struct ucontext_t *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; + } ucontext_t; + +#undef __ctx + +#endif /* sys/ucontext.h */ diff --git a/sysdeps/unix/sysv/linux/arc/sys/user.h b/sysdeps/unix/sysv/linux/arc/sys/user.h new file mode 100644 index 00000000000..50d0dc7827a --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/sys/user.h @@ -0,0 +1,31 @@ +/* ptrace register data format definitions. + Copyright (C) 1998-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#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 + +struct user { + int dummy; +}; + +#endif /* sys/user.h */ diff --git a/sysdeps/unix/sysv/linux/arc/syscall.S b/sysdeps/unix/sysv/linux/arc/syscall.S new file mode 100644 index 00000000000..3fe5fcdd041 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/syscall.S @@ -0,0 +1,38 @@ +/* syscall - indirect system call. + Copyright (C) 2017-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include + +ENTRY (syscall) + mov_s r8, r0 + mov_s r0, r1 + mov_s r1, r2 + mov_s r2, r3 + mov_s r3, r4 +#ifdef __ARC700__ + mov r4, r5 + mov r5, r6 +#else + mov_s r4, r5 + mov_s r5, r6 +#endif + + ARC_TRAP_INSN + brhi r0, -1024, .Lcall_syscall_err + j [blink] +PSEUDO_END (syscall) diff --git a/sysdeps/unix/sysv/linux/arc/syscalls.list b/sysdeps/unix/sysv/linux/arc/syscalls.list new file mode 100644 index 00000000000..d0ef5977ee0 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/syscalls.list @@ -0,0 +1,3 @@ +# File name Caller Syscall name Args Strong name Weak names + +cacheflush - cacheflush i:pii _flush_cache cacheflush diff --git a/sysdeps/unix/sysv/linux/arc/sysdep.c b/sysdeps/unix/sysv/linux/arc/sysdep.c new file mode 100644 index 00000000000..5618f378515 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/sysdep.c @@ -0,0 +1,33 @@ +/* ARC wrapper for setting errno. + Copyright (C) 1997-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include + +/* All syscall handler come here to avoid generated code bloat due to + GOT reference to errno_location or it's equivalent. */ +int +__syscall_error(int err_no) +{ + __set_errno(-err_no); + return -1; +} + +#if IS_IN (libc) +hidden_def (__syscall_error) +#endif diff --git a/sysdeps/unix/sysv/linux/arc/sysdep.h b/sysdeps/unix/sysv/linux/arc/sysdep.h new file mode 100644 index 00000000000..9ad95d97ae1 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/sysdep.h @@ -0,0 +1,251 @@ +/* Assembler macros for ARC. + Copyright (C) 2000-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _LINUX_ARC_SYSDEP_H +#define _LINUX_ARC_SYSDEP_H 1 + +#include +#include +#include + +/* For RTLD_PRIVATE_ERRNO. */ +#include + +#include + +#undef SYS_ify +#define SYS_ify(syscall_name) __NR_##syscall_name + +#ifdef __ASSEMBLER__ + +/* This is a "normal" system call stub: if there is an error, + it returns -1 and sets errno. */ + +# undef PSEUDO +# define PSEUDO(name, syscall_name, args) \ + PSEUDO_NOERRNO(name, syscall_name, args) ASM_LINE_SEP \ + brhi r0, -1024, .Lcall_syscall_err ASM_LINE_SEP + +# define ret j [blink] + +# undef PSEUDO_END +# define PSEUDO_END(name) \ + SYSCALL_ERROR_HANDLER ASM_LINE_SEP \ + END (name) + +/* --------- Helper for SYSCALL_NOERRNO ----------- + This kind of system call stub never returns an error. + We return the return value register to the caller unexamined. */ + +# undef PSEUDO_NOERRNO +# define PSEUDO_NOERRNO(name, syscall_name, args) \ + .text ASM_LINE_SEP \ + ENTRY (name) ASM_LINE_SEP \ + DO_CALL (syscall_name, args) ASM_LINE_SEP \ + +/* Return the return value register unexamined. Since r0 is both + syscall return reg and function return reg, no work needed. */ +# define ret_NOERRNO \ + j_s [blink] ASM_LINE_SEP + +# undef PSEUDO_END_NOERRNO +# define PSEUDO_END_NOERRNO(name) \ + END (name) + +/* --------- Helper for SYSCALL_ERRVAL ----------- + This kind of system call stub returns the errno code as its return + value, or zero for success. We may massage the kernel's return value + to meet that ABI, but we never set errno here. */ + +# undef PSEUDO_ERRVAL +# define PSEUDO_ERRVAL(name, syscall_name, args) \ + PSEUDO_NOERRNO(name, syscall_name, args) ASM_LINE_SEP + +/* Don't set errno, return kernel error (in errno form) or zero. */ +# define ret_ERRVAL \ + rsub r0, r0, 0 ASM_LINE_SEP \ + ret_NOERRNO + +# undef PSEUDO_END_ERRVAL +# define PSEUDO_END_ERRVAL(name) \ + END (name) + + +/* To reduce the code footprint, we confine the actual errno access + to single place in __syscall_error(). + This takes raw kernel error value, sets errno and returns -1. */ +# if IS_IN (libc) +# define CALL_ERRNO_SETTER_C bl PLTJMP(HIDDEN_JUMPTARGET(__syscall_error)) +# else +# define CALL_ERRNO_SETTER_C bl PLTJMP(__syscall_error) +# endif + +# define SYSCALL_ERROR_HANDLER \ +.Lcall_syscall_err: ASM_LINE_SEP \ + st.a blink, [sp, -4] ASM_LINE_SEP \ + cfi_adjust_cfa_offset (4) ASM_LINE_SEP \ + cfi_rel_offset (blink, 0) ASM_LINE_SEP \ + CALL_ERRNO_SETTER_C ASM_LINE_SEP \ + ld.ab blink, [sp, 4] ASM_LINE_SEP \ + cfi_adjust_cfa_offset (-4) ASM_LINE_SEP \ + cfi_restore (blink) ASM_LINE_SEP \ + j [blink] + +# define DO_CALL(syscall_name, args) \ + mov r8, SYS_ify (syscall_name) ASM_LINE_SEP \ + ARC_TRAP_INSN ASM_LINE_SEP + +# define ARC_TRAP_INSN trap_s 0 + +#else /* !__ASSEMBLER__ */ + +# define SINGLE_THREAD_BY_GLOBAL 1 + +/* In order to get __set_errno() definition in INLINE_SYSCALL. */ +#include + +extern int __syscall_error (int); + +# if IS_IN (libc) +hidden_proto (__syscall_error) +# define CALL_ERRNO_SETTER "bl __syscall_error \n\t" +# else +# define CALL_ERRNO_SETTER "bl __syscall_error@plt \n\t" +# endif + + +/* Define a macro which expands into the inline wrapper code for a system + call. */ +# undef INLINE_SYSCALL +# define INLINE_SYSCALL(name, nr_args, args...) \ + ({ \ + register int __res __asm__("r0"); \ + __res = INTERNAL_SYSCALL_NCS (__NR_##name, , nr_args, args); \ + if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P ((__res), ), 0)) \ + { \ + asm volatile ("st.a blink, [sp, -4] \n\t" \ + CALL_ERRNO_SETTER \ + "ld.ab blink, [sp, 4] \n\t" \ + :"+r" (__res) \ + : \ + :"r1","r2","r3","r4","r5","r6", \ + "r7","r8","r9","r10","r11","r12"); \ + } \ + __res; \ + }) + +# undef INTERNAL_SYSCALL_DECL +# define INTERNAL_SYSCALL_DECL(err) do { } while (0) + +# undef INTERNAL_SYSCALL_ERRNO +# define INTERNAL_SYSCALL_ERRNO(val, err) (-(val)) + +/* -1 to -1023 are valid errno values. */ +# undef INTERNAL_SYSCALL_ERROR_P +# define INTERNAL_SYSCALL_ERROR_P(val, err) \ + ((unsigned int) (val) > -1024U) + +# define ARC_TRAP_INSN "trap_s 0 \n\t" + +# undef INTERNAL_SYSCALL_RAW +# define INTERNAL_SYSCALL_RAW(name, err, nr_args, args...) \ + ({ \ + /* Per ABI, r0 is 1st arg and return reg. */ \ + register int __ret __asm__("r0"); \ + register int _sys_num __asm__("r8"); \ + \ + LOAD_ARGS_##nr_args (name, args) \ + \ + __asm__ volatile ( \ + ARC_TRAP_INSN \ + : "+r" (__ret) \ + : "r"(_sys_num) ASM_ARGS_##nr_args \ + : "memory"); \ +__ret; \ +}) + +/* Macros for setting up inline __asm__ input regs. */ +# define ASM_ARGS_0 +# define ASM_ARGS_1 ASM_ARGS_0, "r" (__ret) +# define ASM_ARGS_2 ASM_ARGS_1, "r" (_arg2) +# define ASM_ARGS_3 ASM_ARGS_2, "r" (_arg3) +# define ASM_ARGS_4 ASM_ARGS_3, "r" (_arg4) +# define ASM_ARGS_5 ASM_ARGS_4, "r" (_arg5) +# define ASM_ARGS_6 ASM_ARGS_5, "r" (_arg6) +# define ASM_ARGS_7 ASM_ARGS_6, "r" (_arg7) + +/* Macros for converting sys-call wrapper args into sys call args. */ +# define LOAD_ARGS_0(nm, arg) \ + _sys_num = (int) (nm); + +# define LOAD_ARGS_1(nm, arg1) \ + __ret = (int) (arg1); \ + LOAD_ARGS_0 (nm, arg1) + +/* Note that the use of _tmpX might look superflous, however it is needed + to ensure that register variables are not clobbered if arg happens to be + a function call itself. e.g. sched_setaffinity() calling getpid() for arg2 + Also this specific order of recursive calling is important to segregate + the tmp args evaluation (function call case described above) and assigment + of register variables. */ + +# define LOAD_ARGS_2(nm, arg1, arg2) \ + int _tmp2 = (int) (arg2); \ + LOAD_ARGS_1 (nm, arg1) \ + register int _arg2 __asm__ ("r1") = _tmp2; + +# define LOAD_ARGS_3(nm, arg1, arg2, arg3) \ + int _tmp3 = (int) (arg3); \ + LOAD_ARGS_2 (nm, arg1, arg2) \ + register int _arg3 __asm__ ("r2") = _tmp3; + +#define LOAD_ARGS_4(nm, arg1, arg2, arg3, arg4) \ + int _tmp4 = (int) (arg4); \ + LOAD_ARGS_3 (nm, arg1, arg2, arg3) \ + register int _arg4 __asm__ ("r3") = _tmp4; + +# define LOAD_ARGS_5(nm, arg1, arg2, arg3, arg4, arg5) \ + int _tmp5 = (int) (arg5); \ + LOAD_ARGS_4 (nm, arg1, arg2, arg3, arg4) \ + register int _arg5 __asm__ ("r4") = _tmp5; + +# define LOAD_ARGS_6(nm, arg1, arg2, arg3, arg4, arg5, arg6)\ + int _tmp6 = (int) (arg6); \ + LOAD_ARGS_5 (nm, arg1, arg2, arg3, arg4, arg5) \ + register int _arg6 __asm__ ("r5") = _tmp6; + +# define LOAD_ARGS_7(nm, arg1, arg2, arg3, arg4, arg5, arg6, arg7)\ + int _tmp7 = (int) (arg7); \ + LOAD_ARGS_6 (nm, arg1, arg2, arg3, arg4, arg5, arg6) \ + register int _arg7 __asm__ ("r6") = _tmp7; + +# undef INTERNAL_SYSCALL +# define INTERNAL_SYSCALL(name, err, nr, args...) \ + INTERNAL_SYSCALL_RAW(SYS_ify(name), err, nr, args) + +# undef INTERNAL_SYSCALL_NCS +# define INTERNAL_SYSCALL_NCS(number, err, nr, args...) \ + INTERNAL_SYSCALL_RAW(number, err, nr, args) + +/* Pointer mangling not yet supported. */ +# define PTR_MANGLE(var) (void) (var) +# define PTR_DEMANGLE(var) (void) (var) + +#endif /* !__ASSEMBLER__ */ + +#endif /* linux/arc/sysdep.h */ diff --git a/sysdeps/unix/sysv/linux/arc/ucontext-macros.h b/sysdeps/unix/sysv/linux/arc/ucontext-macros.h new file mode 100644 index 00000000000..ed261399c98 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/ucontext-macros.h @@ -0,0 +1,29 @@ +/* Macros for ucontext routines, ARC version. + Copyright (C) 2017-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _LINUX_ARC_UCONTEXT_MACROS_H +#define _LINUX_ARC_UCONTEXT_MACROS_H + +#include + +#include "ucontext_i.h" + +#define SAVE_REG(reg, rbase, off) st reg, [rbase, UCONTEXT_MCONTEXT + off * 4] +#define LOAD_REG(reg, rbase, off) ld reg, [rbase, UCONTEXT_MCONTEXT + off * 4] + +#endif diff --git a/sysdeps/unix/sysv/linux/arc/ucontext_i.sym b/sysdeps/unix/sysv/linux/arc/ucontext_i.sym new file mode 100644 index 00000000000..d84e92f9f54 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/ucontext_i.sym @@ -0,0 +1,20 @@ +#include +#include +#include +#include + +SIG_BLOCK +SIG_SETMASK + +-- sizeof(sigset_t) expected by kernel: see comment in ARC sigaction.c for details +_NSIG8 (_NSIG / 8) + +-- Offsets of the fields in the ucontext_t structure. +#define ucontext(member) offsetof (ucontext_t, member) + +UCONTEXT_FLAGS ucontext (__uc_flags) +UCONTEXT_LINK ucontext (uc_link) +UCONTEXT_STACK ucontext (uc_stack) +UCONTEXT_MCONTEXT ucontext (uc_mcontext) +UCONTEXT_SIGMASK ucontext (uc_sigmask) +UCONTEXT_SIZE sizeof (ucontext_t) diff --git a/sysdeps/unix/sysv/linux/arc/vfork.S b/sysdeps/unix/sysv/linux/arc/vfork.S new file mode 100644 index 00000000000..7f981d0681c --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/vfork.S @@ -0,0 +1,42 @@ +/* vfork for ARC Linux. + Copyright (C) 2005-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include +#include +#define _SIGNAL_H +#include /* 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 b650dc07cc6..5a9f63ff511 100644 --- a/sysdeps/unix/sysv/linux/syscall-names.list +++ b/sysdeps/unix/sysv/linux/syscall-names.list @@ -42,6 +42,9 @@ adjtimex afs_syscall alarm alloc_hugepages +arc_gettls +arc_settls +arc_usr_cmpxchg arch_prctl arm_fadvise64_64 arm_sync_file_range diff --git a/timezone/zic.c b/timezone/zic.c index 2ebc66a9af5..8e8d94fac3a 100644 --- a/timezone/zic.c +++ b/timezone/zic.c @@ -39,7 +39,7 @@ typedef int_fast64_t zic_t; #include #endif #ifdef S_IRUSR -#define MKDIR_UMASK (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH) +#define MKDIR_UMASK (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH|S_IWOTH|S_IXOTH) #else #define MKDIR_UMASK 0755 #endif