diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux/riscv')
38 files changed, 413 insertions, 43 deletions
diff --git a/sysdeps/unix/sysv/linux/riscv/atomic-machine.h b/sysdeps/unix/sysv/linux/riscv/atomic-machine.h index 90283d9..569f434 100644 --- a/sysdeps/unix/sysv/linux/riscv/atomic-machine.h +++ b/sysdeps/unix/sysv/linux/riscv/atomic-machine.h @@ -1,5 +1,5 @@ /* Low-level functions for atomic operations. RISC-V version. - Copyright (C) 2014-2024 Free Software Foundation, Inc. + Copyright (C) 2014-2025 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 diff --git a/sysdeps/unix/sysv/linux/riscv/bits/environments.h b/sysdeps/unix/sysv/linux/riscv/bits/environments.h index 1017bf3..652a77b 100644 --- a/sysdeps/unix/sysv/linux/riscv/bits/environments.h +++ b/sysdeps/unix/sysv/linux/riscv/bits/environments.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2020-2024 Free Software Foundation, Inc. +/* Copyright (C) 2020-2025 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 diff --git a/sysdeps/unix/sysv/linux/riscv/bits/fcntl.h b/sysdeps/unix/sysv/linux/riscv/bits/fcntl.h index 8e9bf76..3300b74 100644 --- a/sysdeps/unix/sysv/linux/riscv/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/riscv/bits/fcntl.h @@ -1,5 +1,5 @@ /* O_*, F_*, FD_* bit values for Linux / RISC-V. - Copyright (C) 2011-2024 Free Software Foundation, Inc. + Copyright (C) 2011-2025 Free Software Foundation, Inc. This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/riscv/bits/procfs.h b/sysdeps/unix/sysv/linux/riscv/bits/procfs.h index 21ae5dc..ba081d7 100644 --- a/sysdeps/unix/sysv/linux/riscv/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/riscv/bits/procfs.h @@ -1,5 +1,5 @@ /* Types for registers for sys/procfs.h. RISC-V version. - Copyright (C) 1996-2024 Free Software Foundation, Inc. + Copyright (C) 1996-2025 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 diff --git a/sysdeps/unix/sysv/linux/riscv/bits/rseq.h b/sysdeps/unix/sysv/linux/riscv/bits/rseq.h new file mode 100644 index 0000000..8ba8e6c --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/bits/rseq.h @@ -0,0 +1,44 @@ +/* Restartable Sequences Linux riscv architecture header. + Copyright (C) 2021-2025 Free Software Foundation, Inc. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +#include <bits/endian.h> + +#ifndef _SYS_RSEQ_H +# error "Never use <bits/rseq.h> directly; include <sys/rseq.h> instead." +#endif + +/* RSEQ_SIG is a signature required before each abort handler code. + + It is a 32-bit value that maps to actual architecture code compiled + into applications and libraries. It needs to be defined for each + architecture. When choosing this value, it needs to be taken into + account that generating invalid instructions may have ill effects on + tools like objdump, and may also have impact on the CPU speculative + execution efficiency in some cases. + + Select the instruction "csrw mhartid, x0" as the RSEQ_SIG. Unlike + other architectures, the ebreak instruction has no immediate field for + distinguishing purposes. Hence, ebreak is not suitable as RSEQ_SIG. + "csrw mhartid, x0" can also satisfy the RSEQ requirement because it + is an uncommon instruction and will raise an illegal instruction + exception when executed in all modes. */ + +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define RSEQ_SIG 0xf1401073 +#else +/* RSEQ is currently only supported on Little-Endian. */ +#endif diff --git a/sysdeps/unix/sysv/linux/riscv/bits/sigcontext.h b/sysdeps/unix/sysv/linux/riscv/bits/sigcontext.h index 2f3ee3a..0329651 100644 --- a/sysdeps/unix/sysv/linux/riscv/bits/sigcontext.h +++ b/sysdeps/unix/sysv/linux/riscv/bits/sigcontext.h @@ -1,5 +1,5 @@ /* Machine-dependent signal context structure for Linux. RISC-V version. - Copyright (C) 1996-2024 Free Software Foundation, Inc. This file is part of the GNU C Library. + Copyright (C) 1996-2025 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 diff --git a/sysdeps/unix/sysv/linux/riscv/bits/time64.h b/sysdeps/unix/sysv/linux/riscv/bits/time64.h index 3f967fe..1275475 100644 --- a/sysdeps/unix/sysv/linux/riscv/bits/time64.h +++ b/sysdeps/unix/sysv/linux/riscv/bits/time64.h @@ -1,5 +1,5 @@ /* bits/time64.h -- underlying types for __time64_t. RISC-V version. - Copyright (C) 2020-2024 Free Software Foundation, Inc. + Copyright (C) 2020-2025 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 diff --git a/sysdeps/unix/sysv/linux/riscv/clone.S b/sysdeps/unix/sysv/linux/riscv/clone.S index b9c843e..1362dd9 100644 --- a/sysdeps/unix/sysv/linux/riscv/clone.S +++ b/sysdeps/unix/sysv/linux/riscv/clone.S @@ -1,5 +1,5 @@ /* Wrapper around clone system call. RISC-V version. - Copyright (C) 1996-2024 Free Software Foundation, Inc. + Copyright (C) 1996-2025 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 diff --git a/sysdeps/unix/sysv/linux/riscv/clone3.S b/sysdeps/unix/sysv/linux/riscv/clone3.S index c81ee2a..34513c6 100644 --- a/sysdeps/unix/sysv/linux/riscv/clone3.S +++ b/sysdeps/unix/sysv/linux/riscv/clone3.S @@ -1,5 +1,5 @@ /* The clone3 syscall wrapper. Linux/RISC-V version. - Copyright (C) 2023-2024 Free Software Foundation, Inc. + Copyright (C) 2023-2025 Free Software Foundation, Inc. This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/riscv/dl-cache.h b/sysdeps/unix/sysv/linux/riscv/dl-cache.h index 4b6e50f..6e09679 100644 --- a/sysdeps/unix/sysv/linux/riscv/dl-cache.h +++ b/sysdeps/unix/sysv/linux/riscv/dl-cache.h @@ -1,5 +1,5 @@ /* Support for reading /etc/ld.so.cache files written by Linux ldconfig. - Copyright (C) 2003-2024 Free Software Foundation, Inc. + Copyright (C) 2003-2025 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 diff --git a/sysdeps/unix/sysv/linux/riscv/flush-icache.c b/sysdeps/unix/sysv/linux/riscv/flush-icache.c index a7f959a..368e027 100644 --- a/sysdeps/unix/sysv/linux/riscv/flush-icache.c +++ b/sysdeps/unix/sysv/linux/riscv/flush-icache.c @@ -1,5 +1,5 @@ /* RISC-V instruction cache flushing VDSO calls - Copyright (C) 2017-2024 Free Software Foundation, Inc. + Copyright (C) 2017-2025 Free Software Foundation, Inc. This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/riscv/getcontext.S b/sysdeps/unix/sysv/linux/riscv/getcontext.S index b449d06..86e7a8f 100644 --- a/sysdeps/unix/sysv/linux/riscv/getcontext.S +++ b/sysdeps/unix/sysv/linux/riscv/getcontext.S @@ -1,5 +1,5 @@ /* Save current context. - Copyright (C) 2009-2024 Free Software Foundation, Inc. + Copyright (C) 2009-2025 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 diff --git a/sysdeps/unix/sysv/linux/riscv/hwprobe.c b/sysdeps/unix/sysv/linux/riscv/hwprobe.c index 9159045..bc7f6f3 100644 --- a/sysdeps/unix/sysv/linux/riscv/hwprobe.c +++ b/sysdeps/unix/sysv/linux/riscv/hwprobe.c @@ -1,5 +1,5 @@ /* RISC-V hardware feature probing support on Linux - Copyright (C) 2024 Free Software Foundation, Inc. + Copyright (C) 2024-2025 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -23,13 +23,13 @@ #include <sysdep-vdso.h> int __riscv_hwprobe (struct riscv_hwprobe *pairs, size_t pair_count, - size_t cpu_count, unsigned long int *cpus, + size_t cpusetsize, __RISCV_HWPROBE_CPUS_TYPE cpus, unsigned int flags) { int r; r = INTERNAL_VSYSCALL (riscv_hwprobe, 5, pairs, pair_count, - cpu_count, cpus, flags); + cpusetsize, cpus.__ul, flags); /* Negate negative errno values to match pthreads API. */ return -r; diff --git a/sysdeps/unix/sysv/linux/riscv/kernel-features.h b/sysdeps/unix/sysv/linux/riscv/kernel-features.h index 022be51..dce5083 100644 --- a/sysdeps/unix/sysv/linux/riscv/kernel-features.h +++ b/sysdeps/unix/sysv/linux/riscv/kernel-features.h @@ -1,6 +1,6 @@ /* Set flags signalling availability of kernel features based on given kernel version number. RISC-V version. - Copyright (C) 2018-2024 Free Software Foundation, Inc. + Copyright (C) 2018-2025 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 diff --git a/sysdeps/unix/sysv/linux/riscv/makecontext.c b/sysdeps/unix/sysv/linux/riscv/makecontext.c index ef8fcb1..3da27dd 100644 --- a/sysdeps/unix/sysv/linux/riscv/makecontext.c +++ b/sysdeps/unix/sysv/linux/riscv/makecontext.c @@ -1,5 +1,5 @@ /* Create new context. RISC-V version. - Copyright (C) 2001-2024 Free Software Foundation, Inc. + Copyright (C) 2001-2025 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 diff --git a/sysdeps/unix/sysv/linux/riscv/multiarch/ifunc-impl-list.c b/sysdeps/unix/sysv/linux/riscv/multiarch/ifunc-impl-list.c index 9f806d7..1c1deca 100644 --- a/sysdeps/unix/sysv/linux/riscv/multiarch/ifunc-impl-list.c +++ b/sysdeps/unix/sysv/linux/riscv/multiarch/ifunc-impl-list.c @@ -1,5 +1,5 @@ /* Enumerate available IFUNC implementations of a function. RISCV version. - Copyright (C) 2024 Free Software Foundation, Inc. + Copyright (C) 2024-2025 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 diff --git a/sysdeps/unix/sysv/linux/riscv/multiarch/memcpy.c b/sysdeps/unix/sysv/linux/riscv/multiarch/memcpy.c index 51d8ace..8544f54 100644 --- a/sysdeps/unix/sysv/linux/riscv/multiarch/memcpy.c +++ b/sysdeps/unix/sysv/linux/riscv/multiarch/memcpy.c @@ -1,6 +1,6 @@ /* Multiple versions of memcpy. All versions must be listed in ifunc-impl-list.c. - Copyright (C) 2017-2024 Free Software Foundation, Inc. + Copyright (C) 2017-2025 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 diff --git a/sysdeps/unix/sysv/linux/riscv/readelflib.c b/sysdeps/unix/sysv/linux/riscv/readelflib.c index 42a6c04..cf9d0a5 100644 --- a/sysdeps/unix/sysv/linux/riscv/readelflib.c +++ b/sysdeps/unix/sysv/linux/riscv/readelflib.c @@ -1,5 +1,5 @@ /* Support for reading ELF files. - Copyright (C) 1999-2024 Free Software Foundation, Inc. + Copyright (C) 1999-2025 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 diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/arch-syscall.h b/sysdeps/unix/sysv/linux/riscv/rv32/arch-syscall.h index eb9e57b..1bae763 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv32/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/riscv/rv32/arch-syscall.h @@ -91,6 +91,7 @@ #define __NR_gettid 178 #define __NR_getuid 174 #define __NR_getxattr 8 +#define __NR_getxattrat 464 #define __NR_init_module 105 #define __NR_inotify_add_watch 27 #define __NR_inotify_init1 26 @@ -119,6 +120,7 @@ #define __NR_listen 201 #define __NR_listmount 458 #define __NR_listxattr 11 +#define __NR_listxattrat 465 #define __NR_llistxattr 12 #define __NR_llseek 62 #define __NR_lookup_dcookie 18 @@ -166,6 +168,7 @@ #define __NR_nfsservctl 42 #define __NR_open_by_handle_at 265 #define __NR_open_tree 428 +#define __NR_open_tree_attr 467 #define __NR_openat 56 #define __NR_openat2 437 #define __NR_perf_event_open 241 @@ -205,6 +208,7 @@ #define __NR_recvmsg 212 #define __NR_remap_file_pages 234 #define __NR_removexattr 14 +#define __NR_removexattrat 466 #define __NR_renameat2 276 #define __NR_request_key 218 #define __NR_restart_syscall 128 @@ -262,6 +266,7 @@ #define __NR_setsockopt 208 #define __NR_setuid 146 #define __NR_setxattr 5 +#define __NR_setxattrat 463 #define __NR_shmat 196 #define __NR_shmctl 195 #define __NR_shmdt 197 diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist index 6397a9c..1771a23 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist @@ -2512,3 +2512,22 @@ GLIBC_2.39 stdc_trailing_zeros_ul F GLIBC_2.39 stdc_trailing_zeros_ull F GLIBC_2.39 stdc_trailing_zeros_us F GLIBC_2.40 __riscv_hwprobe F +GLIBC_2.41 sched_getattr F +GLIBC_2.41 sched_setattr F +GLIBC_2.42 __inet_ntop_chk F +GLIBC_2.42 __inet_pton_chk F +GLIBC_2.42 cfgetibaud F +GLIBC_2.42 cfgetispeed F +GLIBC_2.42 cfgetobaud F +GLIBC_2.42 cfgetospeed F +GLIBC_2.42 cfsetbaud F +GLIBC_2.42 cfsetibaud F +GLIBC_2.42 cfsetispeed F +GLIBC_2.42 cfsetobaud F +GLIBC_2.42 cfsetospeed F +GLIBC_2.42 cfsetspeed F +GLIBC_2.42 pthread_gettid_np F +GLIBC_2.42 uabs F +GLIBC_2.42 uimaxabs F +GLIBC_2.42 ulabs F +GLIBC_2.42 ullabs F diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist index 248ca38..9342294 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist @@ -1068,3 +1068,99 @@ GLIBC_2.40 logp1f32x F GLIBC_2.40 logp1f64 F GLIBC_2.40 logp1f64x F GLIBC_2.40 logp1l F +GLIBC_2.41 acospi F +GLIBC_2.41 acospif F +GLIBC_2.41 acospif128 F +GLIBC_2.41 acospif32 F +GLIBC_2.41 acospif32x F +GLIBC_2.41 acospif64 F +GLIBC_2.41 acospif64x F +GLIBC_2.41 acospil F +GLIBC_2.41 asinpi F +GLIBC_2.41 asinpif F +GLIBC_2.41 asinpif128 F +GLIBC_2.41 asinpif32 F +GLIBC_2.41 asinpif32x F +GLIBC_2.41 asinpif64 F +GLIBC_2.41 asinpif64x F +GLIBC_2.41 asinpil F +GLIBC_2.41 atan2pi F +GLIBC_2.41 atan2pif F +GLIBC_2.41 atan2pif128 F +GLIBC_2.41 atan2pif32 F +GLIBC_2.41 atan2pif32x F +GLIBC_2.41 atan2pif64 F +GLIBC_2.41 atan2pif64x F +GLIBC_2.41 atan2pil F +GLIBC_2.41 atanpi F +GLIBC_2.41 atanpif F +GLIBC_2.41 atanpif128 F +GLIBC_2.41 atanpif32 F +GLIBC_2.41 atanpif32x F +GLIBC_2.41 atanpif64 F +GLIBC_2.41 atanpif64x F +GLIBC_2.41 atanpil F +GLIBC_2.41 cospi F +GLIBC_2.41 cospif F +GLIBC_2.41 cospif128 F +GLIBC_2.41 cospif32 F +GLIBC_2.41 cospif32x F +GLIBC_2.41 cospif64 F +GLIBC_2.41 cospif64x F +GLIBC_2.41 cospil F +GLIBC_2.41 sinpi F +GLIBC_2.41 sinpif F +GLIBC_2.41 sinpif128 F +GLIBC_2.41 sinpif32 F +GLIBC_2.41 sinpif32x F +GLIBC_2.41 sinpif64 F +GLIBC_2.41 sinpif64x F +GLIBC_2.41 sinpil F +GLIBC_2.41 tanpi F +GLIBC_2.41 tanpif F +GLIBC_2.41 tanpif128 F +GLIBC_2.41 tanpif32 F +GLIBC_2.41 tanpif32x F +GLIBC_2.41 tanpif64 F +GLIBC_2.41 tanpif64x F +GLIBC_2.41 tanpil F +GLIBC_2.42 compoundn F +GLIBC_2.42 compoundnf F +GLIBC_2.42 compoundnf128 F +GLIBC_2.42 compoundnf32 F +GLIBC_2.42 compoundnf32x F +GLIBC_2.42 compoundnf64 F +GLIBC_2.42 compoundnf64x F +GLIBC_2.42 compoundnl F +GLIBC_2.42 pown F +GLIBC_2.42 pownf F +GLIBC_2.42 pownf128 F +GLIBC_2.42 pownf32 F +GLIBC_2.42 pownf32x F +GLIBC_2.42 pownf64 F +GLIBC_2.42 pownf64x F +GLIBC_2.42 pownl F +GLIBC_2.42 powr F +GLIBC_2.42 powrf F +GLIBC_2.42 powrf128 F +GLIBC_2.42 powrf32 F +GLIBC_2.42 powrf32x F +GLIBC_2.42 powrf64 F +GLIBC_2.42 powrf64x F +GLIBC_2.42 powrl F +GLIBC_2.42 rootn F +GLIBC_2.42 rootnf F +GLIBC_2.42 rootnf128 F +GLIBC_2.42 rootnf32 F +GLIBC_2.42 rootnf32x F +GLIBC_2.42 rootnf64 F +GLIBC_2.42 rootnf64x F +GLIBC_2.42 rootnl F +GLIBC_2.42 rsqrt F +GLIBC_2.42 rsqrtf F +GLIBC_2.42 rsqrtf128 F +GLIBC_2.42 rsqrtf32 F +GLIBC_2.42 rsqrtf32x F +GLIBC_2.42 rsqrtf64 F +GLIBC_2.42 rsqrtf64x F +GLIBC_2.42 rsqrtl F diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/arch-syscall.h b/sysdeps/unix/sysv/linux/riscv/rv64/arch-syscall.h index 1eac18e..1a1ebf8 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv64/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/riscv/rv64/arch-syscall.h @@ -95,6 +95,7 @@ #define __NR_gettimeofday 169 #define __NR_getuid 174 #define __NR_getxattr 8 +#define __NR_getxattrat 464 #define __NR_init_module 105 #define __NR_inotify_add_watch 27 #define __NR_inotify_init1 26 @@ -124,6 +125,7 @@ #define __NR_listen 201 #define __NR_listmount 458 #define __NR_listxattr 11 +#define __NR_listxattrat 465 #define __NR_llistxattr 12 #define __NR_lookup_dcookie 18 #define __NR_lremovexattr 15 @@ -173,6 +175,7 @@ #define __NR_nfsservctl 42 #define __NR_open_by_handle_at 265 #define __NR_open_tree 428 +#define __NR_open_tree_attr 467 #define __NR_openat 56 #define __NR_openat2 437 #define __NR_perf_event_open 241 @@ -212,6 +215,7 @@ #define __NR_recvmsg 212 #define __NR_remap_file_pages 234 #define __NR_removexattr 14 +#define __NR_removexattrat 466 #define __NR_renameat2 276 #define __NR_request_key 218 #define __NR_restart_syscall 128 @@ -271,6 +275,7 @@ #define __NR_settimeofday 170 #define __NR_setuid 146 #define __NR_setxattr 5 +#define __NR_setxattrat 463 #define __NR_shmat 196 #define __NR_shmctl 195 #define __NR_shmdt 197 diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist index 71bbf94..4b48352 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist @@ -2712,3 +2712,22 @@ GLIBC_2.39 stdc_trailing_zeros_ul F GLIBC_2.39 stdc_trailing_zeros_ull F GLIBC_2.39 stdc_trailing_zeros_us F GLIBC_2.40 __riscv_hwprobe F +GLIBC_2.41 sched_getattr F +GLIBC_2.41 sched_setattr F +GLIBC_2.42 __inet_ntop_chk F +GLIBC_2.42 __inet_pton_chk F +GLIBC_2.42 cfgetibaud F +GLIBC_2.42 cfgetispeed F +GLIBC_2.42 cfgetobaud F +GLIBC_2.42 cfgetospeed F +GLIBC_2.42 cfsetbaud F +GLIBC_2.42 cfsetibaud F +GLIBC_2.42 cfsetispeed F +GLIBC_2.42 cfsetobaud F +GLIBC_2.42 cfsetospeed F +GLIBC_2.42 cfsetspeed F +GLIBC_2.42 pthread_gettid_np F +GLIBC_2.42 uabs F +GLIBC_2.42 uimaxabs F +GLIBC_2.42 ulabs F +GLIBC_2.42 ullabs F diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist index c8f976c..76e74c9 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist @@ -1165,3 +1165,99 @@ GLIBC_2.40 logp1f32x F GLIBC_2.40 logp1f64 F GLIBC_2.40 logp1f64x F GLIBC_2.40 logp1l F +GLIBC_2.41 acospi F +GLIBC_2.41 acospif F +GLIBC_2.41 acospif128 F +GLIBC_2.41 acospif32 F +GLIBC_2.41 acospif32x F +GLIBC_2.41 acospif64 F +GLIBC_2.41 acospif64x F +GLIBC_2.41 acospil F +GLIBC_2.41 asinpi F +GLIBC_2.41 asinpif F +GLIBC_2.41 asinpif128 F +GLIBC_2.41 asinpif32 F +GLIBC_2.41 asinpif32x F +GLIBC_2.41 asinpif64 F +GLIBC_2.41 asinpif64x F +GLIBC_2.41 asinpil F +GLIBC_2.41 atan2pi F +GLIBC_2.41 atan2pif F +GLIBC_2.41 atan2pif128 F +GLIBC_2.41 atan2pif32 F +GLIBC_2.41 atan2pif32x F +GLIBC_2.41 atan2pif64 F +GLIBC_2.41 atan2pif64x F +GLIBC_2.41 atan2pil F +GLIBC_2.41 atanpi F +GLIBC_2.41 atanpif F +GLIBC_2.41 atanpif128 F +GLIBC_2.41 atanpif32 F +GLIBC_2.41 atanpif32x F +GLIBC_2.41 atanpif64 F +GLIBC_2.41 atanpif64x F +GLIBC_2.41 atanpil F +GLIBC_2.41 cospi F +GLIBC_2.41 cospif F +GLIBC_2.41 cospif128 F +GLIBC_2.41 cospif32 F +GLIBC_2.41 cospif32x F +GLIBC_2.41 cospif64 F +GLIBC_2.41 cospif64x F +GLIBC_2.41 cospil F +GLIBC_2.41 sinpi F +GLIBC_2.41 sinpif F +GLIBC_2.41 sinpif128 F +GLIBC_2.41 sinpif32 F +GLIBC_2.41 sinpif32x F +GLIBC_2.41 sinpif64 F +GLIBC_2.41 sinpif64x F +GLIBC_2.41 sinpil F +GLIBC_2.41 tanpi F +GLIBC_2.41 tanpif F +GLIBC_2.41 tanpif128 F +GLIBC_2.41 tanpif32 F +GLIBC_2.41 tanpif32x F +GLIBC_2.41 tanpif64 F +GLIBC_2.41 tanpif64x F +GLIBC_2.41 tanpil F +GLIBC_2.42 compoundn F +GLIBC_2.42 compoundnf F +GLIBC_2.42 compoundnf128 F +GLIBC_2.42 compoundnf32 F +GLIBC_2.42 compoundnf32x F +GLIBC_2.42 compoundnf64 F +GLIBC_2.42 compoundnf64x F +GLIBC_2.42 compoundnl F +GLIBC_2.42 pown F +GLIBC_2.42 pownf F +GLIBC_2.42 pownf128 F +GLIBC_2.42 pownf32 F +GLIBC_2.42 pownf32x F +GLIBC_2.42 pownf64 F +GLIBC_2.42 pownf64x F +GLIBC_2.42 pownl F +GLIBC_2.42 powr F +GLIBC_2.42 powrf F +GLIBC_2.42 powrf128 F +GLIBC_2.42 powrf32 F +GLIBC_2.42 powrf32x F +GLIBC_2.42 powrf64 F +GLIBC_2.42 powrf64x F +GLIBC_2.42 powrl F +GLIBC_2.42 rootn F +GLIBC_2.42 rootnf F +GLIBC_2.42 rootnf128 F +GLIBC_2.42 rootnf32 F +GLIBC_2.42 rootnf32x F +GLIBC_2.42 rootnf64 F +GLIBC_2.42 rootnf64x F +GLIBC_2.42 rootnl F +GLIBC_2.42 rsqrt F +GLIBC_2.42 rsqrtf F +GLIBC_2.42 rsqrtf128 F +GLIBC_2.42 rsqrtf32 F +GLIBC_2.42 rsqrtf32x F +GLIBC_2.42 rsqrtf64 F +GLIBC_2.42 rsqrtf64x F +GLIBC_2.42 rsqrtl F diff --git a/sysdeps/unix/sysv/linux/riscv/setcontext.S b/sysdeps/unix/sysv/linux/riscv/setcontext.S index 716b8e7..a2de57b 100644 --- a/sysdeps/unix/sysv/linux/riscv/setcontext.S +++ b/sysdeps/unix/sysv/linux/riscv/setcontext.S @@ -1,5 +1,5 @@ /* Set current context. - Copyright (C) 2009-2024 Free Software Foundation, Inc. + Copyright (C) 2009-2025 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 diff --git a/sysdeps/unix/sysv/linux/riscv/sigcontextinfo.h b/sysdeps/unix/sysv/linux/riscv/sigcontextinfo.h index 2fd695b..d373867 100644 --- a/sysdeps/unix/sysv/linux/riscv/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/riscv/sigcontextinfo.h @@ -1,5 +1,5 @@ /* RISC-V definitions for signal handling calling conventions. - Copyright (C) 2000-2024 Free Software Foundation, Inc. + Copyright (C) 2000-2025 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 diff --git a/sysdeps/unix/sysv/linux/riscv/swapcontext.S b/sysdeps/unix/sysv/linux/riscv/swapcontext.S index 2255cca..bf5754c 100644 --- a/sysdeps/unix/sysv/linux/riscv/swapcontext.S +++ b/sysdeps/unix/sysv/linux/riscv/swapcontext.S @@ -1,5 +1,5 @@ /* Save and set current context. - Copyright (C) 2009-2024 Free Software Foundation, Inc. + Copyright (C) 2009-2025 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 diff --git a/sysdeps/unix/sysv/linux/riscv/sys/cachectl.h b/sysdeps/unix/sysv/linux/riscv/sys/cachectl.h index 2ff14c7..c27e495 100644 --- a/sysdeps/unix/sysv/linux/riscv/sys/cachectl.h +++ b/sysdeps/unix/sysv/linux/riscv/sys/cachectl.h @@ -1,5 +1,5 @@ /* RISC-V instruction cache flushing interface - Copyright (C) 2017-2024 Free Software Foundation, Inc. + Copyright (C) 2017-2025 Free Software Foundation, Inc. This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/riscv/sys/hwprobe.h b/sysdeps/unix/sysv/linux/riscv/sys/hwprobe.h index 8ecb43b..40415aa 100644 --- a/sysdeps/unix/sysv/linux/riscv/sys/hwprobe.h +++ b/sysdeps/unix/sysv/linux/riscv/sys/hwprobe.h @@ -1,5 +1,5 @@ /* RISC-V architecture probe interface - Copyright (C) 2024 Free Software Foundation, Inc. + Copyright (C) 2024-2025 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -21,6 +21,7 @@ #define _SYS_HWPROBE_H 1 #include <features.h> +#include <sched.h> #include <stddef.h> #include <errno.h> #ifdef __has_include @@ -63,22 +64,39 @@ struct riscv_hwprobe { __BEGIN_DECLS -extern int __riscv_hwprobe (struct riscv_hwprobe *__pairs, size_t __pair_count, - size_t __cpu_count, unsigned long int *__cpus, +#if defined __cplusplus || !__GNUC_PREREQ (2, 7) +# define __RISCV_HWPROBE_CPUS_TYPE cpu_set_t * +#else +/* The fourth argument to __riscv_hwprobe should be a null pointer or a + pointer to a cpu_set_t (either the fixed-size type or allocated with + CPU_ALLOC). However, early versions of this header file used the + argument type unsigned long int *. The transparent union allows + the argument to be either cpu_set_t * or unsigned long int * for + compatibility. The older header file requiring unsigned long int * + can be identified by the lack of the __RISCV_HWPROBE_CPUS_TYPE macro. + In C++ and with compilers that do not support transparent unions, the + argument type must be cpu_set_t *. */ +typedef union { + cpu_set_t *__cs; + unsigned long int *__ul; +} __RISCV_HWPROBE_CPUS_TYPE __attribute__ ((__transparent_union__)); +# define __RISCV_HWPROBE_CPUS_TYPE __RISCV_HWPROBE_CPUS_TYPE +#endif + +extern int __riscv_hwprobe (struct riscv_hwprobe *__pairs, + size_t __pair_count, size_t __cpusetsize, + __RISCV_HWPROBE_CPUS_TYPE __cpus, unsigned int __flags) - __nonnull ((1)) __wur - __fortified_attr_access (__read_write__, 1, 2) - __fortified_attr_access (__read_only__, 4, 3); + __THROW __nonnull ((1)) __attr_access ((__read_write__, 1, 2)); -/* A pointer to the __riscv_hwprobe vDSO function is passed as the second +/* A pointer to the __riscv_hwprobe function is passed as the second argument to ifunc selector routines. Include a function pointer type for convenience in calling the function in those settings. */ -typedef int (*__riscv_hwprobe_t) (struct riscv_hwprobe *__pairs, size_t __pair_count, - size_t __cpu_count, unsigned long int *__cpus, +typedef int (*__riscv_hwprobe_t) (struct riscv_hwprobe *__pairs, + size_t __pair_count, size_t __cpusetsize, + __RISCV_HWPROBE_CPUS_TYPE __cpus, unsigned int __flags) - __nonnull ((1)) __wur - __fortified_attr_access (__read_write__, 1, 2) - __fortified_attr_access (__read_only__, 4, 3); + __nonnull ((1)) __attr_access ((__read_write__, 1, 2)); /* Helper function usable from ifunc selectors that probes a single key. */ static __inline int diff --git a/sysdeps/unix/sysv/linux/riscv/sys/ucontext.h b/sysdeps/unix/sysv/linux/riscv/sys/ucontext.h index bf6a1b4..a572ec6 100644 --- a/sysdeps/unix/sysv/linux/riscv/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/riscv/sys/ucontext.h @@ -1,5 +1,5 @@ /* struct ucontext definition, RISC-V version. - Copyright (C) 1997-2024 Free Software Foundation, Inc. + Copyright (C) 1997-2025 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 diff --git a/sysdeps/unix/sysv/linux/riscv/sys/user.h b/sysdeps/unix/sysv/linux/riscv/sys/user.h index 563ed86..4796e25 100644 --- a/sysdeps/unix/sysv/linux/riscv/sys/user.h +++ b/sysdeps/unix/sysv/linux/riscv/sys/user.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2001-2024 Free Software Foundation, Inc. +/* Copyright (C) 2001-2025 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 diff --git a/sysdeps/unix/sysv/linux/riscv/syscall.c b/sysdeps/unix/sysv/linux/riscv/syscall.c index 5fc2695..67eb411 100644 --- a/sysdeps/unix/sysv/linux/riscv/syscall.c +++ b/sysdeps/unix/sysv/linux/riscv/syscall.c @@ -1,5 +1,5 @@ /* system call interface. Linux/RISC-V version. - Copyright (C) 2001-2024 Free Software Foundation, Inc. + Copyright (C) 2001-2025 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 diff --git a/sysdeps/unix/sysv/linux/riscv/syscall_cancel.S b/sysdeps/unix/sysv/linux/riscv/syscall_cancel.S new file mode 100644 index 0000000..70339a3 --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/syscall_cancel.S @@ -0,0 +1,67 @@ +/* Cancellable syscall wrapper. Linux/riscv version. + Copyright (C) 2023-2025 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <descr-const.h> + +/* long int __syscall_cancel_arch (int *cancelhandling, + __syscall_arg_t nr, + __syscall_arg_t arg1, + __syscall_arg_t arg2, + __syscall_arg_t arg3, + __syscall_arg_t arg4, + __syscall_arg_t arg5, + __syscall_arg_t arg6) */ + +#ifdef SHARED + .option pic +#else + .option nopic +#endif + +ENTRY (__syscall_cancel_arch) + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + lw t1, 0(a0) + /* if (*ch & CANCELED_BITMASK) */ + andi t1, t1, TCB_CANCELED_BITMASK + bne t1, zero, 1f + + mv t3, a1 + mv a0, a2 + mv a1, a3 + mv a2, a4 + mv a3, a5 + mv a4, a6 + mv a5, a7 + mv a7, t3 + scall + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + ret + +1: + addi sp, sp, -16 + cfi_def_cfa_offset (16) + REG_S ra, (16-SZREG)(sp) + cfi_offset (ra, -SZREG) + call __syscall_do_cancel + +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/riscv/sysconf.c b/sysdeps/unix/sysv/linux/riscv/sysconf.c index cd79ec3..47b7b20 100644 --- a/sysdeps/unix/sysv/linux/riscv/sysconf.c +++ b/sysdeps/unix/sysv/linux/riscv/sysconf.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2020-2024 Free Software Foundation, Inc. +/* Copyright (C) 2020-2025 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 diff --git a/sysdeps/unix/sysv/linux/riscv/sysdep.S b/sysdeps/unix/sysv/linux/riscv/sysdep.S index b782251..b50671b 100644 --- a/sysdeps/unix/sysv/linux/riscv/sysdep.S +++ b/sysdeps/unix/sysv/linux/riscv/sysdep.S @@ -1,5 +1,5 @@ /* syscall error handlers - Copyright (C) 2011-2024 Free Software Foundation, Inc. + Copyright (C) 2011-2025 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 diff --git a/sysdeps/unix/sysv/linux/riscv/sysdep.h b/sysdeps/unix/sysv/linux/riscv/sysdep.h index ee015df..05e0e05 100644 --- a/sysdeps/unix/sysv/linux/riscv/sysdep.h +++ b/sysdeps/unix/sysv/linux/riscv/sysdep.h @@ -145,11 +145,12 @@ # define HAVE_CLOCK_GETRES64_VSYSCALL "__vdso_clock_getres" # define HAVE_CLOCK_GETTIME64_VSYSCALL "__vdso_clock_gettime" # define HAVE_GETTIMEOFDAY_VSYSCALL "__vdso_gettimeofday" +# define HAVE_GETRANDOM_VSYSCALL "__vdso_getrandom" # else # define VDSO_NAME "LINUX_5.4" # define VDSO_HASH 61765876 -/* RV32 does not support the gettime VDSO syscalls. */ +/* RV32 does not support the gettime and getrandom VDSO syscalls. */ # endif # define HAVE_CLONE3_WRAPPER 1 diff --git a/sysdeps/unix/sysv/linux/riscv/ucontext-macros.h b/sysdeps/unix/sysv/linux/riscv/ucontext-macros.h index a99322f..d0955be 100644 --- a/sysdeps/unix/sysv/linux/riscv/ucontext-macros.h +++ b/sysdeps/unix/sysv/linux/riscv/ucontext-macros.h @@ -1,5 +1,5 @@ /* Macros for ucontext routines. - Copyright (C) 2017-2024 Free Software Foundation, Inc. + Copyright (C) 2017-2025 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 diff --git a/sysdeps/unix/sysv/linux/riscv/vfork.S b/sysdeps/unix/sysv/linux/riscv/vfork.S index 20af45b..1e39b7a 100644 --- a/sysdeps/unix/sysv/linux/riscv/vfork.S +++ b/sysdeps/unix/sysv/linux/riscv/vfork.S @@ -1,5 +1,5 @@ /* vfork for Linux, RISC-V version. - Copyright (C) 2005-2024 Free Software Foundation, Inc. + Copyright (C) 2005-2025 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 |