From patchwork Fri Jul 10 23:37:58 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vineet Gupta X-Patchwork-Id: 1327167 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2001:8b0:10b:1231::1; helo=merlin.infradead.org; envelope-from=linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=synopsys.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=merlin.20170209 header.b=EWfMZyvc; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=synopsys.com header.i=@synopsys.com header.a=rsa-sha256 header.s=mail header.b=TBogw9NW; dkim-atps=neutral Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:8b0:10b:1231::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4B3Txr3KDcz9sRk for ; Sat, 11 Jul 2020 09:38:24 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To:From: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=RSPMaGpqQa8QFdsK4BOa2SKz8bc9VPW3INfvkVXaqEM=; b=EWfMZyvc0cyWBkHMoKd3YU5gG0 Kv7tKYe1iXQM2oyxZT9gl7ifBjbgnIMYwtGJqCE+93blWRmLMen9jIGiF+UQlfwZgWxRFaXBd/SZL kLeAOt3q/CobKk965PS8P1bdJS/UqmcrCsvvr52IP6NBxs4Zn8bQnmzHjYv1ZdLUL44uGt6NLY31a nn0cPCiF8r4V2v/c56hhpzRjmLpxo+VadTPAC+I+gIjYqp/2qrgUMzRSegP4c2HpqYuv4J8ovVxhr ZPg30QyzWui0wPqMIULOnAID9B6dbYy3PzAW8/FL+CnYHc9rxCMlPTYuZfpDVa1109sfuh1a4MQ+M f17NdEcA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2az-0008Br-6c; Fri, 10 Jul 2020 23:38:21 +0000 Received: from smtprelay-out1.synopsys.com ([149.117.73.133]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2at-00088N-QC for linux-snps-arc@lists.infradead.org; Fri, 10 Jul 2020 23:38:18 +0000 Received: from mailhost.synopsys.com (sv2-mailhost2.synopsys.com [10.205.2.134]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id BB95940066; Fri, 10 Jul 2020 23:38:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1594424294; bh=/TqS7EiNIpLlrIBlCui/5FUnj3bZVgAEyS4qEKSgpnY=; h=From:To:Cc:Subject:Date:From; b=TBogw9NW1p0BTezf181517YBbbcK+KpBSAJ+5WHDaxMdWRhUgxe22fIQ2/dY8nBjK yd1H5ABKU5hXLDQAe+ASIid8YjaKIhw2jonnfGsIZp7Z+hSlmV8vJvmni039PyloJ8 UDv6HxsN96WVRk3l5xPsdbhd0Ih6r+k6xzJoyPCqFlLKnjYsQ047ndE4AmIr0mf10u ylSdT+Q7eC16S6ws1WXstrd3fiSFcJLTGSfJD9sg5ZohPS3TrRFXuGzOcp6rlulADZ 3THESDClw6OmoSiKsH6Az4MLGUUvNB8wiFRTh6JYoqll4x8miDTi4Q6T+AT8uEF26W rQCxCBgGtPQhw== Received: from vineetg-Latitude-7400.internal.synopsys.com (unknown [10.13.183.89]) by mailhost.synopsys.com (Postfix) with ESMTP id B7E1DA005A; Fri, 10 Jul 2020 23:38:12 +0000 (UTC) X-SNPS-Relay: synopsys.com From: Vineet Gupta To: libc-alpha@sourceware.org Subject: [COMMITTED 01/13] ARC: ABI Implementation Date: Fri, 10 Jul 2020 16:37:58 -0700 Message-Id: <20200710233810.18720-1-vgupta@synopsys.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200710_193816_129121_8713E7BB X-CRM114-Status: GOOD ( 17.64 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [149.117.73.133 listed in wl.mailspike.net] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-BeenThere: linux-snps-arc@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on Synopsys ARC Processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Vineet Gupta , linux-snps-arc@lists.infradead.org, Adhemerval Zanella Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org This code deals with the ARC ABI. Reviewed-by: Adhemerval Zanella --- sysdeps/arc/__longjmp.S | 49 ++++++++++++++++++++++++ sysdeps/arc/abort-instr.h | 2 + sysdeps/arc/bits/endianness.h | 15 ++++++++ sysdeps/arc/bits/setjmp.h | 26 +++++++++++++ sysdeps/arc/bsd-_setjmp.S | 1 + sysdeps/arc/bsd-setjmp.S | 1 + sysdeps/arc/dl-runtime.h | 42 ++++++++++++++++++++ sysdeps/arc/dl-sysdep.h | 25 ++++++++++++ sysdeps/arc/dl-trampoline.S | 72 +++++++++++++++++++++++++++++++++++ sysdeps/arc/gccframe.h | 21 ++++++++++ sysdeps/arc/jmpbuf-offsets.h | 22 +++++++++++ sysdeps/arc/jmpbuf-unwind.h | 47 +++++++++++++++++++++++ sysdeps/arc/machine-gmon.h | 35 +++++++++++++++++ sysdeps/arc/memusage.h | 23 +++++++++++ sysdeps/arc/setjmp.S | 66 ++++++++++++++++++++++++++++++++ sysdeps/arc/sysdep.h | 53 ++++++++++++++++++++++++++ sysdeps/arc/tls-macros.h | 47 +++++++++++++++++++++++ 17 files changed, 547 insertions(+) create mode 100644 sysdeps/arc/__longjmp.S create mode 100644 sysdeps/arc/abort-instr.h create mode 100644 sysdeps/arc/bits/endianness.h create mode 100644 sysdeps/arc/bits/setjmp.h create mode 100644 sysdeps/arc/bsd-_setjmp.S create mode 100644 sysdeps/arc/bsd-setjmp.S create mode 100644 sysdeps/arc/dl-runtime.h create mode 100644 sysdeps/arc/dl-sysdep.h create mode 100644 sysdeps/arc/dl-trampoline.S create mode 100644 sysdeps/arc/gccframe.h create mode 100644 sysdeps/arc/jmpbuf-offsets.h create mode 100644 sysdeps/arc/jmpbuf-unwind.h create mode 100644 sysdeps/arc/machine-gmon.h create mode 100644 sysdeps/arc/memusage.h create mode 100644 sysdeps/arc/setjmp.S create mode 100644 sysdeps/arc/sysdep.h create mode 100644 sysdeps/arc/tls-macros.h diff --git a/sysdeps/arc/__longjmp.S b/sysdeps/arc/__longjmp.S new file mode 100644 index 000000000000..fcbf1bb6c0e2 --- /dev/null +++ b/sysdeps/arc/__longjmp.S @@ -0,0 +1,49 @@ +/* longjmp for ARC. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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) + + LDR (blink, r0, 0) + LDR (sp, r0, 1) + LDR (fp, r0, 2) + LDR (gp, r0, 3) + + LDR (r13, r0, 4) + LDR (r14, r0, 5) + LDR (r15, r0, 6) + LDR (r16, r0, 7) + LDR (r17, r0, 8) + LDR (r18, r0, 9) + LDR (r19, r0, 10) + LDR (r20, r0, 11) + LDR (r21, r0, 12) + LDR (r22, r0, 13) + LDR (r23, r0, 14) + LDR (r24, r0, 15) + + mov.f r0, r1 + j.d [blink] + mov.z r0, 1 /* don't return 0 to setjmp callsite from longjmp. */ + +END (__longjmp) diff --git a/sysdeps/arc/abort-instr.h b/sysdeps/arc/abort-instr.h new file mode 100644 index 000000000000..49f33613c404 --- /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/bits/endianness.h b/sysdeps/arc/bits/endianness.h new file mode 100644 index 000000000000..8f17ca84b485 --- /dev/null +++ b/sysdeps/arc/bits/endianness.h @@ -0,0 +1,15 @@ +#ifndef _BITS_ENDIANNESS_H +#define _BITS_ENDIANNESS_H 1 + +#ifndef _BITS_ENDIAN_H +# error "Never use directly; include instead." +#endif + +/* ARC has selectable endianness. */ +#ifdef __BIG_ENDIAN__ +# define __BYTE_ORDER __BIG_ENDIAN +#else +# define __BYTE_ORDER __LITTLE_ENDIAN +#endif + +#endif /* bits/endianness.h */ diff --git a/sysdeps/arc/bits/setjmp.h b/sysdeps/arc/bits/setjmp.h new file mode 100644 index 000000000000..9136bdba34ea --- /dev/null +++ b/sysdeps/arc/bits/setjmp.h @@ -0,0 +1,26 @@ +/* Define the machine-dependent type 'jmp_buf'. ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 000000000000..90b99cd8c3e0 --- /dev/null +++ b/sysdeps/arc/bsd-_setjmp.S @@ -0,0 +1 @@ +/* _setjmp is in setjmp.S. */ diff --git a/sysdeps/arc/bsd-setjmp.S b/sysdeps/arc/bsd-setjmp.S new file mode 100644 index 000000000000..d3b823c118bc --- /dev/null +++ b/sysdeps/arc/bsd-setjmp.S @@ -0,0 +1 @@ +/* setjmp is in setjmp.S. */ diff --git a/sysdeps/arc/dl-runtime.h b/sysdeps/arc/dl-runtime.h new file mode 100644 index 000000000000..6597d93bace5 --- /dev/null +++ b/sysdeps/arc/dl-runtime.h @@ -0,0 +1,42 @@ +/* Helpers for On-demand PLT fixup for shared objects. ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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. + + - @plt0: runtime pc of first plt entry (DT_PLTGOT) + - @pltn: runtime pc of plt entry being resolved + - @size: size of .plt.rela entry (unused). */ +static inline uintptr_t +reloc_index (uintptr_t plt0, uintptr_t pltn, size_t size) +{ + unsigned long int idx = pltn - plt0; + + /* PLT trampoline is 16 bytes. */ + idx /= 16; + + /* Exclude PLT0 and PLT1. */ + return idx - 2; +} + +static inline uintptr_t +reloc_offset (uintptr_t plt0, uintptr_t pltn) +{ + size_t sz = sizeof (ElfW(Rela)); + return reloc_index (plt0, pltn, sz) * sz; +} diff --git a/sysdeps/arc/dl-sysdep.h b/sysdeps/arc/dl-sysdep.h new file mode 100644 index 000000000000..aefec2ba056a --- /dev/null +++ b/sysdeps/arc/dl-sysdep.h @@ -0,0 +1,25 @@ +/* System-specific settings for dynamic linker code. ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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-trampoline.S b/sysdeps/arc/dl-trampoline.S new file mode 100644 index 000000000000..eb2a030046d6 --- /dev/null +++ b/sysdeps/arc/dl-trampoline.S @@ -0,0 +1,72 @@ +/* PLT trampolines. ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 + +/* resolver has atypical calling ABI (r11 and r12) + PLTn which lands us here, sets up + 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) + + /* save args to func being resolved before entering resolver. */ + 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) + + mov_s r1, r12 + bl.d _dl_fixup + mov r0, r11 + + /* restore regs back. */ + 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) + + 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/gccframe.h b/sysdeps/arc/gccframe.h new file mode 100644 index 000000000000..296857ba9ccc --- /dev/null +++ b/sysdeps/arc/gccframe.h @@ -0,0 +1,21 @@ +/* Definition of object in frame unwind info. ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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/jmpbuf-offsets.h b/sysdeps/arc/jmpbuf-offsets.h new file mode 100644 index 000000000000..e7551cad3b47 --- /dev/null +++ b/sysdeps/arc/jmpbuf-offsets.h @@ -0,0 +1,22 @@ +/* Private macros for accessing __jmp_buf contents. ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 JB_SP 1 + +/* 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 000000000000..697d3e2ee5e5 --- /dev/null +++ b/sysdeps/arc/jmpbuf-unwind.h @@ -0,0 +1,47 @@ +/* Examine __jmp_buf for unwinding frames. ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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/machine-gmon.h b/sysdeps/arc/machine-gmon.h new file mode 100644 index 000000000000..a0d4e95a945d --- /dev/null +++ b/sysdeps/arc/machine-gmon.h @@ -0,0 +1,35 @@ +/* Machine-dependent definitions for profiling support. ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 000000000000..724bc4de1312 --- /dev/null +++ b/sysdeps/arc/memusage.h @@ -0,0 +1,23 @@ +/* Machine-specific definitions for memory usage profiling, ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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/setjmp.S b/sysdeps/arc/setjmp.S new file mode 100644 index 000000000000..01cc3af98237 --- /dev/null +++ b/sysdeps/arc/setjmp.S @@ -0,0 +1,66 @@ +/* setjmp for ARC. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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) + + /* Make a note of where longjmp will return to. + that will be right next to this setjmp call-site in BLINK + since "C" caller of this routine will do a branch-n-link. */ + + STR (blink, r0, 0) + STR (sp, r0, 1) + STR (fp, r0, 2) + STR (gp, r0, 3) + + STR (r13, r0, 4) + STR (r14, r0, 5) + STR (r15, r0, 6) + STR (r16, r0, 7) + STR (r17, r0, 8) + STR (r18, r0, 9) + STR (r19, r0, 10) + STR (r20, r0, 11) + STR (r21, r0, 12) + STR (r22, r0, 13) + STR (r23, r0, 14) + STR (r24, r0, 15) + + b __sigjmp_save + +END (__sigsetjmp) + +libc_hidden_def (__sigsetjmp) diff --git a/sysdeps/arc/sysdep.h b/sysdeps/arc/sysdep.h new file mode 100644 index 000000000000..9ac295bdf35b --- /dev/null +++ b/sysdeps/arc/sysdep.h @@ -0,0 +1,53 @@ +/* Assembler macros for ARC. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 L(label) .L##label + +# define CALL_MCOUNT /* Do nothing for now. */ + +# define STR(reg, rbase, off) st reg, [rbase, off * 4] +# define LDR(reg, rbase, off) ld reg, [rbase, off * 4] + +#endif /* __ASSEMBLER__ */ diff --git a/sysdeps/arc/tls-macros.h b/sysdeps/arc/tls-macros.h new file mode 100644 index 000000000000..7a076182b977 --- /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) 2020 Free Software Foundation, Inc. + + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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) \ + ({ void *__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) \ + ({ void *__result; \ + void *tp = __builtin_thread_pointer (); \ + __asm__ ("add %0, %1, @" #x "@tpoff \n" \ + : "=r" (__result) : "r"(tp)); \ + __result; }) + +#define TLS_IE(x) \ + ({ void *__result; \ + void *tp = __builtin_thread_pointer (); \ + __asm__ ("ld %0, [pcl, @" #x "@tlsie] \n" \ + "add %0, %1, %0 \n" \ + : "=&r" (__result) : "r" (tp)); \ + __result; }) From patchwork Fri Jul 10 23:37:59 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vineet Gupta X-Patchwork-Id: 1327168 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2001:8b0:10b:1231::1; helo=merlin.infradead.org; envelope-from=linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=synopsys.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=merlin.20170209 header.b=fWjFym9L; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=synopsys.com header.i=@synopsys.com header.a=rsa-sha256 header.s=mail header.b=gMFU7dk1; dkim-atps=neutral Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:8b0:10b:1231::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4B3Txr07Vxz9sRW for ; Sat, 11 Jul 2020 09:38:24 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=MIPXpa0i10AvsyNmjxfAtgRMpuauaCR0pKnz9byLGG4=; b=fWjFym9LUImcVkOKw4W1gAsNy lemDy3bg0ZyrN8t3rk4T81TOQUk/+iWBPYT7aKBVQFCP0P7L77LVIS+/98sJ2EG5xGiu51lq8RyX9 paRNDvGkMakmU9jTEv6eTnLOuusKHrILvDh4DcHYB/WVRGGuqFxZS9xLbgVep1ntS9N7kJMQJqEYI XQXgcsx3aKCBZjX0MgcPQPNlyaqzVIkJv5TReRHUDkhzIxehr41MlH6rc5fL7GL6/k+p8HI4wwhP9 MlhuxuA7uTzFoACnbWjg0TRtadfnZtUJsrMpTP3kNv0OiTgDYf4aw5YVX7BGpWI8S361NSDxReydZ gfo5R6Eeg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2ay-0008Bg-UR; Fri, 10 Jul 2020 23:38:20 +0000 Received: from smtprelay-out1.synopsys.com ([149.117.73.133]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2at-00088Q-QB for linux-snps-arc@lists.infradead.org; Fri, 10 Jul 2020 23:38:18 +0000 Received: from mailhost.synopsys.com (sv2-mailhost2.synopsys.com [10.205.2.134]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id C30D940A37; Fri, 10 Jul 2020 23:38:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1594424294; bh=E7xtzvE/Jk9qs/8mxFtQl9I4gzziI7KXzPlncCwZQaE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gMFU7dk1KhB+q3VTxQXpj+P9Nz4pnGy7imdRRojAalwtTj9s4dw5Qw6Bv+zY5Ag/x tyYjOP+9BKJfQbKymdRVs0b2L7EWUAT7F1aYAC3UgaOr1OU5J+KO48MWDCjVhxPRER HHhsdhyLOv8JA8SB/6/ueA4ag2pBJDQzeXpltzmsgU/hoDpFhF/uQnRUSW/itsBLjw aGkx8DdXzYK0glKID+eLt0jHLErb0Pnpt5QcYw9GCVr/U1Sp/4RZU1+IwnPq8Z+QzJ WRq1NjVA3z4BP52zxfyQF6sp0oJmh6T0BTDhVFq8zh3qGytPOl8IuQdQPQYle46Id8 U2Mo7ts1fkQow== Received: from vineetg-Latitude-7400.internal.synopsys.com (unknown [10.13.183.89]) by mailhost.synopsys.com (Postfix) with ESMTP id 79511A00A1; Fri, 10 Jul 2020 23:38:13 +0000 (UTC) X-SNPS-Relay: synopsys.com From: Vineet Gupta To: libc-alpha@sourceware.org Subject: [COMMITTED 02/13] ARC: startup and dynamic linking code Date: Fri, 10 Jul 2020 16:37:59 -0700 Message-Id: <20200710233810.18720-2-vgupta@synopsys.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200710233810.18720-1-vgupta@synopsys.com> References: <20200710233810.18720-1-vgupta@synopsys.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200710_193816_171743_D79F0843 X-CRM114-Status: GOOD ( 28.62 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [149.117.73.133 listed in wl.mailspike.net] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-BeenThere: linux-snps-arc@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on Synopsys ARC Processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Vineet Gupta , linux-snps-arc@lists.infradead.org, Adhemerval Zanella Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Code for C runtime startup and dynamic loading including PLT layout. Reviewed-by: Adhemerval Zanella --- sysdeps/arc/bits/link.h | 52 ++++++ sysdeps/arc/dl-machine.h | 344 ++++++++++++++++++++++++++++++++++++++ sysdeps/arc/entry.h | 5 + sysdeps/arc/ldsodefs.h | 43 +++++ sysdeps/arc/sotruss-lib.c | 50 ++++++ sysdeps/arc/start.S | 74 ++++++++ sysdeps/arc/tst-audit.h | 23 +++ 7 files changed, 591 insertions(+) create mode 100644 sysdeps/arc/bits/link.h create mode 100644 sysdeps/arc/dl-machine.h create mode 100644 sysdeps/arc/entry.h create mode 100644 sysdeps/arc/ldsodefs.h create mode 100644 sysdeps/arc/sotruss-lib.c create mode 100644 sysdeps/arc/start.S create mode 100644 sysdeps/arc/tst-audit.h diff --git a/sysdeps/arc/bits/link.h b/sysdeps/arc/bits/link.h new file mode 100644 index 000000000000..b687250a7a07 --- /dev/null +++ b/sysdeps/arc/bits/link.h @@ -0,0 +1,52 @@ +/* Machine-specific declarations for dynamic linker interface, ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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/dl-machine.h b/sysdeps/arc/dl-machine.h new file mode 100644 index 000000000000..e47f19905f1f --- /dev/null +++ b/sysdeps/arc/dl-machine.h @@ -0,0 +1,344 @@ +/* Machine-dependent ELF dynamic relocation inline functions. ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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\ + /* intermediate LD for ST emcoding limitations. */ \n\ + ld r3, [pcl, _dl_argv@gotpc] \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 + +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 DTPOFF 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; + } + } +} + +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; +} + +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/entry.h b/sysdeps/arc/entry.h new file mode 100644 index 000000000000..adb01d981afd --- /dev/null +++ b/sysdeps/arc/entry.h @@ -0,0 +1,5 @@ +#ifndef __ASSEMBLY__ +extern void __start (void) attribute_hidden; +#endif + +#define ENTRY_POINT __start diff --git a/sysdeps/arc/ldsodefs.h b/sysdeps/arc/ldsodefs.h new file mode 100644 index 000000000000..cf1df36f6ccd --- /dev/null +++ b/sysdeps/arc/ldsodefs.h @@ -0,0 +1,43 @@ +/* Run-time dynamic linker data structures for loaded ELF shared objects. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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/sotruss-lib.c b/sysdeps/arc/sotruss-lib.c new file mode 100644 index 000000000000..dfb0f0ee8d12 --- /dev/null +++ b/sysdeps/arc/sotruss-lib.c @@ -0,0 +1,50 @@ +/* Override generic sotruss-lib.c to define actual functions for ARC. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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/start.S b/sysdeps/arc/start.S new file mode 100644 index 000000000000..3c4144bd20d4 --- /dev/null +++ b/sysdeps/arc/start.S @@ -0,0 +1,74 @@ +/* Startup code for ARC. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 +#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. */ + +ENTRY (ENTRY_POINT) + + /* Needed to make gdb backtraces stop here. */ + .cfi_label .Ldummy + cfi_undefined (blink) + + 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 +END (ENTRY_POINT) + +/* 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/tst-audit.h b/sysdeps/arc/tst-audit.h new file mode 100644 index 000000000000..0b8f0b9c2f3f --- /dev/null +++ b/sysdeps/arc/tst-audit.h @@ -0,0 +1,23 @@ +/* Definitions for testing PLT entry/exit auditing. ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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] From patchwork Fri Jul 10 23:38:00 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vineet Gupta X-Patchwork-Id: 1327172 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2001:8b0:10b:1231::1; helo=merlin.infradead.org; envelope-from=linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=synopsys.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=merlin.20170209 header.b=A/6DtGsF; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=synopsys.com header.i=@synopsys.com header.a=rsa-sha256 header.s=mail header.b=DcX9l2yL; dkim-atps=neutral Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:8b0:10b:1231::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4B3Txw1HqNz9sTK for ; Sat, 11 Jul 2020 09:38:27 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=alV9uM9M4Vz77bcMN7ful++Stp2CGEs8teE3ZAhyxgA=; b=A/6DtGsFO0lu6t7t0zDVv02HU tSOwDgW8YB7hwU6Beuhs07zR8FJGeX4F5Fo1dpAmPpdREJnRtDfpZjk7Uulux89NN124cLSjPKJbs fcyJnyLnKurQQVvUtFR3sGXQjWZz5kmW2eBTMSQXkzYeSxEicd4OauZRLN93mdsOgpgvVaKiWmQig bqCwX8atm8ToVkzUvbO7ZElmgKMJpgK79nuK/ZpZxXEtW8qC/0l8gkXEHhE2YhX4U0aH6GOZ5KWhB xei5BBO61hSQcDp8GBYpA2FlJ/eEWzpMxqQ2xYWg/GqvYGSdZkETqo2fEooPhuIZ8zHHQ5sIGAXCA C10NO7o/w==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2b1-0008Cb-61; Fri, 10 Jul 2020 23:38:23 +0000 Received: from smtprelay-out1.synopsys.com ([149.117.73.133]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2au-00088Y-86 for linux-snps-arc@lists.infradead.org; Fri, 10 Jul 2020 23:38:21 +0000 Received: from mailhost.synopsys.com (sv2-mailhost2.synopsys.com [10.205.2.134]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id 4D25E40A38; Fri, 10 Jul 2020 23:38:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1594424294; bh=OfGdUP5kYBRDl8S/tXAQUVs4HqFZCacza53+h83Mc1U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=DcX9l2yLxDnSF8ZTnYsHyym8bvtOEdbmV/1xgOK8xIUbIY7N6PkKM2+H+uYyvJAZ+ lyw/6vDiUroLcwzh1A8q1MrXTovWPDYUTBltyqLnXMSCjRrZENHhNQDwbVMkhNPdD/ B0vLYa1gHTRFeFIwXdmnwocAGeaf8c4iG57FXS8rnOaXs91ePNaiEVD+JQcZg3pPJH sxf6Qcp1w9I/QR1xpg3XB4InJM27J6WPdDHPfGQ1lrcFBzOs9WJHu5LKEymg489uzp DFCMFFblWTTABpCNLAfVcobvp6xGLjU7ZsWQhPqqiYIVELiLiu8NLtdxSnbGFuqDyw WheGPvBTzD5aw== Received: from vineetg-Latitude-7400.internal.synopsys.com (unknown [10.13.183.89]) by mailhost.synopsys.com (Postfix) with ESMTP id B4A87A009D; Fri, 10 Jul 2020 23:38:13 +0000 (UTC) X-SNPS-Relay: synopsys.com From: Vineet Gupta To: libc-alpha@sourceware.org Subject: [COMMITTED 03/13] ARC: Thread Local Storage support Date: Fri, 10 Jul 2020 16:38:00 -0700 Message-Id: <20200710233810.18720-3-vgupta@synopsys.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200710233810.18720-1-vgupta@synopsys.com> References: <20200710233810.18720-1-vgupta@synopsys.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200710_193816_616268_248B1E70 X-CRM114-Status: GOOD ( 21.19 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [149.117.73.133 listed in wl.mailspike.net] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-BeenThere: linux-snps-arc@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on Synopsys ARC Processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Vineet Gupta , linux-snps-arc@lists.infradead.org, Adhemerval Zanella Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org This includes all 4 TLS addressing models Reviewed-by: Adhemerval Zanella --- sysdeps/arc/dl-tls.h | 30 +++++++ sysdeps/arc/libc-tls.c | 27 ++++++ sysdeps/arc/nptl/tcb-offsets.sym | 11 +++ sysdeps/arc/nptl/tls.h | 139 +++++++++++++++++++++++++++++++ sysdeps/arc/stackinfo.h | 33 ++++++++ 5 files changed, 240 insertions(+) create mode 100644 sysdeps/arc/dl-tls.h create mode 100644 sysdeps/arc/libc-tls.c create mode 100644 sysdeps/arc/nptl/tcb-offsets.sym create mode 100644 sysdeps/arc/nptl/tls.h create mode 100644 sysdeps/arc/stackinfo.h diff --git a/sysdeps/arc/dl-tls.h b/sysdeps/arc/dl-tls.h new file mode 100644 index 000000000000..0f3626d197c9 --- /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) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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/libc-tls.c b/sysdeps/arc/libc-tls.c new file mode 100644 index 000000000000..234932c29512 --- /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) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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/nptl/tcb-offsets.sym b/sysdeps/arc/nptl/tcb-offsets.sym new file mode 100644 index 000000000000..64c432c22e76 --- /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 000000000000..184b550ab5c9 --- /dev/null +++ b/sysdeps/arc/nptl/tls.h @@ -0,0 +1,139 @@ +/* Definition for thread-local data handling. NPTL/ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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; + +/* 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_CALL (arc_settls, (tcbp));\ + INTERNAL_SYSCALL_ERROR_P (result_var) \ + ? "settls syscall 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) () + +#endif /* !__ASSEMBLER__ */ + +#endif /* tls.h */ diff --git a/sysdeps/arc/stackinfo.h b/sysdeps/arc/stackinfo.h new file mode 100644 index 000000000000..02ae1cd8c425 --- /dev/null +++ b/sysdeps/arc/stackinfo.h @@ -0,0 +1,33 @@ +/* Stack environment definitions for ARC. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 */ From patchwork Fri Jul 10 23:38:01 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vineet Gupta X-Patchwork-Id: 1327169 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2001:8b0:10b:1231::1; helo=merlin.infradead.org; envelope-from=linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=synopsys.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=merlin.20170209 header.b=PSSl0RVa; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=synopsys.com header.i=@synopsys.com header.a=rsa-sha256 header.s=mail header.b=hphlDu2N; dkim-atps=neutral Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:8b0:10b:1231::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4B3Txt0xNZz9sSd for ; Sat, 11 Jul 2020 09:38:26 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=VvwvTn07Ah+g6CYZlki1vfDyIBf/jY1Gu2pMnL7bmcA=; b=PSSl0RVacxjfbpk3RY+CA/Krv qEq5XcUjXODKIegj+GmYE3swOPoJbz1RIsqVcRQIZ4y4FFuQpLkbnw04e+iz2m767UlaY+nTMc6ol EMokf4+vJsr1VWiZ+F5/IX/qng5tiZRrfexU8KJ8VfPx9qQsS4hikjvEzeckRsjN7z+CDfO9+mC77 uUrRs2cFt+KRcPt9/X3yVuTkOfAJPJFZ6V6IVaoE+VocFgy131uga7yGpuCR8lZC4FK5GEUX4qt6o bhUlyzW9J+kU7B7lS5Ixvb1XVmoNB4XrWHBDyuhQY2lsyCs5QlMvokt2+1GxAXgWA2TeZOGY2+/4i F2qg8YEZg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2b0-0008CL-Iv; Fri, 10 Jul 2020 23:38:22 +0000 Received: from smtprelay-out1.synopsys.com ([149.117.87.133]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2au-00088U-7e for linux-snps-arc@lists.infradead.org; Fri, 10 Jul 2020 23:38:20 +0000 Received: from mailhost.synopsys.com (sv2-mailhost2.synopsys.com [10.205.2.134]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id A8F3AC04BA; Fri, 10 Jul 2020 23:38:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1594424295; bh=DSro3e6tZ0Kp/cWpg3iuaHmbgvNt+DSM2g2zKPcf3ZM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hphlDu2Na5BzutO9ObSJ/jP5eKrti+YgEr2auVZCLwzTtraeUymcru+M8AH+QV1X6 8pjYQfmOfWqNdUTBgpr8tEMVjQM/CMFN090HOc5zXzJGAGk9d+UJ60Vp3gh6jIlccF x/Mqh/AWbqlnSE+VP3F4U8wwEwd6fI3Fvr2wx5wqPeamQEPTORrmuPwLYixNRxXAuD Jx9BFcTUmCviMLsV2IvR2FwYmqWTpmCwbZnrwOEGNuzfkn7k7lpLUvJlIQIBeUKQLg Cb4umIsJGdmBVsSWwt5Dxr1nin8bWomo4hjI4gJ5YlB/5rW8gW+bEbViuQ6mP7UX+p 92jXV9AMQymOA== Received: from vineetg-Latitude-7400.internal.synopsys.com (unknown [10.13.183.89]) by mailhost.synopsys.com (Postfix) with ESMTP id 4CCD4A00A2; Fri, 10 Jul 2020 23:38:14 +0000 (UTC) X-SNPS-Relay: synopsys.com From: Vineet Gupta To: libc-alpha@sourceware.org Subject: [COMMITTED 04/13] ARC: Atomics and Locking primitives Date: Fri, 10 Jul 2020 16:38:01 -0700 Message-Id: <20200710233810.18720-4-vgupta@synopsys.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200710233810.18720-1-vgupta@synopsys.com> References: <20200710233810.18720-1-vgupta@synopsys.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200710_193816_556633_B00569A0 X-CRM114-Status: GOOD ( 13.16 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [149.117.87.133 listed in wl.mailspike.net] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-BeenThere: linux-snps-arc@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on Synopsys ARC Processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Vineet Gupta , linux-snps-arc@lists.infradead.org, Adhemerval Zanella Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Reviewed-by: Adhemerval Zanella --- sysdeps/arc/atomic-machine.h | 69 ++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 sysdeps/arc/atomic-machine.h diff --git a/sysdeps/arc/atomic-machine.h b/sysdeps/arc/atomic-machine.h new file mode 100644 index 000000000000..1c8638bb44ef --- /dev/null +++ b/sysdeps/arc/atomic-machine.h @@ -0,0 +1,69 @@ +/* Low-level functions for atomic operations. ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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) + +#define atomic_full_barrier() ({ asm volatile ("dmb 3":::"memory"); }) + +#endif /* _ARC_BITS_ATOMIC_H */ From patchwork Fri Jul 10 23:38:02 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vineet Gupta X-Patchwork-Id: 1327171 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2001:8b0:10b:1231::1; helo=merlin.infradead.org; envelope-from=linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=synopsys.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=merlin.20170209 header.b=k1b6dwyg; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=synopsys.com header.i=@synopsys.com header.a=rsa-sha256 header.s=mail header.b=c0leePsy; dkim-atps=neutral Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:8b0:10b:1231::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4B3Txv6FS2z9sTC for ; Sat, 11 Jul 2020 09:38:27 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=XGqJt4QR/woAi7m+kOwYkNeyQoznGMpK4wya+sC88uM=; b=k1b6dwygCsQOtmbG6EVi0HSES oL3dKzVvF3g1SBUhYjrUmEUezMoctHmlDD0AxibjvXwWfQJ0L7wPQumI+/HMWc2gbC7yQUZ6P/Etl 9j3fTDamkwUeryratu6ZdJJ4od3Y0K9dxqzKQum6vO1Rtlrm6ASEkihFFBeFB1PTzTDxYdgP7fUbz /5pCJeJWoET49mYTA37jKc3PTPtIBaep8KqGT2hm+Jq7ONeEBiS59btaxs5A9lZLTlkgRQwkng8ks /mDWe6Jf5S6twVsSoc2lDTRITNWRsdCLE7k7Uo6vmkAu23xKX3LpzvG8JD4o9e30kE+PbxkGBdsdJ BalqjLZ1g==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2b0-0008CR-Qp; Fri, 10 Jul 2020 23:38:22 +0000 Received: from smtprelay-out1.synopsys.com ([149.117.87.133]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2au-00088V-7e for linux-snps-arc@lists.infradead.org; Fri, 10 Jul 2020 23:38:21 +0000 Received: from mailhost.synopsys.com (sv2-mailhost2.synopsys.com [10.205.2.134]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id DE030C04BC; Fri, 10 Jul 2020 23:38:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1594424295; bh=02/S12MEvtkGckZA7WmnUY9CTCjaE1L6mpeVFkrv+hI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=c0leePsypzCErvam25mth+az+/uy5pHtAxaYP1DNp+JKt+EPUM1WrpNdzPzMleEaa gyxG/rAnlsbU/yRBGlU/8I2/GUMwMdWpZTRZgUgs7fRDZo+shMUirGVe1w8+8DYd/q cl3NClnhBAqLwkhQC4HEb1TJEhpl5frxTb7B/2safXJTX5u3Mmjxhh36gxzCicHU4s vKTGU4iPKeg+ehO6eHnuiB1ueIquglNLkGgaDgRNBdc+oN+Ay/dgG94wYAcun/O16C mqGM9G+/1mGKqs8YREQI+Pzvc8Jjc29IiO+npy9DBDboUDy+C0yFarcy0LO+kcuHwP xOJ24ggipQS8g== Received: from vineetg-Latitude-7400.internal.synopsys.com (unknown [10.13.183.89]) by mailhost.synopsys.com (Postfix) with ESMTP id 842CBA0099; Fri, 10 Jul 2020 23:38:14 +0000 (UTC) X-SNPS-Relay: synopsys.com From: Vineet Gupta To: libc-alpha@sourceware.org Subject: [COMMITTED 05/13] ARC: math soft float support Date: Fri, 10 Jul 2020 16:38:02 -0700 Message-Id: <20200710233810.18720-5-vgupta@synopsys.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200710233810.18720-1-vgupta@synopsys.com> References: <20200710233810.18720-1-vgupta@synopsys.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200710_193816_532768_11C9A1C7 X-CRM114-Status: GOOD ( 17.89 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [149.117.87.133 listed in wl.mailspike.net] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-BeenThere: linux-snps-arc@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on Synopsys ARC Processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Vineet Gupta , linux-snps-arc@lists.infradead.org, Adhemerval Zanella Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Reviewed-by: Adhemerval Zanella --- sysdeps/arc/bits/fenv.h | 78 +++++++++++++++++++++++ sysdeps/arc/nofpu/Implies | 1 + sysdeps/arc/nofpu/math-tests-exceptions.h | 27 ++++++++ sysdeps/arc/nofpu/math-tests-rounding.h | 27 ++++++++ sysdeps/arc/sfp-machine.h | 70 ++++++++++++++++++++ 5 files changed, 203 insertions(+) create mode 100644 sysdeps/arc/bits/fenv.h create mode 100644 sysdeps/arc/nofpu/Implies create mode 100644 sysdeps/arc/nofpu/math-tests-exceptions.h create mode 100644 sysdeps/arc/nofpu/math-tests-rounding.h create mode 100644 sysdeps/arc/sfp-machine.h diff --git a/sysdeps/arc/bits/fenv.h b/sysdeps/arc/bits/fenv.h new file mode 100644 index 000000000000..b375641e6248 --- /dev/null +++ b/sysdeps/arc/bits/fenv.h @@ -0,0 +1,78 @@ +/* Floating point environment. ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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) /* default */ + FE_TONEAREST, + FE_UPWARD = +# define FE_UPWARD (0x2) + FE_UPWARD, + FE_DOWNWARD = +# define FE_DOWNWARD (0x3) + FE_DOWNWARD + }; + +typedef unsigned int fexcept_t; + +typedef struct +{ + unsigned int __fpcr; + unsigned int __fpsr; +} 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/nofpu/Implies b/sysdeps/arc/nofpu/Implies new file mode 100644 index 000000000000..abcbadb25f22 --- /dev/null +++ b/sysdeps/arc/nofpu/Implies @@ -0,0 +1 @@ +ieee754/soft-fp diff --git a/sysdeps/arc/nofpu/math-tests-exceptions.h b/sysdeps/arc/nofpu/math-tests-exceptions.h new file mode 100644 index 000000000000..b2a712c8c254 --- /dev/null +++ b/sysdeps/arc/nofpu/math-tests-exceptions.h @@ -0,0 +1,27 @@ +/* Configuration for math tests. Exceptions support ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 does not 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 000000000000..2f67483db20d --- /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) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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/sfp-machine.h b/sysdeps/arc/sfp-machine.h new file mode 100644 index 000000000000..f8c5b40d7ff8 --- /dev/null +++ b/sysdeps/arc/sfp-machine.h @@ -0,0 +1,70 @@ +/* Machine-dependent software floating-point definitions. ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 1 From patchwork Fri Jul 10 23:38:03 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vineet Gupta X-Patchwork-Id: 1327176 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2001:8b0:10b:1231::1; helo=merlin.infradead.org; envelope-from=linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=synopsys.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=merlin.20170209 header.b=VK+Lp+vC; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=synopsys.com header.i=@synopsys.com header.a=rsa-sha256 header.s=mail header.b=MhGRy9Qi; dkim-atps=neutral Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:8b0:10b:1231::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4B3Txz6CcGz9sRk for ; Sat, 11 Jul 2020 09:38:31 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=malcllsbAD1TaHf/zOAHFTZ6UdudiCX0nVMnCfTfnS8=; b=VK+Lp+vCKoyqkKfduhEDinKdH prI6AET2swoOJc1WF1GguCXvqKcOdA9kyHyGkDBLcyRmR2FXjB9Of17F5jJVwTS+LDhgVT7hE53N4 wfiB4ltcwSO0PwGLNU5UFXOx3u9T0d354r2ThkCEladPy+q0mO5crOesvJbINLBXEJp3PYNbjd5RT Hj0ociVLw1yJsaX+/ATiCA/o/w9b0J3Gbz7PHGAdlECi84+WMO41p1D1O2m0KQ5zNOjmiTSmCk3/+ zJf/pRSBNGoXTKqXwWVlGxPpm1+Fy5s7BNukuOH328pN7sac4pBawJGHZvS2hXnOfblYPjdzGESM9 nBIeduYQg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2b6-0008EM-Fg; Fri, 10 Jul 2020 23:38:28 +0000 Received: from smtprelay-out1.synopsys.com ([149.117.87.133]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2au-00088W-7f for linux-snps-arc@lists.infradead.org; Fri, 10 Jul 2020 23:38:25 +0000 Received: from mailhost.synopsys.com (sv2-mailhost2.synopsys.com [10.205.2.134]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id 1D552C04BD; Fri, 10 Jul 2020 23:38:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1594424295; bh=GMuEtzDgqkc+uafspPgaDtRKVTaBewWLJlflQSgjfpg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MhGRy9QiXFkLplkxGggHlw+MN1p7+zRGHQmDhSXQHYHqmq549oWabXNHuqgr8EftE ZLQBohvuFLnPAjIsl+OfMTaTa39w0R3u/LEk3Nv7B37Nvv6GL6QzI+FFMJd+B7OdxC u1mW90FrJnVzQs6on2ljLG+CmLq1ckP5ta2oZBLdQxAn6vrCSvbijjxCpt3AuaZ/sc vyr8VZYoe8/RCQhAsB2Y94VqnmFCzzv6ZjtxlSsmne8Wk9Ptz+L7IOGshVd74QP83z iL5MTzaspRiUsiug1JVH5y5zfLmTLJy9tIIJsE90WnVTKRMJez/uosZQNviT00ydM3 yrIbCYxqc8O9w== Received: from vineetg-Latitude-7400.internal.synopsys.com (unknown [10.13.183.89]) by mailhost.synopsys.com (Postfix) with ESMTP id BADBFA009D; Fri, 10 Jul 2020 23:38:14 +0000 (UTC) X-SNPS-Relay: synopsys.com From: Vineet Gupta To: libc-alpha@sourceware.org Subject: [COMMITTED 06/13] ARC: hardware floating point support Date: Fri, 10 Jul 2020 16:38:03 -0700 Message-Id: <20200710233810.18720-6-vgupta@synopsys.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200710233810.18720-1-vgupta@synopsys.com> References: <20200710233810.18720-1-vgupta@synopsys.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200710_193816_703622_5AC74F64 X-CRM114-Status: GOOD ( 17.98 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [149.117.87.133 listed in wl.mailspike.net] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-BeenThere: linux-snps-arc@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on Synopsys ARC Processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Vineet Gupta , linux-snps-arc@lists.infradead.org, Adhemerval Zanella Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Reviewed-by: Adhemerval Zanella --- sysdeps/arc/fpu/fclrexcpt.c | 36 ++++++++ sysdeps/arc/fpu/fegetenv.c | 37 ++++++++ sysdeps/arc/fpu/fegetmode.c | 31 +++++++ sysdeps/arc/fpu/fegetround.c | 32 +++++++ sysdeps/arc/fpu/feholdexcpt.c | 43 +++++++++ sysdeps/arc/fpu/fesetenv.c | 48 ++++++++++ sysdeps/arc/fpu/fesetexcept.c | 32 +++++++ sysdeps/arc/fpu/fesetmode.c | 40 +++++++++ sysdeps/arc/fpu/fesetround.c | 40 +++++++++ sysdeps/arc/fpu/feupdateenv.c | 51 +++++++++++ sysdeps/arc/fpu/fgetexcptflg.c | 31 +++++++ sysdeps/arc/fpu/fraiseexcpt.c | 39 +++++++++ sysdeps/arc/fpu/fsetexcptflg.c | 38 ++++++++ sysdeps/arc/fpu/ftestexcept.c | 33 +++++++ sysdeps/arc/fpu/math-use-builtins-fma.h | 4 + sysdeps/arc/fpu/math-use-builtins-sqrt.h | 4 + sysdeps/arc/fpu_control.h | 106 +++++++++++++++++++++++ sysdeps/arc/get-rounding-mode.h | 38 ++++++++ sysdeps/arc/math-tests-trap.h | 27 ++++++ sysdeps/arc/tininess.h | 1 + 20 files changed, 711 insertions(+) create mode 100644 sysdeps/arc/fpu/fclrexcpt.c create mode 100644 sysdeps/arc/fpu/fegetenv.c create mode 100644 sysdeps/arc/fpu/fegetmode.c create mode 100644 sysdeps/arc/fpu/fegetround.c create mode 100644 sysdeps/arc/fpu/feholdexcpt.c create mode 100644 sysdeps/arc/fpu/fesetenv.c create mode 100644 sysdeps/arc/fpu/fesetexcept.c create mode 100644 sysdeps/arc/fpu/fesetmode.c create mode 100644 sysdeps/arc/fpu/fesetround.c create mode 100644 sysdeps/arc/fpu/feupdateenv.c create mode 100644 sysdeps/arc/fpu/fgetexcptflg.c create mode 100644 sysdeps/arc/fpu/fraiseexcpt.c create mode 100644 sysdeps/arc/fpu/fsetexcptflg.c create mode 100644 sysdeps/arc/fpu/ftestexcept.c create mode 100644 sysdeps/arc/fpu/math-use-builtins-fma.h create mode 100644 sysdeps/arc/fpu/math-use-builtins-sqrt.h create mode 100644 sysdeps/arc/fpu_control.h create mode 100644 sysdeps/arc/get-rounding-mode.h create mode 100644 sysdeps/arc/math-tests-trap.h create mode 100644 sysdeps/arc/tininess.h diff --git a/sysdeps/arc/fpu/fclrexcpt.c b/sysdeps/arc/fpu/fclrexcpt.c new file mode 100644 index 000000000000..7653d99a008c --- /dev/null +++ b/sysdeps/arc/fpu/fclrexcpt.c @@ -0,0 +1,36 @@ +/* Clear given exceptions in current floating-point environment. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 + +int +feclearexcept (int excepts) +{ + unsigned int fpsr; + + _FPU_GETS (fpsr); + + /* Clear the relevant bits, FWE is preserved. */ + fpsr &= ~excepts; + + _FPU_SETS (fpsr); + + return 0; +} +libm_hidden_def (feclearexcept) diff --git a/sysdeps/arc/fpu/fegetenv.c b/sysdeps/arc/fpu/fegetenv.c new file mode 100644 index 000000000000..bbb3b477b423 --- /dev/null +++ b/sysdeps/arc/fpu/fegetenv.c @@ -0,0 +1,37 @@ +/* Store current floating-point environment. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 + +int +__fegetenv (fenv_t *envp) +{ + unsigned int fpcr; + unsigned int fpsr; + + _FPU_GETCW (fpcr); + _FPU_GETS (fpsr); + envp->__fpcr = fpcr; + envp->__fpsr = fpsr; + + return 0; +} +libm_hidden_def (__fegetenv) +weak_alias (__fegetenv, fegetenv) +libm_hidden_weak (fegetenv) diff --git a/sysdeps/arc/fpu/fegetmode.c b/sysdeps/arc/fpu/fegetmode.c new file mode 100644 index 000000000000..f02c9119f222 --- /dev/null +++ b/sysdeps/arc/fpu/fegetmode.c @@ -0,0 +1,31 @@ +/* Store current floating-point control modes. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 + +int +fegetmode (femode_t *modep) +{ + unsigned int fpcr; + + _FPU_GETCW (fpcr); + *modep = fpcr; + + return 0; +} diff --git a/sysdeps/arc/fpu/fegetround.c b/sysdeps/arc/fpu/fegetround.c new file mode 100644 index 000000000000..c5496bcbf7b4 --- /dev/null +++ b/sysdeps/arc/fpu/fegetround.c @@ -0,0 +1,32 @@ +/* Return current rounding direction. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 + +int +__fegetround (void) +{ + unsigned int fpcr; + _FPU_GETCW (fpcr); + + return (fpcr >> __FPU_RND_SHIFT) & __FPU_RND_MASK; +} +libm_hidden_def (__fegetround) +weak_alias (__fegetround, fegetround) +libm_hidden_weak (fegetround) diff --git a/sysdeps/arc/fpu/feholdexcpt.c b/sysdeps/arc/fpu/feholdexcpt.c new file mode 100644 index 000000000000..59527ee25a66 --- /dev/null +++ b/sysdeps/arc/fpu/feholdexcpt.c @@ -0,0 +1,43 @@ +/* Store current floating-point environment and clear exceptions. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 + +int +__feholdexcept (fenv_t *envp) +{ + unsigned int fpcr; + unsigned int fpsr; + + _FPU_GETCW (fpcr); + _FPU_GETS (fpsr); + + envp->__fpcr = fpcr; + envp->__fpsr = fpsr; + + fpsr &= ~FE_ALL_EXCEPT; + + _FPU_SETCW (fpcr); + _FPU_SETS (fpsr); + + return 0; +} +libm_hidden_def (__feholdexcept) +weak_alias (__feholdexcept, feholdexcept) +libm_hidden_weak (feholdexcept) diff --git a/sysdeps/arc/fpu/fesetenv.c b/sysdeps/arc/fpu/fesetenv.c new file mode 100644 index 000000000000..4ef858fc10a9 --- /dev/null +++ b/sysdeps/arc/fpu/fesetenv.c @@ -0,0 +1,48 @@ +/* Install given floating-point environment (doesnot raise exceptions). + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 + +int +__fesetenv (const fenv_t *envp) +{ + unsigned int fpcr; + unsigned int fpsr; + + if (envp == FE_DFL_ENV) + { + fpcr = _FPU_DEFAULT; + fpsr = _FPU_FPSR_DEFAULT; + } + else + { + /* No need to mask out reserved bits as they are IoW. */ + fpcr = envp->__fpcr; + fpsr = envp->__fpsr; + } + + _FPU_SETCW (fpcr); + _FPU_SETS (fpsr); + + /* Success. */ + return 0; +} +libm_hidden_def (__fesetenv) +weak_alias (__fesetenv, fesetenv) +libm_hidden_weak (fesetenv) diff --git a/sysdeps/arc/fpu/fesetexcept.c b/sysdeps/arc/fpu/fesetexcept.c new file mode 100644 index 000000000000..77517d0b25ab --- /dev/null +++ b/sysdeps/arc/fpu/fesetexcept.c @@ -0,0 +1,32 @@ +/* Set given exception flags. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 + +int +fesetexcept (int excepts) +{ + unsigned int fpsr; + + _FPU_GETS (fpsr); + fpsr |= excepts; + _FPU_SETS (fpsr); + + return 0; +} diff --git a/sysdeps/arc/fpu/fesetmode.c b/sysdeps/arc/fpu/fesetmode.c new file mode 100644 index 000000000000..c4ea02d8d15b --- /dev/null +++ b/sysdeps/arc/fpu/fesetmode.c @@ -0,0 +1,40 @@ +/* Install given floating-point control modes. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 + +int +fesetmode (const femode_t *modep) +{ + unsigned int fpcr; + + if (modep == FE_DFL_MODE) + { + fpcr = _FPU_DEFAULT; + } + else + { + /* No need to mask out reserved bits as they are IoW. */ + fpcr = *modep; + } + + _FPU_SETCW (fpcr); + + return 0; +} diff --git a/sysdeps/arc/fpu/fesetround.c b/sysdeps/arc/fpu/fesetround.c new file mode 100644 index 000000000000..701c0b2dcb42 --- /dev/null +++ b/sysdeps/arc/fpu/fesetround.c @@ -0,0 +1,40 @@ +/* Set current rounding direction. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 + +int +__fesetround (int round) +{ + unsigned int fpcr; + + _FPU_GETCW (fpcr); + + if (((fpcr >> __FPU_RND_SHIFT) & __FPU_RND_MASK) != round) + { + fpcr &= ~(__FPU_RND_MASK << __FPU_RND_SHIFT); + fpcr |= (round & __FPU_RND_MASK) << __FPU_RND_SHIFT; + _FPU_SETCW (fpcr); + } + + return 0; +} +libm_hidden_def (__fesetround) +weak_alias (__fesetround, fesetround) +libm_hidden_weak (fesetround) diff --git a/sysdeps/arc/fpu/feupdateenv.c b/sysdeps/arc/fpu/feupdateenv.c new file mode 100644 index 000000000000..c63aefb25463 --- /dev/null +++ b/sysdeps/arc/fpu/feupdateenv.c @@ -0,0 +1,51 @@ +/* Install given floating-point environment and raise exceptions, + without clearing currently raised exceptions. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 + +int +__feupdateenv (const fenv_t *envp) +{ + unsigned int fpcr; + unsigned int fpsr; + + _FPU_GETS (fpsr); + + if (envp == FE_DFL_ENV) + { + fpcr = _FPU_DEFAULT; + } + else + { + fpcr = envp->__fpcr; + + /* currently raised exceptions need to be preserved. */ + fpsr |= envp->__fpsr; + } + + _FPU_SETCW (fpcr); + _FPU_SETS (fpsr); + + /* Success. */ + return 0; +} +libm_hidden_def (__feupdateenv) +weak_alias (__feupdateenv, feupdateenv) +libm_hidden_weak (feupdateenv) diff --git a/sysdeps/arc/fpu/fgetexcptflg.c b/sysdeps/arc/fpu/fgetexcptflg.c new file mode 100644 index 000000000000..a816121fd9b7 --- /dev/null +++ b/sysdeps/arc/fpu/fgetexcptflg.c @@ -0,0 +1,31 @@ +/* Store current representation for exceptions, ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 + +int +fegetexceptflag (fexcept_t *flagp, int excepts) +{ + unsigned int fpsr; + + _FPU_GETS (fpsr); + *flagp = fpsr & excepts; + + return 0; +} diff --git a/sysdeps/arc/fpu/fraiseexcpt.c b/sysdeps/arc/fpu/fraiseexcpt.c new file mode 100644 index 000000000000..067c0607784f --- /dev/null +++ b/sysdeps/arc/fpu/fraiseexcpt.c @@ -0,0 +1,39 @@ +/* Raise given exceptions. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 + +int +__feraiseexcept (int excepts) +{ + unsigned int fpsr; + + /* currently raised exceptions are not cleared. */ + _FPU_GETS (fpsr); + fpsr |= excepts; + + _FPU_SETS (fpsr); + + return 0; +} +libm_hidden_def (__feraiseexcept) +weak_alias (__feraiseexcept, feraiseexcept) +libm_hidden_weak (feraiseexcept) diff --git a/sysdeps/arc/fpu/fsetexcptflg.c b/sysdeps/arc/fpu/fsetexcptflg.c new file mode 100644 index 000000000000..f9e08d504418 --- /dev/null +++ b/sysdeps/arc/fpu/fsetexcptflg.c @@ -0,0 +1,38 @@ +/* Set floating-point environment exception handling, ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 + +int +fesetexceptflag (const fexcept_t *flagp, int excepts) +{ + unsigned int fpsr; + + _FPU_GETS (fpsr); + + /* Clear the bits first. */ + fpsr &= ~excepts; + + /* Now set those bits, copying them over from @flagp. */ + fpsr |= *flagp & excepts; + + _FPU_SETS (fpsr); + + return 0; +} diff --git a/sysdeps/arc/fpu/ftestexcept.c b/sysdeps/arc/fpu/ftestexcept.c new file mode 100644 index 000000000000..bb8ed27ab22b --- /dev/null +++ b/sysdeps/arc/fpu/ftestexcept.c @@ -0,0 +1,33 @@ +/* Test exception in current environment. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 + +int +fetestexcept (int excepts) +{ + unsigned int fpsr; + + _FPU_GETS (fpsr); + + return fpsr & excepts; +} +libm_hidden_def (fetestexcept) diff --git a/sysdeps/arc/fpu/math-use-builtins-fma.h b/sysdeps/arc/fpu/math-use-builtins-fma.h new file mode 100644 index 000000000000..eede75aa41be --- /dev/null +++ b/sysdeps/arc/fpu/math-use-builtins-fma.h @@ -0,0 +1,4 @@ +#define USE_FMA_BUILTIN 1 +#define USE_FMAF_BUILTIN 1 +#define USE_FMAL_BUILTIN 0 +#define USE_FMAF128_BUILTIN 0 diff --git a/sysdeps/arc/fpu/math-use-builtins-sqrt.h b/sysdeps/arc/fpu/math-use-builtins-sqrt.h new file mode 100644 index 000000000000..e94c915ba66a --- /dev/null +++ b/sysdeps/arc/fpu/math-use-builtins-sqrt.h @@ -0,0 +1,4 @@ +#define USE_SQRT_BUILTIN 1 +#define USE_SQRTF_BUILTIN 1 +#define USE_SQRTL_BUILTIN 0 +#define USE_SQRTF128_BUILTIN 0 diff --git a/sysdeps/arc/fpu_control.h b/sysdeps/arc/fpu_control.h new file mode 100644 index 000000000000..38f167530f48 --- /dev/null +++ b/sysdeps/arc/fpu_control.h @@ -0,0 +1,106 @@ +/* FPU control word bits. ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 _FPU_CONTROL_H +#define _FPU_CONTROL_H + +/* ARC FPU control register bits. + + [ 0] -> IVE: Enable invalid operation exception. + if 0, soft exception: status register IV flag set. + if 1, hardware exception trap (not supported in Linux yet). + [ 1] -> DZE: Enable division by zero exception. + if 0, soft exception: status register IV flag set. + if 1, hardware exception: (not supported in Linux yet). + [9:8] -> RM: Rounding Mode: + 00 - Rounding toward zero. + 01 - Rounding to nearest (default). + 10 - Rounding (up) toward plus infinity. + 11 - Rounding (down)toward minus infinity. + + ARC FPU status register bits. + + [ 0] -> IV: flag invalid operation. + [ 1] -> DZ: flag division by zero. + [ 2] -> OV: flag Overflow operation. + [ 3] -> UV: flag Underflow operation. + [ 4] -> IX: flag Inexact operation. + [31] -> FWE: Flag Write Enable. + If 1, above flags writable explicitly (clearing), + else IoW and only writable indirectly via bits [12:7]. */ + +#include + +#if !defined(__ARC_FPU_SP__) && !defined(__ARC_FPU_DP__) + +# define _FPU_RESERVED 0xffffffff +# define _FPU_DEFAULT 0x00000000 +typedef unsigned int fpu_control_t; +# define _FPU_GETCW(cw) (cw) = 0 +# define _FPU_SETCW(cw) (void) (cw) +# define _FPU_GETS(cw) (cw) = 0 +# define _FPU_SETS(cw) (void) (cw) +extern fpu_control_t __fpu_control; + +#else + +#define _FPU_RESERVED 0 + +/* The fdlibm code requires strict IEEE double precision arithmetic, + and no interrupts for exceptions, rounding to nearest. + So only RM set to b'01. */ +# define _FPU_DEFAULT 0x00000100 + +/* Actually default needs to have FWE bit as 1 but that is already + ingrained into _FPU_SETS macro below. */ +#define _FPU_FPSR_DEFAULT 0x00000000 + +#define __FPU_RND_SHIFT 8 +#define __FPU_RND_MASK 0x3 + +/* Type of the control word. */ +typedef unsigned int fpu_control_t; + +/* Macros for accessing the hardware control word. */ +# define _FPU_GETCW(cw) __asm__ volatile ("lr %0, [0x300]" : "=r" (cw)) +# define _FPU_SETCW(cw) __asm__ volatile ("sr %0, [0x300]" : : "r" (cw)) + +/* Macros for accessing the hardware status word. + FWE bit is special as it controls if actual status bits could be wrritten + explicitly (other than FPU instructions). We handle it here to keep the + callers agnostic of it: + - clear it out when reporting status bits + - always set it when changing status bits. */ +# define _FPU_GETS(cw) \ + __asm__ volatile ("lr %0, [0x301] \r\n" \ + "bclr %0, %0, 31 \r\n" \ + : "=r" (cw)) + +# define _FPU_SETS(cw) \ + do { \ + unsigned int __tmp = 0x80000000 | (cw); \ + __asm__ volatile ("sr %0, [0x301] \r\n" \ + : : "r" (__tmp)); \ + } while (0) + +/* Default control word set at startup. */ +extern fpu_control_t __fpu_control; + +#endif + +#endif /* fpu_control.h */ diff --git a/sysdeps/arc/get-rounding-mode.h b/sysdeps/arc/get-rounding-mode.h new file mode 100644 index 000000000000..15173e37aa4f --- /dev/null +++ b/sysdeps/arc/get-rounding-mode.h @@ -0,0 +1,38 @@ +/* Determine floating-point rounding mode within libc. ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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_GET_ROUNDING_MODE_H +#define _ARC_GET_ROUNDING_MODE_H 1 + +#include +#include + +static inline int +get_rounding_mode (void) +{ +#if defined(__ARC_FPU_SP__) || defined(__ARC_FPU_DP__) + unsigned int fpcr; + _FPU_GETCW (fpcr); + + return (fpcr >> __FPU_RND_SHIFT) & __FPU_RND_MASK; +#else + return FE_TONEAREST; +#endif +} + +#endif /* get-rounding-mode.h */ diff --git a/sysdeps/arc/math-tests-trap.h b/sysdeps/arc/math-tests-trap.h new file mode 100644 index 000000000000..08b16f57976a --- /dev/null +++ b/sysdeps/arc/math-tests-trap.h @@ -0,0 +1,27 @@ +/* Configuration for math tests: support for enabling exception traps. + ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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_MATH_TESTS_TRAP_H +#define ARC_MATH_TESTS_TRAP_H 1 + +/* Trapping exceptions are optional on ARC + and not supported in Linux kernel just yet. */ +#define EXCEPTION_ENABLE_SUPPORTED(EXCEPT) ((EXCEPT) == 0) + +#endif /* math-tests-trap.h. */ diff --git a/sysdeps/arc/tininess.h b/sysdeps/arc/tininess.h new file mode 100644 index 000000000000..1db37790f881 --- /dev/null +++ b/sysdeps/arc/tininess.h @@ -0,0 +1 @@ +#define TININESS_AFTER_ROUNDING 1 From patchwork Fri Jul 10 23:38:04 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vineet Gupta X-Patchwork-Id: 1327181 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2001:8b0:10b:1231::1; helo=merlin.infradead.org; envelope-from=linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=synopsys.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=merlin.20170209 header.b=ogDgpWkV; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=synopsys.com header.i=@synopsys.com header.a=rsa-sha256 header.s=mail header.b=R7RqqkfE; dkim-atps=neutral Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:8b0:10b:1231::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4B3Ty648cmz9sSJ for ; Sat, 11 Jul 2020 09:38:38 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=V257k/YFWqHed5jBH9PjJ19JhW0ssP6lmOcFPcHf8aE=; b=ogDgpWkVLFW8ZWPB3ncxoC7Er N62p4TNI9uJcfocG27JS47HA8ryk/2SVm8h+FEQLmZIIALCGtL/u1bvdRJVUEsesRZXeR3C39lzAB 9FF7/277zrQt2AX04CDugO2608YvCol2Wi8UUtU6jbDHrSgshvB9/qBQJqRyRndtrRoKze0mvoEUC sJRsBALNmMPNEuMWY/zD56h7YCLiydAPnOz60olCmTsuX5OGznIuCYOT1e9k70yHF0zbhroya+usu kwOG5UFRw8rE1egc3/nPeP+Q8ZSYFfRz0N9VRtTM4zlA5wPfaPMKuxSlKUHPHXT2JOmBuLfTNE/eY 35ZYZqXUg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2bC-0008Gn-PS; Fri, 10 Jul 2020 23:38:34 +0000 Received: from smtprelay-out1.synopsys.com ([149.117.87.133]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2au-00088X-9s for linux-snps-arc@lists.infradead.org; Fri, 10 Jul 2020 23:38:30 +0000 Received: from mailhost.synopsys.com (sv2-mailhost2.synopsys.com [10.205.2.134]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id 95A04C04BE; Fri, 10 Jul 2020 23:38:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1594424295; bh=gnJxLnmfVXxfLqcIew8ROPYnIbwr55Gov4nqa+0DaxE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=R7RqqkfEsZb/YlpRbVbSsbAfkpQoTLxbUIJ/ZHHrGZ0pj2CImwHja/MipB9tMw4BZ suGkdYHt9nK12iXtBmb8fW2vTiscu3mjwahPo6UYvu5CdSBMs3fZrqvc44T2lyKGol SSnvXJgYPFeNGEveoOVSlrNOVZoy/n4x7mrWnWUgbu+9gfIKkkYwsqnChiQEkOTkmZ QTPa2Ma+DQp34c6FjCLlSdarDgszikeVWd441mI12zW6YaCkUTQKroCArFK1+a6pHH ZRQn11iPRZe8ly8Qjt6FTi9eq6uUOVph3hRD7GcDdj1Cvuyv8dfPcQO+gVWs7nOZ3M 96BgKmqOHSXmw== Received: from vineetg-Latitude-7400.internal.synopsys.com (unknown [10.13.183.89]) by mailhost.synopsys.com (Postfix) with ESMTP id 385DFA005A; Fri, 10 Jul 2020 23:38:14 +0000 (UTC) X-SNPS-Relay: synopsys.com From: Vineet Gupta To: libc-alpha@sourceware.org Subject: [COMMITTED 07/13] ARC: Linux Syscall Interface Date: Fri, 10 Jul 2020 16:38:04 -0700 Message-Id: <20200710233810.18720-7-vgupta@synopsys.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200710233810.18720-1-vgupta@synopsys.com> References: <20200710233810.18720-1-vgupta@synopsys.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200710_193816_790839_83888CE0 X-CRM114-Status: GOOD ( 16.34 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [149.117.87.133 listed in wl.mailspike.net] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-BeenThere: linux-snps-arc@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on Synopsys ARC Processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Vineet Gupta , linux-snps-arc@lists.infradead.org, Adhemerval Zanella Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Reviewed-by: Adhemerval Zanella --- sysdeps/unix/sysv/linux/arc/arch-syscall.h | 298 ++++++++++++++++++ sysdeps/unix/sysv/linux/arc/bits/timesize.h | 21 ++ sysdeps/unix/sysv/linux/arc/clone.S | 93 ++++++ .../unix/sysv/linux/arc/fixup-asm-unistd.h | 46 +++ sysdeps/unix/sysv/linux/arc/jmp_buf-macros.h | 6 + sysdeps/unix/sysv/linux/arc/kernel-features.h | 27 ++ sysdeps/unix/sysv/linux/arc/kernel_stat.h | 26 ++ sysdeps/unix/sysv/linux/arc/mmap_internal.h | 27 ++ sysdeps/unix/sysv/linux/arc/sigaction.c | 31 ++ sysdeps/unix/sysv/linux/arc/sigrestorer.S | 29 ++ sysdeps/unix/sysv/linux/arc/syscall.S | 33 ++ sysdeps/unix/sysv/linux/arc/syscalls.list | 3 + sysdeps/unix/sysv/linux/arc/sysdep.c | 33 ++ sysdeps/unix/sysv/linux/arc/sysdep.h | 226 +++++++++++++ sysdeps/unix/sysv/linux/arc/vfork.S | 42 +++ 15 files changed, 941 insertions(+) create mode 100644 sysdeps/unix/sysv/linux/arc/arch-syscall.h create mode 100644 sysdeps/unix/sysv/linux/arc/bits/timesize.h create mode 100644 sysdeps/unix/sysv/linux/arc/clone.S create mode 100644 sysdeps/unix/sysv/linux/arc/fixup-asm-unistd.h create mode 100644 sysdeps/unix/sysv/linux/arc/jmp_buf-macros.h create mode 100644 sysdeps/unix/sysv/linux/arc/kernel-features.h create mode 100644 sysdeps/unix/sysv/linux/arc/kernel_stat.h create mode 100644 sysdeps/unix/sysv/linux/arc/mmap_internal.h create mode 100644 sysdeps/unix/sysv/linux/arc/sigaction.c create mode 100644 sysdeps/unix/sysv/linux/arc/sigrestorer.S create mode 100644 sysdeps/unix/sysv/linux/arc/syscall.S create mode 100644 sysdeps/unix/sysv/linux/arc/syscalls.list create mode 100644 sysdeps/unix/sysv/linux/arc/sysdep.c create mode 100644 sysdeps/unix/sysv/linux/arc/sysdep.h create mode 100644 sysdeps/unix/sysv/linux/arc/vfork.S diff --git a/sysdeps/unix/sysv/linux/arc/arch-syscall.h b/sysdeps/unix/sysv/linux/arc/arch-syscall.h new file mode 100644 index 000000000000..58cd927da81b --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/arch-syscall.h @@ -0,0 +1,298 @@ +/* AUTOGENERATED by update-syscall-lists.py. */ +#define __NR_accept 202 +#define __NR_accept4 242 +#define __NR_acct 89 +#define __NR_add_key 217 +#define __NR_adjtimex 171 +#define __NR_arc_gettls 246 +#define __NR_arc_settls 245 +#define __NR_arc_usr_cmpxchg 248 +#define __NR_bind 200 +#define __NR_bpf 280 +#define __NR_brk 214 +#define __NR_cacheflush 244 +#define __NR_capget 90 +#define __NR_capset 91 +#define __NR_chdir 49 +#define __NR_chroot 51 +#define __NR_clock_adjtime64 405 +#define __NR_clock_getres_time64 406 +#define __NR_clock_gettime64 403 +#define __NR_clock_nanosleep_time64 407 +#define __NR_clock_settime64 404 +#define __NR_clone 220 +#define __NR_clone3 435 +#define __NR_close 57 +#define __NR_connect 203 +#define __NR_copy_file_range 285 +#define __NR_delete_module 106 +#define __NR_dup 23 +#define __NR_dup3 24 +#define __NR_epoll_create1 20 +#define __NR_epoll_ctl 21 +#define __NR_epoll_pwait 22 +#define __NR_eventfd2 19 +#define __NR_execve 221 +#define __NR_execveat 281 +#define __NR_exit 93 +#define __NR_exit_group 94 +#define __NR_faccessat 48 +#define __NR_fadvise64_64 223 +#define __NR_fallocate 47 +#define __NR_fanotify_init 262 +#define __NR_fanotify_mark 263 +#define __NR_fchdir 50 +#define __NR_fchmod 52 +#define __NR_fchmodat 53 +#define __NR_fchown 55 +#define __NR_fchownat 54 +#define __NR_fcntl64 25 +#define __NR_fdatasync 83 +#define __NR_fgetxattr 10 +#define __NR_finit_module 273 +#define __NR_flistxattr 13 +#define __NR_flock 32 +#define __NR_fremovexattr 16 +#define __NR_fsconfig 431 +#define __NR_fsetxattr 7 +#define __NR_fsmount 432 +#define __NR_fsopen 430 +#define __NR_fspick 433 +#define __NR_fstatfs64 44 +#define __NR_fsync 82 +#define __NR_ftruncate64 46 +#define __NR_futex_time64 422 +#define __NR_get_mempolicy 236 +#define __NR_get_robust_list 100 +#define __NR_getcpu 168 +#define __NR_getcwd 17 +#define __NR_getdents64 61 +#define __NR_getegid 177 +#define __NR_geteuid 175 +#define __NR_getgid 176 +#define __NR_getgroups 158 +#define __NR_getitimer 102 +#define __NR_getpeername 205 +#define __NR_getpgid 155 +#define __NR_getpid 172 +#define __NR_getppid 173 +#define __NR_getpriority 141 +#define __NR_getrandom 278 +#define __NR_getresgid 150 +#define __NR_getresuid 148 +#define __NR_getrlimit 163 +#define __NR_getrusage 165 +#define __NR_getsid 156 +#define __NR_getsockname 204 +#define __NR_getsockopt 209 +#define __NR_gettid 178 +#define __NR_gettimeofday 169 +#define __NR_getuid 174 +#define __NR_getxattr 8 +#define __NR_init_module 105 +#define __NR_inotify_add_watch 27 +#define __NR_inotify_init1 26 +#define __NR_inotify_rm_watch 28 +#define __NR_io_cancel 3 +#define __NR_io_destroy 1 +#define __NR_io_getevents 4 +#define __NR_io_pgetevents 292 +#define __NR_io_pgetevents_time64 416 +#define __NR_io_setup 0 +#define __NR_io_submit 2 +#define __NR_io_uring_enter 426 +#define __NR_io_uring_register 427 +#define __NR_io_uring_setup 425 +#define __NR_ioctl 29 +#define __NR_ioprio_get 31 +#define __NR_ioprio_set 30 +#define __NR_kcmp 272 +#define __NR_kexec_file_load 294 +#define __NR_kexec_load 104 +#define __NR_keyctl 219 +#define __NR_kill 129 +#define __NR_lgetxattr 9 +#define __NR_linkat 37 +#define __NR_listen 201 +#define __NR_listxattr 11 +#define __NR_llistxattr 12 +#define __NR_llseek 62 +#define __NR_lookup_dcookie 18 +#define __NR_lremovexattr 15 +#define __NR_lsetxattr 6 +#define __NR_madvise 233 +#define __NR_mbind 235 +#define __NR_membarrier 283 +#define __NR_memfd_create 279 +#define __NR_migrate_pages 238 +#define __NR_mincore 232 +#define __NR_mkdirat 34 +#define __NR_mknodat 33 +#define __NR_mlock 228 +#define __NR_mlock2 284 +#define __NR_mlockall 230 +#define __NR_mmap2 222 +#define __NR_mount 40 +#define __NR_move_mount 429 +#define __NR_move_pages 239 +#define __NR_mprotect 226 +#define __NR_mq_getsetattr 185 +#define __NR_mq_notify 184 +#define __NR_mq_open 180 +#define __NR_mq_timedreceive_time64 419 +#define __NR_mq_timedsend_time64 418 +#define __NR_mq_unlink 181 +#define __NR_mremap 216 +#define __NR_msgctl 187 +#define __NR_msgget 186 +#define __NR_msgrcv 188 +#define __NR_msgsnd 189 +#define __NR_msync 227 +#define __NR_munlock 229 +#define __NR_munlockall 231 +#define __NR_munmap 215 +#define __NR_name_to_handle_at 264 +#define __NR_nanosleep 101 +#define __NR_nfsservctl 42 +#define __NR_open_by_handle_at 265 +#define __NR_open_tree 428 +#define __NR_openat 56 +#define __NR_openat2 437 +#define __NR_perf_event_open 241 +#define __NR_personality 92 +#define __NR_pidfd_getfd 438 +#define __NR_pidfd_open 434 +#define __NR_pidfd_send_signal 424 +#define __NR_pipe2 59 +#define __NR_pivot_root 41 +#define __NR_pkey_alloc 289 +#define __NR_pkey_free 290 +#define __NR_pkey_mprotect 288 +#define __NR_ppoll_time64 414 +#define __NR_prctl 167 +#define __NR_pread64 67 +#define __NR_preadv 69 +#define __NR_preadv2 286 +#define __NR_prlimit64 261 +#define __NR_process_vm_readv 270 +#define __NR_process_vm_writev 271 +#define __NR_pselect6_time64 413 +#define __NR_ptrace 117 +#define __NR_pwrite64 68 +#define __NR_pwritev 70 +#define __NR_pwritev2 287 +#define __NR_quotactl 60 +#define __NR_read 63 +#define __NR_readahead 213 +#define __NR_readlinkat 78 +#define __NR_readv 65 +#define __NR_reboot 142 +#define __NR_recvfrom 207 +#define __NR_recvmmsg_time64 417 +#define __NR_recvmsg 212 +#define __NR_remap_file_pages 234 +#define __NR_removexattr 14 +#define __NR_renameat 38 +#define __NR_renameat2 276 +#define __NR_request_key 218 +#define __NR_restart_syscall 128 +#define __NR_rseq 293 +#define __NR_rt_sigaction 134 +#define __NR_rt_sigpending 136 +#define __NR_rt_sigprocmask 135 +#define __NR_rt_sigqueueinfo 138 +#define __NR_rt_sigreturn 139 +#define __NR_rt_sigsuspend 133 +#define __NR_rt_sigtimedwait_time64 421 +#define __NR_rt_tgsigqueueinfo 240 +#define __NR_sched_get_priority_max 125 +#define __NR_sched_get_priority_min 126 +#define __NR_sched_getaffinity 123 +#define __NR_sched_getattr 275 +#define __NR_sched_getparam 121 +#define __NR_sched_getscheduler 120 +#define __NR_sched_rr_get_interval_time64 423 +#define __NR_sched_setaffinity 122 +#define __NR_sched_setattr 274 +#define __NR_sched_setparam 118 +#define __NR_sched_setscheduler 119 +#define __NR_sched_yield 124 +#define __NR_seccomp 277 +#define __NR_semctl 191 +#define __NR_semget 190 +#define __NR_semop 193 +#define __NR_semtimedop_time64 420 +#define __NR_sendfile64 71 +#define __NR_sendmmsg 269 +#define __NR_sendmsg 211 +#define __NR_sendto 206 +#define __NR_set_mempolicy 237 +#define __NR_set_robust_list 99 +#define __NR_set_tid_address 96 +#define __NR_setdomainname 162 +#define __NR_setfsgid 152 +#define __NR_setfsuid 151 +#define __NR_setgid 144 +#define __NR_setgroups 159 +#define __NR_sethostname 161 +#define __NR_setitimer 103 +#define __NR_setns 268 +#define __NR_setpgid 154 +#define __NR_setpriority 140 +#define __NR_setregid 143 +#define __NR_setresgid 149 +#define __NR_setresuid 147 +#define __NR_setreuid 145 +#define __NR_setrlimit 164 +#define __NR_setsid 157 +#define __NR_setsockopt 208 +#define __NR_settimeofday 170 +#define __NR_setuid 146 +#define __NR_setxattr 5 +#define __NR_shmat 196 +#define __NR_shmctl 195 +#define __NR_shmdt 197 +#define __NR_shmget 194 +#define __NR_shutdown 210 +#define __NR_sigaltstack 132 +#define __NR_signalfd4 74 +#define __NR_socket 198 +#define __NR_socketpair 199 +#define __NR_splice 76 +#define __NR_statfs64 43 +#define __NR_statx 291 +#define __NR_swapoff 225 +#define __NR_swapon 224 +#define __NR_symlinkat 36 +#define __NR_sync 81 +#define __NR_sync_file_range 84 +#define __NR_syncfs 267 +#define __NR_sysfs 247 +#define __NR_sysinfo 179 +#define __NR_syslog 116 +#define __NR_tee 77 +#define __NR_tgkill 131 +#define __NR_timer_create 107 +#define __NR_timer_delete 111 +#define __NR_timer_getoverrun 109 +#define __NR_timer_gettime64 408 +#define __NR_timer_settime64 409 +#define __NR_timerfd_create 85 +#define __NR_timerfd_gettime64 410 +#define __NR_timerfd_settime64 411 +#define __NR_times 153 +#define __NR_tkill 130 +#define __NR_truncate64 45 +#define __NR_umask 166 +#define __NR_umount2 39 +#define __NR_uname 160 +#define __NR_unlinkat 35 +#define __NR_unshare 97 +#define __NR_userfaultfd 282 +#define __NR_utimensat_time64 412 +#define __NR_vhangup 58 +#define __NR_vmsplice 75 +#define __NR_wait4 260 +#define __NR_waitid 95 +#define __NR_write 64 +#define __NR_writev 66 diff --git a/sysdeps/unix/sysv/linux/arc/bits/timesize.h b/sysdeps/unix/sysv/linux/arc/bits/timesize.h new file mode 100644 index 000000000000..bf44f09f7619 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/bits/timesize.h @@ -0,0 +1,21 @@ +/* Bit size of the time_t type at glibc build time, general case. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 __TIMESIZE 64 diff --git a/sysdeps/unix/sysv/linux/arc/clone.S b/sysdeps/unix/sysv/linux/arc/clone.S new file mode 100644 index 000000000000..f14a5d336309 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/clone.S @@ -0,0 +1,93 @@ +/* clone() implementation for ARC. + Copyright (C) 2020 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 jumps off to @fn with @arg as argument + TP register already set by kernel. */ + 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/fixup-asm-unistd.h b/sysdeps/unix/sysv/linux/arc/fixup-asm-unistd.h new file mode 100644 index 000000000000..d353ea045dd8 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/fixup-asm-unistd.h @@ -0,0 +1,46 @@ +/* Regularize definitions. ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +/* Adjustments to ARC asm-generic syscall ABI (3.9 kernel) for 64-bit time_t + support. */ + +/* fstat64 and fstatat64 need to be replaced with statx. */ + +#undef __NR_fstat64 +#undef __NR_fstatat64 + +/* Elide all other 32-bit time_t syscalls. */ + +# undef __NR_clock_adjtime +# undef __NR_clock_getres +# undef __NR_clock_gettime +# undef __NR_clock_nanosleep +# undef __NR_clock_settime +# undef __NR_futex +# undef __NR_mq_timedreceive +# undef __NR_mq_timedsend +# undef __NR_ppoll +# undef __NR_pselect6 +# undef __NR_recvmmsg +# undef __NR_rt_sigtimedwait +# undef __NR_sched_rr_get_interval +# undef __NR_semtimedop +# undef __NR_timer_gettime +# undef __NR_timer_settime +# undef __NR_timerfd_gettime +# undef __NR_timerfd_settime +# undef __NR_utimensat diff --git a/sysdeps/unix/sysv/linux/arc/jmp_buf-macros.h b/sysdeps/unix/sysv/linux/arc/jmp_buf-macros.h new file mode 100644 index 000000000000..296f3197ee31 --- /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 000000000000..0a5c9e21fbf2 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/kernel-features.h @@ -0,0 +1,27 @@ +/* Set flags signalling availability of kernel features based on given + kernel version number. + + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 5.1 (64-bit time, offsets), + although the asm-generic ABI is from 3.9 (when Linux port was merged). */ + +#include_next + +#undef __ASSUME_CLONE_DEFAULT +#define __ASSUME_CLONE_BACKWARDS 1 diff --git a/sysdeps/unix/sysv/linux/arc/kernel_stat.h b/sysdeps/unix/sysv/linux/arc/kernel_stat.h new file mode 100644 index 000000000000..8fdd86b9e843 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/kernel_stat.h @@ -0,0 +1,26 @@ +/* Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 + +/* Needed to elide the itemized copy code in common xstatconv.c. */ +#define STAT_IS_KERNEL_STAT 1 + +/* Nice side-effect of 64-bit time_t switch is these are same. */ +#define XSTAT_IS_XSTAT64 1 + +#define STATFS_IS_STATFS64 0 diff --git a/sysdeps/unix/sysv/linux/arc/mmap_internal.h b/sysdeps/unix/sysv/linux/arc/mmap_internal.h new file mode 100644 index 000000000000..5293d670adaa --- /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) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 is default but determine the shift dynamically with getpagesize. */ +#define MMAP2_PAGE_UNIT -1 + +#include_next + +#endif diff --git a/sysdeps/unix/sysv/linux/arc/sigaction.c b/sysdeps/unix/sysv/linux/arc/sigaction.c new file mode 100644 index 000000000000..dd590ecb6dd7 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/sigaction.c @@ -0,0 +1,31 @@ +/* ARC specific sigaction. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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/sigrestorer.S b/sysdeps/unix/sysv/linux/arc/sigrestorer.S new file mode 100644 index 000000000000..eaabef505ec2 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/sigrestorer.S @@ -0,0 +1,29 @@ +/* Default sigreturn stub for ARC Linux. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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/syscall.S b/sysdeps/unix/sysv/linux/arc/syscall.S new file mode 100644 index 000000000000..6227dbf49917 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/syscall.S @@ -0,0 +1,33 @@ +/* syscall - indirect system call. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 + mov_s r4, r5 + mov_s r5, r6 + + ARC_TRAP_INSN + brhi r0, -4096, L (call_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 000000000000..d0ef5977ee06 --- /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 000000000000..f33d64679886 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/sysdep.c @@ -0,0 +1,33 @@ +/* ARC wrapper for setting errno. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 handlers land here to avoid generated code bloat due to + GOT reference to errno_location or it's equivalent. */ +long int +__syscall_error (long int err_no) +{ + __set_errno (-err_no); + return -1; +} + +#if IS_IN (libc) +hidden_def (__syscall_error) +#endif diff --git a/sysdeps/unix/sysv/linux/arc/sysdep.h b/sysdeps/unix/sysv/linux/arc/sysdep.h new file mode 100644 index 000000000000..8465a2f62380 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/sysdep.h @@ -0,0 +1,226 @@ +/* Assembler macros for ARC. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 + +/* "workarounds" for generic code needing to handle 64-bit time_t. */ + +/* Fix sysdeps/unix/sysv/linux/clock_getcpuclockid.c. */ +#define __NR_clock_getres __NR_clock_getres_time64 +/* Fix sysdeps/nptl/lowlevellock-futex.h. */ +#define __NR_futex __NR_futex_time64 +/* Fix sysdeps/unix/sysv/linux/pause.c. */ +#define __NR_ppoll __NR_ppoll_time64 +/* Fix sysdeps/unix/sysv/linux/select.c. */ +#define __NR_pselect6 __NR_pselect6_time64 +/* Fix sysdeps/unix/sysv/linux/recvmmsg.c. */ +#define __NR_recvmmsg __NR_recvmmsg_time64 +/* Fix sysdeps/unix/sysv/linux/sigtimedwait.c. */ +#define __NR_rt_sigtimedwait __NR_rt_sigtimedwait_time64 +/* Fix sysdeps/unix/sysv/linux/semtimedop.c. */ +#define __NR_semtimedop __NR_semtimedop_time64 +/* Hack sysdeps/unix/sysv/linux/generic/utimes.c. */ +#define __NR_utimensat __NR_utimensat_time64 + +/* 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, -4096, L (call_syscall_err) ASM_LINE_SEP + +# define ret j_s [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 \ +L (call_syscall_err): ASM_LINE_SEP \ + push_s blink 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 \ + pop_s blink ASM_LINE_SEP \ + cfi_adjust_cfa_offset (-4) ASM_LINE_SEP \ + cfi_restore (blink) ASM_LINE_SEP \ + j_s [blink] + +# define DO_CALL(syscall_name, args) \ + mov r8, __NR_##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 + +# if IS_IN (libc) +extern long int __syscall_error (long int); +hidden_proto (__syscall_error) +# endif + +# define ARC_TRAP_INSN "trap_s 0 \n\t" + +# undef INTERNAL_SYSCALL_NCS +# define INTERNAL_SYSCALL_NCS(number, nr_args, args...) \ + ({ \ + /* Per ABI, r0 is 1st arg and return reg. */ \ + register long int __ret __asm__("r0"); \ + register long int _sys_num __asm__("r8"); \ + \ + LOAD_ARGS_##nr_args (number, args) \ + \ + __asm__ volatile ( \ + ARC_TRAP_INSN \ + : "+r" (__ret) \ + : "r"(_sys_num) ASM_ARGS_##nr_args \ + : "memory"); \ + \ + __ret; }) + +# undef INTERNAL_SYSCALL +# define INTERNAL_SYSCALL(name, nr, args...) \ + INTERNAL_SYSCALL_NCS(__NR_##name, nr, args) + +/* 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 = (long int) (nm); + +# define LOAD_ARGS_1(nm, arg1) \ + __ret = (long 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) \ + long int _tmp2 = (long int) (arg2); \ + LOAD_ARGS_1 (nm, arg1) \ + register long int _arg2 __asm__ ("r1") = _tmp2; + +# define LOAD_ARGS_3(nm, arg1, arg2, arg3) \ + long int _tmp3 = (long int) (arg3); \ + LOAD_ARGS_2 (nm, arg1, arg2) \ + register long int _arg3 __asm__ ("r2") = _tmp3; + +#define LOAD_ARGS_4(nm, arg1, arg2, arg3, arg4) \ + long int _tmp4 = (long int) (arg4); \ + LOAD_ARGS_3 (nm, arg1, arg2, arg3) \ + register long int _arg4 __asm__ ("r3") = _tmp4; + +# define LOAD_ARGS_5(nm, arg1, arg2, arg3, arg4, arg5) \ + long int _tmp5 = (long int) (arg5); \ + LOAD_ARGS_4 (nm, arg1, arg2, arg3, arg4) \ + register long int _arg5 __asm__ ("r4") = _tmp5; + +# define LOAD_ARGS_6(nm, arg1, arg2, arg3, arg4, arg5, arg6)\ + long int _tmp6 = (long int) (arg6); \ + LOAD_ARGS_5 (nm, arg1, arg2, arg3, arg4, arg5) \ + register long int _arg6 __asm__ ("r5") = _tmp6; + +# define LOAD_ARGS_7(nm, arg1, arg2, arg3, arg4, arg5, arg6, arg7)\ + long int _tmp7 = (int) (arg7); \ + LOAD_ARGS_6 (nm, arg1, arg2, arg3, arg4, arg5, arg6) \ + register long int _arg7 __asm__ ("r6") = _tmp7; + +/* 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/vfork.S b/sysdeps/unix/sysv/linux/arc/vfork.S new file mode 100644 index 000000000000..4f12b9fccfab --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/vfork.S @@ -0,0 +1,42 @@ +/* vfork for ARC Linux. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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) From patchwork Fri Jul 10 23:38:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vineet Gupta X-Patchwork-Id: 1327175 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2001:8b0:10b:1231::1; helo=merlin.infradead.org; envelope-from=linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=synopsys.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=merlin.20170209 header.b=vJ9hB6It; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=synopsys.com header.i=@synopsys.com header.a=rsa-sha256 header.s=mail header.b=L3fWLFQe; dkim-atps=neutral Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:8b0:10b:1231::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4B3Txz3cGFz9sRW for ; Sat, 11 Jul 2020 09:38:31 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=5Kj6kkmSZ2KLhfPkiXAzhYXlAwKrwy7/9x02xo2ZzO8=; b=vJ9hB6ItVs4uFYMKEbhDQMBeN hdtbKc4psNYCn/MubyGukcxpGlUkEf+q5mLDfeeEFIlEtvryCitrkLgiewpdragzAdjx7E+FlYp1w egFUxJV+nns5QV/2qScQ+E8qSAi5nY6G71zkVEdvLSdjtDghKydTsBkEquKFyita+8tnxVRNHEWaz 4sBfWwEc+SlC6RXH3J+/ki9W5Yhj1kQNHifvC4DNAI5Rgw0Og8fqYkxfbZG3VMDjp93JM5PHrMPYn W5GAfWLbmNMS4TEYujFhcEePXhuRilp3c/39uhy29W38VUQhsxiocLKbT6NYXvDI5PTNy7254IwIf 3hBnwBGYA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2b5-0008E6-Mi; Fri, 10 Jul 2020 23:38:27 +0000 Received: from smtprelay-out1.synopsys.com ([149.117.73.133]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2au-00088Z-8q for linux-snps-arc@lists.infradead.org; Fri, 10 Jul 2020 23:38:24 +0000 Received: from mailhost.synopsys.com (sv2-mailhost2.synopsys.com [10.205.2.134]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id AFBB440A39; Fri, 10 Jul 2020 23:38:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1594424295; bh=T2yNBraO/be75OPYUiyvimpHjftdhVA5f/8eGkG6Adw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=L3fWLFQeifrqpdYGu2W5ilN8qLYV4Adn09qY/QXxZ+4M3lQ3gzofCVRXb0tdZaKOe TZcllDPuviBZrPLtCPOqqKgAkiHgUVekjOlZyhGcVgfYNUAsjyN/5NQJ5trG34Gjlj irAvps6vhWyMw1qIJitCFBthvboIHBEfss9MAeEbXyPrZ2AN2msnNi+tksze7rYYnl kcwb6SorzAjRaIXcb/qRp0Tg3SexbBPXrvFeUQj81iA3KEQzI5L+HUI3udgm6Msiu+ mzW8Tn+aXSffbOY3bOEpv2GtNs3b4T9eC9g73nlBcVwPUGohFe0zPkzYTh8jOhWT4b UgPKgei0gPMow== Received: from vineetg-Latitude-7400.internal.synopsys.com (unknown [10.13.183.89]) by mailhost.synopsys.com (Postfix) with ESMTP id 7D7DEA009D; Fri, 10 Jul 2020 23:38:15 +0000 (UTC) X-SNPS-Relay: synopsys.com From: Vineet Gupta To: libc-alpha@sourceware.org Subject: [COMMITTED 08/13] ARC: Linux ABI Date: Fri, 10 Jul 2020 16:38:05 -0700 Message-Id: <20200710233810.18720-8-vgupta@synopsys.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200710233810.18720-1-vgupta@synopsys.com> References: <20200710233810.18720-1-vgupta@synopsys.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200710_193816_776604_B7708E84 X-CRM114-Status: GOOD ( 21.75 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [149.117.73.133 listed in wl.mailspike.net] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-BeenThere: linux-snps-arc@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on Synopsys ARC Processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Vineet Gupta , linux-snps-arc@lists.infradead.org, Adhemerval Zanella Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Reviewed-by: Adhemerval Zanella --- sysdeps/arc/nptl/pthreaddef.h | 32 +++++++ sysdeps/unix/sysv/linux/arc/bits/procfs.h | 35 +++++++ .../sysv/linux/arc/bits/types/__sigset_t.h | 12 +++ sysdeps/unix/sysv/linux/arc/getcontext.S | 64 +++++++++++++ sysdeps/unix/sysv/linux/arc/makecontext.c | 73 ++++++++++++++ sysdeps/unix/sysv/linux/arc/setcontext.S | 93 ++++++++++++++++++ sysdeps/unix/sysv/linux/arc/sigcontextinfo.h | 28 ++++++ sysdeps/unix/sysv/linux/arc/swapcontext.S | 94 +++++++++++++++++++ sysdeps/unix/sysv/linux/arc/sys/cachectl.h | 35 +++++++ sysdeps/unix/sysv/linux/arc/sys/ucontext.h | 57 +++++++++++ sysdeps/unix/sysv/linux/arc/sys/user.h | 32 +++++++ sysdeps/unix/sysv/linux/arc/ucontext-macros.h | 25 +++++ sysdeps/unix/sysv/linux/arc/ucontext_i.sym | 20 ++++ 13 files changed, 600 insertions(+) create mode 100644 sysdeps/arc/nptl/pthreaddef.h create mode 100644 sysdeps/unix/sysv/linux/arc/bits/procfs.h create mode 100644 sysdeps/unix/sysv/linux/arc/bits/types/__sigset_t.h create mode 100644 sysdeps/unix/sysv/linux/arc/getcontext.S create mode 100644 sysdeps/unix/sysv/linux/arc/makecontext.c create mode 100644 sysdeps/unix/sysv/linux/arc/setcontext.S create mode 100644 sysdeps/unix/sysv/linux/arc/sigcontextinfo.h create mode 100644 sysdeps/unix/sysv/linux/arc/swapcontext.S create mode 100644 sysdeps/unix/sysv/linux/arc/sys/cachectl.h create mode 100644 sysdeps/unix/sysv/linux/arc/sys/ucontext.h create mode 100644 sysdeps/unix/sysv/linux/arc/sys/user.h create mode 100644 sysdeps/unix/sysv/linux/arc/ucontext-macros.h create mode 100644 sysdeps/unix/sysv/linux/arc/ucontext_i.sym diff --git a/sysdeps/arc/nptl/pthreaddef.h b/sysdeps/arc/nptl/pthreaddef.h new file mode 100644 index 000000000000..5c2b752becad --- /dev/null +++ b/sysdeps/arc/nptl/pthreaddef.h @@ -0,0 +1,32 @@ +/* pthread machine parameter definitions, ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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/unix/sysv/linux/arc/bits/procfs.h b/sysdeps/unix/sysv/linux/arc/bits/procfs.h new file mode 100644 index 000000000000..9fabca2c4747 --- /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) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 000000000000..795638a30bd3 --- /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/getcontext.S b/sysdeps/unix/sysv/linux/arc/getcontext.S new file mode 100644 index 000000000000..486cc622efa5 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/getcontext.S @@ -0,0 +1,64 @@ +/* Save current context for ARC. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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:uc_mcontext (hence different from setjmp). */ + +ENTRY (__getcontext) + + /* Callee saved registers. */ + add r2, r0, UCONTEXT_MCONTEXT + STR (r13, r2, 37) + STR (r14, r2, 36) + STR (r15, r2, 35) + STR (r16, r2, 34) + STR (r17, r2, 33) + STR (r18, r2, 32) + STR (r19, r2, 31) + STR (r20, r2, 30) + STR (r21, r2, 29) + STR (r22, r2, 28) + STR (r23, r2, 27) + STR (r24, r2, 26) + + STR (blink, r2, 7) + STR (fp, r2, 8) + STR (gp, r2, 9) + STR (sp, r2, 23) + + /* Save 0 in r0 placeholder to return 0 when this @ucp activated. */ + mov r9, 0 + STR (r9, r2, 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, L (call_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/makecontext.c b/sysdeps/unix/sysv/linux/arc/makecontext.c new file mode 100644 index 000000000000..5ded1ad3e274 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/makecontext.c @@ -0,0 +1,73 @@ +/* Create new context for ARC. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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.__sp = sp; + ucp->uc_mcontext.__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.__blink = (unsigned long int) &__startcontext; + + /* __startcontext passed 2 types of args + - args to @func setup in canonical r0-r7 + - @func and next function in r14,r15. */ + + ucp->uc_mcontext.__r14 = (unsigned long int) func; + ucp->uc_mcontext.__r15 = (unsigned long int) ucp->uc_link; + + r = &ucp->uc_mcontext.__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.__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/setcontext.S b/sysdeps/unix/sysv/linux/arc/setcontext.S new file mode 100644 index 000000000000..56a362f8371f --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/setcontext.S @@ -0,0 +1,93 @@ +/* Set current context for ARC. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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, L (call_syscall_err) + + /* Restore scratch/arg regs for makecontext case. */ + add r9, r9, UCONTEXT_MCONTEXT + LDR (r0, r9, 22) + LDR (r1, r9, 21) + LDR (r2, r9, 20) + LDR (r3, r9, 19) + LDR (r4, r9, 18) + LDR (r5, r9, 17) + LDR (r6, r9, 16) + LDR (r7, r9, 15) + + /* Restore callee saved registers. */ + LDR (r13, r9, 37) + LDR (r14, r9, 36) + LDR (r15, r9, 35) + LDR (r16, r9, 34) + LDR (r17, r9, 33) + LDR (r18, r9, 32) + LDR (r19, r9, 31) + LDR (r20, r9, 30) + LDR (r21, r9, 29) + LDR (r22, r9, 28) + LDR (r23, r9, 27) + LDR (r24, r9, 26) + + LDR (blink, r9, 7) + LDR (fp, r9, 8) + LDR (gp, r9, 9) + LDR (sp, r9, 23) + + j [blink] + +PSEUDO_END (__setcontext) +weak_alias (__setcontext, setcontext) + + +/* Helper for activating makecontext created context + - r14 has @func, r15 has uc_link. */ + +ENTRY (__startcontext) + + .cfi_label .Ldummy + cfi_undefined (blink) + + /* Call user @func, loaded in r14 by setcontext. */ + jl [r14] + + /* If uc_link (r15) call setcontext with that. */ + mov r0, r15 + 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/sigcontextinfo.h b/sysdeps/unix/sysv/linux/arc/sigcontextinfo.h new file mode 100644 index 000000000000..c674da7b8f1f --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/sigcontextinfo.h @@ -0,0 +1,28 @@ +/* ARC definitions for signal handling calling conventions. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 _SIGCONTEXTINFO_H +#define _SIGCONTEXTINFO_H + +static inline uintptr_t +sigcontext_get_pc (const ucontext_t *ctx) +{ + return ctx->uc_mcontext.__ret; +} + +#endif diff --git a/sysdeps/unix/sysv/linux/arc/swapcontext.S b/sysdeps/unix/sysv/linux/arc/swapcontext.S new file mode 100644 index 000000000000..3da072da3de3 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/swapcontext.S @@ -0,0 +1,94 @@ +/* Save and set current context for ARC. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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. */ + + add r2, r0, UCONTEXT_MCONTEXT + STR (r13, r2, 37) + STR (r14, r2, 36) + STR (r15, r2, 35) + STR (r16, r2, 34) + STR (r17, r2, 33) + STR (r18, r2, 32) + STR (r19, r2, 31) + STR (r20, r2, 30) + STR (r21, r2, 29) + STR (r22, r2, 28) + STR (r23, r2, 27) + STR (r24, r2, 26) + + STR (blink, r2, 7) + STR (fp, r2, 8) + STR (gp, r2, 9) + STR (sp, r2, 23) + + /* Save 0 in r0 placeholder to return 0 when @oucp activated. */ + mov r9, 0 + STR (r9, r2, 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, L (call_syscall_err) + + add r9, r9, UCONTEXT_MCONTEXT + LDR (r0, r9, 22) + LDR (r1, r9, 21) + LDR (r2, r9, 20) + LDR (r3, r9, 19) + LDR (r4, r9, 18) + LDR (r5, r9, 17) + LDR (r6, r9, 16) + LDR (r7, r9, 15) + + LDR (r13, r9, 37) + LDR (r14, r9, 36) + LDR (r15, r9, 35) + LDR (r16, r9, 34) + LDR (r17, r9, 33) + LDR (r18, r9, 32) + LDR (r19, r9, 31) + LDR (r20, r9, 30) + LDR (r21, r9, 29) + LDR (r22, r9, 28) + LDR (r23, r9, 27) + LDR (r24, r9, 26) + + LDR (blink, r9, 7) + LDR (fp, r9, 8) + LDR (gp, r9, 9) + LDR (sp, r9, 23) + + j [blink] + +PSEUDO_END (__swapcontext) +weak_alias (__swapcontext, swapcontext) diff --git a/sysdeps/unix/sysv/linux/arc/sys/cachectl.h b/sysdeps/unix/sysv/linux/arc/sys/cachectl.h new file mode 100644 index 000000000000..dbed8d3af61d --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/sys/cachectl.h @@ -0,0 +1,35 @@ +/* cacheflush - flush contents of instruction and/or data cache. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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, int __nbytes, int __op) __THROW; +#endif + +__END_DECLS + +#endif diff --git a/sysdeps/unix/sysv/linux/arc/sys/ucontext.h b/sysdeps/unix/sysv/linux/arc/sys/ucontext.h new file mode 100644 index 000000000000..ca24e7ae85e9 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/sys/ucontext.h @@ -0,0 +1,57 @@ +/* struct ucontext definition, ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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; + 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; + unsigned long int __r26; + unsigned long int __r25, __r24, __r23, __r22, __r21, __r20; + unsigned long int __r19, __r18, __r17, __r16, __r15, __r14, __r13; + 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; + +#endif diff --git a/sysdeps/unix/sysv/linux/arc/sys/user.h b/sysdeps/unix/sysv/linux/arc/sys/user.h new file mode 100644 index 000000000000..2ad9f89e25ab --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/sys/user.h @@ -0,0 +1,32 @@ +/* ptrace register data format definitions. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 +{ + long int dummy; +}; + +#endif diff --git a/sysdeps/unix/sysv/linux/arc/ucontext-macros.h b/sysdeps/unix/sysv/linux/arc/ucontext-macros.h new file mode 100644 index 000000000000..891a5e71f2da --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/ucontext-macros.h @@ -0,0 +1,25 @@ +/* Macros for ucontext routines, ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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" + +#endif diff --git a/sysdeps/unix/sysv/linux/arc/ucontext_i.sym b/sysdeps/unix/sysv/linux/arc/ucontext_i.sym new file mode 100644 index 000000000000..d84e92f9f543 --- /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) From patchwork Fri Jul 10 23:38:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vineet Gupta X-Patchwork-Id: 1327173 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2001:8b0:10b:1231::1; helo=merlin.infradead.org; envelope-from=linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=synopsys.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=merlin.20170209 header.b=2/h4/pPA; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=synopsys.com header.i=@synopsys.com header.a=rsa-sha256 header.s=mail header.b=G9e2QRmg; dkim-atps=neutral Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:8b0:10b:1231::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4B3Txy13CKz9sRk for ; Sat, 11 Jul 2020 09:38:29 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=9lOaLHGMFeL1jfaqjDQlqcve1vccif19q+SjGLJuwHg=; b=2/h4/pPAvCvkpi9DbX1H9mI5U kOITq2AB/EcOtNhmZbXApah8xF8fIf6nRcxGr2n4kcWpbzGoJEtXGPG7F69acY3TJbu6vIdzloS2u n/mcNWGWDh1SvqZmpMVBcX88AfMwCrKXgfcKrlQm8WHM6PDQIjTuLFGF48u4y+vjj1b4DZTH2apnR xTFXJicrrKjciRoLfSaGhDEcpKgQxt7hbIiGf5kgPvZCNpCXFlPG7FsD7KiZyTBx1eLsCpIxI9uQh qzPLbARn1fjxx0C0gRl0o++fda8GAG9JJvlUIx5plBox/dlMf50Xob8uNcz/eXJg7vvaW8LSuhQKt pSYOo13yQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2b2-0008DB-PW; Fri, 10 Jul 2020 23:38:24 +0000 Received: from smtprelay-out1.synopsys.com ([149.117.73.133]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2au-000893-NZ for linux-snps-arc@lists.infradead.org; Fri, 10 Jul 2020 23:38:23 +0000 Received: from mailhost.synopsys.com (sv2-mailhost2.synopsys.com [10.205.2.134]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id 2AEEF40A3A; Fri, 10 Jul 2020 23:38:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1594424296; bh=fpjj/M5lMUeI/AhG3QQI/fyEyeXavpps3+0xSTyeFp0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=G9e2QRmgGjAG8on0/UFMZRz7sDhEvH5g3v1G+O7ybraHg8z9mgjdSkYXN4equfCTn kBy/hDhdde0RqTmj2YDCdlFPDAV6xcPIIeF74Hmicq/Z0YJ8Y3d8i/O+pP538/bhtg 7vbjZuVx7HwXXNIhgzdc0LUSvZQXoTQzcM+AN4oaqM/FrU7Jhj2u0C0ckCirJumA/8 BxEg522CYMAdsNAbWO+4Pl29uQnxk9D+gqF9PWIyEhzOuBNt1T0RhOMQ8+UBBgfnka imwC2bAKkuN7QlxyhZBym4gX9vE1/KbCCaq+PSmri9y8Q5jXroh4MJHLh+wltzdaRl aKRcdSM0xK8Vg== Received: from vineetg-Latitude-7400.internal.synopsys.com (unknown [10.13.183.89]) by mailhost.synopsys.com (Postfix) with ESMTP id E9842A005A; Fri, 10 Jul 2020 23:38:15 +0000 (UTC) X-SNPS-Relay: synopsys.com From: Vineet Gupta To: libc-alpha@sourceware.org Subject: [COMMITTED 09/13] ARC: Linux Startup and Dynamic Loading Date: Fri, 10 Jul 2020 16:38:06 -0700 Message-Id: <20200710233810.18720-9-vgupta@synopsys.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200710233810.18720-1-vgupta@synopsys.com> References: <20200710233810.18720-1-vgupta@synopsys.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200710_193816_961565_C5B0652E X-CRM114-Status: GOOD ( 18.37 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [149.117.73.133 listed in wl.mailspike.net] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-BeenThere: linux-snps-arc@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on Synopsys ARC Processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Vineet Gupta , linux-snps-arc@lists.infradead.org, Adhemerval Zanella Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org A big shoutout to Cupertino Miranda for his valuable contribution in initial bringup and debugging on Linux and later in solving pesky unwinding/cancelation failures in testsuite. Reviewed-by: Adhemerval Zanella --- sysdeps/unix/sysv/linux/arc/dl-static.c | 84 +++++++++++++++++++++++++ sysdeps/unix/sysv/linux/arc/ldsodefs.h | 32 ++++++++++ 2 files changed, 116 insertions(+) create mode 100644 sysdeps/unix/sysv/linux/arc/dl-static.c create mode 100644 sysdeps/unix/sysv/linux/arc/ldsodefs.h diff --git a/sysdeps/unix/sysv/linux/arc/dl-static.c b/sysdeps/unix/sysv/linux/arc/dl-static.c new file mode 100644 index 000000000000..30bcd899d42d --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/dl-static.c @@ -0,0 +1,84 @@ +/* Variable initialization. ARC version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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/ldsodefs.h b/sysdeps/unix/sysv/linux/arc/ldsodefs.h new file mode 100644 index 000000000000..204a0ff8946c --- /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) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 */ From patchwork Fri Jul 10 23:38:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vineet Gupta X-Patchwork-Id: 1327183 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2001:8b0:10b:1231::1; helo=merlin.infradead.org; envelope-from=linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=synopsys.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=merlin.20170209 header.b=FPehYt10; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=synopsys.com header.i=@synopsys.com header.a=rsa-sha256 header.s=mail header.b=Q5Ak2LZh; dkim-atps=neutral Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:8b0:10b:1231::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4B3Ty664v7z9sSd for ; Sat, 11 Jul 2020 09:38:38 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=y+LAwgwnlr7YG+u4fzeG+Wqoc/6wlUrwzZy5arRsSQg=; b=FPehYt10JrfSP4dv3VNVax6yD i1bcZycHr4SMnq/f5oXm4bCc8CMfBJy7c+xtrFAFoeA7E8yBRZN6g8gNUYv1SiuB8R0KFDXaP5aKy z44Q7taYaOw/9eCuAdEVz+YIGbQ4VXbyM3mNCM3Qz56AwYCPU0tUH50OLNJyYFWASgd2DqGH0EYN4 b68IEXU7cvO0JFXgjDcWv2jVNPPuftrdP3qHHNLFoIRXP2fh2KxRbQCn4fdpIldYjPPw0fU1cTea2 sAfLGTRO25DqfbXP9gzTMowGBR+71fQqolt96mZEn1V7BxNAzGFaMSdl5w/urTNGW6YZi7pNY9izL 2nvitDZbA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2bD-0008H8-Bx; Fri, 10 Jul 2020 23:38:35 +0000 Received: from smtprelay-out1.synopsys.com ([149.117.73.133]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2av-0008AV-B1 for linux-snps-arc@lists.infradead.org; Fri, 10 Jul 2020 23:38:33 +0000 Received: from mailhost.synopsys.com (sv2-mailhost2.synopsys.com [10.205.2.134]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id C051740A3B; Fri, 10 Jul 2020 23:38:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1594424296; bh=G/4whUKhLxUDrWHCZRVrexrZ0aw4xaZQ3WfiXYyHcDg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Q5Ak2LZhu09AwHKCFRj16EDSpcWywRH/UOaWm5ukncfg0U9dzv4zvJ8QTUIulzomb mAdO53WAUEe32mGOH9FTz7ayQJs+/lUuVbht7Tm31OaP1Dxmj+X1JJl2NVH18gUzC8 HHed+anMp04ffb6yz8L18bH/V6mQXdWqIKM1q6kEV3bysFgR27gTId7qUbyE2nynAb Lh3nLILJ/HOl6Wkt66KkJmfDhppm05ubSgzm9LsIV6sQw+ReUOxZGYbxPfvVPHJ0hX s/14BQsnHkZZ9R3cdW9tnR2g0IVTIGPu43eAC07odxSQ9ZlwZ6wo/89/EjN7z84F3t 4XsZIvpTGavWA== Received: from vineetg-Latitude-7400.internal.synopsys.com (unknown [10.13.183.89]) by mailhost.synopsys.com (Postfix) with ESMTP id 2C3B2A009D; Fri, 10 Jul 2020 23:38:16 +0000 (UTC) X-SNPS-Relay: synopsys.com From: Vineet Gupta To: libc-alpha@sourceware.org Subject: [COMMITTED 10/13] ARC: ABI lists Date: Fri, 10 Jul 2020 16:38:07 -0700 Message-Id: <20200710233810.18720-10-vgupta@synopsys.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200710233810.18720-1-vgupta@synopsys.com> References: <20200710233810.18720-1-vgupta@synopsys.com> MIME-Version: 1.0 X-Spam-Note: CRM114 run bypassed due to message size (110448 bytes) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [149.117.73.133 listed in wl.mailspike.net] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-BeenThere: linux-snps-arc@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on Synopsys ARC Processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Vineet Gupta , linux-snps-arc@lists.infradead.org, Adhemerval Zanella Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Reviewed-by: Adhemerval Zanella --- sysdeps/arc/fpu/libm-test-ulps | 1142 +++++++++ sysdeps/arc/fpu/libm-test-ulps-name | 1 + sysdeps/arc/nofpu/libm-test-ulps | 270 +++ sysdeps/arc/nofpu/libm-test-ulps-name | 1 + sysdeps/unix/sysv/linux/arc/c++-types.data | 67 + sysdeps/unix/sysv/linux/arc/ld.abilist | 5 + .../sysv/linux/arc/libBrokenLocale.abilist | 1 + sysdeps/unix/sysv/linux/arc/libanl.abilist | 4 + sysdeps/unix/sysv/linux/arc/libc.abilist | 2085 +++++++++++++++++ sysdeps/unix/sysv/linux/arc/libcrypt.abilist | 2 + sysdeps/unix/sysv/linux/arc/libdl.abilist | 9 + sysdeps/unix/sysv/linux/arc/libm.abilist | 699 ++++++ .../unix/sysv/linux/arc/libpthread.abilist | 213 ++ sysdeps/unix/sysv/linux/arc/libresolv.abilist | 79 + sysdeps/unix/sysv/linux/arc/librt.abilist | 35 + .../unix/sysv/linux/arc/libthread_db.abilist | 40 + sysdeps/unix/sysv/linux/arc/libutil.abilist | 6 + sysdeps/unix/sysv/linux/arc/localplt.data | 12 + 18 files changed, 4671 insertions(+) create mode 100644 sysdeps/arc/fpu/libm-test-ulps create mode 100644 sysdeps/arc/fpu/libm-test-ulps-name create mode 100644 sysdeps/arc/nofpu/libm-test-ulps create mode 100644 sysdeps/arc/nofpu/libm-test-ulps-name create mode 100644 sysdeps/unix/sysv/linux/arc/c++-types.data create mode 100644 sysdeps/unix/sysv/linux/arc/ld.abilist create mode 100644 sysdeps/unix/sysv/linux/arc/libBrokenLocale.abilist create mode 100644 sysdeps/unix/sysv/linux/arc/libanl.abilist create mode 100644 sysdeps/unix/sysv/linux/arc/libc.abilist create mode 100644 sysdeps/unix/sysv/linux/arc/libcrypt.abilist create mode 100644 sysdeps/unix/sysv/linux/arc/libdl.abilist create mode 100644 sysdeps/unix/sysv/linux/arc/libm.abilist create mode 100644 sysdeps/unix/sysv/linux/arc/libpthread.abilist create mode 100644 sysdeps/unix/sysv/linux/arc/libresolv.abilist create mode 100644 sysdeps/unix/sysv/linux/arc/librt.abilist create mode 100644 sysdeps/unix/sysv/linux/arc/libthread_db.abilist create mode 100644 sysdeps/unix/sysv/linux/arc/libutil.abilist create mode 100644 sysdeps/unix/sysv/linux/arc/localplt.data diff --git a/sysdeps/arc/fpu/libm-test-ulps b/sysdeps/arc/fpu/libm-test-ulps new file mode 100644 index 000000000000..f7f98caa0d5e --- /dev/null +++ b/sysdeps/arc/fpu/libm-test-ulps @@ -0,0 +1,1142 @@ +# Begin of automatic generation + +# Maximal error of functions: +Function: "acos": +double: 1 +float: 1 + +Function: "acos_downward": +double: 1 +float: 1 + +Function: "acos_towardzero": +double: 1 +float: 1 + +Function: "acos_upward": +double: 1 +float: 1 + +Function: "acosh": +double: 3 +float: 2 + +Function: "acosh_downward": +double: 2 +float: 2 + +Function: "acosh_towardzero": +double: 2 +float: 2 + +Function: "acosh_upward": +double: 3 +float: 3 + +Function: "asin": +double: 1 +float: 1 + +Function: "asin_downward": +double: 1 +float: 1 + +Function: "asin_towardzero": +double: 1 +float: 1 + +Function: "asin_upward": +double: 1 +float: 1 + +Function: "asinh": +double: 3 +float: 2 + +Function: "asinh_downward": +double: 3 +float: 3 + +Function: "asinh_towardzero": +double: 2 +float: 2 + +Function: "asinh_upward": +double: 3 +float: 3 + +Function: "atan": +double: 1 +float: 1 + +Function: "atan2": +double: 7 +float: 2 + +Function: "atan2_downward": +double: 5 +float: 2 + +Function: "atan2_towardzero": +double: 5 +float: 2 + +Function: "atan2_upward": +double: 8 +float: 2 + +Function: "atan_downward": +double: 1 +float: 2 + +Function: "atan_towardzero": +double: 1 +float: 1 + +Function: "atan_upward": +double: 2 +float: 2 + +Function: "atanh": +double: 2 +float: 2 + +Function: "atanh_downward": +double: 3 +float: 3 + +Function: "atanh_towardzero": +double: 2 +float: 2 + +Function: "atanh_upward": +double: 3 +float: 3 + +Function: "cabs": +double: 1 +float: 1 + +Function: "cabs_downward": +double: 1 + +Function: "cabs_towardzero": +double: 1 + +Function: "cabs_upward": +double: 2 +float: 1 + +Function: Real part of "cacos": +double: 2 +float: 2 + +Function: Imaginary part of "cacos": +double: 5 +float: 3 + +Function: Real part of "cacos_downward": +double: 3 +float: 2 + +Function: Imaginary part of "cacos_downward": +double: 5 +float: 3 + +Function: Real part of "cacos_towardzero": +double: 3 +float: 2 + +Function: Imaginary part of "cacos_towardzero": +double: 4 +float: 2 + +Function: Real part of "cacos_upward": +double: 2 +float: 3 + +Function: Imaginary part of "cacos_upward": +double: 5 +float: 5 + +Function: Real part of "cacosh": +double: 5 +float: 4 + +Function: Imaginary part of "cacosh": +double: 2 +float: 2 + +Function: Real part of "cacosh_downward": +double: 4 +float: 2 + +Function: Imaginary part of "cacosh_downward": +double: 3 +float: 3 + +Function: Real part of "cacosh_towardzero": +double: 4 +float: 2 + +Function: Imaginary part of "cacosh_towardzero": +double: 3 +float: 2 + +Function: Real part of "cacosh_upward": +double: 5 +float: 3 + +Function: Imaginary part of "cacosh_upward": +double: 3 +float: 3 + +Function: "carg": +double: 7 +float: 2 + +Function: "carg_downward": +double: 5 +float: 2 + +Function: "carg_towardzero": +double: 5 +float: 2 + +Function: "carg_upward": +double: 8 +float: 2 + +Function: Real part of "casin": +double: 3 +float: 1 + +Function: Imaginary part of "casin": +double: 5 +float: 4 + +Function: Real part of "casin_downward": +double: 3 +float: 2 + +Function: Imaginary part of "casin_downward": +double: 5 +float: 3 + +Function: Real part of "casin_towardzero": +double: 3 +float: 1 + +Function: Imaginary part of "casin_towardzero": +double: 4 +float: 2 + +Function: Real part of "casin_upward": +double: 3 +float: 2 + +Function: Imaginary part of "casin_upward": +double: 5 +float: 5 + +Function: Real part of "casinh": +double: 5 +float: 4 + +Function: Imaginary part of "casinh": +double: 3 +float: 2 + +Function: Real part of "casinh_downward": +double: 5 +float: 3 + +Function: Imaginary part of "casinh_downward": +double: 3 +float: 2 + +Function: Real part of "casinh_towardzero": +double: 4 +float: 2 + +Function: Imaginary part of "casinh_towardzero": +double: 3 +float: 1 + +Function: Real part of "casinh_upward": +double: 5 +float: 5 + +Function: Imaginary part of "casinh_upward": +double: 3 +float: 2 + +Function: Real part of "catan": +double: 1 +float: 1 + +Function: Imaginary part of "catan": +double: 3 +float: 3 + +Function: Real part of "catan_downward": +double: 1 +float: 2 + +Function: Imaginary part of "catan_downward": +double: 2 +float: 2 + +Function: Real part of "catan_towardzero": +double: 1 +float: 2 + +Function: Imaginary part of "catan_towardzero": +double: 3 +float: 3 + +Function: Real part of "catan_upward": +double: 2 +float: 2 + +Function: Imaginary part of "catan_upward": +double: 3 +float: 3 + +Function: Real part of "catanh": +double: 4 +float: 4 + +Function: Imaginary part of "catanh": +double: 1 +float: 2 + +Function: Real part of "catanh_downward": +double: 2 +float: 2 + +Function: Imaginary part of "catanh_downward": +double: 1 +float: 2 + +Function: Real part of "catanh_towardzero": +double: 3 +float: 3 + +Function: Imaginary part of "catanh_towardzero": +double: 1 +float: 2 + +Function: Real part of "catanh_upward": +double: 4 +float: 4 + +Function: Imaginary part of "catanh_upward": +double: 2 +float: 2 + +Function: "cbrt": +double: 4 +float: 1 + +Function: "cbrt_downward": +double: 4 +float: 1 + +Function: "cbrt_towardzero": +double: 3 +float: 1 + +Function: "cbrt_upward": +double: 5 +float: 1 + +Function: Real part of "ccos": +double: 3 +float: 3 + +Function: Imaginary part of "ccos": +double: 3 +float: 3 + +Function: Real part of "ccos_downward": +double: 3 +float: 1 + +Function: Imaginary part of "ccos_downward": +double: 3 +float: 3 + +Function: Real part of "ccos_towardzero": +double: 3 +float: 2 + +Function: Imaginary part of "ccos_towardzero": +double: 3 +float: 3 + +Function: Real part of "ccos_upward": +double: 4 +float: 2 + +Function: Imaginary part of "ccos_upward": +double: 4 +float: 4 + +Function: Real part of "ccosh": +double: 3 +float: 3 + +Function: Imaginary part of "ccosh": +double: 3 +float: 3 + +Function: Real part of "ccosh_downward": +double: 3 +float: 2 + +Function: Imaginary part of "ccosh_downward": +double: 3 +float: 3 + +Function: Real part of "ccosh_towardzero": +double: 3 +float: 3 + +Function: Imaginary part of "ccosh_towardzero": +double: 3 +float: 3 + +Function: Real part of "ccosh_upward": +double: 4 +float: 3 + +Function: Imaginary part of "ccosh_upward": +double: 4 +float: 4 + +Function: Real part of "cexp": +double: 4 +float: 3 + +Function: Imaginary part of "cexp": +double: 4 +float: 3 + +Function: Real part of "cexp_downward": +double: 4 +float: 2 + +Function: Imaginary part of "cexp_downward": +double: 3 +float: 3 + +Function: Real part of "cexp_towardzero": +double: 4 +float: 2 + +Function: Imaginary part of "cexp_towardzero": +double: 3 +float: 3 + +Function: Real part of "cexp_upward": +double: 5 +float: 3 + +Function: Imaginary part of "cexp_upward": +double: 4 +float: 4 + +Function: Real part of "clog": +double: 5 +float: 4 + +Function: Imaginary part of "clog": +double: 7 +float: 2 + +Function: Real part of "clog10": +double: 6 +float: 5 + +Function: Imaginary part of "clog10": +double: 8 +float: 4 + +Function: Real part of "clog10_downward": +double: 5 +float: 5 + +Function: Imaginary part of "clog10_downward": +double: 8 +float: 4 + +Function: Real part of "clog10_towardzero": +double: 6 +float: 6 + +Function: Imaginary part of "clog10_towardzero": +double: 9 +float: 4 + +Function: Real part of "clog10_upward": +double: 6 +float: 6 + +Function: Imaginary part of "clog10_upward": +double: 9 +float: 5 + +Function: Real part of "clog_downward": +double: 4 +float: 3 + +Function: Imaginary part of "clog_downward": +double: 5 +float: 2 + +Function: Real part of "clog_towardzero": +double: 5 +float: 4 + +Function: Imaginary part of "clog_towardzero": +double: 5 +float: 3 + +Function: Real part of "clog_upward": +double: 5 +float: 4 + +Function: Imaginary part of "clog_upward": +double: 8 +float: 2 + +Function: "cos": +double: 4 +float: 1 + +Function: "cos_downward": +double: 1 +float: 1 + +Function: "cos_towardzero": +double: 4 +float: 2 + +Function: "cos_upward": +double: 4 +float: 2 + +Function: "cosh": +double: 3 +float: 3 + +Function: "cosh_downward": +double: 2 +float: 1 + +Function: "cosh_towardzero": +double: 2 +float: 1 + +Function: "cosh_upward": +double: 3 +float: 2 + +Function: Real part of "cpow": +double: 9 +float: 8 + +Function: Imaginary part of "cpow": +double: 3 +float: 6 + +Function: Real part of "cpow_downward": +double: 5 +float: 8 + +Function: Imaginary part of "cpow_downward": +double: 2 +float: 2 + +Function: Real part of "cpow_towardzero": +double: 5 +float: 8 + +Function: Imaginary part of "cpow_towardzero": +double: 2 +float: 2 + +Function: Real part of "cpow_upward": +double: 5 +float: 8 + +Function: Imaginary part of "cpow_upward": +double: 2 +float: 2 + +Function: Real part of "csin": +double: 3 +float: 3 + +Function: Imaginary part of "csin": +double: 3 +float: 3 + +Function: Real part of "csin_downward": +double: 3 +float: 3 + +Function: Imaginary part of "csin_downward": +double: 3 +float: 1 + +Function: Real part of "csin_towardzero": +double: 3 +float: 3 + +Function: Imaginary part of "csin_towardzero": +double: 3 +float: 1 + +Function: Real part of "csin_upward": +double: 4 +float: 4 + +Function: Imaginary part of "csin_upward": +double: 4 +float: 2 + +Function: Real part of "csinh": +double: 3 +float: 3 + +Function: Imaginary part of "csinh": +double: 3 +float: 3 + +Function: Real part of "csinh_downward": +double: 3 +float: 1 + +Function: Imaginary part of "csinh_downward": +double: 3 +float: 3 + +Function: Real part of "csinh_towardzero": +double: 3 +float: 2 + +Function: Imaginary part of "csinh_towardzero": +double: 3 +float: 3 + +Function: Real part of "csinh_upward": +double: 4 +float: 2 + +Function: Imaginary part of "csinh_upward": +double: 4 +float: 4 + +Function: Real part of "csqrt": +double: 4 +float: 3 + +Function: Imaginary part of "csqrt": +double: 4 +float: 3 + +Function: Real part of "csqrt_downward": +double: 5 +float: 4 + +Function: Imaginary part of "csqrt_downward": +double: 4 +float: 3 + +Function: Real part of "csqrt_towardzero": +double: 5 +float: 4 + +Function: Imaginary part of "csqrt_towardzero": +double: 4 +float: 4 + +Function: Real part of "csqrt_upward": +double: 5 +float: 4 + +Function: Imaginary part of "csqrt_upward": +double: 4 +float: 4 + +Function: Real part of "ctan": +double: 4 +float: 6 + +Function: Imaginary part of "ctan": +double: 3 +float: 2 + +Function: Real part of "ctan_downward": +double: 6 +float: 5 + +Function: Imaginary part of "ctan_downward": +double: 3 +float: 2 + +Function: Real part of "ctan_towardzero": +double: 5 +float: 6 + +Function: Imaginary part of "ctan_towardzero": +double: 3 +float: 2 + +Function: Real part of "ctan_upward": +double: 5 +float: 6 + +Function: Imaginary part of "ctan_upward": +double: 2 +float: 2 + +Function: Real part of "ctanh": +double: 3 +float: 2 + +Function: Imaginary part of "ctanh": +double: 4 +float: 6 + +Function: Real part of "ctanh_downward": +double: 3 +float: 2 + +Function: Imaginary part of "ctanh_downward": +double: 6 +float: 5 + +Function: Real part of "ctanh_towardzero": +double: 3 +float: 2 + +Function: Imaginary part of "ctanh_towardzero": +double: 5 +float: 6 + +Function: Real part of "ctanh_upward": +double: 3 +float: 2 + +Function: Imaginary part of "ctanh_upward": +double: 5 +float: 6 + +Function: "erf": +double: 1 +float: 1 + +Function: "erf_downward": +double: 1 +float: 1 + +Function: "erf_towardzero": +double: 1 +float: 2 + +Function: "erf_upward": +double: 2 +float: 2 + +Function: "erfc": +double: 5 +float: 5 + +Function: "erfc_downward": +double: 4 +float: 4 + +Function: "erfc_towardzero": +double: 4 +float: 4 + +Function: "erfc_upward": +double: 5 +float: 5 + +Function: "exp": +double: 1 +float: 1 + +Function: "exp10": +double: 4 +float: 1 + +Function: "exp10_downward": +double: 3 +float: 1 + +Function: "exp10_towardzero": +double: 3 +float: 1 + +Function: "exp10_upward": +double: 4 +float: 1 + +Function: "exp2": +double: 1 +float: 1 + +Function: "exp2_downward": +double: 1 + +Function: "exp2_towardzero": +double: 1 + +Function: "exp2_upward": +double: 2 +float: 1 + +Function: "exp_downward": +double: 1 +float: 1 + +Function: "exp_towardzero": +double: 1 +float: 1 + +Function: "exp_upward": +double: 2 +float: 2 + +Function: "expm1": +double: 2 +float: 2 + +Function: "expm1_downward": +double: 1 +float: 1 + +Function: "expm1_towardzero": +double: 1 +float: 2 + +Function: "expm1_upward": +double: 2 +float: 2 + +Function: "gamma": +double: 7 +float: 6 + +Function: "gamma_downward": +double: 6 +float: 5 + +Function: "gamma_towardzero": +double: 7 +float: 6 + +Function: "gamma_upward": +double: 7 +float: 6 + +Function: "hypot": +double: 2 +float: 1 + +Function: "hypot_downward": +double: 1 + +Function: "hypot_towardzero": +double: 1 + +Function: "hypot_upward": +double: 2 +float: 1 + +Function: "j0": +double: 4 +float: 6 + +Function: "j0_downward": +double: 2 +float: 4 + +Function: "j0_towardzero": +double: 4 +float: 5 + +Function: "j0_upward": +double: 3 +float: 5 + +Function: "j1": +double: 5 +float: 9 + +Function: "j1_downward": +double: 4 +float: 6 + +Function: "j1_towardzero": +double: 4 +float: 3 + +Function: "j1_upward": +double: 5 +float: 5 + +Function: "jn": +double: 9 +float: 8 + +Function: "jn_downward": +double: 7 +float: 9 + +Function: "jn_towardzero": +double: 7 +float: 9 + +Function: "jn_upward": +double: 9 +float: 9 + +Function: "lgamma": +double: 7 +float: 6 + +Function: "lgamma_downward": +double: 6 +float: 5 + +Function: "lgamma_towardzero": +double: 7 +float: 6 + +Function: "lgamma_upward": +double: 7 +float: 6 + +Function: "log": +double: 1 +float: 1 + +Function: "log10": +double: 2 +float: 3 + +Function: "log10_downward": +double: 2 +float: 3 + +Function: "log10_towardzero": +double: 2 +float: 4 + +Function: "log10_upward": +double: 3 +float: 4 + +Function: "log1p": +double: 1 +float: 1 + +Function: "log1p_downward": +double: 1 +float: 2 + +Function: "log1p_towardzero": +double: 2 +float: 2 + +Function: "log1p_upward": +double: 2 +float: 2 + +Function: "log2": +double: 2 +float: 1 + +Function: "log2_towardzero": +double: 1 +float: 1 + +Function: "log2_upward": +double: 1 +float: 1 + +Function: "log_towardzero": +double: 1 +float: 1 + +Function: "log_upward": +double: 1 +float: 1 + +Function: "pow": +double: 1 +float: 1 + +Function: "pow_downward": +double: 1 +float: 1 + +Function: "pow_towardzero": +double: 1 +float: 1 + +Function: "pow_upward": +double: 2 +float: 2 + +Function: "sin": +double: 7 +float: 1 + +Function: "sin_downward": +double: 4 +float: 1 + +Function: "sin_towardzero": +double: 3 +float: 1 + +Function: "sin_upward": +double: 7 +float: 1 + +Function: "sincos": +double: 1 +float: 1 + +Function: "sincos_downward": +double: 1 +float: 1 + +Function: "sincos_towardzero": +double: 4 +float: 1 + +Function: "sincos_upward": +double: 2 +float: 1 + +Function: "sinh": +double: 3 +float: 3 + +Function: "sinh_downward": +double: 3 +float: 3 + +Function: "sinh_towardzero": +double: 2 +float: 2 + +Function: "sinh_upward": +double: 3 +float: 3 + +Function: "tan": +double: 1 +float: 1 + +Function: "tan_downward": +double: 1 +float: 2 + +Function: "tan_towardzero": +double: 1 +float: 2 + +Function: "tan_upward": +double: 1 +float: 2 + +Function: "tanh": +double: 3 +float: 2 + +Function: "tanh_downward": +double: 3 +float: 3 + +Function: "tanh_towardzero": +double: 3 +float: 3 + +Function: "tanh_upward": +double: 3 +float: 3 + +Function: "tgamma": +double: 9 +float: 9 + +Function: "tgamma_downward": +double: 9 +float: 9 + +Function: "tgamma_towardzero": +double: 9 +float: 8 + +Function: "tgamma_upward": +double: 9 +float: 9 + +Function: "y0": +double: 3 +float: 6 + +Function: "y0_downward": +double: 3 +float: 4 + +Function: "y0_towardzero": +double: 3 +float: 4 + +Function: "y0_upward": +double: 4 +float: 5 + +Function: "y1": +double: 7 +float: 6 + +Function: "y1_downward": +double: 6 +float: 6 + +Function: "y1_towardzero": +double: 7 +float: 7 + +Function: "y1_upward": +double: 7 +float: 7 + +Function: "yn": +double: 9 +float: 9 + +Function: "yn_downward": +double: 8 +float: 8 + +Function: "yn_towardzero": +double: 9 +float: 9 + +Function: "yn_upward": +double: 9 +float: 9 + +# end of automatic generation diff --git a/sysdeps/arc/fpu/libm-test-ulps-name b/sysdeps/arc/fpu/libm-test-ulps-name new file mode 100644 index 000000000000..8c4fba4f9ae0 --- /dev/null +++ b/sysdeps/arc/fpu/libm-test-ulps-name @@ -0,0 +1 @@ +ARC diff --git a/sysdeps/arc/nofpu/libm-test-ulps b/sysdeps/arc/nofpu/libm-test-ulps new file mode 100644 index 000000000000..260eacf1c337 --- /dev/null +++ b/sysdeps/arc/nofpu/libm-test-ulps @@ -0,0 +1,270 @@ +# Begin of automatic generation + +# Maximal error of functions: +Function: "acos": +float: 1 + +Function: "acosh": +double: 2 +float: 2 + +Function: "asin": +float: 1 + +Function: "asinh": +double: 1 +float: 2 + +Function: "atan": +float: 1 + +Function: "atan2": +float: 1 + +Function: "atanh": +double: 2 +float: 2 + +Function: "cabs": +double: 1 + +Function: Real part of "cacos": +double: 1 +float: 2 + +Function: Imaginary part of "cacos": +double: 2 +float: 2 + +Function: Real part of "cacosh": +double: 2 +float: 2 + +Function: Imaginary part of "cacosh": +double: 1 +float: 2 + +Function: "carg": +float: 1 + +Function: Real part of "casin": +double: 1 +float: 1 + +Function: Imaginary part of "casin": +double: 2 +float: 2 + +Function: Real part of "casinh": +double: 2 +float: 2 + +Function: Imaginary part of "casinh": +double: 1 +float: 1 + +Function: Real part of "catan": +double: 1 +float: 1 + +Function: Imaginary part of "catan": +double: 1 +float: 1 + +Function: Real part of "catanh": +double: 1 +float: 1 + +Function: Imaginary part of "catanh": +double: 1 +float: 1 + +Function: "cbrt": +double: 3 +float: 1 + +Function: Real part of "ccos": +double: 1 +float: 1 + +Function: Imaginary part of "ccos": +double: 1 +float: 1 + +Function: Real part of "ccosh": +double: 1 +float: 1 + +Function: Imaginary part of "ccosh": +double: 1 +float: 1 + +Function: Real part of "cexp": +double: 2 +float: 1 + +Function: Imaginary part of "cexp": +double: 1 +float: 2 + +Function: Real part of "clog": +double: 3 +float: 3 + +Function: Imaginary part of "clog": +float: 1 + +Function: Real part of "clog10": +double: 3 +float: 4 + +Function: Imaginary part of "clog10": +double: 2 +float: 2 + +Function: "cos": +double: 1 +float: 1 + +Function: "cosh": +double: 1 +float: 2 + +Function: Real part of "cpow": +double: 2 +float: 5 + +Function: Imaginary part of "cpow": +float: 2 + +Function: Real part of "csin": +double: 1 +float: 1 + +Function: Real part of "csinh": +float: 1 + +Function: Imaginary part of "csinh": +double: 1 +float: 1 + +Function: Real part of "csqrt": +double: 2 +float: 2 + +Function: Imaginary part of "csqrt": +double: 2 +float: 2 + +Function: Real part of "ctan": +double: 1 +float: 1 + +Function: Imaginary part of "ctan": +double: 2 +float: 2 + +Function: Real part of "ctanh": +double: 2 +float: 2 + +Function: Imaginary part of "ctanh": +double: 2 +float: 2 + +Function: "erf": +double: 1 +float: 1 + +Function: "erfc": +double: 3 +float: 3 + +Function: "exp": +float: 1 + +Function: "exp10": +double: 2 +float: 1 + +Function: "exp2": +double: 1 + +Function: "expm1": +double: 1 +float: 1 + +Function: "gamma": +double: 4 +float: 7 + +Function: "hypot": +double: 1 + +Function: "j0": +double: 2 +float: 8 + +Function: "j1": +double: 2 +float: 9 + +Function: "jn": +double: 4 +float: 4 + +Function: "lgamma": +double: 4 +float: 7 + +Function: "log10": +double: 2 +float: 2 + +Function: "log1p": +double: 1 +float: 1 + +Function: "log2": +double: 2 +float: 1 + +Function: "pow": +double: 1 + +Function: "sin": +double: 1 +float: 1 + +Function: "sincos": +double: 1 +float: 1 + +Function: "sinh": +double: 2 +float: 2 + +Function: "tan": +float: 1 + +Function: "tanh": +double: 2 +float: 2 + +Function: "tgamma": +double: 5 +float: 8 + +Function: "y0": +double: 3 +float: 8 + +Function: "y1": +double: 3 +float: 2 + +Function: "yn": +double: 3 +float: 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 000000000000..8a9879ebd635 --- /dev/null +++ b/sysdeps/arc/nofpu/libm-test-ulps-name @@ -0,0 +1 @@ +ARC soft-float diff --git a/sysdeps/unix/sysv/linux/arc/c++-types.data b/sysdeps/unix/sysv/linux/arc/c++-types.data new file mode 100644 index 000000000000..0fb0143ae746 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/c++-types.data @@ -0,0 +1,67 @@ +blkcnt64_t:x +blkcnt_t:x +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:y +fsfilcnt64_t:y +fsfilcnt_t:y +fsid_t:8__fsid_t +gid_t:j +id_t:j +ino64_t:y +ino_t:y +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:x +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:y +sigset_t:10__sigset_t +size_t:j +socklen_t:j +ssize_t:i +suseconds_t:x +time_t:x +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/ld.abilist b/sysdeps/unix/sysv/linux/arc/ld.abilist new file mode 100644 index 000000000000..048f17c8486f --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/ld.abilist @@ -0,0 +1,5 @@ +GLIBC_2.32 __libc_stack_end D 0x4 +GLIBC_2.32 __stack_chk_guard D 0x4 +GLIBC_2.32 __tls_get_addr F +GLIBC_2.32 _dl_mcount F +GLIBC_2.32 _r_debug D 0x14 diff --git a/sysdeps/unix/sysv/linux/arc/libBrokenLocale.abilist b/sysdeps/unix/sysv/linux/arc/libBrokenLocale.abilist new file mode 100644 index 000000000000..b0869cec1fb8 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/libBrokenLocale.abilist @@ -0,0 +1 @@ +GLIBC_2.32 __ctype_get_mb_cur_max F diff --git a/sysdeps/unix/sysv/linux/arc/libanl.abilist b/sysdeps/unix/sysv/linux/arc/libanl.abilist new file mode 100644 index 000000000000..ba513bd0289d --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/libanl.abilist @@ -0,0 +1,4 @@ +GLIBC_2.32 gai_cancel F +GLIBC_2.32 gai_error F +GLIBC_2.32 gai_suspend F +GLIBC_2.32 getaddrinfo_a F diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist new file mode 100644 index 000000000000..6e847cff8a70 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist @@ -0,0 +1,2085 @@ +GLIBC_2.32 _Exit F +GLIBC_2.32 _IO_2_1_stderr_ D 0x9c +GLIBC_2.32 _IO_2_1_stdin_ D 0x9c +GLIBC_2.32 _IO_2_1_stdout_ D 0x9c +GLIBC_2.32 _IO_adjust_column F +GLIBC_2.32 _IO_adjust_wcolumn F +GLIBC_2.32 _IO_default_doallocate F +GLIBC_2.32 _IO_default_finish F +GLIBC_2.32 _IO_default_pbackfail F +GLIBC_2.32 _IO_default_uflow F +GLIBC_2.32 _IO_default_xsgetn F +GLIBC_2.32 _IO_default_xsputn F +GLIBC_2.32 _IO_do_write F +GLIBC_2.32 _IO_doallocbuf F +GLIBC_2.32 _IO_fclose F +GLIBC_2.32 _IO_fdopen F +GLIBC_2.32 _IO_feof F +GLIBC_2.32 _IO_ferror F +GLIBC_2.32 _IO_fflush F +GLIBC_2.32 _IO_fgetpos F +GLIBC_2.32 _IO_fgetpos64 F +GLIBC_2.32 _IO_fgets F +GLIBC_2.32 _IO_file_attach F +GLIBC_2.32 _IO_file_close F +GLIBC_2.32 _IO_file_close_it F +GLIBC_2.32 _IO_file_doallocate F +GLIBC_2.32 _IO_file_finish F +GLIBC_2.32 _IO_file_fopen F +GLIBC_2.32 _IO_file_init F +GLIBC_2.32 _IO_file_jumps D 0x54 +GLIBC_2.32 _IO_file_open F +GLIBC_2.32 _IO_file_overflow F +GLIBC_2.32 _IO_file_read F +GLIBC_2.32 _IO_file_seek F +GLIBC_2.32 _IO_file_seekoff F +GLIBC_2.32 _IO_file_setbuf F +GLIBC_2.32 _IO_file_stat F +GLIBC_2.32 _IO_file_sync F +GLIBC_2.32 _IO_file_underflow F +GLIBC_2.32 _IO_file_write F +GLIBC_2.32 _IO_file_xsputn F +GLIBC_2.32 _IO_flockfile F +GLIBC_2.32 _IO_flush_all F +GLIBC_2.32 _IO_flush_all_linebuffered F +GLIBC_2.32 _IO_fopen F +GLIBC_2.32 _IO_fprintf F +GLIBC_2.32 _IO_fputs F +GLIBC_2.32 _IO_fread F +GLIBC_2.32 _IO_free_backup_area F +GLIBC_2.32 _IO_free_wbackup_area F +GLIBC_2.32 _IO_fsetpos F +GLIBC_2.32 _IO_fsetpos64 F +GLIBC_2.32 _IO_ftell F +GLIBC_2.32 _IO_ftrylockfile F +GLIBC_2.32 _IO_funlockfile F +GLIBC_2.32 _IO_fwrite F +GLIBC_2.32 _IO_getc F +GLIBC_2.32 _IO_getline F +GLIBC_2.32 _IO_getline_info F +GLIBC_2.32 _IO_gets F +GLIBC_2.32 _IO_init F +GLIBC_2.32 _IO_init_marker F +GLIBC_2.32 _IO_init_wmarker F +GLIBC_2.32 _IO_iter_begin F +GLIBC_2.32 _IO_iter_end F +GLIBC_2.32 _IO_iter_file F +GLIBC_2.32 _IO_iter_next F +GLIBC_2.32 _IO_least_wmarker F +GLIBC_2.32 _IO_link_in F +GLIBC_2.32 _IO_list_all D 0x4 +GLIBC_2.32 _IO_list_lock F +GLIBC_2.32 _IO_list_resetlock F +GLIBC_2.32 _IO_list_unlock F +GLIBC_2.32 _IO_marker_delta F +GLIBC_2.32 _IO_marker_difference F +GLIBC_2.32 _IO_padn F +GLIBC_2.32 _IO_peekc_locked F +GLIBC_2.32 _IO_popen F +GLIBC_2.32 _IO_printf F +GLIBC_2.32 _IO_proc_close F +GLIBC_2.32 _IO_proc_open F +GLIBC_2.32 _IO_putc F +GLIBC_2.32 _IO_puts F +GLIBC_2.32 _IO_remove_marker F +GLIBC_2.32 _IO_seekmark F +GLIBC_2.32 _IO_seekoff F +GLIBC_2.32 _IO_seekpos F +GLIBC_2.32 _IO_seekwmark F +GLIBC_2.32 _IO_setb F +GLIBC_2.32 _IO_setbuffer F +GLIBC_2.32 _IO_setvbuf F +GLIBC_2.32 _IO_sgetn F +GLIBC_2.32 _IO_sprintf F +GLIBC_2.32 _IO_sputbackc F +GLIBC_2.32 _IO_sputbackwc F +GLIBC_2.32 _IO_sscanf F +GLIBC_2.32 _IO_str_init_readonly F +GLIBC_2.32 _IO_str_init_static F +GLIBC_2.32 _IO_str_overflow F +GLIBC_2.32 _IO_str_pbackfail F +GLIBC_2.32 _IO_str_seekoff F +GLIBC_2.32 _IO_str_underflow F +GLIBC_2.32 _IO_sungetc F +GLIBC_2.32 _IO_sungetwc F +GLIBC_2.32 _IO_switch_to_get_mode F +GLIBC_2.32 _IO_switch_to_main_wget_area F +GLIBC_2.32 _IO_switch_to_wbackup_area F +GLIBC_2.32 _IO_switch_to_wget_mode F +GLIBC_2.32 _IO_un_link F +GLIBC_2.32 _IO_ungetc F +GLIBC_2.32 _IO_unsave_markers F +GLIBC_2.32 _IO_unsave_wmarkers F +GLIBC_2.32 _IO_vfprintf F +GLIBC_2.32 _IO_vsprintf F +GLIBC_2.32 _IO_wdefault_doallocate F +GLIBC_2.32 _IO_wdefault_finish F +GLIBC_2.32 _IO_wdefault_pbackfail F +GLIBC_2.32 _IO_wdefault_uflow F +GLIBC_2.32 _IO_wdefault_xsgetn F +GLIBC_2.32 _IO_wdefault_xsputn F +GLIBC_2.32 _IO_wdo_write F +GLIBC_2.32 _IO_wdoallocbuf F +GLIBC_2.32 _IO_wfile_jumps D 0x54 +GLIBC_2.32 _IO_wfile_overflow F +GLIBC_2.32 _IO_wfile_seekoff F +GLIBC_2.32 _IO_wfile_sync F +GLIBC_2.32 _IO_wfile_underflow F +GLIBC_2.32 _IO_wfile_xsputn F +GLIBC_2.32 _IO_wmarker_delta F +GLIBC_2.32 _IO_wsetb F +GLIBC_2.32 ___brk_addr D 0x4 +GLIBC_2.32 __adjtimex F +GLIBC_2.32 __after_morecore_hook D 0x4 +GLIBC_2.32 __argz_count F +GLIBC_2.32 __argz_next F +GLIBC_2.32 __argz_stringify F +GLIBC_2.32 __asprintf F +GLIBC_2.32 __asprintf_chk F +GLIBC_2.32 __assert F +GLIBC_2.32 __assert_fail F +GLIBC_2.32 __assert_perror_fail F +GLIBC_2.32 __backtrace F +GLIBC_2.32 __backtrace_symbols F +GLIBC_2.32 __backtrace_symbols_fd F +GLIBC_2.32 __bsd_getpgrp F +GLIBC_2.32 __bzero F +GLIBC_2.32 __check_rhosts_file D 0x4 +GLIBC_2.32 __chk_fail F +GLIBC_2.32 __clone F +GLIBC_2.32 __close F +GLIBC_2.32 __cmsg_nxthdr F +GLIBC_2.32 __confstr_chk F +GLIBC_2.32 __connect F +GLIBC_2.32 __ctype_b_loc F +GLIBC_2.32 __ctype_get_mb_cur_max F +GLIBC_2.32 __ctype_tolower_loc F +GLIBC_2.32 __ctype_toupper_loc F +GLIBC_2.32 __curbrk D 0x4 +GLIBC_2.32 __cxa_at_quick_exit F +GLIBC_2.32 __cxa_atexit F +GLIBC_2.32 __cxa_finalize F +GLIBC_2.32 __cxa_thread_atexit_impl F +GLIBC_2.32 __cyg_profile_func_enter F +GLIBC_2.32 __cyg_profile_func_exit F +GLIBC_2.32 __daylight D 0x4 +GLIBC_2.32 __dcgettext F +GLIBC_2.32 __default_morecore F +GLIBC_2.32 __dgettext F +GLIBC_2.32 __dprintf_chk F +GLIBC_2.32 __dup2 F +GLIBC_2.32 __duplocale F +GLIBC_2.32 __endmntent F +GLIBC_2.32 __environ D 0x4 +GLIBC_2.32 __errno_location F +GLIBC_2.32 __explicit_bzero_chk F +GLIBC_2.32 __fbufsize F +GLIBC_2.32 __fcntl F +GLIBC_2.32 __fdelt_chk F +GLIBC_2.32 __fdelt_warn F +GLIBC_2.32 __ffs F +GLIBC_2.32 __fgets_chk F +GLIBC_2.32 __fgets_unlocked_chk F +GLIBC_2.32 __fgetws_chk F +GLIBC_2.32 __fgetws_unlocked_chk F +GLIBC_2.32 __finite F +GLIBC_2.32 __finitef F +GLIBC_2.32 __flbf F +GLIBC_2.32 __fork F +GLIBC_2.32 __fpending F +GLIBC_2.32 __fprintf_chk F +GLIBC_2.32 __fpu_control D 0x4 +GLIBC_2.32 __fpurge F +GLIBC_2.32 __fread_chk F +GLIBC_2.32 __fread_unlocked_chk F +GLIBC_2.32 __freadable F +GLIBC_2.32 __freading F +GLIBC_2.32 __free_hook D 0x4 +GLIBC_2.32 __freelocale F +GLIBC_2.32 __fsetlocking F +GLIBC_2.32 __fwprintf_chk F +GLIBC_2.32 __fwritable F +GLIBC_2.32 __fwriting F +GLIBC_2.32 __fxstat F +GLIBC_2.32 __fxstat64 F +GLIBC_2.32 __fxstatat F +GLIBC_2.32 __fxstatat64 F +GLIBC_2.32 __getauxval F +GLIBC_2.32 __getcwd_chk F +GLIBC_2.32 __getdelim F +GLIBC_2.32 __getdomainname_chk F +GLIBC_2.32 __getgroups_chk F +GLIBC_2.32 __gethostname_chk F +GLIBC_2.32 __getlogin_r_chk F +GLIBC_2.32 __getmntent_r F +GLIBC_2.32 __getpagesize F +GLIBC_2.32 __getpgid F +GLIBC_2.32 __getpid F +GLIBC_2.32 __gets_chk F +GLIBC_2.32 __gettimeofday F +GLIBC_2.32 __getwd_chk F +GLIBC_2.32 __gmtime_r F +GLIBC_2.32 __h_errno_location F +GLIBC_2.32 __isalnum_l F +GLIBC_2.32 __isalpha_l F +GLIBC_2.32 __isascii_l F +GLIBC_2.32 __isblank_l F +GLIBC_2.32 __iscntrl_l F +GLIBC_2.32 __isctype F +GLIBC_2.32 __isdigit_l F +GLIBC_2.32 __isgraph_l F +GLIBC_2.32 __isinf F +GLIBC_2.32 __isinff F +GLIBC_2.32 __islower_l F +GLIBC_2.32 __isnan F +GLIBC_2.32 __isnanf F +GLIBC_2.32 __isoc99_fscanf F +GLIBC_2.32 __isoc99_fwscanf F +GLIBC_2.32 __isoc99_scanf F +GLIBC_2.32 __isoc99_sscanf F +GLIBC_2.32 __isoc99_swscanf F +GLIBC_2.32 __isoc99_vfscanf F +GLIBC_2.32 __isoc99_vfwscanf F +GLIBC_2.32 __isoc99_vscanf F +GLIBC_2.32 __isoc99_vsscanf F +GLIBC_2.32 __isoc99_vswscanf F +GLIBC_2.32 __isoc99_vwscanf F +GLIBC_2.32 __isoc99_wscanf F +GLIBC_2.32 __isprint_l F +GLIBC_2.32 __ispunct_l F +GLIBC_2.32 __isspace_l F +GLIBC_2.32 __isupper_l F +GLIBC_2.32 __iswalnum_l F +GLIBC_2.32 __iswalpha_l F +GLIBC_2.32 __iswblank_l F +GLIBC_2.32 __iswcntrl_l F +GLIBC_2.32 __iswctype F +GLIBC_2.32 __iswctype_l F +GLIBC_2.32 __iswdigit_l F +GLIBC_2.32 __iswgraph_l F +GLIBC_2.32 __iswlower_l F +GLIBC_2.32 __iswprint_l F +GLIBC_2.32 __iswpunct_l F +GLIBC_2.32 __iswspace_l F +GLIBC_2.32 __iswupper_l F +GLIBC_2.32 __iswxdigit_l F +GLIBC_2.32 __isxdigit_l F +GLIBC_2.32 __ivaliduser F +GLIBC_2.32 __key_decryptsession_pk_LOCAL D 0x4 +GLIBC_2.32 __key_encryptsession_pk_LOCAL D 0x4 +GLIBC_2.32 __key_gendes_LOCAL D 0x4 +GLIBC_2.32 __libc_allocate_rtsig F +GLIBC_2.32 __libc_calloc F +GLIBC_2.32 __libc_current_sigrtmax F +GLIBC_2.32 __libc_current_sigrtmin F +GLIBC_2.32 __libc_free F +GLIBC_2.32 __libc_freeres F +GLIBC_2.32 __libc_init_first F +GLIBC_2.32 __libc_mallinfo F +GLIBC_2.32 __libc_malloc F +GLIBC_2.32 __libc_mallopt F +GLIBC_2.32 __libc_memalign F +GLIBC_2.32 __libc_pvalloc F +GLIBC_2.32 __libc_realloc F +GLIBC_2.32 __libc_sa_len F +GLIBC_2.32 __libc_single_threaded D 0x1 +GLIBC_2.32 __libc_start_main F +GLIBC_2.32 __libc_valloc F +GLIBC_2.32 __longjmp_chk F +GLIBC_2.32 __lseek F +GLIBC_2.32 __lxstat F +GLIBC_2.32 __lxstat64 F +GLIBC_2.32 __malloc_hook D 0x4 +GLIBC_2.32 __mbrlen F +GLIBC_2.32 __mbrtowc F +GLIBC_2.32 __mbsnrtowcs_chk F +GLIBC_2.32 __mbsrtowcs_chk F +GLIBC_2.32 __mbstowcs_chk F +GLIBC_2.32 __memalign_hook D 0x4 +GLIBC_2.32 __memcpy_chk F +GLIBC_2.32 __memmove_chk F +GLIBC_2.32 __mempcpy F +GLIBC_2.32 __mempcpy_chk F +GLIBC_2.32 __memset_chk F +GLIBC_2.32 __monstartup F +GLIBC_2.32 __morecore D 0x4 +GLIBC_2.32 __nanosleep F +GLIBC_2.32 __newlocale F +GLIBC_2.32 __nl_langinfo_l F +GLIBC_2.32 __nss_configure_lookup F +GLIBC_2.32 __nss_hostname_digits_dots F +GLIBC_2.32 __obstack_printf_chk F +GLIBC_2.32 __obstack_vprintf_chk F +GLIBC_2.32 __open F +GLIBC_2.32 __open64 F +GLIBC_2.32 __open64_2 F +GLIBC_2.32 __open_2 F +GLIBC_2.32 __openat64_2 F +GLIBC_2.32 __openat_2 F +GLIBC_2.32 __overflow F +GLIBC_2.32 __pipe F +GLIBC_2.32 __poll F +GLIBC_2.32 __poll_chk F +GLIBC_2.32 __posix_getopt F +GLIBC_2.32 __ppoll_chk F +GLIBC_2.32 __pread64 F +GLIBC_2.32 __pread64_chk F +GLIBC_2.32 __pread_chk F +GLIBC_2.32 __printf_chk F +GLIBC_2.32 __printf_fp F +GLIBC_2.32 __profile_frequency F +GLIBC_2.32 __progname D 0x4 +GLIBC_2.32 __progname_full D 0x4 +GLIBC_2.32 __ptsname_r_chk F +GLIBC_2.32 __pwrite64 F +GLIBC_2.32 __rawmemchr F +GLIBC_2.32 __rcmd_errstr D 0x4 +GLIBC_2.32 __read F +GLIBC_2.32 __read_chk F +GLIBC_2.32 __readlink_chk F +GLIBC_2.32 __readlinkat_chk F +GLIBC_2.32 __realloc_hook D 0x4 +GLIBC_2.32 __realpath_chk F +GLIBC_2.32 __recv_chk F +GLIBC_2.32 __recvfrom_chk F +GLIBC_2.32 __register_atfork F +GLIBC_2.32 __res_init F +GLIBC_2.32 __res_nclose F +GLIBC_2.32 __res_ninit F +GLIBC_2.32 __res_randomid F +GLIBC_2.32 __res_state F +GLIBC_2.32 __rpc_thread_createerr F +GLIBC_2.32 __rpc_thread_svc_fdset F +GLIBC_2.32 __rpc_thread_svc_max_pollfd F +GLIBC_2.32 __rpc_thread_svc_pollfd F +GLIBC_2.32 __rseq_abi T 0x20 +GLIBC_2.32 __sbrk F +GLIBC_2.32 __sched_cpualloc F +GLIBC_2.32 __sched_cpucount F +GLIBC_2.32 __sched_cpufree F +GLIBC_2.32 __sched_get_priority_max F +GLIBC_2.32 __sched_get_priority_min F +GLIBC_2.32 __sched_getparam F +GLIBC_2.32 __sched_getscheduler F +GLIBC_2.32 __sched_setscheduler F +GLIBC_2.32 __sched_yield F +GLIBC_2.32 __select F +GLIBC_2.32 __send F +GLIBC_2.32 __setmntent F +GLIBC_2.32 __setpgid F +GLIBC_2.32 __sigaction F +GLIBC_2.32 __signbit F +GLIBC_2.32 __signbitf F +GLIBC_2.32 __sigpause F +GLIBC_2.32 __sigsetjmp F +GLIBC_2.32 __sigsuspend F +GLIBC_2.32 __snprintf_chk F +GLIBC_2.32 __sprintf_chk F +GLIBC_2.32 __stack_chk_fail F +GLIBC_2.32 __statfs F +GLIBC_2.32 __stpcpy F +GLIBC_2.32 __stpcpy_chk F +GLIBC_2.32 __stpncpy F +GLIBC_2.32 __stpncpy_chk F +GLIBC_2.32 __strcasecmp F +GLIBC_2.32 __strcasecmp_l F +GLIBC_2.32 __strcasestr F +GLIBC_2.32 __strcat_chk F +GLIBC_2.32 __strcoll_l F +GLIBC_2.32 __strcpy_chk F +GLIBC_2.32 __strdup F +GLIBC_2.32 __strerror_r F +GLIBC_2.32 __strfmon_l F +GLIBC_2.32 __strftime_l F +GLIBC_2.32 __strncasecmp_l F +GLIBC_2.32 __strncat_chk F +GLIBC_2.32 __strncpy_chk F +GLIBC_2.32 __strndup F +GLIBC_2.32 __strsep_g F +GLIBC_2.32 __strtod_internal F +GLIBC_2.32 __strtod_l F +GLIBC_2.32 __strtof_internal F +GLIBC_2.32 __strtof_l F +GLIBC_2.32 __strtok_r F +GLIBC_2.32 __strtol_internal F +GLIBC_2.32 __strtol_l F +GLIBC_2.32 __strtold_internal F +GLIBC_2.32 __strtold_l F +GLIBC_2.32 __strtoll_internal F +GLIBC_2.32 __strtoll_l F +GLIBC_2.32 __strtoul_internal F +GLIBC_2.32 __strtoul_l F +GLIBC_2.32 __strtoull_internal F +GLIBC_2.32 __strtoull_l F +GLIBC_2.32 __strverscmp F +GLIBC_2.32 __strxfrm_l F +GLIBC_2.32 __swprintf_chk F +GLIBC_2.32 __sysconf F +GLIBC_2.32 __syslog_chk F +GLIBC_2.32 __sysv_signal F +GLIBC_2.32 __timezone D 0x4 +GLIBC_2.32 __toascii_l F +GLIBC_2.32 __tolower_l F +GLIBC_2.32 __toupper_l F +GLIBC_2.32 __towctrans F +GLIBC_2.32 __towctrans_l F +GLIBC_2.32 __towlower_l F +GLIBC_2.32 __towupper_l F +GLIBC_2.32 __ttyname_r_chk F +GLIBC_2.32 __tzname D 0x8 +GLIBC_2.32 __uflow F +GLIBC_2.32 __underflow F +GLIBC_2.32 __uselocale F +GLIBC_2.32 __vasprintf_chk F +GLIBC_2.32 __vdprintf_chk F +GLIBC_2.32 __vfork F +GLIBC_2.32 __vfprintf_chk F +GLIBC_2.32 __vfscanf F +GLIBC_2.32 __vfwprintf_chk F +GLIBC_2.32 __vprintf_chk F +GLIBC_2.32 __vsnprintf F +GLIBC_2.32 __vsnprintf_chk F +GLIBC_2.32 __vsprintf_chk F +GLIBC_2.32 __vsscanf F +GLIBC_2.32 __vswprintf_chk F +GLIBC_2.32 __vsyslog_chk F +GLIBC_2.32 __vwprintf_chk F +GLIBC_2.32 __wait F +GLIBC_2.32 __waitpid F +GLIBC_2.32 __wcpcpy_chk F +GLIBC_2.32 __wcpncpy_chk F +GLIBC_2.32 __wcrtomb_chk F +GLIBC_2.32 __wcscasecmp_l F +GLIBC_2.32 __wcscat_chk F +GLIBC_2.32 __wcscoll_l F +GLIBC_2.32 __wcscpy_chk F +GLIBC_2.32 __wcsftime_l F +GLIBC_2.32 __wcsncasecmp_l F +GLIBC_2.32 __wcsncat_chk F +GLIBC_2.32 __wcsncpy_chk F +GLIBC_2.32 __wcsnrtombs_chk F +GLIBC_2.32 __wcsrtombs_chk F +GLIBC_2.32 __wcstod_internal F +GLIBC_2.32 __wcstod_l F +GLIBC_2.32 __wcstof_internal F +GLIBC_2.32 __wcstof_l F +GLIBC_2.32 __wcstol_internal F +GLIBC_2.32 __wcstol_l F +GLIBC_2.32 __wcstold_internal F +GLIBC_2.32 __wcstold_l F +GLIBC_2.32 __wcstoll_internal F +GLIBC_2.32 __wcstoll_l F +GLIBC_2.32 __wcstombs_chk F +GLIBC_2.32 __wcstoul_internal F +GLIBC_2.32 __wcstoul_l F +GLIBC_2.32 __wcstoull_internal F +GLIBC_2.32 __wcstoull_l F +GLIBC_2.32 __wcsxfrm_l F +GLIBC_2.32 __wctomb_chk F +GLIBC_2.32 __wctrans_l F +GLIBC_2.32 __wctype_l F +GLIBC_2.32 __wmemcpy_chk F +GLIBC_2.32 __wmemmove_chk F +GLIBC_2.32 __wmempcpy_chk F +GLIBC_2.32 __wmemset_chk F +GLIBC_2.32 __woverflow F +GLIBC_2.32 __wprintf_chk F +GLIBC_2.32 __write F +GLIBC_2.32 __wuflow F +GLIBC_2.32 __wunderflow F +GLIBC_2.32 __xmknod F +GLIBC_2.32 __xmknodat F +GLIBC_2.32 __xpg_basename F +GLIBC_2.32 __xpg_sigpause F +GLIBC_2.32 __xpg_strerror_r F +GLIBC_2.32 __xstat F +GLIBC_2.32 __xstat64 F +GLIBC_2.32 _authenticate F +GLIBC_2.32 _dl_mcount_wrapper F +GLIBC_2.32 _dl_mcount_wrapper_check F +GLIBC_2.32 _environ D 0x4 +GLIBC_2.32 _exit F +GLIBC_2.32 _flush_cache F +GLIBC_2.32 _flushlbf F +GLIBC_2.32 _libc_intl_domainname D 0x5 +GLIBC_2.32 _longjmp F +GLIBC_2.32 _mcleanup F +GLIBC_2.32 _mcount F +GLIBC_2.32 _nl_default_dirname D 0x12 +GLIBC_2.32 _nl_domain_bindings D 0x4 +GLIBC_2.32 _nl_msg_cat_cntr D 0x4 +GLIBC_2.32 _null_auth D 0xc +GLIBC_2.32 _obstack_allocated_p F +GLIBC_2.32 _obstack_begin F +GLIBC_2.32 _obstack_begin_1 F +GLIBC_2.32 _obstack_free F +GLIBC_2.32 _obstack_memory_used F +GLIBC_2.32 _obstack_newchunk F +GLIBC_2.32 _res D 0x200 +GLIBC_2.32 _res_hconf D 0x30 +GLIBC_2.32 _rpc_dtablesize F +GLIBC_2.32 _seterr_reply F +GLIBC_2.32 _setjmp F +GLIBC_2.32 _tolower F +GLIBC_2.32 _toupper F +GLIBC_2.32 a64l F +GLIBC_2.32 abort F +GLIBC_2.32 abs F +GLIBC_2.32 accept F +GLIBC_2.32 accept4 F +GLIBC_2.32 access F +GLIBC_2.32 acct F +GLIBC_2.32 addmntent F +GLIBC_2.32 addseverity F +GLIBC_2.32 adjtime F +GLIBC_2.32 adjtimex F +GLIBC_2.32 alarm F +GLIBC_2.32 aligned_alloc F +GLIBC_2.32 alphasort F +GLIBC_2.32 alphasort64 F +GLIBC_2.32 argp_err_exit_status D 0x4 +GLIBC_2.32 argp_error F +GLIBC_2.32 argp_failure F +GLIBC_2.32 argp_help F +GLIBC_2.32 argp_parse F +GLIBC_2.32 argp_program_bug_address D 0x4 +GLIBC_2.32 argp_program_version D 0x4 +GLIBC_2.32 argp_program_version_hook D 0x4 +GLIBC_2.32 argp_state_help F +GLIBC_2.32 argp_usage F +GLIBC_2.32 argz_add F +GLIBC_2.32 argz_add_sep F +GLIBC_2.32 argz_append F +GLIBC_2.32 argz_count F +GLIBC_2.32 argz_create F +GLIBC_2.32 argz_create_sep F +GLIBC_2.32 argz_delete F +GLIBC_2.32 argz_extract F +GLIBC_2.32 argz_insert F +GLIBC_2.32 argz_next F +GLIBC_2.32 argz_replace F +GLIBC_2.32 argz_stringify F +GLIBC_2.32 asctime F +GLIBC_2.32 asctime_r F +GLIBC_2.32 asprintf F +GLIBC_2.32 atof F +GLIBC_2.32 atoi F +GLIBC_2.32 atol F +GLIBC_2.32 atoll F +GLIBC_2.32 authdes_create F +GLIBC_2.32 authdes_getucred F +GLIBC_2.32 authdes_pk_create F +GLIBC_2.32 authnone_create F +GLIBC_2.32 authunix_create F +GLIBC_2.32 authunix_create_default F +GLIBC_2.32 backtrace F +GLIBC_2.32 backtrace_symbols F +GLIBC_2.32 backtrace_symbols_fd F +GLIBC_2.32 basename F +GLIBC_2.32 bcmp F +GLIBC_2.32 bcopy F +GLIBC_2.32 bind F +GLIBC_2.32 bind_textdomain_codeset F +GLIBC_2.32 bindresvport F +GLIBC_2.32 bindtextdomain F +GLIBC_2.32 brk F +GLIBC_2.32 bsd_signal F +GLIBC_2.32 bsearch F +GLIBC_2.32 btowc F +GLIBC_2.32 bzero F +GLIBC_2.32 c16rtomb F +GLIBC_2.32 c32rtomb F +GLIBC_2.32 cacheflush F +GLIBC_2.32 calloc F +GLIBC_2.32 callrpc F +GLIBC_2.32 canonicalize_file_name F +GLIBC_2.32 capget F +GLIBC_2.32 capset F +GLIBC_2.32 catclose F +GLIBC_2.32 catgets F +GLIBC_2.32 catopen F +GLIBC_2.32 cbc_crypt F +GLIBC_2.32 cfgetispeed F +GLIBC_2.32 cfgetospeed F +GLIBC_2.32 cfmakeraw F +GLIBC_2.32 cfsetispeed F +GLIBC_2.32 cfsetospeed F +GLIBC_2.32 cfsetspeed F +GLIBC_2.32 chdir F +GLIBC_2.32 chflags F +GLIBC_2.32 chmod F +GLIBC_2.32 chown F +GLIBC_2.32 chroot F +GLIBC_2.32 clearenv F +GLIBC_2.32 clearerr F +GLIBC_2.32 clearerr_unlocked F +GLIBC_2.32 clnt_broadcast F +GLIBC_2.32 clnt_create F +GLIBC_2.32 clnt_pcreateerror F +GLIBC_2.32 clnt_perrno F +GLIBC_2.32 clnt_perror F +GLIBC_2.32 clnt_spcreateerror F +GLIBC_2.32 clnt_sperrno F +GLIBC_2.32 clnt_sperror F +GLIBC_2.32 clntraw_create F +GLIBC_2.32 clnttcp_create F +GLIBC_2.32 clntudp_bufcreate F +GLIBC_2.32 clntudp_create F +GLIBC_2.32 clntunix_create F +GLIBC_2.32 clock F +GLIBC_2.32 clock_adjtime F +GLIBC_2.32 clock_getcpuclockid F +GLIBC_2.32 clock_getres F +GLIBC_2.32 clock_gettime F +GLIBC_2.32 clock_nanosleep F +GLIBC_2.32 clock_settime F +GLIBC_2.32 clone F +GLIBC_2.32 close F +GLIBC_2.32 closedir F +GLIBC_2.32 closelog F +GLIBC_2.32 confstr F +GLIBC_2.32 connect F +GLIBC_2.32 copy_file_range F +GLIBC_2.32 copysign F +GLIBC_2.32 copysignf F +GLIBC_2.32 copysignl F +GLIBC_2.32 creat F +GLIBC_2.32 creat64 F +GLIBC_2.32 ctermid F +GLIBC_2.32 ctime F +GLIBC_2.32 ctime_r F +GLIBC_2.32 cuserid F +GLIBC_2.32 daemon F +GLIBC_2.32 daylight D 0x4 +GLIBC_2.32 dcgettext F +GLIBC_2.32 dcngettext F +GLIBC_2.32 delete_module F +GLIBC_2.32 des_setparity F +GLIBC_2.32 dgettext F +GLIBC_2.32 difftime F +GLIBC_2.32 dirfd F +GLIBC_2.32 dirname F +GLIBC_2.32 div F +GLIBC_2.32 dl_iterate_phdr F +GLIBC_2.32 dngettext F +GLIBC_2.32 dprintf F +GLIBC_2.32 drand48 F +GLIBC_2.32 drand48_r F +GLIBC_2.32 dup F +GLIBC_2.32 dup2 F +GLIBC_2.32 dup3 F +GLIBC_2.32 duplocale F +GLIBC_2.32 dysize F +GLIBC_2.32 eaccess F +GLIBC_2.32 ecb_crypt F +GLIBC_2.32 ecvt F +GLIBC_2.32 ecvt_r F +GLIBC_2.32 endaliasent F +GLIBC_2.32 endfsent F +GLIBC_2.32 endgrent F +GLIBC_2.32 endhostent F +GLIBC_2.32 endmntent F +GLIBC_2.32 endnetent F +GLIBC_2.32 endnetgrent F +GLIBC_2.32 endprotoent F +GLIBC_2.32 endpwent F +GLIBC_2.32 endrpcent F +GLIBC_2.32 endservent F +GLIBC_2.32 endsgent F +GLIBC_2.32 endspent F +GLIBC_2.32 endttyent F +GLIBC_2.32 endusershell F +GLIBC_2.32 endutent F +GLIBC_2.32 endutxent F +GLIBC_2.32 environ D 0x4 +GLIBC_2.32 envz_add F +GLIBC_2.32 envz_entry F +GLIBC_2.32 envz_get F +GLIBC_2.32 envz_merge F +GLIBC_2.32 envz_remove F +GLIBC_2.32 envz_strip F +GLIBC_2.32 epoll_create F +GLIBC_2.32 epoll_create1 F +GLIBC_2.32 epoll_ctl F +GLIBC_2.32 epoll_pwait F +GLIBC_2.32 epoll_wait F +GLIBC_2.32 erand48 F +GLIBC_2.32 erand48_r F +GLIBC_2.32 err F +GLIBC_2.32 error F +GLIBC_2.32 error_at_line F +GLIBC_2.32 error_message_count D 0x4 +GLIBC_2.32 error_one_per_line D 0x4 +GLIBC_2.32 error_print_progname D 0x4 +GLIBC_2.32 errx F +GLIBC_2.32 ether_aton F +GLIBC_2.32 ether_aton_r F +GLIBC_2.32 ether_hostton F +GLIBC_2.32 ether_line F +GLIBC_2.32 ether_ntoa F +GLIBC_2.32 ether_ntoa_r F +GLIBC_2.32 ether_ntohost F +GLIBC_2.32 euidaccess F +GLIBC_2.32 eventfd F +GLIBC_2.32 eventfd_read F +GLIBC_2.32 eventfd_write F +GLIBC_2.32 execl F +GLIBC_2.32 execle F +GLIBC_2.32 execlp F +GLIBC_2.32 execv F +GLIBC_2.32 execve F +GLIBC_2.32 execvp F +GLIBC_2.32 execvpe F +GLIBC_2.32 exit F +GLIBC_2.32 explicit_bzero F +GLIBC_2.32 faccessat F +GLIBC_2.32 fallocate F +GLIBC_2.32 fallocate64 F +GLIBC_2.32 fanotify_init F +GLIBC_2.32 fanotify_mark F +GLIBC_2.32 fchdir F +GLIBC_2.32 fchflags F +GLIBC_2.32 fchmod F +GLIBC_2.32 fchmodat F +GLIBC_2.32 fchown F +GLIBC_2.32 fchownat F +GLIBC_2.32 fclose F +GLIBC_2.32 fcloseall F +GLIBC_2.32 fcntl F +GLIBC_2.32 fcntl64 F +GLIBC_2.32 fcvt F +GLIBC_2.32 fcvt_r F +GLIBC_2.32 fdatasync F +GLIBC_2.32 fdopen F +GLIBC_2.32 fdopendir F +GLIBC_2.32 feof F +GLIBC_2.32 feof_unlocked F +GLIBC_2.32 ferror F +GLIBC_2.32 ferror_unlocked F +GLIBC_2.32 fexecve F +GLIBC_2.32 fflush F +GLIBC_2.32 fflush_unlocked F +GLIBC_2.32 ffs F +GLIBC_2.32 ffsl F +GLIBC_2.32 ffsll F +GLIBC_2.32 fgetc F +GLIBC_2.32 fgetc_unlocked F +GLIBC_2.32 fgetgrent F +GLIBC_2.32 fgetgrent_r F +GLIBC_2.32 fgetpos F +GLIBC_2.32 fgetpos64 F +GLIBC_2.32 fgetpwent F +GLIBC_2.32 fgetpwent_r F +GLIBC_2.32 fgets F +GLIBC_2.32 fgets_unlocked F +GLIBC_2.32 fgetsgent F +GLIBC_2.32 fgetsgent_r F +GLIBC_2.32 fgetspent F +GLIBC_2.32 fgetspent_r F +GLIBC_2.32 fgetwc F +GLIBC_2.32 fgetwc_unlocked F +GLIBC_2.32 fgetws F +GLIBC_2.32 fgetws_unlocked F +GLIBC_2.32 fgetxattr F +GLIBC_2.32 fileno F +GLIBC_2.32 fileno_unlocked F +GLIBC_2.32 finite F +GLIBC_2.32 finitef F +GLIBC_2.32 finitel F +GLIBC_2.32 flistxattr F +GLIBC_2.32 flock F +GLIBC_2.32 flockfile F +GLIBC_2.32 fmemopen F +GLIBC_2.32 fmtmsg F +GLIBC_2.32 fnmatch F +GLIBC_2.32 fopen F +GLIBC_2.32 fopen64 F +GLIBC_2.32 fopencookie F +GLIBC_2.32 fork F +GLIBC_2.32 fpathconf F +GLIBC_2.32 fprintf F +GLIBC_2.32 fputc F +GLIBC_2.32 fputc_unlocked F +GLIBC_2.32 fputs F +GLIBC_2.32 fputs_unlocked F +GLIBC_2.32 fputwc F +GLIBC_2.32 fputwc_unlocked F +GLIBC_2.32 fputws F +GLIBC_2.32 fputws_unlocked F +GLIBC_2.32 fread F +GLIBC_2.32 fread_unlocked F +GLIBC_2.32 free F +GLIBC_2.32 freeaddrinfo F +GLIBC_2.32 freeifaddrs F +GLIBC_2.32 freelocale F +GLIBC_2.32 fremovexattr F +GLIBC_2.32 freopen F +GLIBC_2.32 freopen64 F +GLIBC_2.32 frexp F +GLIBC_2.32 frexpf F +GLIBC_2.32 frexpl F +GLIBC_2.32 fscanf F +GLIBC_2.32 fseek F +GLIBC_2.32 fseeko F +GLIBC_2.32 fseeko64 F +GLIBC_2.32 fsetpos F +GLIBC_2.32 fsetpos64 F +GLIBC_2.32 fsetxattr F +GLIBC_2.32 fstatfs F +GLIBC_2.32 fstatfs64 F +GLIBC_2.32 fstatvfs F +GLIBC_2.32 fstatvfs64 F +GLIBC_2.32 fsync F +GLIBC_2.32 ftell F +GLIBC_2.32 ftello F +GLIBC_2.32 ftello64 F +GLIBC_2.32 ftime F +GLIBC_2.32 ftok F +GLIBC_2.32 ftruncate F +GLIBC_2.32 ftruncate64 F +GLIBC_2.32 ftrylockfile F +GLIBC_2.32 fts64_children F +GLIBC_2.32 fts64_close F +GLIBC_2.32 fts64_open F +GLIBC_2.32 fts64_read F +GLIBC_2.32 fts64_set F +GLIBC_2.32 fts_children F +GLIBC_2.32 fts_close F +GLIBC_2.32 fts_open F +GLIBC_2.32 fts_read F +GLIBC_2.32 fts_set F +GLIBC_2.32 ftw F +GLIBC_2.32 ftw64 F +GLIBC_2.32 funlockfile F +GLIBC_2.32 futimens F +GLIBC_2.32 futimes F +GLIBC_2.32 futimesat F +GLIBC_2.32 fwide F +GLIBC_2.32 fwprintf F +GLIBC_2.32 fwrite F +GLIBC_2.32 fwrite_unlocked F +GLIBC_2.32 fwscanf F +GLIBC_2.32 gai_strerror F +GLIBC_2.32 gcvt F +GLIBC_2.32 get_avphys_pages F +GLIBC_2.32 get_current_dir_name F +GLIBC_2.32 get_myaddress F +GLIBC_2.32 get_nprocs F +GLIBC_2.32 get_nprocs_conf F +GLIBC_2.32 get_phys_pages F +GLIBC_2.32 getaddrinfo F +GLIBC_2.32 getaliasbyname F +GLIBC_2.32 getaliasbyname_r F +GLIBC_2.32 getaliasent F +GLIBC_2.32 getaliasent_r F +GLIBC_2.32 getauxval F +GLIBC_2.32 getc F +GLIBC_2.32 getc_unlocked F +GLIBC_2.32 getchar F +GLIBC_2.32 getchar_unlocked F +GLIBC_2.32 getcontext F +GLIBC_2.32 getcpu F +GLIBC_2.32 getcwd F +GLIBC_2.32 getdate F +GLIBC_2.32 getdate_err D 0x4 +GLIBC_2.32 getdate_r F +GLIBC_2.32 getdelim F +GLIBC_2.32 getdents64 F +GLIBC_2.32 getdirentries F +GLIBC_2.32 getdirentries64 F +GLIBC_2.32 getdomainname F +GLIBC_2.32 getdtablesize F +GLIBC_2.32 getegid F +GLIBC_2.32 getentropy F +GLIBC_2.32 getenv F +GLIBC_2.32 geteuid F +GLIBC_2.32 getfsent F +GLIBC_2.32 getfsfile F +GLIBC_2.32 getfsspec F +GLIBC_2.32 getgid F +GLIBC_2.32 getgrent F +GLIBC_2.32 getgrent_r F +GLIBC_2.32 getgrgid F +GLIBC_2.32 getgrgid_r F +GLIBC_2.32 getgrnam F +GLIBC_2.32 getgrnam_r F +GLIBC_2.32 getgrouplist F +GLIBC_2.32 getgroups F +GLIBC_2.32 gethostbyaddr F +GLIBC_2.32 gethostbyaddr_r F +GLIBC_2.32 gethostbyname F +GLIBC_2.32 gethostbyname2 F +GLIBC_2.32 gethostbyname2_r F +GLIBC_2.32 gethostbyname_r F +GLIBC_2.32 gethostent F +GLIBC_2.32 gethostent_r F +GLIBC_2.32 gethostid F +GLIBC_2.32 gethostname F +GLIBC_2.32 getifaddrs F +GLIBC_2.32 getipv4sourcefilter F +GLIBC_2.32 getitimer F +GLIBC_2.32 getline F +GLIBC_2.32 getloadavg F +GLIBC_2.32 getlogin F +GLIBC_2.32 getlogin_r F +GLIBC_2.32 getmntent F +GLIBC_2.32 getmntent_r F +GLIBC_2.32 getnameinfo F +GLIBC_2.32 getnetbyaddr F +GLIBC_2.32 getnetbyaddr_r F +GLIBC_2.32 getnetbyname F +GLIBC_2.32 getnetbyname_r F +GLIBC_2.32 getnetent F +GLIBC_2.32 getnetent_r F +GLIBC_2.32 getnetgrent F +GLIBC_2.32 getnetgrent_r F +GLIBC_2.32 getnetname F +GLIBC_2.32 getopt F +GLIBC_2.32 getopt_long F +GLIBC_2.32 getopt_long_only F +GLIBC_2.32 getpagesize F +GLIBC_2.32 getpass F +GLIBC_2.32 getpeername F +GLIBC_2.32 getpgid F +GLIBC_2.32 getpgrp F +GLIBC_2.32 getpid F +GLIBC_2.32 getppid F +GLIBC_2.32 getpriority F +GLIBC_2.32 getprotobyname F +GLIBC_2.32 getprotobyname_r F +GLIBC_2.32 getprotobynumber F +GLIBC_2.32 getprotobynumber_r F +GLIBC_2.32 getprotoent F +GLIBC_2.32 getprotoent_r F +GLIBC_2.32 getpt F +GLIBC_2.32 getpublickey F +GLIBC_2.32 getpw F +GLIBC_2.32 getpwent F +GLIBC_2.32 getpwent_r F +GLIBC_2.32 getpwnam F +GLIBC_2.32 getpwnam_r F +GLIBC_2.32 getpwuid F +GLIBC_2.32 getpwuid_r F +GLIBC_2.32 getrandom F +GLIBC_2.32 getresgid F +GLIBC_2.32 getresuid F +GLIBC_2.32 getrlimit F +GLIBC_2.32 getrlimit64 F +GLIBC_2.32 getrpcbyname F +GLIBC_2.32 getrpcbyname_r F +GLIBC_2.32 getrpcbynumber F +GLIBC_2.32 getrpcbynumber_r F +GLIBC_2.32 getrpcent F +GLIBC_2.32 getrpcent_r F +GLIBC_2.32 getrpcport F +GLIBC_2.32 getrusage F +GLIBC_2.32 gets F +GLIBC_2.32 getsecretkey F +GLIBC_2.32 getservbyname F +GLIBC_2.32 getservbyname_r F +GLIBC_2.32 getservbyport F +GLIBC_2.32 getservbyport_r F +GLIBC_2.32 getservent F +GLIBC_2.32 getservent_r F +GLIBC_2.32 getsgent F +GLIBC_2.32 getsgent_r F +GLIBC_2.32 getsgnam F +GLIBC_2.32 getsgnam_r F +GLIBC_2.32 getsid F +GLIBC_2.32 getsockname F +GLIBC_2.32 getsockopt F +GLIBC_2.32 getsourcefilter F +GLIBC_2.32 getspent F +GLIBC_2.32 getspent_r F +GLIBC_2.32 getspnam F +GLIBC_2.32 getspnam_r F +GLIBC_2.32 getsubopt F +GLIBC_2.32 gettext F +GLIBC_2.32 gettid F +GLIBC_2.32 gettimeofday F +GLIBC_2.32 getttyent F +GLIBC_2.32 getttynam F +GLIBC_2.32 getuid F +GLIBC_2.32 getusershell F +GLIBC_2.32 getutent F +GLIBC_2.32 getutent_r F +GLIBC_2.32 getutid F +GLIBC_2.32 getutid_r F +GLIBC_2.32 getutline F +GLIBC_2.32 getutline_r F +GLIBC_2.32 getutmp F +GLIBC_2.32 getutmpx F +GLIBC_2.32 getutxent F +GLIBC_2.32 getutxid F +GLIBC_2.32 getutxline F +GLIBC_2.32 getw F +GLIBC_2.32 getwc F +GLIBC_2.32 getwc_unlocked F +GLIBC_2.32 getwchar F +GLIBC_2.32 getwchar_unlocked F +GLIBC_2.32 getwd F +GLIBC_2.32 getxattr F +GLIBC_2.32 glob F +GLIBC_2.32 glob64 F +GLIBC_2.32 glob_pattern_p F +GLIBC_2.32 globfree F +GLIBC_2.32 globfree64 F +GLIBC_2.32 gmtime F +GLIBC_2.32 gmtime_r F +GLIBC_2.32 gnu_dev_major F +GLIBC_2.32 gnu_dev_makedev F +GLIBC_2.32 gnu_dev_minor F +GLIBC_2.32 gnu_get_libc_release F +GLIBC_2.32 gnu_get_libc_version F +GLIBC_2.32 grantpt F +GLIBC_2.32 group_member F +GLIBC_2.32 gsignal F +GLIBC_2.32 gtty F +GLIBC_2.32 h_errlist D 0x14 +GLIBC_2.32 h_nerr D 0x4 +GLIBC_2.32 hasmntopt F +GLIBC_2.32 hcreate F +GLIBC_2.32 hcreate_r F +GLIBC_2.32 hdestroy F +GLIBC_2.32 hdestroy_r F +GLIBC_2.32 herror F +GLIBC_2.32 host2netname F +GLIBC_2.32 hsearch F +GLIBC_2.32 hsearch_r F +GLIBC_2.32 hstrerror F +GLIBC_2.32 htonl F +GLIBC_2.32 htons F +GLIBC_2.32 iconv F +GLIBC_2.32 iconv_close F +GLIBC_2.32 iconv_open F +GLIBC_2.32 if_freenameindex F +GLIBC_2.32 if_indextoname F +GLIBC_2.32 if_nameindex F +GLIBC_2.32 if_nametoindex F +GLIBC_2.32 imaxabs F +GLIBC_2.32 imaxdiv F +GLIBC_2.32 in6addr_any D 0x10 +GLIBC_2.32 in6addr_loopback D 0x10 +GLIBC_2.32 index F +GLIBC_2.32 inet6_opt_append F +GLIBC_2.32 inet6_opt_find F +GLIBC_2.32 inet6_opt_finish F +GLIBC_2.32 inet6_opt_get_val F +GLIBC_2.32 inet6_opt_init F +GLIBC_2.32 inet6_opt_next F +GLIBC_2.32 inet6_opt_set_val F +GLIBC_2.32 inet6_option_alloc F +GLIBC_2.32 inet6_option_append F +GLIBC_2.32 inet6_option_find F +GLIBC_2.32 inet6_option_init F +GLIBC_2.32 inet6_option_next F +GLIBC_2.32 inet6_option_space F +GLIBC_2.32 inet6_rth_add F +GLIBC_2.32 inet6_rth_getaddr F +GLIBC_2.32 inet6_rth_init F +GLIBC_2.32 inet6_rth_reverse F +GLIBC_2.32 inet6_rth_segments F +GLIBC_2.32 inet6_rth_space F +GLIBC_2.32 inet_addr F +GLIBC_2.32 inet_aton F +GLIBC_2.32 inet_lnaof F +GLIBC_2.32 inet_makeaddr F +GLIBC_2.32 inet_netof F +GLIBC_2.32 inet_network F +GLIBC_2.32 inet_nsap_addr F +GLIBC_2.32 inet_nsap_ntoa F +GLIBC_2.32 inet_ntoa F +GLIBC_2.32 inet_ntop F +GLIBC_2.32 inet_pton F +GLIBC_2.32 init_module F +GLIBC_2.32 initgroups F +GLIBC_2.32 initstate F +GLIBC_2.32 initstate_r F +GLIBC_2.32 innetgr F +GLIBC_2.32 inotify_add_watch F +GLIBC_2.32 inotify_init F +GLIBC_2.32 inotify_init1 F +GLIBC_2.32 inotify_rm_watch F +GLIBC_2.32 insque F +GLIBC_2.32 ioctl F +GLIBC_2.32 iruserok F +GLIBC_2.32 iruserok_af F +GLIBC_2.32 isalnum F +GLIBC_2.32 isalnum_l F +GLIBC_2.32 isalpha F +GLIBC_2.32 isalpha_l F +GLIBC_2.32 isascii F +GLIBC_2.32 isatty F +GLIBC_2.32 isblank F +GLIBC_2.32 isblank_l F +GLIBC_2.32 iscntrl F +GLIBC_2.32 iscntrl_l F +GLIBC_2.32 isctype F +GLIBC_2.32 isdigit F +GLIBC_2.32 isdigit_l F +GLIBC_2.32 isfdtype F +GLIBC_2.32 isgraph F +GLIBC_2.32 isgraph_l F +GLIBC_2.32 isinf F +GLIBC_2.32 isinff F +GLIBC_2.32 isinfl F +GLIBC_2.32 islower F +GLIBC_2.32 islower_l F +GLIBC_2.32 isnan F +GLIBC_2.32 isnanf F +GLIBC_2.32 isnanl F +GLIBC_2.32 isprint F +GLIBC_2.32 isprint_l F +GLIBC_2.32 ispunct F +GLIBC_2.32 ispunct_l F +GLIBC_2.32 isspace F +GLIBC_2.32 isspace_l F +GLIBC_2.32 isupper F +GLIBC_2.32 isupper_l F +GLIBC_2.32 iswalnum F +GLIBC_2.32 iswalnum_l F +GLIBC_2.32 iswalpha F +GLIBC_2.32 iswalpha_l F +GLIBC_2.32 iswblank F +GLIBC_2.32 iswblank_l F +GLIBC_2.32 iswcntrl F +GLIBC_2.32 iswcntrl_l F +GLIBC_2.32 iswctype F +GLIBC_2.32 iswctype_l F +GLIBC_2.32 iswdigit F +GLIBC_2.32 iswdigit_l F +GLIBC_2.32 iswgraph F +GLIBC_2.32 iswgraph_l F +GLIBC_2.32 iswlower F +GLIBC_2.32 iswlower_l F +GLIBC_2.32 iswprint F +GLIBC_2.32 iswprint_l F +GLIBC_2.32 iswpunct F +GLIBC_2.32 iswpunct_l F +GLIBC_2.32 iswspace F +GLIBC_2.32 iswspace_l F +GLIBC_2.32 iswupper F +GLIBC_2.32 iswupper_l F +GLIBC_2.32 iswxdigit F +GLIBC_2.32 iswxdigit_l F +GLIBC_2.32 isxdigit F +GLIBC_2.32 isxdigit_l F +GLIBC_2.32 jrand48 F +GLIBC_2.32 jrand48_r F +GLIBC_2.32 key_decryptsession F +GLIBC_2.32 key_decryptsession_pk F +GLIBC_2.32 key_encryptsession F +GLIBC_2.32 key_encryptsession_pk F +GLIBC_2.32 key_gendes F +GLIBC_2.32 key_get_conv F +GLIBC_2.32 key_secretkey_is_set F +GLIBC_2.32 key_setnet F +GLIBC_2.32 key_setsecret F +GLIBC_2.32 kill F +GLIBC_2.32 killpg F +GLIBC_2.32 klogctl F +GLIBC_2.32 l64a F +GLIBC_2.32 labs F +GLIBC_2.32 lchmod F +GLIBC_2.32 lchown F +GLIBC_2.32 lckpwdf F +GLIBC_2.32 lcong48 F +GLIBC_2.32 lcong48_r F +GLIBC_2.32 ldexp F +GLIBC_2.32 ldexpf F +GLIBC_2.32 ldexpl F +GLIBC_2.32 ldiv F +GLIBC_2.32 lfind F +GLIBC_2.32 lgetxattr F +GLIBC_2.32 link F +GLIBC_2.32 linkat F +GLIBC_2.32 listen F +GLIBC_2.32 listxattr F +GLIBC_2.32 llabs F +GLIBC_2.32 lldiv F +GLIBC_2.32 llistxattr F +GLIBC_2.32 localeconv F +GLIBC_2.32 localtime F +GLIBC_2.32 localtime_r F +GLIBC_2.32 lockf F +GLIBC_2.32 lockf64 F +GLIBC_2.32 longjmp F +GLIBC_2.32 lrand48 F +GLIBC_2.32 lrand48_r F +GLIBC_2.32 lremovexattr F +GLIBC_2.32 lsearch F +GLIBC_2.32 lseek F +GLIBC_2.32 lseek64 F +GLIBC_2.32 lsetxattr F +GLIBC_2.32 lutimes F +GLIBC_2.32 madvise F +GLIBC_2.32 makecontext F +GLIBC_2.32 mallinfo F +GLIBC_2.32 malloc F +GLIBC_2.32 malloc_info F +GLIBC_2.32 malloc_stats F +GLIBC_2.32 malloc_trim F +GLIBC_2.32 malloc_usable_size F +GLIBC_2.32 mallopt F +GLIBC_2.32 mallwatch D 0x4 +GLIBC_2.32 mblen F +GLIBC_2.32 mbrlen F +GLIBC_2.32 mbrtoc16 F +GLIBC_2.32 mbrtoc32 F +GLIBC_2.32 mbrtowc F +GLIBC_2.32 mbsinit F +GLIBC_2.32 mbsnrtowcs F +GLIBC_2.32 mbsrtowcs F +GLIBC_2.32 mbstowcs F +GLIBC_2.32 mbtowc F +GLIBC_2.32 mcheck F +GLIBC_2.32 mcheck_check_all F +GLIBC_2.32 mcheck_pedantic F +GLIBC_2.32 memalign F +GLIBC_2.32 memccpy F +GLIBC_2.32 memchr F +GLIBC_2.32 memcmp F +GLIBC_2.32 memcpy F +GLIBC_2.32 memfd_create F +GLIBC_2.32 memfrob F +GLIBC_2.32 memmem F +GLIBC_2.32 memmove F +GLIBC_2.32 mempcpy F +GLIBC_2.32 memrchr F +GLIBC_2.32 memset F +GLIBC_2.32 mincore F +GLIBC_2.32 mkdir F +GLIBC_2.32 mkdirat F +GLIBC_2.32 mkdtemp F +GLIBC_2.32 mkfifo F +GLIBC_2.32 mkfifoat F +GLIBC_2.32 mkostemp F +GLIBC_2.32 mkostemp64 F +GLIBC_2.32 mkostemps F +GLIBC_2.32 mkostemps64 F +GLIBC_2.32 mkstemp F +GLIBC_2.32 mkstemp64 F +GLIBC_2.32 mkstemps F +GLIBC_2.32 mkstemps64 F +GLIBC_2.32 mktemp F +GLIBC_2.32 mktime F +GLIBC_2.32 mlock F +GLIBC_2.32 mlock2 F +GLIBC_2.32 mlockall F +GLIBC_2.32 mmap F +GLIBC_2.32 mmap64 F +GLIBC_2.32 modf F +GLIBC_2.32 modff F +GLIBC_2.32 modfl F +GLIBC_2.32 moncontrol F +GLIBC_2.32 monstartup F +GLIBC_2.32 mount F +GLIBC_2.32 mprobe F +GLIBC_2.32 mprotect F +GLIBC_2.32 mrand48 F +GLIBC_2.32 mrand48_r F +GLIBC_2.32 mremap F +GLIBC_2.32 msgctl F +GLIBC_2.32 msgget F +GLIBC_2.32 msgrcv F +GLIBC_2.32 msgsnd F +GLIBC_2.32 msync F +GLIBC_2.32 mtrace F +GLIBC_2.32 munlock F +GLIBC_2.32 munlockall F +GLIBC_2.32 munmap F +GLIBC_2.32 muntrace F +GLIBC_2.32 name_to_handle_at F +GLIBC_2.32 nanosleep F +GLIBC_2.32 netname2host F +GLIBC_2.32 netname2user F +GLIBC_2.32 newlocale F +GLIBC_2.32 nftw F +GLIBC_2.32 nftw64 F +GLIBC_2.32 ngettext F +GLIBC_2.32 nice F +GLIBC_2.32 nl_langinfo F +GLIBC_2.32 nl_langinfo_l F +GLIBC_2.32 nrand48 F +GLIBC_2.32 nrand48_r F +GLIBC_2.32 ntohl F +GLIBC_2.32 ntohs F +GLIBC_2.32 ntp_adjtime F +GLIBC_2.32 ntp_gettime F +GLIBC_2.32 ntp_gettimex F +GLIBC_2.32 obstack_alloc_failed_handler D 0x4 +GLIBC_2.32 obstack_exit_failure D 0x4 +GLIBC_2.32 obstack_free F +GLIBC_2.32 obstack_printf F +GLIBC_2.32 obstack_vprintf F +GLIBC_2.32 on_exit F +GLIBC_2.32 open F +GLIBC_2.32 open64 F +GLIBC_2.32 open_by_handle_at F +GLIBC_2.32 open_memstream F +GLIBC_2.32 open_wmemstream F +GLIBC_2.32 openat F +GLIBC_2.32 openat64 F +GLIBC_2.32 opendir F +GLIBC_2.32 openlog F +GLIBC_2.32 optarg D 0x4 +GLIBC_2.32 opterr D 0x4 +GLIBC_2.32 optind D 0x4 +GLIBC_2.32 optopt D 0x4 +GLIBC_2.32 parse_printf_format F +GLIBC_2.32 passwd2des F +GLIBC_2.32 pathconf F +GLIBC_2.32 pause F +GLIBC_2.32 pclose F +GLIBC_2.32 perror F +GLIBC_2.32 personality F +GLIBC_2.32 pipe F +GLIBC_2.32 pipe2 F +GLIBC_2.32 pivot_root F +GLIBC_2.32 pkey_alloc F +GLIBC_2.32 pkey_free F +GLIBC_2.32 pkey_get F +GLIBC_2.32 pkey_mprotect F +GLIBC_2.32 pkey_set F +GLIBC_2.32 pmap_getmaps F +GLIBC_2.32 pmap_getport F +GLIBC_2.32 pmap_rmtcall F +GLIBC_2.32 pmap_set F +GLIBC_2.32 pmap_unset F +GLIBC_2.32 poll F +GLIBC_2.32 popen F +GLIBC_2.32 posix_fadvise F +GLIBC_2.32 posix_fadvise64 F +GLIBC_2.32 posix_fallocate F +GLIBC_2.32 posix_fallocate64 F +GLIBC_2.32 posix_madvise F +GLIBC_2.32 posix_memalign F +GLIBC_2.32 posix_openpt F +GLIBC_2.32 posix_spawn F +GLIBC_2.32 posix_spawn_file_actions_addchdir_np F +GLIBC_2.32 posix_spawn_file_actions_addclose F +GLIBC_2.32 posix_spawn_file_actions_adddup2 F +GLIBC_2.32 posix_spawn_file_actions_addfchdir_np F +GLIBC_2.32 posix_spawn_file_actions_addopen F +GLIBC_2.32 posix_spawn_file_actions_destroy F +GLIBC_2.32 posix_spawn_file_actions_init F +GLIBC_2.32 posix_spawnattr_destroy F +GLIBC_2.32 posix_spawnattr_getflags F +GLIBC_2.32 posix_spawnattr_getpgroup F +GLIBC_2.32 posix_spawnattr_getschedparam F +GLIBC_2.32 posix_spawnattr_getschedpolicy F +GLIBC_2.32 posix_spawnattr_getsigdefault F +GLIBC_2.32 posix_spawnattr_getsigmask F +GLIBC_2.32 posix_spawnattr_init F +GLIBC_2.32 posix_spawnattr_setflags F +GLIBC_2.32 posix_spawnattr_setpgroup F +GLIBC_2.32 posix_spawnattr_setschedparam F +GLIBC_2.32 posix_spawnattr_setschedpolicy F +GLIBC_2.32 posix_spawnattr_setsigdefault F +GLIBC_2.32 posix_spawnattr_setsigmask F +GLIBC_2.32 posix_spawnp F +GLIBC_2.32 ppoll F +GLIBC_2.32 prctl F +GLIBC_2.32 pread F +GLIBC_2.32 pread64 F +GLIBC_2.32 preadv F +GLIBC_2.32 preadv2 F +GLIBC_2.32 preadv64 F +GLIBC_2.32 preadv64v2 F +GLIBC_2.32 printf F +GLIBC_2.32 printf_size F +GLIBC_2.32 printf_size_info F +GLIBC_2.32 prlimit F +GLIBC_2.32 prlimit64 F +GLIBC_2.32 process_vm_readv F +GLIBC_2.32 process_vm_writev F +GLIBC_2.32 profil F +GLIBC_2.32 program_invocation_name D 0x4 +GLIBC_2.32 program_invocation_short_name D 0x4 +GLIBC_2.32 pselect F +GLIBC_2.32 psiginfo F +GLIBC_2.32 psignal F +GLIBC_2.32 pthread_attr_destroy F +GLIBC_2.32 pthread_attr_getdetachstate F +GLIBC_2.32 pthread_attr_getinheritsched F +GLIBC_2.32 pthread_attr_getschedparam F +GLIBC_2.32 pthread_attr_getschedpolicy F +GLIBC_2.32 pthread_attr_getscope F +GLIBC_2.32 pthread_attr_getsigmask_np F +GLIBC_2.32 pthread_attr_init F +GLIBC_2.32 pthread_attr_setaffinity_np F +GLIBC_2.32 pthread_attr_setdetachstate F +GLIBC_2.32 pthread_attr_setinheritsched F +GLIBC_2.32 pthread_attr_setschedparam F +GLIBC_2.32 pthread_attr_setschedpolicy F +GLIBC_2.32 pthread_attr_setscope F +GLIBC_2.32 pthread_attr_setsigmask_np F +GLIBC_2.32 pthread_cond_broadcast F +GLIBC_2.32 pthread_cond_destroy F +GLIBC_2.32 pthread_cond_init F +GLIBC_2.32 pthread_cond_signal F +GLIBC_2.32 pthread_cond_timedwait F +GLIBC_2.32 pthread_cond_wait F +GLIBC_2.32 pthread_condattr_destroy F +GLIBC_2.32 pthread_condattr_init F +GLIBC_2.32 pthread_equal F +GLIBC_2.32 pthread_exit F +GLIBC_2.32 pthread_getaffinity_np F +GLIBC_2.32 pthread_getattr_np F +GLIBC_2.32 pthread_getschedparam F +GLIBC_2.32 pthread_mutex_destroy F +GLIBC_2.32 pthread_mutex_init F +GLIBC_2.32 pthread_mutex_lock F +GLIBC_2.32 pthread_mutex_unlock F +GLIBC_2.32 pthread_self F +GLIBC_2.32 pthread_setcancelstate F +GLIBC_2.32 pthread_setcanceltype F +GLIBC_2.32 pthread_setschedparam F +GLIBC_2.32 pthread_sigmask F +GLIBC_2.32 ptrace F +GLIBC_2.32 ptsname F +GLIBC_2.32 ptsname_r F +GLIBC_2.32 putc F +GLIBC_2.32 putc_unlocked F +GLIBC_2.32 putchar F +GLIBC_2.32 putchar_unlocked F +GLIBC_2.32 putenv F +GLIBC_2.32 putgrent F +GLIBC_2.32 putpwent F +GLIBC_2.32 puts F +GLIBC_2.32 putsgent F +GLIBC_2.32 putspent F +GLIBC_2.32 pututline F +GLIBC_2.32 pututxline F +GLIBC_2.32 putw F +GLIBC_2.32 putwc F +GLIBC_2.32 putwc_unlocked F +GLIBC_2.32 putwchar F +GLIBC_2.32 putwchar_unlocked F +GLIBC_2.32 pvalloc F +GLIBC_2.32 pwrite F +GLIBC_2.32 pwrite64 F +GLIBC_2.32 pwritev F +GLIBC_2.32 pwritev2 F +GLIBC_2.32 pwritev64 F +GLIBC_2.32 pwritev64v2 F +GLIBC_2.32 qecvt F +GLIBC_2.32 qecvt_r F +GLIBC_2.32 qfcvt F +GLIBC_2.32 qfcvt_r F +GLIBC_2.32 qgcvt F +GLIBC_2.32 qsort F +GLIBC_2.32 qsort_r F +GLIBC_2.32 quick_exit F +GLIBC_2.32 quotactl F +GLIBC_2.32 raise F +GLIBC_2.32 rand F +GLIBC_2.32 rand_r F +GLIBC_2.32 random F +GLIBC_2.32 random_r F +GLIBC_2.32 rawmemchr F +GLIBC_2.32 rcmd F +GLIBC_2.32 rcmd_af F +GLIBC_2.32 re_comp F +GLIBC_2.32 re_compile_fastmap F +GLIBC_2.32 re_compile_pattern F +GLIBC_2.32 re_exec F +GLIBC_2.32 re_match F +GLIBC_2.32 re_match_2 F +GLIBC_2.32 re_search F +GLIBC_2.32 re_search_2 F +GLIBC_2.32 re_set_registers F +GLIBC_2.32 re_set_syntax F +GLIBC_2.32 re_syntax_options D 0x4 +GLIBC_2.32 read F +GLIBC_2.32 readahead F +GLIBC_2.32 readdir F +GLIBC_2.32 readdir64 F +GLIBC_2.32 readdir64_r F +GLIBC_2.32 readdir_r F +GLIBC_2.32 readlink F +GLIBC_2.32 readlinkat F +GLIBC_2.32 readv F +GLIBC_2.32 realloc F +GLIBC_2.32 reallocarray F +GLIBC_2.32 realpath F +GLIBC_2.32 reboot F +GLIBC_2.32 recv F +GLIBC_2.32 recvfrom F +GLIBC_2.32 recvmmsg F +GLIBC_2.32 recvmsg F +GLIBC_2.32 regcomp F +GLIBC_2.32 regerror F +GLIBC_2.32 regexec F +GLIBC_2.32 regfree F +GLIBC_2.32 register_printf_function F +GLIBC_2.32 register_printf_modifier F +GLIBC_2.32 register_printf_specifier F +GLIBC_2.32 register_printf_type F +GLIBC_2.32 registerrpc F +GLIBC_2.32 remap_file_pages F +GLIBC_2.32 remove F +GLIBC_2.32 removexattr F +GLIBC_2.32 remque F +GLIBC_2.32 rename F +GLIBC_2.32 renameat F +GLIBC_2.32 renameat2 F +GLIBC_2.32 revoke F +GLIBC_2.32 rewind F +GLIBC_2.32 rewinddir F +GLIBC_2.32 rexec F +GLIBC_2.32 rexec_af F +GLIBC_2.32 rexecoptions D 0x4 +GLIBC_2.32 rindex F +GLIBC_2.32 rmdir F +GLIBC_2.32 rpc_createerr D 0x10 +GLIBC_2.32 rpmatch F +GLIBC_2.32 rresvport F +GLIBC_2.32 rresvport_af F +GLIBC_2.32 rtime F +GLIBC_2.32 ruserok F +GLIBC_2.32 ruserok_af F +GLIBC_2.32 ruserpass F +GLIBC_2.32 sbrk F +GLIBC_2.32 scalbn F +GLIBC_2.32 scalbnf F +GLIBC_2.32 scalbnl F +GLIBC_2.32 scandir F +GLIBC_2.32 scandir64 F +GLIBC_2.32 scandirat F +GLIBC_2.32 scandirat64 F +GLIBC_2.32 scanf F +GLIBC_2.32 sched_get_priority_max F +GLIBC_2.32 sched_get_priority_min F +GLIBC_2.32 sched_getaffinity F +GLIBC_2.32 sched_getcpu F +GLIBC_2.32 sched_getparam F +GLIBC_2.32 sched_getscheduler F +GLIBC_2.32 sched_rr_get_interval F +GLIBC_2.32 sched_setaffinity F +GLIBC_2.32 sched_setparam F +GLIBC_2.32 sched_setscheduler F +GLIBC_2.32 sched_yield F +GLIBC_2.32 secure_getenv F +GLIBC_2.32 seed48 F +GLIBC_2.32 seed48_r F +GLIBC_2.32 seekdir F +GLIBC_2.32 select F +GLIBC_2.32 semctl F +GLIBC_2.32 semget F +GLIBC_2.32 semop F +GLIBC_2.32 semtimedop F +GLIBC_2.32 send F +GLIBC_2.32 sendfile F +GLIBC_2.32 sendfile64 F +GLIBC_2.32 sendmmsg F +GLIBC_2.32 sendmsg F +GLIBC_2.32 sendto F +GLIBC_2.32 setaliasent F +GLIBC_2.32 setbuf F +GLIBC_2.32 setbuffer F +GLIBC_2.32 setcontext F +GLIBC_2.32 setdomainname F +GLIBC_2.32 setegid F +GLIBC_2.32 setenv F +GLIBC_2.32 seteuid F +GLIBC_2.32 setfsent F +GLIBC_2.32 setfsgid F +GLIBC_2.32 setfsuid F +GLIBC_2.32 setgid F +GLIBC_2.32 setgrent F +GLIBC_2.32 setgroups F +GLIBC_2.32 sethostent F +GLIBC_2.32 sethostid F +GLIBC_2.32 sethostname F +GLIBC_2.32 setipv4sourcefilter F +GLIBC_2.32 setitimer F +GLIBC_2.32 setjmp F +GLIBC_2.32 setlinebuf F +GLIBC_2.32 setlocale F +GLIBC_2.32 setlogin F +GLIBC_2.32 setlogmask F +GLIBC_2.32 setmntent F +GLIBC_2.32 setnetent F +GLIBC_2.32 setnetgrent F +GLIBC_2.32 setns F +GLIBC_2.32 setpgid F +GLIBC_2.32 setpgrp F +GLIBC_2.32 setpriority F +GLIBC_2.32 setprotoent F +GLIBC_2.32 setpwent F +GLIBC_2.32 setregid F +GLIBC_2.32 setresgid F +GLIBC_2.32 setresuid F +GLIBC_2.32 setreuid F +GLIBC_2.32 setrlimit F +GLIBC_2.32 setrlimit64 F +GLIBC_2.32 setrpcent F +GLIBC_2.32 setservent F +GLIBC_2.32 setsgent F +GLIBC_2.32 setsid F +GLIBC_2.32 setsockopt F +GLIBC_2.32 setsourcefilter F +GLIBC_2.32 setspent F +GLIBC_2.32 setstate F +GLIBC_2.32 setstate_r F +GLIBC_2.32 settimeofday F +GLIBC_2.32 setttyent F +GLIBC_2.32 setuid F +GLIBC_2.32 setusershell F +GLIBC_2.32 setutent F +GLIBC_2.32 setutxent F +GLIBC_2.32 setvbuf F +GLIBC_2.32 setxattr F +GLIBC_2.32 sgetsgent F +GLIBC_2.32 sgetsgent_r F +GLIBC_2.32 sgetspent F +GLIBC_2.32 sgetspent_r F +GLIBC_2.32 shmat F +GLIBC_2.32 shmctl F +GLIBC_2.32 shmdt F +GLIBC_2.32 shmget F +GLIBC_2.32 shutdown F +GLIBC_2.32 sigabbrev_np F +GLIBC_2.32 sigaction F +GLIBC_2.32 sigaddset F +GLIBC_2.32 sigaltstack F +GLIBC_2.32 sigandset F +GLIBC_2.32 sigblock F +GLIBC_2.32 sigdelset F +GLIBC_2.32 sigdescr_np F +GLIBC_2.32 sigemptyset F +GLIBC_2.32 sigfillset F +GLIBC_2.32 siggetmask F +GLIBC_2.32 sighold F +GLIBC_2.32 sigignore F +GLIBC_2.32 siginterrupt F +GLIBC_2.32 sigisemptyset F +GLIBC_2.32 sigismember F +GLIBC_2.32 siglongjmp F +GLIBC_2.32 signal F +GLIBC_2.32 signalfd F +GLIBC_2.32 sigorset F +GLIBC_2.32 sigpause F +GLIBC_2.32 sigpending F +GLIBC_2.32 sigprocmask F +GLIBC_2.32 sigqueue F +GLIBC_2.32 sigrelse F +GLIBC_2.32 sigreturn F +GLIBC_2.32 sigset F +GLIBC_2.32 sigsetmask F +GLIBC_2.32 sigstack F +GLIBC_2.32 sigsuspend F +GLIBC_2.32 sigtimedwait F +GLIBC_2.32 sigwait F +GLIBC_2.32 sigwaitinfo F +GLIBC_2.32 sleep F +GLIBC_2.32 snprintf F +GLIBC_2.32 sockatmark F +GLIBC_2.32 socket F +GLIBC_2.32 socketpair F +GLIBC_2.32 splice F +GLIBC_2.32 sprintf F +GLIBC_2.32 sprofil F +GLIBC_2.32 srand F +GLIBC_2.32 srand48 F +GLIBC_2.32 srand48_r F +GLIBC_2.32 srandom F +GLIBC_2.32 srandom_r F +GLIBC_2.32 sscanf F +GLIBC_2.32 ssignal F +GLIBC_2.32 statfs F +GLIBC_2.32 statfs64 F +GLIBC_2.32 statvfs F +GLIBC_2.32 statvfs64 F +GLIBC_2.32 statx F +GLIBC_2.32 stderr D 0x4 +GLIBC_2.32 stdin D 0x4 +GLIBC_2.32 stdout D 0x4 +GLIBC_2.32 stpcpy F +GLIBC_2.32 stpncpy F +GLIBC_2.32 strcasecmp F +GLIBC_2.32 strcasecmp_l F +GLIBC_2.32 strcasestr F +GLIBC_2.32 strcat F +GLIBC_2.32 strchr F +GLIBC_2.32 strchrnul F +GLIBC_2.32 strcmp F +GLIBC_2.32 strcoll F +GLIBC_2.32 strcoll_l F +GLIBC_2.32 strcpy F +GLIBC_2.32 strcspn F +GLIBC_2.32 strdup F +GLIBC_2.32 strerror F +GLIBC_2.32 strerror_l F +GLIBC_2.32 strerror_r F +GLIBC_2.32 strerrordesc_np F +GLIBC_2.32 strerrorname_np F +GLIBC_2.32 strfmon F +GLIBC_2.32 strfmon_l F +GLIBC_2.32 strfromd F +GLIBC_2.32 strfromf F +GLIBC_2.32 strfromf32 F +GLIBC_2.32 strfromf32x F +GLIBC_2.32 strfromf64 F +GLIBC_2.32 strfroml F +GLIBC_2.32 strfry F +GLIBC_2.32 strftime F +GLIBC_2.32 strftime_l F +GLIBC_2.32 strlen F +GLIBC_2.32 strncasecmp F +GLIBC_2.32 strncasecmp_l F +GLIBC_2.32 strncat F +GLIBC_2.32 strncmp F +GLIBC_2.32 strncpy F +GLIBC_2.32 strndup F +GLIBC_2.32 strnlen F +GLIBC_2.32 strpbrk F +GLIBC_2.32 strptime F +GLIBC_2.32 strptime_l F +GLIBC_2.32 strrchr F +GLIBC_2.32 strsep F +GLIBC_2.32 strsignal F +GLIBC_2.32 strspn F +GLIBC_2.32 strstr F +GLIBC_2.32 strtod F +GLIBC_2.32 strtod_l F +GLIBC_2.32 strtof F +GLIBC_2.32 strtof32 F +GLIBC_2.32 strtof32_l F +GLIBC_2.32 strtof32x F +GLIBC_2.32 strtof32x_l F +GLIBC_2.32 strtof64 F +GLIBC_2.32 strtof64_l F +GLIBC_2.32 strtof_l F +GLIBC_2.32 strtoimax F +GLIBC_2.32 strtok F +GLIBC_2.32 strtok_r F +GLIBC_2.32 strtol F +GLIBC_2.32 strtol_l F +GLIBC_2.32 strtold F +GLIBC_2.32 strtold_l F +GLIBC_2.32 strtoll F +GLIBC_2.32 strtoll_l F +GLIBC_2.32 strtoq F +GLIBC_2.32 strtoul F +GLIBC_2.32 strtoul_l F +GLIBC_2.32 strtoull F +GLIBC_2.32 strtoull_l F +GLIBC_2.32 strtoumax F +GLIBC_2.32 strtouq F +GLIBC_2.32 strverscmp F +GLIBC_2.32 strxfrm F +GLIBC_2.32 strxfrm_l F +GLIBC_2.32 stty F +GLIBC_2.32 svc_exit F +GLIBC_2.32 svc_fdset D 0x80 +GLIBC_2.32 svc_getreq F +GLIBC_2.32 svc_getreq_common F +GLIBC_2.32 svc_getreq_poll F +GLIBC_2.32 svc_getreqset F +GLIBC_2.32 svc_max_pollfd D 0x4 +GLIBC_2.32 svc_pollfd D 0x4 +GLIBC_2.32 svc_register F +GLIBC_2.32 svc_run F +GLIBC_2.32 svc_sendreply F +GLIBC_2.32 svc_unregister F +GLIBC_2.32 svcauthdes_stats D 0xc +GLIBC_2.32 svcerr_auth F +GLIBC_2.32 svcerr_decode F +GLIBC_2.32 svcerr_noproc F +GLIBC_2.32 svcerr_noprog F +GLIBC_2.32 svcerr_progvers F +GLIBC_2.32 svcerr_systemerr F +GLIBC_2.32 svcerr_weakauth F +GLIBC_2.32 svcfd_create F +GLIBC_2.32 svcraw_create F +GLIBC_2.32 svctcp_create F +GLIBC_2.32 svcudp_bufcreate F +GLIBC_2.32 svcudp_create F +GLIBC_2.32 svcudp_enablecache F +GLIBC_2.32 svcunix_create F +GLIBC_2.32 svcunixfd_create F +GLIBC_2.32 swab F +GLIBC_2.32 swapcontext F +GLIBC_2.32 swapoff F +GLIBC_2.32 swapon F +GLIBC_2.32 swprintf F +GLIBC_2.32 swscanf F +GLIBC_2.32 symlink F +GLIBC_2.32 symlinkat F +GLIBC_2.32 sync F +GLIBC_2.32 sync_file_range F +GLIBC_2.32 syncfs F +GLIBC_2.32 syscall F +GLIBC_2.32 sysconf F +GLIBC_2.32 sysinfo F +GLIBC_2.32 syslog F +GLIBC_2.32 system F +GLIBC_2.32 sysv_signal F +GLIBC_2.32 tcdrain F +GLIBC_2.32 tcflow F +GLIBC_2.32 tcflush F +GLIBC_2.32 tcgetattr F +GLIBC_2.32 tcgetpgrp F +GLIBC_2.32 tcgetsid F +GLIBC_2.32 tcsendbreak F +GLIBC_2.32 tcsetattr F +GLIBC_2.32 tcsetpgrp F +GLIBC_2.32 tdelete F +GLIBC_2.32 tdestroy F +GLIBC_2.32 tee F +GLIBC_2.32 telldir F +GLIBC_2.32 tempnam F +GLIBC_2.32 textdomain F +GLIBC_2.32 tfind F +GLIBC_2.32 tgkill F +GLIBC_2.32 thrd_current F +GLIBC_2.32 thrd_equal F +GLIBC_2.32 thrd_sleep F +GLIBC_2.32 thrd_yield F +GLIBC_2.32 time F +GLIBC_2.32 timegm F +GLIBC_2.32 timelocal F +GLIBC_2.32 timerfd_create F +GLIBC_2.32 timerfd_gettime F +GLIBC_2.32 timerfd_settime F +GLIBC_2.32 times F +GLIBC_2.32 timespec_get F +GLIBC_2.32 timezone D 0x4 +GLIBC_2.32 tmpfile F +GLIBC_2.32 tmpfile64 F +GLIBC_2.32 tmpnam F +GLIBC_2.32 tmpnam_r F +GLIBC_2.32 toascii F +GLIBC_2.32 tolower F +GLIBC_2.32 tolower_l F +GLIBC_2.32 toupper F +GLIBC_2.32 toupper_l F +GLIBC_2.32 towctrans F +GLIBC_2.32 towctrans_l F +GLIBC_2.32 towlower F +GLIBC_2.32 towlower_l F +GLIBC_2.32 towupper F +GLIBC_2.32 towupper_l F +GLIBC_2.32 tr_break F +GLIBC_2.32 truncate F +GLIBC_2.32 truncate64 F +GLIBC_2.32 tsearch F +GLIBC_2.32 ttyname F +GLIBC_2.32 ttyname_r F +GLIBC_2.32 ttyslot F +GLIBC_2.32 twalk F +GLIBC_2.32 twalk_r F +GLIBC_2.32 tzname D 0x8 +GLIBC_2.32 tzset F +GLIBC_2.32 ualarm F +GLIBC_2.32 ulckpwdf F +GLIBC_2.32 ulimit F +GLIBC_2.32 umask F +GLIBC_2.32 umount F +GLIBC_2.32 umount2 F +GLIBC_2.32 uname F +GLIBC_2.32 ungetc F +GLIBC_2.32 ungetwc F +GLIBC_2.32 unlink F +GLIBC_2.32 unlinkat F +GLIBC_2.32 unlockpt F +GLIBC_2.32 unsetenv F +GLIBC_2.32 unshare F +GLIBC_2.32 updwtmp F +GLIBC_2.32 updwtmpx F +GLIBC_2.32 uselocale F +GLIBC_2.32 user2netname F +GLIBC_2.32 usleep F +GLIBC_2.32 utime F +GLIBC_2.32 utimensat F +GLIBC_2.32 utimes F +GLIBC_2.32 utmpname F +GLIBC_2.32 utmpxname F +GLIBC_2.32 valloc F +GLIBC_2.32 vasprintf F +GLIBC_2.32 vdprintf F +GLIBC_2.32 verr F +GLIBC_2.32 verrx F +GLIBC_2.32 versionsort F +GLIBC_2.32 versionsort64 F +GLIBC_2.32 vfork F +GLIBC_2.32 vfprintf F +GLIBC_2.32 vfscanf F +GLIBC_2.32 vfwprintf F +GLIBC_2.32 vfwscanf F +GLIBC_2.32 vhangup F +GLIBC_2.32 vlimit F +GLIBC_2.32 vmsplice F +GLIBC_2.32 vprintf F +GLIBC_2.32 vscanf F +GLIBC_2.32 vsnprintf F +GLIBC_2.32 vsprintf F +GLIBC_2.32 vsscanf F +GLIBC_2.32 vswprintf F +GLIBC_2.32 vswscanf F +GLIBC_2.32 vsyslog F +GLIBC_2.32 vtimes F +GLIBC_2.32 vwarn F +GLIBC_2.32 vwarnx F +GLIBC_2.32 vwprintf F +GLIBC_2.32 vwscanf F +GLIBC_2.32 wait F +GLIBC_2.32 wait3 F +GLIBC_2.32 wait4 F +GLIBC_2.32 waitid F +GLIBC_2.32 waitpid F +GLIBC_2.32 warn F +GLIBC_2.32 warnx F +GLIBC_2.32 wcpcpy F +GLIBC_2.32 wcpncpy F +GLIBC_2.32 wcrtomb F +GLIBC_2.32 wcscasecmp F +GLIBC_2.32 wcscasecmp_l F +GLIBC_2.32 wcscat F +GLIBC_2.32 wcschr F +GLIBC_2.32 wcschrnul F +GLIBC_2.32 wcscmp F +GLIBC_2.32 wcscoll F +GLIBC_2.32 wcscoll_l F +GLIBC_2.32 wcscpy F +GLIBC_2.32 wcscspn F +GLIBC_2.32 wcsdup F +GLIBC_2.32 wcsftime F +GLIBC_2.32 wcsftime_l F +GLIBC_2.32 wcslen F +GLIBC_2.32 wcsncasecmp F +GLIBC_2.32 wcsncasecmp_l F +GLIBC_2.32 wcsncat F +GLIBC_2.32 wcsncmp F +GLIBC_2.32 wcsncpy F +GLIBC_2.32 wcsnlen F +GLIBC_2.32 wcsnrtombs F +GLIBC_2.32 wcspbrk F +GLIBC_2.32 wcsrchr F +GLIBC_2.32 wcsrtombs F +GLIBC_2.32 wcsspn F +GLIBC_2.32 wcsstr F +GLIBC_2.32 wcstod F +GLIBC_2.32 wcstod_l F +GLIBC_2.32 wcstof F +GLIBC_2.32 wcstof32 F +GLIBC_2.32 wcstof32_l F +GLIBC_2.32 wcstof32x F +GLIBC_2.32 wcstof32x_l F +GLIBC_2.32 wcstof64 F +GLIBC_2.32 wcstof64_l F +GLIBC_2.32 wcstof_l F +GLIBC_2.32 wcstoimax F +GLIBC_2.32 wcstok F +GLIBC_2.32 wcstol F +GLIBC_2.32 wcstol_l F +GLIBC_2.32 wcstold F +GLIBC_2.32 wcstold_l F +GLIBC_2.32 wcstoll F +GLIBC_2.32 wcstoll_l F +GLIBC_2.32 wcstombs F +GLIBC_2.32 wcstoq F +GLIBC_2.32 wcstoul F +GLIBC_2.32 wcstoul_l F +GLIBC_2.32 wcstoull F +GLIBC_2.32 wcstoull_l F +GLIBC_2.32 wcstoumax F +GLIBC_2.32 wcstouq F +GLIBC_2.32 wcswcs F +GLIBC_2.32 wcswidth F +GLIBC_2.32 wcsxfrm F +GLIBC_2.32 wcsxfrm_l F +GLIBC_2.32 wctob F +GLIBC_2.32 wctomb F +GLIBC_2.32 wctrans F +GLIBC_2.32 wctrans_l F +GLIBC_2.32 wctype F +GLIBC_2.32 wctype_l F +GLIBC_2.32 wcwidth F +GLIBC_2.32 wmemchr F +GLIBC_2.32 wmemcmp F +GLIBC_2.32 wmemcpy F +GLIBC_2.32 wmemmove F +GLIBC_2.32 wmempcpy F +GLIBC_2.32 wmemset F +GLIBC_2.32 wordexp F +GLIBC_2.32 wordfree F +GLIBC_2.32 wprintf F +GLIBC_2.32 write F +GLIBC_2.32 writev F +GLIBC_2.32 wscanf F +GLIBC_2.32 xdecrypt F +GLIBC_2.32 xdr_accepted_reply F +GLIBC_2.32 xdr_array F +GLIBC_2.32 xdr_authdes_cred F +GLIBC_2.32 xdr_authdes_verf F +GLIBC_2.32 xdr_authunix_parms F +GLIBC_2.32 xdr_bool F +GLIBC_2.32 xdr_bytes F +GLIBC_2.32 xdr_callhdr F +GLIBC_2.32 xdr_callmsg F +GLIBC_2.32 xdr_char F +GLIBC_2.32 xdr_cryptkeyarg F +GLIBC_2.32 xdr_cryptkeyarg2 F +GLIBC_2.32 xdr_cryptkeyres F +GLIBC_2.32 xdr_des_block F +GLIBC_2.32 xdr_double F +GLIBC_2.32 xdr_enum F +GLIBC_2.32 xdr_float F +GLIBC_2.32 xdr_free F +GLIBC_2.32 xdr_getcredres F +GLIBC_2.32 xdr_hyper F +GLIBC_2.32 xdr_int F +GLIBC_2.32 xdr_int16_t F +GLIBC_2.32 xdr_int32_t F +GLIBC_2.32 xdr_int64_t F +GLIBC_2.32 xdr_int8_t F +GLIBC_2.32 xdr_key_netstarg F +GLIBC_2.32 xdr_key_netstres F +GLIBC_2.32 xdr_keybuf F +GLIBC_2.32 xdr_keystatus F +GLIBC_2.32 xdr_long F +GLIBC_2.32 xdr_longlong_t F +GLIBC_2.32 xdr_netnamestr F +GLIBC_2.32 xdr_netobj F +GLIBC_2.32 xdr_opaque F +GLIBC_2.32 xdr_opaque_auth F +GLIBC_2.32 xdr_pmap F +GLIBC_2.32 xdr_pmaplist F +GLIBC_2.32 xdr_pointer F +GLIBC_2.32 xdr_quad_t F +GLIBC_2.32 xdr_reference F +GLIBC_2.32 xdr_rejected_reply F +GLIBC_2.32 xdr_replymsg F +GLIBC_2.32 xdr_rmtcall_args F +GLIBC_2.32 xdr_rmtcallres F +GLIBC_2.32 xdr_short F +GLIBC_2.32 xdr_sizeof F +GLIBC_2.32 xdr_string F +GLIBC_2.32 xdr_u_char F +GLIBC_2.32 xdr_u_hyper F +GLIBC_2.32 xdr_u_int F +GLIBC_2.32 xdr_u_long F +GLIBC_2.32 xdr_u_longlong_t F +GLIBC_2.32 xdr_u_quad_t F +GLIBC_2.32 xdr_u_short F +GLIBC_2.32 xdr_uint16_t F +GLIBC_2.32 xdr_uint32_t F +GLIBC_2.32 xdr_uint64_t F +GLIBC_2.32 xdr_uint8_t F +GLIBC_2.32 xdr_union F +GLIBC_2.32 xdr_unixcred F +GLIBC_2.32 xdr_vector F +GLIBC_2.32 xdr_void F +GLIBC_2.32 xdr_wrapstring F +GLIBC_2.32 xdrmem_create F +GLIBC_2.32 xdrrec_create F +GLIBC_2.32 xdrrec_endofrecord F +GLIBC_2.32 xdrrec_eof F +GLIBC_2.32 xdrrec_skiprecord F +GLIBC_2.32 xdrstdio_create F +GLIBC_2.32 xencrypt F +GLIBC_2.32 xprt_register F +GLIBC_2.32 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 000000000000..6bd253453e99 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/libcrypt.abilist @@ -0,0 +1,2 @@ +GLIBC_2.32 crypt F +GLIBC_2.32 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 000000000000..bf20b0c4044f --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/libdl.abilist @@ -0,0 +1,9 @@ +GLIBC_2.32 dladdr F +GLIBC_2.32 dladdr1 F +GLIBC_2.32 dlclose F +GLIBC_2.32 dlerror F +GLIBC_2.32 dlinfo F +GLIBC_2.32 dlmopen F +GLIBC_2.32 dlopen F +GLIBC_2.32 dlsym F +GLIBC_2.32 dlvsym F diff --git a/sysdeps/unix/sysv/linux/arc/libm.abilist b/sysdeps/unix/sysv/linux/arc/libm.abilist new file mode 100644 index 000000000000..4338563657b8 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/libm.abilist @@ -0,0 +1,699 @@ +GLIBC_2.32 __clog10 F +GLIBC_2.32 __clog10f F +GLIBC_2.32 __clog10l F +GLIBC_2.32 __finite F +GLIBC_2.32 __finitef F +GLIBC_2.32 __fpclassify F +GLIBC_2.32 __fpclassifyf F +GLIBC_2.32 __iseqsig F +GLIBC_2.32 __iseqsigf F +GLIBC_2.32 __issignaling F +GLIBC_2.32 __issignalingf F +GLIBC_2.32 __signbit F +GLIBC_2.32 __signbitf F +GLIBC_2.32 __signgam D 0x4 +GLIBC_2.32 acos F +GLIBC_2.32 acosf F +GLIBC_2.32 acosf32 F +GLIBC_2.32 acosf32x F +GLIBC_2.32 acosf64 F +GLIBC_2.32 acosh F +GLIBC_2.32 acoshf F +GLIBC_2.32 acoshf32 F +GLIBC_2.32 acoshf32x F +GLIBC_2.32 acoshf64 F +GLIBC_2.32 acoshl F +GLIBC_2.32 acosl F +GLIBC_2.32 asin F +GLIBC_2.32 asinf F +GLIBC_2.32 asinf32 F +GLIBC_2.32 asinf32x F +GLIBC_2.32 asinf64 F +GLIBC_2.32 asinh F +GLIBC_2.32 asinhf F +GLIBC_2.32 asinhf32 F +GLIBC_2.32 asinhf32x F +GLIBC_2.32 asinhf64 F +GLIBC_2.32 asinhl F +GLIBC_2.32 asinl F +GLIBC_2.32 atan F +GLIBC_2.32 atan2 F +GLIBC_2.32 atan2f F +GLIBC_2.32 atan2f32 F +GLIBC_2.32 atan2f32x F +GLIBC_2.32 atan2f64 F +GLIBC_2.32 atan2l F +GLIBC_2.32 atanf F +GLIBC_2.32 atanf32 F +GLIBC_2.32 atanf32x F +GLIBC_2.32 atanf64 F +GLIBC_2.32 atanh F +GLIBC_2.32 atanhf F +GLIBC_2.32 atanhf32 F +GLIBC_2.32 atanhf32x F +GLIBC_2.32 atanhf64 F +GLIBC_2.32 atanhl F +GLIBC_2.32 atanl F +GLIBC_2.32 cabs F +GLIBC_2.32 cabsf F +GLIBC_2.32 cabsf32 F +GLIBC_2.32 cabsf32x F +GLIBC_2.32 cabsf64 F +GLIBC_2.32 cabsl F +GLIBC_2.32 cacos F +GLIBC_2.32 cacosf F +GLIBC_2.32 cacosf32 F +GLIBC_2.32 cacosf32x F +GLIBC_2.32 cacosf64 F +GLIBC_2.32 cacosh F +GLIBC_2.32 cacoshf F +GLIBC_2.32 cacoshf32 F +GLIBC_2.32 cacoshf32x F +GLIBC_2.32 cacoshf64 F +GLIBC_2.32 cacoshl F +GLIBC_2.32 cacosl F +GLIBC_2.32 canonicalize F +GLIBC_2.32 canonicalizef F +GLIBC_2.32 canonicalizef32 F +GLIBC_2.32 canonicalizef32x F +GLIBC_2.32 canonicalizef64 F +GLIBC_2.32 canonicalizel F +GLIBC_2.32 carg F +GLIBC_2.32 cargf F +GLIBC_2.32 cargf32 F +GLIBC_2.32 cargf32x F +GLIBC_2.32 cargf64 F +GLIBC_2.32 cargl F +GLIBC_2.32 casin F +GLIBC_2.32 casinf F +GLIBC_2.32 casinf32 F +GLIBC_2.32 casinf32x F +GLIBC_2.32 casinf64 F +GLIBC_2.32 casinh F +GLIBC_2.32 casinhf F +GLIBC_2.32 casinhf32 F +GLIBC_2.32 casinhf32x F +GLIBC_2.32 casinhf64 F +GLIBC_2.32 casinhl F +GLIBC_2.32 casinl F +GLIBC_2.32 catan F +GLIBC_2.32 catanf F +GLIBC_2.32 catanf32 F +GLIBC_2.32 catanf32x F +GLIBC_2.32 catanf64 F +GLIBC_2.32 catanh F +GLIBC_2.32 catanhf F +GLIBC_2.32 catanhf32 F +GLIBC_2.32 catanhf32x F +GLIBC_2.32 catanhf64 F +GLIBC_2.32 catanhl F +GLIBC_2.32 catanl F +GLIBC_2.32 cbrt F +GLIBC_2.32 cbrtf F +GLIBC_2.32 cbrtf32 F +GLIBC_2.32 cbrtf32x F +GLIBC_2.32 cbrtf64 F +GLIBC_2.32 cbrtl F +GLIBC_2.32 ccos F +GLIBC_2.32 ccosf F +GLIBC_2.32 ccosf32 F +GLIBC_2.32 ccosf32x F +GLIBC_2.32 ccosf64 F +GLIBC_2.32 ccosh F +GLIBC_2.32 ccoshf F +GLIBC_2.32 ccoshf32 F +GLIBC_2.32 ccoshf32x F +GLIBC_2.32 ccoshf64 F +GLIBC_2.32 ccoshl F +GLIBC_2.32 ccosl F +GLIBC_2.32 ceil F +GLIBC_2.32 ceilf F +GLIBC_2.32 ceilf32 F +GLIBC_2.32 ceilf32x F +GLIBC_2.32 ceilf64 F +GLIBC_2.32 ceill F +GLIBC_2.32 cexp F +GLIBC_2.32 cexpf F +GLIBC_2.32 cexpf32 F +GLIBC_2.32 cexpf32x F +GLIBC_2.32 cexpf64 F +GLIBC_2.32 cexpl F +GLIBC_2.32 cimag F +GLIBC_2.32 cimagf F +GLIBC_2.32 cimagf32 F +GLIBC_2.32 cimagf32x F +GLIBC_2.32 cimagf64 F +GLIBC_2.32 cimagl F +GLIBC_2.32 clog F +GLIBC_2.32 clog10 F +GLIBC_2.32 clog10f F +GLIBC_2.32 clog10f32 F +GLIBC_2.32 clog10f32x F +GLIBC_2.32 clog10f64 F +GLIBC_2.32 clog10l F +GLIBC_2.32 clogf F +GLIBC_2.32 clogf32 F +GLIBC_2.32 clogf32x F +GLIBC_2.32 clogf64 F +GLIBC_2.32 clogl F +GLIBC_2.32 conj F +GLIBC_2.32 conjf F +GLIBC_2.32 conjf32 F +GLIBC_2.32 conjf32x F +GLIBC_2.32 conjf64 F +GLIBC_2.32 conjl F +GLIBC_2.32 copysign F +GLIBC_2.32 copysignf F +GLIBC_2.32 copysignf32 F +GLIBC_2.32 copysignf32x F +GLIBC_2.32 copysignf64 F +GLIBC_2.32 copysignl F +GLIBC_2.32 cos F +GLIBC_2.32 cosf F +GLIBC_2.32 cosf32 F +GLIBC_2.32 cosf32x F +GLIBC_2.32 cosf64 F +GLIBC_2.32 cosh F +GLIBC_2.32 coshf F +GLIBC_2.32 coshf32 F +GLIBC_2.32 coshf32x F +GLIBC_2.32 coshf64 F +GLIBC_2.32 coshl F +GLIBC_2.32 cosl F +GLIBC_2.32 cpow F +GLIBC_2.32 cpowf F +GLIBC_2.32 cpowf32 F +GLIBC_2.32 cpowf32x F +GLIBC_2.32 cpowf64 F +GLIBC_2.32 cpowl F +GLIBC_2.32 cproj F +GLIBC_2.32 cprojf F +GLIBC_2.32 cprojf32 F +GLIBC_2.32 cprojf32x F +GLIBC_2.32 cprojf64 F +GLIBC_2.32 cprojl F +GLIBC_2.32 creal F +GLIBC_2.32 crealf F +GLIBC_2.32 crealf32 F +GLIBC_2.32 crealf32x F +GLIBC_2.32 crealf64 F +GLIBC_2.32 creall F +GLIBC_2.32 csin F +GLIBC_2.32 csinf F +GLIBC_2.32 csinf32 F +GLIBC_2.32 csinf32x F +GLIBC_2.32 csinf64 F +GLIBC_2.32 csinh F +GLIBC_2.32 csinhf F +GLIBC_2.32 csinhf32 F +GLIBC_2.32 csinhf32x F +GLIBC_2.32 csinhf64 F +GLIBC_2.32 csinhl F +GLIBC_2.32 csinl F +GLIBC_2.32 csqrt F +GLIBC_2.32 csqrtf F +GLIBC_2.32 csqrtf32 F +GLIBC_2.32 csqrtf32x F +GLIBC_2.32 csqrtf64 F +GLIBC_2.32 csqrtl F +GLIBC_2.32 ctan F +GLIBC_2.32 ctanf F +GLIBC_2.32 ctanf32 F +GLIBC_2.32 ctanf32x F +GLIBC_2.32 ctanf64 F +GLIBC_2.32 ctanh F +GLIBC_2.32 ctanhf F +GLIBC_2.32 ctanhf32 F +GLIBC_2.32 ctanhf32x F +GLIBC_2.32 ctanhf64 F +GLIBC_2.32 ctanhl F +GLIBC_2.32 ctanl F +GLIBC_2.32 daddl F +GLIBC_2.32 ddivl F +GLIBC_2.32 dmull F +GLIBC_2.32 drem F +GLIBC_2.32 dremf F +GLIBC_2.32 dreml F +GLIBC_2.32 dsubl F +GLIBC_2.32 erf F +GLIBC_2.32 erfc F +GLIBC_2.32 erfcf F +GLIBC_2.32 erfcf32 F +GLIBC_2.32 erfcf32x F +GLIBC_2.32 erfcf64 F +GLIBC_2.32 erfcl F +GLIBC_2.32 erff F +GLIBC_2.32 erff32 F +GLIBC_2.32 erff32x F +GLIBC_2.32 erff64 F +GLIBC_2.32 erfl F +GLIBC_2.32 exp F +GLIBC_2.32 exp10 F +GLIBC_2.32 exp10f F +GLIBC_2.32 exp10f32 F +GLIBC_2.32 exp10f32x F +GLIBC_2.32 exp10f64 F +GLIBC_2.32 exp10l F +GLIBC_2.32 exp2 F +GLIBC_2.32 exp2f F +GLIBC_2.32 exp2f32 F +GLIBC_2.32 exp2f32x F +GLIBC_2.32 exp2f64 F +GLIBC_2.32 exp2l F +GLIBC_2.32 expf F +GLIBC_2.32 expf32 F +GLIBC_2.32 expf32x F +GLIBC_2.32 expf64 F +GLIBC_2.32 expl F +GLIBC_2.32 expm1 F +GLIBC_2.32 expm1f F +GLIBC_2.32 expm1f32 F +GLIBC_2.32 expm1f32x F +GLIBC_2.32 expm1f64 F +GLIBC_2.32 expm1l F +GLIBC_2.32 f32addf32x F +GLIBC_2.32 f32addf64 F +GLIBC_2.32 f32divf32x F +GLIBC_2.32 f32divf64 F +GLIBC_2.32 f32mulf32x F +GLIBC_2.32 f32mulf64 F +GLIBC_2.32 f32subf32x F +GLIBC_2.32 f32subf64 F +GLIBC_2.32 f32xaddf64 F +GLIBC_2.32 f32xdivf64 F +GLIBC_2.32 f32xmulf64 F +GLIBC_2.32 f32xsubf64 F +GLIBC_2.32 fabs F +GLIBC_2.32 fabsf F +GLIBC_2.32 fabsf32 F +GLIBC_2.32 fabsf32x F +GLIBC_2.32 fabsf64 F +GLIBC_2.32 fabsl F +GLIBC_2.32 fadd F +GLIBC_2.32 faddl F +GLIBC_2.32 fdim F +GLIBC_2.32 fdimf F +GLIBC_2.32 fdimf32 F +GLIBC_2.32 fdimf32x F +GLIBC_2.32 fdimf64 F +GLIBC_2.32 fdiml F +GLIBC_2.32 fdiv F +GLIBC_2.32 fdivl F +GLIBC_2.32 feclearexcept F +GLIBC_2.32 fedisableexcept F +GLIBC_2.32 feenableexcept F +GLIBC_2.32 fegetenv F +GLIBC_2.32 fegetexcept F +GLIBC_2.32 fegetexceptflag F +GLIBC_2.32 fegetmode F +GLIBC_2.32 fegetround F +GLIBC_2.32 feholdexcept F +GLIBC_2.32 feraiseexcept F +GLIBC_2.32 fesetenv F +GLIBC_2.32 fesetexcept F +GLIBC_2.32 fesetexceptflag F +GLIBC_2.32 fesetmode F +GLIBC_2.32 fesetround F +GLIBC_2.32 fetestexcept F +GLIBC_2.32 fetestexceptflag F +GLIBC_2.32 feupdateenv F +GLIBC_2.32 finite F +GLIBC_2.32 finitef F +GLIBC_2.32 finitel F +GLIBC_2.32 floor F +GLIBC_2.32 floorf F +GLIBC_2.32 floorf32 F +GLIBC_2.32 floorf32x F +GLIBC_2.32 floorf64 F +GLIBC_2.32 floorl F +GLIBC_2.32 fma F +GLIBC_2.32 fmaf F +GLIBC_2.32 fmaf32 F +GLIBC_2.32 fmaf32x F +GLIBC_2.32 fmaf64 F +GLIBC_2.32 fmal F +GLIBC_2.32 fmax F +GLIBC_2.32 fmaxf F +GLIBC_2.32 fmaxf32 F +GLIBC_2.32 fmaxf32x F +GLIBC_2.32 fmaxf64 F +GLIBC_2.32 fmaxl F +GLIBC_2.32 fmaxmag F +GLIBC_2.32 fmaxmagf F +GLIBC_2.32 fmaxmagf32 F +GLIBC_2.32 fmaxmagf32x F +GLIBC_2.32 fmaxmagf64 F +GLIBC_2.32 fmaxmagl F +GLIBC_2.32 fmin F +GLIBC_2.32 fminf F +GLIBC_2.32 fminf32 F +GLIBC_2.32 fminf32x F +GLIBC_2.32 fminf64 F +GLIBC_2.32 fminl F +GLIBC_2.32 fminmag F +GLIBC_2.32 fminmagf F +GLIBC_2.32 fminmagf32 F +GLIBC_2.32 fminmagf32x F +GLIBC_2.32 fminmagf64 F +GLIBC_2.32 fminmagl F +GLIBC_2.32 fmod F +GLIBC_2.32 fmodf F +GLIBC_2.32 fmodf32 F +GLIBC_2.32 fmodf32x F +GLIBC_2.32 fmodf64 F +GLIBC_2.32 fmodl F +GLIBC_2.32 fmul F +GLIBC_2.32 fmull F +GLIBC_2.32 frexp F +GLIBC_2.32 frexpf F +GLIBC_2.32 frexpf32 F +GLIBC_2.32 frexpf32x F +GLIBC_2.32 frexpf64 F +GLIBC_2.32 frexpl F +GLIBC_2.32 fromfp F +GLIBC_2.32 fromfpf F +GLIBC_2.32 fromfpf32 F +GLIBC_2.32 fromfpf32x F +GLIBC_2.32 fromfpf64 F +GLIBC_2.32 fromfpl F +GLIBC_2.32 fromfpx F +GLIBC_2.32 fromfpxf F +GLIBC_2.32 fromfpxf32 F +GLIBC_2.32 fromfpxf32x F +GLIBC_2.32 fromfpxf64 F +GLIBC_2.32 fromfpxl F +GLIBC_2.32 fsub F +GLIBC_2.32 fsubl F +GLIBC_2.32 gamma F +GLIBC_2.32 gammaf F +GLIBC_2.32 gammal F +GLIBC_2.32 getpayload F +GLIBC_2.32 getpayloadf F +GLIBC_2.32 getpayloadf32 F +GLIBC_2.32 getpayloadf32x F +GLIBC_2.32 getpayloadf64 F +GLIBC_2.32 getpayloadl F +GLIBC_2.32 hypot F +GLIBC_2.32 hypotf F +GLIBC_2.32 hypotf32 F +GLIBC_2.32 hypotf32x F +GLIBC_2.32 hypotf64 F +GLIBC_2.32 hypotl F +GLIBC_2.32 ilogb F +GLIBC_2.32 ilogbf F +GLIBC_2.32 ilogbf32 F +GLIBC_2.32 ilogbf32x F +GLIBC_2.32 ilogbf64 F +GLIBC_2.32 ilogbl F +GLIBC_2.32 j0 F +GLIBC_2.32 j0f F +GLIBC_2.32 j0f32 F +GLIBC_2.32 j0f32x F +GLIBC_2.32 j0f64 F +GLIBC_2.32 j0l F +GLIBC_2.32 j1 F +GLIBC_2.32 j1f F +GLIBC_2.32 j1f32 F +GLIBC_2.32 j1f32x F +GLIBC_2.32 j1f64 F +GLIBC_2.32 j1l F +GLIBC_2.32 jn F +GLIBC_2.32 jnf F +GLIBC_2.32 jnf32 F +GLIBC_2.32 jnf32x F +GLIBC_2.32 jnf64 F +GLIBC_2.32 jnl F +GLIBC_2.32 ldexp F +GLIBC_2.32 ldexpf F +GLIBC_2.32 ldexpf32 F +GLIBC_2.32 ldexpf32x F +GLIBC_2.32 ldexpf64 F +GLIBC_2.32 ldexpl F +GLIBC_2.32 lgamma F +GLIBC_2.32 lgamma_r F +GLIBC_2.32 lgammaf F +GLIBC_2.32 lgammaf32 F +GLIBC_2.32 lgammaf32_r F +GLIBC_2.32 lgammaf32x F +GLIBC_2.32 lgammaf32x_r F +GLIBC_2.32 lgammaf64 F +GLIBC_2.32 lgammaf64_r F +GLIBC_2.32 lgammaf_r F +GLIBC_2.32 lgammal F +GLIBC_2.32 lgammal_r F +GLIBC_2.32 llogb F +GLIBC_2.32 llogbf F +GLIBC_2.32 llogbf32 F +GLIBC_2.32 llogbf32x F +GLIBC_2.32 llogbf64 F +GLIBC_2.32 llogbl F +GLIBC_2.32 llrint F +GLIBC_2.32 llrintf F +GLIBC_2.32 llrintf32 F +GLIBC_2.32 llrintf32x F +GLIBC_2.32 llrintf64 F +GLIBC_2.32 llrintl F +GLIBC_2.32 llround F +GLIBC_2.32 llroundf F +GLIBC_2.32 llroundf32 F +GLIBC_2.32 llroundf32x F +GLIBC_2.32 llroundf64 F +GLIBC_2.32 llroundl F +GLIBC_2.32 log F +GLIBC_2.32 log10 F +GLIBC_2.32 log10f F +GLIBC_2.32 log10f32 F +GLIBC_2.32 log10f32x F +GLIBC_2.32 log10f64 F +GLIBC_2.32 log10l F +GLIBC_2.32 log1p F +GLIBC_2.32 log1pf F +GLIBC_2.32 log1pf32 F +GLIBC_2.32 log1pf32x F +GLIBC_2.32 log1pf64 F +GLIBC_2.32 log1pl F +GLIBC_2.32 log2 F +GLIBC_2.32 log2f F +GLIBC_2.32 log2f32 F +GLIBC_2.32 log2f32x F +GLIBC_2.32 log2f64 F +GLIBC_2.32 log2l F +GLIBC_2.32 logb F +GLIBC_2.32 logbf F +GLIBC_2.32 logbf32 F +GLIBC_2.32 logbf32x F +GLIBC_2.32 logbf64 F +GLIBC_2.32 logbl F +GLIBC_2.32 logf F +GLIBC_2.32 logf32 F +GLIBC_2.32 logf32x F +GLIBC_2.32 logf64 F +GLIBC_2.32 logl F +GLIBC_2.32 lrint F +GLIBC_2.32 lrintf F +GLIBC_2.32 lrintf32 F +GLIBC_2.32 lrintf32x F +GLIBC_2.32 lrintf64 F +GLIBC_2.32 lrintl F +GLIBC_2.32 lround F +GLIBC_2.32 lroundf F +GLIBC_2.32 lroundf32 F +GLIBC_2.32 lroundf32x F +GLIBC_2.32 lroundf64 F +GLIBC_2.32 lroundl F +GLIBC_2.32 modf F +GLIBC_2.32 modff F +GLIBC_2.32 modff32 F +GLIBC_2.32 modff32x F +GLIBC_2.32 modff64 F +GLIBC_2.32 modfl F +GLIBC_2.32 nan F +GLIBC_2.32 nanf F +GLIBC_2.32 nanf32 F +GLIBC_2.32 nanf32x F +GLIBC_2.32 nanf64 F +GLIBC_2.32 nanl F +GLIBC_2.32 nearbyint F +GLIBC_2.32 nearbyintf F +GLIBC_2.32 nearbyintf32 F +GLIBC_2.32 nearbyintf32x F +GLIBC_2.32 nearbyintf64 F +GLIBC_2.32 nearbyintl F +GLIBC_2.32 nextafter F +GLIBC_2.32 nextafterf F +GLIBC_2.32 nextafterf32 F +GLIBC_2.32 nextafterf32x F +GLIBC_2.32 nextafterf64 F +GLIBC_2.32 nextafterl F +GLIBC_2.32 nextdown F +GLIBC_2.32 nextdownf F +GLIBC_2.32 nextdownf32 F +GLIBC_2.32 nextdownf32x F +GLIBC_2.32 nextdownf64 F +GLIBC_2.32 nextdownl F +GLIBC_2.32 nexttoward F +GLIBC_2.32 nexttowardf F +GLIBC_2.32 nexttowardl F +GLIBC_2.32 nextup F +GLIBC_2.32 nextupf F +GLIBC_2.32 nextupf32 F +GLIBC_2.32 nextupf32x F +GLIBC_2.32 nextupf64 F +GLIBC_2.32 nextupl F +GLIBC_2.32 pow F +GLIBC_2.32 powf F +GLIBC_2.32 powf32 F +GLIBC_2.32 powf32x F +GLIBC_2.32 powf64 F +GLIBC_2.32 powl F +GLIBC_2.32 remainder F +GLIBC_2.32 remainderf F +GLIBC_2.32 remainderf32 F +GLIBC_2.32 remainderf32x F +GLIBC_2.32 remainderf64 F +GLIBC_2.32 remainderl F +GLIBC_2.32 remquo F +GLIBC_2.32 remquof F +GLIBC_2.32 remquof32 F +GLIBC_2.32 remquof32x F +GLIBC_2.32 remquof64 F +GLIBC_2.32 remquol F +GLIBC_2.32 rint F +GLIBC_2.32 rintf F +GLIBC_2.32 rintf32 F +GLIBC_2.32 rintf32x F +GLIBC_2.32 rintf64 F +GLIBC_2.32 rintl F +GLIBC_2.32 round F +GLIBC_2.32 roundeven F +GLIBC_2.32 roundevenf F +GLIBC_2.32 roundevenf32 F +GLIBC_2.32 roundevenf32x F +GLIBC_2.32 roundevenf64 F +GLIBC_2.32 roundevenl F +GLIBC_2.32 roundf F +GLIBC_2.32 roundf32 F +GLIBC_2.32 roundf32x F +GLIBC_2.32 roundf64 F +GLIBC_2.32 roundl F +GLIBC_2.32 scalb F +GLIBC_2.32 scalbf F +GLIBC_2.32 scalbl F +GLIBC_2.32 scalbln F +GLIBC_2.32 scalblnf F +GLIBC_2.32 scalblnf32 F +GLIBC_2.32 scalblnf32x F +GLIBC_2.32 scalblnf64 F +GLIBC_2.32 scalblnl F +GLIBC_2.32 scalbn F +GLIBC_2.32 scalbnf F +GLIBC_2.32 scalbnf32 F +GLIBC_2.32 scalbnf32x F +GLIBC_2.32 scalbnf64 F +GLIBC_2.32 scalbnl F +GLIBC_2.32 setpayload F +GLIBC_2.32 setpayloadf F +GLIBC_2.32 setpayloadf32 F +GLIBC_2.32 setpayloadf32x F +GLIBC_2.32 setpayloadf64 F +GLIBC_2.32 setpayloadl F +GLIBC_2.32 setpayloadsig F +GLIBC_2.32 setpayloadsigf F +GLIBC_2.32 setpayloadsigf32 F +GLIBC_2.32 setpayloadsigf32x F +GLIBC_2.32 setpayloadsigf64 F +GLIBC_2.32 setpayloadsigl F +GLIBC_2.32 signgam D 0x4 +GLIBC_2.32 significand F +GLIBC_2.32 significandf F +GLIBC_2.32 significandl F +GLIBC_2.32 sin F +GLIBC_2.32 sincos F +GLIBC_2.32 sincosf F +GLIBC_2.32 sincosf32 F +GLIBC_2.32 sincosf32x F +GLIBC_2.32 sincosf64 F +GLIBC_2.32 sincosl F +GLIBC_2.32 sinf F +GLIBC_2.32 sinf32 F +GLIBC_2.32 sinf32x F +GLIBC_2.32 sinf64 F +GLIBC_2.32 sinh F +GLIBC_2.32 sinhf F +GLIBC_2.32 sinhf32 F +GLIBC_2.32 sinhf32x F +GLIBC_2.32 sinhf64 F +GLIBC_2.32 sinhl F +GLIBC_2.32 sinl F +GLIBC_2.32 sqrt F +GLIBC_2.32 sqrtf F +GLIBC_2.32 sqrtf32 F +GLIBC_2.32 sqrtf32x F +GLIBC_2.32 sqrtf64 F +GLIBC_2.32 sqrtl F +GLIBC_2.32 tan F +GLIBC_2.32 tanf F +GLIBC_2.32 tanf32 F +GLIBC_2.32 tanf32x F +GLIBC_2.32 tanf64 F +GLIBC_2.32 tanh F +GLIBC_2.32 tanhf F +GLIBC_2.32 tanhf32 F +GLIBC_2.32 tanhf32x F +GLIBC_2.32 tanhf64 F +GLIBC_2.32 tanhl F +GLIBC_2.32 tanl F +GLIBC_2.32 tgamma F +GLIBC_2.32 tgammaf F +GLIBC_2.32 tgammaf32 F +GLIBC_2.32 tgammaf32x F +GLIBC_2.32 tgammaf64 F +GLIBC_2.32 tgammal F +GLIBC_2.32 totalorder F +GLIBC_2.32 totalorderf F +GLIBC_2.32 totalorderf32 F +GLIBC_2.32 totalorderf32x F +GLIBC_2.32 totalorderf64 F +GLIBC_2.32 totalorderl F +GLIBC_2.32 totalordermag F +GLIBC_2.32 totalordermagf F +GLIBC_2.32 totalordermagf32 F +GLIBC_2.32 totalordermagf32x F +GLIBC_2.32 totalordermagf64 F +GLIBC_2.32 totalordermagl F +GLIBC_2.32 trunc F +GLIBC_2.32 truncf F +GLIBC_2.32 truncf32 F +GLIBC_2.32 truncf32x F +GLIBC_2.32 truncf64 F +GLIBC_2.32 truncl F +GLIBC_2.32 ufromfp F +GLIBC_2.32 ufromfpf F +GLIBC_2.32 ufromfpf32 F +GLIBC_2.32 ufromfpf32x F +GLIBC_2.32 ufromfpf64 F +GLIBC_2.32 ufromfpl F +GLIBC_2.32 ufromfpx F +GLIBC_2.32 ufromfpxf F +GLIBC_2.32 ufromfpxf32 F +GLIBC_2.32 ufromfpxf32x F +GLIBC_2.32 ufromfpxf64 F +GLIBC_2.32 ufromfpxl F +GLIBC_2.32 y0 F +GLIBC_2.32 y0f F +GLIBC_2.32 y0f32 F +GLIBC_2.32 y0f32x F +GLIBC_2.32 y0f64 F +GLIBC_2.32 y0l F +GLIBC_2.32 y1 F +GLIBC_2.32 y1f F +GLIBC_2.32 y1f32 F +GLIBC_2.32 y1f32x F +GLIBC_2.32 y1f64 F +GLIBC_2.32 y1l F +GLIBC_2.32 yn F +GLIBC_2.32 ynf F +GLIBC_2.32 ynf32 F +GLIBC_2.32 ynf32x F +GLIBC_2.32 ynf64 F +GLIBC_2.32 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 000000000000..1adcbecc2e06 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist @@ -0,0 +1,213 @@ +GLIBC_2.32 _IO_flockfile F +GLIBC_2.32 _IO_ftrylockfile F +GLIBC_2.32 _IO_funlockfile F +GLIBC_2.32 __close F +GLIBC_2.32 __connect F +GLIBC_2.32 __errno_location F +GLIBC_2.32 __h_errno_location F +GLIBC_2.32 __libc_allocate_rtsig F +GLIBC_2.32 __libc_current_sigrtmax F +GLIBC_2.32 __libc_current_sigrtmin F +GLIBC_2.32 __lseek F +GLIBC_2.32 __open F +GLIBC_2.32 __open64 F +GLIBC_2.32 __pread64 F +GLIBC_2.32 __pthread_cleanup_routine F +GLIBC_2.32 __pthread_getspecific F +GLIBC_2.32 __pthread_key_create F +GLIBC_2.32 __pthread_mutex_destroy F +GLIBC_2.32 __pthread_mutex_init F +GLIBC_2.32 __pthread_mutex_lock F +GLIBC_2.32 __pthread_mutex_trylock F +GLIBC_2.32 __pthread_mutex_unlock F +GLIBC_2.32 __pthread_mutexattr_destroy F +GLIBC_2.32 __pthread_mutexattr_init F +GLIBC_2.32 __pthread_mutexattr_settype F +GLIBC_2.32 __pthread_once F +GLIBC_2.32 __pthread_register_cancel F +GLIBC_2.32 __pthread_register_cancel_defer F +GLIBC_2.32 __pthread_rwlock_destroy F +GLIBC_2.32 __pthread_rwlock_init F +GLIBC_2.32 __pthread_rwlock_rdlock F +GLIBC_2.32 __pthread_rwlock_tryrdlock F +GLIBC_2.32 __pthread_rwlock_trywrlock F +GLIBC_2.32 __pthread_rwlock_unlock F +GLIBC_2.32 __pthread_rwlock_wrlock F +GLIBC_2.32 __pthread_setspecific F +GLIBC_2.32 __pthread_unregister_cancel F +GLIBC_2.32 __pthread_unregister_cancel_restore F +GLIBC_2.32 __pthread_unwind_next F +GLIBC_2.32 __pwrite64 F +GLIBC_2.32 __read F +GLIBC_2.32 __res_state F +GLIBC_2.32 __send F +GLIBC_2.32 __sigaction F +GLIBC_2.32 __write F +GLIBC_2.32 _pthread_cleanup_pop F +GLIBC_2.32 _pthread_cleanup_pop_restore F +GLIBC_2.32 _pthread_cleanup_push F +GLIBC_2.32 _pthread_cleanup_push_defer F +GLIBC_2.32 accept F +GLIBC_2.32 call_once F +GLIBC_2.32 close F +GLIBC_2.32 cnd_broadcast F +GLIBC_2.32 cnd_destroy F +GLIBC_2.32 cnd_init F +GLIBC_2.32 cnd_signal F +GLIBC_2.32 cnd_timedwait F +GLIBC_2.32 cnd_wait F +GLIBC_2.32 connect F +GLIBC_2.32 flockfile F +GLIBC_2.32 fsync F +GLIBC_2.32 ftrylockfile F +GLIBC_2.32 funlockfile F +GLIBC_2.32 lseek F +GLIBC_2.32 lseek64 F +GLIBC_2.32 msync F +GLIBC_2.32 mtx_destroy F +GLIBC_2.32 mtx_init F +GLIBC_2.32 mtx_lock F +GLIBC_2.32 mtx_timedlock F +GLIBC_2.32 mtx_trylock F +GLIBC_2.32 mtx_unlock F +GLIBC_2.32 open F +GLIBC_2.32 open64 F +GLIBC_2.32 pause F +GLIBC_2.32 pread F +GLIBC_2.32 pread64 F +GLIBC_2.32 pthread_attr_getaffinity_np F +GLIBC_2.32 pthread_attr_getguardsize F +GLIBC_2.32 pthread_attr_getstack F +GLIBC_2.32 pthread_attr_getstackaddr F +GLIBC_2.32 pthread_attr_getstacksize F +GLIBC_2.32 pthread_attr_setguardsize F +GLIBC_2.32 pthread_attr_setstack F +GLIBC_2.32 pthread_attr_setstackaddr F +GLIBC_2.32 pthread_attr_setstacksize F +GLIBC_2.32 pthread_barrier_destroy F +GLIBC_2.32 pthread_barrier_init F +GLIBC_2.32 pthread_barrier_wait F +GLIBC_2.32 pthread_barrierattr_destroy F +GLIBC_2.32 pthread_barrierattr_getpshared F +GLIBC_2.32 pthread_barrierattr_init F +GLIBC_2.32 pthread_barrierattr_setpshared F +GLIBC_2.32 pthread_cancel F +GLIBC_2.32 pthread_clockjoin_np F +GLIBC_2.32 pthread_cond_broadcast F +GLIBC_2.32 pthread_cond_clockwait F +GLIBC_2.32 pthread_cond_signal F +GLIBC_2.32 pthread_cond_timedwait F +GLIBC_2.32 pthread_cond_wait F +GLIBC_2.32 pthread_condattr_getclock F +GLIBC_2.32 pthread_condattr_getpshared F +GLIBC_2.32 pthread_condattr_setclock F +GLIBC_2.32 pthread_condattr_setpshared F +GLIBC_2.32 pthread_create F +GLIBC_2.32 pthread_detach F +GLIBC_2.32 pthread_exit F +GLIBC_2.32 pthread_getattr_default_np F +GLIBC_2.32 pthread_getconcurrency F +GLIBC_2.32 pthread_getcpuclockid F +GLIBC_2.32 pthread_getname_np F +GLIBC_2.32 pthread_getspecific F +GLIBC_2.32 pthread_join F +GLIBC_2.32 pthread_key_create F +GLIBC_2.32 pthread_key_delete F +GLIBC_2.32 pthread_kill F +GLIBC_2.32 pthread_kill_other_threads_np F +GLIBC_2.32 pthread_mutex_clocklock F +GLIBC_2.32 pthread_mutex_consistent F +GLIBC_2.32 pthread_mutex_consistent_np F +GLIBC_2.32 pthread_mutex_destroy F +GLIBC_2.32 pthread_mutex_getprioceiling F +GLIBC_2.32 pthread_mutex_init F +GLIBC_2.32 pthread_mutex_lock F +GLIBC_2.32 pthread_mutex_setprioceiling F +GLIBC_2.32 pthread_mutex_timedlock F +GLIBC_2.32 pthread_mutex_trylock F +GLIBC_2.32 pthread_mutex_unlock F +GLIBC_2.32 pthread_mutexattr_destroy F +GLIBC_2.32 pthread_mutexattr_getkind_np F +GLIBC_2.32 pthread_mutexattr_getprioceiling F +GLIBC_2.32 pthread_mutexattr_getprotocol F +GLIBC_2.32 pthread_mutexattr_getpshared F +GLIBC_2.32 pthread_mutexattr_getrobust F +GLIBC_2.32 pthread_mutexattr_getrobust_np F +GLIBC_2.32 pthread_mutexattr_gettype F +GLIBC_2.32 pthread_mutexattr_init F +GLIBC_2.32 pthread_mutexattr_setkind_np F +GLIBC_2.32 pthread_mutexattr_setprioceiling F +GLIBC_2.32 pthread_mutexattr_setprotocol F +GLIBC_2.32 pthread_mutexattr_setpshared F +GLIBC_2.32 pthread_mutexattr_setrobust F +GLIBC_2.32 pthread_mutexattr_setrobust_np F +GLIBC_2.32 pthread_mutexattr_settype F +GLIBC_2.32 pthread_once F +GLIBC_2.32 pthread_rwlock_clockrdlock F +GLIBC_2.32 pthread_rwlock_clockwrlock F +GLIBC_2.32 pthread_rwlock_destroy F +GLIBC_2.32 pthread_rwlock_init F +GLIBC_2.32 pthread_rwlock_rdlock F +GLIBC_2.32 pthread_rwlock_timedrdlock F +GLIBC_2.32 pthread_rwlock_timedwrlock F +GLIBC_2.32 pthread_rwlock_tryrdlock F +GLIBC_2.32 pthread_rwlock_trywrlock F +GLIBC_2.32 pthread_rwlock_unlock F +GLIBC_2.32 pthread_rwlock_wrlock F +GLIBC_2.32 pthread_rwlockattr_destroy F +GLIBC_2.32 pthread_rwlockattr_getkind_np F +GLIBC_2.32 pthread_rwlockattr_getpshared F +GLIBC_2.32 pthread_rwlockattr_init F +GLIBC_2.32 pthread_rwlockattr_setkind_np F +GLIBC_2.32 pthread_rwlockattr_setpshared F +GLIBC_2.32 pthread_setaffinity_np F +GLIBC_2.32 pthread_setattr_default_np F +GLIBC_2.32 pthread_setcancelstate F +GLIBC_2.32 pthread_setcanceltype F +GLIBC_2.32 pthread_setconcurrency F +GLIBC_2.32 pthread_setname_np F +GLIBC_2.32 pthread_setschedprio F +GLIBC_2.32 pthread_setspecific F +GLIBC_2.32 pthread_sigqueue F +GLIBC_2.32 pthread_spin_destroy F +GLIBC_2.32 pthread_spin_init F +GLIBC_2.32 pthread_spin_lock F +GLIBC_2.32 pthread_spin_trylock F +GLIBC_2.32 pthread_spin_unlock F +GLIBC_2.32 pthread_testcancel F +GLIBC_2.32 pthread_timedjoin_np F +GLIBC_2.32 pthread_tryjoin_np F +GLIBC_2.32 pthread_yield F +GLIBC_2.32 pwrite F +GLIBC_2.32 pwrite64 F +GLIBC_2.32 raise F +GLIBC_2.32 read F +GLIBC_2.32 recv F +GLIBC_2.32 recvfrom F +GLIBC_2.32 recvmsg F +GLIBC_2.32 sem_clockwait F +GLIBC_2.32 sem_close F +GLIBC_2.32 sem_destroy F +GLIBC_2.32 sem_getvalue F +GLIBC_2.32 sem_init F +GLIBC_2.32 sem_open F +GLIBC_2.32 sem_post F +GLIBC_2.32 sem_timedwait F +GLIBC_2.32 sem_trywait F +GLIBC_2.32 sem_unlink F +GLIBC_2.32 sem_wait F +GLIBC_2.32 send F +GLIBC_2.32 sendmsg F +GLIBC_2.32 sendto F +GLIBC_2.32 sigaction F +GLIBC_2.32 sigwait F +GLIBC_2.32 tcdrain F +GLIBC_2.32 thrd_create F +GLIBC_2.32 thrd_detach F +GLIBC_2.32 thrd_exit F +GLIBC_2.32 thrd_join F +GLIBC_2.32 tss_create F +GLIBC_2.32 tss_delete F +GLIBC_2.32 tss_get F +GLIBC_2.32 tss_set F +GLIBC_2.32 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 000000000000..c5edf99ea942 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/libresolv.abilist @@ -0,0 +1,79 @@ +GLIBC_2.32 __b64_ntop F +GLIBC_2.32 __b64_pton F +GLIBC_2.32 __dn_comp F +GLIBC_2.32 __dn_count_labels F +GLIBC_2.32 __dn_expand F +GLIBC_2.32 __dn_skipname F +GLIBC_2.32 __fp_nquery F +GLIBC_2.32 __fp_query F +GLIBC_2.32 __fp_resstat F +GLIBC_2.32 __hostalias F +GLIBC_2.32 __loc_aton F +GLIBC_2.32 __loc_ntoa F +GLIBC_2.32 __p_cdname F +GLIBC_2.32 __p_cdnname F +GLIBC_2.32 __p_class F +GLIBC_2.32 __p_class_syms D 0x54 +GLIBC_2.32 __p_fqname F +GLIBC_2.32 __p_fqnname F +GLIBC_2.32 __p_option F +GLIBC_2.32 __p_query F +GLIBC_2.32 __p_rcode F +GLIBC_2.32 __p_time F +GLIBC_2.32 __p_type F +GLIBC_2.32 __p_type_syms D 0x228 +GLIBC_2.32 __putlong F +GLIBC_2.32 __putshort F +GLIBC_2.32 __res_close F +GLIBC_2.32 __res_dnok F +GLIBC_2.32 __res_hnok F +GLIBC_2.32 __res_hostalias F +GLIBC_2.32 __res_isourserver F +GLIBC_2.32 __res_mailok F +GLIBC_2.32 __res_mkquery F +GLIBC_2.32 __res_nameinquery F +GLIBC_2.32 __res_nmkquery F +GLIBC_2.32 __res_nquery F +GLIBC_2.32 __res_nquerydomain F +GLIBC_2.32 __res_nsearch F +GLIBC_2.32 __res_nsend F +GLIBC_2.32 __res_ownok F +GLIBC_2.32 __res_queriesmatch F +GLIBC_2.32 __res_query F +GLIBC_2.32 __res_querydomain F +GLIBC_2.32 __res_search F +GLIBC_2.32 __res_send F +GLIBC_2.32 __sym_ntop F +GLIBC_2.32 __sym_ntos F +GLIBC_2.32 __sym_ston F +GLIBC_2.32 _getlong F +GLIBC_2.32 _getshort F +GLIBC_2.32 inet_net_ntop F +GLIBC_2.32 inet_net_pton F +GLIBC_2.32 inet_neta F +GLIBC_2.32 ns_datetosecs F +GLIBC_2.32 ns_format_ttl F +GLIBC_2.32 ns_get16 F +GLIBC_2.32 ns_get32 F +GLIBC_2.32 ns_initparse F +GLIBC_2.32 ns_makecanon F +GLIBC_2.32 ns_msg_getflag F +GLIBC_2.32 ns_name_compress F +GLIBC_2.32 ns_name_ntol F +GLIBC_2.32 ns_name_ntop F +GLIBC_2.32 ns_name_pack F +GLIBC_2.32 ns_name_pton F +GLIBC_2.32 ns_name_rollback F +GLIBC_2.32 ns_name_skip F +GLIBC_2.32 ns_name_uncompress F +GLIBC_2.32 ns_name_unpack F +GLIBC_2.32 ns_parse_ttl F +GLIBC_2.32 ns_parserr F +GLIBC_2.32 ns_put16 F +GLIBC_2.32 ns_put32 F +GLIBC_2.32 ns_samedomain F +GLIBC_2.32 ns_samename F +GLIBC_2.32 ns_skiprr F +GLIBC_2.32 ns_sprintrr F +GLIBC_2.32 ns_sprintrrf F +GLIBC_2.32 ns_subdomain F diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist new file mode 100644 index 000000000000..fda2b20c019a --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist @@ -0,0 +1,35 @@ +GLIBC_2.32 __mq_open_2 F +GLIBC_2.32 aio_cancel F +GLIBC_2.32 aio_cancel64 F +GLIBC_2.32 aio_error F +GLIBC_2.32 aio_error64 F +GLIBC_2.32 aio_fsync F +GLIBC_2.32 aio_fsync64 F +GLIBC_2.32 aio_init F +GLIBC_2.32 aio_read F +GLIBC_2.32 aio_read64 F +GLIBC_2.32 aio_return F +GLIBC_2.32 aio_return64 F +GLIBC_2.32 aio_suspend F +GLIBC_2.32 aio_suspend64 F +GLIBC_2.32 aio_write F +GLIBC_2.32 aio_write64 F +GLIBC_2.32 lio_listio F +GLIBC_2.32 lio_listio64 F +GLIBC_2.32 mq_close F +GLIBC_2.32 mq_getattr F +GLIBC_2.32 mq_notify F +GLIBC_2.32 mq_open F +GLIBC_2.32 mq_receive F +GLIBC_2.32 mq_send F +GLIBC_2.32 mq_setattr F +GLIBC_2.32 mq_timedreceive F +GLIBC_2.32 mq_timedsend F +GLIBC_2.32 mq_unlink F +GLIBC_2.32 shm_open F +GLIBC_2.32 shm_unlink F +GLIBC_2.32 timer_create F +GLIBC_2.32 timer_delete F +GLIBC_2.32 timer_getoverrun F +GLIBC_2.32 timer_gettime F +GLIBC_2.32 timer_settime F diff --git a/sysdeps/unix/sysv/linux/arc/libthread_db.abilist b/sysdeps/unix/sysv/linux/arc/libthread_db.abilist new file mode 100644 index 000000000000..dcbc4a8fbef5 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/libthread_db.abilist @@ -0,0 +1,40 @@ +GLIBC_2.32 td_init F +GLIBC_2.32 td_log F +GLIBC_2.32 td_symbol_list F +GLIBC_2.32 td_ta_clear_event F +GLIBC_2.32 td_ta_delete F +GLIBC_2.32 td_ta_enable_stats F +GLIBC_2.32 td_ta_event_addr F +GLIBC_2.32 td_ta_event_getmsg F +GLIBC_2.32 td_ta_get_nthreads F +GLIBC_2.32 td_ta_get_ph F +GLIBC_2.32 td_ta_get_stats F +GLIBC_2.32 td_ta_map_id2thr F +GLIBC_2.32 td_ta_map_lwp2thr F +GLIBC_2.32 td_ta_new F +GLIBC_2.32 td_ta_reset_stats F +GLIBC_2.32 td_ta_set_event F +GLIBC_2.32 td_ta_setconcurrency F +GLIBC_2.32 td_ta_thr_iter F +GLIBC_2.32 td_ta_tsd_iter F +GLIBC_2.32 td_thr_clear_event F +GLIBC_2.32 td_thr_dbresume F +GLIBC_2.32 td_thr_dbsuspend F +GLIBC_2.32 td_thr_event_enable F +GLIBC_2.32 td_thr_event_getmsg F +GLIBC_2.32 td_thr_get_info F +GLIBC_2.32 td_thr_getfpregs F +GLIBC_2.32 td_thr_getgregs F +GLIBC_2.32 td_thr_getxregs F +GLIBC_2.32 td_thr_getxregsize F +GLIBC_2.32 td_thr_set_event F +GLIBC_2.32 td_thr_setfpregs F +GLIBC_2.32 td_thr_setgregs F +GLIBC_2.32 td_thr_setprio F +GLIBC_2.32 td_thr_setsigpending F +GLIBC_2.32 td_thr_setxregs F +GLIBC_2.32 td_thr_sigsetmask F +GLIBC_2.32 td_thr_tls_get_addr F +GLIBC_2.32 td_thr_tlsbase F +GLIBC_2.32 td_thr_tsd F +GLIBC_2.32 td_thr_validate F diff --git a/sysdeps/unix/sysv/linux/arc/libutil.abilist b/sysdeps/unix/sysv/linux/arc/libutil.abilist new file mode 100644 index 000000000000..61f73bc34ef8 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/libutil.abilist @@ -0,0 +1,6 @@ +GLIBC_2.32 forkpty F +GLIBC_2.32 login F +GLIBC_2.32 login_tty F +GLIBC_2.32 logout F +GLIBC_2.32 logwtmp F +GLIBC_2.32 openpty F diff --git a/sysdeps/unix/sysv/linux/arc/localplt.data b/sysdeps/unix/sysv/linux/arc/localplt.data new file mode 100644 index 000000000000..4479e8ee8a26 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/localplt.data @@ -0,0 +1,12 @@ +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 ? +# 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 From patchwork Fri Jul 10 23:38:08 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vineet Gupta X-Patchwork-Id: 1327180 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2001:8b0:10b:1231::1; helo=merlin.infradead.org; envelope-from=linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=synopsys.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=merlin.20170209 header.b=bpvGkowG; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=synopsys.com header.i=@synopsys.com header.a=rsa-sha256 header.s=mail header.b=mWHnrU6F; dkim-atps=neutral Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:8b0:10b:1231::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4B3Ty53Wwkz9sRW for ; Sat, 11 Jul 2020 09:38:37 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=aFAWk5drz0JhUkdr0cvH5mm93x6eKnXkBZWsOaaaBR4=; b=bpvGkowG4uzYKiux5geE6BflN P7ZTfsBAkPIsMyImkTSJoHPah3rqLgjpwCvURaNURPdNvAEDnqRIL8pykAQoL3F4b/2BhYGrjmTEe wGWybdDmrw03TQ0E2H3PWtUH/rDA42av5OIHl0ckH9H7OfHWxAlp3MqNO+9GaPMmuj1aTFkgijFIu g2MXD1bU2bQXYdUYk0eCQOvX4Rilib4SGi8USRyqi44+mxpfi2wbBN+76wizfQfJf/98AS1lqItD5 6bR7+S6dVQULYvyOh3MdqcPMHt+tFI44TTNCw8SRClB1eCU4n7idg8tN3V7SDOreEV9zXRB99clTl Si3lYZnLA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2bC-0008Gb-3x; Fri, 10 Jul 2020 23:38:34 +0000 Received: from smtprelay-out1.synopsys.com ([149.117.73.133]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2av-0008Ad-J6 for linux-snps-arc@lists.infradead.org; Fri, 10 Jul 2020 23:38:30 +0000 Received: from mailhost.synopsys.com (sv2-mailhost2.synopsys.com [10.205.2.134]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id 07C1740A3C; Fri, 10 Jul 2020 23:38:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1594424297; bh=XCvNDf5u9XU5E66DfEboP0SExTT1kf9MiqdgIRNA3fE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=mWHnrU6FvhXQTP6gQSjaUMLfeRJGNEjlxxSQvnU5YbaorXjYevkfb6fPKz7wcJrjJ DSYygt7h1bq1T2nrfDlAGbtEZE8yZG0CXkvWRzh2Yw82am7f0DSStHaq7Rnly1Co05 Qb0TVVD3HmQhayp2zlf9HrW0mYOcBbM15WE9qHmbLBJW7CpmZYMwuGBms8hjDi5ixu ceI1fp0bS+4CaumCxo0DjDJBP0QIW6nqXbMXGvwxESY0nf1l6E0Y2mxF5wjYca8iSR mBrgO+PfR06PghGGENIepFsK7++qktXcNUlZmLmUfNLw3aujkWLhr1NX53wrG9tZNT 00k0HOV7fQlyQ== Received: from vineetg-Latitude-7400.internal.synopsys.com (unknown [10.13.183.89]) by mailhost.synopsys.com (Postfix) with ESMTP id C38D6A0099; Fri, 10 Jul 2020 23:38:16 +0000 (UTC) X-SNPS-Relay: synopsys.com From: Vineet Gupta To: libc-alpha@sourceware.org Subject: [COMMITTED 11/13] ARC: Build Infrastructure Date: Fri, 10 Jul 2020 16:38:08 -0700 Message-Id: <20200710233810.18720-11-vgupta@synopsys.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200710233810.18720-1-vgupta@synopsys.com> References: <20200710233810.18720-1-vgupta@synopsys.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200710_193817_820765_50452257 X-CRM114-Status: GOOD ( 19.80 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [149.117.73.133 listed in wl.mailspike.net] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-BeenThere: linux-snps-arc@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on Synopsys ARC Processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Vineet Gupta , linux-snps-arc@lists.infradead.org, Adhemerval Zanella Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Reviewed-by: Adhemerval Zanella --- config.h.in | 3 + sysdeps/arc/Implies | 3 + sysdeps/arc/Makefile | 21 +++ sysdeps/arc/Versions | 8 + sysdeps/arc/configure | 182 +++++++++++++++++++++ sysdeps/arc/configure.ac | 26 +++ sysdeps/arc/nptl/Makefile | 22 +++ sysdeps/arc/preconfigure | 14 ++ sysdeps/unix/sysv/linux/arc/Implies | 3 + sysdeps/unix/sysv/linux/arc/Makefile | 29 ++++ sysdeps/unix/sysv/linux/arc/Versions | 16 ++ sysdeps/unix/sysv/linux/arc/configure | 4 + sysdeps/unix/sysv/linux/arc/configure.ac | 4 + sysdeps/unix/sysv/linux/arc/ldconfig.h | 27 +++ sysdeps/unix/sysv/linux/arc/shlib-versions | 7 + 15 files changed, 369 insertions(+) create mode 100644 sysdeps/arc/Implies create mode 100644 sysdeps/arc/Makefile create mode 100644 sysdeps/arc/Versions create mode 100644 sysdeps/arc/configure create mode 100644 sysdeps/arc/configure.ac create mode 100644 sysdeps/arc/nptl/Makefile create mode 100644 sysdeps/arc/preconfigure create mode 100644 sysdeps/unix/sysv/linux/arc/Implies create mode 100644 sysdeps/unix/sysv/linux/arc/Makefile create mode 100644 sysdeps/unix/sysv/linux/arc/Versions create mode 100644 sysdeps/unix/sysv/linux/arc/configure create mode 100644 sysdeps/unix/sysv/linux/arc/configure.ac create mode 100644 sysdeps/unix/sysv/linux/arc/ldconfig.h create mode 100644 sysdeps/unix/sysv/linux/arc/shlib-versions diff --git a/config.h.in b/config.h.in index 8dea97f625cc..4693234552d9 100644 --- a/config.h.in +++ b/config.h.in @@ -118,6 +118,9 @@ /* AArch64 PAC-RET code generation is enabled. */ #define HAVE_AARCH64_PAC_RET 0 +/* ARC big endian ABI */ +#undef HAVE_ARC_BE + /* C-SKY ABI version. */ #undef CSKYABI diff --git a/sysdeps/arc/Implies b/sysdeps/arc/Implies new file mode 100644 index 000000000000..780c4e246769 --- /dev/null +++ b/sysdeps/arc/Implies @@ -0,0 +1,3 @@ +wordsize-32 +ieee754/flt-32 +ieee754/dbl-64 diff --git a/sysdeps/arc/Makefile b/sysdeps/arc/Makefile new file mode 100644 index 000000000000..d5a702e29e58 --- /dev/null +++ b/sysdeps/arc/Makefile @@ -0,0 +1,21 @@ +# ARC Makefile +# Copyright (C) 2020 Free Software Foundation, Inc. +# This file is part of the GNU C Library. + +# The GNU C Library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. + +# The GNU C Library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for 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 diff --git a/sysdeps/arc/Versions b/sysdeps/arc/Versions new file mode 100644 index 000000000000..6ac7b8e49505 --- /dev/null +++ b/sysdeps/arc/Versions @@ -0,0 +1,8 @@ +libc { + GLIBC_2.32 { + __mcount; + } + GLIBC_PRIVATE { + __syscall_error; + } +} diff --git a/sysdeps/arc/configure b/sysdeps/arc/configure new file mode 100644 index 000000000000..bce7d3c3773d --- /dev/null +++ b/sysdeps/arc/configure @@ -0,0 +1,182 @@ +# 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 + + +# For big endian ABI, generate a symbol for selecting right dynamic linker + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for big endian" >&5 +$as_echo_n "checking for big endian... " >&6; } +if ${libc_cv_arc_be+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __BIG_ENDIAN__ + yes + #endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "yes" >/dev/null 2>&1; then : + libc_cv_arc_be=yes +else + libc_cv_arc_be=no +fi +rm -f conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_arc_be" >&5 +$as_echo "$libc_cv_arc_be" >&6; } +if test $libc_cv_arc_be = yes; then + # For shlib-versions. + $as_echo "#define HAVE_ARC_BE 1" >>confdefs.h + + config_vars="$config_vars +default-abi = arcbe" +else + config_vars="$config_vars +default-abi = arcle" +fi diff --git a/sysdeps/arc/configure.ac b/sysdeps/arc/configure.ac new file mode 100644 index 000000000000..cb490e47b356 --- /dev/null +++ b/sysdeps/arc/configure.ac @@ -0,0 +1,26 @@ +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) + +# For big endian ABI, generate a symbol for selecting right dynamic linker +AC_CACHE_CHECK([for big endian], + [libc_cv_arc_be], + [AC_EGREP_CPP(yes,[#ifdef __BIG_ENDIAN__ + yes + #endif + ], libc_cv_arc_be=yes, libc_cv_arc_be=no)]) +if test $libc_cv_arc_be = yes; then + # For shlib-versions. + AC_DEFINE(HAVE_ARC_BE) + LIBC_CONFIG_VAR([default-abi], [arcbe]) +else + LIBC_CONFIG_VAR([default-abi], [arcle]) +fi diff --git a/sysdeps/arc/nptl/Makefile b/sysdeps/arc/nptl/Makefile new file mode 100644 index 000000000000..42be62451749 --- /dev/null +++ b/sysdeps/arc/nptl/Makefile @@ -0,0 +1,22 @@ +# NPTL makefile fragment for ARC. +# Copyright (C) 2020 Free Software Foundation, Inc. +# +# This file is part of the GNU C Library. +# +# The GNU C Library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# The GNU C Library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for 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/preconfigure b/sysdeps/arc/preconfigure new file mode 100644 index 000000000000..a79db0239ae6 --- /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 + with_fp_cond=1 + else + with_fp_cond=0 + fi + ;; + +esac diff --git a/sysdeps/unix/sysv/linux/arc/Implies b/sysdeps/unix/sysv/linux/arc/Implies new file mode 100644 index 000000000000..7f739a0340b6 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/Implies @@ -0,0 +1,3 @@ +arc/nptl +unix/sysv/linux/generic/wordsize-32 +unix/sysv/linux/generic diff --git a/sysdeps/unix/sysv/linux/arc/Makefile b/sysdeps/unix/sysv/linux/arc/Makefile new file mode 100644 index 000000000000..25d7bbecac07 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/Makefile @@ -0,0 +1,29 @@ +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 + +abi-variants := arcle arcbe + +ifeq (,$(filter $(default-abi),$(abi-variants))) +$(error Unknown ABI $(default-abi), must be one of $(abi-variants)) +endif + +abi-arcle-condition := !defined __BIG_ENDIAN__ +abi-arcbe-condition := defined __BIG_ENDIAN__ diff --git a/sysdeps/unix/sysv/linux/arc/Versions b/sysdeps/unix/sysv/linux/arc/Versions new file mode 100644 index 000000000000..292f1974b02a --- /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.32 { + _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/configure b/sysdeps/unix/sysv/linux/arc/configure new file mode 100644 index 000000000000..56ec14357507 --- /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=5.1.0 diff --git a/sysdeps/unix/sysv/linux/arc/configure.ac b/sysdeps/unix/sysv/linux/arc/configure.ac new file mode 100644 index 000000000000..8af5a12cc248 --- /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=5.1.0 diff --git a/sysdeps/unix/sysv/linux/arc/ldconfig.h b/sysdeps/unix/sysv/linux/arc/ldconfig.h new file mode 100644 index 000000000000..0d6368e4df02 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/ldconfig.h @@ -0,0 +1,27 @@ +/* ldconfig default paths and libraries. Linux/RISC-V version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for 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 SYSDEP_KNOWN_INTERPRETER_NAMES \ + { "/lib/ld-linux-arc.so.2", FLAG_ELF_LIBC6 }, \ + { "/lib/ld-linux-arceb.so.2", FLAG_ELF_LIBC6 }, + +#define SYSDEP_KNOWN_LIBRARY_NAMES \ + { "libc.so.6", FLAG_ELF_LIBC6 }, \ + { "libm.so.6", FLAG_ELF_LIBC6 }, diff --git a/sysdeps/unix/sysv/linux/arc/shlib-versions b/sysdeps/unix/sysv/linux/arc/shlib-versions new file mode 100644 index 000000000000..343c0a04500e --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/shlib-versions @@ -0,0 +1,7 @@ +DEFAULT GLIBC_2.32 + +%ifdef HAVE_ARC_BE +ld=ld-linux-arceb.so.2 +%else +ld=ld-linux-arc.so.2 +%endif From patchwork Fri Jul 10 23:38:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vineet Gupta X-Patchwork-Id: 1327177 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2001:8b0:10b:1231::1; helo=merlin.infradead.org; envelope-from=linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=synopsys.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=merlin.20170209 header.b=XTIz9DyO; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=synopsys.com header.i=@synopsys.com header.a=rsa-sha256 header.s=mail header.b=GGIGIL3O; dkim-atps=neutral Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:8b0:10b:1231::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4B3Ty13x6Dz9sRW for ; Sat, 11 Jul 2020 09:38:33 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=hRv3nTXFiziqqtc/GaVl/iQ0pmY/lBwQSf4fObMD0GE=; b=XTIz9DyO0Niudkj9SwSfXcHV1 9qYlE5+RRrNabsWzHUOvI41PCDsb8FstfZ2fe8Q4lJ/VZsVmALAvEiRlxhVu2tcU/n11j5UoWYoKt iZ99hIIkfbHMtsADbKG9vHC/TUQ5HisVkFOE1UKVACBGn37QsdNASBQeY0F5kdB0+LwprQMvGXtlB 6T7vQllleYUCzYrVB6PgziVG4Ky6Sl6WBZv23silqvr2bE9lKAsCXCj1TM9DzyUFzxBgM2z0ErzZs SwW/WN/YOYXQcz76oMSG1NFdp7uC9IvLwr/B73wLU9QCi2y1J61GDvj4FchwcPhNeltVeb9rCZS9g uP4ppO13g==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2b8-0008F3-6N; Fri, 10 Jul 2020 23:38:30 +0000 Received: from smtprelay-out1.synopsys.com ([149.117.73.133]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2av-0008Ae-Qw for linux-snps-arc@lists.infradead.org; Fri, 10 Jul 2020 23:38:27 +0000 Received: from mailhost.synopsys.com (sv2-mailhost2.synopsys.com [10.205.2.134]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id 4355840A3D; Fri, 10 Jul 2020 23:38:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1594424297; bh=dINe2mpRicPjt7+CX8/HvjV+sMCmYuN/6PEIe+m5MBs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GGIGIL3O0v7dXDpyQ7CmMEzdQSjlBWK0F9t9pK/pYq0n58BuoojFEw9XtYSPyrQzQ vPmup7Hz8waX0/PKUsVDXyAnQKcdSA3bTz5U60ns8PefqsNEG86NZCkJO95CAiz2nk SSvoF84IBn9KNrQ6RoMtgUbPsASdlnqiZgAK5pz1VpXvi1UFtBOYDQuSd4vQcT8Jpf BXEPfKeeH6ydPHai2QMWPz3ATtM56Y0o0XbVSnr9mw1SKkKCVBLOJgHOK3t0lxwwq+ yyXtAk8ggGACPYcAZkyckEi+xF41ny/kXiJn9bWudNxSGusxQpMOaPtNTGR46o0Yjt niwyMR8wO8qIQ== Received: from vineetg-Latitude-7400.internal.synopsys.com (unknown [10.13.183.89]) by mailhost.synopsys.com (Postfix) with ESMTP id 07C26A005A; Fri, 10 Jul 2020 23:38:17 +0000 (UTC) X-SNPS-Relay: synopsys.com From: Vineet Gupta To: libc-alpha@sourceware.org Subject: [COMMITTED 12/13] build-many-glibcs.py: Enable ARC builds Date: Fri, 10 Jul 2020 16:38:09 -0700 Message-Id: <20200710233810.18720-12-vgupta@synopsys.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200710233810.18720-1-vgupta@synopsys.com> References: <20200710233810.18720-1-vgupta@synopsys.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200710_193817_947627_4E6E4614 X-CRM114-Status: UNSURE ( 6.03 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [149.117.73.133 listed in wl.mailspike.net] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders 0.0 TVD_SPACE_RATIO No description available. X-BeenThere: linux-snps-arc@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on Synopsys ARC Processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Vineet Gupta , linux-snps-arc@lists.infradead.org, Adhemerval Zanella Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Reviewed-by: Adhemerval Zanella --- scripts/build-many-glibcs.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py index dfaaf50a192c..00ba6f6b1193 100755 --- a/scripts/build-many-glibcs.py +++ b/scripts/build-many-glibcs.py @@ -162,6 +162,15 @@ 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=hs38']) + self.add_config(arch='arc', + os_name='linux-gnuhf', + gcc_cfg=['--disable-multilib', '--with-cpu=hs38_linux']) + self.add_config(arch='arceb', + os_name='linux-gnu', + gcc_cfg=['--disable-multilib', '--with-cpu=hs38']) self.add_config(arch='alpha', os_name='linux-gnu') self.add_config(arch='arm', @@ -1221,6 +1230,7 @@ def install_linux_headers(policy, cmdlist): """Install Linux kernel headers.""" arch_map = {'aarch64': 'arm64', 'alpha': 'alpha', + 'arc': 'arc', 'arm': 'arm', 'csky': 'csky', 'hppa': 'parisc', From patchwork Fri Jul 10 23:38:10 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vineet Gupta X-Patchwork-Id: 1327178 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2001:8b0:10b:1231::1; helo=merlin.infradead.org; envelope-from=linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=synopsys.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=merlin.20170209 header.b=oRFoHlyQ; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=synopsys.com header.i=@synopsys.com header.a=rsa-sha256 header.s=mail header.b=cn9JpcGE; dkim-atps=neutral Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:8b0:10b:1231::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4B3Ty2448fz9sDX for ; Sat, 11 Jul 2020 09:38:34 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=lzQn6Fwj6EKVnHGu81ccabTgEYUZVgYQyiffd8wZLKA=; b=oRFoHlyQJyytcACCIK9Drj7jf fG7X8A4HgJxmH7ocQ7AxkMIu3ohdRB0n++9kh5SXAe1CdvGT3DBFkUoAe0hG1sxNYty0jdl0SqT76 DC9VcC6fsiRaCnyxdCbaaENfDPx6RmH80E7xfM8Sc9lGTyxxENY08vNhsxyHGhiofXceHRRgRzCz5 k3c3nQaFhRdCTLIUaRKqc1jrNpYIsicgV4sbfvnKGmWWfpM8ILIZl5OZEbjkNO1GCQwxDUHtGqQ3S gYEW43BVv7F1Y/XZgf8tOrRIxzx86fqcu20V+PrZ4uDHiD1NAsN6d1vl4MySpL93VCpGvQ6YxTkRH fmU8twztw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2b8-0008FI-L0; Fri, 10 Jul 2020 23:38:30 +0000 Received: from smtprelay-out1.synopsys.com ([149.117.87.133]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju2aw-0008B5-FL for linux-snps-arc@lists.infradead.org; Fri, 10 Jul 2020 23:38:29 +0000 Received: from mailhost.synopsys.com (sv2-mailhost2.synopsys.com [10.205.2.134]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id C9513C04C0; Fri, 10 Jul 2020 23:38:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1594424297; bh=EW1NYd34WaTzq+fJ8ywDreu/4Zaa/TE+pF6yczS/YjA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cn9JpcGERveKnRTP6v7mQRxO+4T97xc9RlOqhdbjbwKyralra1SLmn0ufAca962Tt wLF5MIoiUzExhInPeOWi1dtCjhBWQcDhzYld9UVUkv7WQPHP+qVLuyIbNE317wtcWP iQk58ByzzmcC8B4tlVo8w2Ubiz096+oXJNDgvcWMSUmJWXF9nRnZcAI/AJwb9QrCne gskeXB1wG68ZxEklLOz2dVyXLGpJEeJOAoPsGKZvGZcYHiG7QXvERDgJ9IbOTrV6Ao YETd3dLV9NeddGl8DI4lqRivPS2/Bsle0IEvsveAvDHpaLl3pZsErE3CGWQ6qnLS2G kGbYP8/xbz6bg== Received: from vineetg-Latitude-7400.internal.synopsys.com (unknown [10.13.183.89]) by mailhost.synopsys.com (Postfix) with ESMTP id 7CA66A005A; Fri, 10 Jul 2020 23:38:17 +0000 (UTC) X-SNPS-Relay: synopsys.com From: Vineet Gupta To: libc-alpha@sourceware.org Subject: [COMMITTED 13/13] Documentation for ARC port Date: Fri, 10 Jul 2020 16:38:10 -0700 Message-Id: <20200710233810.18720-13-vgupta@synopsys.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200710233810.18720-1-vgupta@synopsys.com> References: <20200710233810.18720-1-vgupta@synopsys.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200710_193818_680403_E076387B X-CRM114-Status: GOOD ( 11.49 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [149.117.87.133 listed in wl.mailspike.net] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-BeenThere: linux-snps-arc@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on Synopsys ARC Processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Vineet Gupta , linux-snps-arc@lists.infradead.org, Adhemerval Zanella Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org (a) ABI doc: https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/wiki/files/ARCv2_ABI.pdf (b) Programmer's Reference Manual (PRM) : needs a download request to be filled https://www.synopsys.com/dw/ipdir.php?ds=arc-hs44-hs46-hs48 https://www.synopsys.com/dw/doc.php/ds/cc/programmers-reference-manual-ARC-HS.pdf As of port merge (and Florian's patch to fix static TLS), glibc testsuite (cross-test setup) has following failures: FAIL: elf/tst-audit14 FAIL: elf/tst-audit15 FAIL: elf/tst-audit16 FAIL: elf/tst-ldconfig-ld_so_conf-update FAIL: elf/tst-libc_dlvsym FAIL: elf/tst-libc_dlvsym-static FAIL: iconv/test-iconvconfig # Needs gconv installed FAIL: io/ftwtest # Requires execution by non-root FAIL: io/tst-lockf FAIL: libio/tst-wfile-sync FAIL: locale/tst-localedef-path-norm FAIL: nptl/test-cond-printers # needs Python3 and target GDB on target FAIL: nptl/test-condattr-printers # ditto FAIL: nptl/test-mutex-printers # ditto FAIL: nptl/test-mutexattr-printers # ditto FAIL: nptl/test-rwlock-printers # ditto FAIL: nptl/test-rwlockattr-printers # ditto FAIL: nptl/tst-umask1 # passes if run natively on target (NFS ACLv3 support needed) FAIL: nss/bug-erange FAIL: nss/tst-nss-files-hosts-getent FAIL: nss/tst-nss-files-hosts-multi FAIL: posix/bug-ga2 FAIL: posix/globtest # require same user on target and host FAIL: posix/tst-getaddrinfo5 FAIL: stdio-common/tst-vfprintf-width-prec FAIL: stdio-common/tst-vfprintf-width-prec-alloc FAIL: stdio-common/tst-vfprintf-width-prec-mem FAIL: string/tst-strerror FAIL: string/tst-strsignal FAIL: sunrpc/bug20790 # missing cpp on target FAIL: timezone/tst-tzset Reviewed-by: Adhemerval Zanella --- NEWS | 11 +++++++++++ README | 1 + manual/install.texi | 4 ++++ 3 files changed, 16 insertions(+) diff --git a/NEWS b/NEWS index 0b25b4fde99a..92dcb77fef07 100644 --- a/NEWS +++ b/NEWS @@ -15,6 +15,17 @@ Major new features: * New locale added: ckb_IQ (Kurdish/Sorani spoken in Iraq) +* Support for Synopsys ARC HS cores (ARCv2 ISA) running Linux has been + added. This port requires at least binutils-2.32, gcc-8.3 and Linux-5.1. + Three ABIs are supported: + + - arc-linux-gnu + - arc-linux-gnuhf + - arceb-linux-gnu + + The arc* ABI is little-endian while arceb is big-endian. All ABIs use + 64-bit time (y2038 safe) and 64-bit file offsets (LFS default). + * The GNU C Library now loads audit modules listed in the DT_AUDIT and DT_DEPAUDIT dynamic section entries of the main executable. diff --git a/README b/README index 31c5da0405bd..903f07e4840a 100644 --- a/README +++ b/README @@ -24,6 +24,7 @@ The GNU C Library supports these configurations for using Linux kernels: aarch64*-*-linux-gnu alpha*-*-linux-gnu + arc*-*-linux-gnu arm-*-linux-gnueabi csky-*-linux-gnuabiv2 hppa-*-linux-gnu diff --git a/manual/install.texi b/manual/install.texi index ea0059a4ec98..735e99bb0356 100644 --- a/manual/install.texi +++ b/manual/install.texi @@ -512,6 +512,8 @@ Library with support for IEEE long double. @c powerpc64le performs an autoconf test to verify the compiler compiles with @c commands like "$CC -c foo.c -mabi=ibmlongdouble -mlong-double-128". +For ARC architecture builds, GCC 8.3 or higher is needed. + For multi-arch support it is recommended to use a GCC which has been built with support for GNU indirect functions. This ensures that correct debugging information is generated for functions selected by IFUNC resolvers. This @@ -537,6 +539,8 @@ For PowerPC 64-bits little-endian (powerpc64le), @command{objcopy} is required to support @option{--update-section}. This option requires binutils 2.26 or newer. +ARC architecture needs @code{binutils} 2.32 or higher for TLS related fixes. + @item GNU @code{texinfo} 4.7 or later