From patchwork Thu Aug 29 16:50:03 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1155387 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-104864-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="Ogjzvjdw"; dkim=pass (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="gkVlZPYw"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46K7wz5Dhnz9s4Y for ; Fri, 30 Aug 2019 02:53:55 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; q=dns; s= default; b=UD4V865px6GRQiSIJeSLiJw9ffToN4Gnf3yyYj0FAI282FN/K+7ra 6GzpJFVbXaLWHQNc6PXOZcyeDN6f0OLcZe1GrUhxNCrTnqFcEdmC2rZTunNmFE9+ F513ynl2AbhV+Y/eF4NO7WDcbg2kNMUpKUlkx15OoSycUj0RqJQUIY= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; s=default; bh=OGvzFG3Rv+4J8cP8UokjpF0rUGI=; b=OgjzvjdwFzdgUGOAk/dnCPsB7Cut vE6BeaMKi1Dapwzo4TJhK+QhQ1gn6S9dZ9uLSjE0kDt7P1//MW500wcviut8Zgiu 9AlOvcP+kS0L38oALSmLGBoCBaTr1JRHkrF1SO6w8XqEJyT8OiPbar5gxP6st/PF WSeUrI+KyZ6nbaU= Received: (qmail 126590 invoked by alias); 29 Aug 2019 16:53:49 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 126581 invoked by uid 89); 29 Aug 2019 16:53:49 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3 autolearn=ham version=3.3.1 spammy=HContent-Transfer-Encoding:8bit X-HELO: esa2.hgst.iphmx.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1567097688; x=1598633688; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=E9qDogQvHM1P5LB1qJtwb9EyeCUCE4M4P6sFf3Wc5kY=; b=gkVlZPYwJ3ldSeQc+IOzn0aVuK5nNnG4UJUcOii0cf7435KlMnKF8+1j lbMOrA08BI3hBwbounKsg+9dUdaWaFqzxlv7IZRoa22vKqWgDvmJeSfef CKWN1J5iinIJPzFYidjsPNXXsJOPsqTag7Hh8Q9PYIcGnMpPn2o56okdL eQHOJ3qM9Wczw5n09krchldnk1+BSz9m86XPGu2GbkvcEPdapN9TdGfdu OWcJP5bdDmxswrL0Qmp3s85EgMKiD/ys3pB0Si8HuvUZPQK+1BFTp8nzW B0heLmfdVaunaVzytHwK7fLyruPVCic/axlXrEZrOK458kkHJXmKF5lVe g==; IronPort-SDR: ORmoXeyhbWIqsJmmWETU2z3x4vIE7H4pUo7J/gcvsgkYuzJt86Xj9mA7RVuhLJME90dXlibE6o kH4kS2aKaI/bR22uggt6FLGUQVPva35kcmgxTwYwwprFCz/kMgk8O45haYBVQtvaHSqMSWGgqw oqSH03BkE4EhZnW8A4HIpXjMqq80AFOxe4rCbZXN7VZFjQMu+RjALn2aD2bvcjcpAQDUj9+rHu UpSejlpni0W1zlYeiqDVfnoOAoFOM28b1ESI0ieZ4tuBvfC5rap6ineVKD7dqvJnOxKAkkH9ZR 9io= IronPort-SDR: nmxDVBjfe1oKJX0I2xVT5U0v7Xr0zsTcoNdKn2SwVuEpaj2S0b2SSiuOj9sH8Zvk92yNJ7o1sh UuOf2HbJq6qlnDsT0oDPimOz18XRp2cvX6zbChpFdBRIIxjapiJ94/Jik/X6dNaNTLji4MHE/n HuPeglvqYpgN3mQNugAktyD7M6m2QOhVJm9porsSmOi9JeAK6zS/ZhGbaKjERf2k+AkaIXocvh jyI6xibBG/HxKhRjc80oE0ZOURtH8zDiHjfnVgGOcotkZYNJUCW2/6gy97XoNNprWtV8DAF4lz uTxbODFlv2Dbk+HudBYS0EaD IronPort-SDR: olcd3RMskOl61dMMPZhPayY45pP5hkSLHO+pwUDLxC370qf0e7lj/iOdlIpez++XD9xlvXjeaE z8VusdFJcJR/p3m2di2mdq0oCGyNHeLdCKHySGSGd4EbvMXl6z8lVo2OYAfqQ+tWoV7WzXPyJr D0MFoxs3XMOFVIfwx0WzHPEHBsRcH9L/PfHNup8dRHBaEoXfj1LNOKWEdC3oRI7hC8ERKKwugv LG2lqHYjDzSJtDYVRA72JRKhXulRcyeJzvGa409FA+r5fCcxi8gg1Fk+ZOS8KZn/V3fGPrmFao xgU= WDCIronportException: Internal From: Alistair Francis To: libc-alpha@sourceware.org Cc: arnd@arndb.de, adhemerval.zanella@linaro.org, fweimer@redhat.com, palmer@sifive.com, macro@wdc.com, zongbox@gmail.com, alistair.francis@wdc.com, alistair23@gmail.com Subject: [RFC v5 01/21] sunrpc/clnt_udp: Ensure total_deadline is initalised Date: Thu, 29 Aug 2019 09:50:03 -0700 Message-Id: <871316fb87a99a59c31e6d3fbd4d35bff2ecc3c4.1567097252.git.alistair.francis@wdc.com> In-Reply-To: References: MIME-Version: 1.0 Even though total_deadline won't be accessed uninitalised GCC can still complain that it is accessed unitalised, to avod those errors let's make sure we initalise it to 0. Signed-off-by: Alistair Francis * sunrpc/clnt_udp.c: Ensure total_deadline is initalised. --- sunrpc/clnt_udp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sunrpc/clnt_udp.c b/sunrpc/clnt_udp.c index c2436e3ebcc..311b1734733 100644 --- a/sunrpc/clnt_udp.c +++ b/sunrpc/clnt_udp.c @@ -290,7 +290,7 @@ clntudp_call (/* client handle */ int anyup; /* any network interface up */ struct deadline_current_time current_time = __deadline_current_time (); - struct deadline total_deadline; /* Determined once by overall timeout. */ + struct deadline total_deadline = { 0 }; /* Determined once by overall timeout. */ struct deadline response_deadline; /* Determined anew for each query. */ /* Choose the timeout value. For non-sending usage (xargs == NULL), From patchwork Thu Aug 29 16:50:05 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1155391 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-104865-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="a2poKvel"; dkim=pass (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="PB3H8sb7"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46K7x90SHwz9sBp for ; Fri, 30 Aug 2019 02:54:04 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; q=dns; s= default; b=CtEc/CBuNSBH5V/eiXIPY5/Pcrx3jVIyz7Obf5sDF4T1IAGhvNSwE B8oZEstCn5eLXEUeFmhjgFcXHnuFA/BHY+BLS/NFLOvQWnPpy2H+DzeOASso3juh nYGJG/WAk8MSD/SvqjmpL5/uQ0KoeRzeuR3oWna+GEtxFM7rP3gopA= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; s=default; bh=+80cIUTOkRtlSCi3K82gaBcoEvE=; b=a2poKvelSiyjCYIMhvM3Ha49m3zb U/3rk3FQPd3xLh0FRZXS6wTxn32dFtUF2d34iY9aNXFyZb0bMpLrtSuHdsu4/VwL kGk9TFSdRrcRQjw6FGBWPHwPHzXRN6GmXWz52SoCI4pioyRHYVuNW/gJ9CUcLbb7 0kxLpHmDZX6E550= Received: (qmail 127105 invoked by alias); 29 Aug 2019 16:53:53 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 127035 invoked by uid 89); 29 Aug 2019 16:53:52 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3 autolearn=ham version=3.3.1 spammy=encounters X-HELO: esa2.hgst.iphmx.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1567097691; x=1598633691; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=MJ90FEWZm9a/Xy9xyQh9oW5kpyUVN63x+xQclRJzWgI=; b=PB3H8sb7tZ69KJINsaQvrSJuXx2VVy1gw3Iu5GyEdpce5zNzLeaPlyLO C1fyNObfuFzwCBpVOv5QNdLmLocTxrMo7gwupZMyPDEW2dt6fEJCtZydC hd2yzLalG3oAjl8XkPeYp8ZnFcwSVVxIWOv2/dHLbsSoiQoAHb9J5ZN9K aI5FXXRNdS9Q8Fg/17CmxlSiGcNgwwDbJIoIF67VtGhEK30nA+zJpr2JL bp/wdhrojC/jl2en5ijE8G5nYcy9QyCykMWsABtI+bUJVaUKjiIJPppjz puQlQ6Oue0jszdqsR1xbjNVSEshoGzOegvUocP11e5pWmRGqt0wrPSdpl Q==; IronPort-SDR: cCxkEKolq6/T8bvOaPNBzeU6iobB1v3tTs32BXyUCVChe+0IoXIRDgpBQ5CeNWo889rh7rGjKB 2Tff1rv+1mGWKt54ZuiiMAXC3HSnMjWae91urVFADBb7Bcu7I799ki9LxlYogiI5+/Uk/ykese pGIaiRoPJm2TymkJ62jwJqmmiccbucS3ty0blRPUuq/dks2TZe7MMrJWT/6U7i+QZbGwyPgF5i jG9qWL09JPQwPmMlmCsHVqqt0JzZX33ZzfeiQZpW7sTlwwOnWtfk7Ac1nmmnZBEfawPHSbDjH0 E54= IronPort-SDR: IT39w0vCNzL5KcgTXU9M+VlmeHye5M/P4W4fNXoXhjPkGDGrQUEO9Z3Rs357GFie9FDTnT1H4a aZnlxeJajiqj04GsvPj4NbLpNJolmYRaIp9LgaXZxYnwR7xBocyiSS17S7DvNpR/xI70YEKCn5 7TVL/DGN1Othts5a8HLvNM7nkDODViw+XrPVnoLEgJwBthuEoCAxCvcg3EVDYYGo+nzZrigCnL wEepI2wobzxfchA2TWsl+xTxZT908mmf7k2b96Bd5CX6/TMkA6uUJnu3UMaMUQr6zZG+CL9Djm gMXEuov1QswqSJj0M66fhpq0 IronPort-SDR: /ct55jVDfVqrKehMxc8cpaOuaBb3SJ5kNfRQ8GTjgBJG1tkkxRPIrBcO3Q89TMOV+WpO3JoHOP URrIjcktCN94fFNp4rELyktyT1BAgZQUpjeuFyOaQDb+aF6dnDHG1A2X12LOBSba0k49J7qrj+ JWSq7QnB1Nizq98sNg/f2hbfCfe9cpQ0eolMK1Vilq5PiYSq9ZX2TecWV70PBDQaZ75CkLAKTU hjdWTp4+Ln8bnjqYFXRwd1cxURo903F2gEonR6pvt9eZGP3WLPJyIyqfX60FsP+MilmVJj0QgZ fj8= WDCIronportException: Internal From: Alistair Francis To: libc-alpha@sourceware.org Cc: arnd@arndb.de, adhemerval.zanella@linaro.org, fweimer@redhat.com, palmer@sifive.com, macro@wdc.com, zongbox@gmail.com, alistair.francis@wdc.com, alistair23@gmail.com Subject: [RFC v5 02/21] sysdeps/nanosleep: Use clock_nanosleep_time64 if avaliable Date: Thu, 29 Aug 2019 09:50:05 -0700 Message-Id: <68f80207b37c5c06984b7a7f62444e35dcbeff56.1567097252.git.alistair.francis@wdc.com> In-Reply-To: References: MIME-Version: 1.0 The nanosleep syscall is not supported on newer 32-bit platforms (such as RV32). To fix this issue let's use clock_nanosleep_time64 if it is avaliable. Let's use CLOCK_REALTIME when calling clock_nanosleep_time64 as the Linux specification says: "POSIX.1 specifies that nanosleep() should measure time against the CLOCK_REALTIME clock. However, Linux measures the time using the CLOCK_MONOTONIC clock. This probably does not matter, since the POSIX.1 specification for clock_settime(2) says that discontinuous changes in CLOCK_REALTIME should not affect nanosleep()" Signed-off-by: Alistair Francis * nptl/thrd_sleep.c: Use clock_nanosleep_time64 instead of nanosleep. * sysdeps/unix/sysv/linux/nanosleep.c: Likewise. * sysdeps/unix/sysv/linux/clock_nanosleep.c: Likewise. * sysdeps/unix/sysv/linux/nanosleep_nocancel.c: Likewise. --- include/time.h | 6 ++ nptl/thrd_sleep.c | 69 ++++++++++++++++-- sysdeps/unix/sysv/linux/clock_nanosleep.c | 74 ++++++++++++++++++-- sysdeps/unix/sysv/linux/nanosleep.c | 65 ++++++++++++++++- sysdeps/unix/sysv/linux/nanosleep_nocancel.c | 64 ++++++++++++++++- 5 files changed, 264 insertions(+), 14 deletions(-) diff --git a/include/time.h b/include/time.h index 95b31429212..6d81f91384b 100644 --- a/include/time.h +++ b/include/time.h @@ -172,6 +172,12 @@ libc_hidden_proto (__difftime64) extern double __difftime (time_t time1, time_t time0); +#if __TIMESIZE == 64 +#define __thrd_sleep_time64 thrd_sleep +#define __clock_nanosleep_time64 __clock_nanosleep +#define __nanosleep_time64 __nanosleep +#define __nanosleep_nocancel_time64 __nanosleep_nocancel +#endif /* Use in the clock_* functions. Size of the field representing the actual clock ID. */ diff --git a/nptl/thrd_sleep.c b/nptl/thrd_sleep.c index 07a51808df2..e85da561c68 100644 --- a/nptl/thrd_sleep.c +++ b/nptl/thrd_sleep.c @@ -22,18 +22,79 @@ #include "thrd_priv.h" int -thrd_sleep (const struct timespec* time_point, struct timespec* remaining) +__thrd_sleep_time64 (const struct timespec* time_point, struct timespec* remaining) { INTERNAL_SYSCALL_DECL (err); - int ret = INTERNAL_SYSCALL_CANCEL (nanosleep, err, time_point, remaining); + int ret = -1; + +#ifdef __ASSUME_TIME64_SYSCALLS +# ifndef __NR_clock_nanosleep_time64 +# define __NR_clock_nanosleep_time64 __NR_clock_nanosleep +# endif + ret = INTERNAL_SYSCALL_CANCEL (clock_nanosleep_time64, err, CLOCK_REALTIME, + 0, time_point, remaining); +#else +# ifdef __NR_clock_nanosleep_time64 + long int ret_64; + + ret_64 = INTERNAL_SYSCALL_CANCEL (clock_nanosleep_time64, err, CLOCK_REALTIME, + 0, time_point, remaining); + + if (ret_64 == 0 || errno != ENOSYS) + ret = ret_64; +# endif /* __NR_clock_nanosleep_time64 */ + if (ret < 0) + { + struct timespec tp32, tr32; + + if (! in_time_t_range (time_point->tv_sec)) + { + __set_errno (EOVERFLOW); + return -1; + } + + valid_timespec64_to_timespec (time_point, &tp32); + ret = INTERNAL_SYSCALL_CANCEL (nanosleep, err, &tp32, &tr32); + + if ((ret == 0 || errno != ENOSYS) && remaining) + valid_timespec_to_timespec64(&tr32, remaining); + } +#endif /* __ASSUME_TIME64_SYSCALLS */ + if (INTERNAL_SYSCALL_ERROR_P (ret, err)) { /* C11 states thrd_sleep function returns -1 if it has been interrupted - by a signal, or a negative value if it fails. */ + by a signal, or a negative value if it fails. */ ret = INTERNAL_SYSCALL_ERRNO (ret, err); if (ret == EINTR) - return -1; + return -1; return -2; } return 0; } + +#if __TIMESIZE != 64 +int +thrd_sleep (const struct timespec* time_point, struct timespec* remaining) +{ + int ret; + timespec64 tp64, tr64; + + valid_timespec_to_timespec64(time_point, &tp64); + ret = __thrd_sleep_time64 (&tp64, &tr64); + + if (ret == 0 || errno != ENOSYS) + { + if (! in_time_t_range (tr64->tv_sec)) + { + __set_errno (EOVERFLOW); + return -1; + } + + if (remaining) + valid_timespec64_to_timespec(&tr32, remaining); + } + + return ret; +} +#endif diff --git a/sysdeps/unix/sysv/linux/clock_nanosleep.c b/sysdeps/unix/sysv/linux/clock_nanosleep.c index 0cb6614dc92..64302fbcc69 100644 --- a/sysdeps/unix/sysv/linux/clock_nanosleep.c +++ b/sysdeps/unix/sysv/linux/clock_nanosleep.c @@ -21,13 +21,14 @@ #include #include "kernel-posix-cpu-timers.h" - /* We can simply use the syscall. The CPU clocks are not supported with this function. */ int -__clock_nanosleep (clockid_t clock_id, int flags, const struct timespec *req, - struct timespec *rem) +__clock_nanosleep_time64 (clockid_t clock_id, int flags, const struct timespec *req, + struct timespec *rem) { + int r = -1; + if (clock_id == CLOCK_THREAD_CPUTIME_ID) return EINVAL; if (clock_id == CLOCK_PROCESS_CPUTIME_ID) @@ -36,9 +37,70 @@ __clock_nanosleep (clockid_t clock_id, int flags, const struct timespec *req, /* If the call is interrupted by a signal handler or encounters an error, it returns a positive value similar to errno. */ INTERNAL_SYSCALL_DECL (err); - int r = INTERNAL_SYSCALL_CANCEL (clock_nanosleep, err, clock_id, flags, - req, rem); + +#ifdef __ASSUME_TIME64_SYSCALLS +# ifndef __NR_clock_nanosleep_time64 +# define __NR_clock_nanosleep_time64 __NR_clock_nanosleep +# endif + r = INTERNAL_SYSCALL_CANCEL (clock_nanosleep_time64, err, clock_id, + flags, req, rem); +#else +# ifdef __NR_clock_nanosleep_time64 + long int ret_64; + + ret_64 = INTERNAL_SYSCALL_CANCEL (clock_nanosleep_time64, err, clock_id, + flags, req, rem); + + if (ret_64 == 0 || errno != ENOSYS) + r = ret_64; +# endif /* __NR_clock_nanosleep_time64 */ + if (r < 0) + { + struct timespec ts32, tr32; + + if (! in_time_t_range (req->tv_sec)) + { + __set_errno (EOVERFLOW); + return -1; + } + + valid_timespec64_to_timespec (req, &ts32); + r = INTERNAL_SYSCALL_CANCEL (clock_nanosleep, err, &ts32, &tr32); + + if ((r == 0 || errno != ENOSYS) && rem) + valid_timespec_to_timespec64(&tr32, rem); + } +#endif /* __ASSUME_TIME64_SYSCALLS */ + return (INTERNAL_SYSCALL_ERROR_P (r, err) - ? INTERNAL_SYSCALL_ERRNO (r, err) : 0); + ? INTERNAL_SYSCALL_ERRNO (r, err) : 0); } + +#if __TIMESIZE != 64 +int +__clock_nanosleep (clockid_t clock_id, int flags, const struct timespec *req, + struct timespec *rem) +{ + int r; + timespec64 treq64, trem64; + + valid_timespec_to_timespec64(req, &treq64) + r = __clock_nanosleep_time64 (clock_id, flags, &treq64, &trem64); + + if (r == 0 || errno != ENOSYS) + { + if (! in_time_t_range (trem64->tv_sec)) + { + __set_errno (EOVERFLOW); + return -1; + } + + if (remaining) + valid_timespec64_to_timespec(&tr32, remaining); + } + + return r; +} +#endif + weak_alias (__clock_nanosleep, clock_nanosleep) diff --git a/sysdeps/unix/sysv/linux/nanosleep.c b/sysdeps/unix/sysv/linux/nanosleep.c index f14ae565af5..9a8dd5a4b82 100644 --- a/sysdeps/unix/sysv/linux/nanosleep.c +++ b/sysdeps/unix/sysv/linux/nanosleep.c @@ -22,10 +22,71 @@ /* Pause execution for a number of nanoseconds. */ int +__nanosleep_time64 (const struct timespec *requested_time, + struct timespec *remaining) +{ +#if defined(__ASSUME_TIME64_SYSCALLS) +# ifndef __NR_clock_nanosleep_time64 +# define __NR_clock_nanosleep_time64 __NR_clock_nanosleep +# endif + return SYSCALL_CANCEL (clock_nanosleep_time64, CLOCK_REALTIME, 0, + requested_time, remaining); +#else +# ifdef __NR_clock_nanosleep_time64 + long int ret_64; + + ret_64 = SYSCALL_CANCEL (clock_nanosleep_time64, CLOCK_REALTIME, 0, + requested_time, remaining); + + if (ret_64 == 0 || errno != ENOSYS) + return ret_64; +# endif /* __NR_clock_nanosleep_time64 */ + int ret; + struct timespec ts32, tr32; + + if (! in_time_t_range (requested_time->tv_sec)) + { + __set_errno (EOVERFLOW); + return -1; + } + + valid_timespec64_to_timespec (requested_time, &ts32); + ret = SYSCALL_CANCEL (nanosleep, &ts32, &tr32); + + if ((ret == 0 || errno != ENOSYS) && remaining) + valid_timespec_to_timespec64(&tr32, remaining); + + return ret; +#endif /* __ASSUME_TIME64_SYSCALLS */ +} + +#if __TIMESIZE != 64 +int __nanosleep (const struct timespec *requested_time, - struct timespec *remaining) + struct timespec *remaining) { - return SYSCALL_CANCEL (nanosleep, requested_time, remaining); + int r; + timespec64 treq64, trem64; + + + valid_timespec_to_timespec64(req, &treq64); + r = __nanosleep_time64 (&treq64, &trem64); + + if (r == 0 || errno != ENOSYS) + { + if (! in_time_t_range (trem64->tv_sec)) + { + __set_errno (EOVERFLOW); + return -1; + } + + if (remaining) + valid_timespec64_to_timespec(&tr32, remaining); + } + + return r; } +#endif + hidden_def (__nanosleep) weak_alias (__nanosleep, nanosleep) diff --git a/sysdeps/unix/sysv/linux/nanosleep_nocancel.c b/sysdeps/unix/sysv/linux/nanosleep_nocancel.c index 122ba627ff3..03f5be2ff9e 100644 --- a/sysdeps/unix/sysv/linux/nanosleep_nocancel.c +++ b/sysdeps/unix/sysv/linux/nanosleep_nocancel.c @@ -20,10 +20,70 @@ #include #include +int +__nanosleep_nocancel_time64 (const struct timespec *requested_time, + struct timespec *remaining) +{ +#ifdef __ASSUME_TIME64_SYSCALLS +# ifndef __NR_clock_nanosleep_time64 +# define __NR_clock_nanosleep_time64 __NR_clock_nanosleep +# endif + return INLINE_SYSCALL_CALL (clock_nanosleep_time64, CLOCK_REALTIME, 0, + requested_time, remaining); +#else +# ifdef __NR_clock_nanosleep_time64 + long int ret_64; + + ret_64 = INLINE_SYSCALL_CALL (clock_nanosleep_time64, CLOCK_REALTIME, 0, + requested_time, remaining); + + if (ret_64 == 0 || errno != ENOSYS) + return ret_64; +# endif /* __NR_clock_nanosleep_time64 */ + int ret; + struct timespec ts32, tr32; + + if (! in_time_t_range (requested_time->tv_sec)) + { + __set_errno (EOVERFLOW); + return -1; + } + + valid_timespec64_to_timespec (requested_time, &ts32); + ret = INLINE_SYSCALL_CALL (nanosleep, &ts32, &tr32); + + if (ret == 0 || errno != ENOSYS) + valid_timespec_to_timespec64(&tr32, remaining); + + return ret; +#endif /* __ASSUME_TIME64_SYSCALLS */ +} + +#if __TIMESIZE != 64 int __nanosleep_nocancel (const struct timespec *requested_time, - struct timespec *remaining) + struct timespec *remaining) { - return INLINE_SYSCALL_CALL (nanosleep, requested_time, remaining); + int ret; + timespec64 treq64, trem64; + + valid_timespec_to_timespec64(req, &treq64) + ret = __nanosleep_nocancel_time64 (&treq64, &trem64); + + if (ret == 0 || errno != ENOSYS) + { + if (! in_time_t_range (trem64->tv_sec)) + { + __set_errno (EOVERFLOW); + return -1; + } + + if (remaining) + valid_timespec64_to_timespec(&tr32, remaining); + } + + return ret; } +#endif + hidden_def (__nanosleep_nocancel) From patchwork Thu Aug 29 16:50:08 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1155393 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-104866-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="rBwN9ExJ"; dkim=pass (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="SvXvT/UT"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46K7xL2qNNz9sDB for ; Fri, 30 Aug 2019 02:54:14 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; q=dns; s= default; b=A5QHb2X2aMPbLo3c9R+rHudz1PB3RtArpM5YVZvO6j/evdmqUTyVO DZQHSiwzQddnDbn43NzQpzOXy/xH2onG/XxRST7aOPIUJzTVABHN6JdWAxN8HLth qeKVwmZjbOU5TZveIaSvJesjz11bhk2QZOeTStXTZL8O6gBiFaWKIE= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; s=default; bh=0f2nObziEhZcrvRAZ9HJUHE9WJI=; b=rBwN9ExJmALu8Mk9BBeotavvyGr7 niXWpMXHwRfcvABq2PPeGJoNuTcoVgRJYvmSlrH12U7OWaZBso0B1pdg6336QFpc PWm02xZGqXG5yT/pMvmYwQ806x7lYkp8RcJFPg2SGmSqz5BwN3iSG2IwwvjVbbk/ nrPneyIFtpLz53s= Received: (qmail 127371 invoked by alias); 29 Aug 2019 16:53:54 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 127299 invoked by uid 89); 29 Aug 2019 16:53:54 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3 autolearn=ham version=3.3.1 spammy=fat X-HELO: esa2.hgst.iphmx.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1567097694; x=1598633694; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=XsikMs5ThnJeJgXj0VZkCP6ugGNgrEGpcQrfjN+dhQI=; b=SvXvT/UThdAHYOWeSEDyRuMeIwl4nT8WfdW43HKVE6/Ci6BGkomjYAEu tHvAyR6bD2glY1uc1V+2t4GE0Z1cqMbzZN9/4kUqAJtNvXn38xHQHOBkz YfRQ7a1JKsd9XqQTE7Dr1qoFn0XwO9pthiKLTxPs8m1Wy+Rrn8GLdmMU8 Vm0bl3JKOsTH5hnse3mK/CMcw8eBXLKLq9FJSB1USD0y+VqFFeTiOnOoP JBmk6tOwriPRAGpr+2K/n8185gPm+U3iN/FQdoEMFW7gNMWEU6U1Vuxxy 4UumaZKchXC2eX4+5Eij5avxfcY0DRNOjsUBvnoJ4DLZLhMIot98NTxtI Q==; IronPort-SDR: bnkG7jgyXsia+bTheYn1/leX3tunUE2ytBfYbJ3wPfwXALG/RN5MHhEEuYTrteckvjPARdejkV LuoIKZmjjrwTjDIvgVV/3oCxsGbLFN3GOe2Z5gtnDfLkbO8mhXljv0wpiRs9NbVlp8B8F/NLX3 /j2gPEClsBAGQIMcnifobMS87PWDQGGsQkNHstaT0iEnEZ4vvDtU/88vx2E8R7bDMHMT4UPlwT cNlzGGI0HFJzN4KcI7HzdEMFHuf2iHFq2HJUE+NprJY+jyl73pzvqvpeQLR1bKc2yiGdfyXYfm qlk= IronPort-SDR: 1hrquiv9Wtspp4pKCSk4U9G1r2/jIC1gc2Y7RX1aqhiakR9DPCMOIo/JEgQBqWyCr+tUSJYSIi yTfwT5fE3KuhEfo1pnsZE+oqx7/KsuMhLQUA4zKgOXxCm+I6shRx+Anjcgk4FFyrbaxH9smeTJ qHGKInCAhdKwiJKlMUy6EDqXhd01jlsIJmYFfrwknvTEWoZziDouM0XV7LNQYTS0lZs0T7s68/ EzDKU8rcnWDOHWSEZD0UfgsdbQTIxTP+MVafqGrAG1mJo2Ho7dMJBLDZra7Uql0jvs0tK8VpHU vt82plzU3pW3Sx5xQYyKoHdb IronPort-SDR: Bo+dRVBLFXca4etiqCeHYIpG2yhkzSOqNgNwXjsAd5ZmcnLUaHfiuxzIzjMTkLhokeQLUs1WAs NXqHH+pFyWH+QgIZ8Tupha0dpAFk8PzX6jEokTR4ATjKphzHQhLkAhP5Kxn4DRFALwupZjqq0D SinLPz8gs+XKW1bTOPSd8Mm9tAFGNwC47fKnhZf8B03h2rf/rjwWplSKXWb+dwOHkKkf2ky4nX u8eYvIOjOfOj0OuUTmF13UL3/bz47InJSHBGeyremspkaj9pxVbe7KzySEPhWPMlwOn8tU0avr 9n4= WDCIronportException: Internal From: Alistair Francis To: libc-alpha@sourceware.org Cc: arnd@arndb.de, adhemerval.zanella@linaro.org, fweimer@redhat.com, palmer@sifive.com, macro@wdc.com, zongbox@gmail.com, alistair.francis@wdc.com, alistair23@gmail.com Subject: [RFC v5 03/21] sysdeps/gettimeofday: Use clock_gettime64 if avaliable Date: Thu, 29 Aug 2019 09:50:08 -0700 Message-Id: <11c2a035bdd1abfced754902e88973639bdf8e12.1567097252.git.alistair.francis@wdc.com> In-Reply-To: References: MIME-Version: 1.0 Not all architectures support the obsolete gettimeofday so use the newer clock_gettime64 syscall if it is avaliable. This fixes RV32 build issues. This has the side effect of not setting the struct timezone *tz variable if __ASSUME_TIME64_SYSCALLS or __NR_clock_gettime64 is defined!!! The struct timezone *tz variable contaions information on the current timezone, in this structure: struct timezone { int tz_minuteswest; /* minutes west of Greenwich */ int tz_dsttime; /* type of DST correction */ }; On 32-bit systems with __ARCH_WANT_TIME32_SYSCALLS not defined there is no way way to get the struct timezone via a syscall. AFAIK there are no plans to add suppor to a future kernel. Most callers of gettimeofday() don't use the timezone data, see example code from Debian below. If __ASSUME_TIME64_SYSCALLS and __NR_clock_gettime64 are not defined then struct timezone *tz will be set as usual. Example code from Debian: struct timeval my_gettime(void) { struct timezone tz_ignored; struct timeval tv; gettimeofday(&tv, &tz_ignored); return tv; } Arnd used Debian code search and found the following uses of struct timezone: drivers/media/platform/vivid/vivid-rds-gen.c: (sys_tz.tz_minuteswest >= 0 ? 0x20 : 0) | drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c: record->end_utc_bias = cpu_to_le16(sys_tz.tz_minuteswest * 60); drivers/scsi/3w-9xxx.c: local_time = (u32)(ktime_get_real_seconds() - (sys_tz.tz_minuteswest * 60)); drivers/scsi/3w-sas.c: local_time = (u32)(ktime_get_real_seconds() - (sys_tz.tz_minuteswest * 60)); drivers/scsi/aacraid/commsup.c: local_time = (now->tv_sec - (sys_tz.tz_minuteswest * 60)); drivers/scsi/arcmsr/arcmsr_hba.c: time64_to_tm(ktime_get_real_seconds(), -sys_tz.tz_minuteswest * 60, &tm); drivers/scsi/mvumi.c: local_time = (time - (sys_tz.tz_minuteswest * 60)); drivers/scsi/smartpqi/smartpqi_init.c: time64_to_tm(local_time, -sys_tz.tz_minuteswest * 60, &tm); fs/affs/amigaffs.c: secs -= sys_tz.tz_minuteswest * 60 + ((8 * 365 + 2) * 24 * 60 * 60); fs/affs/inode.c: sys_tz.tz_minuteswest * 60; fs/fat/misc.c: sys_tz.tz_minuteswest) * SECS_PER_MIN; fs/hfs/hfs_fs.h: return ut + sys_tz.tz_minuteswest * 60; fs/hfs/inode.c: HFS_I(inode)->tz_secondswest = sys_tz.tz_minuteswest * 60; fs/hfs/sysdep.c: diff = sys_tz.tz_minuteswest * 60 - HFS_I(inode)->tz_secondswest; fs/hpfs/hpfs_fn.h: return t + sys_tz.tz_minuteswest * 60 + hpfs_sb(s)->sb_timeshift; fs/udf/udftime.c: offset = -sys_tz.tz_minuteswest; kernel/debug/kdb/kdb_main.c: sys_tz.tz_minuteswest); kernel/time/ntp.c: adjust.tv_sec -= (sys_tz.tz_minuteswest * 60); kernel/time/timekeeping.c: if (sys_tz.tz_minuteswest != 0) { kernel/time/vsyscall.c: vdata[CS_HRES_COARSE].tz_minuteswest = sys_tz.tz_minuteswest; lib/vdso/gettimeofday.c: tz->tz_minuteswest = vd[CS_HRES_COARSE].tz_minuteswest; net/netfilter/xt_time.c: stamp -= 60 * sys_tz.tz_minuteswest; Signed-off-by: Alistair Francis * sysdeps/unix/sysv/linux/gettimeofday.c: Use clock_gettime64 syscall for gettimeofday. --- sysdeps/unix/sysv/linux/gettimeofday.c | 59 +++++++++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/sysdeps/unix/sysv/linux/gettimeofday.c b/sysdeps/unix/sysv/linux/gettimeofday.c index a74f03825a5..af342f219ec 100644 --- a/sysdeps/unix/sysv/linux/gettimeofday.c +++ b/sysdeps/unix/sysv/linux/gettimeofday.c @@ -32,8 +32,65 @@ int __gettimeofday (struct timeval *tv, struct timezone *tz) { - return INLINE_VSYSCALL (gettimeofday, 2, tv, tz); + long int ret_64; +#ifdef __ASSUME_TIME64_SYSCALLS +# ifndef __NR_clock_gettime64 +# define __NR_clock_gettime64 __NR_clock_gettime +# endif + struct timespec now; + + ret_64 = INLINE_VSYSCALL (clock_gettime64, 2, CLOCK_REALTIME, + &now); + + if (ret_64 == 0 || errno != ENOSYS) + valid_timespec64_to_timeval((struct __timespec64*) &now, tv); + + return ret_64; +#else +# ifdef __NR_clock_gettime64 + ret_64 = INLINE_VSYSCALL (clock_gettime64, 2, CLOCK_REALTIME, + &now); + + if (ret_64 == 0 || errno != ENOSYS) + { + valid_timespec64_to_timeval((struct __timespec64*) &now, tv); + return ret_64; + } +# endif /* __NR_clock_gettime64 */ + int ret = INLINE_VSYSCALL (gettimeofday, 2, tv, tz); + + if (! in_time_t_range (tv->tv_sec)) + { + __set_errno (EOVERFLOW); + return -1; + } + + return ret; +#endif } + +#if __TIMESIZE != 64 +int +__gettimeofday (struct timeval *tv, struct timezone *tz) +{ + int ret; + timeval64 tv64; + struct __timespec64 now; + + ret = __gettimeofday (&tv64, tz); + + if (ret == 0 || errno != ENOSYS) + { + /* Convert from timespec to timeval */ + tv->tv_sec = tv64.tv_sec; + tv->tv_usec = tv64.tv_nsec; + return ret; + } + + return ret; +} +#endif + libc_hidden_def (__gettimeofday) weak_alias (__gettimeofday, gettimeofday) libc_hidden_weak (gettimeofday) From patchwork Thu Aug 29 16:50:11 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1155394 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-104867-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="n8CAQBRN"; dkim=pass (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="BL80HaQU"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46K7xW6WvZz9s4Y for ; Fri, 30 Aug 2019 02:54:23 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; q=dns; s= default; b=GjijYW14dowoNCiY5DtnAjAt97qg/B4WDXcev7lK/kaz3ZNVSrNHs ObDHqChFBrWezhLzbm75s0PzTL2OF9e8YUF9PhIdI+6MAJtOwY41Tq439PS1qbAx HPDaXXI/BIGJg+9AKA2W1bS/Un04zEJzt7WOL9/Ll8X7Ptv1pLJt+I= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; s=default; bh=EzvMMLd9LrHO92N+UUIVp/1/0l8=; b=n8CAQBRN4iF83JN0mHvyqZXGrA6/ CH4OthQiewuYp/+p/4JN9qCcQnhmyzhUq0s9sx7C1bf6duZ1sSKZt6DfCjkE5S8F nrB3ygFk4iUY9dHrEpFxbUkhHIw3PQMyBwOR/6Y7g5ZG+E8tXuZD0ZA9MVY4YqUJ UC/wwnT/YR+MoKk= Received: (qmail 127662 invoked by alias); 29 Aug 2019 16:53:56 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 127575 invoked by uid 89); 29 Aug 2019 16:53:56 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3 autolearn=ham version=3.3.1 spammy= X-HELO: esa2.hgst.iphmx.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1567097697; x=1598633697; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=baQ3/OtiWKzLwbrJId3YSlgq2rCP3JKU/g1Z9NKbNMU=; b=BL80HaQUjxiOyVxM/lONGfwAhiulOeg0vwfCvqffNyVOugMCZoNzNhWb 5QWiojxq6cynjS+cFWJXc20sTjcRP72xSsW0yiPkMjf08G2sBHb4TZf8b QVTg2WV6uUT/nUM1weFJ0V3sHgcPN//D1jj0rin/m3PPJZ14oak2xg/mI /lTtE+rzrK1G/2Vm17vhj9PZCwGnKYgWxjOWZWVnjwem/naEYPjyJzAtj /fK9HohDD7NW/4pxVGQWuaeo9E7TbKMqH5cxx+r76cqgubeqaNCDTR+p8 wkqru4XND3J97EynVKp0Jzq6qGKD2hDjOZ7Mja+47WiAnXhlecjtUUv8M w==; IronPort-SDR: Ee7uToY79Ij4ze98SNeq0PwQKuFeoupYADE+mM2LMuvYCIKLsrZt+5o4lIA9G+bg+VpVPzc8Ba 3ftxmIVLVrCLGR70PB17B//LwgjFKosZ/e8O5DcJ11ZeK5oupuKTMgnYATAUdOqGkiJ5dkbR5d SdoxQbUYffflKlJO26FiZ+rk2znw7blCOn8FzyREe2Ayq2rMTaKPtYYfy0lEf7fcldcDLgv0Cf XZoH3TLdxyB9KMmQ5za7rxFGE5/J+V1Z+KNRiqcQDT7t3UNsob1gIOHP24oEWLJCxDEwBdwz1l yGE= IronPort-SDR: W0aJU7I7ULakvGjNKbikNyaFlOiTZ2trsxehY8tZQj8k7U77vpJanKsP6jYYzf/dePOynSmMi8 XK5DGmYl4W7x4BEitxlL0sZheJeMzRyUf5TeYvXB+Gdq5hW4ulz0SnT3bqnXXsUSWse8ZiSwVd 8reHbpiLnlnosq+gkwQEqUyaOS942SALigHFSnOow3Z0HwAQgDN0Ytz7vJJgy066cJ7LxiuTNR Ys6MbMsjfzKD409B23+F6R9t6jEtRDrbvP+y35R1ubv8WTzPDotFDBpZ3h2gQpjHHiGt8iqJDs J0ffep4OUMgZ6yR8eNVl0oiX IronPort-SDR: NFwS43uJCWfINEaNvCujiY26nqAdur/7mQO1ItQN4miDG+Lxx2967zbGCFJKFmqmh7SippnG9Q Y6ofgiZNzhZ22cakWS4DAckkUAoJR5PwFHKQrrgNm6o2Dc+293gSYAPMAICh0LeQIz8liJQGpH trVHm9wOZdZi0VmEucwG8JJji8iGj9vxJCac80G0iFYTpi76fACiYJQHZojGfiTF3E11jDWq5v p2knVyJ07HcCdrRuXXPxjbJ01GOrNvxrRotXRBY3gZKlBn9nbiouQUkt+4/KpXqswTIG0eIW4N Nas= WDCIronportException: Internal From: Alistair Francis To: libc-alpha@sourceware.org Cc: arnd@arndb.de, adhemerval.zanella@linaro.org, fweimer@redhat.com, palmer@sifive.com, macro@wdc.com, zongbox@gmail.com, alistair.francis@wdc.com, alistair23@gmail.com Subject: [RFC v5 04/21] sysdeps/wait: Use waitid if avaliable Date: Thu, 29 Aug 2019 09:50:11 -0700 Message-Id: <7528c6e0937f88bcff0f226b67c662cf89286998.1567097252.git.alistair.francis@wdc.com> In-Reply-To: References: MIME-Version: 1.0 If the waitid syscall is avaliable let's use that as waitpid and wait4 aren't always avaliable (they aren't avaliable on RV32). Unfortunately waitid is substantially differnt to waitpid and wait4, so the conversion ends up being complex. For full support we need the 5.4+ kernel as that allows a pid of 0 with the P_PGID idtype. Signed-off-by: Alistair Francis * sysdeps/unix/sysv/linux/wait.c: Use __NR_waitid if avaliable. * sysdeps/unix/sysv/linux/waitpid.c: Likewise. * sysdeps/unix/sysv/linux/waitpid_nocancel.c: Likewise. --- sysdeps/unix/sysv/linux/wait.c | 41 +++++++++++++-- sysdeps/unix/sysv/linux/waitpid.c | 59 +++++++++++++++++++++- sysdeps/unix/sysv/linux/waitpid_nocancel.c | 56 +++++++++++++++++++- 3 files changed, 151 insertions(+), 5 deletions(-) diff --git a/sysdeps/unix/sysv/linux/wait.c b/sysdeps/unix/sysv/linux/wait.c index 498bd1c095e..cd124ed11fb 100644 --- a/sysdeps/unix/sysv/linux/wait.c +++ b/sysdeps/unix/sysv/linux/wait.c @@ -26,9 +26,44 @@ pid_t __libc_wait (int *stat_loc) { - pid_t result = SYSCALL_CANCEL (wait4, WAIT_ANY, stat_loc, 0, - (struct rusage *) NULL); - return result; +#ifdef __NR_wait4 + return SYSCALL_CANCEL (wait4, WAIT_ANY, stat_loc, 0, + (struct rusage *) NULL); +#else + siginfo_t infop; + __pid_t ret; + + ret = SYSCALL_CANCEL (waitid, P_ALL, 0, &infop, WEXITED, NULL); + + if (ret < 0) + return ret; + + if (stat_loc) + { + *stat_loc = 0; + switch (infop.si_code) + { + case CLD_EXITED: + *stat_loc = infop.si_status << 8; + break; + case CLD_DUMPED: + *stat_loc = 0x80; + /* Fallthrough */ + case CLD_KILLED: + *stat_loc |= infop.si_status; + break; + case CLD_TRAPPED: + case CLD_STOPPED: + *stat_loc = infop.si_status << 8 | 0x7f; + break; + case CLD_CONTINUED: + *stat_loc = 0xffff; + break; + } + } + + return infop.si_pid; +#endif } weak_alias (__libc_wait, __wait) diff --git a/sysdeps/unix/sysv/linux/waitpid.c b/sysdeps/unix/sysv/linux/waitpid.c index f0897574c0b..003d9ad8113 100644 --- a/sysdeps/unix/sysv/linux/waitpid.c +++ b/sysdeps/unix/sysv/linux/waitpid.c @@ -20,14 +20,71 @@ #include #include #include +#include __pid_t __waitpid (__pid_t pid, int *stat_loc, int options) { #ifdef __NR_waitpid return SYSCALL_CANCEL (waitpid, pid, stat_loc, options); -#else +#elif defined(__NR_wait4) return SYSCALL_CANCEL (wait4, pid, stat_loc, options, NULL); +#else + __pid_t ret; + idtype_t idtype = P_PID; + siginfo_t infop; + + if (pid < -1) + { + idtype = P_PGID; + pid *= -1; + } + else if (pid == -1) + { + idtype = P_ALL; + } + else if (pid == 0) + { + /* Linux Kernels 5.4+ support pid 0 with P_PGID to specify wait on + * the current PID's group. Earlier kernels will return -EINVAL. + */ + idtype = P_PGID; + } + + options |= WEXITED; + + ret = SYSCALL_CANCEL (waitid, idtype, pid, &infop, options, NULL); + + if (ret < 0) + { + return ret; + } + + if (stat_loc) + { + *stat_loc = 0; + switch (infop.si_code) + { + case CLD_EXITED: + *stat_loc = infop.si_status << 8; + break; + case CLD_DUMPED: + *stat_loc = 0x80; + /* Fallthrough */ + case CLD_KILLED: + *stat_loc |= infop.si_status; + break; + case CLD_TRAPPED: + case CLD_STOPPED: + *stat_loc = infop.si_status << 8 | 0x7f; + break; + case CLD_CONTINUED: + *stat_loc = 0xffff; + break; + } + } + + return infop.si_pid; #endif } libc_hidden_def (__waitpid) diff --git a/sysdeps/unix/sysv/linux/waitpid_nocancel.c b/sysdeps/unix/sysv/linux/waitpid_nocancel.c index 89e36a5c0b1..63a3571b8a5 100644 --- a/sysdeps/unix/sysv/linux/waitpid_nocancel.c +++ b/sysdeps/unix/sysv/linux/waitpid_nocancel.c @@ -27,8 +27,62 @@ __waitpid_nocancel (__pid_t pid, int *stat_loc, int options) { #ifdef __NR_waitpid return INLINE_SYSCALL_CALL (waitpid, pid, stat_loc, options); -#else +#elif defined (__NR_wait4) return INLINE_SYSCALL_CALL (wait4, pid, stat_loc, options, NULL); +#else + __pid_t ret; + idtype_t idtype = P_PID; + siginfo_t infop; + + if (pid < -1) + { + idtype = P_PGID; + pid *= -1; + } + else if (pid == -1) + { + idtype = P_ALL; + } + else if (pid == 0) + { + /* Linux Kernels 5.4+ support pid 0 with P_PGID to specify wait on + * the current PID's group. Earlier kernels will return -EINVAL. + */ + idtype = P_PGID; + } + + options |= WEXITED; + + ret = INLINE_SYSCALL_CALL (waitid, idtype, pid, &infop, options, NULL); + + if (ret < 0) + return ret; + + if (stat_loc) + { + *stat_loc = 0; + switch (infop.si_code) + { + case CLD_EXITED: + *stat_loc = infop.si_status << 8; + break; + case CLD_DUMPED: + *stat_loc = 0x80; + /* Fallthrough */ + case CLD_KILLED: + *stat_loc |= infop.si_status; + break; + case CLD_TRAPPED: + case CLD_STOPPED: + *stat_loc = infop.si_status << 8 | 0x7f; + break; + case CLD_CONTINUED: + *stat_loc = 0xffff; + break; + } + } + + return infop.si_pid; #endif } libc_hidden_def (__waitpid_nocancel) From patchwork Thu Aug 29 16:50:13 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1155396 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-104868-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="jFGYa8gR"; dkim=pass (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="Bss9+kRU"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46K7xj53Hdz9s4Y for ; Fri, 30 Aug 2019 02:54:33 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; q=dns; s= default; b=Mf0XBFmTSwzIpkhCX//sgLdlPPNa9mOF34smsCx8G/5mJu8eaJvMd aXXJSIBYDexIEj1eH2OU/z/dE5Sbay17zfo/u4eOJYSeyduevjfdfYyR0J3YNhi1 dxQ7F4ftx4aW84FzBoWb9olYQs8sq01j3XJoj8XHZTEvOCQ/F4IGxc= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; s=default; bh=K0M72GgcMQZzzGW0TFbW0ZvghD8=; b=jFGYa8gRLOWPgTBMrskBy78MGPPl j/fTfrKiI6OE9CP6Nlem2PNPFNFOWwLo8R+BEpmheL4wC3qk3S4m/rdig5Sc1WhD m4vUlLSDfum8BoTyl0R36Pq2/cyZgNTnHDhDAUfgp6JcTDXPMxMzQv5b6uKY0Cl8 V82BsuIdSrQRyBo= Received: (qmail 128109 invoked by alias); 29 Aug 2019 16:53:59 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 128050 invoked by uid 89); 29 Aug 2019 16:53:59 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3 autolearn=ham version=3.3.1 spammy= X-HELO: esa2.hgst.iphmx.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1567097702; x=1598633702; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kfArp6/WSN+DYNjrsV5gES1BCuEyOAJXcq2atTxaJZs=; b=Bss9+kRUJwSx48F2n6rYMviJAHr+9bzOsQEZdORI2jz20sKdjNJCXEln RG/m40qL82tQt1u+VgLJApSOFkbAw86zk5UWBMsAh7Y5Z0vGECreEhYjQ LNDKXxVCEcDe/O0SVe8RfLABtXnxv1N2hxAfTt6EuUUUr3guhmfEGRWYG VRSXBMGoa+hW+WzoOQYdtcqa2Sm0wB29judPdkV1kBsoWlrUc4b/FCU/g Fcqv36muF8VVZKvt4u4F4d6SNgPV44FueLQHb3Hvbj+Xg8WyO9Mh6I/3I rZe9z1fWbJn4n+ZOcmmkdysDxrpGcKRcFuACd8oR81PHSxwRhUj6hx22K Q==; IronPort-SDR: AnoQU4n4FmzC/CytAQCtn0dOmCNBEsaftNBrgGtp11j1Y6vYuUu3AXar7b7lhbKhDDo7p2A7xg mfvMFYhKfZQ+FR69i2iGOebjbbBZAmE2mq04y3ZL4UrsxN1UxCZuxYMSjh6eblEv3yXZ5MUGUO vu4V5SosCnjIUvOGyUK0CFCcXIBfXpVSVs/kHvR3MODiqzLX18/DIg/3xI0N12F7oMwDar6eT2 oIG1pDiBfqpYGp2mn1Ztw5/+rXv6Nh1ZPzbCoWC2cVI81l+Tq4QfrgfJfn0pQYd0Eg3o80NwC+ hBk= IronPort-SDR: Af/xawCzTklhgdXSPahC2nxCyvEeLwoEmqzmjRO13HFBBxXcP7xBriwFCtmgRwYyx83gbyxebe 6aVKgEB+GyVUfYtEzzPimI2fnwmVqjsZ6/Rgppz7cxxfzfTBoSQc3hed17BEPXwm7xG6qfAWWv S6cXb5byhw4Ez3t3Clu6UCK/YMAevdcFiDmilMwhVshnZy6wOthFXQ7gjKIdhHJ5WEf7MVTbbz nDXrLkBAEh7GwzCxheWDRSet62Z4easuM9bUPZV3MlHoZucL2lr4SnFJaFC8YAvMuaGAjiYJ38 Riq2hh8awbG5jp3cqiJIfn9N IronPort-SDR: MnfmaZTy1mN9hjBD+ZBlBIK5N6g2d8VPYLCQ0r/0f5D0vQYZmbg1U+yqIgaYpc7eE3QAt6/V69 ZE1KznWDs/H0AuxgAKG7b7ytD69uPJvf1nw/hKQMzoKZFSgWUnc63dL3joPNKti2RFdJjEdoc4 hGhs5sBRM+m1PrxI7tdj4afPCOms9I95RQF74kyT1Th704jGbfxDd/u/yUgaLGXSZICtxelaUh Nd7Xd3h3GNh1b/oMxi67iDQovHGG6LpT1UZhy4L6oHT8O10RwduuekpLxwRutRSojlSHxnyeOy ldY= WDCIronportException: Internal From: Alistair Francis To: libc-alpha@sourceware.org Cc: arnd@arndb.de, adhemerval.zanella@linaro.org, fweimer@redhat.com, palmer@sifive.com, macro@wdc.com, zongbox@gmail.com, alistair.francis@wdc.com, alistair23@gmail.com Subject: [RFC v5 05/21] sysdeps/clock_gettime: Use clock_gettime64 if avaliable Date: Thu, 29 Aug 2019 09:50:13 -0700 Message-Id: <513e8d86c5d7a44fcf269f9c38883222fbbc168d.1567097252.git.alistair.francis@wdc.com> In-Reply-To: References: MIME-Version: 1.0 Signed-off-by: Alistair Francis * sysdeps/unix/sysv/linux/clock_gettime.c: Use clock_gettime64 if avaliable. --- include/time.h | 1 + sysdeps/unix/sysv/linux/clock_gettime.c | 48 ++++++++++++++++++++++++- 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/include/time.h b/include/time.h index 6d81f91384b..1e33f34e1f6 100644 --- a/include/time.h +++ b/include/time.h @@ -177,6 +177,7 @@ extern double __difftime (time_t time1, time_t time0); #define __clock_nanosleep_time64 __clock_nanosleep #define __nanosleep_time64 __nanosleep #define __nanosleep_nocancel_time64 __nanosleep_nocancel +#define __clock_gettime64 __clock_gettime #endif /* Use in the clock_* functions. Size of the field representing the diff --git a/sysdeps/unix/sysv/linux/clock_gettime.c b/sysdeps/unix/sysv/linux/clock_gettime.c index 5fc47fb7dc7..ea98af9bf1a 100644 --- a/sysdeps/unix/sysv/linux/clock_gettime.c +++ b/sysdeps/unix/sysv/linux/clock_gettime.c @@ -28,9 +28,55 @@ /* Get current value of CLOCK and store it in TP. */ int +__clock_gettime64 (clockid_t clock_id, struct timespec *tp) +{ +#ifdef __ASSUME_TIME64_SYSCALLS +# ifndef __NR_clock_gettime64 +# define __NR_clock_gettime64 __NR_clock_gettime +# endif + return INLINE_VSYSCALL (clock_gettime64, 2, clock_id, tp); +#else + int ret; +# ifdef __NR_clock_gettime64 + ret = INLINE_VSYSCALL (clock_gettime64, 2, clock_id, tp); + + if (ret == 0 || errno != ENOSYS) + return ret; +# endif /* __NR_clock_gettime64 */ + struct timespec tp32; + + ret = INLINE_VSYSCALL (clock_gettime, 2, clock_id, &tp32); + + if (ret == 0 || errno != ENOSYS) + valid_timespec_to_timespec64(tp32, tp); + + return ret; +#endif /* __ASSUME_TIME64_SYSCALLS */ +} + +#if __TIMESIZE != 64 +int __clock_gettime (clockid_t clock_id, struct timespec *tp) { - return INLINE_VSYSCALL (clock_gettime, 2, clock_id, tp); + int ret; + struct __timespec64 tp64; + + ret = __clock_gettime64 (clock_id, &tp64); + + if (ret == 0 || errno != ENOSYS) + { + if (! in_time_t_range (tp64.tv_sec)) + { + __set_errno (EOVERFLOW); + return -1; + } + + valid_timespec64_to_timespec(&tp64, tp); + + return ret; + } } +#endif + weak_alias (__clock_gettime, clock_gettime) libc_hidden_def (__clock_gettime) From patchwork Thu Aug 29 16:50:16 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1155398 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-104870-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="ZYlRmJql"; dkim=pass (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="HriMv+b0"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46K7y53F8tz9s4Y for ; Fri, 30 Aug 2019 02:54:53 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; q=dns; s= default; b=wla2ZivxoCLEaePgfet4T8oXYb6kxG91Vr50T9kTCo8gxxeASeoIM OdpVKXAV8xHcWyoTOMrFVcxqF+o+3tdoySGZACRlwpXUyQ7Yw/vm/jwL8OgQC3rv 2J1PJJ8ptwXfLOTg62vdCV/8X2204MUPBcJXUhPFc4PqQZWLBPTSas= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; s=default; bh=xUdukrrzwD3tHdWleamAfBTCl4Q=; b=ZYlRmJql77KbONTxNo7xDiDama3G QvyWc/CI8dtfP2ckbWS3rCkHO5VRtfu154z9YNDBNTMkdhbwb3YTw1Am0LCi7eDQ uNEnC0k+fZ7MChIrrgPS4wH0Ss4wo3AP2I8Cnse7ufRedXtIlU6L2X5LxeJOzobv Us4SKPkl0YKGBmI= Received: (qmail 128776 invoked by alias); 29 Aug 2019 16:54:04 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 128720 invoked by uid 89); 29 Aug 2019 16:54:04 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.5 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3 autolearn=ham version=3.3.1 spammy= X-HELO: esa2.hgst.iphmx.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1567097644; x=1598633644; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=h2Gi22fxrHZaaLWUcdKtyrtb5y6IRIKg1y2gCnYj3/g=; b=HriMv+b0+eGvFUmSqieK9PHsiGPIZS3xXdMbjIZ2L0/w2dZ0BeRt2Oei 7aQtdXrBVClJKErNO6IPRQdBnglGvEclRQ61Yu264dmWddt7P4WEmsFzI bsmKkSHjiFqpFUDG+9OB8VpDkzvGUdD55iqgMv9UyOdzU4lX616GGodrF T+8LHDFsosMBDlAeT++r8NfTpiEkVmoUSPcuXNztVjIpx27jQm4fy2IsC T7TnnIwpK545Ow18UjAVxL3LjqBFg+Jl4eOtH5Md6B8+QObi15tUfHXFc YY9O/JYbSfjMHReemdhk4WBkbeanercx1ph8SDE9JCc/59hOr/gyixruG Q==; IronPort-SDR: x1c472ffU9fmqB1jCmujWAa+PZ+2Bv99H2Q7cezz5ZtYABJZwILP9JTjhHZS7EeU2wH0sPZv8z jrWt2ubmEnNU5bdMHiSkjU7p0i8sErH/JHkdPvCJAp0YsYd0QvOGF6k3TGtQuRR2M7CKTy29eY PUCwAf3Js86wKg/fKtpKzxzbeKY1RYN/lycirpz4nSVvGZ7aYBLAepCQ0cYEK2Ef3Ai41JJGQT 9IaXvoVmvEeuPJU0g2OiNxJr4gAQVj66xPmxFh8Er5MCpwAuNvGTDszIr1zNFep+Kz7AoVbHnc 0Wg= IronPort-SDR: n0qZb69qm4uzwU6VU2VVBY9j7MqZhVYrAPcJcmcMirpHWckKw8zYlDy5WT29aM142j62/1nwGH fGHvlILzZc6ETCVtWPCenFHonl9/ldL3SuU3s/ebQnklGO8Op8Xod0WY4iIHjysq8Ej+uxqKce V7Up1wfORDUJYLcLz3rJ3ASzszE3KuLO2PK4BLX5ilMQ7Cd2DqtQ7RGIsshLES88gT7z1aPOvM hYSLs10W3UCST30xPMVUy8F01ZF1Ea6MwxVcngAKal8yg/vmLigYLN0WnveJ7o9iZ3N8685QXz C/KmxVnIqLnJVwODvU0z8EaK IronPort-SDR: WyA8Esck6jUxVdwzGn/D89lTmOpjWUKk6t1KfYt3WI+TnnU7ADghKNa0wh9+XYK86PIzW3VXiR KNSO3iMTZIAfFOvt2LoYBJ/PvH9Yfi7oHFDN5UDq9O0ZrbcG+tEVgvNw36bjZpkduSkBe9VpAX +uy5/OKEES2s/Gync5uGC4CWvLRMbKSnRO7ng4m/pD9c0D/D4QK5ckN36Z660vtcLD4yithKuC P/5PfPqzL7eMflUIcMbq8b//oLyDJuaYU4e/4mAWE0UwtD3XOOr3OuS1M64siCEN7k/tA9sB3X oK8= WDCIronportException: Internal From: Alistair Francis To: libc-alpha@sourceware.org Cc: arnd@arndb.de, adhemerval.zanella@linaro.org, fweimer@redhat.com, palmer@sifive.com, macro@wdc.com, zongbox@gmail.com, alistair.francis@wdc.com, alistair23@gmail.com Subject: [RFC v5 06/21] sysdeps/timespec_get: Use clock_gettime64 if avaliable Date: Thu, 29 Aug 2019 09:50:16 -0700 Message-Id: In-Reply-To: References: MIME-Version: 1.0 Signed-off-by: Alistair Francis * sysdeps/unix/sysv/linux/timespec_get.c: Use clock_gettime64 if avaliable. --- include/time.h | 1 + sysdeps/unix/sysv/linux/timespec_get.c | 48 ++++++++++++++++++++++++-- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/include/time.h b/include/time.h index 1e33f34e1f6..ae88eac62d6 100644 --- a/include/time.h +++ b/include/time.h @@ -178,6 +178,7 @@ extern double __difftime (time_t time1, time_t time0); #define __nanosleep_time64 __nanosleep #define __nanosleep_nocancel_time64 __nanosleep_nocancel #define __clock_gettime64 __clock_gettime +#define __timespec_get64 timespec_get #endif /* Use in the clock_* functions. Size of the field representing the diff --git a/sysdeps/unix/sysv/linux/timespec_get.c b/sysdeps/unix/sysv/linux/timespec_get.c index 52080ddf08a..f53e75d5719 100644 --- a/sysdeps/unix/sysv/linux/timespec_get.c +++ b/sysdeps/unix/sysv/linux/timespec_get.c @@ -26,16 +26,34 @@ /* Set TS to calendar time based in time base BASE. */ int -timespec_get (struct timespec *ts, int base) +__timespec_get64 (struct timespec *ts, int base) { switch (base) { int res; INTERNAL_SYSCALL_DECL (err); case TIME_UTC: - res = INTERNAL_VSYSCALL (clock_gettime, err, 2, CLOCK_REALTIME, ts); +#ifdef __ASSUME_TIME64_SYSCALLS +# ifndef __NR_clock_gettime64 +# define __NR_clock_gettime64 __NR_clock_gettime +# endif + res = INTERNAL_VSYSCALL (clock_gettime64, err, 2, CLOCK_REALTIME, ts); +#else +# ifdef __NR_clock_gettime64 + res = INTERNAL_VSYSCALL (clock_gettime64, err, 2, CLOCK_REALTIME, ts); +# endif /* __NR_clock_gettime64 */ + struct timespec ts32; + + res = INTERNAL_VSYSCALL (clock_gettime, err, 2, CLOCK_REALTIME, &ts32); + + if (res == 0 || !INTERNAL_SYSCALL_ERROR_P (res, err)) + { + ts->tv_sec = ts32.tv_sec; + ts->tv_nsec = ts32.tv_nsec; + } +#endif if (INTERNAL_SYSCALL_ERROR_P (res, err)) - return 0; + return 0; break; default: @@ -44,3 +62,27 @@ timespec_get (struct timespec *ts, int base) return base; } + +#if __TIMESIZE != 64 +int +timespec_get (struct timespec *ts, int base) +{ + int ret; + struct __timespec64 ts64; + + ret = __timespec_get64 (&ts64, base); + + if (ret == 0 || !INTERNAL_SYSCALL_ERROR_P (ret, err)) + { + ts->tv_sec = ts64.tv_sec; + ts->tv_nsec = ts64.tv_nsec; + if (! in_time_t_range (ts64.tv_sec)) + { + __set_errno (EOVERFLOW); + return -1; + } + } + + return ret; +} +#endif From patchwork Thu Aug 29 16:50:19 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1155399 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-104871-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="ZqSEK7Pi"; dkim=pass (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="K3XZXbX4"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46K7yH4qbCz9s4Y for ; Fri, 30 Aug 2019 02:55:03 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; q=dns; s= default; b=SXm7GvON6zBiLdgFO6T9tEnDCL5dTaI2wYDD/bRu4PqVt7dBLYb2G MqfFfWzToWsCBcaNyKmImu3CHJkDftkR2VshqPMflr6Es2wB28IciP25zVY4SBo4 UXhH1zTcF08426QN0zD8Ys/kD8UYayhCRgHELxClW4okrcWeedetPI= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; s=default; bh=ZLGwizbpEvQK9hFYeJ1Iut4L/QY=; b=ZqSEK7PiWPxTT08m+t+QEMZ/gFK2 3iDI+JNmdfLOnecmR9z5cAs01FxjrzpOTn8GvzRm93P3uWNMX8nGEi6UWDmQEKPR vu1ECXpu7f7Ru0hJGiTB01f76DdMATeFB1p/bm0dx6+0ryYRqNDCTlBUI1c/y88/ XQjrr/jP7YWV69s= Received: (qmail 129014 invoked by alias); 29 Aug 2019 16:54:06 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 128965 invoked by uid 89); 29 Aug 2019 16:54:05 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3 autolearn=ham version=3.3.1 spammy= X-HELO: esa2.hgst.iphmx.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1567097647; x=1598633647; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=+J/T+NIuBzdwf4W5K5OKObTi2MmZuE3h2GZbKO9PWfk=; b=K3XZXbX4BeGHQ9xmoFD6PX9ygwCExHLv9wiRDl+ezifSN+FPXS3oaZeb NHbKCXzbuVQfiQtCEoztdIOyhg+eotl96eDkp2JgxOmNCoBJCzDS4cyy1 e2ypnB4nILOaoXV3bjUAH/EF0z0mhf7S71rT78kc0Qco0q0oAPvwkCdZc 8OAg85FFvsqFnu+ob9WnHD74RUeD8lX9qugV9MwbOXC2PLfJuk1U+GySw FcKW/xebjHnOBSDAoqjUhMn0MGuKOhJPbBCBFe8in8pCdG4ixi52pU2f/ vX8jjDsgELur6JAK/al3SbDc9dDjO18y//00hogNq11PREMTFgBwnFGnu g==; IronPort-SDR: 9U04TZYx4kBOzMimHEWGESK7m4GR/AqzihBMg0BupWqqxTBJfHQHCzsFKvxqoNfvkJCWcO+G09 Uro0D/R352MHuNvKD1q1VnuueKD2tLsWzaZshoJNeZQAgEt3Xvgz3zgIImfAKhvfVbaVJ9dtuP Oepf+be4/UYSKyJnlXPt0p6OZjiQGSWmayxoQWTp/CITChXve+SHrkvy3wZBsPup2Khgrba2Y1 RMqxEPEf10NdPIvhQ1jPWhEFotf0IGnY1fXB8LQphRHLEvpNm4xoSmalENGnhEu14krlNBEA53 hdc= IronPort-SDR: BhBghGooJtpnw6yeCEZjJAc3nFng17FnfGY8UsK3mJVjgmXZaw6wOiH9aYnGIeTLvanqQT9Eg0 9O/MG6mXRyosbL6si+AatwV+8ddIFVT+8cEzD3DU7Ipg0A3HweFbLs0DVnBziZSmZXLTeitCZX G2ECrfi+K5iXcVbND4620wThcmGCLwF56/qbcq8qL9OmS9Vc/XVQAlfZZ4V7eno7iKvY2sm/wg /edjzVgJr/c79jU8L2L/NbXDNqdgmBWfPYONALX0wGpJuRJowgBb/We7bVnoK9ilO/4gzAcHob /1u36L9NyPLtMrdo9cDPptzr IronPort-SDR: 1hLMFe2CwTIqMsPdGwt2v18Ad6Je0c78ftw79Ctfnf3CDVx3l+kfqZxdrbB+3k3k7vH1EmprHM DGF0gW1wf2WrBjKvoshPODcZe9sgDPM6wJoqg5sZdocVQhO691qMxwJ+HfxOjymgjok/tiRt+p 9GZ+vWs19ZUEXq63ltqS7J2LeOjolY7zLYPl5yzXLBLIkt7ps3FtXZglIAqJF/Otmf5QxWWq96 AZBICvcSgT7TYSMDJ4WHAcrRSPJvG6hbgjltuqbUUb9U3SuUsDFlSiwXMsSabIjMxOytUj3l4V xL4= WDCIronportException: Internal From: Alistair Francis To: libc-alpha@sourceware.org Cc: arnd@arndb.de, adhemerval.zanella@linaro.org, fweimer@redhat.com, palmer@sifive.com, macro@wdc.com, zongbox@gmail.com, alistair.francis@wdc.com, alistair23@gmail.com Subject: [RFC v5 07/21] sysdeps/stat: Handle 64-bit ino_t types on 32-bit hosts Date: Thu, 29 Aug 2019 09:50:19 -0700 Message-Id: <1596e099b974615e2a7c9ff54c340ca791a40473.1567097252.git.alistair.francis@wdc.com> In-Reply-To: References: MIME-Version: 1.0 On a 32-bit platform with a 64-bit ino_t type (__INO_T_MATCHES_INO64_T defined) we want to update the stat struct to remove the padding as it isn't required. As we don't have the padding we also need to update the overflow checker to not access the undefined members. Signed-off-by: Alistair Francis * sysdeps/unix/sysv/linux/generic/bits/stat.h: Handle 64-bit ino_t types on 32-bit hosts. * sysdeps/unix/sysv/linux/generic/wordsize-32/overflow.h: Likewise. --- sysdeps/unix/sysv/linux/generic/bits/stat.h | 5 ++++- sysdeps/unix/sysv/linux/generic/wordsize-32/overflow.h | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/sysdeps/unix/sysv/linux/generic/bits/stat.h b/sysdeps/unix/sysv/linux/generic/bits/stat.h index e5c26501047..ddb1e593051 100644 --- a/sysdeps/unix/sysv/linux/generic/bits/stat.h +++ b/sysdeps/unix/sysv/linux/generic/bits/stat.h @@ -40,7 +40,10 @@ /* Versions of the `xmknod' interface. */ #define _MKNOD_VER_LINUX 0 -#if defined __USE_FILE_OFFSET64 +#if defined(__USE_FILE_OFFSET64) || __INO_T_MATCHES_INO64_T == 1 +# if __INO_T_MATCHES_INO64_T == 1 && __OFF_T_MATCHES_OFF64_T != 1 +# error "ino_t and off_t must both be the same type" +# endif # define __field64(type, type64, name) type64 name #elif __WORDSIZE == 64 # define __field64(type, type64, name) type name diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/overflow.h b/sysdeps/unix/sysv/linux/generic/wordsize-32/overflow.h index 6c17047e4c6..d402d139329 100644 --- a/sysdeps/unix/sysv/linux/generic/wordsize-32/overflow.h +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/overflow.h @@ -36,12 +36,16 @@ static inline off_t lseek_overflow (loff_t res) static inline int stat_overflow (struct stat *buf) { +#if defined (__INO_T_MATCHES_INO64_T) + return 0; +#else if (buf->__st_ino_pad == 0 && buf->__st_size_pad == 0 && buf->__st_blocks_pad == 0) return 0; __set_errno (EOVERFLOW); return -1; +#endif } /* Note that f_files and f_ffree may validly be a sign-extended -1. */ From patchwork Thu Aug 29 16:50:21 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1155401 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-104872-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="gahtZXnI"; dkim=pass (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="gjGHc2e9"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46K7yS5364z9s4Y for ; Fri, 30 Aug 2019 02:55:12 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; q=dns; s= default; b=TqkB5OUr8NwHIOEHLOoC/uAdUT2tej+Jyj4iOQBYoBuH7XAM7I1Qf 9daMZQpQeITQcZ/f8ZqktgW7c3t0ApdufBhXXa1W+c9xSxEppYnSUAnBGYpFHcsC SpkGBAq7j4I2fKnsMLEbMcgDXe+Bb6qJOe8pVep9LQnLfP2YiauFMU= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; s=default; bh=Qg19g2FTPzSirKUEzgqGf8DjBU4=; b=gahtZXnIv53QoKp63ten7yvOSzEM Tj0R6St4X1NhC7NbtGyBeheZG96r+pHgOOner5S6F2rC0msznVPTnMe/CORHU6Lx 8A3pxqCK3fTqRukew6pi7nSNnQbizWEuqLRkGk1vxVW15Ux8hE7QwMZCc7xPQk3O 8UuxSetnQfpOYdM= Received: (qmail 129246 invoked by alias); 29 Aug 2019 16:54:08 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 129178 invoked by uid 89); 29 Aug 2019 16:54:07 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3 autolearn=ham version=3.3.1 spammy= X-HELO: esa2.hgst.iphmx.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1567097647; x=1598633647; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=dEg7jNE0m7kAY/tN/vHvlQluQ5qOv6sv/OB/Pun5f74=; b=gjGHc2e9U5jl3OwG+sVH6WMoZig6HzLFF4Ar3Uii3XPIO5vEf587w31+ Gnd3wd0A5k54l4bC60BW2iDSlo814aDVhUh4fZ3u96esQErFVqXfqQVwE NYH7XPf/I6DORCVv/6viwxuqky3SwTD9PbTh2X9Z+dPoas90ne11lE5J3 01z8XT1cs3m4haYicP8yzmH4V1qA2gcQczbLTZ1lgfiYsOy2hGG874Qxu PhwS7vS/krFD7BCVqyQYTK+4uaeeiTS2cEYJYr0ZpOCxs+HK6ikIr8hed FtC2YqD5PTkgyPMlfS8OsimrYMwMRwY805OfPPecT5sd2qL2QQPhMio8r Q==; IronPort-SDR: dIFZhNSMjXvFp34FW+EBIJFfayCW9L40HXpJswkuYuO0bkwCdtliILZFLGa7nU5OwVwvUchz1o D6cXxYCWu2oVVX9v7caZAQ9t09SJTBiyzrDh/F/v4fT45QNNAs7ZXeAIlNbft3JJfKjrEJqajE pE9Wa7WG03FJ1z8YPnpPakhJLRIBVrb2BOAFfj5eRBKy1feIYHKqcUAKKtg3gxzoBhJi3M3nVu C/jM76b5fMR6FosiV2nZf2fupvwDfmyCar0jz6i5lk1bJEhYg1IYD0hn5TQg27e5Ds5eAQd2PV yJ0= IronPort-SDR: ibnOhlJfH4gpWjiKLC2bcnPQv5FzPTpUBWjdaqEURZl4RQg4LIQVOxoe8R+ESzyFKOw7Yio2J7 11yP6Yv4vkQTOcIc/rjk7DYFMmh6UCB2zxliNqpD0gf/3n8oft47zg1vp3o07K9cuAqO6c+M+7 LZyKI+HM8z0Cuj3oZ4ELlAfQ1u98ypXjR9Ka3DmERV1pt/1PoddS3477IM2U41GM/8cFOXdZQT XoRibDmGrfuKMElwF4BWLsGMuhBf/AsRO587MBhm2Px3rUeT1a3oJEBdo5OzhYfqov2OHLXZzL Vu8ZrrQb1xk5Y1PdBeXGS6S+ IronPort-SDR: RSJPN0qIpdOGpd8ICIDLp1aLfPb+XX3VlOrKBp8QSmGgqm9gqwQGlf/MrISV5Htu3URyR/wk6o 0x3B+4I9DfnC1SlpUI+vEbADl65QRxCjzVAZoF8eou6KHaYW8Mc0nLBZsgk1pPjECT6+DUtUwr kMIGYieVpuRdHq0e6mLKoOSFn/vL+u8gTK+JuTOnHcAPZvhDsNTgolw47wZI7tguJ2B+AhbfvS p8TLo8jH/d/uUYlxA0V4vmCON3c4uj+FeOyfmxpg809LYnZ4kVSM+iznVMmyRgdmxOkKy/tIxK UOU= WDCIronportException: Internal From: Alistair Francis To: libc-alpha@sourceware.org Cc: arnd@arndb.de, adhemerval.zanella@linaro.org, fweimer@redhat.com, palmer@sifive.com, macro@wdc.com, zongbox@gmail.com, alistair.francis@wdc.com, alistair23@gmail.com Subject: [RFC v5 08/21] sysdeps/statfs: Handle 64-bit ino_t types on 32-bit hosts Date: Thu, 29 Aug 2019 09:50:21 -0700 Message-Id: <7aad2cad9fddcadf91a6b91b348029a8801554eb.1567097252.git.alistair.francis@wdc.com> In-Reply-To: References: MIME-Version: 1.0 On a 32-bit platform with a 64-bit ino_t type (__INO_T_MATCHES_INO64_T defined) we want to update the statfs struct to remove the padding as it isn't required. As we don't have the padding we also need to update the overflow checker to not access the undefined members. Signed-off-by: Alistair Francis * sysdeps/unix/sysv/linux/generic/bits/statfs.h: Handle 64-bit ino_t types on 32-bit hosts. * sysdeps/unix/sysv/linux/generic/wordsize-32/overflow.h: Likewise. --- sysdeps/unix/sysv/linux/generic/bits/statfs.h | 5 ++++- sysdeps/unix/sysv/linux/generic/wordsize-32/overflow.h | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/sysdeps/unix/sysv/linux/generic/bits/statfs.h b/sysdeps/unix/sysv/linux/generic/bits/statfs.h index 77de4d2fd00..a22e059ddc6 100644 --- a/sysdeps/unix/sysv/linux/generic/bits/statfs.h +++ b/sysdeps/unix/sysv/linux/generic/bits/statfs.h @@ -32,7 +32,10 @@ using __USE_FILE_OFFSET64 only see the low 32 bits of some of the fields (the __fsblkcnt_t and __fsfilcnt_t fields). */ -#if defined __USE_FILE_OFFSET64 +#if defined(__USE_FILE_OFFSET64) || __INO_T_MATCHES_INO64_T == 1 +# if __INO_T_MATCHES_INO64_T == 1 && __OFF_T_MATCHES_OFF64_T != 1 +# error "ino_t and off_t must both be the same type" +# endif # define __field64(type, type64, name) type64 name #elif __WORDSIZE == 64 # define __field64(type, type64, name) type name diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/overflow.h b/sysdeps/unix/sysv/linux/generic/wordsize-32/overflow.h index d402d139329..4c2e43f9d67 100644 --- a/sysdeps/unix/sysv/linux/generic/wordsize-32/overflow.h +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/overflow.h @@ -51,6 +51,9 @@ static inline int stat_overflow (struct stat *buf) /* Note that f_files and f_ffree may validly be a sign-extended -1. */ static inline int statfs_overflow (struct statfs *buf) { +#if defined (__INO_T_MATCHES_INO64_T) + return 0; +#else if (buf->__f_blocks_pad == 0 && buf->__f_bfree_pad == 0 && buf->__f_bavail_pad == 0 && (buf->__f_files_pad == 0 @@ -61,4 +64,5 @@ static inline int statfs_overflow (struct statfs *buf) __set_errno (EOVERFLOW); return -1; +#endif } From patchwork Thu Aug 29 16:50:24 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1155402 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-104873-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="SR4cXVGf"; dkim=pass (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="OfKQ1v/C"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46K7yf3lw9z9s4Y for ; Fri, 30 Aug 2019 02:55:22 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; q=dns; s= default; b=kvbmeI4jeGpLBM9zL3sbOlpNOaP6KALN3m+ZU+SngUHTr1CwQEwM8 SnFQvvFDva/XBH7z553o2/7sTUDJtD4rRTC/FM1nKTuIgDQdoYEghpDXNecaQ0HN wqZK1OAUnOKEvYBOsGvShA7HosVRFBRulUI8461gRZNQKek6plePwc= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; s=default; bh=yHraQA6I+Hd/2AwMOb7VCtd/kpE=; b=SR4cXVGfQPeb/UmVfkBg9XJthBmY cxKLKWVSctCJPWnyNErkGkisjcF9YiqXdxFw3J+bAZtEFy8hcCg3qhyTJjJF3zDz f5Xc5hUP8x1JJnVn5jhbacKIT+huIsE5w2F9x4t0MZHV4Q32ltKlxP2/VGCIzQuD 8AmcJnBqjepcrY0= Received: (qmail 129479 invoked by alias); 29 Aug 2019 16:54:09 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 129422 invoked by uid 89); 29 Aug 2019 16:54:09 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3 autolearn=ham version=3.3.1 spammy= X-HELO: esa2.hgst.iphmx.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1567097648; x=1598633648; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=HqCs9mljejUqK46ye1EehWb5Jfx69yt+AgR0PlTUnus=; b=OfKQ1v/CfeNrAMwUM7vqVao5k3UxRxcVM8cAIWZt0Ub572vp5erXMZLR 2wx9bQcsae15lV1d6hYjekt8NqHuRaH+5Acd9x90wgkN3fwaYLHTbhVWX uzjYiZ5SqmxJiIhzYG5o9wth5F0RRaV9c1BDAQaK2J6EipOlIZjzYAe7P s44jNmGNqnOQE+y9hu1xHWzLwp+NF7jPUzkuQ6c/+yN9+IjgXQ6jqkbuW Ou/eFvgnku12TAQ9QqH8BuWggiagbWYbaoMkCnkjemQD3+pmCDo+guypS sjB++7Wlcwwlwz2Iu3n1CyN/Y7mWu0IAVYqriKyC+2ebkRqyysTQTcxk1 w==; IronPort-SDR: H6OeYYjl/izHzSx5HKTBi1d6zc3Uxl5L12URkZF679+udOsU/iTuFKlWPl/y5XAwLe8PLlT3X7 mjr+rEzwTFGyf7okmdFeXL0NQc2qJY1auvbFEbErSugIYIt+HOq0Tqh6dH8HjTX+Tfk5JAe7Pc ZFBEtuYsyIaGARLLAUDzmkS7LdZqqQkufHt0RNr/1lxfSOojvfksIWCgjHcgfx50b8+keEVMKt q5yuAwh7mq2XIQGqEO+1JNtDphh6tDlk9jsOQGXJJHSBNVc3r9i1Bbg4Q8Lie59l7NqWwv4b+Y Lkk= IronPort-SDR: rTlW6VRnUkp2Ci5kHEZvahk/RY14HilkngJ0oxqoHDFuDLinJ5+XYwDAXnW+GuqQvSp/gSxpZv 61Yzmkd4uD29laN+XD3VhTssNUvYWdIp9odTvk2u19x5udKnyrzr1zphZ2zUfRgltHECd1310p cUJjoOMhDijbXjruWL3drHzsA0MBBLuITbrfHEqBAQkT+qi3DQY89SiXbmaJ08CMxr0yDHtyzU uOBb8H8OluGeZTMzDwqoucmkoHNds5T7M1OiC2WpseJBOUiFUm63+0YSKEdT4Uc7Ni1aN7Lo4Y s6xcAggBScxA0uiNFmMsZ4ag IronPort-SDR: cW5Lg2xB4NECNecxUv/BziRgvZ/NO+PqM0iI9eyxa5NCv4eIQbeTqttsf/Y5knLpeSDnUArnub y7ts5H8F5AWTSHiA69z/6jSfy3fQOqAaLCNhS5W7c+5bz53DFgygE9c/80RCpN1+GoffneJFAs 11sZ0t1eBchvTKdR1KOHy3HQPAYG3GfbbAQDXoVAmfwkO7jRN65YCug1dZh7iya3YQ4Z+v5zFg Bo5lLqvdWxItZpy7sQJXVVedO7ki1IO3Nvt/8EohBCB+Qmh74jPB+hubPp+TC6WASLlK37Ye6y 4c8= WDCIronportException: Internal From: Alistair Francis To: libc-alpha@sourceware.org Cc: arnd@arndb.de, adhemerval.zanella@linaro.org, fweimer@redhat.com, palmer@sifive.com, macro@wdc.com, zongbox@gmail.com, alistair.francis@wdc.com, alistair23@gmail.com Subject: [RFC v5 09/21] Documentation for the RISC-V 32-bit port Date: Thu, 29 Aug 2019 09:50:24 -0700 Message-Id: <6d3075596bd48a23feef178dfb56f416c5892072.1567097252.git.alistair.francis@wdc.com> In-Reply-To: References: MIME-Version: 1.0 From: Zong Li There are RISC-V 64-bit port information in these documentations. I add the small documentation entries about the RISC-V 32-bit port together. Signed-off-by: Alistair Francis --- NEWS | 6 ++++++ README | 1 + 2 files changed, 7 insertions(+) diff --git a/NEWS b/NEWS index a64b89986ac..289ff0404ee 100644 --- a/NEWS +++ b/NEWS @@ -21,6 +21,12 @@ Major new features: 18661-1:2014 and TS 18661-3:2015 as amended by the resolution of Clarification Request 13 to TS 18661-3. +* Support RISC-V port for 32-bit. The ISA and ABI pairs supported as follows: + + - rv32imac ilp32 + - rv32imafdc ilp32 + - rv32imafdc ilp32d + Deprecated and removed features, and other changes affecting compatibility: * The totalorder and totalordermag functions, and the corresponding diff --git a/README b/README index eb9b0b34a35..2dc80d0062e 100644 --- a/README +++ b/README @@ -38,6 +38,7 @@ The GNU C Library supports these configurations for using Linux kernels: powerpc64*-*-linux-gnu Big-endian and little-endian. s390-*-linux-gnu s390x-*-linux-gnu + riscv32-*-linux-gnu riscv64-*-linux-gnu sh[34]-*-linux-gnu sparc*-*-linux-gnu From patchwork Thu Aug 29 16:50:27 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1155405 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-104874-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="QH/Z2scy"; dkim=pass (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="Mb1lnZB7"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46K7yq4fBzz9s4Y for ; Fri, 30 Aug 2019 02:55:31 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; q=dns; s= default; b=kXJemgM+b3oMv7VsGZHfPxGuvXcfpDCOtkSBnDWQzSVobd3tar2a4 Bsyge0l6zhlnYVQHlsp9QRWGpHPNuF8UIFn0F5HQkXOLvGxbHLKsg8z92z5T5cDu DNrJOEvbKsPO4NG1DKwlfsW2FuaL0gW74M8mhgCJpTyquuuhHpsgU4= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; s=default; bh=iGc19ZQ89rwWJ49lX3zDz0xEOHo=; b=QH/Z2scyyCsBU9w+GxleMW0besgl YFtrrzz2MkWnCRFM/ke64xnixjU22D4mNQJQM0lE9Gn1/6mfeHwjDmyiWRYj84UM Ittju6hpEISBiEpiBEA9uOqgPVbrOsvd+j86g0eyFRDWo+Oe86fkLRkInTGXNKQM YIHyqRaL/2j0jYo= Received: (qmail 130224 invoked by alias); 29 Aug 2019 16:54:15 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 130163 invoked by uid 89); 29 Aug 2019 16:54:15 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.3 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_NUMSUBJECT, KAM_SHORT autolearn=ham version=3.3.1 spammy=vary X-HELO: esa2.hgst.iphmx.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1567097652; x=1598633652; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=DpLW28vMMdXvkIh3fT59oojBcxvrwOYgudUdU18ZUl8=; b=Mb1lnZB7FzeZjvqfCEo9QgMAAuYxEhRyqNkj5/OqbS82M8UGeNV8f5B9 LZn03lDWsZUA3fwkA1+g4fnQmxPpuB3txqonSbi/FW5GHbFmlX8AD9bcZ islKju4tVnHTwPa8Ou2HB++DoBQLUedr6xyb884Tp2MroJTZ7zjhkk+Rr DseIYXNwQh8PrajwFN5/igV6YZQm1F2OHLptWqIvIt5mFxzan89joi3lL QS1dE7D6XdnPq+In5KQoQX1LrGDScl+Ej0zpuDEElhLkYDlx8mivmBmIr 2eq52hJB4gpXNo4KRiC+JDWt/O3cdMAV+RZt4npkcR/SYVvVyUav+ttzd A==; IronPort-SDR: gr1ELupK3ity2TkYx8M9L+GCh0+2+bUdpO83R5d1eDVeXaR7WTjV3V8yPV4VWP3G8JWHZSSELe TLwGPi7Rr5wT7pmPVbncY2DrxEEx+TPFl/oAPdsRz4hAtoqSe4jf1QL3TxlachROr1Yu9i7ppk TuvfJAmMZykTv+lglAFK5T96SyakqwTbnkzod+OljGVXMLfJM2bAfHiqpEYcuwVoNYRfhTtEjO BgpFkCE/jNOzoY+MkeZuxftoTgc40wGtK1jAXD4xzYfxTSRIuCaEV4Of8c3PCHuppY7g2bi+/l vYw= IronPort-SDR: 5yARau52RnGMardWLtnEHkG0VxosMmUcsD1OervaEUaeJ1rKzZs9s0i6lUzqpbOcTu0nvU9jzt IoSMI+RUBDJpNiXZ5x3GBhz7ice8LMbChItEJxnsJGrinOUXFgSzvAUI/mlCcu6EFvAgiqhgEC WnYqSxhhkkcgIFCdLMv3rVbZYteZ+DLBf1iw/SZzbXROjfCFhitut31aHYds29vwatq2CPle8a nu59jkdRqSwmCCwThdOdhvpv/gt7e/MlzWxLmrFDS8PYS9p5g+R0Exv0qN3pIqNDSbv4rPBA+X hvH1PbPrvgwJ/s63OnR1qir7 IronPort-SDR: 51ZXmlulVtiSg3XzosFu514FIfMauwrXsMe5nleuUtpD99OygwwiPUlbnJtX/E6PkIwDU3CNGp nYgp6Z+vdzr4mcKck+dXTuYpCsj6zYjzrb4DwcbD6sjhKSDhfl8QQd/pp7aVGFawlI/W1VSnDV PRDF0UTXzsprvTHLN1ebQCwaLbpEFvsiVf35VWPkISWHqJreaqudrGGAYIEGYHMcDPAOdi5Yf+ ObtuVNvj9Z08DKDiU4qFNd5GqsoM87Je9g+ms3yv66ii8wVv27usfETpC9jCw02lhtzaZY1b5q CZQ= WDCIronportException: Internal From: Alistair Francis To: libc-alpha@sourceware.org Cc: arnd@arndb.de, adhemerval.zanella@linaro.org, fweimer@redhat.com, palmer@sifive.com, macro@wdc.com, zongbox@gmail.com, alistair.francis@wdc.com, alistair23@gmail.com Subject: [RFC v5 10/21] RISC-V: Use 64-bit time_t and off_t for RV32 and RV64 Date: Thu, 29 Aug 2019 09:50:27 -0700 Message-Id: <7e585a3acbff99e4688f325b87838e4d6a53db9c.1567097252.git.alistair.francis@wdc.com> In-Reply-To: References: MIME-Version: 1.0 Using the original glibc headers under bits/ let's make small modifications to use 64-bit time_t and off_t for both RV32 and RV64. For the typesizes.h, here are justifications for the changes from the generic version (based on Arnd's very helpful feedback): - All the !__USE_FILE_OFFSET64 types (__off_t, __ino_t, __rlim_t, ...) are changed to match the 64-bit replacements. - __time_t is defined to 64 bit, but no __time64_t is added. This makes sense as we don't have the time64 support for other 32-bit architectures yet, and it will be easy to change when that happens. - __suseconds_t is 64-bit. This matches what we use the kerne ABI for the few drivers that are relying on 'struct timeval' input arguments in ioctl, as well as the adjtimex system call. It means that timeval has to be defined without the padding, unlike timespec, which needs padding. Signed-off-by: Alistair Francis * sysdeps/unix/sysv/linux/riscv/bits/environments.h: Use 64-bit time_t and off_t for RV32 and RV64. * sysdeps/unix/sysv/linux/riscv/bits/time64.h: Likewise. * sysdeps/unix/sysv/linux/riscv/bits/timesize.h: Likewise. * sysdeps/unix/sysv/linux/riscv/bits/typesizes.h: Likewise. * sysdeps/unix/sysv/linux/riscv/kernel_stat.h: Likewise. --- .../unix/sysv/linux/riscv/bits/environments.h | 85 +++++++++++++++++++ sysdeps/unix/sysv/linux/riscv/bits/time64.h | 36 ++++++++ sysdeps/unix/sysv/linux/riscv/bits/timesize.h | 22 +++++ .../unix/sysv/linux/riscv/bits/typesizes.h | 84 ++++++++++++++++++ sysdeps/unix/sysv/linux/riscv/kernel_stat.h | 23 +++++ 5 files changed, 250 insertions(+) create mode 100644 sysdeps/unix/sysv/linux/riscv/bits/environments.h create mode 100644 sysdeps/unix/sysv/linux/riscv/bits/time64.h create mode 100644 sysdeps/unix/sysv/linux/riscv/bits/timesize.h create mode 100644 sysdeps/unix/sysv/linux/riscv/bits/typesizes.h create mode 100644 sysdeps/unix/sysv/linux/riscv/kernel_stat.h diff --git a/sysdeps/unix/sysv/linux/riscv/bits/environments.h b/sysdeps/unix/sysv/linux/riscv/bits/environments.h new file mode 100644 index 00000000000..bdbf18fca09 --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/bits/environments.h @@ -0,0 +1,85 @@ +/* Copyright (C) 1999-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _UNISTD_H +# error "Never include this file directly. Use instead" +#endif + +#include + +/* This header should define the following symbols under the described + situations. A value `1' means that the model is always supported, + `-1' means it is never supported. Undefined means it cannot be + statically decided. + + _POSIX_V7_ILP32_OFF32 32bit int, long, pointers, and off_t type + _POSIX_V7_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type + + _POSIX_V7_LP64_OFF32 64bit long and pointers and 32bit off_t type + _POSIX_V7_LPBIG_OFFBIG 64bit long and pointers and large off_t type + + The macros _POSIX_V6_ILP32_OFF32, _POSIX_V6_ILP32_OFFBIG, + _POSIX_V6_LP64_OFF32, _POSIX_V6_LPBIG_OFFBIG, _XBS5_ILP32_OFF32, + _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and _XBS5_LPBIG_OFFBIG were + used in previous versions of the Unix standard and are available + only for compatibility. +*/ + +#if __WORDSIZE == 64 + +/* We can never provide environments with 32-bit wide pointers. */ +# define _POSIX_V7_ILP32_OFF32 -1 +# define _POSIX_V7_ILP32_OFFBIG -1 +# define _POSIX_V6_ILP32_OFF32 -1 +# define _POSIX_V6_ILP32_OFFBIG -1 +# define _XBS5_ILP32_OFF32 -1 +# define _XBS5_ILP32_OFFBIG -1 +/* We also have no use (for now) for an environment with bigger pointers + and offsets. */ +# define _POSIX_V7_LPBIG_OFFBIG -1 +# define _POSIX_V6_LPBIG_OFFBIG -1 +# define _XBS5_LPBIG_OFFBIG -1 + +/* By default we have 64-bit wide `long int', pointers and `off_t'. */ +# define _POSIX_V7_LP64_OFF64 1 +# define _POSIX_V6_LP64_OFF64 1 +# define _XBS5_LP64_OFF64 1 + +#else /* __WORDSIZE == 32 */ + +/* RISC-V requires 64-bit off_t + # undef _POSIX_V7_ILP32_OFF32 + # undef _POSIX_V6_ILP32_OFF32 + # undef _XBS5_ILP32_OFF32 + */ + +# define _POSIX_V7_ILP32_OFFBIG 1 +# define _POSIX_V6_ILP32_OFFBIG 1 +# define _XBS5_ILP32_OFFBIG 1 + +/* We can never provide environments with 64-bit wide pointers. */ +# define _POSIX_V7_LP64_OFF64 -1 +# define _POSIX_V7_LPBIG_OFFBIG -1 +# define _POSIX_V6_LP64_OFF64 -1 +# define _POSIX_V6_LPBIG_OFFBIG -1 +# define _XBS5_LP64_OFF64 -1 +# define _XBS5_LPBIG_OFFBIG -1 + +/* CFLAGS. */ +#define __ILP32_OFFBIG_CFLAGS "-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" + +#endif /* __WORDSIZE == 32 */ diff --git a/sysdeps/unix/sysv/linux/riscv/bits/time64.h b/sysdeps/unix/sysv/linux/riscv/bits/time64.h new file mode 100644 index 00000000000..4be26d32d47 --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/bits/time64.h @@ -0,0 +1,36 @@ +/* bits/time64.h -- underlying types for __time64_t. Generic version. + Copyright (C) 2018-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _BITS_TYPES_H +# error "Never include directly; use instead." +#endif + +#ifndef _BITS_TIME64_H +#define _BITS_TIME64_H 1 + +/* Define __TIME64_T_TYPE so that it is always a 64-bit type. */ + +#if __WORDSIZE == 64 +/* If we already have 64-bit time type then use it. */ +# define __TIME64_T_TYPE __TIME_T_TYPE +#else +/* Define a 64-bit time type alongsize the 32-bit one. */ +# define __TIME64_T_TYPE __SQUAD_TYPE +#endif + +#endif /* bits/time64.h */ diff --git a/sysdeps/unix/sysv/linux/riscv/bits/timesize.h b/sysdeps/unix/sysv/linux/riscv/bits/timesize.h new file mode 100644 index 00000000000..150af80f86f --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/bits/timesize.h @@ -0,0 +1,22 @@ +/* Bit size of the time_t type at glibc build time, general case. + Copyright (C) 2018-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include + +/* RV32 and RV64 both use 64-bit time_t */ +#define __TIMESIZE 64 diff --git a/sysdeps/unix/sysv/linux/riscv/bits/typesizes.h b/sysdeps/unix/sysv/linux/riscv/bits/typesizes.h new file mode 100644 index 00000000000..bd52fd9e2a6 --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/bits/typesizes.h @@ -0,0 +1,84 @@ +/* bits/typesizes.h -- underlying types for *_t. Generic version. + Copyright (C) 2002-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _BITS_TYPES_H +# error "Never include directly; use instead." +#endif + +#ifndef _BITS_TYPESIZES_H +#define _BITS_TYPESIZES_H 1 + +/* See for the meaning of these macros. This file exists so + that need not vary across different GNU platforms. */ +#define __DEV_T_TYPE __UQUAD_TYPE +#define __UID_T_TYPE __U32_TYPE +#define __GID_T_TYPE __U32_TYPE +#define __INO_T_TYPE __UQUAD_TYPE +#define __INO64_T_TYPE __UQUAD_TYPE +#define __MODE_T_TYPE __U32_TYPE +#define __NLINK_T_TYPE __U32_TYPE +#define __OFF_T_TYPE __SQUAD_TYPE +#define __OFF64_T_TYPE __SQUAD_TYPE +#define __PID_T_TYPE __S32_TYPE +#define __RLIM_T_TYPE __UQUAD_TYPE +#define __RLIM64_T_TYPE __UQUAD_TYPE +#define __BLKCNT_T_TYPE __SQUAD_TYPE +#define __BLKCNT64_T_TYPE __SQUAD_TYPE +#define __FSBLKCNT_T_TYPE __UQUAD_TYPE +#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE +#define __FSFILCNT_T_TYPE __UQUAD_TYPE +#define __FSFILCNT64_T_TYPE __UQUAD_TYPE +#define __FSWORD_T_TYPE __SWORD_TYPE +#define __ID_T_TYPE __U32_TYPE +#define __CLOCK_T_TYPE __SLONGWORD_TYPE +#define __TIME_T_TYPE __SQUAD_TYPE +#define __USECONDS_T_TYPE __U32_TYPE +#define __SUSECONDS_T_TYPE __SQUAD_TYPE +#define __DADDR_T_TYPE __S32_TYPE +#define __KEY_T_TYPE __S32_TYPE +#define __CLOCKID_T_TYPE __S32_TYPE +#define __TIMER_T_TYPE void * +#define __BLKSIZE_T_TYPE __S32_TYPE +#define __FSID_T_TYPE struct { int __val[2]; } +#define __SSIZE_T_TYPE __SWORD_TYPE +#define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE +#define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE +#define __CPU_MASK_TYPE __ULONGWORD_TYPE + +/* Tell the libc code that off_t and off64_t are actually the same type + for all ABI purposes, even if possibly expressed as different base types + for C type-checking purposes. */ +# define __OFF_T_MATCHES_OFF64_T 1 + +/* Same for ino_t and ino64_t. */ +# define __INO_T_MATCHES_INO64_T 1 + +/* And for rlim_t and rlim64_t. */ +# define __RLIM_T_MATCHES_RLIM64_T 1 + +/* Define these as RV32 requires 64-bit syscall. */ +#if __riscv_xlen == 32 +#define __ASSUME_TIME64_SYSCALLS 1 +#define __ASSUME_RLIM64_SYSCALLS 1 +#endif + +/* Number of descriptors that can fit in an `fd_set'. */ +#define __FD_SETSIZE 1024 + + +#endif /* bits/typesizes.h */ diff --git a/sysdeps/unix/sysv/linux/riscv/kernel_stat.h b/sysdeps/unix/sysv/linux/riscv/kernel_stat.h new file mode 100644 index 00000000000..16a378332bd --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/kernel_stat.h @@ -0,0 +1,23 @@ +/* Copyright (C) 2011-2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include + +#define STAT_IS_KERNEL_STAT 1 + +#define XSTAT_IS_XSTAT64 1 +#define STATFS_IS_STATFS64 0 From patchwork Thu Aug 29 16:50:29 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1155406 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-104875-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="iuasqLba"; dkim=pass (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="f4pi7Xhr"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46K7z13Lqfz9s4Y for ; Fri, 30 Aug 2019 02:55:41 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; q=dns; s= default; b=GvY5BQwPPgvGfmRkVD44a3LqtLcY6tj2pOxKfLrJtNrI105rA2+/K XEwjNKlpLgwK46LdKcm1KaXIduY8OnRaQ58gmHNxbboiRB4yr6jfrX3M5aydJZfe D1OHWl+5ef6R47BoTTUwp/QFYG92b4sJCAJCT7vgkDXj9vCVES6org= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; s=default; bh=RcZwmMRjPprqixaoHvK1sFYgyNk=; b=iuasqLbarqqpOYfs7ZluKUtW+kMi nzzkDAQq0Lu9dXXz2bvSMhi/nI/X8B5/ftRmuF2vwuuL333pJa+w3XNQ8N+MGONV 6qBJ0F4Z6cfHvTS7KyWBXok/FAHQ13ve0Omkws7vCyR5UUjbtuYR15OUvjrz+Qr0 OdT3wBu0bsafX7o= Received: (qmail 130317 invoked by alias); 29 Aug 2019 16:54:16 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 130235 invoked by uid 89); 29 Aug 2019 16:54:15 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3 autolearn=ham version=3.3.1 spammy=HContent-Transfer-Encoding:8bit X-HELO: esa2.hgst.iphmx.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1567097656; x=1598633656; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=d1q3vvc2upVDyQPjrUomjwasFOE79nfGop+oqYZxBJQ=; b=f4pi7XhrFjGEQMa9xWYCKDMNgGO9h2m3a7J6QY5/EkSEX8UsdVAH4EUb JgsFyR4ek0GrSCNZ9XdJqmQmW6M8KjyEknJgZv3OZZmVO0cpwWd0l9bNg Zer73xi+wVjph4uJ6JNRjoRrXv1zbSxqtiR8Hzmm2sl4Jd6AuPZcjVQw0 RfiEu1jWLVcKCO/vnKYxRnf8QKCih3uv2I7MmSUEnsH7QC4IVseOD5JXw k66faZkjJ3M8NZA4VcjTbPh5VBgOZhv7nLH8pjclWzkYBiXj5ay2vgBTv 6bOQ3VnPTzp3qEfYxys9q1qjqGg2qpGBXkIYmZ3AbWB9W/H9swHiXcwQC w==; IronPort-SDR: A1LaDBgY/q2j8DZIUg+KM9e8OwUnsKJP7drTQeI/g/sXNWYZvXWxN3kps4sWG1dcV7MdAcbuPq +belegb45FHXiTcVVLWTIINb9LToAJFTUM/8hHR8s039kvndQugSL2O/LjC8rbRPBtlcfXVjHl O+rg8e+hWNgY0ogbMvCtPf3GxXubE5fxGSOYYYs4y3LKfXfyN3TQReZWFMD222csnEcvJCewPH ScCuXoa7c5ZWUd23JM/VYiKKBdf8QRBXGjgv1SrE00w4p4QIhDqOKnceh9xW7zaD5zWWsEsYF3 d4U= IronPort-SDR: 9zbuS4OuW6V3I2yGr+BEHJuMHqYdaBdoyRhMPTNcyVoVjAKfv25Vzgox+Eg+W4XlVBGUFq+Qhb hE1GKnpDOABTNpbW+qaSFzTHZdNxLZNg/EMMVu0uuCmBVQq7ATiaKmzYEgUc142Nd84S0fWDDh ubBlIC9Nql40y/3/IoPXShbJHjLAUcqD3JopceU6tuCYxB/qsrSfcr8p7Oen5RUjJ2h7ZLOrv9 l7DT0e6aqsn4wOW9ovGuvItFdgYMNFV6C+egxTyWQhG/c8+enxAoKowyaJfrG6T8gQoDnlUh09 k84nevoiq6et1LV8/lzlwGJv IronPort-SDR: DYCjKb25634u9EnBMXXwAKHOTKID8EEhxeKp439OxSPegFfylQnLt1tYxdFe9p1KtE/u86UnZ4 PFg8Gr3qMn865YV4jJrYDH3x5uAN8wFLw7sfs+zv3IGAvhKw/a4x5ssmnwVhQXxVZICj9fP7MW EI5uV2o53RM4E/yRSvgkfeNDRYmSoR6dn8CREn7kMoxdnUMYNz4ixDYlV8QcPK6oStuLwZ7/y4 GmLDG3HZ+HfE4CUXCI2DDdUTmihK/CLJUAZoTY6hapKPqGR8TEXaGtU6PfpRm0gMT5/fVIG0+e 0rc= WDCIronportException: Internal From: Alistair Francis To: libc-alpha@sourceware.org Cc: arnd@arndb.de, adhemerval.zanella@linaro.org, fweimer@redhat.com, palmer@sifive.com, macro@wdc.com, zongbox@gmail.com, alistair.francis@wdc.com, alistair23@gmail.com Subject: [RFC v5 11/21] RISC-V: Define __NR_* as __NR_*_time64/64 for 32-bit Date: Thu, 29 Aug 2019 09:50:29 -0700 Message-Id: <21b59d7e48e05d1ce3f6e7c3c0c6063adb20a6b0.1567097252.git.alistair.francis@wdc.com> In-Reply-To: References: MIME-Version: 1.0 Signed-off-by: Alistair Francis * sysdeps/unix/sysv/linux/riscv/sysdep.h: Define __NR_* as __NR_*_time64/64 for 32-bit. --- sysdeps/unix/sysv/linux/riscv/sysdep.h | 73 ++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/sysdeps/unix/sysv/linux/riscv/sysdep.h b/sysdeps/unix/sysv/linux/riscv/sysdep.h index 5470ea3d2a6..169d4152ccd 100644 --- a/sysdeps/unix/sysv/linux/riscv/sysdep.h +++ b/sysdeps/unix/sysv/linux/riscv/sysdep.h @@ -116,6 +116,79 @@ #include +#if __riscv_xlen == 32 +/* Define the __NR_futex as __NR_futex64 as RV32 doesn't have a + * __NR_futex syscall. + */ +# ifndef __NR_futex +# define __NR_futex __NR_futex_time64 +# endif + +# ifndef __NR_rt_sigtimedwait +# define __NR_rt_sigtimedwait __NR_rt_sigtimedwait_time64 +# endif + +# ifndef __NR_ppoll +# define __NR_ppoll __NR_ppoll_time64 +# endif + +# ifndef __NR_utimensat +# define __NR_utimensat __NR_utimensat_time64 +# endif + +# ifndef __NR_pselect6 +# define __NR_pselect6 __NR_pselect6_time64 +# endif + +# ifndef __NR_recvmmsg +# define __NR_recvmmsg __NR_recvmmsg_time64 +# endif + +# ifndef __NR_semtimedop +# define __NR_semtimedop __NR_semtimedop_time64 +# endif + +# ifndef __NR_mq_timedreceive +# define __NR_mq_timedreceive __NR_mq_timedreceive_time64 +# endif + +# ifndef __NR_mq_timedsend +# define __NR_mq_timedsend __NR_mq_timedsend_time64 +# endif + +# ifndef __NR_timer_gettime +# define __NR_timer_gettime __NR_timer_gettime64 +# endif + +# ifndef __NR_timer_settime +# define __NR_timer_settime __NR_timer_settime64 +# endif + +# ifndef __NR_clock_getres +# define __NR_clock_getres __NR_clock_getres_time64 +# endif + +# ifndef __NR_clock_gettime +# define __NR_clock_gettime __NR_clock_gettime64 +# endif + +# ifndef __NR_timerfd_settime +# define __NR_timerfd_settime __NR_timerfd_settime64 +# endif + +# ifndef __NR_timerfd_gettime +# define __NR_timerfd_gettime __NR_timerfd_gettime64 +# endif + +# ifndef __NR_sched_rr_get_interval +# define __NR_sched_rr_get_interval __NR_sched_rr_get_interval_time64 +# endif + +# ifndef __NR_clock_adjtime +# define __NR_clock_adjtime __NR_clock_adjtime64 +# endif +#endif /* __riscv_xlen == 32 */ + #undef SYS_ify #define SYS_ify(syscall_name) __NR_##syscall_name From patchwork Thu Aug 29 16:50:32 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1155407 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-104876-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="MMN8T4P4"; dkim=pass (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="iniJwc2A"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46K7zB2xj8z9s4Y for ; Fri, 30 Aug 2019 02:55:50 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; q=dns; s= default; b=k97nOmOUw+mcJs6i5WFu1HGUCG1jjpkOv3FlhN2uH8jvU6vJ9sVVZ j563MBFJdDJw0WPgWRwX2ZRTNivFoLqDrKtOqWyzmYASfbL7NUEXKUNAxU1dSand 89pm/qmqCISE5APDykwW+UGm4QImJF5qA+562UAUpJNyW443qiKtfo= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; s=default; bh=l+t6S+eOv3i7723XVvKA4SYn1Ns=; b=MMN8T4P4Ba6kycaIVOv4wVcrPxia /0QKvrQfJ/rvZ0ztnV9XJ4i8bIj7z7jfBxvXogWUuL/eQE2fm9nDharW7EBd9Hkz G8svRIurlPJiQ/JJRn5Ui/P5oD5gMFSihKbVgFLWsx310cdyY5U/mDgV3fbmonbj Z/os3QQa0UQymD8= Received: (qmail 130504 invoked by alias); 29 Aug 2019 16:54:17 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 130454 invoked by uid 89); 29 Aug 2019 16:54:16 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3 autolearn=ham version=3.3.1 spammy=HX-Languages-Length:1855, HContent-Transfer-Encoding:8bit X-HELO: esa2.hgst.iphmx.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1567097658; x=1598633658; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=TP6F68VC9z+w9e50M50Y1KI1y9L0mRYzpT5FJ6ERkNo=; b=iniJwc2AF0FkZcOpwT/W413qMmK22UoO7j2Eo8VIlAUu6H1IjoFMdlUR P7LI7ttfNQHEM9BnYmkf2w2N4O/FApJfPJJ15aCXyrO1ds6G5dtrepMtE 76jrqa1bXbmburjFXOes/VrFzM/bA0T66v6ozF/TSrlcxo2hlvI8WUOrj m1zyFQP+Icx7+M2vN6KyoIpTweKBN6r/DlFrH88ANvkw8hE271OgUSYLq 4/H7OiWiiDk9TYUF8XSMr7rx2WDL4ArQN8fPoReh8GwPT6P2HadH+vQZK Ra8XyGdV05QQQ9wFQfaoQGITCGiqful+BC9nMbJHnBNNjM4IfkQ0/iCJ7 A==; IronPort-SDR: XTIITYHEKLYbki2h0gT9qisicgyfFjbBze5wieq/ZCFM5lfbd9emMJ0eIujlew136g/uUjeZLX 22ogFpTHutOZ8jBXThAFDx2scxe2alG05aS2iATBi6Oeg+HQ0lefBofzHxkWiOUTvIex9lRLW0 7igGK4eRPlUjieYFA3sdjAUs0D803MJSUGADHlLQAudu5FXZur4fZBEqX/4CIY6WPLQNUfb8Jv q1lBkGKewZAo4mM/I6mqoNo04jz4R/SrOygQZN377Fn8TVFd1cNpmAugaYUAbdr69csHT8Cl6u vnw= IronPort-SDR: nBONAgHcaZFphUlVYwKsKRZq+d6V9wUrsUUBZ8Jpg6W9jVIWrqhN3pmFnjmL0rRc58U/0odoLs xditrjhXIO1cFAcxlyK2QBL5lBBnX6AEpP3ePq1vr+Sv6iHXIzOZpKeQVx7g2pLSYHhjZEfcZK XJFez0iQ3NhvlR00o7+N6AgkPJy+KVynoZEZWuzfmT1Df60zUCF0z20Sb8okiN/ZV/jKh4DlxY TafiGa6GSwum1vsOpAxuo8Art76HzoSIP8o4oxnvAPY6VurfAGQMaQ6mOgOaPr+llZs8hfyeGs 7WPjymIGbFdC1Cpzrn+7I0oQ IronPort-SDR: UqXqUlG31DKvzgN8ZCzJuS9FSxzNqOKxAP/rouXaQ5/7uW//51k3Wl5HbGCa8izN6X45GzWqRm F7785mCUmus/9FJST1MX5Y6I7g7vqWbJgKO2T8kK9X3Qgw6pFDmPkbSEJ01UsfoAlIVDqDOkre BTGKCh6QvfMEdWMv2n56c3HRwgVKdYuMohmU9unTNjyZmyQjWFVAQszrM8Wxc+60mdpDEqmVd+ zVH6kHeCd/+C0vqBMpse7UsyZy4d0+TqefYfXDGYM8zGmCozZ3SDd2AscSfuJaWw8kXtR2ZR9i Wkk= WDCIronportException: Internal From: Alistair Francis To: libc-alpha@sourceware.org Cc: arnd@arndb.de, adhemerval.zanella@linaro.org, fweimer@redhat.com, palmer@sifive.com, macro@wdc.com, zongbox@gmail.com, alistair.francis@wdc.com, alistair23@gmail.com Subject: [RFC v5 12/21] RISC-V: Use 64-bit timespec in clock_gettime vdso calls Date: Thu, 29 Aug 2019 09:50:32 -0700 Message-Id: In-Reply-To: References: MIME-Version: 1.0 Signed-off-by: Alistair Francis * sysdeps/unix/sysv/linux/riscv/init-first.c: Use 64-bit timespec in clock_gettime vdso calls. * sysdeps/unix/sysv/linux/riscv/libc-vdso.h: Likewise. --- sysdeps/unix/sysv/linux/riscv/init-first.c | 2 +- sysdeps/unix/sysv/linux/riscv/libc-vdso.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sysdeps/unix/sysv/linux/riscv/init-first.c b/sysdeps/unix/sysv/linux/riscv/init-first.c index 98a8ce33adb..35dc8a8d386 100644 --- a/sysdeps/unix/sysv/linux/riscv/init-first.c +++ b/sysdeps/unix/sysv/linux/riscv/init-first.c @@ -24,7 +24,7 @@ long int (*VDSO_SYMBOL (getcpu)) (unsigned int *, unsigned int *, void *) attribute_hidden; long int (*VDSO_SYMBOL (gettimeofday)) (struct timeval *, void *) attribute_hidden; -long int (*VDSO_SYMBOL (clock_gettime)) (clockid_t, struct timespec *) +long int (*VDSO_SYMBOL (__clock_gettime64)) (clockid_t, struct __timespec64 *) attribute_hidden; long int (*VDSO_SYMBOL (clock_getres)) (clockid_t, struct timespec *) attribute_hidden; diff --git a/sysdeps/unix/sysv/linux/riscv/libc-vdso.h b/sysdeps/unix/sysv/linux/riscv/libc-vdso.h index 2373292ab9e..16905d5b78d 100644 --- a/sysdeps/unix/sysv/linux/riscv/libc-vdso.h +++ b/sysdeps/unix/sysv/linux/riscv/libc-vdso.h @@ -26,7 +26,7 @@ extern long int (*VDSO_SYMBOL (getcpu)) (unsigned int *, unsigned int *, void *) attribute_hidden; extern long int (*VDSO_SYMBOL (gettimeofday)) (struct timeval *, void *) attribute_hidden; -extern long int (*VDSO_SYMBOL (clock_gettime)) (clockid_t, struct timespec *) +extern long int (*VDSO_SYMBOL (__clock_gettime64)) (clockid_t, struct __timespec64 *) attribute_hidden; extern long int (*VDSO_SYMBOL (clock_getres)) (clockid_t, struct timespec *) attribute_hidden; From patchwork Thu Aug 29 16:50:35 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1155408 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-104877-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="khUM12Yh"; dkim=pass (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="QE54SC0C"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46K7zM4z6mz9s4Y for ; Fri, 30 Aug 2019 02:55:59 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; q=dns; s= default; b=VhKkW0sZGLjXc7nwhFjRNowyrGBbFFhrOPQcVDfmfy4PKekfigigr x5qoOrpAa8j+/X96Csv+FAIjiPB/1owvOMwSKZYkxXe+eOzhRFcezZk32DiO2Sos T/GR7flcnZajHpm2lc3rgoltHFR0uQEl/tU4ESqKhOBlaWi3zzElxI= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; s=default; bh=voRrIMdsnxYi/m9FNmniRnHosfE=; b=khUM12Yhx1N2fKwUU3W8zgK9shnt anzdFFv1TZCHj1tyqak7zmsTN9J4m5fKv39H2hBGb0bXxBZWYtPzPrIRz0S12WEG gwd4xk3cM8wDaXgbrQxN4g3uM6lhT7nJIX2ck+Ml1leV5Uam9QDn/ofNtPiThFJk ltho0Z5sDEUZ6kU= Received: (qmail 131062 invoked by alias); 29 Aug 2019 16:54:21 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 130995 invoked by uid 89); 29 Aug 2019 16:54:21 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3 autolearn=ham version=3.3.1 spammy=HX-Languages-Length:812, HContent-Transfer-Encoding:8bit X-HELO: esa2.hgst.iphmx.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1567097665; x=1598633665; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=TSw9lkxZ2iKcBYyijxs9nEYQh+NclvH1MRO8p6NMrj8=; b=QE54SC0CWmgz+ZeaKXeFqqlEpvy44bwjXCH/FDXg9O5klUMDOTsLt5Ps YZ+z9YuIb98jBOLO1OTUlPAx4JZya0LcobaaeLs7QrWq9azcUupnrd/3e fInAXrFvvbQ7S0h+Jh3ksxytkFSLzhJRvWX8HNEEvsfYINbw2KJF+JgPw IkM3GIDRWFYXuw7iwAP7rcUNXAcbamvWKJGuZpYWGMm4zOH2KMXNbzyu9 ZGIc1ETjeTYFfUupGRzB1Qm5TfsGywWRgboVA5FxkvGAlZe1I6ZZrNwG0 055wRsP+N2qLfbwT/VitCa+zQ6f8pn2unQKRJFYqq+mN3jP7RfBiTz53b g==; IronPort-SDR: SwrzTFk8m9N0jKkqUbqAYS1JGsSNOyKHM3WrGkuBKMCgkiVR5oxE2aAY52k0F4BJUGuX+WWyQj DiOpVypJp5dFvEUEm55OnlFDcD22BOKrQXrbni6+Gj6yMRuD1Md2YGykNjojJ7Duyv2LKAtOtm vjTQQ5xUkvbm9liqFM4BATeoNEV+ZmH0a84HN9ma/hdJGkhA1SBmpgNQQ+3MDQsFoxM3k+RBau fzfHp/ZhHLMIzQlBTBVi8g5EVndvN6PO3lB6uCYp0yhVv1Tk/9xPS3fUJEHBsBn+J9onodFCKm RNY= IronPort-SDR: I+F4mLQKvHP++gX9WEx4vTmwDJuj+7jX3JGgZzNPwLN7gN9N2u2jLPcV6e4aUGbv9F7yxgPGMi cDWVH9YPRz9sZ9Tt9kzCuC+a52fHVB6PhDgpmetAWSgkxQyRE3KB9IurZjxYLV0nZhdRCnvVA7 5ALtgR8OkY4fupaHjR1z9vtVkFKYYaGFUxx3NdI51p/HOOnkoRmMVLUKx9oWBr8kPh+zxGlWBd HFZLgK7hz8YimsPZKi10P0+DJ9ytSTOkv+4gl7EZmxbiRj06FWK/k1W3JQNrJDNy7WqmTvBnPo XI7IMf8zA0ZONq7d+Pb15U0H IronPort-SDR: fk7gRVNNQaHFH8Hnq9f5sA251jQcJNiKRt+RxIbUfcG1srT4zNg647xbzdppVaZ0wRSMhNJTla 0ZXDO9O2YxIU5PZkrwZVXAeL3ortJ94Gs7riA8TWGWv8m55a2eUDx9bVFlLqU7XC+eYQXLeqOs tkK3Y3G9zc/hxBPV0tt+eaVIbtRu3HU95XbIreJw1OBQ9hmpSRfh4tuR1JmzstJUGW32F+CcyL yD7cwER3JBDXPH/jVIoOFk/q2MoTRrLDX/mlnwFfFpoQ6/yrWn2tljDD47Ac6IhnwOjSc6ON41 FA4= WDCIronportException: Internal From: Alistair Francis To: libc-alpha@sourceware.org Cc: arnd@arndb.de, adhemerval.zanella@linaro.org, fweimer@redhat.com, palmer@sifive.com, macro@wdc.com, zongbox@gmail.com, alistair.francis@wdc.com, alistair23@gmail.com Subject: [RFC v5 13/21] RISC-V: Support dynamic loader for the 32-bit Date: Thu, 29 Aug 2019 09:50:35 -0700 Message-Id: <7b3b65502c73accbdb1e95028675a098f3580abd.1567097252.git.alistair.francis@wdc.com> In-Reply-To: References: MIME-Version: 1.0 From: Zong Li Add the LD_SO_ABI definition for RISC-V 32-bit. 2018-11-29 Zong Li * sysdeps/unix/sysv/linux/riscv/ldconfig.h (LD_SO_ABI): Support rv32. --- sysdeps/unix/sysv/linux/riscv/ldconfig.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sysdeps/unix/sysv/linux/riscv/ldconfig.h b/sysdeps/unix/sysv/linux/riscv/ldconfig.h index 20fbd16c591..360f35fb28c 100644 --- a/sysdeps/unix/sysv/linux/riscv/ldconfig.h +++ b/sysdeps/unix/sysv/linux/riscv/ldconfig.h @@ -24,7 +24,7 @@ #if __riscv_xlen == 64 # define LD_SO_ABI "riscv64-lp64" #else -# error "rv32i-based targets are not supported" +# define LD_SO_ABI "riscv32-ilp32" #endif #define SYSDEP_KNOWN_INTERPRETER_NAMES \ From patchwork Thu Aug 29 16:50:38 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1155409 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-104878-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="H+cEt5li"; dkim=pass (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="n7ohy0dZ"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46K7zX6gGQz9sN1 for ; Fri, 30 Aug 2019 02:56:08 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; q=dns; s= default; b=jZf19cf4z5rgl53ZpZB4Yw5p/fZdCl+J7fDE/nHlnQNfmO3xBVxHb O4QPM7FDfFQdppePKbkXtteWjI1qyPAawZnpOgsodyvTQbBGnwMJTtBcvMgjT9yY 8lV3sowOSJcfwYN0BGumyKOfzR+dJZzVCw9Zob+Si1ZZQ9FoTs5xk8= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; s=default; bh=PzIuOj608ekOULk7+rFzFuyfgjk=; b=H+cEt5liFb2qjMmJyTbFAhdNfZjm lUEetL+Qhn3hOVDYjuwDfFiShvcUNAzKpouqVKP+0LDtdGbIlXMZlryPS/5na5i8 H5wd5V60zKGcH0Qw68DBTbBraxyV9cF9/gT+StAb6evJFbZtnyea3jpffKdbz2mY NSsTWYPxCwO7gLU= Received: (qmail 533 invoked by alias); 29 Aug 2019 16:54:23 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 474 invoked by uid 89); 29 Aug 2019 16:54:22 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.3 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_NUMSUBJECT autolearn=ham version=3.3.1 spammy= X-HELO: esa2.hgst.iphmx.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1567097667; x=1598633667; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=pVyU/oBtmDxZ/Utyacd3qrFj4ZbG1m0wHcBVglG3HiA=; b=n7ohy0dZA1mA9IQWFicRORuwAXCaE2aU/lrG6/wMrxzMCsRg7asgSoi5 31rJfM1uayABi+QUk69aJ35l9p+xNjtI4A1/Y6dpdNgA/BQ43InWsmwWX /Rou1edTjqEaZOX1y/3BoVIcAfVfhHQy6JDPb9a/gLmgHfQN9q+eA1dQG Mb5QLP5P3Kwu4p27IWZDlqRM5Bgq92DwPgrRiPftDrJPqP23SHCkhce7+ MRUNy3h5wYuvsHjIBSN1fDVBCPZIRt4oKmsfxeMe2A1TPNi/dg3tl5FBy w2dvc2qXvlCI+c/uiL2reHlaU3uePH7EnyGZy2i9cVQEUdmGGy1PAE484 Q==; IronPort-SDR: rJY6bsnIqRNQyhmDpJSw7Dyg1sIJmm+gi3m+zuGyyOC9ajc9KggFDfSuLK6ZAHR+30t6jdgeuD eXBpzWBe78pjCid/qCkuNb5AlZqdWnWaBkykoWjA4JPF6B92gKy0CfdrxFzcfJ/MdWShvwCgg4 EScY7qlnilZSz9I8NomcFDuZOUZMY5oC/LyoEhPvnJRTXq84YWNFxIkNBBejSWcRkugk3bwT5s g81TjePsqyZ0J6fC2y8oE0d+x10acPtm+WyZBY3D/OM4sI4H1yVm2U5/PMhGaumjMY2TE+nZy5 7kg= IronPort-SDR: AazZ1CvnkMf3M9Dr/GozfXwCLlKiLMyMNUT6mFMXasUXtk6TNdckDI5/ly01d2vjbE5wGSU8Hf 8rBXpC1+6pM6olX7mp5OzhO5mQsFoFx6axjEtV8nM7fZekfg3Jgp4oBVyjmr6Oa8M14+WceLIL PTmDA+gVwn732JgH5NDiwwzeOEw+57pQjOIsLPm99zMgtZ6RQXjOBqBOfwOzcr862L0k0IDwd0 Qk29JwYOtAT721EE4HOd22MJD/M4lR6V97KZ1tbxAn6k5Gh8beQ3dX9bfCAhMt1G8kCKlY9NlR I06S2XRw/XIsD+bqrir3ZTP9 IronPort-SDR: hAWy4Sn1NUo1R7buAqNCzhLY+Q1WH8PfoFXD+JHi62tH67Fc3cFoU0wUgv93rpqdaS+RB50VYR ZIuEo4gu+x+EOkBs1MN7hapj3IQXsmVtSKMQSfCLoWCuVEgQyBimabuMoyAVWfbFJ1+2ScHC1l w+ngB7m77EuSwI3oFFtQV4/93QDediYY1RtHzs0djJ+rsSSor3WWCZx+bo37r0Ey/eKhEwvYgE x7MbKrLRc/B8cXPhjBacEaPZJFyndcVAUMkvSYGEus6FYMkT40p0B2WbKN/FoQbbfrx2Fxpl1v KAA= WDCIronportException: Internal From: Alistair Francis To: libc-alpha@sourceware.org Cc: arnd@arndb.de, adhemerval.zanella@linaro.org, fweimer@redhat.com, palmer@sifive.com, macro@wdc.com, zongbox@gmail.com, alistair.francis@wdc.com, alistair23@gmail.com Subject: [RFC v5 14/21] RISC-V: Add path of library directories for RV32 Date: Thu, 29 Aug 2019 09:50:38 -0700 Message-Id: In-Reply-To: References: MIME-Version: 1.0 From: Zong Li For the recommand of 64 bit version, we add the libraries path of 32 bit in this patch. This includes a fix to avoid an out of bound array check when building with GCC 8.2. 2018-11-29 Zong Li * sysdeps/unix/sysv/linux/riscv/dl-cache.h (add_system_dir): Add libraries path for rv32. [ Changes by AF: - Fix bound array check when building with GCC 8.2 ] Signed-off-by: Alistair Francis --- sysdeps/unix/sysv/linux/riscv/dl-cache.h | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/sysdeps/unix/sysv/linux/riscv/dl-cache.h b/sysdeps/unix/sysv/linux/riscv/dl-cache.h index 2a15e28e3bd..5943060536d 100644 --- a/sysdeps/unix/sysv/linux/riscv/dl-cache.h +++ b/sysdeps/unix/sysv/linux/riscv/dl-cache.h @@ -34,6 +34,8 @@ RISC-V, libraries can be found in paths ending in: - /lib64/lp64d - /lib64/lp64 + - /lib32/ilp32d + - /lib32/ilp32 - /lib (only ld.so) so this will add all of those paths. @@ -49,9 +51,16 @@ do \ { \ size_t len = strlen (dir); \ - char path[len + 9]; \ + char path[len + 10]; \ memcpy (path, dir, len + 1); \ - if (len >= 12 && ! memcmp(path + len - 12, "/lib64/lp64d", 12)) \ + if (len >= 13 && ! memcmp(path + len - 13, "/lib32/ilp32d", 13)) \ + { \ + len -= 9; \ + path[len] = '\0'; \ + } \ + if (len >= 12 \ + && (! memcmp(path + len - 12, "/lib32/ilp32", 12) \ + || ! memcmp(path + len - 12, "/lib64/lp64d", 12))) \ { \ len -= 8; \ path[len] = '\0'; \ @@ -64,6 +73,10 @@ add_dir (path); \ if (len >= 4 && ! memcmp(path + len - 4, "/lib", 4)) \ { \ + memcpy (path + len, "32/ilp32d", 10); \ + add_dir (path); \ + memcpy (path + len, "32/ilp32", 9); \ + add_dir (path); \ memcpy (path + len, "64/lp64d", 9); \ add_dir (path); \ memcpy (path + len, "64/lp64", 8); \ From patchwork Thu Aug 29 16:50:40 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1155416 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-104885-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="awLhx+l+"; dkim=pass (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="eXy6Fzlx"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46K8146jycz9s4Y for ; Fri, 30 Aug 2019 02:57:28 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; q=dns; s= default; b=Y2zeYbR9hGrdCQ1LPbVmU39zWowmMmWu4L9G96wFbnAK8gbxjZ1Sp lO+uateh6eU9ycCz9UYP35MlT8bkBVwyvWbkNitPd5e9cxQkUh2ah67ybq9l03TP iHk4sbFPsduKixD4aXJ04fl3P3O/WJHrAs5yKDUlUdHHQb6IAhY0o0= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; s=default; bh=yv9GZPczKb94eQVOsS9SfxHhuz4=; b=awLhx+l+YhIVSLHzi2qn3uInTB79 TV6sLzkgtF5Pq2ROqq3SUUNifnh4Za9k+2A3ofw0jbLuuq4sQGgzLSenrbWyTyP3 c2K/NAftsSQIrto2vP5MCagEhaU+IwB1yDGmQIrU7wVZtKH4+3yohTqLcxkEO6+v Qhj+f3kETMM54mQ= Received: (qmail 5909 invoked by alias); 29 Aug 2019 16:55:01 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 5770 invoked by uid 89); 29 Aug 2019 16:55:01 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_SHORT autolearn=ham version=3.3.1 spammy= X-HELO: esa3.hgst.iphmx.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1567097699; x=1598633699; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=7Q/DmwiMfsxfFcn3iDOjVmPClQwJhhprC1zOAUZsWjk=; b=eXy6FzlxQnGHOvrE5NKcBHO//WpP3WauMoYIdXoWcjeoNu2mHAgNyGf9 D8xcOoEnvSxBJ+TbUoZJLEb4JOzJYVbzd0DLj64A0CD4otGixcYLV0yfi UKtOSDZTOs6wwfw4v4xQKxfPlmOpqFadjKE1u2Oj0UHGs/6Dqke2SNeGm g7gDVEnEDmfC06c5XTzGKLDLHHC438HVSNuViZbc6jJkE0yPjCGY3IOyQ WDCqIliHPUaPRK99X11uEc41aXH8sd+yk3tHMlbx2nRhqfpfGdZl0j4qJ Ohk72WTzU2MvpOqowRXtpfq/rz5y1UNdtBHK9LKqi8Q99CTs8cfSU6jdx w==; IronPort-SDR: QtoflWByjQzahUX3Y8Ba9I4PdP5gmJxfViS4ukkAt6FyCsu2EI1I+L5JWuAAbRJNt6voWzbmnD HEOIou0/72gQjpZn1XdOw86kqoYcCAi1/lV85JnoArCTF3lEWDyCkQxr4HvZQ7dtbJQqgZ29Fc QlNDJb2Oy5RRUMsj8czWaoUSiTv374XvvT7Y6B21wD3v3QwFj0yJ0GMcIjJVAjxvlSaQOKQms4 QKx6yAzG3ywI92/lihrkfBhD4O0xm+M1bkm80vNYyIsB72JJQyf9LN/I+BOuzsRAVc9AJUHPUV o84= IronPort-SDR: j+2Js3ZsraCys2EKK2Wh04N7AM0lWR3E60rm7bbHniBaElu2wcy5mP9LXIb91+PKcRKQaspEGZ iGIldzHgD5BOs7lwRyD1yzZCOUxXOcBk+rINKAGu39xovgOpEPHQ9q3SdClfdB09TpeUwskWdn 0PkOzUPWGsVBIUUS4kRgpALLzC6vVM+s7x4eku7e4SUc5hnvA0h6+30VkFtVGWm2+gsYzPYnIH 5TYdyitAiBpSAfIURkiZluw2+OtkiKnbL0s2IrMUOGEQl+5Q9d50vl04QRdGP5SSFgWpX9esTw Mi8q/dVw+eucvJZbxTElZx1E IronPort-SDR: uWdaFJ1pmrpJAYgxE0i5l24nODnTGlNitD0Gn4ecNMJcgPg71aJoAhVwFFombIPXRz9N9HjlFi 077tuL2iMItYKNOiyiqHkdT+ael2rtqHI9YszrXdgrkvblDI4b0G8gnO7owTgoijIDUNV562Om hWwk2CgTQXHwTiT45Wj21rlNsaUkngfmAYcpawtlIW+lRZTI4uuo15R06sQq/43MYbUNDMB6Yu J5o1x8zRdnXNxpOsTsCcduTqFOlnczqs7xf5ycCOnY/mKlJsV+UQtu/FoglFFLDWTShjLWvELz LtY= WDCIronportException: Internal From: Alistair Francis To: libc-alpha@sourceware.org Cc: arnd@arndb.de, adhemerval.zanella@linaro.org, fweimer@redhat.com, palmer@sifive.com, macro@wdc.com, zongbox@gmail.com, alistair.francis@wdc.com, alistair23@gmail.com Subject: [RFC v5 15/21] RISC-V: The ABI implementation for the 32-bit Date: Thu, 29 Aug 2019 09:50:40 -0700 Message-Id: <818ed60269a3fe3da6f925e79fc64b882ed74d21.1567097252.git.alistair.francis@wdc.com> In-Reply-To: References: MIME-Version: 1.0 From: Zong Li This patch adds the ABI implementation about 32 bit version. It contains the Linux-specific and RISC-V architecture code, I've collected here. 2018-11-29 Zong Li * sysdeps/riscv/bits/wordsize.h: Supprt rv32. * sysdeps/riscv/nptl/bits/pthreadtypes-arch.h: Likewise. * sysdeps/riscv/sfp-machine.h: Likewise. * sysdeps/riscv/sys/asm.h: Likewise. * sysdeps/unix/sysv/linux/riscv/rv32/jmp_buf-macros.h: New file. [ Changes by AF: - Remove lock64.c ] Signed-off-by: Alistair Francis --- sysdeps/riscv/bits/wordsize.h | 4 +- sysdeps/riscv/nptl/bits/pthreadtypes-arch.h | 25 ++++++++- sysdeps/riscv/sfp-machine.h | 27 +++++++++- sysdeps/riscv/sys/asm.h | 5 +- .../sysv/linux/riscv/rv32/jmp_buf-macros.h | 53 +++++++++++++++++++ 5 files changed, 110 insertions(+), 4 deletions(-) create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/jmp_buf-macros.h diff --git a/sysdeps/riscv/bits/wordsize.h b/sysdeps/riscv/bits/wordsize.h index 0b8cd8fefdb..f10be0144c4 100644 --- a/sysdeps/riscv/bits/wordsize.h +++ b/sysdeps/riscv/bits/wordsize.h @@ -25,5 +25,7 @@ #if __riscv_xlen == 64 # define __WORDSIZE_TIME64_COMPAT32 1 #else -# error "rv32i-based targets are not supported" +# define __WORDSIZE_TIME64_COMPAT32 0 +# define __WORDSIZE32_SIZE_ULONG 0 +# define __WORDSIZE32_PTRDIFF_LONG 0 #endif diff --git a/sysdeps/riscv/nptl/bits/pthreadtypes-arch.h b/sysdeps/riscv/nptl/bits/pthreadtypes-arch.h index e3fecc32082..4b08f7c692b 100644 --- a/sysdeps/riscv/nptl/bits/pthreadtypes-arch.h +++ b/sysdeps/riscv/nptl/bits/pthreadtypes-arch.h @@ -32,7 +32,15 @@ # define __SIZEOF_PTHREAD_BARRIER_T 32 # define __SIZEOF_PTHREAD_BARRIERATTR_T 4 #else -# error "rv32i-based systems are not supported" +# define __SIZEOF_PTHREAD_ATTR_T 32 +# define __SIZEOF_PTHREAD_MUTEX_T 32 +# define __SIZEOF_PTHREAD_MUTEXATTR_T 4 +# define __SIZEOF_PTHREAD_COND_T 48 +# define __SIZEOF_PTHREAD_CONDATTR_T 4 +# define __SIZEOF_PTHREAD_RWLOCK_T 48 +# define __SIZEOF_PTHREAD_RWLOCKATTR_T 8 +# define __SIZEOF_PTHREAD_BARRIER_T 20 +# define __SIZEOF_PTHREAD_BARRIERATTR_T 4 #endif #define __PTHREAD_COMPAT_PADDING_MID @@ -56,11 +64,26 @@ struct __pthread_rwlock_arch_t unsigned int __writers_futex; unsigned int __pad3; unsigned int __pad4; +#if __riscv_xlen == 64 int __cur_writer; int __shared; unsigned long int __pad1; unsigned long int __pad2; unsigned int __flags; +#else +# if __BYTE_ORDER == __BIG_ENDIAN + unsigned char __pad1; + unsigned char __pad2; + unsigned char __shared; + unsigned char __flags; +# else + unsigned char __flags; + unsigned char __shared; + unsigned char __pad1; + unsigned char __pad2; +# endif + int __cur_writer; +#endif }; #define __PTHREAD_RWLOCK_ELISION_EXTRA 0 diff --git a/sysdeps/riscv/sfp-machine.h b/sysdeps/riscv/sfp-machine.h index fa0b8fa41a1..98e1f84370d 100644 --- a/sysdeps/riscv/sfp-machine.h +++ b/sysdeps/riscv/sfp-machine.h @@ -22,7 +22,32 @@ #if __riscv_xlen == 32 -# error "rv32i-based targets are not supported" +# 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_udiv_norm (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 +# define _FP_NANFRAC_D _FP_QNANBIT_D, 0 +# define _FP_NANFRAC_Q _FP_QNANBIT_Q, 0, 0, 0 #else diff --git a/sysdeps/riscv/sys/asm.h b/sysdeps/riscv/sys/asm.h index b8f90a44cea..7ea34afd6d1 100644 --- a/sysdeps/riscv/sys/asm.h +++ b/sysdeps/riscv/sys/asm.h @@ -26,7 +26,10 @@ # define REG_S sd # define REG_L ld #elif __riscv_xlen == 32 -# error "rv32i-based targets are not supported" +# define PTRLOG 2 +# define SZREG 4 +# define REG_S sw +# define REG_L lw #else # error __riscv_xlen must equal 32 or 64 #endif diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/jmp_buf-macros.h b/sysdeps/unix/sysv/linux/riscv/rv32/jmp_buf-macros.h new file mode 100644 index 00000000000..e0042b9f01b --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/rv32/jmp_buf-macros.h @@ -0,0 +1,53 @@ +/* jump buffer constants for RISC-V + Copyright (C) 2017-2018 Free Software Foundation, Inc. + + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +/* Produced by this program: + + #include + #include + #include + #include + + int main (int argc, char **argv) + { + printf ("#define JMP_BUF_SIZE %d\n", sizeof (jmp_buf)); + printf ("#define JMP_BUF_ALIGN %d\n", __alignof__ (jmp_buf)); + printf ("#define SIGJMP_BUF_SIZE %d\n", sizeof (sigjmp_buf)); + printf ("#define SIGJMP_BUF_ALIGN %d\n", __alignof__ (sigjmp_buf)); + printf ("#define MASK_WAS_SAVED_OFFSET %d\n", offsetof (struct __jmp_buf_tag, __mask_was_saved)); + printf ("#define SAVED_MASK_OFFSET %d\n", offsetof (struct __jmp_buf_tag, __saved_mask)); + } */ + +#if defined __riscv_float_abi_soft +# define JMP_BUF_SIZE 188 +# define JMP_BUF_ALIGN 4 +# define SIGJMP_BUF_SIZE 188 +# define SIGJMP_BUF_ALIGN 4 +# define MASK_WAS_SAVED_OFFSET 56 +# define SAVED_MASK_OFFSET 60 +#elif defined __riscv_float_abi_double +# define JMP_BUF_SIZE 288 +# define JMP_BUF_ALIGN 8 +# define SIGJMP_BUF_SIZE 288 +# define SIGJMP_BUF_ALIGN 8 +# define MASK_WAS_SAVED_OFFSET 152 +# define SAVED_MASK_OFFSET 156 +#else +# error "Unknown RISC-V floating-point ABI" +#endif From patchwork Thu Aug 29 16:50:43 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1155410 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-104879-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="oHBbrcKU"; dkim=pass (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="oa5eWlL2"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46K7zn1rwtz9sNf for ; Fri, 30 Aug 2019 02:56:21 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; q=dns; s= default; b=x+qt+r/IlBgPeT8f3LgOd1aZC3nOxjpoa8L3T3tvFTrohzOrPSjvA diokk0/w7CBjpDPi8NkkkNIJsyRVQMdBWClSTc6sTZJ6MPzYYKBEzUms3f6TNPfO B0SqpKBdQf0NB44sQkh5y9NI5cZx+GJDoPDm+MZr0KtjBEC2PSStsQ= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; s=default; bh=Cyj9bEMNUsc9NsaYF9oII1i/H1A=; b=oHBbrcKUiaJ3qAv/bCp+V3K45Klv 19COwcxBuq1fWdZiTsS+VjPxPKy/7L+tEM/IvsNAOHQV2DH5LVC9xDwKzOqhiPtB DdvyCS8zyfeyLSipPoAID5Bp3yXC0MGUHtM2H3HhSfMM23qXvj7wBq7voPhlUmHk /O87w3qDxEbsBVo= Received: (qmail 1523 invoked by alias); 29 Aug 2019 16:54:31 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 1422 invoked by uid 89); 29 Aug 2019 16:54:30 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_SHORT autolearn=ham version=3.3.1 spammy= X-HELO: esa4.hgst.iphmx.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1567097668; x=1598633668; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=JsVolrW5fxaG7n4sD6LzDOgufdwlrie8f5A+uymL7EM=; b=oa5eWlL241tLKN/3/7P5KtyMZ03IyO0TrZw1BG5IRwB3q2Nq01WOedvY h/hGZi2HBI9hCZWHIznQxCDrNqXHH83SDHL5fsXX88VR8d9HEur0hghxY yhRng+vy9L0kgwplhnu1fVxmq1vp4ACA1HSOLoADBxHxT/LAzHSUvTc0P OBcesKrxx5P3jQ/B3V8F5/kjuITdbKWBCA3p2KL6i9pK3pp4xRT3hNBT0 XpD0Db0NrNLrcIuvfSDSRyigMLNHYJ0QaUr35m1M7p36vP81ZZvZMmvTH 3z3j4ObGLo6yhyBzAWiro7zdQkgrtt31ZUW4nz9PDRxDlM72idXjPErWm g==; IronPort-SDR: 72jhMJOF3s/Z55LPm+0EbYp+IUVvm8RqD0r6urWOoK6d/wOAtXobstEwQnpZxLVJg0FVzQmJqp njCmr3YcddYkRR25wEP/DJMqhstq10qUIPH7hi2EhU3PtYH2h2E6rOvUp8PpG9iWq2+Mpk2zWA qdCj5IbbuaTRQPIpkqP7jILmZ/+MtFVwOPXkRcv5egKtMDaMZHiIJw1XmROl+VL+CmERXZIcf/ 523kWWd5g98hGTLR/ahqdpZg8PIXkjWb4l1B/bYIoRg9OzngIjY3bQQYi2LJKl6FGxWy1r2w4r aSs= IronPort-SDR: KwQ7NIw0uwOXMnk6BnmsMmnuQYFK0nnuGfyhReZxDxJdXn/DU/6f01mgzWUQK6xzeSG9fHAD/s sOe+VbxsuGZFiCmQFxAxXvSGI5Su4bxI6Ey1a66AkqakkkMhoXvmNtkdrFBVSa3BqKY5J+Uy7H FQ8vhUmluaKlyKPau2Uc+Xa0fUsA4Rm+TsSHk5CENZd687DZLukmy2Y3YYmV8iQu/8UoHQCdx3 8mK0jG/12g8eWalwuF9axglnuk0IOPIhPkjgH8dVw48RGhYHrBQ/2bImKhBVswOjVAEe+bw891 RCTcC2rJWrI6nZo/kN9IqfO4 IronPort-SDR: nvOP2BvYwyTSeU//SKPW8Q+RDQ1teRlgN7SFYq5yZI783duzOZ1d28IVQu0nnTbjdonPUW0k4x SfM+YUK1zOphwX9itOCjI83MYFngYf9ES2Td5X+1y7rp3walyj9jiUDMLxDqYiYsek2ZpxFgNE k2RRiAnhvTZFmiN6GTh23j674ts3KyX1zgks2asgcxgMzgDOe1Z87AT9KWtej2nN7jkg7hoSF5 DFOjWT1RGG3k1w09On3uKb3G9IFC8HiK7KlldUEN+P30xEzOAublJ2SOlTFRFG9Ay2LCEFg02f Z2I= WDCIronportException: Internal From: Alistair Francis To: libc-alpha@sourceware.org Cc: arnd@arndb.de, adhemerval.zanella@linaro.org, fweimer@redhat.com, palmer@sifive.com, macro@wdc.com, zongbox@gmail.com, alistair.francis@wdc.com, alistair23@gmail.com Subject: [RFC v5 16/21] RISC-V: Hard float support for the 32 bit Date: Thu, 29 Aug 2019 09:50:43 -0700 Message-Id: <100c8604711c94ac504780d56a4e2a4952f3c90e.1567097252.git.alistair.francis@wdc.com> In-Reply-To: References: MIME-Version: 1.0 From: Zong Li This patch contains hardware floating-point support for the RV32IF and RV32IFD 2018-11-29 Zong Li * sysdeps/riscv/rv32/rvd/s_lrint.c: New file. * sysdeps/riscv/rv32/rvd/s_lround.c: Likewise. * sysdeps/riscv/rv32/rvf/s_lrintf.c: Likewise. * sysdeps/riscv/rv32/rvf/s_lroundf.c: Likewise. --- sysdeps/riscv/rv32/rvd/s_lrint.c | 31 ++++++++++++++++++++++++++++++ sysdeps/riscv/rv32/rvd/s_lround.c | 31 ++++++++++++++++++++++++++++++ sysdeps/riscv/rv32/rvf/s_lrintf.c | 31 ++++++++++++++++++++++++++++++ sysdeps/riscv/rv32/rvf/s_lroundf.c | 31 ++++++++++++++++++++++++++++++ 4 files changed, 124 insertions(+) create mode 100644 sysdeps/riscv/rv32/rvd/s_lrint.c create mode 100644 sysdeps/riscv/rv32/rvd/s_lround.c create mode 100644 sysdeps/riscv/rv32/rvf/s_lrintf.c create mode 100644 sysdeps/riscv/rv32/rvf/s_lroundf.c diff --git a/sysdeps/riscv/rv32/rvd/s_lrint.c b/sysdeps/riscv/rv32/rvd/s_lrint.c new file mode 100644 index 00000000000..4d5bdbc200e --- /dev/null +++ b/sysdeps/riscv/rv32/rvd/s_lrint.c @@ -0,0 +1,31 @@ +/* lrint(). RISC-V version. + Copyright (C) 2017-2018 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include + +long int +__lrint (double x) +{ + int32_t res; + asm ("fcvt.w.d %0, %1" : "=r" (res) : "f" (x)); + return res; +} + +libm_alias_double (__lrint, lrint) diff --git a/sysdeps/riscv/rv32/rvd/s_lround.c b/sysdeps/riscv/rv32/rvd/s_lround.c new file mode 100644 index 00000000000..f5d9cf2e070 --- /dev/null +++ b/sysdeps/riscv/rv32/rvd/s_lround.c @@ -0,0 +1,31 @@ +/* lround(). RISC-V version. + Copyright (C) 2017-2018 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include + +long int +__lround (double x) +{ + int32_t res; + asm ("fcvt.w.d %0, %1, rmm" : "=r" (res) : "f" (x)); + return res; +} + +libm_alias_double (__lround, lround) diff --git a/sysdeps/riscv/rv32/rvf/s_lrintf.c b/sysdeps/riscv/rv32/rvf/s_lrintf.c new file mode 100644 index 00000000000..08d44fa7385 --- /dev/null +++ b/sysdeps/riscv/rv32/rvf/s_lrintf.c @@ -0,0 +1,31 @@ +/* lrintf(). RISC-V version. + Copyright (C) 2017-2018 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include + +long int +__lrintf (float x) +{ + int32_t res; + asm ("fcvt.w.s %0, %1" : "=r" (res) : "f" (x)); + return res; +} + +libm_alias_float (__lrint, lrint) diff --git a/sysdeps/riscv/rv32/rvf/s_lroundf.c b/sysdeps/riscv/rv32/rvf/s_lroundf.c new file mode 100644 index 00000000000..f31b4329362 --- /dev/null +++ b/sysdeps/riscv/rv32/rvf/s_lroundf.c @@ -0,0 +1,31 @@ +/* lroundf(). RISC-V version. + Copyright (C) 2017-2018 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include + +long int +__lroundf (float x) +{ + int32_t res; + asm ("fcvt.w.s %0, %1, rmm" : "=r" (res) : "f" (x)); + return res; +} + +libm_alias_float (__lround, lround) From patchwork Thu Aug 29 16:50:46 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1155414 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-104883-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="kwPFYAVg"; dkim=pass (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="lEBTXc46"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46K80b2RLdz9s4Y for ; Fri, 30 Aug 2019 02:57:03 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; q=dns; s= default; b=BM1WqO6rDu5ibaw8fiW6VIqInuqDvsFcmYFhKYzgH31RHhQrE8S03 +yp0bQW3LqBpUBCeTZlT8oB3bbNXNtqFRMVXPILKx4tnRGkJ/vOIhrVRgwE7grFV 94RdPgQ/yEfvvUAW/6i+MTCwlgmgPuDMBrSAziEDamQ9n5qellNA7A= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; s=default; bh=tzaagpigOMBHx32CWeSN43eOWIA=; b=kwPFYAVgBLP9pridk1pgDi+ijHjJ SXi7iCxHTY6KuSQTCOOHWy+QoP1bIOqLlTgiKwmbHnBVt8CLx/hDbFdFyPEjhGVL 83nr0nF7WUM5DwnaLfPGVKWb3jXMDH5e40MCRb6f9auO8MlF19GYk6j/gEcEwOMy u36pKcog2Gjdzbk= Received: (qmail 5504 invoked by alias); 29 Aug 2019 16:55:00 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 5365 invoked by uid 89); 29 Aug 2019 16:54:59 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3 autolearn=ham version=3.3.1 spammy= X-HELO: esa4.hgst.iphmx.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1567097684; x=1598633684; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=lKn5i9+gfzLjO+cAWqsVxWUH8wuuKRAUzhPdfGtmyCU=; b=lEBTXc46AQG5VBvQSPegecUBW2epi65kkhEZ1GAazG5rKyiLPy0MQqFz ci78UOR5IXheuI4W86te+9K41xozveDe6kuNhSNeKxSz3PwzS5VmU8M2h IIyyKYdYHdfg7sAInuWUzyJhtbxLs76br25EJrmq7TEZ54cKolYA4qYXD 0Yk/xKTRCGOS/x905CaY7Zcpr3El6pScRidq9VfkM2fK15byMrlUrkeDk 4j2YX8BQ9+kKvIBJqyKFzWw9K55v4ydra3MQp+4d3SBw7rAewvPNLzGc+ 3IY2yZ/9Hk+I0k/gnzKLz63s7C6qJWhsC+z0aNHRLWaC95l2hXGd2PuDz A==; IronPort-SDR: GZ+tRi8S69i339LF29/sxv1moVTuOJLZRc3Dg6KmP48E+AJnayq+bR8e2ylNFMLs5D51s+Qq0Y IWH3H7fMhV7Gw+xLc6oCw7dTHO72G6PWauiE+Jmvpf02yqdELr1YZrkZkrOgLtxkkbboDsZWLU cfkpv0KpcyF3XgUNLGBTk33CrQzZNxB1tyTQvqQzhGXEM7fYu3grK+N3zCJTA4FAFWBWbtg6dY YOWR3WImbjmPNAxplKe/VYAQkmpQteBxfI5CxGQn4ZYY7G6Jwf07gXajRz+hcPBphg9LyZV0km f9g= IronPort-SDR: sOwdrQL4a59CR+5t9gKOLe0/by4bMNOzQInxiAsfu5Sua8xJZT7F+wxUzopmSWXbtJOf7gAHT5 pMKqOxBBH4zCpNaEXlKHeO+TICwS2cfKTlWT1RswcUFSNvjH4s7kMjcaljkYSZRijYuiu9vo1o pb3wRyAiuUOp1rqu8fyuMMSNwW7uti8m2JU3pZLNUSejMo9OOdgF3B58F3v+pS56t/jJjzGVXk zHOdnIzDgc8Zp4SCOCU2anazwGL1WZC5DxaswOnxkg2goyR4SBOxDvGiJkALsiFVB7i+QcSad/ iIEb3qBDOjbFLQLHHKdPd5Eg IronPort-SDR: 1uebQbT2iUEkSR13ZRw22QmJseI5DYB07w8ngrQFDJX/7jyFyVuEi1jAZqkR4LKVBC+kc41xYe FQgWDt2nMSrFZNYoz30CiqXRwWu+hFFZchAOAV8EeQmqCTtroMST0OWELDCqK35WnLg8RFQGWB wGVptR6HlZWLgIgYuRl/K8vNKtJwVGcAAlykXLML+lYWw2EXfeLvHLu6I3VwaC7pE9h0fZJ88m YMuxJ2P0twrumxArzNcNxcadW0Cir/cakzl5GwBVsFX+SOwjOMj1W2dQR9kVJ8gBRxkhqHT2ya Lzw= WDCIronportException: Internal From: Alistair Francis To: libc-alpha@sourceware.org Cc: arnd@arndb.de, adhemerval.zanella@linaro.org, fweimer@redhat.com, palmer@sifive.com, macro@wdc.com, zongbox@gmail.com, alistair.francis@wdc.com, alistair23@gmail.com Subject: [RFC v5 17/21] RISC-V: Add ABI lists Date: Thu, 29 Aug 2019 09:50:46 -0700 Message-Id: <866aeab9ac241c580b40f6bfee68a223d62b3ac2.1567097252.git.alistair.francis@wdc.com> In-Reply-To: References: MIME-Version: 1.0 From: Zong Li Use the check-api and update-abi to generate the abilist for rv32. 2018-11-29 Zong Li * sysdeps/unix/sysv/linux/riscv/rv32/c++-types.data: New file. * sysdeps/unix/sysv/linux/riscv/rv32/ld.abilist: Likewise. * sysdeps/unix/sysv/linux/riscv/rv32/libanl.abilist: Likewise. * sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/riscv/rv32/libcrypt.abilist: Likewise. * sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist: Likewise. * sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist: Likewise. * sysdeps/unix/sysv/linux/riscv/rv32/libresolv.abilist: Likewise. * sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist: Likewise. * sysdeps/unix/sysv/linux/riscv/rv32/libthread_db.abilist: Likewise. * sysdeps/unix/sysv/linux/riscv/rv32/libutil.abilist: Likewise. * sysdeps/unix/sysv/linux/riscv/rv32/libBrokenLocale.abilist: Likewise. --- .../unix/sysv/linux/riscv/rv32/c++-types.data | 67 + sysdeps/unix/sysv/linux/riscv/rv32/ld.abilist | 9 + .../linux/riscv/rv32/libBrokenLocale.abilist | 1 + .../unix/sysv/linux/riscv/rv32/libanl.abilist | 4 + .../unix/sysv/linux/riscv/rv32/libc.abilist | 2101 +++++++++++++++++ .../sysv/linux/riscv/rv32/libcrypt.abilist | 2 + .../unix/sysv/linux/riscv/rv32/libdl.abilist | 9 + .../unix/sysv/linux/riscv/rv32/libm.abilist | 1021 ++++++++ .../sysv/linux/riscv/rv32/libpthread.abilist | 235 ++ .../sysv/linux/riscv/rv32/libresolv.abilist | 79 + .../unix/sysv/linux/riscv/rv32/librt.abilist | 35 + .../linux/riscv/rv32/libthread_db.abilist | 40 + .../sysv/linux/riscv/rv32/libutil.abilist | 6 + 13 files changed, 3609 insertions(+) create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/c++-types.data create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/ld.abilist create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/libBrokenLocale.abilist create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/libanl.abilist create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/libcrypt.abilist create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/libresolv.abilist create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/libthread_db.abilist create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/libutil.abilist diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/c++-types.data b/sysdeps/unix/sysv/linux/riscv/rv32/c++-types.data new file mode 100644 index 00000000000..303f4570c8e --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/rv32/c++-types.data @@ -0,0 +1,67 @@ +blkcnt64_t:x +blkcnt_t:l +blksize_t:i +caddr_t:Pc +clockid_t:i +clock_t:l +daddr_t:i +dev_t:y +fd_mask:l +fsblkcnt64_t:y +fsblkcnt_t:m +fsfilcnt64_t:y +fsfilcnt_t:m +fsid_t:8__fsid_t +gid_t:j +id_t:j +ino64_t:y +ino_t:m +int16_t:s +int32_t:i +int64_t:x +int8_t:a +intptr_t:i +key_t:i +loff_t:x +mode_t:j +nlink_t:j +off64_t:x +off_t:l +pid_t:i +pthread_attr_t:14pthread_attr_t +pthread_barrier_t:17pthread_barrier_t +pthread_barrierattr_t:21pthread_barrierattr_t +pthread_cond_t:14pthread_cond_t +pthread_condattr_t:18pthread_condattr_t +pthread_key_t:j +pthread_mutex_t:15pthread_mutex_t +pthread_mutexattr_t:19pthread_mutexattr_t +pthread_once_t:i +pthread_rwlock_t:16pthread_rwlock_t +pthread_rwlockattr_t:20pthread_rwlockattr_t +pthread_spinlock_t:i +pthread_t:m +quad_t:x +register_t:i +rlim64_t:y +rlim_t:m +sigset_t:10__sigset_t +size_t:j +socklen_t:j +ssize_t:i +suseconds_t:l +time_t:l +u_char:h +uid_t:j +uint:j +u_int:j +u_int16_t:t +u_int32_t:j +u_int64_t:y +u_int8_t:h +ulong:m +u_long:m +u_quad_t:y +useconds_t:j +ushort:t +u_short:t diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/ld.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/ld.abilist new file mode 100644 index 00000000000..1515b0977c8 --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/rv32/ld.abilist @@ -0,0 +1,9 @@ +GLIBC_2.31 __libc_stack_end D 0x4 +GLIBC_2.31 __stack_chk_guard D 0x4 +GLIBC_2.31 __tls_get_addr F +GLIBC_2.31 _dl_mcount F +GLIBC_2.31 _r_debug D 0x14 +GLIBC_2.31 calloc F +GLIBC_2.31 free F +GLIBC_2.31 malloc F +GLIBC_2.31 realloc F diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libBrokenLocale.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libBrokenLocale.abilist new file mode 100644 index 00000000000..55b5eb8193a --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libBrokenLocale.abilist @@ -0,0 +1 @@ +GLIBC_2.31 __ctype_get_mb_cur_max F diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libanl.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libanl.abilist new file mode 100644 index 00000000000..2b096eb1f03 --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libanl.abilist @@ -0,0 +1,4 @@ +GLIBC_2.31 gai_cancel F +GLIBC_2.31 gai_error F +GLIBC_2.31 gai_suspend F +GLIBC_2.31 getaddrinfo_a F diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist new file mode 100644 index 00000000000..250fed20dae --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist @@ -0,0 +1,2101 @@ +GLIBC_2.31 _Exit F +GLIBC_2.31 _IO_2_1_stderr_ D 0xa0 +GLIBC_2.31 _IO_2_1_stdin_ D 0xa0 +GLIBC_2.31 _IO_2_1_stdout_ D 0xa0 +GLIBC_2.31 _IO_adjust_column F +GLIBC_2.31 _IO_adjust_wcolumn F +GLIBC_2.31 _IO_default_doallocate F +GLIBC_2.31 _IO_default_finish F +GLIBC_2.31 _IO_default_pbackfail F +GLIBC_2.31 _IO_default_uflow F +GLIBC_2.31 _IO_default_xsgetn F +GLIBC_2.31 _IO_default_xsputn F +GLIBC_2.31 _IO_do_write F +GLIBC_2.31 _IO_doallocbuf F +GLIBC_2.31 _IO_fclose F +GLIBC_2.31 _IO_fdopen F +GLIBC_2.31 _IO_feof F +GLIBC_2.31 _IO_ferror F +GLIBC_2.31 _IO_fflush F +GLIBC_2.31 _IO_fgetpos F +GLIBC_2.31 _IO_fgetpos64 F +GLIBC_2.31 _IO_fgets F +GLIBC_2.31 _IO_file_attach F +GLIBC_2.31 _IO_file_close F +GLIBC_2.31 _IO_file_close_it F +GLIBC_2.31 _IO_file_doallocate F +GLIBC_2.31 _IO_file_finish F +GLIBC_2.31 _IO_file_fopen F +GLIBC_2.31 _IO_file_init F +GLIBC_2.31 _IO_file_jumps D 0x54 +GLIBC_2.31 _IO_file_open F +GLIBC_2.31 _IO_file_overflow F +GLIBC_2.31 _IO_file_read F +GLIBC_2.31 _IO_file_seek F +GLIBC_2.31 _IO_file_seekoff F +GLIBC_2.31 _IO_file_setbuf F +GLIBC_2.31 _IO_file_stat F +GLIBC_2.31 _IO_file_sync F +GLIBC_2.31 _IO_file_underflow F +GLIBC_2.31 _IO_file_write F +GLIBC_2.31 _IO_file_xsputn F +GLIBC_2.31 _IO_flockfile F +GLIBC_2.31 _IO_flush_all F +GLIBC_2.31 _IO_flush_all_linebuffered F +GLIBC_2.31 _IO_fopen F +GLIBC_2.31 _IO_fprintf F +GLIBC_2.31 _IO_fputs F +GLIBC_2.31 _IO_fread F +GLIBC_2.31 _IO_free_backup_area F +GLIBC_2.31 _IO_free_wbackup_area F +GLIBC_2.31 _IO_fsetpos F +GLIBC_2.31 _IO_fsetpos64 F +GLIBC_2.31 _IO_ftell F +GLIBC_2.31 _IO_ftrylockfile F +GLIBC_2.31 _IO_funlockfile F +GLIBC_2.31 _IO_fwrite F +GLIBC_2.31 _IO_getc F +GLIBC_2.31 _IO_getline F +GLIBC_2.31 _IO_getline_info F +GLIBC_2.31 _IO_gets F +GLIBC_2.31 _IO_init F +GLIBC_2.31 _IO_init_marker F +GLIBC_2.31 _IO_init_wmarker F +GLIBC_2.31 _IO_iter_begin F +GLIBC_2.31 _IO_iter_end F +GLIBC_2.31 _IO_iter_file F +GLIBC_2.31 _IO_iter_next F +GLIBC_2.31 _IO_least_wmarker F +GLIBC_2.31 _IO_link_in F +GLIBC_2.31 _IO_list_all D 0x4 +GLIBC_2.31 _IO_list_lock F +GLIBC_2.31 _IO_list_resetlock F +GLIBC_2.31 _IO_list_unlock F +GLIBC_2.31 _IO_marker_delta F +GLIBC_2.31 _IO_marker_difference F +GLIBC_2.31 _IO_padn F +GLIBC_2.31 _IO_peekc_locked F +GLIBC_2.31 _IO_popen F +GLIBC_2.31 _IO_printf F +GLIBC_2.31 _IO_proc_close F +GLIBC_2.31 _IO_proc_open F +GLIBC_2.31 _IO_putc F +GLIBC_2.31 _IO_puts F +GLIBC_2.31 _IO_remove_marker F +GLIBC_2.31 _IO_seekmark F +GLIBC_2.31 _IO_seekoff F +GLIBC_2.31 _IO_seekpos F +GLIBC_2.31 _IO_seekwmark F +GLIBC_2.31 _IO_setb F +GLIBC_2.31 _IO_setbuffer F +GLIBC_2.31 _IO_setvbuf F +GLIBC_2.31 _IO_sgetn F +GLIBC_2.31 _IO_sprintf F +GLIBC_2.31 _IO_sputbackc F +GLIBC_2.31 _IO_sputbackwc F +GLIBC_2.31 _IO_sscanf F +GLIBC_2.31 _IO_str_init_readonly F +GLIBC_2.31 _IO_str_init_static F +GLIBC_2.31 _IO_str_overflow F +GLIBC_2.31 _IO_str_pbackfail F +GLIBC_2.31 _IO_str_seekoff F +GLIBC_2.31 _IO_str_underflow F +GLIBC_2.31 _IO_sungetc F +GLIBC_2.31 _IO_sungetwc F +GLIBC_2.31 _IO_switch_to_get_mode F +GLIBC_2.31 _IO_switch_to_main_wget_area F +GLIBC_2.31 _IO_switch_to_wbackup_area F +GLIBC_2.31 _IO_switch_to_wget_mode F +GLIBC_2.31 _IO_un_link F +GLIBC_2.31 _IO_ungetc F +GLIBC_2.31 _IO_unsave_markers F +GLIBC_2.31 _IO_unsave_wmarkers F +GLIBC_2.31 _IO_vfprintf F +GLIBC_2.31 _IO_vsprintf F +GLIBC_2.31 _IO_wdefault_doallocate F +GLIBC_2.31 _IO_wdefault_finish F +GLIBC_2.31 _IO_wdefault_pbackfail F +GLIBC_2.31 _IO_wdefault_uflow F +GLIBC_2.31 _IO_wdefault_xsgetn F +GLIBC_2.31 _IO_wdefault_xsputn F +GLIBC_2.31 _IO_wdo_write F +GLIBC_2.31 _IO_wdoallocbuf F +GLIBC_2.31 _IO_wfile_jumps D 0x54 +GLIBC_2.31 _IO_wfile_overflow F +GLIBC_2.31 _IO_wfile_seekoff F +GLIBC_2.31 _IO_wfile_sync F +GLIBC_2.31 _IO_wfile_underflow F +GLIBC_2.31 _IO_wfile_xsputn F +GLIBC_2.31 _IO_wmarker_delta F +GLIBC_2.31 _IO_wsetb F +GLIBC_2.31 ___brk_addr D 0x4 +GLIBC_2.31 __adjtimex F +GLIBC_2.31 __after_morecore_hook D 0x4 +GLIBC_2.31 __argz_count F +GLIBC_2.31 __argz_next F +GLIBC_2.31 __argz_stringify F +GLIBC_2.31 __asprintf F +GLIBC_2.31 __asprintf_chk F +GLIBC_2.31 __assert F +GLIBC_2.31 __assert_fail F +GLIBC_2.31 __assert_perror_fail F +GLIBC_2.31 __backtrace F +GLIBC_2.31 __backtrace_symbols F +GLIBC_2.31 __backtrace_symbols_fd F +GLIBC_2.31 __bsd_getpgrp F +GLIBC_2.31 __bzero F +GLIBC_2.31 __check_rhosts_file D 0x4 +GLIBC_2.31 __chk_fail F +GLIBC_2.31 __clone F +GLIBC_2.31 __close F +GLIBC_2.31 __cmsg_nxthdr F +GLIBC_2.31 __confstr_chk F +GLIBC_2.31 __connect F +GLIBC_2.31 __ctype_b_loc F +GLIBC_2.31 __ctype_get_mb_cur_max F +GLIBC_2.31 __ctype_tolower_loc F +GLIBC_2.31 __ctype_toupper_loc F +GLIBC_2.31 __curbrk D 0x4 +GLIBC_2.31 __cxa_at_quick_exit F +GLIBC_2.31 __cxa_atexit F +GLIBC_2.31 __cxa_finalize F +GLIBC_2.31 __cxa_thread_atexit_impl F +GLIBC_2.31 __cyg_profile_func_enter F +GLIBC_2.31 __cyg_profile_func_exit F +GLIBC_2.31 __daylight D 0x4 +GLIBC_2.31 __dcgettext F +GLIBC_2.31 __default_morecore F +GLIBC_2.31 __dgettext F +GLIBC_2.31 __dprintf_chk F +GLIBC_2.31 __dup2 F +GLIBC_2.31 __duplocale F +GLIBC_2.31 __endmntent F +GLIBC_2.31 __environ D 0x4 +GLIBC_2.31 __errno_location F +GLIBC_2.31 __explicit_bzero_chk F +GLIBC_2.31 __fbufsize F +GLIBC_2.31 __fcntl F +GLIBC_2.31 __fdelt_chk F +GLIBC_2.31 __fdelt_warn F +GLIBC_2.31 __ffs F +GLIBC_2.31 __fgets_chk F +GLIBC_2.31 __fgets_unlocked_chk F +GLIBC_2.31 __fgetws_chk F +GLIBC_2.31 __fgetws_unlocked_chk F +GLIBC_2.31 __finite F +GLIBC_2.31 __finitef F +GLIBC_2.31 __finitel F +GLIBC_2.31 __flbf F +GLIBC_2.31 __fork F +GLIBC_2.31 __fpending F +GLIBC_2.31 __fprintf_chk F +GLIBC_2.31 __fpu_control D 0x4 +GLIBC_2.31 __fpurge F +GLIBC_2.31 __fread_chk F +GLIBC_2.31 __fread_unlocked_chk F +GLIBC_2.31 __freadable F +GLIBC_2.31 __freading F +GLIBC_2.31 __free_hook D 0x4 +GLIBC_2.31 __freelocale F +GLIBC_2.31 __fsetlocking F +GLIBC_2.31 __fwprintf_chk F +GLIBC_2.31 __fwritable F +GLIBC_2.31 __fwriting F +GLIBC_2.31 __fxstat F +GLIBC_2.31 __fxstat64 F +GLIBC_2.31 __fxstatat F +GLIBC_2.31 __fxstatat64 F +GLIBC_2.31 __getauxval F +GLIBC_2.31 __getcwd_chk F +GLIBC_2.31 __getdelim F +GLIBC_2.31 __getdomainname_chk F +GLIBC_2.31 __getgroups_chk F +GLIBC_2.31 __gethostname_chk F +GLIBC_2.31 __getlogin_r_chk F +GLIBC_2.31 __getmntent_r F +GLIBC_2.31 __getpagesize F +GLIBC_2.31 __getpgid F +GLIBC_2.31 __getpid F +GLIBC_2.31 __gets_chk F +GLIBC_2.31 __gettimeofday F +GLIBC_2.31 __getwd_chk F +GLIBC_2.31 __gmtime_r F +GLIBC_2.31 __h_errno_location F +GLIBC_2.31 __isalnum_l F +GLIBC_2.31 __isalpha_l F +GLIBC_2.31 __isascii_l F +GLIBC_2.31 __isblank_l F +GLIBC_2.31 __iscntrl_l F +GLIBC_2.31 __isctype F +GLIBC_2.31 __isdigit_l F +GLIBC_2.31 __isgraph_l F +GLIBC_2.31 __isinf F +GLIBC_2.31 __isinff F +GLIBC_2.31 __isinfl F +GLIBC_2.31 __islower_l F +GLIBC_2.31 __isnan F +GLIBC_2.31 __isnanf F +GLIBC_2.31 __isnanl F +GLIBC_2.31 __isoc99_fscanf F +GLIBC_2.31 __isoc99_fwscanf F +GLIBC_2.31 __isoc99_scanf F +GLIBC_2.31 __isoc99_sscanf F +GLIBC_2.31 __isoc99_swscanf F +GLIBC_2.31 __isoc99_vfscanf F +GLIBC_2.31 __isoc99_vfwscanf F +GLIBC_2.31 __isoc99_vscanf F +GLIBC_2.31 __isoc99_vsscanf F +GLIBC_2.31 __isoc99_vswscanf F +GLIBC_2.31 __isoc99_vwscanf F +GLIBC_2.31 __isoc99_wscanf F +GLIBC_2.31 __isprint_l F +GLIBC_2.31 __ispunct_l F +GLIBC_2.31 __isspace_l F +GLIBC_2.31 __isupper_l F +GLIBC_2.31 __iswalnum_l F +GLIBC_2.31 __iswalpha_l F +GLIBC_2.31 __iswblank_l F +GLIBC_2.31 __iswcntrl_l F +GLIBC_2.31 __iswctype F +GLIBC_2.31 __iswctype_l F +GLIBC_2.31 __iswdigit_l F +GLIBC_2.31 __iswgraph_l F +GLIBC_2.31 __iswlower_l F +GLIBC_2.31 __iswprint_l F +GLIBC_2.31 __iswpunct_l F +GLIBC_2.31 __iswspace_l F +GLIBC_2.31 __iswupper_l F +GLIBC_2.31 __iswxdigit_l F +GLIBC_2.31 __isxdigit_l F +GLIBC_2.31 __ivaliduser F +GLIBC_2.31 __key_decryptsession_pk_LOCAL D 0x4 +GLIBC_2.31 __key_encryptsession_pk_LOCAL D 0x4 +GLIBC_2.31 __key_gendes_LOCAL D 0x4 +GLIBC_2.31 __libc_allocate_rtsig F +GLIBC_2.31 __libc_calloc F +GLIBC_2.31 __libc_current_sigrtmax F +GLIBC_2.31 __libc_current_sigrtmin F +GLIBC_2.31 __libc_free F +GLIBC_2.31 __libc_freeres F +GLIBC_2.31 __libc_init_first F +GLIBC_2.31 __libc_mallinfo F +GLIBC_2.31 __libc_malloc F +GLIBC_2.31 __libc_mallopt F +GLIBC_2.31 __libc_memalign F +GLIBC_2.31 __libc_pvalloc F +GLIBC_2.31 __libc_realloc F +GLIBC_2.31 __libc_sa_len F +GLIBC_2.31 __libc_start_main F +GLIBC_2.31 __libc_valloc F +GLIBC_2.31 __longjmp_chk F +GLIBC_2.31 __lseek F +GLIBC_2.31 __lxstat F +GLIBC_2.31 __lxstat64 F +GLIBC_2.31 __malloc_hook D 0x4 +GLIBC_2.31 __mbrlen F +GLIBC_2.31 __mbrtowc F +GLIBC_2.31 __mbsnrtowcs_chk F +GLIBC_2.31 __mbsrtowcs_chk F +GLIBC_2.31 __mbstowcs_chk F +GLIBC_2.31 __memalign_hook D 0x4 +GLIBC_2.31 __memcpy_chk F +GLIBC_2.31 __memmove_chk F +GLIBC_2.31 __mempcpy F +GLIBC_2.31 __mempcpy_chk F +GLIBC_2.31 __memset_chk F +GLIBC_2.31 __monstartup F +GLIBC_2.31 __morecore D 0x4 +GLIBC_2.31 __nanosleep F +GLIBC_2.31 __newlocale F +GLIBC_2.31 __nl_langinfo_l F +GLIBC_2.31 __nss_configure_lookup F +GLIBC_2.31 __nss_database_lookup F +GLIBC_2.31 __nss_hostname_digits_dots F +GLIBC_2.31 __nss_next F +GLIBC_2.31 __obstack_printf_chk F +GLIBC_2.31 __obstack_vprintf_chk F +GLIBC_2.31 __open F +GLIBC_2.31 __open64 F +GLIBC_2.31 __open64_2 F +GLIBC_2.31 __open_2 F +GLIBC_2.31 __openat64_2 F +GLIBC_2.31 __openat_2 F +GLIBC_2.31 __overflow F +GLIBC_2.31 __pipe F +GLIBC_2.31 __poll F +GLIBC_2.31 __poll_chk F +GLIBC_2.31 __posix_getopt F +GLIBC_2.31 __ppoll_chk F +GLIBC_2.31 __pread64 F +GLIBC_2.31 __pread64_chk F +GLIBC_2.31 __pread_chk F +GLIBC_2.31 __printf_chk F +GLIBC_2.31 __printf_fp F +GLIBC_2.31 __profile_frequency F +GLIBC_2.31 __progname D 0x4 +GLIBC_2.31 __progname_full D 0x4 +GLIBC_2.31 __ptsname_r_chk F +GLIBC_2.31 __pwrite64 F +GLIBC_2.31 __rawmemchr F +GLIBC_2.31 __rcmd_errstr D 0x4 +GLIBC_2.31 __read F +GLIBC_2.31 __read_chk F +GLIBC_2.31 __readlink_chk F +GLIBC_2.31 __readlinkat_chk F +GLIBC_2.31 __realloc_hook D 0x4 +GLIBC_2.31 __realpath_chk F +GLIBC_2.31 __recv_chk F +GLIBC_2.31 __recvfrom_chk F +GLIBC_2.31 __register_atfork F +GLIBC_2.31 __res_init F +GLIBC_2.31 __res_nclose F +GLIBC_2.31 __res_ninit F +GLIBC_2.31 __res_randomid F +GLIBC_2.31 __res_state F +GLIBC_2.31 __riscv_flush_icache F +GLIBC_2.31 __rpc_thread_createerr F +GLIBC_2.31 __rpc_thread_svc_fdset F +GLIBC_2.31 __rpc_thread_svc_max_pollfd F +GLIBC_2.31 __rpc_thread_svc_pollfd F +GLIBC_2.31 __sbrk F +GLIBC_2.31 __sched_cpualloc F +GLIBC_2.31 __sched_cpucount F +GLIBC_2.31 __sched_cpufree F +GLIBC_2.31 __sched_get_priority_max F +GLIBC_2.31 __sched_get_priority_min F +GLIBC_2.31 __sched_getparam F +GLIBC_2.31 __sched_getscheduler F +GLIBC_2.31 __sched_setscheduler F +GLIBC_2.31 __sched_yield F +GLIBC_2.31 __select F +GLIBC_2.31 __send F +GLIBC_2.31 __setmntent F +GLIBC_2.31 __setpgid F +GLIBC_2.31 __sigaction F +GLIBC_2.31 __signbit F +GLIBC_2.31 __signbitf F +GLIBC_2.31 __signbitl F +GLIBC_2.31 __sigpause F +GLIBC_2.31 __sigsetjmp F +GLIBC_2.31 __sigsuspend F +GLIBC_2.31 __snprintf_chk F +GLIBC_2.31 __sprintf_chk F +GLIBC_2.31 __stack_chk_fail F +GLIBC_2.31 __statfs F +GLIBC_2.31 __stpcpy F +GLIBC_2.31 __stpcpy_chk F +GLIBC_2.31 __stpncpy F +GLIBC_2.31 __stpncpy_chk F +GLIBC_2.31 __strcasecmp F +GLIBC_2.31 __strcasecmp_l F +GLIBC_2.31 __strcasestr F +GLIBC_2.31 __strcat_chk F +GLIBC_2.31 __strcoll_l F +GLIBC_2.31 __strcpy_chk F +GLIBC_2.31 __strdup F +GLIBC_2.31 __strerror_r F +GLIBC_2.31 __strfmon_l F +GLIBC_2.31 __strftime_l F +GLIBC_2.31 __strncasecmp_l F +GLIBC_2.31 __strncat_chk F +GLIBC_2.31 __strncpy_chk F +GLIBC_2.31 __strndup F +GLIBC_2.31 __strsep_g F +GLIBC_2.31 __strtod_internal F +GLIBC_2.31 __strtod_l F +GLIBC_2.31 __strtof_internal F +GLIBC_2.31 __strtof_l F +GLIBC_2.31 __strtok_r F +GLIBC_2.31 __strtol_internal F +GLIBC_2.31 __strtol_l F +GLIBC_2.31 __strtold_internal F +GLIBC_2.31 __strtold_l F +GLIBC_2.31 __strtoll_internal F +GLIBC_2.31 __strtoll_l F +GLIBC_2.31 __strtoul_internal F +GLIBC_2.31 __strtoul_l F +GLIBC_2.31 __strtoull_internal F +GLIBC_2.31 __strtoull_l F +GLIBC_2.31 __strverscmp F +GLIBC_2.31 __strxfrm_l F +GLIBC_2.31 __swprintf_chk F +GLIBC_2.31 __sysconf F +GLIBC_2.31 __syslog_chk F +GLIBC_2.31 __sysv_signal F +GLIBC_2.31 __timezone D 0x4 +GLIBC_2.31 __toascii_l F +GLIBC_2.31 __tolower_l F +GLIBC_2.31 __toupper_l F +GLIBC_2.31 __towctrans F +GLIBC_2.31 __towctrans_l F +GLIBC_2.31 __towlower_l F +GLIBC_2.31 __towupper_l F +GLIBC_2.31 __ttyname_r_chk F +GLIBC_2.31 __tzname D 0x8 +GLIBC_2.31 __uflow F +GLIBC_2.31 __underflow F +GLIBC_2.31 __uselocale F +GLIBC_2.31 __vasprintf_chk F +GLIBC_2.31 __vdprintf_chk F +GLIBC_2.31 __vfork F +GLIBC_2.31 __vfprintf_chk F +GLIBC_2.31 __vfscanf F +GLIBC_2.31 __vfwprintf_chk F +GLIBC_2.31 __vprintf_chk F +GLIBC_2.31 __vsnprintf F +GLIBC_2.31 __vsnprintf_chk F +GLIBC_2.31 __vsprintf_chk F +GLIBC_2.31 __vsscanf F +GLIBC_2.31 __vswprintf_chk F +GLIBC_2.31 __vsyslog_chk F +GLIBC_2.31 __vwprintf_chk F +GLIBC_2.31 __wait F +GLIBC_2.31 __waitpid F +GLIBC_2.31 __wcpcpy_chk F +GLIBC_2.31 __wcpncpy_chk F +GLIBC_2.31 __wcrtomb_chk F +GLIBC_2.31 __wcscasecmp_l F +GLIBC_2.31 __wcscat_chk F +GLIBC_2.31 __wcscoll_l F +GLIBC_2.31 __wcscpy_chk F +GLIBC_2.31 __wcsftime_l F +GLIBC_2.31 __wcsncasecmp_l F +GLIBC_2.31 __wcsncat_chk F +GLIBC_2.31 __wcsncpy_chk F +GLIBC_2.31 __wcsnrtombs_chk F +GLIBC_2.31 __wcsrtombs_chk F +GLIBC_2.31 __wcstod_internal F +GLIBC_2.31 __wcstod_l F +GLIBC_2.31 __wcstof_internal F +GLIBC_2.31 __wcstof_l F +GLIBC_2.31 __wcstol_internal F +GLIBC_2.31 __wcstol_l F +GLIBC_2.31 __wcstold_internal F +GLIBC_2.31 __wcstold_l F +GLIBC_2.31 __wcstoll_internal F +GLIBC_2.31 __wcstoll_l F +GLIBC_2.31 __wcstombs_chk F +GLIBC_2.31 __wcstoul_internal F +GLIBC_2.31 __wcstoul_l F +GLIBC_2.31 __wcstoull_internal F +GLIBC_2.31 __wcstoull_l F +GLIBC_2.31 __wcsxfrm_l F +GLIBC_2.31 __wctomb_chk F +GLIBC_2.31 __wctrans_l F +GLIBC_2.31 __wctype_l F +GLIBC_2.31 __wmemcpy_chk F +GLIBC_2.31 __wmemmove_chk F +GLIBC_2.31 __wmempcpy_chk F +GLIBC_2.31 __wmemset_chk F +GLIBC_2.31 __woverflow F +GLIBC_2.31 __wprintf_chk F +GLIBC_2.31 __write F +GLIBC_2.31 __wuflow F +GLIBC_2.31 __wunderflow F +GLIBC_2.31 __xmknod F +GLIBC_2.31 __xmknodat F +GLIBC_2.31 __xpg_basename F +GLIBC_2.31 __xpg_sigpause F +GLIBC_2.31 __xpg_strerror_r F +GLIBC_2.31 __xstat F +GLIBC_2.31 __xstat64 F +GLIBC_2.31 _authenticate F +GLIBC_2.31 _dl_mcount_wrapper F +GLIBC_2.31 _dl_mcount_wrapper_check F +GLIBC_2.31 _environ D 0x4 +GLIBC_2.31 _exit F +GLIBC_2.31 _flushlbf F +GLIBC_2.31 _libc_intl_domainname D 0x5 +GLIBC_2.31 _longjmp F +GLIBC_2.31 _mcleanup F +GLIBC_2.31 _mcount F +GLIBC_2.31 _nl_default_dirname D 0x12 +GLIBC_2.31 _nl_domain_bindings D 0x4 +GLIBC_2.31 _nl_msg_cat_cntr D 0x4 +GLIBC_2.31 _null_auth D 0xc +GLIBC_2.31 _obstack_allocated_p F +GLIBC_2.31 _obstack_begin F +GLIBC_2.31 _obstack_begin_1 F +GLIBC_2.31 _obstack_free F +GLIBC_2.31 _obstack_memory_used F +GLIBC_2.31 _obstack_newchunk F +GLIBC_2.31 _res D 0x200 +GLIBC_2.31 _res_hconf D 0x30 +GLIBC_2.31 _rpc_dtablesize F +GLIBC_2.31 _seterr_reply F +GLIBC_2.31 _setjmp F +GLIBC_2.31 _sys_errlist D 0x21c +GLIBC_2.31 _sys_nerr D 0x4 +GLIBC_2.31 _sys_siglist D 0x104 +GLIBC_2.31 _tolower F +GLIBC_2.31 _toupper F +GLIBC_2.31 a64l F +GLIBC_2.31 abort F +GLIBC_2.31 abs F +GLIBC_2.31 accept F +GLIBC_2.31 accept4 F +GLIBC_2.31 access F +GLIBC_2.31 acct F +GLIBC_2.31 addmntent F +GLIBC_2.31 addseverity F +GLIBC_2.31 adjtime F +GLIBC_2.31 adjtimex F +GLIBC_2.31 alarm F +GLIBC_2.31 aligned_alloc F +GLIBC_2.31 alphasort F +GLIBC_2.31 alphasort64 F +GLIBC_2.31 argp_err_exit_status D 0x4 +GLIBC_2.31 argp_error F +GLIBC_2.31 argp_failure F +GLIBC_2.31 argp_help F +GLIBC_2.31 argp_parse F +GLIBC_2.31 argp_program_bug_address D 0x4 +GLIBC_2.31 argp_program_version D 0x4 +GLIBC_2.31 argp_program_version_hook D 0x4 +GLIBC_2.31 argp_state_help F +GLIBC_2.31 argp_usage F +GLIBC_2.31 argz_add F +GLIBC_2.31 argz_add_sep F +GLIBC_2.31 argz_append F +GLIBC_2.31 argz_count F +GLIBC_2.31 argz_create F +GLIBC_2.31 argz_create_sep F +GLIBC_2.31 argz_delete F +GLIBC_2.31 argz_extract F +GLIBC_2.31 argz_insert F +GLIBC_2.31 argz_next F +GLIBC_2.31 argz_replace F +GLIBC_2.31 argz_stringify F +GLIBC_2.31 asctime F +GLIBC_2.31 asctime_r F +GLIBC_2.31 asprintf F +GLIBC_2.31 atof F +GLIBC_2.31 atoi F +GLIBC_2.31 atol F +GLIBC_2.31 atoll F +GLIBC_2.31 authdes_create F +GLIBC_2.31 authdes_getucred F +GLIBC_2.31 authdes_pk_create F +GLIBC_2.31 authnone_create F +GLIBC_2.31 authunix_create F +GLIBC_2.31 authunix_create_default F +GLIBC_2.31 backtrace F +GLIBC_2.31 backtrace_symbols F +GLIBC_2.31 backtrace_symbols_fd F +GLIBC_2.31 basename F +GLIBC_2.31 bcmp F +GLIBC_2.31 bcopy F +GLIBC_2.31 bind F +GLIBC_2.31 bind_textdomain_codeset F +GLIBC_2.31 bindresvport F +GLIBC_2.31 bindtextdomain F +GLIBC_2.31 brk F +GLIBC_2.31 bsd_signal F +GLIBC_2.31 bsearch F +GLIBC_2.31 btowc F +GLIBC_2.31 bzero F +GLIBC_2.31 c16rtomb F +GLIBC_2.31 c32rtomb F +GLIBC_2.31 calloc F +GLIBC_2.31 callrpc F +GLIBC_2.31 canonicalize_file_name F +GLIBC_2.31 capget F +GLIBC_2.31 capset F +GLIBC_2.31 catclose F +GLIBC_2.31 catgets F +GLIBC_2.31 catopen F +GLIBC_2.31 cbc_crypt F +GLIBC_2.31 cfgetispeed F +GLIBC_2.31 cfgetospeed F +GLIBC_2.31 cfmakeraw F +GLIBC_2.31 cfsetispeed F +GLIBC_2.31 cfsetospeed F +GLIBC_2.31 cfsetspeed F +GLIBC_2.31 chdir F +GLIBC_2.31 chflags F +GLIBC_2.31 chmod F +GLIBC_2.31 chown F +GLIBC_2.31 chroot F +GLIBC_2.31 clearenv F +GLIBC_2.31 clearerr F +GLIBC_2.31 clearerr_unlocked F +GLIBC_2.31 clnt_broadcast F +GLIBC_2.31 clnt_create F +GLIBC_2.31 clnt_pcreateerror F +GLIBC_2.31 clnt_perrno F +GLIBC_2.31 clnt_perror F +GLIBC_2.31 clnt_spcreateerror F +GLIBC_2.31 clnt_sperrno F +GLIBC_2.31 clnt_sperror F +GLIBC_2.31 clntraw_create F +GLIBC_2.31 clnttcp_create F +GLIBC_2.31 clntudp_bufcreate F +GLIBC_2.31 clntudp_create F +GLIBC_2.31 clntunix_create F +GLIBC_2.31 clock F +GLIBC_2.31 clock_adjtime F +GLIBC_2.31 clock_getcpuclockid F +GLIBC_2.31 clock_getres F +GLIBC_2.31 clock_gettime F +GLIBC_2.31 clock_nanosleep F +GLIBC_2.31 clock_settime F +GLIBC_2.31 clone F +GLIBC_2.31 close F +GLIBC_2.31 closedir F +GLIBC_2.31 closelog F +GLIBC_2.31 confstr F +GLIBC_2.31 connect F +GLIBC_2.31 copy_file_range F +GLIBC_2.31 copysign F +GLIBC_2.31 copysignf F +GLIBC_2.31 copysignl F +GLIBC_2.31 creat F +GLIBC_2.31 creat64 F +GLIBC_2.31 ctermid F +GLIBC_2.31 ctime F +GLIBC_2.31 ctime_r F +GLIBC_2.31 cuserid F +GLIBC_2.31 daemon F +GLIBC_2.31 daylight D 0x4 +GLIBC_2.31 dcgettext F +GLIBC_2.31 dcngettext F +GLIBC_2.31 delete_module F +GLIBC_2.31 des_setparity F +GLIBC_2.31 dgettext F +GLIBC_2.31 difftime F +GLIBC_2.31 dirfd F +GLIBC_2.31 dirname F +GLIBC_2.31 div F +GLIBC_2.31 dl_iterate_phdr F +GLIBC_2.31 dngettext F +GLIBC_2.31 dprintf F +GLIBC_2.31 drand48 F +GLIBC_2.31 drand48_r F +GLIBC_2.31 dup F +GLIBC_2.31 dup2 F +GLIBC_2.31 dup3 F +GLIBC_2.31 duplocale F +GLIBC_2.31 dysize F +GLIBC_2.31 eaccess F +GLIBC_2.31 ecb_crypt F +GLIBC_2.31 ecvt F +GLIBC_2.31 ecvt_r F +GLIBC_2.31 endaliasent F +GLIBC_2.31 endfsent F +GLIBC_2.31 endgrent F +GLIBC_2.31 endhostent F +GLIBC_2.31 endmntent F +GLIBC_2.31 endnetent F +GLIBC_2.31 endnetgrent F +GLIBC_2.31 endprotoent F +GLIBC_2.31 endpwent F +GLIBC_2.31 endrpcent F +GLIBC_2.31 endservent F +GLIBC_2.31 endsgent F +GLIBC_2.31 endspent F +GLIBC_2.31 endttyent F +GLIBC_2.31 endusershell F +GLIBC_2.31 endutent F +GLIBC_2.31 endutxent F +GLIBC_2.31 environ D 0x4 +GLIBC_2.31 envz_add F +GLIBC_2.31 envz_entry F +GLIBC_2.31 envz_get F +GLIBC_2.31 envz_merge F +GLIBC_2.31 envz_remove F +GLIBC_2.31 envz_strip F +GLIBC_2.31 epoll_create F +GLIBC_2.31 epoll_create1 F +GLIBC_2.31 epoll_ctl F +GLIBC_2.31 epoll_pwait F +GLIBC_2.31 epoll_wait F +GLIBC_2.31 erand48 F +GLIBC_2.31 erand48_r F +GLIBC_2.31 err F +GLIBC_2.31 error F +GLIBC_2.31 error_at_line F +GLIBC_2.31 error_message_count D 0x4 +GLIBC_2.31 error_one_per_line D 0x4 +GLIBC_2.31 error_print_progname D 0x4 +GLIBC_2.31 errx F +GLIBC_2.31 ether_aton F +GLIBC_2.31 ether_aton_r F +GLIBC_2.31 ether_hostton F +GLIBC_2.31 ether_line F +GLIBC_2.31 ether_ntoa F +GLIBC_2.31 ether_ntoa_r F +GLIBC_2.31 ether_ntohost F +GLIBC_2.31 euidaccess F +GLIBC_2.31 eventfd F +GLIBC_2.31 eventfd_read F +GLIBC_2.31 eventfd_write F +GLIBC_2.31 execl F +GLIBC_2.31 execle F +GLIBC_2.31 execlp F +GLIBC_2.31 execv F +GLIBC_2.31 execve F +GLIBC_2.31 execvp F +GLIBC_2.31 execvpe F +GLIBC_2.31 exit F +GLIBC_2.31 explicit_bzero F +GLIBC_2.31 faccessat F +GLIBC_2.31 fallocate F +GLIBC_2.31 fallocate64 F +GLIBC_2.31 fanotify_init F +GLIBC_2.31 fanotify_mark F +GLIBC_2.31 fattach F +GLIBC_2.31 fchdir F +GLIBC_2.31 fchflags F +GLIBC_2.31 fchmod F +GLIBC_2.31 fchmodat F +GLIBC_2.31 fchown F +GLIBC_2.31 fchownat F +GLIBC_2.31 fclose F +GLIBC_2.31 fcloseall F +GLIBC_2.31 fcntl F +GLIBC_2.31 fcntl64 F +GLIBC_2.31 fcvt F +GLIBC_2.31 fcvt_r F +GLIBC_2.31 fdatasync F +GLIBC_2.31 fdetach F +GLIBC_2.31 fdopen F +GLIBC_2.31 fdopendir F +GLIBC_2.31 feof F +GLIBC_2.31 feof_unlocked F +GLIBC_2.31 ferror F +GLIBC_2.31 ferror_unlocked F +GLIBC_2.31 fexecve F +GLIBC_2.31 fflush F +GLIBC_2.31 fflush_unlocked F +GLIBC_2.31 ffs F +GLIBC_2.31 ffsl F +GLIBC_2.31 ffsll F +GLIBC_2.31 fgetc F +GLIBC_2.31 fgetc_unlocked F +GLIBC_2.31 fgetgrent F +GLIBC_2.31 fgetgrent_r F +GLIBC_2.31 fgetpos F +GLIBC_2.31 fgetpos64 F +GLIBC_2.31 fgetpwent F +GLIBC_2.31 fgetpwent_r F +GLIBC_2.31 fgets F +GLIBC_2.31 fgets_unlocked F +GLIBC_2.31 fgetsgent F +GLIBC_2.31 fgetsgent_r F +GLIBC_2.31 fgetspent F +GLIBC_2.31 fgetspent_r F +GLIBC_2.31 fgetwc F +GLIBC_2.31 fgetwc_unlocked F +GLIBC_2.31 fgetws F +GLIBC_2.31 fgetws_unlocked F +GLIBC_2.31 fgetxattr F +GLIBC_2.31 fileno F +GLIBC_2.31 fileno_unlocked F +GLIBC_2.31 finite F +GLIBC_2.31 finitef F +GLIBC_2.31 finitel F +GLIBC_2.31 flistxattr F +GLIBC_2.31 flock F +GLIBC_2.31 flockfile F +GLIBC_2.31 fmemopen F +GLIBC_2.31 fmtmsg F +GLIBC_2.31 fnmatch F +GLIBC_2.31 fopen F +GLIBC_2.31 fopen64 F +GLIBC_2.31 fopencookie F +GLIBC_2.31 fork F +GLIBC_2.31 fpathconf F +GLIBC_2.31 fprintf F +GLIBC_2.31 fputc F +GLIBC_2.31 fputc_unlocked F +GLIBC_2.31 fputs F +GLIBC_2.31 fputs_unlocked F +GLIBC_2.31 fputwc F +GLIBC_2.31 fputwc_unlocked F +GLIBC_2.31 fputws F +GLIBC_2.31 fputws_unlocked F +GLIBC_2.31 fread F +GLIBC_2.31 fread_unlocked F +GLIBC_2.31 free F +GLIBC_2.31 freeaddrinfo F +GLIBC_2.31 freeifaddrs F +GLIBC_2.31 freelocale F +GLIBC_2.31 fremovexattr F +GLIBC_2.31 freopen F +GLIBC_2.31 freopen64 F +GLIBC_2.31 frexp F +GLIBC_2.31 frexpf F +GLIBC_2.31 frexpl F +GLIBC_2.31 fscanf F +GLIBC_2.31 fseek F +GLIBC_2.31 fseeko F +GLIBC_2.31 fseeko64 F +GLIBC_2.31 fsetpos F +GLIBC_2.31 fsetpos64 F +GLIBC_2.31 fsetxattr F +GLIBC_2.31 fstatfs F +GLIBC_2.31 fstatfs64 F +GLIBC_2.31 fstatvfs F +GLIBC_2.31 fstatvfs64 F +GLIBC_2.31 fsync F +GLIBC_2.31 ftell F +GLIBC_2.31 ftello F +GLIBC_2.31 ftello64 F +GLIBC_2.31 ftime F +GLIBC_2.31 ftok F +GLIBC_2.31 ftruncate F +GLIBC_2.31 ftruncate64 F +GLIBC_2.31 ftrylockfile F +GLIBC_2.31 fts64_children F +GLIBC_2.31 fts64_close F +GLIBC_2.31 fts64_open F +GLIBC_2.31 fts64_read F +GLIBC_2.31 fts64_set F +GLIBC_2.31 fts_children F +GLIBC_2.31 fts_close F +GLIBC_2.31 fts_open F +GLIBC_2.31 fts_read F +GLIBC_2.31 fts_set F +GLIBC_2.31 ftw F +GLIBC_2.31 ftw64 F +GLIBC_2.31 funlockfile F +GLIBC_2.31 futimens F +GLIBC_2.31 futimes F +GLIBC_2.31 futimesat F +GLIBC_2.31 fwide F +GLIBC_2.31 fwprintf F +GLIBC_2.31 fwrite F +GLIBC_2.31 fwrite_unlocked F +GLIBC_2.31 fwscanf F +GLIBC_2.31 gai_strerror F +GLIBC_2.31 gcvt F +GLIBC_2.31 get_avphys_pages F +GLIBC_2.31 get_current_dir_name F +GLIBC_2.31 get_myaddress F +GLIBC_2.31 get_nprocs F +GLIBC_2.31 get_nprocs_conf F +GLIBC_2.31 get_phys_pages F +GLIBC_2.31 getaddrinfo F +GLIBC_2.31 getaliasbyname F +GLIBC_2.31 getaliasbyname_r F +GLIBC_2.31 getaliasent F +GLIBC_2.31 getaliasent_r F +GLIBC_2.31 getauxval F +GLIBC_2.31 getc F +GLIBC_2.31 getc_unlocked F +GLIBC_2.31 getchar F +GLIBC_2.31 getchar_unlocked F +GLIBC_2.31 getcontext F +GLIBC_2.31 getcpu F +GLIBC_2.31 getcwd F +GLIBC_2.31 getdate F +GLIBC_2.31 getdate_err D 0x4 +GLIBC_2.31 getdate_r F +GLIBC_2.31 getdelim F +GLIBC_2.31 getdirentries F +GLIBC_2.31 getdirentries64 F +GLIBC_2.31 getdomainname F +GLIBC_2.31 getdtablesize F +GLIBC_2.31 getegid F +GLIBC_2.31 getentropy F +GLIBC_2.31 getenv F +GLIBC_2.31 geteuid F +GLIBC_2.31 getfsent F +GLIBC_2.31 getfsfile F +GLIBC_2.31 getfsspec F +GLIBC_2.31 getgid F +GLIBC_2.31 getgrent F +GLIBC_2.31 getgrent_r F +GLIBC_2.31 getgrgid F +GLIBC_2.31 getgrgid_r F +GLIBC_2.31 getgrnam F +GLIBC_2.31 getgrnam_r F +GLIBC_2.31 getgrouplist F +GLIBC_2.31 getgroups F +GLIBC_2.31 gethostbyaddr F +GLIBC_2.31 gethostbyaddr_r F +GLIBC_2.31 gethostbyname F +GLIBC_2.31 gethostbyname2 F +GLIBC_2.31 gethostbyname2_r F +GLIBC_2.31 gethostbyname_r F +GLIBC_2.31 gethostent F +GLIBC_2.31 gethostent_r F +GLIBC_2.31 gethostid F +GLIBC_2.31 gethostname F +GLIBC_2.31 getifaddrs F +GLIBC_2.31 getipv4sourcefilter F +GLIBC_2.31 getitimer F +GLIBC_2.31 getline F +GLIBC_2.31 getloadavg F +GLIBC_2.31 getlogin F +GLIBC_2.31 getlogin_r F +GLIBC_2.31 getmntent F +GLIBC_2.31 getmntent_r F +GLIBC_2.31 getmsg F +GLIBC_2.31 getnameinfo F +GLIBC_2.31 getnetbyaddr F +GLIBC_2.31 getnetbyaddr_r F +GLIBC_2.31 getnetbyname F +GLIBC_2.31 getnetbyname_r F +GLIBC_2.31 getnetent F +GLIBC_2.31 getnetent_r F +GLIBC_2.31 getnetgrent F +GLIBC_2.31 getnetgrent_r F +GLIBC_2.31 getnetname F +GLIBC_2.31 getopt F +GLIBC_2.31 getopt_long F +GLIBC_2.31 getopt_long_only F +GLIBC_2.31 getpagesize F +GLIBC_2.31 getpass F +GLIBC_2.31 getpeername F +GLIBC_2.31 getpgid F +GLIBC_2.31 getpgrp F +GLIBC_2.31 getpid F +GLIBC_2.31 getpmsg F +GLIBC_2.31 getppid F +GLIBC_2.31 getpriority F +GLIBC_2.31 getprotobyname F +GLIBC_2.31 getprotobyname_r F +GLIBC_2.31 getprotobynumber F +GLIBC_2.31 getprotobynumber_r F +GLIBC_2.31 getprotoent F +GLIBC_2.31 getprotoent_r F +GLIBC_2.31 getpt F +GLIBC_2.31 getpublickey F +GLIBC_2.31 getpw F +GLIBC_2.31 getpwent F +GLIBC_2.31 getpwent_r F +GLIBC_2.31 getpwnam F +GLIBC_2.31 getpwnam_r F +GLIBC_2.31 getpwuid F +GLIBC_2.31 getpwuid_r F +GLIBC_2.31 getrandom F +GLIBC_2.31 getresgid F +GLIBC_2.31 getresuid F +GLIBC_2.31 getrlimit F +GLIBC_2.31 getrlimit64 F +GLIBC_2.31 getrpcbyname F +GLIBC_2.31 getrpcbyname_r F +GLIBC_2.31 getrpcbynumber F +GLIBC_2.31 getrpcbynumber_r F +GLIBC_2.31 getrpcent F +GLIBC_2.31 getrpcent_r F +GLIBC_2.31 getrpcport F +GLIBC_2.31 getrusage F +GLIBC_2.31 gets F +GLIBC_2.31 getsecretkey F +GLIBC_2.31 getservbyname F +GLIBC_2.31 getservbyname_r F +GLIBC_2.31 getservbyport F +GLIBC_2.31 getservbyport_r F +GLIBC_2.31 getservent F +GLIBC_2.31 getservent_r F +GLIBC_2.31 getsgent F +GLIBC_2.31 getsgent_r F +GLIBC_2.31 getsgnam F +GLIBC_2.31 getsgnam_r F +GLIBC_2.31 getsid F +GLIBC_2.31 getsockname F +GLIBC_2.31 getsockopt F +GLIBC_2.31 getsourcefilter F +GLIBC_2.31 getspent F +GLIBC_2.31 getspent_r F +GLIBC_2.31 getspnam F +GLIBC_2.31 getspnam_r F +GLIBC_2.31 getsubopt F +GLIBC_2.31 gettext F +GLIBC_2.31 gettimeofday F +GLIBC_2.31 getttyent F +GLIBC_2.31 getttynam F +GLIBC_2.31 getuid F +GLIBC_2.31 getusershell F +GLIBC_2.31 getutent F +GLIBC_2.31 getutent_r F +GLIBC_2.31 getutid F +GLIBC_2.31 getutid_r F +GLIBC_2.31 getutline F +GLIBC_2.31 getutline_r F +GLIBC_2.31 getutmp F +GLIBC_2.31 getutmpx F +GLIBC_2.31 getutxent F +GLIBC_2.31 getutxid F +GLIBC_2.31 getutxline F +GLIBC_2.31 getw F +GLIBC_2.31 getwc F +GLIBC_2.31 getwc_unlocked F +GLIBC_2.31 getwchar F +GLIBC_2.31 getwchar_unlocked F +GLIBC_2.31 getwd F +GLIBC_2.31 getxattr F +GLIBC_2.31 glob F +GLIBC_2.31 glob64 F +GLIBC_2.31 glob_pattern_p F +GLIBC_2.31 globfree F +GLIBC_2.31 globfree64 F +GLIBC_2.31 gmtime F +GLIBC_2.31 gmtime_r F +GLIBC_2.31 gnu_dev_major F +GLIBC_2.31 gnu_dev_makedev F +GLIBC_2.31 gnu_dev_minor F +GLIBC_2.31 gnu_get_libc_release F +GLIBC_2.31 gnu_get_libc_version F +GLIBC_2.31 grantpt F +GLIBC_2.31 group_member F +GLIBC_2.31 gsignal F +GLIBC_2.31 gtty F +GLIBC_2.31 h_errlist D 0x14 +GLIBC_2.31 h_nerr D 0x4 +GLIBC_2.31 hasmntopt F +GLIBC_2.31 hcreate F +GLIBC_2.31 hcreate_r F +GLIBC_2.31 hdestroy F +GLIBC_2.31 hdestroy_r F +GLIBC_2.31 herror F +GLIBC_2.31 host2netname F +GLIBC_2.31 hsearch F +GLIBC_2.31 hsearch_r F +GLIBC_2.31 hstrerror F +GLIBC_2.31 htonl F +GLIBC_2.31 htons F +GLIBC_2.31 iconv F +GLIBC_2.31 iconv_close F +GLIBC_2.31 iconv_open F +GLIBC_2.31 if_freenameindex F +GLIBC_2.31 if_indextoname F +GLIBC_2.31 if_nameindex F +GLIBC_2.31 if_nametoindex F +GLIBC_2.31 imaxabs F +GLIBC_2.31 imaxdiv F +GLIBC_2.31 in6addr_any D 0x10 +GLIBC_2.31 in6addr_loopback D 0x10 +GLIBC_2.31 index F +GLIBC_2.31 inet6_opt_append F +GLIBC_2.31 inet6_opt_find F +GLIBC_2.31 inet6_opt_finish F +GLIBC_2.31 inet6_opt_get_val F +GLIBC_2.31 inet6_opt_init F +GLIBC_2.31 inet6_opt_next F +GLIBC_2.31 inet6_opt_set_val F +GLIBC_2.31 inet6_option_alloc F +GLIBC_2.31 inet6_option_append F +GLIBC_2.31 inet6_option_find F +GLIBC_2.31 inet6_option_init F +GLIBC_2.31 inet6_option_next F +GLIBC_2.31 inet6_option_space F +GLIBC_2.31 inet6_rth_add F +GLIBC_2.31 inet6_rth_getaddr F +GLIBC_2.31 inet6_rth_init F +GLIBC_2.31 inet6_rth_reverse F +GLIBC_2.31 inet6_rth_segments F +GLIBC_2.31 inet6_rth_space F +GLIBC_2.31 inet_addr F +GLIBC_2.31 inet_aton F +GLIBC_2.31 inet_lnaof F +GLIBC_2.31 inet_makeaddr F +GLIBC_2.31 inet_netof F +GLIBC_2.31 inet_network F +GLIBC_2.31 inet_nsap_addr F +GLIBC_2.31 inet_nsap_ntoa F +GLIBC_2.31 inet_ntoa F +GLIBC_2.31 inet_ntop F +GLIBC_2.31 inet_pton F +GLIBC_2.31 init_module F +GLIBC_2.31 initgroups F +GLIBC_2.31 initstate F +GLIBC_2.31 initstate_r F +GLIBC_2.31 innetgr F +GLIBC_2.31 inotify_add_watch F +GLIBC_2.31 inotify_init F +GLIBC_2.31 inotify_init1 F +GLIBC_2.31 inotify_rm_watch F +GLIBC_2.31 insque F +GLIBC_2.31 ioctl F +GLIBC_2.31 iruserok F +GLIBC_2.31 iruserok_af F +GLIBC_2.31 isalnum F +GLIBC_2.31 isalnum_l F +GLIBC_2.31 isalpha F +GLIBC_2.31 isalpha_l F +GLIBC_2.31 isascii F +GLIBC_2.31 isastream F +GLIBC_2.31 isatty F +GLIBC_2.31 isblank F +GLIBC_2.31 isblank_l F +GLIBC_2.31 iscntrl F +GLIBC_2.31 iscntrl_l F +GLIBC_2.31 isctype F +GLIBC_2.31 isdigit F +GLIBC_2.31 isdigit_l F +GLIBC_2.31 isfdtype F +GLIBC_2.31 isgraph F +GLIBC_2.31 isgraph_l F +GLIBC_2.31 isinf F +GLIBC_2.31 isinff F +GLIBC_2.31 isinfl F +GLIBC_2.31 islower F +GLIBC_2.31 islower_l F +GLIBC_2.31 isnan F +GLIBC_2.31 isnanf F +GLIBC_2.31 isnanl F +GLIBC_2.31 isprint F +GLIBC_2.31 isprint_l F +GLIBC_2.31 ispunct F +GLIBC_2.31 ispunct_l F +GLIBC_2.31 isspace F +GLIBC_2.31 isspace_l F +GLIBC_2.31 isupper F +GLIBC_2.31 isupper_l F +GLIBC_2.31 iswalnum F +GLIBC_2.31 iswalnum_l F +GLIBC_2.31 iswalpha F +GLIBC_2.31 iswalpha_l F +GLIBC_2.31 iswblank F +GLIBC_2.31 iswblank_l F +GLIBC_2.31 iswcntrl F +GLIBC_2.31 iswcntrl_l F +GLIBC_2.31 iswctype F +GLIBC_2.31 iswctype_l F +GLIBC_2.31 iswdigit F +GLIBC_2.31 iswdigit_l F +GLIBC_2.31 iswgraph F +GLIBC_2.31 iswgraph_l F +GLIBC_2.31 iswlower F +GLIBC_2.31 iswlower_l F +GLIBC_2.31 iswprint F +GLIBC_2.31 iswprint_l F +GLIBC_2.31 iswpunct F +GLIBC_2.31 iswpunct_l F +GLIBC_2.31 iswspace F +GLIBC_2.31 iswspace_l F +GLIBC_2.31 iswupper F +GLIBC_2.31 iswupper_l F +GLIBC_2.31 iswxdigit F +GLIBC_2.31 iswxdigit_l F +GLIBC_2.31 isxdigit F +GLIBC_2.31 isxdigit_l F +GLIBC_2.31 jrand48 F +GLIBC_2.31 jrand48_r F +GLIBC_2.31 key_decryptsession F +GLIBC_2.31 key_decryptsession_pk F +GLIBC_2.31 key_encryptsession F +GLIBC_2.31 key_encryptsession_pk F +GLIBC_2.31 key_gendes F +GLIBC_2.31 key_get_conv F +GLIBC_2.31 key_secretkey_is_set F +GLIBC_2.31 key_setnet F +GLIBC_2.31 key_setsecret F +GLIBC_2.31 kill F +GLIBC_2.31 killpg F +GLIBC_2.31 klogctl F +GLIBC_2.31 l64a F +GLIBC_2.31 labs F +GLIBC_2.31 lchmod F +GLIBC_2.31 lchown F +GLIBC_2.31 lckpwdf F +GLIBC_2.31 lcong48 F +GLIBC_2.31 lcong48_r F +GLIBC_2.31 ldexp F +GLIBC_2.31 ldexpf F +GLIBC_2.31 ldexpl F +GLIBC_2.31 ldiv F +GLIBC_2.31 lfind F +GLIBC_2.31 lgetxattr F +GLIBC_2.31 link F +GLIBC_2.31 linkat F +GLIBC_2.31 listen F +GLIBC_2.31 listxattr F +GLIBC_2.31 llabs F +GLIBC_2.31 lldiv F +GLIBC_2.31 llistxattr F +GLIBC_2.31 localeconv F +GLIBC_2.31 localtime F +GLIBC_2.31 localtime_r F +GLIBC_2.31 lockf F +GLIBC_2.31 lockf64 F +GLIBC_2.31 longjmp F +GLIBC_2.31 lrand48 F +GLIBC_2.31 lrand48_r F +GLIBC_2.31 lremovexattr F +GLIBC_2.31 lsearch F +GLIBC_2.31 lseek F +GLIBC_2.31 lseek64 F +GLIBC_2.31 lsetxattr F +GLIBC_2.31 lutimes F +GLIBC_2.31 madvise F +GLIBC_2.31 makecontext F +GLIBC_2.31 mallinfo F +GLIBC_2.31 malloc F +GLIBC_2.31 malloc_info F +GLIBC_2.31 malloc_stats F +GLIBC_2.31 malloc_trim F +GLIBC_2.31 malloc_usable_size F +GLIBC_2.31 mallopt F +GLIBC_2.31 mallwatch D 0x4 +GLIBC_2.31 mblen F +GLIBC_2.31 mbrlen F +GLIBC_2.31 mbrtoc16 F +GLIBC_2.31 mbrtoc32 F +GLIBC_2.31 mbrtowc F +GLIBC_2.31 mbsinit F +GLIBC_2.31 mbsnrtowcs F +GLIBC_2.31 mbsrtowcs F +GLIBC_2.31 mbstowcs F +GLIBC_2.31 mbtowc F +GLIBC_2.31 mcheck F +GLIBC_2.31 mcheck_check_all F +GLIBC_2.31 mcheck_pedantic F +GLIBC_2.31 memalign F +GLIBC_2.31 memccpy F +GLIBC_2.31 memchr F +GLIBC_2.31 memcmp F +GLIBC_2.31 memcpy F +GLIBC_2.31 memfd_create F +GLIBC_2.31 memfrob F +GLIBC_2.31 memmem F +GLIBC_2.31 memmove F +GLIBC_2.31 mempcpy F +GLIBC_2.31 memrchr F +GLIBC_2.31 memset F +GLIBC_2.31 mincore F +GLIBC_2.31 mkdir F +GLIBC_2.31 mkdirat F +GLIBC_2.31 mkdtemp F +GLIBC_2.31 mkfifo F +GLIBC_2.31 mkfifoat F +GLIBC_2.31 mkostemp F +GLIBC_2.31 mkostemp64 F +GLIBC_2.31 mkostemps F +GLIBC_2.31 mkostemps64 F +GLIBC_2.31 mkstemp F +GLIBC_2.31 mkstemp64 F +GLIBC_2.31 mkstemps F +GLIBC_2.31 mkstemps64 F +GLIBC_2.31 mktemp F +GLIBC_2.31 mktime F +GLIBC_2.31 mlock F +GLIBC_2.31 mlock2 F +GLIBC_2.31 mlockall F +GLIBC_2.31 mmap F +GLIBC_2.31 mmap64 F +GLIBC_2.31 modf F +GLIBC_2.31 modff F +GLIBC_2.31 modfl F +GLIBC_2.31 moncontrol F +GLIBC_2.31 monstartup F +GLIBC_2.31 mount F +GLIBC_2.31 mprobe F +GLIBC_2.31 mprotect F +GLIBC_2.31 mrand48 F +GLIBC_2.31 mrand48_r F +GLIBC_2.31 mremap F +GLIBC_2.31 msgctl F +GLIBC_2.31 msgget F +GLIBC_2.31 msgrcv F +GLIBC_2.31 msgsnd F +GLIBC_2.31 msync F +GLIBC_2.31 mtrace F +GLIBC_2.31 munlock F +GLIBC_2.31 munlockall F +GLIBC_2.31 munmap F +GLIBC_2.31 muntrace F +GLIBC_2.31 name_to_handle_at F +GLIBC_2.31 nanosleep F +GLIBC_2.31 netname2host F +GLIBC_2.31 netname2user F +GLIBC_2.31 newlocale F +GLIBC_2.31 nftw F +GLIBC_2.31 nftw64 F +GLIBC_2.31 ngettext F +GLIBC_2.31 nice F +GLIBC_2.31 nl_langinfo F +GLIBC_2.31 nl_langinfo_l F +GLIBC_2.31 nrand48 F +GLIBC_2.31 nrand48_r F +GLIBC_2.31 ntohl F +GLIBC_2.31 ntohs F +GLIBC_2.31 ntp_adjtime F +GLIBC_2.31 ntp_gettime F +GLIBC_2.31 ntp_gettimex F +GLIBC_2.31 obstack_alloc_failed_handler D 0x4 +GLIBC_2.31 obstack_exit_failure D 0x4 +GLIBC_2.31 obstack_free F +GLIBC_2.31 obstack_printf F +GLIBC_2.31 obstack_vprintf F +GLIBC_2.31 on_exit F +GLIBC_2.31 open F +GLIBC_2.31 open64 F +GLIBC_2.31 open_by_handle_at F +GLIBC_2.31 open_memstream F +GLIBC_2.31 open_wmemstream F +GLIBC_2.31 openat F +GLIBC_2.31 openat64 F +GLIBC_2.31 opendir F +GLIBC_2.31 openlog F +GLIBC_2.31 optarg D 0x4 +GLIBC_2.31 opterr D 0x4 +GLIBC_2.31 optind D 0x4 +GLIBC_2.31 optopt D 0x4 +GLIBC_2.31 parse_printf_format F +GLIBC_2.31 passwd2des F +GLIBC_2.31 pathconf F +GLIBC_2.31 pause F +GLIBC_2.31 pclose F +GLIBC_2.31 perror F +GLIBC_2.31 personality F +GLIBC_2.31 pipe F +GLIBC_2.31 pipe2 F +GLIBC_2.31 pivot_root F +GLIBC_2.31 pkey_alloc F +GLIBC_2.31 pkey_free F +GLIBC_2.31 pkey_get F +GLIBC_2.31 pkey_mprotect F +GLIBC_2.31 pkey_set F +GLIBC_2.31 pmap_getmaps F +GLIBC_2.31 pmap_getport F +GLIBC_2.31 pmap_rmtcall F +GLIBC_2.31 pmap_set F +GLIBC_2.31 pmap_unset F +GLIBC_2.31 poll F +GLIBC_2.31 popen F +GLIBC_2.31 posix_fadvise F +GLIBC_2.31 posix_fadvise64 F +GLIBC_2.31 posix_fallocate F +GLIBC_2.31 posix_fallocate64 F +GLIBC_2.31 posix_madvise F +GLIBC_2.31 posix_memalign F +GLIBC_2.31 posix_openpt F +GLIBC_2.31 posix_spawn F +GLIBC_2.31 posix_spawn_file_actions_addchdir_np F +GLIBC_2.31 posix_spawn_file_actions_addclose F +GLIBC_2.31 posix_spawn_file_actions_adddup2 F +GLIBC_2.31 posix_spawn_file_actions_addfchdir_np F +GLIBC_2.31 posix_spawn_file_actions_addopen F +GLIBC_2.31 posix_spawn_file_actions_destroy F +GLIBC_2.31 posix_spawn_file_actions_init F +GLIBC_2.31 posix_spawnattr_destroy F +GLIBC_2.31 posix_spawnattr_getflags F +GLIBC_2.31 posix_spawnattr_getpgroup F +GLIBC_2.31 posix_spawnattr_getschedparam F +GLIBC_2.31 posix_spawnattr_getschedpolicy F +GLIBC_2.31 posix_spawnattr_getsigdefault F +GLIBC_2.31 posix_spawnattr_getsigmask F +GLIBC_2.31 posix_spawnattr_init F +GLIBC_2.31 posix_spawnattr_setflags F +GLIBC_2.31 posix_spawnattr_setpgroup F +GLIBC_2.31 posix_spawnattr_setschedparam F +GLIBC_2.31 posix_spawnattr_setschedpolicy F +GLIBC_2.31 posix_spawnattr_setsigdefault F +GLIBC_2.31 posix_spawnattr_setsigmask F +GLIBC_2.31 posix_spawnp F +GLIBC_2.31 ppoll F +GLIBC_2.31 prctl F +GLIBC_2.31 pread F +GLIBC_2.31 pread64 F +GLIBC_2.31 preadv F +GLIBC_2.31 preadv2 F +GLIBC_2.31 preadv64 F +GLIBC_2.31 preadv64v2 F +GLIBC_2.31 printf F +GLIBC_2.31 printf_size F +GLIBC_2.31 printf_size_info F +GLIBC_2.31 prlimit F +GLIBC_2.31 prlimit64 F +GLIBC_2.31 process_vm_readv F +GLIBC_2.31 process_vm_writev F +GLIBC_2.31 profil F +GLIBC_2.31 program_invocation_name D 0x4 +GLIBC_2.31 program_invocation_short_name D 0x4 +GLIBC_2.31 pselect F +GLIBC_2.31 psiginfo F +GLIBC_2.31 psignal F +GLIBC_2.31 pthread_attr_destroy F +GLIBC_2.31 pthread_attr_getdetachstate F +GLIBC_2.31 pthread_attr_getinheritsched F +GLIBC_2.31 pthread_attr_getschedparam F +GLIBC_2.31 pthread_attr_getschedpolicy F +GLIBC_2.31 pthread_attr_getscope F +GLIBC_2.31 pthread_attr_init F +GLIBC_2.31 pthread_attr_setdetachstate F +GLIBC_2.31 pthread_attr_setinheritsched F +GLIBC_2.31 pthread_attr_setschedparam F +GLIBC_2.31 pthread_attr_setschedpolicy F +GLIBC_2.31 pthread_attr_setscope F +GLIBC_2.31 pthread_cond_broadcast F +GLIBC_2.31 pthread_cond_destroy F +GLIBC_2.31 pthread_cond_init F +GLIBC_2.31 pthread_cond_signal F +GLIBC_2.31 pthread_cond_timedwait F +GLIBC_2.31 pthread_cond_wait F +GLIBC_2.31 pthread_condattr_destroy F +GLIBC_2.31 pthread_condattr_init F +GLIBC_2.31 pthread_equal F +GLIBC_2.31 pthread_exit F +GLIBC_2.31 pthread_getschedparam F +GLIBC_2.31 pthread_mutex_destroy F +GLIBC_2.31 pthread_mutex_init F +GLIBC_2.31 pthread_mutex_lock F +GLIBC_2.31 pthread_mutex_unlock F +GLIBC_2.31 pthread_self F +GLIBC_2.31 pthread_setcancelstate F +GLIBC_2.31 pthread_setcanceltype F +GLIBC_2.31 pthread_setschedparam F +GLIBC_2.31 ptrace F +GLIBC_2.31 ptsname F +GLIBC_2.31 ptsname_r F +GLIBC_2.31 putc F +GLIBC_2.31 putc_unlocked F +GLIBC_2.31 putchar F +GLIBC_2.31 putchar_unlocked F +GLIBC_2.31 putenv F +GLIBC_2.31 putgrent F +GLIBC_2.31 putmsg F +GLIBC_2.31 putpmsg F +GLIBC_2.31 putpwent F +GLIBC_2.31 puts F +GLIBC_2.31 putsgent F +GLIBC_2.31 putspent F +GLIBC_2.31 pututline F +GLIBC_2.31 pututxline F +GLIBC_2.31 putw F +GLIBC_2.31 putwc F +GLIBC_2.31 putwc_unlocked F +GLIBC_2.31 putwchar F +GLIBC_2.31 putwchar_unlocked F +GLIBC_2.31 pvalloc F +GLIBC_2.31 pwrite F +GLIBC_2.31 pwrite64 F +GLIBC_2.31 pwritev F +GLIBC_2.31 pwritev2 F +GLIBC_2.31 pwritev64 F +GLIBC_2.31 pwritev64v2 F +GLIBC_2.31 qecvt F +GLIBC_2.31 qecvt_r F +GLIBC_2.31 qfcvt F +GLIBC_2.31 qfcvt_r F +GLIBC_2.31 qgcvt F +GLIBC_2.31 qsort F +GLIBC_2.31 qsort_r F +GLIBC_2.31 quick_exit F +GLIBC_2.31 quotactl F +GLIBC_2.31 raise F +GLIBC_2.31 rand F +GLIBC_2.31 rand_r F +GLIBC_2.31 random F +GLIBC_2.31 random_r F +GLIBC_2.31 rawmemchr F +GLIBC_2.31 rcmd F +GLIBC_2.31 rcmd_af F +GLIBC_2.31 re_comp F +GLIBC_2.31 re_compile_fastmap F +GLIBC_2.31 re_compile_pattern F +GLIBC_2.31 re_exec F +GLIBC_2.31 re_match F +GLIBC_2.31 re_match_2 F +GLIBC_2.31 re_search F +GLIBC_2.31 re_search_2 F +GLIBC_2.31 re_set_registers F +GLIBC_2.31 re_set_syntax F +GLIBC_2.31 re_syntax_options D 0x4 +GLIBC_2.31 read F +GLIBC_2.31 readahead F +GLIBC_2.31 readdir F +GLIBC_2.31 readdir64 F +GLIBC_2.31 readdir64_r F +GLIBC_2.31 readdir_r F +GLIBC_2.31 readlink F +GLIBC_2.31 readlinkat F +GLIBC_2.31 readv F +GLIBC_2.31 realloc F +GLIBC_2.31 reallocarray F +GLIBC_2.31 realpath F +GLIBC_2.31 reboot F +GLIBC_2.31 recv F +GLIBC_2.31 recvfrom F +GLIBC_2.31 recvmmsg F +GLIBC_2.31 recvmsg F +GLIBC_2.31 regcomp F +GLIBC_2.31 regerror F +GLIBC_2.31 regexec F +GLIBC_2.31 regfree F +GLIBC_2.31 register_printf_function F +GLIBC_2.31 register_printf_modifier F +GLIBC_2.31 register_printf_specifier F +GLIBC_2.31 register_printf_type F +GLIBC_2.31 registerrpc F +GLIBC_2.31 remap_file_pages F +GLIBC_2.31 remove F +GLIBC_2.31 removexattr F +GLIBC_2.31 remque F +GLIBC_2.31 rename F +GLIBC_2.31 renameat F +GLIBC_2.31 renameat2 F +GLIBC_2.31 revoke F +GLIBC_2.31 rewind F +GLIBC_2.31 rewinddir F +GLIBC_2.31 rexec F +GLIBC_2.31 rexec_af F +GLIBC_2.31 rexecoptions D 0x4 +GLIBC_2.31 rindex F +GLIBC_2.31 rmdir F +GLIBC_2.31 rpc_createerr D 0x10 +GLIBC_2.31 rpmatch F +GLIBC_2.31 rresvport F +GLIBC_2.31 rresvport_af F +GLIBC_2.31 rtime F +GLIBC_2.31 ruserok F +GLIBC_2.31 ruserok_af F +GLIBC_2.31 ruserpass F +GLIBC_2.31 sbrk F +GLIBC_2.31 scalbn F +GLIBC_2.31 scalbnf F +GLIBC_2.31 scalbnl F +GLIBC_2.31 scandir F +GLIBC_2.31 scandir64 F +GLIBC_2.31 scandirat F +GLIBC_2.31 scandirat64 F +GLIBC_2.31 scanf F +GLIBC_2.31 sched_get_priority_max F +GLIBC_2.31 sched_get_priority_min F +GLIBC_2.31 sched_getaffinity F +GLIBC_2.31 sched_getcpu F +GLIBC_2.31 sched_getparam F +GLIBC_2.31 sched_getscheduler F +GLIBC_2.31 sched_rr_get_interval F +GLIBC_2.31 sched_setaffinity F +GLIBC_2.31 sched_setparam F +GLIBC_2.31 sched_setscheduler F +GLIBC_2.31 sched_yield F +GLIBC_2.31 secure_getenv F +GLIBC_2.31 seed48 F +GLIBC_2.31 seed48_r F +GLIBC_2.31 seekdir F +GLIBC_2.31 select F +GLIBC_2.31 semctl F +GLIBC_2.31 semget F +GLIBC_2.31 semop F +GLIBC_2.31 semtimedop F +GLIBC_2.31 send F +GLIBC_2.31 sendfile F +GLIBC_2.31 sendfile64 F +GLIBC_2.31 sendmmsg F +GLIBC_2.31 sendmsg F +GLIBC_2.31 sendto F +GLIBC_2.31 setaliasent F +GLIBC_2.31 setbuf F +GLIBC_2.31 setbuffer F +GLIBC_2.31 setcontext F +GLIBC_2.31 setdomainname F +GLIBC_2.31 setegid F +GLIBC_2.31 setenv F +GLIBC_2.31 seteuid F +GLIBC_2.31 setfsent F +GLIBC_2.31 setfsgid F +GLIBC_2.31 setfsuid F +GLIBC_2.31 setgid F +GLIBC_2.31 setgrent F +GLIBC_2.31 setgroups F +GLIBC_2.31 sethostent F +GLIBC_2.31 sethostid F +GLIBC_2.31 sethostname F +GLIBC_2.31 setipv4sourcefilter F +GLIBC_2.31 setitimer F +GLIBC_2.31 setjmp F +GLIBC_2.31 setlinebuf F +GLIBC_2.31 setlocale F +GLIBC_2.31 setlogin F +GLIBC_2.31 setlogmask F +GLIBC_2.31 setmntent F +GLIBC_2.31 setnetent F +GLIBC_2.31 setnetgrent F +GLIBC_2.31 setns F +GLIBC_2.31 setpgid F +GLIBC_2.31 setpgrp F +GLIBC_2.31 setpriority F +GLIBC_2.31 setprotoent F +GLIBC_2.31 setpwent F +GLIBC_2.31 setregid F +GLIBC_2.31 setresgid F +GLIBC_2.31 setresuid F +GLIBC_2.31 setreuid F +GLIBC_2.31 setrlimit F +GLIBC_2.31 setrlimit64 F +GLIBC_2.31 setrpcent F +GLIBC_2.31 setservent F +GLIBC_2.31 setsgent F +GLIBC_2.31 setsid F +GLIBC_2.31 setsockopt F +GLIBC_2.31 setsourcefilter F +GLIBC_2.31 setspent F +GLIBC_2.31 setstate F +GLIBC_2.31 setstate_r F +GLIBC_2.31 settimeofday F +GLIBC_2.31 setttyent F +GLIBC_2.31 setuid F +GLIBC_2.31 setusershell F +GLIBC_2.31 setutent F +GLIBC_2.31 setutxent F +GLIBC_2.31 setvbuf F +GLIBC_2.31 setxattr F +GLIBC_2.31 sgetsgent F +GLIBC_2.31 sgetsgent_r F +GLIBC_2.31 sgetspent F +GLIBC_2.31 sgetspent_r F +GLIBC_2.31 shmat F +GLIBC_2.31 shmctl F +GLIBC_2.31 shmdt F +GLIBC_2.31 shmget F +GLIBC_2.31 shutdown F +GLIBC_2.31 sigaction F +GLIBC_2.31 sigaddset F +GLIBC_2.31 sigaltstack F +GLIBC_2.31 sigandset F +GLIBC_2.31 sigblock F +GLIBC_2.31 sigdelset F +GLIBC_2.31 sigemptyset F +GLIBC_2.31 sigfillset F +GLIBC_2.31 siggetmask F +GLIBC_2.31 sighold F +GLIBC_2.31 sigignore F +GLIBC_2.31 siginterrupt F +GLIBC_2.31 sigisemptyset F +GLIBC_2.31 sigismember F +GLIBC_2.31 siglongjmp F +GLIBC_2.31 signal F +GLIBC_2.31 signalfd F +GLIBC_2.31 sigorset F +GLIBC_2.31 sigpause F +GLIBC_2.31 sigpending F +GLIBC_2.31 sigprocmask F +GLIBC_2.31 sigqueue F +GLIBC_2.31 sigrelse F +GLIBC_2.31 sigreturn F +GLIBC_2.31 sigset F +GLIBC_2.31 sigsetmask F +GLIBC_2.31 sigstack F +GLIBC_2.31 sigsuspend F +GLIBC_2.31 sigtimedwait F +GLIBC_2.31 sigwait F +GLIBC_2.31 sigwaitinfo F +GLIBC_2.31 sleep F +GLIBC_2.31 snprintf F +GLIBC_2.31 sockatmark F +GLIBC_2.31 socket F +GLIBC_2.31 socketpair F +GLIBC_2.31 splice F +GLIBC_2.31 sprintf F +GLIBC_2.31 sprofil F +GLIBC_2.31 srand F +GLIBC_2.31 srand48 F +GLIBC_2.31 srand48_r F +GLIBC_2.31 srandom F +GLIBC_2.31 srandom_r F +GLIBC_2.31 sscanf F +GLIBC_2.31 ssignal F +GLIBC_2.31 sstk F +GLIBC_2.31 statfs F +GLIBC_2.31 statfs64 F +GLIBC_2.31 statvfs F +GLIBC_2.31 statvfs64 F +GLIBC_2.31 statx F +GLIBC_2.31 stderr D 0x4 +GLIBC_2.31 stdin D 0x4 +GLIBC_2.31 stdout D 0x4 +GLIBC_2.31 stime F +GLIBC_2.31 stpcpy F +GLIBC_2.31 stpncpy F +GLIBC_2.31 strcasecmp F +GLIBC_2.31 strcasecmp_l F +GLIBC_2.31 strcasestr F +GLIBC_2.31 strcat F +GLIBC_2.31 strchr F +GLIBC_2.31 strchrnul F +GLIBC_2.31 strcmp F +GLIBC_2.31 strcoll F +GLIBC_2.31 strcoll_l F +GLIBC_2.31 strcpy F +GLIBC_2.31 strcspn F +GLIBC_2.31 strdup F +GLIBC_2.31 strerror F +GLIBC_2.31 strerror_l F +GLIBC_2.31 strerror_r F +GLIBC_2.31 strfmon F +GLIBC_2.31 strfmon_l F +GLIBC_2.31 strfromd F +GLIBC_2.31 strfromf F +GLIBC_2.31 strfromf128 F +GLIBC_2.31 strfromf32 F +GLIBC_2.31 strfromf32x F +GLIBC_2.31 strfromf64 F +GLIBC_2.31 strfromf64x F +GLIBC_2.31 strfroml F +GLIBC_2.31 strfry F +GLIBC_2.31 strftime F +GLIBC_2.31 strftime_l F +GLIBC_2.31 strlen F +GLIBC_2.31 strncasecmp F +GLIBC_2.31 strncasecmp_l F +GLIBC_2.31 strncat F +GLIBC_2.31 strncmp F +GLIBC_2.31 strncpy F +GLIBC_2.31 strndup F +GLIBC_2.31 strnlen F +GLIBC_2.31 strpbrk F +GLIBC_2.31 strptime F +GLIBC_2.31 strptime_l F +GLIBC_2.31 strrchr F +GLIBC_2.31 strsep F +GLIBC_2.31 strsignal F +GLIBC_2.31 strspn F +GLIBC_2.31 strstr F +GLIBC_2.31 strtod F +GLIBC_2.31 strtod_l F +GLIBC_2.31 strtof F +GLIBC_2.31 strtof128 F +GLIBC_2.31 strtof128_l F +GLIBC_2.31 strtof32 F +GLIBC_2.31 strtof32_l F +GLIBC_2.31 strtof32x F +GLIBC_2.31 strtof32x_l F +GLIBC_2.31 strtof64 F +GLIBC_2.31 strtof64_l F +GLIBC_2.31 strtof64x F +GLIBC_2.31 strtof64x_l F +GLIBC_2.31 strtof_l F +GLIBC_2.31 strtoimax F +GLIBC_2.31 strtok F +GLIBC_2.31 strtok_r F +GLIBC_2.31 strtol F +GLIBC_2.31 strtol_l F +GLIBC_2.31 strtold F +GLIBC_2.31 strtold_l F +GLIBC_2.31 strtoll F +GLIBC_2.31 strtoll_l F +GLIBC_2.31 strtoq F +GLIBC_2.31 strtoul F +GLIBC_2.31 strtoul_l F +GLIBC_2.31 strtoull F +GLIBC_2.31 strtoull_l F +GLIBC_2.31 strtoumax F +GLIBC_2.31 strtouq F +GLIBC_2.31 strverscmp F +GLIBC_2.31 strxfrm F +GLIBC_2.31 strxfrm_l F +GLIBC_2.31 stty F +GLIBC_2.31 svc_exit F +GLIBC_2.31 svc_fdset D 0x80 +GLIBC_2.31 svc_getreq F +GLIBC_2.31 svc_getreq_common F +GLIBC_2.31 svc_getreq_poll F +GLIBC_2.31 svc_getreqset F +GLIBC_2.31 svc_max_pollfd D 0x4 +GLIBC_2.31 svc_pollfd D 0x4 +GLIBC_2.31 svc_register F +GLIBC_2.31 svc_run F +GLIBC_2.31 svc_sendreply F +GLIBC_2.31 svc_unregister F +GLIBC_2.31 svcauthdes_stats D 0xc +GLIBC_2.31 svcerr_auth F +GLIBC_2.31 svcerr_decode F +GLIBC_2.31 svcerr_noproc F +GLIBC_2.31 svcerr_noprog F +GLIBC_2.31 svcerr_progvers F +GLIBC_2.31 svcerr_systemerr F +GLIBC_2.31 svcerr_weakauth F +GLIBC_2.31 svcfd_create F +GLIBC_2.31 svcraw_create F +GLIBC_2.31 svctcp_create F +GLIBC_2.31 svcudp_bufcreate F +GLIBC_2.31 svcudp_create F +GLIBC_2.31 svcudp_enablecache F +GLIBC_2.31 svcunix_create F +GLIBC_2.31 svcunixfd_create F +GLIBC_2.31 swab F +GLIBC_2.31 swapcontext F +GLIBC_2.31 swapoff F +GLIBC_2.31 swapon F +GLIBC_2.31 swprintf F +GLIBC_2.31 swscanf F +GLIBC_2.31 symlink F +GLIBC_2.31 symlinkat F +GLIBC_2.31 sync F +GLIBC_2.31 sync_file_range F +GLIBC_2.31 syncfs F +GLIBC_2.31 sys_errlist D 0x21c +GLIBC_2.31 sys_nerr D 0x4 +GLIBC_2.31 sys_sigabbrev D 0x104 +GLIBC_2.31 sys_siglist D 0x104 +GLIBC_2.31 syscall F +GLIBC_2.31 sysconf F +GLIBC_2.31 sysctl F +GLIBC_2.31 sysinfo F +GLIBC_2.31 syslog F +GLIBC_2.31 system F +GLIBC_2.31 sysv_signal F +GLIBC_2.31 tcdrain F +GLIBC_2.31 tcflow F +GLIBC_2.31 tcflush F +GLIBC_2.31 tcgetattr F +GLIBC_2.31 tcgetpgrp F +GLIBC_2.31 tcgetsid F +GLIBC_2.31 tcsendbreak F +GLIBC_2.31 tcsetattr F +GLIBC_2.31 tcsetpgrp F +GLIBC_2.31 tdelete F +GLIBC_2.31 tdestroy F +GLIBC_2.31 tee F +GLIBC_2.31 telldir F +GLIBC_2.31 tempnam F +GLIBC_2.31 textdomain F +GLIBC_2.31 tfind F +GLIBC_2.31 thrd_current F +GLIBC_2.31 thrd_equal F +GLIBC_2.31 thrd_sleep F +GLIBC_2.31 thrd_yield F +GLIBC_2.31 time F +GLIBC_2.31 timegm F +GLIBC_2.31 timelocal F +GLIBC_2.31 timerfd_create F +GLIBC_2.31 timerfd_gettime F +GLIBC_2.31 timerfd_settime F +GLIBC_2.31 times F +GLIBC_2.31 timespec_get F +GLIBC_2.31 timezone D 0x4 +GLIBC_2.31 tmpfile F +GLIBC_2.31 tmpfile64 F +GLIBC_2.31 tmpnam F +GLIBC_2.31 tmpnam_r F +GLIBC_2.31 toascii F +GLIBC_2.31 tolower F +GLIBC_2.31 tolower_l F +GLIBC_2.31 toupper F +GLIBC_2.31 toupper_l F +GLIBC_2.31 towctrans F +GLIBC_2.31 towctrans_l F +GLIBC_2.31 towlower F +GLIBC_2.31 towlower_l F +GLIBC_2.31 towupper F +GLIBC_2.31 towupper_l F +GLIBC_2.31 tr_break F +GLIBC_2.31 truncate F +GLIBC_2.31 truncate64 F +GLIBC_2.31 tsearch F +GLIBC_2.31 ttyname F +GLIBC_2.31 ttyname_r F +GLIBC_2.31 ttyslot F +GLIBC_2.31 twalk F +GLIBC_2.31 tzname D 0x8 +GLIBC_2.31 tzset F +GLIBC_2.31 ualarm F +GLIBC_2.31 ulckpwdf F +GLIBC_2.31 ulimit F +GLIBC_2.31 umask F +GLIBC_2.31 umount F +GLIBC_2.31 umount2 F +GLIBC_2.31 uname F +GLIBC_2.31 ungetc F +GLIBC_2.31 ungetwc F +GLIBC_2.31 unlink F +GLIBC_2.31 unlinkat F +GLIBC_2.31 unlockpt F +GLIBC_2.31 unsetenv F +GLIBC_2.31 unshare F +GLIBC_2.31 updwtmp F +GLIBC_2.31 updwtmpx F +GLIBC_2.31 uselocale F +GLIBC_2.31 user2netname F +GLIBC_2.31 usleep F +GLIBC_2.31 utime F +GLIBC_2.31 utimensat F +GLIBC_2.31 utimes F +GLIBC_2.31 utmpname F +GLIBC_2.31 utmpxname F +GLIBC_2.31 valloc F +GLIBC_2.31 vasprintf F +GLIBC_2.31 vdprintf F +GLIBC_2.31 verr F +GLIBC_2.31 verrx F +GLIBC_2.31 versionsort F +GLIBC_2.31 versionsort64 F +GLIBC_2.31 vfork F +GLIBC_2.31 vfprintf F +GLIBC_2.31 vfscanf F +GLIBC_2.31 vfwprintf F +GLIBC_2.31 vfwscanf F +GLIBC_2.31 vhangup F +GLIBC_2.31 vlimit F +GLIBC_2.31 vmsplice F +GLIBC_2.31 vprintf F +GLIBC_2.31 vscanf F +GLIBC_2.31 vsnprintf F +GLIBC_2.31 vsprintf F +GLIBC_2.31 vsscanf F +GLIBC_2.31 vswprintf F +GLIBC_2.31 vswscanf F +GLIBC_2.31 vsyslog F +GLIBC_2.31 vtimes F +GLIBC_2.31 vwarn F +GLIBC_2.31 vwarnx F +GLIBC_2.31 vwprintf F +GLIBC_2.31 vwscanf F +GLIBC_2.31 wait F +GLIBC_2.31 wait3 F +GLIBC_2.31 wait4 F +GLIBC_2.31 waitid F +GLIBC_2.31 waitpid F +GLIBC_2.31 warn F +GLIBC_2.31 warnx F +GLIBC_2.31 wcpcpy F +GLIBC_2.31 wcpncpy F +GLIBC_2.31 wcrtomb F +GLIBC_2.31 wcscasecmp F +GLIBC_2.31 wcscasecmp_l F +GLIBC_2.31 wcscat F +GLIBC_2.31 wcschr F +GLIBC_2.31 wcschrnul F +GLIBC_2.31 wcscmp F +GLIBC_2.31 wcscoll F +GLIBC_2.31 wcscoll_l F +GLIBC_2.31 wcscpy F +GLIBC_2.31 wcscspn F +GLIBC_2.31 wcsdup F +GLIBC_2.31 wcsftime F +GLIBC_2.31 wcsftime_l F +GLIBC_2.31 wcslen F +GLIBC_2.31 wcsncasecmp F +GLIBC_2.31 wcsncasecmp_l F +GLIBC_2.31 wcsncat F +GLIBC_2.31 wcsncmp F +GLIBC_2.31 wcsncpy F +GLIBC_2.31 wcsnlen F +GLIBC_2.31 wcsnrtombs F +GLIBC_2.31 wcspbrk F +GLIBC_2.31 wcsrchr F +GLIBC_2.31 wcsrtombs F +GLIBC_2.31 wcsspn F +GLIBC_2.31 wcsstr F +GLIBC_2.31 wcstod F +GLIBC_2.31 wcstod_l F +GLIBC_2.31 wcstof F +GLIBC_2.31 wcstof128 F +GLIBC_2.31 wcstof128_l F +GLIBC_2.31 wcstof32 F +GLIBC_2.31 wcstof32_l F +GLIBC_2.31 wcstof32x F +GLIBC_2.31 wcstof32x_l F +GLIBC_2.31 wcstof64 F +GLIBC_2.31 wcstof64_l F +GLIBC_2.31 wcstof64x F +GLIBC_2.31 wcstof64x_l F +GLIBC_2.31 wcstof_l F +GLIBC_2.31 wcstoimax F +GLIBC_2.31 wcstok F +GLIBC_2.31 wcstol F +GLIBC_2.31 wcstol_l F +GLIBC_2.31 wcstold F +GLIBC_2.31 wcstold_l F +GLIBC_2.31 wcstoll F +GLIBC_2.31 wcstoll_l F +GLIBC_2.31 wcstombs F +GLIBC_2.31 wcstoq F +GLIBC_2.31 wcstoul F +GLIBC_2.31 wcstoul_l F +GLIBC_2.31 wcstoull F +GLIBC_2.31 wcstoull_l F +GLIBC_2.31 wcstoumax F +GLIBC_2.31 wcstouq F +GLIBC_2.31 wcswcs F +GLIBC_2.31 wcswidth F +GLIBC_2.31 wcsxfrm F +GLIBC_2.31 wcsxfrm_l F +GLIBC_2.31 wctob F +GLIBC_2.31 wctomb F +GLIBC_2.31 wctrans F +GLIBC_2.31 wctrans_l F +GLIBC_2.31 wctype F +GLIBC_2.31 wctype_l F +GLIBC_2.31 wcwidth F +GLIBC_2.31 wmemchr F +GLIBC_2.31 wmemcmp F +GLIBC_2.31 wmemcpy F +GLIBC_2.31 wmemmove F +GLIBC_2.31 wmempcpy F +GLIBC_2.31 wmemset F +GLIBC_2.31 wordexp F +GLIBC_2.31 wordfree F +GLIBC_2.31 wprintf F +GLIBC_2.31 write F +GLIBC_2.31 writev F +GLIBC_2.31 wscanf F +GLIBC_2.31 xdecrypt F +GLIBC_2.31 xdr_accepted_reply F +GLIBC_2.31 xdr_array F +GLIBC_2.31 xdr_authdes_cred F +GLIBC_2.31 xdr_authdes_verf F +GLIBC_2.31 xdr_authunix_parms F +GLIBC_2.31 xdr_bool F +GLIBC_2.31 xdr_bytes F +GLIBC_2.31 xdr_callhdr F +GLIBC_2.31 xdr_callmsg F +GLIBC_2.31 xdr_char F +GLIBC_2.31 xdr_cryptkeyarg F +GLIBC_2.31 xdr_cryptkeyarg2 F +GLIBC_2.31 xdr_cryptkeyres F +GLIBC_2.31 xdr_des_block F +GLIBC_2.31 xdr_double F +GLIBC_2.31 xdr_enum F +GLIBC_2.31 xdr_float F +GLIBC_2.31 xdr_free F +GLIBC_2.31 xdr_getcredres F +GLIBC_2.31 xdr_hyper F +GLIBC_2.31 xdr_int F +GLIBC_2.31 xdr_int16_t F +GLIBC_2.31 xdr_int32_t F +GLIBC_2.31 xdr_int64_t F +GLIBC_2.31 xdr_int8_t F +GLIBC_2.31 xdr_key_netstarg F +GLIBC_2.31 xdr_key_netstres F +GLIBC_2.31 xdr_keybuf F +GLIBC_2.31 xdr_keystatus F +GLIBC_2.31 xdr_long F +GLIBC_2.31 xdr_longlong_t F +GLIBC_2.31 xdr_netnamestr F +GLIBC_2.31 xdr_netobj F +GLIBC_2.31 xdr_opaque F +GLIBC_2.31 xdr_opaque_auth F +GLIBC_2.31 xdr_pmap F +GLIBC_2.31 xdr_pmaplist F +GLIBC_2.31 xdr_pointer F +GLIBC_2.31 xdr_quad_t F +GLIBC_2.31 xdr_reference F +GLIBC_2.31 xdr_rejected_reply F +GLIBC_2.31 xdr_replymsg F +GLIBC_2.31 xdr_rmtcall_args F +GLIBC_2.31 xdr_rmtcallres F +GLIBC_2.31 xdr_short F +GLIBC_2.31 xdr_sizeof F +GLIBC_2.31 xdr_string F +GLIBC_2.31 xdr_u_char F +GLIBC_2.31 xdr_u_hyper F +GLIBC_2.31 xdr_u_int F +GLIBC_2.31 xdr_u_long F +GLIBC_2.31 xdr_u_longlong_t F +GLIBC_2.31 xdr_u_quad_t F +GLIBC_2.31 xdr_u_short F +GLIBC_2.31 xdr_uint16_t F +GLIBC_2.31 xdr_uint32_t F +GLIBC_2.31 xdr_uint64_t F +GLIBC_2.31 xdr_uint8_t F +GLIBC_2.31 xdr_union F +GLIBC_2.31 xdr_unixcred F +GLIBC_2.31 xdr_vector F +GLIBC_2.31 xdr_void F +GLIBC_2.31 xdr_wrapstring F +GLIBC_2.31 xdrmem_create F +GLIBC_2.31 xdrrec_create F +GLIBC_2.31 xdrrec_endofrecord F +GLIBC_2.31 xdrrec_eof F +GLIBC_2.31 xdrrec_skiprecord F +GLIBC_2.31 xdrstdio_create F +GLIBC_2.31 xencrypt F +GLIBC_2.31 xprt_register F +GLIBC_2.31 xprt_unregister F diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libcrypt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libcrypt.abilist new file mode 100644 index 00000000000..9454aa7f33b --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libcrypt.abilist @@ -0,0 +1,2 @@ +GLIBC_2.31 crypt F +GLIBC_2.31 crypt_r F diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist new file mode 100644 index 00000000000..b540344430a --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist @@ -0,0 +1,9 @@ +GLIBC_2.31 dladdr F +GLIBC_2.31 dladdr1 F +GLIBC_2.31 dlclose F +GLIBC_2.31 dlerror F +GLIBC_2.31 dlinfo F +GLIBC_2.31 dlmopen F +GLIBC_2.31 dlopen F +GLIBC_2.31 dlsym F +GLIBC_2.31 dlvsym F diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist new file mode 100644 index 00000000000..00bfbce3626 --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist @@ -0,0 +1,1021 @@ +GLIBC_2.31 __acos_finite F +GLIBC_2.31 __acosf_finite F +GLIBC_2.31 __acosh_finite F +GLIBC_2.31 __acoshf_finite F +GLIBC_2.31 __acoshl_finite F +GLIBC_2.31 __acosl_finite F +GLIBC_2.31 __asin_finite F +GLIBC_2.31 __asinf_finite F +GLIBC_2.31 __asinl_finite F +GLIBC_2.31 __atan2_finite F +GLIBC_2.31 __atan2f_finite F +GLIBC_2.31 __atan2l_finite F +GLIBC_2.31 __atanh_finite F +GLIBC_2.31 __atanhf_finite F +GLIBC_2.31 __atanhl_finite F +GLIBC_2.31 __clog10 F +GLIBC_2.31 __clog10f F +GLIBC_2.31 __clog10l F +GLIBC_2.31 __cosh_finite F +GLIBC_2.31 __coshf_finite F +GLIBC_2.31 __coshl_finite F +GLIBC_2.31 __exp10_finite F +GLIBC_2.31 __exp10f_finite F +GLIBC_2.31 __exp10l_finite F +GLIBC_2.31 __exp2_finite F +GLIBC_2.31 __exp2f_finite F +GLIBC_2.31 __exp2l_finite F +GLIBC_2.31 __exp_finite F +GLIBC_2.31 __expf_finite F +GLIBC_2.31 __expl_finite F +GLIBC_2.31 __finite F +GLIBC_2.31 __finitef F +GLIBC_2.31 __finitel F +GLIBC_2.31 __fmod_finite F +GLIBC_2.31 __fmodf_finite F +GLIBC_2.31 __fmodl_finite F +GLIBC_2.31 __fpclassify F +GLIBC_2.31 __fpclassifyf F +GLIBC_2.31 __fpclassifyl F +GLIBC_2.31 __gamma_r_finite F +GLIBC_2.31 __gammaf_r_finite F +GLIBC_2.31 __gammal_r_finite F +GLIBC_2.31 __hypot_finite F +GLIBC_2.31 __hypotf_finite F +GLIBC_2.31 __hypotl_finite F +GLIBC_2.31 __iseqsig F +GLIBC_2.31 __iseqsigf F +GLIBC_2.31 __iseqsigl F +GLIBC_2.31 __issignaling F +GLIBC_2.31 __issignalingf F +GLIBC_2.31 __issignalingl F +GLIBC_2.31 __j0_finite F +GLIBC_2.31 __j0f_finite F +GLIBC_2.31 __j0l_finite F +GLIBC_2.31 __j1_finite F +GLIBC_2.31 __j1f_finite F +GLIBC_2.31 __j1l_finite F +GLIBC_2.31 __jn_finite F +GLIBC_2.31 __jnf_finite F +GLIBC_2.31 __jnl_finite F +GLIBC_2.31 __lgamma_r_finite F +GLIBC_2.31 __lgammaf_r_finite F +GLIBC_2.31 __lgammal_r_finite F +GLIBC_2.31 __log10_finite F +GLIBC_2.31 __log10f_finite F +GLIBC_2.31 __log10l_finite F +GLIBC_2.31 __log2_finite F +GLIBC_2.31 __log2f_finite F +GLIBC_2.31 __log2l_finite F +GLIBC_2.31 __log_finite F +GLIBC_2.31 __logf_finite F +GLIBC_2.31 __logl_finite F +GLIBC_2.31 __pow_finite F +GLIBC_2.31 __powf_finite F +GLIBC_2.31 __powl_finite F +GLIBC_2.31 __remainder_finite F +GLIBC_2.31 __remainderf_finite F +GLIBC_2.31 __remainderl_finite F +GLIBC_2.31 __scalb_finite F +GLIBC_2.31 __scalbf_finite F +GLIBC_2.31 __scalbl_finite F +GLIBC_2.31 __signbit F +GLIBC_2.31 __signbitf F +GLIBC_2.31 __signbitl F +GLIBC_2.31 __signgam D 0x4 +GLIBC_2.31 __sinh_finite F +GLIBC_2.31 __sinhf_finite F +GLIBC_2.31 __sinhl_finite F +GLIBC_2.31 __sqrt_finite F +GLIBC_2.31 __sqrtf_finite F +GLIBC_2.31 __sqrtl_finite F +GLIBC_2.31 __y0_finite F +GLIBC_2.31 __y0f_finite F +GLIBC_2.31 __y0l_finite F +GLIBC_2.31 __y1_finite F +GLIBC_2.31 __y1f_finite F +GLIBC_2.31 __y1l_finite F +GLIBC_2.31 __yn_finite F +GLIBC_2.31 __ynf_finite F +GLIBC_2.31 __ynl_finite F +GLIBC_2.31 acos F +GLIBC_2.31 acosf F +GLIBC_2.31 acosf128 F +GLIBC_2.31 acosf32 F +GLIBC_2.31 acosf32x F +GLIBC_2.31 acosf64 F +GLIBC_2.31 acosf64x F +GLIBC_2.31 acosh F +GLIBC_2.31 acoshf F +GLIBC_2.31 acoshf128 F +GLIBC_2.31 acoshf32 F +GLIBC_2.31 acoshf32x F +GLIBC_2.31 acoshf64 F +GLIBC_2.31 acoshf64x F +GLIBC_2.31 acoshl F +GLIBC_2.31 acosl F +GLIBC_2.31 asin F +GLIBC_2.31 asinf F +GLIBC_2.31 asinf128 F +GLIBC_2.31 asinf32 F +GLIBC_2.31 asinf32x F +GLIBC_2.31 asinf64 F +GLIBC_2.31 asinf64x F +GLIBC_2.31 asinh F +GLIBC_2.31 asinhf F +GLIBC_2.31 asinhf128 F +GLIBC_2.31 asinhf32 F +GLIBC_2.31 asinhf32x F +GLIBC_2.31 asinhf64 F +GLIBC_2.31 asinhf64x F +GLIBC_2.31 asinhl F +GLIBC_2.31 asinl F +GLIBC_2.31 atan F +GLIBC_2.31 atan2 F +GLIBC_2.31 atan2f F +GLIBC_2.31 atan2f128 F +GLIBC_2.31 atan2f32 F +GLIBC_2.31 atan2f32x F +GLIBC_2.31 atan2f64 F +GLIBC_2.31 atan2f64x F +GLIBC_2.31 atan2l F +GLIBC_2.31 atanf F +GLIBC_2.31 atanf128 F +GLIBC_2.31 atanf32 F +GLIBC_2.31 atanf32x F +GLIBC_2.31 atanf64 F +GLIBC_2.31 atanf64x F +GLIBC_2.31 atanh F +GLIBC_2.31 atanhf F +GLIBC_2.31 atanhf128 F +GLIBC_2.31 atanhf32 F +GLIBC_2.31 atanhf32x F +GLIBC_2.31 atanhf64 F +GLIBC_2.31 atanhf64x F +GLIBC_2.31 atanhl F +GLIBC_2.31 atanl F +GLIBC_2.31 cabs F +GLIBC_2.31 cabsf F +GLIBC_2.31 cabsf128 F +GLIBC_2.31 cabsf32 F +GLIBC_2.31 cabsf32x F +GLIBC_2.31 cabsf64 F +GLIBC_2.31 cabsf64x F +GLIBC_2.31 cabsl F +GLIBC_2.31 cacos F +GLIBC_2.31 cacosf F +GLIBC_2.31 cacosf128 F +GLIBC_2.31 cacosf32 F +GLIBC_2.31 cacosf32x F +GLIBC_2.31 cacosf64 F +GLIBC_2.31 cacosf64x F +GLIBC_2.31 cacosh F +GLIBC_2.31 cacoshf F +GLIBC_2.31 cacoshf128 F +GLIBC_2.31 cacoshf32 F +GLIBC_2.31 cacoshf32x F +GLIBC_2.31 cacoshf64 F +GLIBC_2.31 cacoshf64x F +GLIBC_2.31 cacoshl F +GLIBC_2.31 cacosl F +GLIBC_2.31 canonicalize F +GLIBC_2.31 canonicalizef F +GLIBC_2.31 canonicalizef128 F +GLIBC_2.31 canonicalizef32 F +GLIBC_2.31 canonicalizef32x F +GLIBC_2.31 canonicalizef64 F +GLIBC_2.31 canonicalizef64x F +GLIBC_2.31 canonicalizel F +GLIBC_2.31 carg F +GLIBC_2.31 cargf F +GLIBC_2.31 cargf128 F +GLIBC_2.31 cargf32 F +GLIBC_2.31 cargf32x F +GLIBC_2.31 cargf64 F +GLIBC_2.31 cargf64x F +GLIBC_2.31 cargl F +GLIBC_2.31 casin F +GLIBC_2.31 casinf F +GLIBC_2.31 casinf128 F +GLIBC_2.31 casinf32 F +GLIBC_2.31 casinf32x F +GLIBC_2.31 casinf64 F +GLIBC_2.31 casinf64x F +GLIBC_2.31 casinh F +GLIBC_2.31 casinhf F +GLIBC_2.31 casinhf128 F +GLIBC_2.31 casinhf32 F +GLIBC_2.31 casinhf32x F +GLIBC_2.31 casinhf64 F +GLIBC_2.31 casinhf64x F +GLIBC_2.31 casinhl F +GLIBC_2.31 casinl F +GLIBC_2.31 catan F +GLIBC_2.31 catanf F +GLIBC_2.31 catanf128 F +GLIBC_2.31 catanf32 F +GLIBC_2.31 catanf32x F +GLIBC_2.31 catanf64 F +GLIBC_2.31 catanf64x F +GLIBC_2.31 catanh F +GLIBC_2.31 catanhf F +GLIBC_2.31 catanhf128 F +GLIBC_2.31 catanhf32 F +GLIBC_2.31 catanhf32x F +GLIBC_2.31 catanhf64 F +GLIBC_2.31 catanhf64x F +GLIBC_2.31 catanhl F +GLIBC_2.31 catanl F +GLIBC_2.31 cbrt F +GLIBC_2.31 cbrtf F +GLIBC_2.31 cbrtf128 F +GLIBC_2.31 cbrtf32 F +GLIBC_2.31 cbrtf32x F +GLIBC_2.31 cbrtf64 F +GLIBC_2.31 cbrtf64x F +GLIBC_2.31 cbrtl F +GLIBC_2.31 ccos F +GLIBC_2.31 ccosf F +GLIBC_2.31 ccosf128 F +GLIBC_2.31 ccosf32 F +GLIBC_2.31 ccosf32x F +GLIBC_2.31 ccosf64 F +GLIBC_2.31 ccosf64x F +GLIBC_2.31 ccosh F +GLIBC_2.31 ccoshf F +GLIBC_2.31 ccoshf128 F +GLIBC_2.31 ccoshf32 F +GLIBC_2.31 ccoshf32x F +GLIBC_2.31 ccoshf64 F +GLIBC_2.31 ccoshf64x F +GLIBC_2.31 ccoshl F +GLIBC_2.31 ccosl F +GLIBC_2.31 ceil F +GLIBC_2.31 ceilf F +GLIBC_2.31 ceilf128 F +GLIBC_2.31 ceilf32 F +GLIBC_2.31 ceilf32x F +GLIBC_2.31 ceilf64 F +GLIBC_2.31 ceilf64x F +GLIBC_2.31 ceill F +GLIBC_2.31 cexp F +GLIBC_2.31 cexpf F +GLIBC_2.31 cexpf128 F +GLIBC_2.31 cexpf32 F +GLIBC_2.31 cexpf32x F +GLIBC_2.31 cexpf64 F +GLIBC_2.31 cexpf64x F +GLIBC_2.31 cexpl F +GLIBC_2.31 cimag F +GLIBC_2.31 cimagf F +GLIBC_2.31 cimagf128 F +GLIBC_2.31 cimagf32 F +GLIBC_2.31 cimagf32x F +GLIBC_2.31 cimagf64 F +GLIBC_2.31 cimagf64x F +GLIBC_2.31 cimagl F +GLIBC_2.31 clog F +GLIBC_2.31 clog10 F +GLIBC_2.31 clog10f F +GLIBC_2.31 clog10f128 F +GLIBC_2.31 clog10f32 F +GLIBC_2.31 clog10f32x F +GLIBC_2.31 clog10f64 F +GLIBC_2.31 clog10f64x F +GLIBC_2.31 clog10l F +GLIBC_2.31 clogf F +GLIBC_2.31 clogf128 F +GLIBC_2.31 clogf32 F +GLIBC_2.31 clogf32x F +GLIBC_2.31 clogf64 F +GLIBC_2.31 clogf64x F +GLIBC_2.31 clogl F +GLIBC_2.31 conj F +GLIBC_2.31 conjf F +GLIBC_2.31 conjf128 F +GLIBC_2.31 conjf32 F +GLIBC_2.31 conjf32x F +GLIBC_2.31 conjf64 F +GLIBC_2.31 conjf64x F +GLIBC_2.31 conjl F +GLIBC_2.31 copysign F +GLIBC_2.31 copysignf F +GLIBC_2.31 copysignf128 F +GLIBC_2.31 copysignf32 F +GLIBC_2.31 copysignf32x F +GLIBC_2.31 copysignf64 F +GLIBC_2.31 copysignf64x F +GLIBC_2.31 copysignl F +GLIBC_2.31 cos F +GLIBC_2.31 cosf F +GLIBC_2.31 cosf128 F +GLIBC_2.31 cosf32 F +GLIBC_2.31 cosf32x F +GLIBC_2.31 cosf64 F +GLIBC_2.31 cosf64x F +GLIBC_2.31 cosh F +GLIBC_2.31 coshf F +GLIBC_2.31 coshf128 F +GLIBC_2.31 coshf32 F +GLIBC_2.31 coshf32x F +GLIBC_2.31 coshf64 F +GLIBC_2.31 coshf64x F +GLIBC_2.31 coshl F +GLIBC_2.31 cosl F +GLIBC_2.31 cpow F +GLIBC_2.31 cpowf F +GLIBC_2.31 cpowf128 F +GLIBC_2.31 cpowf32 F +GLIBC_2.31 cpowf32x F +GLIBC_2.31 cpowf64 F +GLIBC_2.31 cpowf64x F +GLIBC_2.31 cpowl F +GLIBC_2.31 cproj F +GLIBC_2.31 cprojf F +GLIBC_2.31 cprojf128 F +GLIBC_2.31 cprojf32 F +GLIBC_2.31 cprojf32x F +GLIBC_2.31 cprojf64 F +GLIBC_2.31 cprojf64x F +GLIBC_2.31 cprojl F +GLIBC_2.31 creal F +GLIBC_2.31 crealf F +GLIBC_2.31 crealf128 F +GLIBC_2.31 crealf32 F +GLIBC_2.31 crealf32x F +GLIBC_2.31 crealf64 F +GLIBC_2.31 crealf64x F +GLIBC_2.31 creall F +GLIBC_2.31 csin F +GLIBC_2.31 csinf F +GLIBC_2.31 csinf128 F +GLIBC_2.31 csinf32 F +GLIBC_2.31 csinf32x F +GLIBC_2.31 csinf64 F +GLIBC_2.31 csinf64x F +GLIBC_2.31 csinh F +GLIBC_2.31 csinhf F +GLIBC_2.31 csinhf128 F +GLIBC_2.31 csinhf32 F +GLIBC_2.31 csinhf32x F +GLIBC_2.31 csinhf64 F +GLIBC_2.31 csinhf64x F +GLIBC_2.31 csinhl F +GLIBC_2.31 csinl F +GLIBC_2.31 csqrt F +GLIBC_2.31 csqrtf F +GLIBC_2.31 csqrtf128 F +GLIBC_2.31 csqrtf32 F +GLIBC_2.31 csqrtf32x F +GLIBC_2.31 csqrtf64 F +GLIBC_2.31 csqrtf64x F +GLIBC_2.31 csqrtl F +GLIBC_2.31 ctan F +GLIBC_2.31 ctanf F +GLIBC_2.31 ctanf128 F +GLIBC_2.31 ctanf32 F +GLIBC_2.31 ctanf32x F +GLIBC_2.31 ctanf64 F +GLIBC_2.31 ctanf64x F +GLIBC_2.31 ctanh F +GLIBC_2.31 ctanhf F +GLIBC_2.31 ctanhf128 F +GLIBC_2.31 ctanhf32 F +GLIBC_2.31 ctanhf32x F +GLIBC_2.31 ctanhf64 F +GLIBC_2.31 ctanhf64x F +GLIBC_2.31 ctanhl F +GLIBC_2.31 ctanl F +GLIBC_2.31 daddl F +GLIBC_2.31 ddivl F +GLIBC_2.31 dmull F +GLIBC_2.31 drem F +GLIBC_2.31 dremf F +GLIBC_2.31 dreml F +GLIBC_2.31 dsubl F +GLIBC_2.31 erf F +GLIBC_2.31 erfc F +GLIBC_2.31 erfcf F +GLIBC_2.31 erfcf128 F +GLIBC_2.31 erfcf32 F +GLIBC_2.31 erfcf32x F +GLIBC_2.31 erfcf64 F +GLIBC_2.31 erfcf64x F +GLIBC_2.31 erfcl F +GLIBC_2.31 erff F +GLIBC_2.31 erff128 F +GLIBC_2.31 erff32 F +GLIBC_2.31 erff32x F +GLIBC_2.31 erff64 F +GLIBC_2.31 erff64x F +GLIBC_2.31 erfl F +GLIBC_2.31 exp F +GLIBC_2.31 exp10 F +GLIBC_2.31 exp10f F +GLIBC_2.31 exp10f128 F +GLIBC_2.31 exp10f32 F +GLIBC_2.31 exp10f32x F +GLIBC_2.31 exp10f64 F +GLIBC_2.31 exp10f64x F +GLIBC_2.31 exp10l F +GLIBC_2.31 exp2 F +GLIBC_2.31 exp2f F +GLIBC_2.31 exp2f128 F +GLIBC_2.31 exp2f32 F +GLIBC_2.31 exp2f32x F +GLIBC_2.31 exp2f64 F +GLIBC_2.31 exp2f64x F +GLIBC_2.31 exp2l F +GLIBC_2.31 expf F +GLIBC_2.31 expf128 F +GLIBC_2.31 expf32 F +GLIBC_2.31 expf32x F +GLIBC_2.31 expf64 F +GLIBC_2.31 expf64x F +GLIBC_2.31 expl F +GLIBC_2.31 expm1 F +GLIBC_2.31 expm1f F +GLIBC_2.31 expm1f128 F +GLIBC_2.31 expm1f32 F +GLIBC_2.31 expm1f32x F +GLIBC_2.31 expm1f64 F +GLIBC_2.31 expm1f64x F +GLIBC_2.31 expm1l F +GLIBC_2.31 f32addf128 F +GLIBC_2.31 f32addf32x F +GLIBC_2.31 f32addf64 F +GLIBC_2.31 f32addf64x F +GLIBC_2.31 f32divf128 F +GLIBC_2.31 f32divf32x F +GLIBC_2.31 f32divf64 F +GLIBC_2.31 f32divf64x F +GLIBC_2.31 f32mulf128 F +GLIBC_2.31 f32mulf32x F +GLIBC_2.31 f32mulf64 F +GLIBC_2.31 f32mulf64x F +GLIBC_2.31 f32subf128 F +GLIBC_2.31 f32subf32x F +GLIBC_2.31 f32subf64 F +GLIBC_2.31 f32subf64x F +GLIBC_2.31 f32xaddf128 F +GLIBC_2.31 f32xaddf64 F +GLIBC_2.31 f32xaddf64x F +GLIBC_2.31 f32xdivf128 F +GLIBC_2.31 f32xdivf64 F +GLIBC_2.31 f32xdivf64x F +GLIBC_2.31 f32xmulf128 F +GLIBC_2.31 f32xmulf64 F +GLIBC_2.31 f32xmulf64x F +GLIBC_2.31 f32xsubf128 F +GLIBC_2.31 f32xsubf64 F +GLIBC_2.31 f32xsubf64x F +GLIBC_2.31 f64addf128 F +GLIBC_2.31 f64addf64x F +GLIBC_2.31 f64divf128 F +GLIBC_2.31 f64divf64x F +GLIBC_2.31 f64mulf128 F +GLIBC_2.31 f64mulf64x F +GLIBC_2.31 f64subf128 F +GLIBC_2.31 f64subf64x F +GLIBC_2.31 f64xaddf128 F +GLIBC_2.31 f64xdivf128 F +GLIBC_2.31 f64xmulf128 F +GLIBC_2.31 f64xsubf128 F +GLIBC_2.31 fabs F +GLIBC_2.31 fabsf F +GLIBC_2.31 fabsf128 F +GLIBC_2.31 fabsf32 F +GLIBC_2.31 fabsf32x F +GLIBC_2.31 fabsf64 F +GLIBC_2.31 fabsf64x F +GLIBC_2.31 fabsl F +GLIBC_2.31 fadd F +GLIBC_2.31 faddl F +GLIBC_2.31 fdim F +GLIBC_2.31 fdimf F +GLIBC_2.31 fdimf128 F +GLIBC_2.31 fdimf32 F +GLIBC_2.31 fdimf32x F +GLIBC_2.31 fdimf64 F +GLIBC_2.31 fdimf64x F +GLIBC_2.31 fdiml F +GLIBC_2.31 fdiv F +GLIBC_2.31 fdivl F +GLIBC_2.31 feclearexcept F +GLIBC_2.31 fedisableexcept F +GLIBC_2.31 feenableexcept F +GLIBC_2.31 fegetenv F +GLIBC_2.31 fegetexcept F +GLIBC_2.31 fegetexceptflag F +GLIBC_2.31 fegetmode F +GLIBC_2.31 fegetround F +GLIBC_2.31 feholdexcept F +GLIBC_2.31 feraiseexcept F +GLIBC_2.31 fesetenv F +GLIBC_2.31 fesetexcept F +GLIBC_2.31 fesetexceptflag F +GLIBC_2.31 fesetmode F +GLIBC_2.31 fesetround F +GLIBC_2.31 fetestexcept F +GLIBC_2.31 fetestexceptflag F +GLIBC_2.31 feupdateenv F +GLIBC_2.31 finite F +GLIBC_2.31 finitef F +GLIBC_2.31 finitel F +GLIBC_2.31 floor F +GLIBC_2.31 floorf F +GLIBC_2.31 floorf128 F +GLIBC_2.31 floorf32 F +GLIBC_2.31 floorf32x F +GLIBC_2.31 floorf64 F +GLIBC_2.31 floorf64x F +GLIBC_2.31 floorl F +GLIBC_2.31 fma F +GLIBC_2.31 fmaf F +GLIBC_2.31 fmaf128 F +GLIBC_2.31 fmaf32 F +GLIBC_2.31 fmaf32x F +GLIBC_2.31 fmaf64 F +GLIBC_2.31 fmaf64x F +GLIBC_2.31 fmal F +GLIBC_2.31 fmax F +GLIBC_2.31 fmaxf F +GLIBC_2.31 fmaxf128 F +GLIBC_2.31 fmaxf32 F +GLIBC_2.31 fmaxf32x F +GLIBC_2.31 fmaxf64 F +GLIBC_2.31 fmaxf64x F +GLIBC_2.31 fmaxl F +GLIBC_2.31 fmaxmag F +GLIBC_2.31 fmaxmagf F +GLIBC_2.31 fmaxmagf128 F +GLIBC_2.31 fmaxmagf32 F +GLIBC_2.31 fmaxmagf32x F +GLIBC_2.31 fmaxmagf64 F +GLIBC_2.31 fmaxmagf64x F +GLIBC_2.31 fmaxmagl F +GLIBC_2.31 fmin F +GLIBC_2.31 fminf F +GLIBC_2.31 fminf128 F +GLIBC_2.31 fminf32 F +GLIBC_2.31 fminf32x F +GLIBC_2.31 fminf64 F +GLIBC_2.31 fminf64x F +GLIBC_2.31 fminl F +GLIBC_2.31 fminmag F +GLIBC_2.31 fminmagf F +GLIBC_2.31 fminmagf128 F +GLIBC_2.31 fminmagf32 F +GLIBC_2.31 fminmagf32x F +GLIBC_2.31 fminmagf64 F +GLIBC_2.31 fminmagf64x F +GLIBC_2.31 fminmagl F +GLIBC_2.31 fmod F +GLIBC_2.31 fmodf F +GLIBC_2.31 fmodf128 F +GLIBC_2.31 fmodf32 F +GLIBC_2.31 fmodf32x F +GLIBC_2.31 fmodf64 F +GLIBC_2.31 fmodf64x F +GLIBC_2.31 fmodl F +GLIBC_2.31 fmul F +GLIBC_2.31 fmull F +GLIBC_2.31 frexp F +GLIBC_2.31 frexpf F +GLIBC_2.31 frexpf128 F +GLIBC_2.31 frexpf32 F +GLIBC_2.31 frexpf32x F +GLIBC_2.31 frexpf64 F +GLIBC_2.31 frexpf64x F +GLIBC_2.31 frexpl F +GLIBC_2.31 fromfp F +GLIBC_2.31 fromfpf F +GLIBC_2.31 fromfpf128 F +GLIBC_2.31 fromfpf32 F +GLIBC_2.31 fromfpf32x F +GLIBC_2.31 fromfpf64 F +GLIBC_2.31 fromfpf64x F +GLIBC_2.31 fromfpl F +GLIBC_2.31 fromfpx F +GLIBC_2.31 fromfpxf F +GLIBC_2.31 fromfpxf128 F +GLIBC_2.31 fromfpxf32 F +GLIBC_2.31 fromfpxf32x F +GLIBC_2.31 fromfpxf64 F +GLIBC_2.31 fromfpxf64x F +GLIBC_2.31 fromfpxl F +GLIBC_2.31 fsub F +GLIBC_2.31 fsubl F +GLIBC_2.31 gamma F +GLIBC_2.31 gammaf F +GLIBC_2.31 gammal F +GLIBC_2.31 getpayload F +GLIBC_2.31 getpayloadf F +GLIBC_2.31 getpayloadf128 F +GLIBC_2.31 getpayloadf32 F +GLIBC_2.31 getpayloadf32x F +GLIBC_2.31 getpayloadf64 F +GLIBC_2.31 getpayloadf64x F +GLIBC_2.31 getpayloadl F +GLIBC_2.31 hypot F +GLIBC_2.31 hypotf F +GLIBC_2.31 hypotf128 F +GLIBC_2.31 hypotf32 F +GLIBC_2.31 hypotf32x F +GLIBC_2.31 hypotf64 F +GLIBC_2.31 hypotf64x F +GLIBC_2.31 hypotl F +GLIBC_2.31 ilogb F +GLIBC_2.31 ilogbf F +GLIBC_2.31 ilogbf128 F +GLIBC_2.31 ilogbf32 F +GLIBC_2.31 ilogbf32x F +GLIBC_2.31 ilogbf64 F +GLIBC_2.31 ilogbf64x F +GLIBC_2.31 ilogbl F +GLIBC_2.31 j0 F +GLIBC_2.31 j0f F +GLIBC_2.31 j0f128 F +GLIBC_2.31 j0f32 F +GLIBC_2.31 j0f32x F +GLIBC_2.31 j0f64 F +GLIBC_2.31 j0f64x F +GLIBC_2.31 j0l F +GLIBC_2.31 j1 F +GLIBC_2.31 j1f F +GLIBC_2.31 j1f128 F +GLIBC_2.31 j1f32 F +GLIBC_2.31 j1f32x F +GLIBC_2.31 j1f64 F +GLIBC_2.31 j1f64x F +GLIBC_2.31 j1l F +GLIBC_2.31 jn F +GLIBC_2.31 jnf F +GLIBC_2.31 jnf128 F +GLIBC_2.31 jnf32 F +GLIBC_2.31 jnf32x F +GLIBC_2.31 jnf64 F +GLIBC_2.31 jnf64x F +GLIBC_2.31 jnl F +GLIBC_2.31 ldexp F +GLIBC_2.31 ldexpf F +GLIBC_2.31 ldexpf128 F +GLIBC_2.31 ldexpf32 F +GLIBC_2.31 ldexpf32x F +GLIBC_2.31 ldexpf64 F +GLIBC_2.31 ldexpf64x F +GLIBC_2.31 ldexpl F +GLIBC_2.31 lgamma F +GLIBC_2.31 lgamma_r F +GLIBC_2.31 lgammaf F +GLIBC_2.31 lgammaf128 F +GLIBC_2.31 lgammaf128_r F +GLIBC_2.31 lgammaf32 F +GLIBC_2.31 lgammaf32_r F +GLIBC_2.31 lgammaf32x F +GLIBC_2.31 lgammaf32x_r F +GLIBC_2.31 lgammaf64 F +GLIBC_2.31 lgammaf64_r F +GLIBC_2.31 lgammaf64x F +GLIBC_2.31 lgammaf64x_r F +GLIBC_2.31 lgammaf_r F +GLIBC_2.31 lgammal F +GLIBC_2.31 lgammal_r F +GLIBC_2.31 llogb F +GLIBC_2.31 llogbf F +GLIBC_2.31 llogbf128 F +GLIBC_2.31 llogbf32 F +GLIBC_2.31 llogbf32x F +GLIBC_2.31 llogbf64 F +GLIBC_2.31 llogbf64x F +GLIBC_2.31 llogbl F +GLIBC_2.31 llrint F +GLIBC_2.31 llrintf F +GLIBC_2.31 llrintf128 F +GLIBC_2.31 llrintf32 F +GLIBC_2.31 llrintf32x F +GLIBC_2.31 llrintf64 F +GLIBC_2.31 llrintf64x F +GLIBC_2.31 llrintl F +GLIBC_2.31 llround F +GLIBC_2.31 llroundf F +GLIBC_2.31 llroundf128 F +GLIBC_2.31 llroundf32 F +GLIBC_2.31 llroundf32x F +GLIBC_2.31 llroundf64 F +GLIBC_2.31 llroundf64x F +GLIBC_2.31 llroundl F +GLIBC_2.31 log F +GLIBC_2.31 log10 F +GLIBC_2.31 log10f F +GLIBC_2.31 log10f128 F +GLIBC_2.31 log10f32 F +GLIBC_2.31 log10f32x F +GLIBC_2.31 log10f64 F +GLIBC_2.31 log10f64x F +GLIBC_2.31 log10l F +GLIBC_2.31 log1p F +GLIBC_2.31 log1pf F +GLIBC_2.31 log1pf128 F +GLIBC_2.31 log1pf32 F +GLIBC_2.31 log1pf32x F +GLIBC_2.31 log1pf64 F +GLIBC_2.31 log1pf64x F +GLIBC_2.31 log1pl F +GLIBC_2.31 log2 F +GLIBC_2.31 log2f F +GLIBC_2.31 log2f128 F +GLIBC_2.31 log2f32 F +GLIBC_2.31 log2f32x F +GLIBC_2.31 log2f64 F +GLIBC_2.31 log2f64x F +GLIBC_2.31 log2l F +GLIBC_2.31 logb F +GLIBC_2.31 logbf F +GLIBC_2.31 logbf128 F +GLIBC_2.31 logbf32 F +GLIBC_2.31 logbf32x F +GLIBC_2.31 logbf64 F +GLIBC_2.31 logbf64x F +GLIBC_2.31 logbl F +GLIBC_2.31 logf F +GLIBC_2.31 logf128 F +GLIBC_2.31 logf32 F +GLIBC_2.31 logf32x F +GLIBC_2.31 logf64 F +GLIBC_2.31 logf64x F +GLIBC_2.31 logl F +GLIBC_2.31 lrint F +GLIBC_2.31 lrintf F +GLIBC_2.31 lrintf128 F +GLIBC_2.31 lrintf32 F +GLIBC_2.31 lrintf32x F +GLIBC_2.31 lrintf64 F +GLIBC_2.31 lrintf64x F +GLIBC_2.31 lrintl F +GLIBC_2.31 lround F +GLIBC_2.31 lroundf F +GLIBC_2.31 lroundf128 F +GLIBC_2.31 lroundf32 F +GLIBC_2.31 lroundf32x F +GLIBC_2.31 lroundf64 F +GLIBC_2.31 lroundf64x F +GLIBC_2.31 lroundl F +GLIBC_2.31 modf F +GLIBC_2.31 modff F +GLIBC_2.31 modff128 F +GLIBC_2.31 modff32 F +GLIBC_2.31 modff32x F +GLIBC_2.31 modff64 F +GLIBC_2.31 modff64x F +GLIBC_2.31 modfl F +GLIBC_2.31 nan F +GLIBC_2.31 nanf F +GLIBC_2.31 nanf128 F +GLIBC_2.31 nanf32 F +GLIBC_2.31 nanf32x F +GLIBC_2.31 nanf64 F +GLIBC_2.31 nanf64x F +GLIBC_2.31 nanl F +GLIBC_2.31 nearbyint F +GLIBC_2.31 nearbyintf F +GLIBC_2.31 nearbyintf128 F +GLIBC_2.31 nearbyintf32 F +GLIBC_2.31 nearbyintf32x F +GLIBC_2.31 nearbyintf64 F +GLIBC_2.31 nearbyintf64x F +GLIBC_2.31 nearbyintl F +GLIBC_2.31 nextafter F +GLIBC_2.31 nextafterf F +GLIBC_2.31 nextafterf128 F +GLIBC_2.31 nextafterf32 F +GLIBC_2.31 nextafterf32x F +GLIBC_2.31 nextafterf64 F +GLIBC_2.31 nextafterf64x F +GLIBC_2.31 nextafterl F +GLIBC_2.31 nextdown F +GLIBC_2.31 nextdownf F +GLIBC_2.31 nextdownf128 F +GLIBC_2.31 nextdownf32 F +GLIBC_2.31 nextdownf32x F +GLIBC_2.31 nextdownf64 F +GLIBC_2.31 nextdownf64x F +GLIBC_2.31 nextdownl F +GLIBC_2.31 nexttoward F +GLIBC_2.31 nexttowardf F +GLIBC_2.31 nexttowardl F +GLIBC_2.31 nextup F +GLIBC_2.31 nextupf F +GLIBC_2.31 nextupf128 F +GLIBC_2.31 nextupf32 F +GLIBC_2.31 nextupf32x F +GLIBC_2.31 nextupf64 F +GLIBC_2.31 nextupf64x F +GLIBC_2.31 nextupl F +GLIBC_2.31 pow F +GLIBC_2.31 powf F +GLIBC_2.31 powf128 F +GLIBC_2.31 powf32 F +GLIBC_2.31 powf32x F +GLIBC_2.31 powf64 F +GLIBC_2.31 powf64x F +GLIBC_2.31 powl F +GLIBC_2.31 remainder F +GLIBC_2.31 remainderf F +GLIBC_2.31 remainderf128 F +GLIBC_2.31 remainderf32 F +GLIBC_2.31 remainderf32x F +GLIBC_2.31 remainderf64 F +GLIBC_2.31 remainderf64x F +GLIBC_2.31 remainderl F +GLIBC_2.31 remquo F +GLIBC_2.31 remquof F +GLIBC_2.31 remquof128 F +GLIBC_2.31 remquof32 F +GLIBC_2.31 remquof32x F +GLIBC_2.31 remquof64 F +GLIBC_2.31 remquof64x F +GLIBC_2.31 remquol F +GLIBC_2.31 rint F +GLIBC_2.31 rintf F +GLIBC_2.31 rintf128 F +GLIBC_2.31 rintf32 F +GLIBC_2.31 rintf32x F +GLIBC_2.31 rintf64 F +GLIBC_2.31 rintf64x F +GLIBC_2.31 rintl F +GLIBC_2.31 round F +GLIBC_2.31 roundeven F +GLIBC_2.31 roundevenf F +GLIBC_2.31 roundevenf128 F +GLIBC_2.31 roundevenf32 F +GLIBC_2.31 roundevenf32x F +GLIBC_2.31 roundevenf64 F +GLIBC_2.31 roundevenf64x F +GLIBC_2.31 roundevenl F +GLIBC_2.31 roundf F +GLIBC_2.31 roundf128 F +GLIBC_2.31 roundf32 F +GLIBC_2.31 roundf32x F +GLIBC_2.31 roundf64 F +GLIBC_2.31 roundf64x F +GLIBC_2.31 roundl F +GLIBC_2.31 scalb F +GLIBC_2.31 scalbf F +GLIBC_2.31 scalbl F +GLIBC_2.31 scalbln F +GLIBC_2.31 scalblnf F +GLIBC_2.31 scalblnf128 F +GLIBC_2.31 scalblnf32 F +GLIBC_2.31 scalblnf32x F +GLIBC_2.31 scalblnf64 F +GLIBC_2.31 scalblnf64x F +GLIBC_2.31 scalblnl F +GLIBC_2.31 scalbn F +GLIBC_2.31 scalbnf F +GLIBC_2.31 scalbnf128 F +GLIBC_2.31 scalbnf32 F +GLIBC_2.31 scalbnf32x F +GLIBC_2.31 scalbnf64 F +GLIBC_2.31 scalbnf64x F +GLIBC_2.31 scalbnl F +GLIBC_2.31 setpayload F +GLIBC_2.31 setpayloadf F +GLIBC_2.31 setpayloadf128 F +GLIBC_2.31 setpayloadf32 F +GLIBC_2.31 setpayloadf32x F +GLIBC_2.31 setpayloadf64 F +GLIBC_2.31 setpayloadf64x F +GLIBC_2.31 setpayloadl F +GLIBC_2.31 setpayloadsig F +GLIBC_2.31 setpayloadsigf F +GLIBC_2.31 setpayloadsigf128 F +GLIBC_2.31 setpayloadsigf32 F +GLIBC_2.31 setpayloadsigf32x F +GLIBC_2.31 setpayloadsigf64 F +GLIBC_2.31 setpayloadsigf64x F +GLIBC_2.31 setpayloadsigl F +GLIBC_2.31 signgam D 0x4 +GLIBC_2.31 significand F +GLIBC_2.31 significandf F +GLIBC_2.31 significandl F +GLIBC_2.31 sin F +GLIBC_2.31 sincos F +GLIBC_2.31 sincosf F +GLIBC_2.31 sincosf128 F +GLIBC_2.31 sincosf32 F +GLIBC_2.31 sincosf32x F +GLIBC_2.31 sincosf64 F +GLIBC_2.31 sincosf64x F +GLIBC_2.31 sincosl F +GLIBC_2.31 sinf F +GLIBC_2.31 sinf128 F +GLIBC_2.31 sinf32 F +GLIBC_2.31 sinf32x F +GLIBC_2.31 sinf64 F +GLIBC_2.31 sinf64x F +GLIBC_2.31 sinh F +GLIBC_2.31 sinhf F +GLIBC_2.31 sinhf128 F +GLIBC_2.31 sinhf32 F +GLIBC_2.31 sinhf32x F +GLIBC_2.31 sinhf64 F +GLIBC_2.31 sinhf64x F +GLIBC_2.31 sinhl F +GLIBC_2.31 sinl F +GLIBC_2.31 sqrt F +GLIBC_2.31 sqrtf F +GLIBC_2.31 sqrtf128 F +GLIBC_2.31 sqrtf32 F +GLIBC_2.31 sqrtf32x F +GLIBC_2.31 sqrtf64 F +GLIBC_2.31 sqrtf64x F +GLIBC_2.31 sqrtl F +GLIBC_2.31 tan F +GLIBC_2.31 tanf F +GLIBC_2.31 tanf128 F +GLIBC_2.31 tanf32 F +GLIBC_2.31 tanf32x F +GLIBC_2.31 tanf64 F +GLIBC_2.31 tanf64x F +GLIBC_2.31 tanh F +GLIBC_2.31 tanhf F +GLIBC_2.31 tanhf128 F +GLIBC_2.31 tanhf32 F +GLIBC_2.31 tanhf32x F +GLIBC_2.31 tanhf64 F +GLIBC_2.31 tanhf64x F +GLIBC_2.31 tanhl F +GLIBC_2.31 tanl F +GLIBC_2.31 tgamma F +GLIBC_2.31 tgammaf F +GLIBC_2.31 tgammaf128 F +GLIBC_2.31 tgammaf32 F +GLIBC_2.31 tgammaf32x F +GLIBC_2.31 tgammaf64 F +GLIBC_2.31 tgammaf64x F +GLIBC_2.31 tgammal F +GLIBC_2.31 totalorder F +GLIBC_2.31 totalorderf F +GLIBC_2.31 totalorderf128 F +GLIBC_2.31 totalorderf32 F +GLIBC_2.31 totalorderf32x F +GLIBC_2.31 totalorderf64 F +GLIBC_2.31 totalorderf64x F +GLIBC_2.31 totalorderl F +GLIBC_2.31 totalordermag F +GLIBC_2.31 totalordermagf F +GLIBC_2.31 totalordermagf128 F +GLIBC_2.31 totalordermagf32 F +GLIBC_2.31 totalordermagf32x F +GLIBC_2.31 totalordermagf64 F +GLIBC_2.31 totalordermagf64x F +GLIBC_2.31 totalordermagl F +GLIBC_2.31 trunc F +GLIBC_2.31 truncf F +GLIBC_2.31 truncf128 F +GLIBC_2.31 truncf32 F +GLIBC_2.31 truncf32x F +GLIBC_2.31 truncf64 F +GLIBC_2.31 truncf64x F +GLIBC_2.31 truncl F +GLIBC_2.31 ufromfp F +GLIBC_2.31 ufromfpf F +GLIBC_2.31 ufromfpf128 F +GLIBC_2.31 ufromfpf32 F +GLIBC_2.31 ufromfpf32x F +GLIBC_2.31 ufromfpf64 F +GLIBC_2.31 ufromfpf64x F +GLIBC_2.31 ufromfpl F +GLIBC_2.31 ufromfpx F +GLIBC_2.31 ufromfpxf F +GLIBC_2.31 ufromfpxf128 F +GLIBC_2.31 ufromfpxf32 F +GLIBC_2.31 ufromfpxf32x F +GLIBC_2.31 ufromfpxf64 F +GLIBC_2.31 ufromfpxf64x F +GLIBC_2.31 ufromfpxl F +GLIBC_2.31 y0 F +GLIBC_2.31 y0f F +GLIBC_2.31 y0f128 F +GLIBC_2.31 y0f32 F +GLIBC_2.31 y0f32x F +GLIBC_2.31 y0f64 F +GLIBC_2.31 y0f64x F +GLIBC_2.31 y0l F +GLIBC_2.31 y1 F +GLIBC_2.31 y1f F +GLIBC_2.31 y1f128 F +GLIBC_2.31 y1f32 F +GLIBC_2.31 y1f32x F +GLIBC_2.31 y1f64 F +GLIBC_2.31 y1f64x F +GLIBC_2.31 y1l F +GLIBC_2.31 yn F +GLIBC_2.31 ynf F +GLIBC_2.31 ynf128 F +GLIBC_2.31 ynf32 F +GLIBC_2.31 ynf32x F +GLIBC_2.31 ynf64 F +GLIBC_2.31 ynf64x F +GLIBC_2.31 ynl F diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist new file mode 100644 index 00000000000..1a9c8108c7a --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist @@ -0,0 +1,235 @@ +GLIBC_2.31 _IO_flockfile F +GLIBC_2.31 _IO_ftrylockfile F +GLIBC_2.31 _IO_funlockfile F +GLIBC_2.31 __close F +GLIBC_2.31 __connect F +GLIBC_2.31 __errno_location F +GLIBC_2.31 __h_errno_location F +GLIBC_2.31 __libc_allocate_rtsig F +GLIBC_2.31 __libc_current_sigrtmax F +GLIBC_2.31 __libc_current_sigrtmin F +GLIBC_2.31 __lseek F +GLIBC_2.31 __nanosleep F +GLIBC_2.31 __open F +GLIBC_2.31 __open64 F +GLIBC_2.31 __pread64 F +GLIBC_2.31 __pthread_cleanup_routine F +GLIBC_2.31 __pthread_getspecific F +GLIBC_2.31 __pthread_key_create F +GLIBC_2.31 __pthread_mutex_destroy F +GLIBC_2.31 __pthread_mutex_init F +GLIBC_2.31 __pthread_mutex_lock F +GLIBC_2.31 __pthread_mutex_trylock F +GLIBC_2.31 __pthread_mutex_unlock F +GLIBC_2.31 __pthread_mutexattr_destroy F +GLIBC_2.31 __pthread_mutexattr_init F +GLIBC_2.31 __pthread_mutexattr_settype F +GLIBC_2.31 __pthread_once F +GLIBC_2.31 __pthread_register_cancel F +GLIBC_2.31 __pthread_register_cancel_defer F +GLIBC_2.31 __pthread_rwlock_destroy F +GLIBC_2.31 __pthread_rwlock_init F +GLIBC_2.31 __pthread_rwlock_rdlock F +GLIBC_2.31 __pthread_rwlock_tryrdlock F +GLIBC_2.31 __pthread_rwlock_trywrlock F +GLIBC_2.31 __pthread_rwlock_unlock F +GLIBC_2.31 __pthread_rwlock_wrlock F +GLIBC_2.31 __pthread_setspecific F +GLIBC_2.31 __pthread_unregister_cancel F +GLIBC_2.31 __pthread_unregister_cancel_restore F +GLIBC_2.31 __pthread_unwind_next F +GLIBC_2.31 __pwrite64 F +GLIBC_2.31 __read F +GLIBC_2.31 __res_state F +GLIBC_2.31 __send F +GLIBC_2.31 __sigaction F +GLIBC_2.31 __wait F +GLIBC_2.31 __write F +GLIBC_2.31 _pthread_cleanup_pop F +GLIBC_2.31 _pthread_cleanup_pop_restore F +GLIBC_2.31 _pthread_cleanup_push F +GLIBC_2.31 _pthread_cleanup_push_defer F +GLIBC_2.31 accept F +GLIBC_2.31 call_once F +GLIBC_2.31 close F +GLIBC_2.31 cnd_broadcast F +GLIBC_2.31 cnd_destroy F +GLIBC_2.31 cnd_init F +GLIBC_2.31 cnd_signal F +GLIBC_2.31 cnd_timedwait F +GLIBC_2.31 cnd_wait F +GLIBC_2.31 connect F +GLIBC_2.31 flockfile F +GLIBC_2.31 fsync F +GLIBC_2.31 ftrylockfile F +GLIBC_2.31 funlockfile F +GLIBC_2.31 lseek F +GLIBC_2.31 lseek64 F +GLIBC_2.31 msync F +GLIBC_2.31 mtx_destroy F +GLIBC_2.31 mtx_init F +GLIBC_2.31 mtx_lock F +GLIBC_2.31 mtx_timedlock F +GLIBC_2.31 mtx_trylock F +GLIBC_2.31 mtx_unlock F +GLIBC_2.31 nanosleep F +GLIBC_2.31 open F +GLIBC_2.31 open64 F +GLIBC_2.31 pause F +GLIBC_2.31 pread F +GLIBC_2.31 pread64 F +GLIBC_2.31 pthread_attr_destroy F +GLIBC_2.31 pthread_attr_getaffinity_np F +GLIBC_2.31 pthread_attr_getdetachstate F +GLIBC_2.31 pthread_attr_getguardsize F +GLIBC_2.31 pthread_attr_getinheritsched F +GLIBC_2.31 pthread_attr_getschedparam F +GLIBC_2.31 pthread_attr_getschedpolicy F +GLIBC_2.31 pthread_attr_getscope F +GLIBC_2.31 pthread_attr_getstack F +GLIBC_2.31 pthread_attr_getstackaddr F +GLIBC_2.31 pthread_attr_getstacksize F +GLIBC_2.31 pthread_attr_init F +GLIBC_2.31 pthread_attr_setaffinity_np F +GLIBC_2.31 pthread_attr_setdetachstate F +GLIBC_2.31 pthread_attr_setguardsize F +GLIBC_2.31 pthread_attr_setinheritsched F +GLIBC_2.31 pthread_attr_setschedparam F +GLIBC_2.31 pthread_attr_setschedpolicy F +GLIBC_2.31 pthread_attr_setscope F +GLIBC_2.31 pthread_attr_setstack F +GLIBC_2.31 pthread_attr_setstackaddr F +GLIBC_2.31 pthread_attr_setstacksize F +GLIBC_2.31 pthread_barrier_destroy F +GLIBC_2.31 pthread_barrier_init F +GLIBC_2.31 pthread_barrier_wait F +GLIBC_2.31 pthread_barrierattr_destroy F +GLIBC_2.31 pthread_barrierattr_getpshared F +GLIBC_2.31 pthread_barrierattr_init F +GLIBC_2.31 pthread_barrierattr_setpshared F +GLIBC_2.31 pthread_cancel F +GLIBC_2.31 pthread_cond_broadcast F +GLIBC_2.31 pthread_cond_destroy F +GLIBC_2.31 pthread_cond_init F +GLIBC_2.31 pthread_cond_signal F +GLIBC_2.31 pthread_cond_timedwait F +GLIBC_2.31 pthread_cond_wait F +GLIBC_2.31 pthread_condattr_destroy F +GLIBC_2.31 pthread_condattr_getclock F +GLIBC_2.31 pthread_condattr_getpshared F +GLIBC_2.31 pthread_condattr_init F +GLIBC_2.31 pthread_condattr_setclock F +GLIBC_2.31 pthread_condattr_setpshared F +GLIBC_2.31 pthread_create F +GLIBC_2.31 pthread_detach F +GLIBC_2.31 pthread_equal F +GLIBC_2.31 pthread_exit F +GLIBC_2.31 pthread_getaffinity_np F +GLIBC_2.31 pthread_getattr_default_np F +GLIBC_2.31 pthread_getattr_np F +GLIBC_2.31 pthread_getconcurrency F +GLIBC_2.31 pthread_getcpuclockid F +GLIBC_2.31 pthread_getname_np F +GLIBC_2.31 pthread_getschedparam F +GLIBC_2.31 pthread_getspecific F +GLIBC_2.31 pthread_join F +GLIBC_2.31 pthread_key_create F +GLIBC_2.31 pthread_key_delete F +GLIBC_2.31 pthread_kill F +GLIBC_2.31 pthread_kill_other_threads_np F +GLIBC_2.31 pthread_mutex_consistent F +GLIBC_2.31 pthread_mutex_consistent_np F +GLIBC_2.31 pthread_mutex_destroy F +GLIBC_2.31 pthread_mutex_getprioceiling F +GLIBC_2.31 pthread_mutex_init F +GLIBC_2.31 pthread_mutex_lock F +GLIBC_2.31 pthread_mutex_setprioceiling F +GLIBC_2.31 pthread_mutex_timedlock F +GLIBC_2.31 pthread_mutex_trylock F +GLIBC_2.31 pthread_mutex_unlock F +GLIBC_2.31 pthread_mutexattr_destroy F +GLIBC_2.31 pthread_mutexattr_getkind_np F +GLIBC_2.31 pthread_mutexattr_getprioceiling F +GLIBC_2.31 pthread_mutexattr_getprotocol F +GLIBC_2.31 pthread_mutexattr_getpshared F +GLIBC_2.31 pthread_mutexattr_getrobust F +GLIBC_2.31 pthread_mutexattr_getrobust_np F +GLIBC_2.31 pthread_mutexattr_gettype F +GLIBC_2.31 pthread_mutexattr_init F +GLIBC_2.31 pthread_mutexattr_setkind_np F +GLIBC_2.31 pthread_mutexattr_setprioceiling F +GLIBC_2.31 pthread_mutexattr_setprotocol F +GLIBC_2.31 pthread_mutexattr_setpshared F +GLIBC_2.31 pthread_mutexattr_setrobust F +GLIBC_2.31 pthread_mutexattr_setrobust_np F +GLIBC_2.31 pthread_mutexattr_settype F +GLIBC_2.31 pthread_once F +GLIBC_2.31 pthread_rwlock_destroy F +GLIBC_2.31 pthread_rwlock_init F +GLIBC_2.31 pthread_rwlock_rdlock F +GLIBC_2.31 pthread_rwlock_timedrdlock F +GLIBC_2.31 pthread_rwlock_timedwrlock F +GLIBC_2.31 pthread_rwlock_tryrdlock F +GLIBC_2.31 pthread_rwlock_trywrlock F +GLIBC_2.31 pthread_rwlock_unlock F +GLIBC_2.31 pthread_rwlock_wrlock F +GLIBC_2.31 pthread_rwlockattr_destroy F +GLIBC_2.31 pthread_rwlockattr_getkind_np F +GLIBC_2.31 pthread_rwlockattr_getpshared F +GLIBC_2.31 pthread_rwlockattr_init F +GLIBC_2.31 pthread_rwlockattr_setkind_np F +GLIBC_2.31 pthread_rwlockattr_setpshared F +GLIBC_2.31 pthread_setaffinity_np F +GLIBC_2.31 pthread_setattr_default_np F +GLIBC_2.31 pthread_setcancelstate F +GLIBC_2.31 pthread_setcanceltype F +GLIBC_2.31 pthread_setconcurrency F +GLIBC_2.31 pthread_setname_np F +GLIBC_2.31 pthread_setschedparam F +GLIBC_2.31 pthread_setschedprio F +GLIBC_2.31 pthread_setspecific F +GLIBC_2.31 pthread_sigmask F +GLIBC_2.31 pthread_sigqueue F +GLIBC_2.31 pthread_spin_destroy F +GLIBC_2.31 pthread_spin_init F +GLIBC_2.31 pthread_spin_lock F +GLIBC_2.31 pthread_spin_trylock F +GLIBC_2.31 pthread_spin_unlock F +GLIBC_2.31 pthread_testcancel F +GLIBC_2.31 pthread_timedjoin_np F +GLIBC_2.31 pthread_tryjoin_np F +GLIBC_2.31 pthread_yield F +GLIBC_2.31 pwrite F +GLIBC_2.31 pwrite64 F +GLIBC_2.31 raise F +GLIBC_2.31 read F +GLIBC_2.31 recv F +GLIBC_2.31 recvfrom F +GLIBC_2.31 recvmsg F +GLIBC_2.31 sem_close F +GLIBC_2.31 sem_destroy F +GLIBC_2.31 sem_getvalue F +GLIBC_2.31 sem_init F +GLIBC_2.31 sem_open F +GLIBC_2.31 sem_post F +GLIBC_2.31 sem_timedwait F +GLIBC_2.31 sem_trywait F +GLIBC_2.31 sem_unlink F +GLIBC_2.31 sem_wait F +GLIBC_2.31 send F +GLIBC_2.31 sendmsg F +GLIBC_2.31 sendto F +GLIBC_2.31 sigaction F +GLIBC_2.31 sigwait F +GLIBC_2.31 tcdrain F +GLIBC_2.31 thrd_create F +GLIBC_2.31 thrd_detach F +GLIBC_2.31 thrd_exit F +GLIBC_2.31 thrd_join F +GLIBC_2.31 tss_create F +GLIBC_2.31 tss_delete F +GLIBC_2.31 tss_get F +GLIBC_2.31 tss_set F +GLIBC_2.31 wait F +GLIBC_2.31 waitpid F +GLIBC_2.31 write F diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libresolv.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libresolv.abilist new file mode 100644 index 00000000000..acd0b2e2de0 --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libresolv.abilist @@ -0,0 +1,79 @@ +GLIBC_2.31 __b64_ntop F +GLIBC_2.31 __b64_pton F +GLIBC_2.31 __dn_comp F +GLIBC_2.31 __dn_count_labels F +GLIBC_2.31 __dn_expand F +GLIBC_2.31 __dn_skipname F +GLIBC_2.31 __fp_nquery F +GLIBC_2.31 __fp_query F +GLIBC_2.31 __fp_resstat F +GLIBC_2.31 __hostalias F +GLIBC_2.31 __loc_aton F +GLIBC_2.31 __loc_ntoa F +GLIBC_2.31 __p_cdname F +GLIBC_2.31 __p_cdnname F +GLIBC_2.31 __p_class F +GLIBC_2.31 __p_class_syms D 0x54 +GLIBC_2.31 __p_fqname F +GLIBC_2.31 __p_fqnname F +GLIBC_2.31 __p_option F +GLIBC_2.31 __p_query F +GLIBC_2.31 __p_rcode F +GLIBC_2.31 __p_time F +GLIBC_2.31 __p_type F +GLIBC_2.31 __p_type_syms D 0x228 +GLIBC_2.31 __putlong F +GLIBC_2.31 __putshort F +GLIBC_2.31 __res_close F +GLIBC_2.31 __res_dnok F +GLIBC_2.31 __res_hnok F +GLIBC_2.31 __res_hostalias F +GLIBC_2.31 __res_isourserver F +GLIBC_2.31 __res_mailok F +GLIBC_2.31 __res_mkquery F +GLIBC_2.31 __res_nameinquery F +GLIBC_2.31 __res_nmkquery F +GLIBC_2.31 __res_nquery F +GLIBC_2.31 __res_nquerydomain F +GLIBC_2.31 __res_nsearch F +GLIBC_2.31 __res_nsend F +GLIBC_2.31 __res_ownok F +GLIBC_2.31 __res_queriesmatch F +GLIBC_2.31 __res_query F +GLIBC_2.31 __res_querydomain F +GLIBC_2.31 __res_search F +GLIBC_2.31 __res_send F +GLIBC_2.31 __sym_ntop F +GLIBC_2.31 __sym_ntos F +GLIBC_2.31 __sym_ston F +GLIBC_2.31 _getlong F +GLIBC_2.31 _getshort F +GLIBC_2.31 inet_net_ntop F +GLIBC_2.31 inet_net_pton F +GLIBC_2.31 inet_neta F +GLIBC_2.31 ns_datetosecs F +GLIBC_2.31 ns_format_ttl F +GLIBC_2.31 ns_get16 F +GLIBC_2.31 ns_get32 F +GLIBC_2.31 ns_initparse F +GLIBC_2.31 ns_makecanon F +GLIBC_2.31 ns_msg_getflag F +GLIBC_2.31 ns_name_compress F +GLIBC_2.31 ns_name_ntol F +GLIBC_2.31 ns_name_ntop F +GLIBC_2.31 ns_name_pack F +GLIBC_2.31 ns_name_pton F +GLIBC_2.31 ns_name_rollback F +GLIBC_2.31 ns_name_skip F +GLIBC_2.31 ns_name_uncompress F +GLIBC_2.31 ns_name_unpack F +GLIBC_2.31 ns_parse_ttl F +GLIBC_2.31 ns_parserr F +GLIBC_2.31 ns_put16 F +GLIBC_2.31 ns_put32 F +GLIBC_2.31 ns_samedomain F +GLIBC_2.31 ns_samename F +GLIBC_2.31 ns_skiprr F +GLIBC_2.31 ns_sprintrr F +GLIBC_2.31 ns_sprintrrf F +GLIBC_2.31 ns_subdomain F diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist new file mode 100644 index 00000000000..54f9db7c995 --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist @@ -0,0 +1,35 @@ +GLIBC_2.31 __mq_open_2 F +GLIBC_2.31 aio_cancel F +GLIBC_2.31 aio_cancel64 F +GLIBC_2.31 aio_error F +GLIBC_2.31 aio_error64 F +GLIBC_2.31 aio_fsync F +GLIBC_2.31 aio_fsync64 F +GLIBC_2.31 aio_init F +GLIBC_2.31 aio_read F +GLIBC_2.31 aio_read64 F +GLIBC_2.31 aio_return F +GLIBC_2.31 aio_return64 F +GLIBC_2.31 aio_suspend F +GLIBC_2.31 aio_suspend64 F +GLIBC_2.31 aio_write F +GLIBC_2.31 aio_write64 F +GLIBC_2.31 lio_listio F +GLIBC_2.31 lio_listio64 F +GLIBC_2.31 mq_close F +GLIBC_2.31 mq_getattr F +GLIBC_2.31 mq_notify F +GLIBC_2.31 mq_open F +GLIBC_2.31 mq_receive F +GLIBC_2.31 mq_send F +GLIBC_2.31 mq_setattr F +GLIBC_2.31 mq_timedreceive F +GLIBC_2.31 mq_timedsend F +GLIBC_2.31 mq_unlink F +GLIBC_2.31 shm_open F +GLIBC_2.31 shm_unlink F +GLIBC_2.31 timer_create F +GLIBC_2.31 timer_delete F +GLIBC_2.31 timer_getoverrun F +GLIBC_2.31 timer_gettime F +GLIBC_2.31 timer_settime F diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libthread_db.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libthread_db.abilist new file mode 100644 index 00000000000..95f6fb7aaba --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libthread_db.abilist @@ -0,0 +1,40 @@ +GLIBC_2.31 td_init F +GLIBC_2.31 td_log F +GLIBC_2.31 td_symbol_list F +GLIBC_2.31 td_ta_clear_event F +GLIBC_2.31 td_ta_delete F +GLIBC_2.31 td_ta_enable_stats F +GLIBC_2.31 td_ta_event_addr F +GLIBC_2.31 td_ta_event_getmsg F +GLIBC_2.31 td_ta_get_nthreads F +GLIBC_2.31 td_ta_get_ph F +GLIBC_2.31 td_ta_get_stats F +GLIBC_2.31 td_ta_map_id2thr F +GLIBC_2.31 td_ta_map_lwp2thr F +GLIBC_2.31 td_ta_new F +GLIBC_2.31 td_ta_reset_stats F +GLIBC_2.31 td_ta_set_event F +GLIBC_2.31 td_ta_setconcurrency F +GLIBC_2.31 td_ta_thr_iter F +GLIBC_2.31 td_ta_tsd_iter F +GLIBC_2.31 td_thr_clear_event F +GLIBC_2.31 td_thr_dbresume F +GLIBC_2.31 td_thr_dbsuspend F +GLIBC_2.31 td_thr_event_enable F +GLIBC_2.31 td_thr_event_getmsg F +GLIBC_2.31 td_thr_get_info F +GLIBC_2.31 td_thr_getfpregs F +GLIBC_2.31 td_thr_getgregs F +GLIBC_2.31 td_thr_getxregs F +GLIBC_2.31 td_thr_getxregsize F +GLIBC_2.31 td_thr_set_event F +GLIBC_2.31 td_thr_setfpregs F +GLIBC_2.31 td_thr_setgregs F +GLIBC_2.31 td_thr_setprio F +GLIBC_2.31 td_thr_setsigpending F +GLIBC_2.31 td_thr_setxregs F +GLIBC_2.31 td_thr_sigsetmask F +GLIBC_2.31 td_thr_tls_get_addr F +GLIBC_2.31 td_thr_tlsbase F +GLIBC_2.31 td_thr_tsd F +GLIBC_2.31 td_thr_validate F diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libutil.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libutil.abilist new file mode 100644 index 00000000000..9eb091a2d5b --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libutil.abilist @@ -0,0 +1,6 @@ +GLIBC_2.31 forkpty F +GLIBC_2.31 login F +GLIBC_2.31 login_tty F +GLIBC_2.31 logout F +GLIBC_2.31 logwtmp F +GLIBC_2.31 openpty F From patchwork Thu Aug 29 16:50:49 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1155415 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-104884-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="oQuYheNf"; dkim=pass (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="PUPkh30m"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46K80w02XHz9sBp for ; Fri, 30 Aug 2019 02:57:19 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; q=dns; s= default; b=NWYZjwdpMnHLVCbNYk+huS6Vk7+pUautrulVbe7DaxsOmJPAN83RZ FTDn2bs7FwGIVly66Sq+uIUHOg6pet5v/3Dm0A3bnQwvQaimDkGA4DKbtGpL9I1h ycWElZZVL+vGxhT2n5ZfxjyzJ0K1Ql+kgIM6OINTK4J/dPJJkxgC6E= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; s=default; bh=eAmNASu4QiU+zxLd98Z+VclP1qg=; b=oQuYheNfqEbes2iL5T7caTn/UDMB DMM6fOg9g6F7MPQYkfu8Iu5ZxNIIphdmAXDoC7KLwUVEF7GIO0JfvueRcYGicpJI AQWp3A5g3XcRPtzbo8YoVuFNdSxH6pqmQ1LHeyvhTNhBzfdW5JBHtZfgkvgxBjb7 N38wd+S++WaNnH0= Received: (qmail 5860 invoked by alias); 29 Aug 2019 16:55:01 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 5713 invoked by uid 89); 29 Aug 2019 16:55:01 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3 autolearn=ham version=3.3.1 spammy=exec_prefix X-HELO: esa4.hgst.iphmx.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1567097699; x=1598633699; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=zzorcxKqcwkBiGCFvo7r9CAPx9o4r329vLlRd/YmQcQ=; b=PUPkh30mpbLWsYS6kqzP+6kJ4w3f8VkkVnxIOSjMvsHPJlkAgvJkWQZy 0KsHMrbxhJ7lDAi7ATvLttI5EY+RSWwkcg9YCnFu5hrOX9YSzyBpcp0cB 33XpFwwiwCS4SJFiLjt/8YrRNXgujRT8A+z7qmIxXJ7f9eiv08HEiltx/ +Gga58uX7Mh25PP1fS2SRk70g9OlPczGLjYXVDb2cK1GfLAi1mQ/LSqp9 wx3y1gB5A0lYjuBvjg/+1DAECfIrY/eZnaIqkcnJZRDz+BZmgoF7g1NCt lUKbk9gjLr3E1vEFJReM96WjQ6CQx9IdlZTw28jTzPCspa4VZTBbm+K7g w==; IronPort-SDR: HXSrYpQBKwzt5LAdRLVGXAniatD5P5xTnIfkRowLjRu5/n4ATb3B5xk+aV24ru0JAz+girqAGf 9MMJAJSggJm5QCPi8kee+rLa6NoMs86N+k+lWHNEz+bzpOxy6B+3GC+z2cW2/toCdZnWLeTAqF CuZwN4T8TE+ZeTrPAfpaaZUf8aEgj0poPUtUpC259UK3QIwZXIy5C6UccyQin/QOCzbvPwkdis TFBPNqcYftMihwG0IgKuaZi/nTtXMppH+YeDXgpGiMi/NhB7UhAVTBmEhMmwPRZZwMytBHu4km spk= IronPort-SDR: fQKktqEBmhpnRCLCbcZzLHK46xX0IhOB54FWv0Pbc/lRpi2AflIXxSb46l3CHE4JU5HRJLy0Lk hzT1ixzTo5EvgTaOyW1+OTyyXQPv9SVxKrysJA9ruBkIPjNaAXZMulnGj1duGQ/2jl99J7YhJg YEF1tErAanQzezKGqCrSwAuKwWvqBakpeEpaULbjkqJBiX5r52VKn6gbuXUvG/4ANyDeg4/6KM iXiGFRJq7JGVlcgwBejGqwJunAdfwzukSWBsrmK5pa3ecp3kNzC27OFz062F4xvWM2B4jybSZF R1r/0Mhti2MCRfGSpbuA3iYX IronPort-SDR: uduCMkmpuw90H+GpZBdCb6sB2RAmSwNv2FqrSD0d1QXtjz3IkWx7CymYzhVWgXk+hwNEuWJbmz 7S/taUVKCj4g9OHFMNrWyXyvR64ZZQs95aNYoRyfLVFbqwYz8Bv75VgN8lSmDsZmWgLDH1PX3v rt3tmQnCjVpmQ4jbzH7QuWXVj81HzfB4leLXOGn4AnT/VovZcEDTedT70qBr8BirsPGMhk+zqZ qE8ORRTN21LwtUcAajWlnuYvpoco6XiRhLtit6jl+dTGLdBU0gMul40SsUAU3II7hs9Voc6xfW RMM= WDCIronportException: Internal From: Alistair Francis To: libc-alpha@sourceware.org Cc: arnd@arndb.de, adhemerval.zanella@linaro.org, fweimer@redhat.com, palmer@sifive.com, macro@wdc.com, zongbox@gmail.com, alistair.francis@wdc.com, alistair23@gmail.com Subject: [RFC v5 18/21] RISC-V: Build Infastructure for the 32-bit Date: Thu, 29 Aug 2019 09:50:49 -0700 Message-Id: In-Reply-To: References: MIME-Version: 1.0 From: Zong Li This patch lays out the top-level orginazition of the RISC-V 32-bit port. It contains all the Implies files as well as various other fragments of build infastructure for the RISC-V 32-bit port. 2018-11-29 Zong Li * sysdeps/riscv/rv32/Implies-after: New file. * sysdeps/riscv/rv32/rvd/Implies: Likewise. * sysdeps/riscv/rv32/rvf/Implies: Likewise. * sysdeps/unix/sysv/linux/riscv/rv32/Implies: Likewise. * sysdeps/unix/sysv/linux/riscv/Makefile: Support rv32. * sysdeps/unix/sysv/linux/riscv/configure: Likewise. * sysdeps/unix/sysv/linux/riscv/configure.ac: Likewise. * sysdeps/unix/sysv/linux/riscv/shlib-versions: Likewise. * sysdeps/riscv/preconfigure: Likewise. --- sysdeps/riscv/preconfigure | 6 +-- sysdeps/riscv/rv32/Implies-after | 1 + sysdeps/riscv/rv32/rvd/Implies | 3 ++ sysdeps/riscv/rv32/rvf/Implies | 1 + sysdeps/unix/sysv/linux/riscv/Makefile | 4 +- sysdeps/unix/sysv/linux/riscv/configure | 39 ++++++++++++++++++++ sysdeps/unix/sysv/linux/riscv/configure.ac | 8 ++++ sysdeps/unix/sysv/linux/riscv/rv32/Implies | 3 ++ sysdeps/unix/sysv/linux/riscv/shlib-versions | 10 ++++- 9 files changed, 67 insertions(+), 8 deletions(-) create mode 100644 sysdeps/riscv/rv32/Implies-after create mode 100644 sysdeps/riscv/rv32/rvd/Implies create mode 100644 sysdeps/riscv/rv32/rvf/Implies create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/Implies diff --git a/sysdeps/riscv/preconfigure b/sysdeps/riscv/preconfigure index d9adb31b649..1ab5d20f0ec 100644 --- a/sysdeps/riscv/preconfigure +++ b/sysdeps/riscv/preconfigure @@ -6,11 +6,7 @@ riscv*) atomic=`$CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null | grep '#define __riscv_atomic' | cut -d' ' -f2` case "$xlen" in - 32) - echo "glibc does not yet support 32-bit systems" >&2 - exit 1 - ;; - 64) + 64 | 32) ;; *) echo "Unable to determine XLEN" >&2 diff --git a/sysdeps/riscv/rv32/Implies-after b/sysdeps/riscv/rv32/Implies-after new file mode 100644 index 00000000000..39a34c5f574 --- /dev/null +++ b/sysdeps/riscv/rv32/Implies-after @@ -0,0 +1 @@ +wordsize-32 diff --git a/sysdeps/riscv/rv32/rvd/Implies b/sysdeps/riscv/rv32/rvd/Implies new file mode 100644 index 00000000000..1151214e8f4 --- /dev/null +++ b/sysdeps/riscv/rv32/rvd/Implies @@ -0,0 +1,3 @@ +riscv/rv32/rvf +riscv/rvd +riscv/rvf diff --git a/sysdeps/riscv/rv32/rvf/Implies b/sysdeps/riscv/rv32/rvf/Implies new file mode 100644 index 00000000000..66c401443b8 --- /dev/null +++ b/sysdeps/riscv/rv32/rvf/Implies @@ -0,0 +1 @@ +riscv/rvf diff --git a/sysdeps/unix/sysv/linux/riscv/Makefile b/sysdeps/unix/sysv/linux/riscv/Makefile index b47858769f5..bf9c24ad77d 100644 --- a/sysdeps/unix/sysv/linux/riscv/Makefile +++ b/sysdeps/unix/sysv/linux/riscv/Makefile @@ -15,11 +15,13 @@ ifeq ($(subdir),stdlib) gen-as-const-headers += ucontext_i.sym endif -abi-variants := lp64 lp64d +abi-variants := ilp32 ilp32d lp64 lp64d ifeq (,$(filter $(default-abi),$(abi-variants))) $(error Unknown ABI $(default-abi), must be one of $(abi-variants)) endif +abi-ilp32-condition := !defined __LP64__ && defined __riscv_float_abi_soft +abi-ilp32d-condition := !defined __LP64__ && defined __riscv_float_abi_double abi-lp64-condition := defined __LP64__ && defined __riscv_float_abi_soft abi-lp64d-condition := defined __LP64__ && defined __riscv_float_abi_double diff --git a/sysdeps/unix/sysv/linux/riscv/configure b/sysdeps/unix/sysv/linux/riscv/configure index 3018ca8f1b8..2b3c77f18cb 100755 --- a/sysdeps/unix/sysv/linux/riscv/configure +++ b/sysdeps/unix/sysv/linux/riscv/configure @@ -147,6 +147,17 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | fi rm -f conftest* +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +__SIZEOF_INT__ __SIZEOF_LONG__ __SIZEOF_POINTER__ + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "4 4 4" >/dev/null 2>&1; then : + libc_cv_riscv_int_abi=ilp32 +fi +rm -f conftest* + if test $libc_cv_riscv_int_abi = no; then as_fn_error $? "Unable to determine integer ABI" "$LINENO" 5 fi @@ -214,6 +225,34 @@ case "$prefix" in ;; esac ;; +ilp32-riscv/rv32/*) + test -n "$libc_cv_slibdir" || +case "$prefix" in +/usr | /usr/) + libc_cv_slibdir='/lib32/ilp32' + libc_cv_rtlddir='/lib' + if test "$libdir" = '${exec_prefix}/lib'; then + libdir='${exec_prefix}/lib32/ilp32'; + # Locale data can be shared between 32-bit and 64-bit libraries. + libc_cv_complocaledir='${exec_prefix}/lib/locale' + fi + ;; +esac + ;; +ilp32d-riscv/rv32/*) + test -n "$libc_cv_slibdir" || +case "$prefix" in +/usr | /usr/) + libc_cv_slibdir='/lib32/ilp32d' + libc_cv_rtlddir='/lib' + if test "$libdir" = '${exec_prefix}/lib'; then + libdir='${exec_prefix}/lib32/ilp32d'; + # Locale data can be shared between 32-bit and 64-bit libraries. + libc_cv_complocaledir='${exec_prefix}/lib/locale' + fi + ;; +esac + ;; esac ldd_rewrite_script=sysdeps/unix/sysv/linux/riscv/ldd-rewrite.sed diff --git a/sysdeps/unix/sysv/linux/riscv/configure.ac b/sysdeps/unix/sysv/linux/riscv/configure.ac index d4819931ca3..710d46afcd3 100644 --- a/sysdeps/unix/sysv/linux/riscv/configure.ac +++ b/sysdeps/unix/sysv/linux/riscv/configure.ac @@ -7,6 +7,8 @@ arch_minimum_kernel=4.15.0 libc_cv_riscv_int_abi=no AC_EGREP_CPP(4 8 8, [__SIZEOF_INT__ __SIZEOF_LONG__ __SIZEOF_POINTER__ ], libc_cv_riscv_int_abi=lp64) +AC_EGREP_CPP(4 4 4, [__SIZEOF_INT__ __SIZEOF_LONG__ __SIZEOF_POINTER__ + ], libc_cv_riscv_int_abi=ilp32) if test $libc_cv_riscv_int_abi = no; then AC_MSG_ERROR([Unable to determine integer ABI]) fi @@ -33,6 +35,12 @@ lp64-riscv/rv64/*) lp64d-riscv/rv64/*) LIBC_SLIBDIR_RTLDDIR([lib64/lp64d], [lib]) ;; +ilp32-riscv/rv32/*) + LIBC_SLIBDIR_RTLDDIR([lib32/ilp32], [lib]) + ;; +ilp32d-riscv/rv32/*) + LIBC_SLIBDIR_RTLDDIR([lib32/ilp32d], [lib]) + ;; esac ldd_rewrite_script=sysdeps/unix/sysv/linux/riscv/ldd-rewrite.sed diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/Implies b/sysdeps/unix/sysv/linux/riscv/rv32/Implies new file mode 100644 index 00000000000..8b7deb33cd5 --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/rv32/Implies @@ -0,0 +1,3 @@ +unix/sysv/linux/riscv +unix/sysv/linux/generic/wordsize-32 +unix/sysv/linux/generic diff --git a/sysdeps/unix/sysv/linux/riscv/shlib-versions b/sysdeps/unix/sysv/linux/riscv/shlib-versions index 98c9b29cc4d..0f9552a1dd5 100644 --- a/sysdeps/unix/sysv/linux/riscv/shlib-versions +++ b/sysdeps/unix/sysv/linux/riscv/shlib-versions @@ -1,9 +1,15 @@ -DEFAULT GLIBC_2.27 - %if RISCV_ABI_XLEN == 64 && RISCV_ABI_FLEN == 64 +DEFAULT GLIBC_2.27 ld=ld-linux-riscv64-lp64d.so.1 %elif RISCV_ABI_XLEN == 64 && RISCV_ABI_FLEN == 0 +DEFAULT GLIBC_2.27 ld=ld-linux-riscv64-lp64.so.1 +%elif RISCV_ABI_XLEN == 32 && RISCV_ABI_FLEN == 64 +DEFAULT GLIBC_2.31 +ld=ld-linux-riscv32-ilp32d.so.1 +%elif RISCV_ABI_XLEN == 32 && RISCV_ABI_FLEN == 0 +DEFAULT GLIBC_2.31 +ld=ld-linux-riscv32-ilp32.so.1 %else %error cannot determine ABI %endif From patchwork Thu Aug 29 16:50:51 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1155411 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-104880-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="V+pDyG0q"; dkim=pass (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="IiquRnCH"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46K7zy47fDz9sBp for ; Fri, 30 Aug 2019 02:56:30 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; q=dns; s= default; b=N938ZtoO6W4t5zY+tc9XAmgGnJUbv0MLnOls8bXWQ4hysk6VoRw1V oAL4nY+yhrd8WdXYaCi4xgWR9fTFNJtS9j8Am2yNMF961RVtuO7MdlS0Ouq4lNJy PQ2tmfiI0Dw2umanx0toVzcwG6CBlTVDCs/gyK6/8xx/8GVcS1P2Ts= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; s=default; bh=kSnbpJqVDvmCZG/Ky/m91FnsLgI=; b=V+pDyG0qprQn+58LdRxdG7aG/HHk yWkBxmcVfBb505GTPaV/vOZ20C5lfXI6A93tDD4RbNU3YpJKAKFvAVf4i12kRRXh LAaUMtU81w4LL+NGlC5mEIS/yVcBUuR7nQi/RLjZEc8ds/C3jPemNHlTMBpp7FZd o0/ML+Ywvo5thU4= Received: (qmail 2832 invoked by alias); 29 Aug 2019 16:54:40 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 2762 invoked by uid 89); 29 Aug 2019 16:54:40 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.3 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_NUMSUBJECT, KAM_SHORT autolearn=ham version=3.3.1 spammy= X-HELO: esa2.hgst.iphmx.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1567097693; x=1598633693; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=xjakhH63eRwpxws21DbUwjPYg0L2GKCKxczNPylrov8=; b=IiquRnCHSSV3eFb1a2q1DNFDRWisGGAfdznIQVWJVH3STei0PxVrRqJw rjimVbPMn9QC/GoAUR9GzPw2TR4R+acGab5fLfMQmKXkR4cQHE5g5u3tP XLADulAM0f17R7QXlWfVh0udAEfFnJg6bkGJz66sbac1/ibvbBv2TRzZq UEi4NZp3ZM2ZYDkqTe9GaL5dGgk4yH/zbFHRKJGebPWCTQOz+eOv/nV8Z RTIr6eVEzUyVQKBwm9257b0bHK7ocT/4dWDulXmc1NVGzVsf58TgLt7ni Eq5A/baWaxWkwr5HJ0uvQwXf1ygiqvPg+Qq/wul1zdGQnl6G9m1vOPeRY A==; IronPort-SDR: xE8hdSU3UsERFrK/U1en/89/vMGI5wi1J+KkaKb3A4Sh3oxRW157+5QPFHo3ZopKCtGOh7XaAi BFaXgkZ6WUueRaW8H6vd04wh3L1dFtkCiH5HOkG37osQREpSynPi0aNUxtcvY17FJ035Di2nyJ M6jApffTjX9VmUTLQGp8xO/WzEQDw7ur4DBTVr0Tx9qgXlUj3Wd8T18Ykr/YatS+k2umGuMAuU hmddsBelU0YUQOAH88yT4xhcdoIJiUS6rgTMsMlWhZzPOgMnqw2NB1o/8IN/SHTB3YcLORCRQ9 6QM= IronPort-SDR: qlN59ohknsOBr4Ovd2CAv1u11QDHJO1NIU/B4a9WyMM5zALjT+8P//w0oajBUpXzHAVJQI3AKs NKhcUfz0RPeavmbQhkn84wlCDGf2VfClwc4nUI5JrgljvhOS2pAGaJr9nbk6w1oXm7n8DL2d+4 gUG6whilm82UJXRRzg9qVvN7ma2VnZkIscgLtH1bhYQWvQmuwyFJ9QU1NCLMTZX1EZok5NC7Cg S7N+2DZlBfTZ4H4C2UrO5dNMZH+ZVN7GQEm2XzbLSpdRTCq9KR6jcqaG/+Hg1eDrWblWRHKz5G abIm6iy+SX9EmY2+4/qw4ViQ IronPort-SDR: kFm1rSIICnylI0c7NL9bom5q3TncXa7lD1OfQRImp189wPgOBlvigGVQiIDITttc35S3/LV2P9 6zyNdwCR/RisfWDlEuZa12oPeK6i+T5BWJoV9sn6Mlp+0isaORKKajWnclEwTK5H/tWIQI8/1j 6j3oITrUEIRwPanZ7Dr87+E4z2WIGkOkjjHztw2pIA8LQuFCKZTJ8Xhqw3gTb1reikhVr39m0T jJppufSdiKZFwXBohhpzLwjGXoLyGhCWbLjEQUE5ftbK2Pek90bdp3bxmQWKKBoDgpgdmFHKps ELE= WDCIronportException: Internal From: Alistair Francis To: libc-alpha@sourceware.org Cc: arnd@arndb.de, adhemerval.zanella@linaro.org, fweimer@redhat.com, palmer@sifive.com, macro@wdc.com, zongbox@gmail.com, alistair.francis@wdc.com, alistair23@gmail.com Subject: [RFC v5 19/21] RISC-V: Fix llrint and llround missing exceptions on RV32 Date: Thu, 29 Aug 2019 09:50:51 -0700 Message-Id: In-Reply-To: References: MIME-Version: 1.0 From: Zong Li Similar to the recent fix for MIPS, ARM and S/390, RV32 is missing correct exception on overflow from llrint and llround functions because cast from floating-point types to long long do not result in correct exceptions on overflow. 2018-11-29 Zong Li * sysdeps/riscv/rv32/fix-fp-int-convert-overflow.h: New file. --- .../riscv/rv32/fix-fp-int-convert-overflow.h | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 sysdeps/riscv/rv32/fix-fp-int-convert-overflow.h diff --git a/sysdeps/riscv/rv32/fix-fp-int-convert-overflow.h b/sysdeps/riscv/rv32/fix-fp-int-convert-overflow.h new file mode 100644 index 00000000000..42155048382 --- /dev/null +++ b/sysdeps/riscv/rv32/fix-fp-int-convert-overflow.h @@ -0,0 +1,38 @@ +/* Fix for conversion of floating point to integer overflow. ARM version. + Copyright (C) 2015-2018 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef FIX_FP_INT_CONVERT_OVERFLOW_H +#define FIX_FP_INT_CONVERT_OVERFLOW_H 1 + +/* The generic libgcc2.c conversions from floating point + to long long may not raise the correct exceptions on overflow (and + may raise spurious "inexact" exceptions even in non-overflow cases, + see ). */ +#define FIX_FLT_LONG_CONVERT_OVERFLOW 0 +#define FIX_FLT_LLONG_CONVERT_OVERFLOW 1 + +#define FIX_DBL_LONG_CONVERT_OVERFLOW 0 +#define FIX_DBL_LLONG_CONVERT_OVERFLOW 1 + +#define FIX_LDBL_LONG_CONVERT_OVERFLOW 0 +#define FIX_LDBL_LLONG_CONVERT_OVERFLOW 0 + +#define FIX_FLT128_LONG_CONVERT_OVERFLOW 0 +#define FIX_FLT128_LLONG_CONVERT_OVERFLOW 0 + +#endif /* fix-fp-int-convert-overflow.h */ From patchwork Thu Aug 29 16:50:54 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1155413 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-104881-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="UXg2uCXM"; dkim=pass (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="CZjJf7iA"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46K80K6GnNz9s4Y for ; Fri, 30 Aug 2019 02:56:49 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; q=dns; s= default; b=CN0R/hFsNIR0uydO6utzr7zBvLSjqWJeSrIDtEZoab3U8oVDBKwxd lFdARKsokFyMrtnSzfqGNsa/jCj31BzxwK6rnQ9ExdmG6nhhEroCSCtpjC71Oiet GIty1ZFMPTj8sAGCihvJ+V8pleO/pZPVp+JTDic+vNwddOyQAIQYSQ= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; s=default; bh=nV2oLYNObV2wodnVS2SdBX/CKp4=; b=UXg2uCXM1K6QHB3JjXimYjpol8Bg X/n7WPgd7ymGEo1a9V1Cm0aQzZn78FxtZgh+ixxec9tN/qRoVYF5OTd/mwpdplrc mme6pFU7OjBYu4+JwKRMyLBrjyhCWzJx0fDKqFyS0TsmZJYBaM3PFd8MSSGXDOwc 7FLska3Q4LJ16ds= Received: (qmail 3106 invoked by alias); 29 Aug 2019 16:54:42 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 3012 invoked by uid 89); 29 Aug 2019 16:54:42 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.3 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_NUMSUBJECT autolearn=ham version=3.3.1 spammy= X-HELO: esa2.hgst.iphmx.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1567097696; x=1598633696; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=G4JCsAWDJrfuqda1v1Z1nmNzkUOaG4hbSBruSC/E05k=; b=CZjJf7iAwyLoRFOG7HfdpB7eJMc+7tOj2e2s/duomYnhdzWG71Su5j57 sl1/x/KQr11XaWohyGABHjfIjaY5zjD9/YemeycjNSL/WMmEHLw6q3kOd hz1qpjXzEtWxmp3wMERtJuQjPw6fG7wLQkHUMSNoE99FqQY2XsFMXFeHv kawp3eO+jK798p1bTBjt92+fD7Rh/g3SPMDX1QNKcEuvwwTV3u66uqixk gozMydrJ3CFULqsbna3frYhGlnFgVH6UHE6TF63X2/xQTe76phNAUyhpo KDmw6G53FyVvM53w5IPckyxtAe0fOIvjIEeVw6z2cdG8mPbxCjkhzKEnc g==; IronPort-SDR: VXfdkQfuOb9CP1amq6DvW9QRitpLYDx5V0dGwWlIRBkliLUqnFaSIG9LCyst4mOsPgQop2U7k4 X3let7GjvMIlwQmZDKsZxWH5nfqS+wmZt4MTkI98XByfzpmOB0AVz/E3TH7H0nds7TivrRNNJq sClAm8BdiNstascaOzoyBQl/HU9LOJ1IXrjliKA7gKVFcleJgQ6t9j3bYavL+xHJpFSkYSL4Jk TbTtLWCRIBxOSVJ5bzwwUuWVAAyAnqqUbYTRL3Uz6NY5nE4quyzY20ayYLM5SBRx9z4A4lZbmM 4tU= IronPort-SDR: TaFj7NwiHyW348C33mZS0SCrKVZ8Oa4sO/zxzSFbfss+WWPe4EpzVxbrkjW7JfvcrnPmfKDnb4 8cpxOVYm+fDPy8zXXrkM/nvqvDe394I0STaGpRyX0MF3WoK+FYS5HzfwK61MINxf0oISX0XLHY WswBVpudeCFcDOk9fp4oJgZTMEqQLzO42rQO7NCTaltBX85HB1reyaJEApCveOCd/CSPxfbvNw mXjrqSazstzaid5LdFogNF5CE8AaZ7G9f5Cz8X4aVTUSOp9iMrbdp8sglV9NtLeulDuCTwjWiR JLdo76fhCIqycLb1IocKLqrJ IronPort-SDR: mo9UdvHwOvnR2zXBrLa+tuYtQsg0l6tRmM7brRPaV6tAj6LZ2cPHIJt8pi5MWLJioi1jLn8s4A jtrjBcyhGLxhFINnoEG+07C7Xrf73S+hMfOsNtepd9je+q/tN5UBKm5CjIv1K5lh2c8pCmAYgt mePzjy4o2m+ca6bD6QauFEsYQVnVvdKvgjnuxiOBH1TXwIJE48JWQvj+UOLYHmMYpVGWPlsTXw PmJvr/Rg4ecHP9ETB3YyErUy9cJ1xx3G8jzGWZ+cxobofIaH50Aw1qPyixN3ntTRDBqpQxTwtH IYo= WDCIronportException: Internal From: Alistair Francis To: libc-alpha@sourceware.org Cc: arnd@arndb.de, adhemerval.zanella@linaro.org, fweimer@redhat.com, palmer@sifive.com, macro@wdc.com, zongbox@gmail.com, alistair.francis@wdc.com, alistair23@gmail.com Subject: [RFC v5 20/21] RISC-V: Use 64-bit vdso syscalls for RV32 Date: Thu, 29 Aug 2019 09:50:54 -0700 Message-Id: <7a2929b5d0ddbebe1e7eead00429eb3dabfda00c.1567097252.git.alistair.francis@wdc.com> In-Reply-To: References: MIME-Version: 1.0 Signed-off-by: Alistair Francis * sysdeps/unix/sysv/linux/clock_getres.c: Use 64-bit vdso syscalls for RV32 * sysdeps/unix/sysv/linux/riscv/init-first.c: Likewise. * sysdeps/unix/sysv/linux/riscv/libc-vdso.h: Likewise. --- sysdeps/unix/sysv/linux/clock_getres.c | 4 ++++ sysdeps/unix/sysv/linux/riscv/init-first.c | 19 ++++++++++++------- sysdeps/unix/sysv/linux/riscv/libc-vdso.h | 9 ++++++--- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/sysdeps/unix/sysv/linux/clock_getres.c b/sysdeps/unix/sysv/linux/clock_getres.c index 24b2299938c..6982c754d6f 100644 --- a/sysdeps/unix/sysv/linux/clock_getres.c +++ b/sysdeps/unix/sysv/linux/clock_getres.c @@ -30,6 +30,10 @@ int __clock_getres (clockid_t clock_id, struct timespec *res) { +#ifndef __vdso_clock_getres + return INLINE_SYSCALL_CALL (clock_getres, clock_id, res); +#else return INLINE_VSYSCALL (clock_getres, 2, clock_id, res); +#endif } weak_alias (__clock_getres, clock_getres) diff --git a/sysdeps/unix/sysv/linux/riscv/init-first.c b/sysdeps/unix/sysv/linux/riscv/init-first.c index 35dc8a8d386..7b7457a7a8b 100644 --- a/sysdeps/unix/sysv/linux/riscv/init-first.c +++ b/sysdeps/unix/sysv/linux/riscv/init-first.c @@ -22,12 +22,15 @@ long int (*VDSO_SYMBOL (getcpu)) (unsigned int *, unsigned int *, void *) attribute_hidden; -long int (*VDSO_SYMBOL (gettimeofday)) (struct timeval *, void *) - attribute_hidden; -long int (*VDSO_SYMBOL (__clock_gettime64)) (clockid_t, struct __timespec64 *) +long int (*VDSO_SYMBOL (clock_gettime64)) (clockid_t, struct timespec *) attribute_hidden; + +#if __riscv_xlen == 64 long int (*VDSO_SYMBOL (clock_getres)) (clockid_t, struct timespec *) attribute_hidden; +long int (*VDSO_SYMBOL (gettimeofday)) (struct timeval *, void *) + attribute_hidden; +#endif static inline void _libc_vdso_platform_setup (void) @@ -38,17 +41,19 @@ _libc_vdso_platform_setup (void) PTR_MANGLE (p); VDSO_SYMBOL (getcpu) = p; - p = _dl_vdso_vsym ("__vdso_gettimeofday", &linux_version); + p = _dl_vdso_vsym ("__vdso_clock_gettime64", &linux_version); PTR_MANGLE (p); - VDSO_SYMBOL (gettimeofday) = p; + VDSO_SYMBOL (clock_gettime64) = p; - p = _dl_vdso_vsym ("__vdso_clock_gettime", &linux_version); +#if __riscv_xlen == 64 + p = _dl_vdso_vsym ("__vdso_gettimeofday", &linux_version); PTR_MANGLE (p); - VDSO_SYMBOL (clock_gettime) = p; + VDSO_SYMBOL (gettimeofday) = p; p = _dl_vdso_vsym ("__vdso_clock_getres", &linux_version); PTR_MANGLE (p); VDSO_SYMBOL (clock_getres) = p; +#endif } #define VDSO_SETUP _libc_vdso_platform_setup diff --git a/sysdeps/unix/sysv/linux/riscv/libc-vdso.h b/sysdeps/unix/sysv/linux/riscv/libc-vdso.h index 16905d5b78d..3684168df4b 100644 --- a/sysdeps/unix/sysv/linux/riscv/libc-vdso.h +++ b/sysdeps/unix/sysv/linux/riscv/libc-vdso.h @@ -24,11 +24,14 @@ extern long int (*VDSO_SYMBOL (getcpu)) (unsigned int *, unsigned int *, void *) attribute_hidden; -extern long int (*VDSO_SYMBOL (gettimeofday)) (struct timeval *, void *) - attribute_hidden; -extern long int (*VDSO_SYMBOL (__clock_gettime64)) (clockid_t, struct __timespec64 *) +extern long int (*VDSO_SYMBOL (clock_gettime64)) (clockid_t, struct timespec *) attribute_hidden; + +#if __riscv_xlen == 64 extern long int (*VDSO_SYMBOL (clock_getres)) (clockid_t, struct timespec *) attribute_hidden; +extern long int (*VDSO_SYMBOL (gettimeofday)) (struct timeval *, void *) + attribute_hidden; +#endif #endif /* _LIBC_VDSO_H */ From patchwork Thu Aug 29 16:50:57 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1155412 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-104882-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="O/xWGa8D"; dkim=pass (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="lUx2lDFQ"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46K8090Cnfz9s4Y for ; Fri, 30 Aug 2019 02:56:40 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; q=dns; s= default; b=M3EAv3aC1DWKkY1N4B1ER852UZDSHaFY24CHD/+1yn1MYtzMhId75 PXzXcJfCzN+A+6MpdlsstTF1Hb4giUOEJId4S/eC2oheZJ0aTFsKImYVN7IMhY55 oACT/toD1OENZGTPn9Bm9+KLHexVacrJnhXgj3jRhywTCPtY/JKYW8= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; s=default; bh=NebzR9xohWocMFLafikHGTGLM4o=; b=O/xWGa8DdPBARp6uehbj4TywseGj 6XT2bY3uouw3ECjbD3i1qfmJ4UHzl6BCtf+4Px/tGTJue1ZeFHM+ucOP9PQnxZRh DfLQRsExXVmpYHGyDzOp0TM344JeTUogSDcS6Uy/hr/HJQwqIZaPjl0lLd0SZTC+ 8Eei61qhSGn9NTo= Received: (qmail 3164 invoked by alias); 29 Aug 2019 16:54:43 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 3093 invoked by uid 89); 29 Aug 2019 16:54:42 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3 autolearn=ham version=3.3.1 spammy=HX-Languages-Length:1396, HContent-Transfer-Encoding:8bit X-HELO: esa2.hgst.iphmx.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1567097697; x=1598633697; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=yuMWcjftT5Vxv9Qf4XUrOBunwBuWVW9Y+GcLCNhl3gc=; b=lUx2lDFQcnKR/101JfggC01x9pE/7gAI9X7aWi6fsNTK/Zdza30di5UM EpfqguHhejNkK0l7lyUkv3RHMI63EnhqmRZo8sj3/GxKHqwerjvk6CGNu niTWvV+xpb/t3D7deE9z6xfT+Dskgz8cMWSiV43agNxWwGCla87ZCapIJ 6vZcn6D/SNP7zxsBIPekVGPDYRXtF2ZZoAolg1SekHTAEkHmOPz48YaJf ZoywxeSl7kdvCfvKTnr+ka+qaTqOz5vA7AlZjLAEUSSXCfi+e5iTOiaoi oRs8OBia9JL4J71/VpjAPl6v9fPsXypDwMV+ZD+xOUmOneqxaVi/RxQzh A==; IronPort-SDR: ndu08DAqQiqHIyAfBIXLYtcmmXjEpVFYKc9PLNQsbkjw7WRIOF8j7B95KO/ZFxYtjDg+O8yxAH +C9hTcEVJW3/a+DScmIhc6eVf4XY/yljNEz308yseWyAiVkmd2/J9rPhTJCb89Zg741WExOAlx aw/nJtTe+NL+0j0wodRwqeZzKFyf02lRccNJApQ29N7IO6MvTT0u8nwC6Dtc2itNF0dt4InyP4 E2PQc3TMpzPbrHMaAIXsLeBg6/IpqRoVEQa9Ahq08SS+QV/B9EFInl2dZePMxxJjFOLUhHYT8+ j0w= IronPort-SDR: RzWFnpvRBEwJ1bfzPpCnyF9/8uG2WEQdIBZj6MTQQnX8Ze7ocGXeqQHKVj0mbPsgCBzT48GOyZ 1lLNNdv+EwZ6JwMU2qKLohNLu0TXmpR4TxMZ4/HhobJbFtLpevnK0bhAFon9Eg4P5T6FU9tORG 1NcKeYiydoJorvco8JAHiPdIb1ycf8dLgpjX8Fohlx+GvMlgJ92JKyjsE3SXJE4Jquefhxizfn RLCQfSrqJFszYV9pB3npQKAgpgxcm5xeFPSvcL8nrHTK4c17qiwgEz7+NsNXdMx/dSVoI9j7iO 0yi3jUby3680PxydMjw8t6xg IronPort-SDR: SAzjNmffEnephxw8UNljFu7pA7IhA40VblNIrnjGea+sr+0eAh2FtdMYZjGcQyKiOj/Xod01Xw vOH2t0TAqOKTtyIJPvPgv7E5k2NWpoS6BatSYxzJxXTBtpX2MKPiYmkGOc7xOuPw/hBQUGMSpC 0Z8aD0VkyPVoaU/IhrXwsTGHPDD4ujx+Hf6A9nHgPbvKNiRHOKkEYQ+m7prNmDA7q1vy10Qk2G QEf/0GjNQFn4tsVFoWB3Wq5/lh3pXHr/7RHOc9XRYGHynNE+jW3k434IxZ9W8Zxp4pxcwHn2sE chw= WDCIronportException: Internal From: Alistair Francis To: libc-alpha@sourceware.org Cc: arnd@arndb.de, adhemerval.zanella@linaro.org, fweimer@redhat.com, palmer@sifive.com, macro@wdc.com, zongbox@gmail.com, alistair.francis@wdc.com, alistair23@gmail.com Subject: [RFC v5 21/21] Add RISC-V 32-bit target to build-many-glibcs.py Date: Thu, 29 Aug 2019 09:50:57 -0700 Message-Id: <0d28850bb44ea7098b69f1d0977a297888aa8436.1567097252.git.alistair.francis@wdc.com> In-Reply-To: References: MIME-Version: 1.0 From: Zong Li Support building three variant of 32 bit RISC-V glibc as follows: - riscv32-linux-gnu-rv32imac-ilp32 - riscv32-linux-gnu-rv32imafdc-ilp32 - riscv32-linux-gnu-rv32imafdc-ilp32d 2018-11-29 Zong Li * scripts/build-many-glibcs.py (Context): Add rv32 targets. --- scripts/build-many-glibcs.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py index aa6884e046d..205f70168ed 100755 --- a/scripts/build-many-glibcs.py +++ b/scripts/build-many-glibcs.py @@ -320,6 +320,21 @@ class Context(object): self.add_config(arch='powerpc64le', os_name='linux-gnu', gcc_cfg=['--disable-multilib', '--enable-secureplt']) + self.add_config(arch='riscv32', + os_name='linux-gnu', + variant='rv32imac-ilp32', + gcc_cfg=['--with-arch=rv32imac', '--with-abi=ilp32', + '--disable-multilib']) + self.add_config(arch='riscv32', + os_name='linux-gnu', + variant='rv32imafdc-ilp32', + gcc_cfg=['--with-arch=rv32imafdc', '--with-abi=ilp32', + '--disable-multilib']) + self.add_config(arch='riscv32', + os_name='linux-gnu', + variant='rv32imafdc-ilp32d', + gcc_cfg=['--with-arch=rv32imafdc', '--with-abi=ilp32d', + '--disable-multilib']) self.add_config(arch='riscv64', os_name='linux-gnu', variant='rv64imac-lp64',