diff options
Diffstat (limited to 'sysdeps/unix/sysv')
1792 files changed, 12426 insertions, 9365 deletions
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index 59998c7..c47cbdf 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -95,6 +95,8 @@ sysdep_routines += \ process_vm_writev \ pselect32 \ readahead \ + sched_getattr \ + sched_setattr \ setfsgid \ setfsuid \ setvmaname \ @@ -149,15 +151,6 @@ sysdep_headers += \ bits/struct_stat.h \ bits/struct_stat_time64_helper.h \ bits/syscall.h \ - bits/termios-baud.h \ - bits/termios-c_cc.h \ - bits/termios-c_cflag.h \ - bits/termios-c_iflag.h \ - bits/termios-c_lflag.h \ - bits/termios-c_oflag.h \ - bits/termios-misc.h \ - bits/termios-struct.h \ - bits/termios-tcflow.h \ bits/timerfd.h \ bits/types/struct_msqid64_ds.h \ bits/types/struct_msqid64_ds_helper.h \ @@ -224,9 +217,13 @@ tests += \ tst-process_mrelease \ tst-quota \ tst-rlimit-infinity \ + tst-sched-affinity-inheritance \ + tst-sched_setattr \ + tst-sched_setattr-thread \ tst-scm_rights \ tst-sigtimedwait \ tst-sync_file_range \ + tst-syscall-restart \ tst-sysconf-iov_max \ tst-sysvmsg-linux \ tst-sysvsem-linux \ @@ -263,6 +260,11 @@ tests-internal += \ tst-rseq-disable \ # tests-internal +tests-static += \ + tst-rseq-disable-static \ + tst-rseq-static \ + # tests-static + tests-time64 += \ tst-adjtimex-time64 \ tst-clock_adjtime-time64 \ @@ -395,10 +397,39 @@ $(objpfx)tst-mount-compile.out: ../sysdeps/unix/sysv/linux/tst-mount-compile.py < /dev/null > $@ 2>&1; $(evaluate-test) $(objpfx)tst-mount-compile.out: $(sysdeps-linux-python-deps) +tests-special += \ + $(objpfx)tst-sched-consts.out \ + # tests-special +$(objpfx)tst-sched-consts.out: ../sysdeps/unix/sysv/linux/tst-sched-consts.py + $(sysdeps-linux-python) \ + ../sysdeps/unix/sysv/linux/tst-sched-consts.py \ + $(sysdeps-linux-python-cc) \ + < /dev/null > $@ 2>&1; $(evaluate-test) +$(objpfx)tst-sched-consts.out: $(sysdeps-linux-python-deps) + tst-rseq-disable-ENV = GLIBC_TUNABLES=glibc.pthread.rseq=0 +tst-rseq-disable-static-ENV = GLIBC_TUNABLES=glibc.pthread.rseq=0 endif # $(subdir) == misc +ifeq ($(subdir),termios) +sysdep_headers += \ + bits/termios-c_cc.h \ + bits/termios-c_cflag.h \ + bits/termios-c_iflag.h \ + bits/termios-c_lflag.h \ + bits/termios-c_oflag.h \ + bits/termios-cbaud.h \ + bits/termios-misc.h \ + bits/termios-struct.h \ + bits/termios-tcflow.h \ + # sysdep_headers + +tests += \ + tst-termios-linux \ + # tests +endif + ifeq ($(subdir),time) sysdep_headers += \ bits/timex.h \ @@ -484,12 +515,6 @@ sysdep_headers += \ # sysdep_headers endif -ifeq ($(subdir),termios) -sysdep_headers += \ - termio.h \ - # sysdep_headers -endif - ifeq ($(subdir),posix) sysdep_headers += \ bits/initspin.h \ @@ -587,6 +612,7 @@ endif ifeq ($(subdir),io) sysdep_routines += \ close_nocancel \ + close_nocancel_nostatus \ fallocate \ fallocate64 \ fcntl_nocancel \ @@ -638,7 +664,29 @@ install-bin += \ # install-bin $(objpfx)pldd: $(objpfx)xmalloc.o + +tests += tst-rseq-tls-range tst-rseq-tls-range-4096 +tests-static += tst-rseq-tls-range-static tst-rseq-tls-range-4096-static +modules-names += tst-rseq-tls-range-mod +CFLAGS-tst-rseq-tls-range.c += -DMAIN_TLS_ALIGN=4 +CFLAGS-tst-rseq-tls-range-4096.c += -DMAIN_TLS_ALIGN=4096 +CFLAGS-tst-rseq-tls-range-static.c += -DMAIN_TLS_ALIGN=4 +CFLAGS-tst-rseq-tls-range-4096-static.c += -DMAIN_TLS_ALIGN=4096 +$(objpfx)tst-rseq-tls-range.out: $(objpfx)tst-rseq-tls-range-mod.so +$(objpfx)tst-rseq-tls-range-4096.out: $(objpfx)tst-rseq-tls-range-mod.so +$(objpfx)tst-rseq-tls-range-static.out: $(objpfx)tst-rseq-tls-range-mod.so +$(objpfx)tst-rseq-tls-range-4096-static.out: $(objpfx)tst-rseq-tls-range-mod.so +tst-rseq-tls-range-static-ENV = LD_LIBRARY_PATH=$(objpfx):$(common-objpfx) +tst-rseq-tls-range-4096-static-ENV = LD_LIBRARY_PATH=$(objpfx):$(common-objpfx) + +test-internal-extras += tst-nolink-libc +ifeq ($(run-built-tests),yes) +tests-special += \ + $(objpfx)tst-nolink-libc-1.out \ + $(objpfx)tst-nolink-libc-2.out \ + # tests-special endif +endif # $(subdir) == elf ifeq ($(subdir),rt) CFLAGS-mq_send.c += -fexceptions @@ -654,6 +702,7 @@ ifeq ($(subdir),nptl) tests += \ tst-align-clone \ tst-getpid1 \ + tst-sem_getvalue-affinity \ # tests # tst-rseq-nptl is an internal test because it requires a definition of @@ -661,4 +710,8 @@ tests += \ tests-internal += \ tst-rseq-nptl \ # tests-internal + +tests-static += \ + tst-rseq-nptl-static \ + # tests-static endif diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions index 268ba1b..585dec7 100644 --- a/sysdeps/unix/sysv/linux/Versions +++ b/sysdeps/unix/sysv/linux/Versions @@ -328,6 +328,17 @@ libc { posix_spawnattr_getcgroup_np; posix_spawnattr_setcgroup_np; } + GLIBC_2.41 { + sched_getattr; + sched_setattr; + } + GLIBC_2.42 { + cfgetospeed; + cfgetispeed; + cfsetospeed; + cfsetispeed; + cfsetspeed; + } GLIBC_PRIVATE { # functions used in other libraries __syscall_rt_sigqueueinfo; @@ -335,6 +346,7 @@ libc { __read_nocancel; __pread64_nocancel; __close_nocancel; + __close_nocancel_nostatus; __sigtimedwait; # functions used by nscd __netlink_assert_response; @@ -356,7 +368,4 @@ ld { __rseq_offset; __rseq_size; } - GLIBC_PRIVATE { - __nptl_change_stack_perm; - } } diff --git a/sysdeps/unix/sysv/linux/____longjmp_chk.c b/sysdeps/unix/sysv/linux/____longjmp_chk.c index 3c66a46..f3725db 100644 --- a/sysdeps/unix/sysv/linux/____longjmp_chk.c +++ b/sysdeps/unix/sysv/linux/____longjmp_chk.c @@ -1,5 +1,5 @@ /* longjmp fortify implementation. Linux version. - 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/_exit.c b/sysdeps/unix/sysv/linux/_exit.c index 1e39923..fcca24b 100644 --- a/sysdeps/unix/sysv/linux/_exit.c +++ b/sysdeps/unix/sysv/linux/_exit.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2024 Free Software Foundation, Inc. +/* Copyright (C) 2002-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/aarch64/Makefile b/sysdeps/unix/sysv/linux/aarch64/Makefile index 40b9a2e..15a2b44 100644 --- a/sysdeps/unix/sysv/linux/aarch64/Makefile +++ b/sysdeps/unix/sysv/linux/aarch64/Makefile @@ -1,6 +1,149 @@ +ifeq ($(subdir),elf) +tests += \ + tst-tlsdesc-pac \ + # tests +modules-names += \ + tst-tlsdesc-pac-mod \ + # modules-names + +LDFLAGS-tst-tlsdesc-pac = -rdynamic + +$(objpfx)tst-tlsdesc-pac.out: $(objpfx)tst-tlsdesc-pac-mod.so +endif + ifeq ($(subdir),misc) sysdep_headers += sys/elf.h -endif +tests += \ + tst-aarch64-pkey \ + # tests + +ifneq (no,$(findstring no,$(have-cc-gcs) $(have-test-cc-gcs) $(have-ld-gcs))) + +gcs-tests-dynamic = \ + tst-gcs-disabled \ + tst-gcs-dlopen-disabled \ + tst-gcs-dlopen-enforced \ + tst-gcs-dlopen-optional-off \ + tst-gcs-dlopen-optional-on \ + tst-gcs-dlopen-override \ + tst-gcs-enforced \ + tst-gcs-enforced-abort \ + tst-gcs-noreturn \ + tst-gcs-optional-off \ + tst-gcs-optional-on \ + tst-gcs-override \ + tst-gcs-shared-disabled \ + tst-gcs-shared-enforced-abort \ + tst-gcs-shared-optional \ + tst-gcs-shared-override \ + # gcs-tests-dynamic + +gcs-tests-static = \ + tst-gcs-disabled-static \ + tst-gcs-enforced-static \ + tst-gcs-enforced-static-abort \ + tst-gcs-optional-static-off \ + tst-gcs-optional-static-on \ + tst-gcs-override-static \ + # gcs-tests-static + +tests += \ + $(gcs-tests-dynamic) \ + $(gcs-tests-static) \ + # tests + +tests-static += \ + $(gcs-tests-static) \ + # tests-static + +define run-gcs-abort-test + $(test-wrapper-env) $(run-program-env) \ + $(tst-gcs-$*-abort-ENV) $(host-test-program-cmd) +endef + +$(objpfx)tst-gcs-%-abort.out: $(..)sysdeps/unix/sysv/linux/aarch64/tst-gcs-abort.sh \ + $(objpfx)tst-gcs-%-abort + $(SHELL) $< $(common-objpfx) $(test-name) '$(run-gcs-abort-test)'; \ + $(evaluate-test) + +LDFLAGS-tst-gcs-disabled += -Wl,-z gcs=always +LDFLAGS-tst-gcs-enforced += -Wl,-z gcs=always +LDFLAGS-tst-gcs-enforced-abort += -Wl,-z gcs=never +LDFLAGS-tst-gcs-optional-on += -Wl,-z gcs=always +LDFLAGS-tst-gcs-optional-off += -Wl,-z gcs=never +LDFLAGS-tst-gcs-override += -Wl,-z gcs=never + +LDFLAGS-tst-gcs-disabled-static += -Wl,-z gcs=always +LDFLAGS-tst-gcs-enforced-static += -Wl,-z gcs=always +LDFLAGS-tst-gcs-enforced-static-abort += -Wl,-z gcs=never +LDFLAGS-tst-gcs-optional-static-on += -Wl,-z gcs=always +LDFLAGS-tst-gcs-optional-static-off += -Wl,-z gcs=never +LDFLAGS-tst-gcs-override-static += -Wl,-z gcs=never + +tst-gcs-disabled-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=0 +tst-gcs-enforced-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=1 +tst-gcs-enforced-abort-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=1 +tst-gcs-optional-on-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=2 +tst-gcs-optional-off-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=2 +tst-gcs-override-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=3 + +tst-gcs-disabled-static-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=0 +tst-gcs-enforced-static-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=1 +tst-gcs-enforced-static-abort-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=1 +tst-gcs-optional-static-on-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=2 +tst-gcs-optional-static-off-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=2 +tst-gcs-override-static-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=3 + +# force one of the dependencies to be unmarked +LDFLAGS-tst-gcs-mod2.so += -Wl,-z gcs=never + +LDFLAGS-tst-gcs-shared-disabled = -Wl,-z gcs=always +LDFLAGS-tst-gcs-shared-enforced-abort = -Wl,-z gcs=always +LDFLAGS-tst-gcs-shared-optional = -Wl,-z gcs=always +LDFLAGS-tst-gcs-shared-override = -Wl,-z gcs=always + +modules-names += \ + tst-gcs-mod1 \ + tst-gcs-mod2 \ + tst-gcs-mod3 \ + # modules-names + +$(objpfx)tst-gcs-shared-disabled: $(objpfx)tst-gcs-mod1.so $(objpfx)tst-gcs-mod3.so +$(objpfx)tst-gcs-shared-enforced-abort: $(objpfx)tst-gcs-mod1.so $(objpfx)tst-gcs-mod3.so +$(objpfx)tst-gcs-shared-optional: $(objpfx)tst-gcs-mod1.so $(objpfx)tst-gcs-mod3.so +$(objpfx)tst-gcs-shared-override: $(objpfx)tst-gcs-mod1.so $(objpfx)tst-gcs-mod3.so +$(objpfx)tst-gcs-mod1.so: $(objpfx)tst-gcs-mod2.so + +tst-gcs-shared-disabled-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=0 +tst-gcs-shared-enforced-abort-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=1 +tst-gcs-shared-optional-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=2 +tst-gcs-shared-override-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=3 + +LDFLAGS-tst-gcs-dlopen-disabled = -Wl,-z gcs=always +LDFLAGS-tst-gcs-dlopen-enforced = -Wl,-z gcs=always +LDFLAGS-tst-gcs-dlopen-optional-on = -Wl,-z gcs=always +LDFLAGS-tst-gcs-dlopen-optional-off = -Wl,-z gcs=never +LDFLAGS-tst-gcs-dlopen-override = -Wl,-z gcs=always + +tst-gcs-dlopen-disabled-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=0 +tst-gcs-dlopen-enforced-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=1 +tst-gcs-dlopen-optional-on-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=2 +tst-gcs-dlopen-optional-off-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=2 +tst-gcs-dlopen-override-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=3 + +$(objpfx)tst-gcs-dlopen-disabled.out: $(objpfx)tst-gcs-mod2.so +$(objpfx)tst-gcs-dlopen-enforced.out: $(objpfx)tst-gcs-mod2.so +$(objpfx)tst-gcs-dlopen-optional-on.out: $(objpfx)tst-gcs-mod2.so +$(objpfx)tst-gcs-dlopen-optional-off.out: $(objpfx)tst-gcs-mod2.so +$(objpfx)tst-gcs-dlopen-override.out: $(objpfx)tst-gcs-mod2.so + +LDFLAGS-tst-gcs-noreturn = -Wl,-z gcs=always + +tst-gcs-noreturn-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=0 + +endif # ifeq ($(have-test-cc-gcs),yes) + +endif # ifeq ($(subdir),misc) ifeq ($(subdir),stdlib) gen-as-const-headers += ucontext_i.sym diff --git a/sysdeps/unix/sysv/linux/aarch64/arch-pkey.h b/sysdeps/unix/sysv/linux/aarch64/arch-pkey.h new file mode 100644 index 0000000..dbfcc91 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/arch-pkey.h @@ -0,0 +1,53 @@ +/* Helper functions for manipulating memory protection keys. + 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 + 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/>. */ + +#ifndef _ARCH_PKEY_H +#define _ARCH_PKEY_H + +#include <sys/cdefs.h> + +#define S1POE_PERM_NO_ACCESS 0b0000UL +#define S1POE_PERM_R 0b0001UL +#define S1POE_PERM_X 0b0010UL +#define S1POE_PERM_RX 0b0011UL +#define S1POE_PERM_W 0b0100UL +#define S1POE_PERM_RW 0b0101UL +#define S1POE_PERM_WX 0b0110UL +#define S1POE_PERM_RWX 0b0111UL + +#define S1POE_PERM_MASK 0b1111UL + +#define S1POE_BITS_PER_POI 4UL + +/* Return the value of the POR_EL0 register. */ +static __always_inline unsigned long +pkey_read (void) +{ + unsigned long r; + __asm__ volatile ("mrs %0, s3_3_c10_c2_4" : "=r" (r)); + return r; +} + +/* Overwrite the POR_EL0 register with VALUE. */ +static __always_inline void +pkey_write (unsigned long value) +{ + __asm__ volatile ("msr s3_3_c10_c2_4, %0; isb" : : "r" (value)); +} + +#endif /* _ARCH_PKEY_H */ diff --git a/sysdeps/unix/sysv/linux/aarch64/arch-syscall.h b/sysdeps/unix/sysv/linux/aarch64/arch-syscall.h index 19b6316..ba4a461 100644 --- a/sysdeps/unix/sysv/linux/aarch64/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/aarch64/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_renameat 38 #define __NR_renameat2 276 #define __NR_request_key 218 @@ -270,6 +274,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/aarch64/bits/fcntl.h b/sysdeps/unix/sysv/linux/aarch64/bits/fcntl.h index 036c476..6579126 100644 --- a/sysdeps/unix/sysv/linux/aarch64/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/aarch64/bits/fcntl.h @@ -1,5 +1,5 @@ /* O_*, F_*, FD_* bit values for the AArch64 Linux ABI. - 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. @@ -25,17 +25,11 @@ #define __O_NOFOLLOW 0100000 #define __O_DIRECT 0200000 -#ifdef __ILP32__ -# define __O_LARGEFILE 0400000 -#else -# define __O_LARGEFILE 0 -#endif +#define __O_LARGEFILE 0 -#ifdef __LP64__ -# define F_GETLK64 5 -# define F_SETLK64 6 -# define F_SETLKW64 7 -#endif +#define F_GETLK64 5 +#define F_SETLK64 6 +#define F_SETLKW64 7 struct flock { diff --git a/sysdeps/unix/sysv/linux/aarch64/bits/hwcap.h b/sysdeps/unix/sysv/linux/aarch64/bits/hwcap.h index 8dceaa1..d064a09 100644 --- a/sysdeps/unix/sysv/linux/aarch64/bits/hwcap.h +++ b/sysdeps/unix/sysv/linux/aarch64/bits/hwcap.h @@ -1,5 +1,5 @@ /* Defines for bits in AT_HWCAP. AArch64 Linux version. - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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 @@ -54,6 +54,7 @@ #define HWCAP_SB (1 << 29) #define HWCAP_PACA (1 << 30) #define HWCAP_PACG (1UL << 31) +#define HWCAP_GCS (1UL << 32) #define HWCAP2_DCPODP (1 << 0) #define HWCAP2_SVE2 (1 << 1) @@ -118,3 +119,4 @@ #define HWCAP2_SME_SF8FMA (1UL << 60) #define HWCAP2_SME_SF8DP4 (1UL << 61) #define HWCAP2_SME_SF8DP2 (1UL << 62) +#define HWCAP2_POE (1UL << 63) diff --git a/sysdeps/unix/sysv/linux/aarch64/bits/mman.h b/sysdeps/unix/sysv/linux/aarch64/bits/mman.h index c5b6c69..a6eb7b0 100644 --- a/sysdeps/unix/sysv/linux/aarch64/bits/mman.h +++ b/sysdeps/unix/sysv/linux/aarch64/bits/mman.h @@ -1,5 +1,5 @@ /* Definitions for POSIX memory map interface. Linux/AArch64 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 @@ -26,6 +26,14 @@ #define PROT_BTI 0x10 #define PROT_MTE 0x20 +#ifdef __USE_GNU +# define PKEY_UNRESTRICTED 0x0 +# define PKEY_DISABLE_ACCESS 0x1 +# define PKEY_DISABLE_WRITE 0x2 +# define PKEY_DISABLE_EXECUTE 0x4 +# define PKEY_DISABLE_READ 0x8 +#endif + #include <bits/mman-map-flags-generic.h> /* Include generic Linux declarations. */ diff --git a/sysdeps/unix/sysv/linux/aarch64/bits/procfs.h b/sysdeps/unix/sysv/linux/aarch64/bits/procfs.h index 4abc9e3..7d1d4a2 100644 --- a/sysdeps/unix/sysv/linux/aarch64/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/aarch64/bits/procfs.h @@ -1,5 +1,5 @@ /* Types for registers for sys/procfs.h. AArch64 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. diff --git a/sysdeps/unix/sysv/linux/aarch64/bits/pthread_stack_min.h b/sysdeps/unix/sysv/linux/aarch64/bits/pthread_stack_min.h index 22c2bab..7ef84b4 100644 --- a/sysdeps/unix/sysv/linux/aarch64/bits/pthread_stack_min.h +++ b/sysdeps/unix/sysv/linux/aarch64/bits/pthread_stack_min.h @@ -1,5 +1,5 @@ /* Definition of PTHREAD_STACK_MIN. Linux/aarch64 version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-2025 Free Software Foundation, Inc. This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/aarch64/bits/rseq.h b/sysdeps/unix/sysv/linux/aarch64/bits/rseq.h index e36bf13..2175562 100644 --- a/sysdeps/unix/sysv/linux/aarch64/bits/rseq.h +++ b/sysdeps/unix/sysv/linux/aarch64/bits/rseq.h @@ -1,5 +1,5 @@ /* Restartable Sequences Linux aarch64 architecture header. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + 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 diff --git a/sysdeps/unix/sysv/linux/aarch64/bits/sigstack.h b/sysdeps/unix/sysv/linux/aarch64/bits/sigstack.h index 03e6e40..51d6fa2 100644 --- a/sysdeps/unix/sysv/linux/aarch64/bits/sigstack.h +++ b/sysdeps/unix/sysv/linux/aarch64/bits/sigstack.h @@ -1,5 +1,5 @@ /* sigstack, sigaltstack definitions. - Copyright (C) 2015-2024 Free Software Foundation, Inc. + Copyright (C) 2015-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/aarch64/clone.S b/sysdeps/unix/sysv/linux/aarch64/clone.S index 0e7ee24..40015c6 100644 --- a/sysdeps/unix/sysv/linux/aarch64/clone.S +++ b/sysdeps/unix/sysv/linux/aarch64/clone.S @@ -1,4 +1,4 @@ -/* 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. @@ -33,12 +33,6 @@ */ .text ENTRY(__clone) - PTR_ARG (0) - PTR_ARG (1) - PTR_ARG (3) - PTR_ARG (4) - PTR_ARG (5) - PTR_ARG (6) /* Save args for the child. */ mov x10, x0 mov x11, x2 diff --git a/sysdeps/unix/sysv/linux/aarch64/clone3.S b/sysdeps/unix/sysv/linux/aarch64/clone3.S index e28aaa5..c9ca845 100644 --- a/sysdeps/unix/sysv/linux/aarch64/clone3.S +++ b/sysdeps/unix/sysv/linux/aarch64/clone3.S @@ -1,5 +1,5 @@ /* The clone3 syscall wrapper. Linux/aarch64 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. @@ -36,10 +36,6 @@ .text ENTRY(__clone3) - PTR_ARG (0) - PTR_ARG (1) - PTR_ARG (3) - PTR_ARG (4) /* Save args for the child. */ mov x10, x0 /* cl_args */ mov x11, x2 /* func */ diff --git a/sysdeps/unix/sysv/linux/aarch64/cpu-features.c b/sysdeps/unix/sysv/linux/aarch64/cpu-features.c index c0b047b..1acc82d 100644 --- a/sysdeps/unix/sysv/linux/aarch64/cpu-features.c +++ b/sysdeps/unix/sysv/linux/aarch64/cpu-features.c @@ -1,6 +1,6 @@ /* Initialize CPU feature data. AArch64 version. This file is part of the GNU C Library. - Copyright (C) 2017-2024 Free Software Foundation, Inc. + Copyright (C) 2017-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 @@ -23,6 +23,7 @@ #include <sys/prctl.h> #include <sys/utsname.h> #include <dl-tunables-parse.h> +#include <dl-symbol-redir-ifunc.h> #define DCZID_DZP_MASK (1 << 4) #define DCZID_BS_MASK (0xf) @@ -128,7 +129,7 @@ init_cpu_features (struct cpu_features *cpu_features) cpu_features->midr_el1 = midr; /* Check if ZVA is enabled. */ - unsigned dczid; + uint64_t dczid; asm volatile ("mrs %0, dczid_el0" : "=r"(dczid)); if ((dczid & DCZID_DZP_MASK) == 0) @@ -176,4 +177,8 @@ init_cpu_features (struct cpu_features *cpu_features) /* Check if MOPS is supported. */ cpu_features->mops = GLRO (dl_hwcap2) & HWCAP2_MOPS; + + if (GLRO (dl_hwcap) & HWCAP_GCS) + /* GCS status may be updated later by binary compatibility checks. */ + GL (dl_aarch64_gcs) = TUNABLE_GET (glibc, cpu, aarch64_gcs, uint64_t, 0); } diff --git a/sysdeps/unix/sysv/linux/aarch64/dl-cache.h b/sysdeps/unix/sysv/linux/aarch64/dl-cache.h index fe4d274..35e1b91 100644 --- a/sysdeps/unix/sysv/linux/aarch64/dl-cache.h +++ b/sysdeps/unix/sysv/linux/aarch64/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 @@ -18,11 +18,7 @@ #include <ldconfig.h> -#ifdef __LP64__ -# define _DL_CACHE_DEFAULT_ID (FLAG_AARCH64_LIB64 | FLAG_ELF_LIBC6) -#else -# define _DL_CACHE_DEFAULT_ID (FLAG_AARCH64_LIB32 | FLAG_ELF_LIBC6) -#endif +#define _DL_CACHE_DEFAULT_ID (FLAG_AARCH64_LIB64 | FLAG_ELF_LIBC6) #define _dl_cache_check_flags(flags) \ ((flags) == _DL_CACHE_DEFAULT_ID) @@ -38,18 +34,11 @@ len -= 2; \ path[len] = '\0'; \ } \ - if (len >= 9 && ! memcmp (path + len - 9, "/libilp32", 9))\ - { \ - len -= 5; \ - path[len] = '\0'; \ - } \ add_dir (path); \ if (len >= 4 && ! memcmp (path + len - 4, "/lib", 4)) \ { \ memcpy (path + len, "64", 3); \ add_dir (path); \ - memcpy (path + len, "ilp32", 6); \ - add_dir (path); \ } \ } while (0) diff --git a/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.c b/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.c index 7af232d..20966e0 100644 --- a/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.c +++ b/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.c @@ -1,6 +1,6 @@ /* Data for AArch64 version of processor capability information. Linux version. - 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 @@ -56,27 +56,5 @@ PROCINFO_CLASS struct cpu_features _dl_aarch64_cpu_features # endif #endif -/* Number of HWCAP bits set. */ -#define _DL_HWCAP_COUNT 32 - -#if !defined PROCINFO_DECL && defined SHARED - ._dl_aarch64_cap_flags -#else -PROCINFO_CLASS const char _dl_aarch64_cap_flags[_DL_HWCAP_COUNT][10] -#endif -#ifndef PROCINFO_DECL -/* Matches the names in arch/arm64/kernel/cpuinfo.c of Linux. */ -= { "fp", "asimd", "evtstrm", "aes", "pmull", "sha1", "sha2", "crc32", - "atomics", "fphp", "asimdhp", "cpuid", "asimdrdm", "jscvt", "fcma", - "lrcpc", "dcpop", "sha3", "sm3", "sm4", "asimddp", "sha512", "sve", - "asimdfhm", "dit", "uscat", "ilrcpc", "flagm", "ssbs", "sb", "paca", - "pacg" } -#endif -#if !defined SHARED || defined PROCINFO_DECL -; -#else -, -#endif - #undef PROCINFO_DECL #undef PROCINFO_CLASS diff --git a/sysdeps/unix/sysv/linux/aarch64/dl-procruntime.c b/sysdeps/unix/sysv/linux/aarch64/dl-procruntime.c new file mode 100644 index 0000000..044544a --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/dl-procruntime.c @@ -0,0 +1,37 @@ +/* Data for processor runtime information. AArch64 version. + 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 + 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/>. */ + +#ifndef PROCINFO_CLASS +# define PROCINFO_CLASS +#endif + +#if !IS_IN (ldconfig) +# if !defined PROCINFO_DECL && defined SHARED + ._dl_aarch64_gcs +# else +PROCINFO_CLASS unsigned long _dl_aarch64_gcs +# endif +# ifndef PROCINFO_DECL += 0 +# endif +# if !defined SHARED || defined PROCINFO_DECL +; +# else +, +# endif +#endif diff --git a/sysdeps/unix/sysv/linux/aarch64/getcontext.S b/sysdeps/unix/sysv/linux/aarch64/getcontext.S index e5b69c9..b6e64e5 100644 --- a/sysdeps/unix/sysv/linux/aarch64/getcontext.S +++ b/sysdeps/unix/sysv/linux/aarch64/getcontext.S @@ -1,6 +1,6 @@ /* 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. @@ -30,7 +30,6 @@ .text ENTRY(__getcontext) - PTR_ARG (0) /* The saved context will return to the getcontext() call point with a return value of 0 */ str xzr, [x0, oX0 + 0 * SZREG] @@ -83,15 +82,30 @@ ENTRY(__getcontext) mrs x4, fpcr str w4, [x3, oFPCR - oFPSR] - /* Write the termination context extension header. */ add x2, x2, #FPSIMD_CONTEXT_SIZE + /* Save the GCSPR. */ + mov x16, 1 /* _CHKFEAT_GCS */ + CHKFEAT_X16 + tbnz x16, 0, L(gcs_done) + mov w3, #(GCS_MAGIC & 0xffff) + movk w3, #(GCS_MAGIC >> 16), lsl #16 + str w3, [x2, #oHEAD + oMAGIC] + mov w3, #GCS_CONTEXT_SIZE + str w3, [x2, #oHEAD + oSIZE] + MRS_GCSPR (x4) + add x4, x4, 8 /* GCS state right after getcontext returns. */ + str x4, [x2, #oGCSPR] + add x2, x2, #GCS_CONTEXT_SIZE +L(gcs_done): + + /* Write the termination context extension header. */ str wzr, [x2, #oHEAD + oMAGIC] str wzr, [x2, #oHEAD + oSIZE] /* Grab the signal mask */ /* rt_sigprocmask (SIG_BLOCK, NULL, &ucp->uc_sigmask, _NSIG8) */ - add PTR_REG (2), PTR_REG (0), #UCONTEXT_SIGMASK + add x2, x0, UCONTEXT_SIGMASK mov x0, SIG_BLOCK mov x1, 0 mov x3, _NSIG8 diff --git a/sysdeps/unix/sysv/linux/aarch64/gettimeofday.c b/sysdeps/unix/sysv/linux/aarch64/gettimeofday.c index 1341e6d..379781a 100644 --- a/sysdeps/unix/sysv/linux/aarch64/gettimeofday.c +++ b/sysdeps/unix/sysv/linux/aarch64/gettimeofday.c @@ -1,4 +1,4 @@ -/* 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. diff --git a/sysdeps/unix/sysv/linux/aarch64/ioctl.S b/sysdeps/unix/sysv/linux/aarch64/ioctl.S index 74f381f..6543ad4 100644 --- a/sysdeps/unix/sysv/linux/aarch64/ioctl.S +++ b/sysdeps/unix/sysv/linux/aarch64/ioctl.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2024 Free Software Foundation, Inc. +/* Copyright (C) 2012-2025 Free Software Foundation, Inc. This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/aarch64/kernel-features.h b/sysdeps/unix/sysv/linux/aarch64/kernel-features.h index d99056d..8cdd6ed 100644 --- a/sysdeps/unix/sysv/linux/aarch64/kernel-features.h +++ b/sysdeps/unix/sysv/linux/aarch64/kernel-features.h @@ -1,6 +1,6 @@ /* Set flags signalling availability of kernel features based on given kernel version number. AArch64 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/aarch64/kernel_rt_sigframe.h b/sysdeps/unix/sysv/linux/aarch64/kernel_rt_sigframe.h index c6a1e9c..6102262 100644 --- a/sysdeps/unix/sysv/linux/aarch64/kernel_rt_sigframe.h +++ b/sysdeps/unix/sysv/linux/aarch64/kernel_rt_sigframe.h @@ -1,4 +1,4 @@ -/* 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. diff --git a/sysdeps/unix/sysv/linux/aarch64/libc-start.h b/sysdeps/unix/sysv/linux/aarch64/libc-start.h new file mode 100644 index 0000000..75ae0a8 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/libc-start.h @@ -0,0 +1,62 @@ +/* AArch64 definitions for libc main startup. + 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 + 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/>. */ + +#ifndef _LIBC_START_H +#define _LIBC_START_H + +#ifndef SHARED + +# include <dl-prop.h> + +# ifndef PR_SET_SHADOW_STACK_STATUS +# define PR_SET_SHADOW_STACK_STATUS 75 +# define PR_SHADOW_STACK_ENABLE (1UL << 0) +# endif + +/* Must be on a top-level stack frame that does not return. */ +static inline void __attribute__((always_inline)) +aarch64_libc_setup_tls (void) +{ + __libc_setup_tls (); + + struct link_map *main_map = _dl_get_dl_main_map (); + const ElfW(Phdr) *phdr = GL(dl_phdr); + const ElfW(Phdr) *ph; + for (ph = phdr; ph < phdr + GL(dl_phnum); ph++) + if (ph->p_type == PT_GNU_PROPERTY) + { + _dl_process_pt_gnu_property (main_map, -1, ph); + _rtld_main_check (main_map, _dl_argv[0]); + break; + } + + if (GL(dl_aarch64_gcs) != 0) + { + int ret = INLINE_SYSCALL_CALL (prctl, PR_SET_SHADOW_STACK_STATUS, + PR_SHADOW_STACK_ENABLE, 0, 0, 0); + if (ret) + _dl_fatal_printf ("failed to enable GCS: %d\n", -ret); + } +} + +# define ARCH_SETUP_IREL() apply_irel () +# define ARCH_SETUP_TLS() aarch64_libc_setup_tls () +# define ARCH_APPLY_IREL() +#endif /* ! SHARED */ + +#endif /* _LIBC_START_H */ diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist index 68eeca1..a22e651 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist @@ -2748,3 +2748,22 @@ GLIBC_2.39 stdc_trailing_zeros_ui F 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.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/aarch64/libc_sigaction.c b/sysdeps/unix/sysv/linux/aarch64/libc_sigaction.c index dc4cce8..29eb01e 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libc_sigaction.c +++ b/sysdeps/unix/sysv/linux/aarch64/libc_sigaction.c @@ -1,4 +1,4 @@ -/* 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/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist index 024cb8d..bb8114b 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist @@ -1189,3 +1189,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/aarch64/libmvec.abilist b/sysdeps/unix/sysv/linux/aarch64/libmvec.abilist index b685106..f7f72b6 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libmvec.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/libmvec.abilist @@ -128,3 +128,43 @@ GLIBC_2.40 _ZGVsMxvv_hypot F GLIBC_2.40 _ZGVsMxvv_hypotf F GLIBC_2.40 _ZGVsMxvv_pow F GLIBC_2.40 _ZGVsMxvv_powf F +GLIBC_2.41 _ZGVnN2v_cospi F +GLIBC_2.41 _ZGVnN2v_cospif F +GLIBC_2.41 _ZGVnN2v_logp1 F +GLIBC_2.41 _ZGVnN2v_logp1f F +GLIBC_2.41 _ZGVnN2v_sinpi F +GLIBC_2.41 _ZGVnN2v_sinpif F +GLIBC_2.41 _ZGVnN2v_tanpi F +GLIBC_2.41 _ZGVnN2v_tanpif F +GLIBC_2.41 _ZGVnN4v_cospif F +GLIBC_2.41 _ZGVnN4v_logp1f F +GLIBC_2.41 _ZGVnN4v_sinpif F +GLIBC_2.41 _ZGVnN4v_tanpif F +GLIBC_2.41 _ZGVsMxv_cospi F +GLIBC_2.41 _ZGVsMxv_cospif F +GLIBC_2.41 _ZGVsMxv_logp1 F +GLIBC_2.41 _ZGVsMxv_logp1f F +GLIBC_2.41 _ZGVsMxv_sinpi F +GLIBC_2.41 _ZGVsMxv_sinpif F +GLIBC_2.41 _ZGVsMxv_tanpi F +GLIBC_2.41 _ZGVsMxv_tanpif F +GLIBC_2.42 _ZGVnN2v_acospi F +GLIBC_2.42 _ZGVnN2v_acospif F +GLIBC_2.42 _ZGVnN2v_asinpi F +GLIBC_2.42 _ZGVnN2v_asinpif F +GLIBC_2.42 _ZGVnN2v_atanpi F +GLIBC_2.42 _ZGVnN2v_atanpif F +GLIBC_2.42 _ZGVnN2vv_atan2pi F +GLIBC_2.42 _ZGVnN2vv_atan2pif F +GLIBC_2.42 _ZGVnN4v_acospif F +GLIBC_2.42 _ZGVnN4v_asinpif F +GLIBC_2.42 _ZGVnN4v_atanpif F +GLIBC_2.42 _ZGVnN4vv_atan2pif F +GLIBC_2.42 _ZGVsMxv_acospi F +GLIBC_2.42 _ZGVsMxv_acospif F +GLIBC_2.42 _ZGVsMxv_asinpi F +GLIBC_2.42 _ZGVsMxv_asinpif F +GLIBC_2.42 _ZGVsMxv_atanpi F +GLIBC_2.42 _ZGVsMxv_atanpif F +GLIBC_2.42 _ZGVsMxvv_atan2pi F +GLIBC_2.42 _ZGVsMxvv_atan2pif F diff --git a/sysdeps/unix/sysv/linux/aarch64/makecontext.c b/sysdeps/unix/sysv/linux/aarch64/makecontext.c index 5aec182..4485723 100644 --- a/sysdeps/unix/sysv/linux/aarch64/makecontext.c +++ b/sysdeps/unix/sysv/linux/aarch64/makecontext.c @@ -1,5 +1,5 @@ /* Create new context. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-2025 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -21,7 +21,27 @@ #include <stdarg.h> #include <stdint.h> #include <ucontext.h> +#include <sys/mman.h> +#include "aarch64-gcs.h" + +#define GCS_MAGIC 0x47435300 + +static struct _aarch64_ctx *extension (void *p) +{ + return p; +} + +/* Allocate GCS stack for new context. */ +static void * +alloc_makecontext_gcs (size_t stack_size) +{ + void *gcsp = __alloc_gcs (stack_size, NULL); + if (gcsp == NULL) + /* ENOSYS, bad size or OOM. */ + abort (); + return gcsp; +} /* makecontext sets up a stack and the registers for the user context. The stack looks like this: @@ -56,10 +76,23 @@ __makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...) sp = (uint64_t *) (((uintptr_t) sp) & -16L); ucp->uc_mcontext.regs[19] = (uintptr_t) ucp->uc_link; + ucp->uc_mcontext.regs[20] = (uintptr_t) func; ucp->uc_mcontext.sp = (uintptr_t) sp; - ucp->uc_mcontext.pc = (uintptr_t) func; + ucp->uc_mcontext.pc = (uintptr_t) __startcontext; ucp->uc_mcontext.regs[29] = (uintptr_t) 0; - ucp->uc_mcontext.regs[30] = (uintptr_t) &__startcontext; + ucp->uc_mcontext.regs[30] = (uintptr_t) 0; + + void *p = ucp->uc_mcontext.__reserved; + if (extension (p)->magic == FPSIMD_MAGIC) + p = (char *)p + extension (p)->size; + if (extension (p)->magic == GCS_MAGIC) + { + /* Using the kernel struct gcs_context layout. */ + struct { uint64_t x, gcspr, y, z; } *q = p; + /* TODO: this allocation remains mapped even after thread + that uses it exits. */ + q->gcspr = (uint64_t) alloc_makecontext_gcs (ucp->uc_stack.ss_size); + } va_start (ap, argc); for (i = 0; i < argc; ++i) diff --git a/sysdeps/unix/sysv/linux/aarch64/pkey_get.c b/sysdeps/unix/sysv/linux/aarch64/pkey_get.c new file mode 100644 index 0000000..2dd9d81 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/pkey_get.c @@ -0,0 +1,73 @@ +/* Reading the per-thread memory protection key, AArch64 version. + 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 + 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 <arch-pkey.h> +#include <errno.h> +#include <sys/mman.h> + +int +pkey_get (int key) +{ + if (key < 0 || key > 15) + { + __set_errno (EINVAL); + return -1; + } + unsigned long int por_el0 = pkey_read (); + unsigned long int perm = (por_el0 >> (S1POE_BITS_PER_POI * key)) + & S1POE_PERM_MASK; + + /* The following mapping between POR permission bits (4 bits) + and PKEY flags is supported: + + -WXR POR to PKEY_ mapping + 0000 => DISABLE_ACCESS | DISABLE_READ | DISABLE_WRITE | DISABLE_EXECUTE + 0001 => DISABLE_WRITE | DISABLE_EXECUTE (read-only) + 0010 => DISABLE_ACCESS | DISABLE_READ | DISABLE_WRITE (execute-only) + 0011 => DISABLE_WRITE (read-execute) + 0100 => DISABLE_READ | DISABLE_EXECUTE (write-only) + 0101 => DISABLE_EXECUTE (read-write) + 0110 => DISABLE_READ (execute-write) + 0111 => UNRESTRICTED (no restrictions, read-write-execute) + else => undefined behavior + + Note that pkey_set and pkey_alloc would only set these specific + values. The PKEY_DISABLE_ACCESS flag is redundant as it implies + PKEY_DISABLE_READ | PKEY_DISABLE_WRITE but is kept for backward + compatibility. */ + + if (perm == S1POE_PERM_NO_ACCESS) + return PKEY_DISABLE_ACCESS | PKEY_DISABLE_WRITE | PKEY_DISABLE_EXECUTE + | PKEY_DISABLE_READ; + if (perm == S1POE_PERM_R) + return PKEY_DISABLE_WRITE | PKEY_DISABLE_EXECUTE; + if (perm == S1POE_PERM_X) + return PKEY_DISABLE_ACCESS | PKEY_DISABLE_READ | PKEY_DISABLE_WRITE; + if (perm == S1POE_PERM_RX) + return PKEY_DISABLE_WRITE; + if (perm == S1POE_PERM_W) + return PKEY_DISABLE_READ | PKEY_DISABLE_EXECUTE; + if (perm == S1POE_PERM_RW) + return PKEY_DISABLE_EXECUTE; + if (perm == S1POE_PERM_WX) + return PKEY_DISABLE_READ; + if (perm == S1POE_PERM_RWX) + return PKEY_UNRESTRICTED; + + return PKEY_DISABLE_ACCESS; +} diff --git a/sysdeps/unix/sysv/linux/aarch64/pkey_set.c b/sysdeps/unix/sysv/linux/aarch64/pkey_set.c new file mode 100644 index 0000000..a521cc0 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/pkey_set.c @@ -0,0 +1,113 @@ +/* Changing the per-thread memory protection key, AArch64 version. + 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 + 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 <arch-pkey.h> +#include <errno.h> +#include <sys/mman.h> + +#define MAX_PKEY_RIGHTS (PKEY_DISABLE_ACCESS | \ + PKEY_DISABLE_WRITE | PKEY_DISABLE_EXECUTE | PKEY_DISABLE_READ) + +int +pkey_set (int key, unsigned int restrictions) +{ + if (key < 0 || key > 15 || restrictions > MAX_PKEY_RIGHTS) + { + __set_errno (EINVAL); + return -1; + } + unsigned long mask = S1POE_PERM_MASK << (S1POE_BITS_PER_POI * key); + unsigned long por_el0 = pkey_read (); + unsigned long perm; + + /* POR ot PKEY mapping: -WXR + PKEY_UNRESTRICTED => 0111 (read-write-execute) + PKEY_DISABLE_ACCESS => removes R and W access + PKEY_DISABLE_READ => removes R access + PKEY_DISABLE_WRITE => removes W access + PKEY_DISABLE_EXECUTE => removes X access + + Either of PKEY_DISABLE_ACCESS or PKEY_DISABLE_READ removes R access. + Either of PKEY_DISABLE_ACCESS or PKEY_DISABLE_WRITE removes W access. + Using PKEY_DISABLE_ACCESS along with only one of PKEY_DISABLE_READ or + PKEY_DISABLE_WRITE is considered to be in error. + + Furthermore, for avoidance of doubt: + + PKEY flags Permissions + rxwa -WXR + 1111 => 0000 S1POE_PERM_NO_ACCESS + 1110 => 0000 S1POE_PERM_NO_ACCESS + 1101 => EINVAL + 1100 => 0100 S1POE_PERM_W + 1011 => 0010 S1POE_PERM_X + 1010 => 0010 S1POE_PERM_X + 1001 => EINVAL + 1000 => 0110 S1POE_PERM_WX + 0111 => EINVAL + 0110 => 0001 S1POE_PERM_R + 0101 => 0000 S1POE_PERM_NO_ACCESS + 0100 => 0101 S1POE_PERM_RW + 0011 => EINVAL + 0010 => 0011 S1POE_PERM_RX + 0001 => 0010 S1POE_PERM_X + 0000 => 0111 S1POE_PERM_RWX */ + switch (restrictions) + { + case PKEY_DISABLE_ACCESS | PKEY_DISABLE_READ | PKEY_DISABLE_WRITE + | PKEY_DISABLE_EXECUTE: + case PKEY_DISABLE_ACCESS | PKEY_DISABLE_EXECUTE: + case PKEY_DISABLE_ACCESS | PKEY_DISABLE_READ | PKEY_DISABLE_EXECUTE: + case PKEY_DISABLE_ACCESS | PKEY_DISABLE_WRITE | PKEY_DISABLE_EXECUTE: + case PKEY_DISABLE_READ | PKEY_DISABLE_WRITE | PKEY_DISABLE_EXECUTE: + perm = S1POE_PERM_NO_ACCESS; + break; + case PKEY_DISABLE_READ | PKEY_DISABLE_EXECUTE: + perm = S1POE_PERM_W; + break; + case PKEY_DISABLE_ACCESS | PKEY_DISABLE_READ: + case PKEY_DISABLE_ACCESS | PKEY_DISABLE_WRITE: + case PKEY_DISABLE_ACCESS | PKEY_DISABLE_READ | PKEY_DISABLE_WRITE: + case PKEY_DISABLE_READ | PKEY_DISABLE_WRITE: + case PKEY_DISABLE_ACCESS: + perm = S1POE_PERM_X; + break; + case PKEY_DISABLE_READ: + perm = S1POE_PERM_WX; + break; + case PKEY_DISABLE_WRITE | PKEY_DISABLE_EXECUTE: + perm = S1POE_PERM_R; + break; + case PKEY_DISABLE_EXECUTE: + perm = S1POE_PERM_RW; + break; + case PKEY_DISABLE_WRITE: + perm = S1POE_PERM_RX; + break; + case PKEY_UNRESTRICTED: + perm = S1POE_PERM_RWX; + break; + default: + __set_errno (EINVAL); + return -1; + } + + por_el0 = (por_el0 & ~mask) | (perm << (S1POE_BITS_PER_POI * key)); + pkey_write (por_el0); + return 0; +} diff --git a/sysdeps/unix/sysv/linux/aarch64/pointer_guard.h b/sysdeps/unix/sysv/linux/aarch64/pointer_guard.h index 23c825d..fd4501b 100644 --- a/sysdeps/unix/sysv/linux/aarch64/pointer_guard.h +++ b/sysdeps/unix/sysv/linux/aarch64/pointer_guard.h @@ -1,5 +1,5 @@ /* Pointer guard implementation. AArch64 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 @@ -24,18 +24,11 @@ || (!defined SHARED && (IS_IN (libc) \ || IS_IN (libpthread)))) # ifdef __ASSEMBLER__ -/* Note, dst, src, guard, and tmp are all register numbers rather than - register names so they will work with both ILP32 and LP64. */ -# define PTR_MANGLE(dst, src, guard, tmp) \ - LDST_PCREL (ldr, guard, tmp, C_SYMBOL_NAME(__pointer_chk_guard_local)); \ - PTR_MANGLE2 (dst, src, guard) -/* Use PTR_MANGLE2 for efficiency if guard is already loaded. */ -# define PTR_MANGLE2(dst, src, guard)\ - eor x##dst, x##src, x##guard -# define PTR_DEMANGLE(dst, src, guard, tmp)\ - PTR_MANGLE (dst, src, guard, tmp) -# define PTR_DEMANGLE2(dst, src, guard)\ - PTR_MANGLE2 (dst, src, guard) +# define PTR_MANGLE(dst, src, tmp) \ + adrp tmp, C_SYMBOL_NAME(__pointer_chk_guard_local); \ + ldr tmp, [tmp, :lo12:C_SYMBOL_NAME(__pointer_chk_guard_local)]; \ + eor dst, src, tmp +# define PTR_DEMANGLE(dst, src, tmp) PTR_MANGLE (dst, src, tmp) # else extern uintptr_t __pointer_chk_guard_local attribute_relro attribute_hidden; # define PTR_MANGLE(var) \ @@ -44,18 +37,12 @@ extern uintptr_t __pointer_chk_guard_local attribute_relro attribute_hidden; # endif #else # ifdef __ASSEMBLER__ -/* Note, dst, src, guard, and tmp are all register numbers rather than - register names so they will work with both ILP32 and LP64. */ -# define PTR_MANGLE(dst, src, guard, tmp) \ - LDST_GLOBAL (ldr, guard, tmp, C_SYMBOL_NAME(__pointer_chk_guard)); \ - PTR_MANGLE2 (dst, src, guard) -/* Use PTR_MANGLE2 for efficiency if guard is already loaded. */ -# define PTR_MANGLE2(dst, src, guard)\ - eor x##dst, x##src, x##guard -# define PTR_DEMANGLE(dst, src, guard, tmp)\ - PTR_MANGLE (dst, src, guard, tmp) -# define PTR_DEMANGLE2(dst, src, guard)\ - PTR_MANGLE2 (dst, src, guard) +# define PTR_MANGLE(dst, src, tmp) \ + adrp tmp, :got:C_SYMBOL_NAME(__pointer_chk_guard); \ + ldr tmp, [tmp, :got_lo12:C_SYMBOL_NAME(__pointer_chk_guard)]; \ + ldr tmp, [tmp]; \ + eor dst, src, tmp; +# define PTR_DEMANGLE(dst, src, tmp) PTR_MANGLE (dst, src, tmp) # else # include <stdint.h> extern uintptr_t __pointer_chk_guard attribute_relro; diff --git a/sysdeps/unix/sysv/linux/aarch64/readelflib.c b/sysdeps/unix/sysv/linux/aarch64/readelflib.c index 0076161..9ada075 100644 --- a/sysdeps/unix/sysv/linux/aarch64/readelflib.c +++ b/sysdeps/unix/sysv/linux/aarch64/readelflib.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2024 Free Software Foundation, Inc. +/* Copyright (C) 2012-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/aarch64/setcontext.S b/sysdeps/unix/sysv/linux/aarch64/setcontext.S index ba65943..d9716f0 100644 --- a/sysdeps/unix/sysv/linux/aarch64/setcontext.S +++ b/sysdeps/unix/sysv/linux/aarch64/setcontext.S @@ -1,6 +1,6 @@ /* 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. @@ -34,7 +34,6 @@ .text ENTRY (__setcontext) - PTR_ARG (0) /* Save a copy of UCP. */ mov x9, x0 @@ -49,25 +48,16 @@ ENTRY (__setcontext) cbz x0, 1f b C_SYMBOL_NAME (__syscall_error) 1: - /* Disable ZA of SME. */ -#if HAVE_AARCH64_PAC_RET - PACIASP - cfi_window_save -#endif - stp x29, x30, [sp, -16]! - cfi_adjust_cfa_offset (16) - cfi_rel_offset (x29, 0) - cfi_rel_offset (x30, 8) - mov x29, sp + /* Clear ZA state of SME. */ + /* The calling convention of __libc_arm_za_disable allows to do + this thus allowing to avoid saving to and reading from stack. + As a result we also don't need to sign the return address and + check it after returning because it is not stored to stack. */ + mov x13, x30 + cfi_register (x30, x13) bl __libc_arm_za_disable - ldp x29, x30, [sp], 16 - cfi_adjust_cfa_offset (-16) - cfi_restore (x29) - cfi_restore (x30) -#if HAVE_AARCH64_PAC_RET - AUTIASP - cfi_window_save -#endif + mov x30, x13 + cfi_register (x13, x30) /* Restore the general purpose registers. */ mov x0, x9 cfi_def_cfa (x0, 0) @@ -130,6 +120,44 @@ ENTRY (__setcontext) ldr w4, [x3, oFPCR - oFPSR] msr fpcr, x4 + /* Restore the GCS. */ + mov x16, 1 /* _CHKFEAT_GCS */ + CHKFEAT_X16 + tbnz x16, 0, L(gcs_done) + /* Get target GCS from GCS context. */ + ldr w1, [x2, #oHEAD + oSIZE] + add x2, x2, x1 + mov w3, #(GCS_MAGIC & 0xffff) + movk w3, #(GCS_MAGIC >> 16), lsl #16 + ldr w1, [x2, #oHEAD + oMAGIC] + cmp w1, w3 + b.ne L(gcs_done) + ldr x3, [x2, #oGCSPR] + MRS_GCSPR (x2) + mov x4, x3 + /* x2: GCSPR now. x3, x4: target GCSPR. x5, x6: tmp regs. */ +L(gcs_scan): + cmp x2, x4 + b.eq L(gcs_pop) + sub x4, x4, 8 + /* Check for a cap token. */ + ldr x5, [x4] + and x6, x4, 0xfffffffffffff000 + orr x6, x6, 1 + cmp x5, x6 + b.ne L(gcs_scan) +L(gcs_switch): + add x2, x4, 8 + GCSSS1 (x4) + GCSSS2 (xzr) +L(gcs_pop): + cmp x2, x3 + b.eq L(gcs_done) + GCSPOPM (xzr) + add x2, x2, 8 + b L(gcs_pop) +L(gcs_done): + 2: ldr x16, [x0, oPC] /* Restore arg registers. */ @@ -142,7 +170,11 @@ ENTRY (__setcontext) PSEUDO_END (__setcontext) weak_alias (__setcontext, setcontext) +/* makecontext start function: receives uc_link in x19 and func in x20. + Arguments of func, x29, x30 and sp are set up by the caller. */ ENTRY (__startcontext) + cfi_undefined (x30) + blr x20 mov x0, x19 cbnz x0, __setcontext 1: b HIDDEN_JUMPTARGET (exit) diff --git a/sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h b/sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h index 50ffce6..0bd0f36 100644 --- a/sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h @@ -1,5 +1,5 @@ /* AArch64 definitions for signal handling calling conventions. - 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/aarch64/swapcontext.S b/sysdeps/unix/sysv/linux/aarch64/swapcontext.S index f049140..58ddb95 100644 --- a/sysdeps/unix/sysv/linux/aarch64/swapcontext.S +++ b/sysdeps/unix/sysv/linux/aarch64/swapcontext.S @@ -1,6 +1,6 @@ /* Modify saved 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. @@ -27,13 +27,19 @@ .text ENTRY(__swapcontext) - PTR_ARG (0) /* Set the value returned when swapcontext() returns in this context. And set up x1 to become the return address of the caller, so we can return there with a normal RET instead of an indirect jump. */ stp xzr, x30, [x0, oX0 + 0 * SZREG] + + /* With GCS, swapcontext calls are followed by BTI J, otherwise + we have to be compatible with old BTI enabled binaries. */ + mov x16, 1 /* _CHKFEAT_GCS */ + CHKFEAT_X16 + tbz x16, 0, L(skip_x30_redirect) /* Arrange the oucp context to return to 2f. */ adr x30, 2f +L(skip_x30_redirect): stp x18, x19, [x0, oX0 + 18 * SZREG] stp x20, x21, [x0, oX0 + 20 * SZREG] @@ -72,14 +78,27 @@ ENTRY(__swapcontext) mrs x4, fpcr str w4, [x3, #oFPCR - oFPSR] - /* Write the termination context extension header. */ add x2, x2, #FPSIMD_CONTEXT_SIZE + /* Save the GCSPR. */ + tbnz x16, 0, L(gcs_done) + mov w3, #(GCS_MAGIC & 0xffff) + movk w3, #(GCS_MAGIC >> 16), lsl #16 + str w3, [x2, #oHEAD + oMAGIC] + mov w3, #GCS_CONTEXT_SIZE + str w3, [x2, #oHEAD + oSIZE] + MRS_GCSPR (x4) + add x4, x4, 8 /* GCSPR of the caller. */ + str x4, [x2, #oGCSPR] + add x2, x2, #GCS_CONTEXT_SIZE +L(gcs_done): + + /* Write the termination context extension header. */ str wzr, [x2, #oHEAD + oMAGIC] str wzr, [x2, #oHEAD + oSIZE] /* Preserve ucp. */ - mov x21, x1 + mov x9, x1 /* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, &oucp->uc_sigmask, _NSIG8) */ @@ -93,18 +112,14 @@ ENTRY(__swapcontext) svc 0 cbnz x0, 1f - mov x22, x30 - mov x0, x21 - bl JUMPTARGET (__setcontext) - mov x30, x22 - RET - + mov x0, x9 + b JUMPTARGET (__setcontext) 1: b C_SYMBOL_NAME(__syscall_error) 2: /* The oucp context is restored here via an indirect branch, x1 must be restored too which has the real return address. */ - BTI_J + bti j mov x30, x1 RET PSEUDO_END (__swapcontext) diff --git a/sysdeps/unix/sysv/linux/aarch64/sys/elf.h b/sysdeps/unix/sysv/linux/aarch64/sys/elf.h index c2a9618..7ccf9a2 100644 --- a/sysdeps/unix/sysv/linux/aarch64/sys/elf.h +++ b/sysdeps/unix/sysv/linux/aarch64/sys/elf.h @@ -1,4 +1,4 @@ -/* 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. diff --git a/sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h b/sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h index 19b3302..4dc04af 100644 --- a/sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h +++ b/sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h @@ -1,5 +1,5 @@ /* `ptrace' debugger support interface. Linux/AArch64 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. diff --git a/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h b/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h index d361b25..5a4a824 100644 --- a/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-2025 Free Software Foundation, Inc. This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/aarch64/sys/user.h b/sysdeps/unix/sysv/linux/aarch64/sys/user.h index 84db61c..4c37a16 100644 --- a/sysdeps/unix/sysv/linux/aarch64/sys/user.h +++ b/sysdeps/unix/sysv/linux/aarch64/sys/user.h @@ -1,4 +1,4 @@ -/* 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. diff --git a/sysdeps/unix/sysv/linux/aarch64/syscall.S b/sysdeps/unix/sysv/linux/aarch64/syscall.S index e5670cc..07b34e7 100644 --- a/sysdeps/unix/sysv/linux/aarch64/syscall.S +++ b/sysdeps/unix/sysv/linux/aarch64/syscall.S @@ -1,4 +1,4 @@ -/* 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. diff --git a/sysdeps/unix/sysv/linux/aarch64/syscall_cancel.S b/sysdeps/unix/sysv/linux/aarch64/syscall_cancel.S new file mode 100644 index 0000000..2151f0e --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/syscall_cancel.S @@ -0,0 +1,59 @@ +/* Cancellable syscall wrapper. Linux/AArch64 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 [x0] __syscall_cancel_arch (int *cancelhandling [x0], + long int nr [x1], + long int arg1 [x2], + long int arg2 [x3], + long int arg3 [x4], + long int arg4 [x5], + long int arg5 [x6], + long int arg6 [x7]) */ + +ENTRY (__syscall_cancel_arch) + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + /* if (*cancelhandling & CANCELED_BITMASK) + __syscall_do_cancel() */ + ldr w0, [x0] + tbnz w0, TCB_CANCELED_BIT, 1f + + /* Issue a 6 argument syscall, the nr [x1] being the syscall + number. */ + mov x8, x1 + mov x0, x2 + mov x1, x3 + mov x2, x4 + mov x3, x5 + mov x4, x6 + mov x5, x7 + svc 0x0 + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + ret + +1: + b __syscall_do_cancel + +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/aarch64/sysconf.c b/sysdeps/unix/sysv/linux/aarch64/sysconf.c index 6c8216e..eec2453 100644 --- a/sysdeps/unix/sysv/linux/aarch64/sysconf.c +++ b/sysdeps/unix/sysv/linux/aarch64/sysconf.c @@ -1,4 +1,4 @@ -/* 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 @@ -27,7 +27,7 @@ static long int linux_sysconf (int name); long int __sysconf (int name) { - unsigned ctr; + uint64_t ctr; /* Unfortunately, the registers that contain the actual cache info (CCSIDR_EL1, CLIDR_EL1, and CSSELR_EL1) are protected by the Linux diff --git a/sysdeps/unix/sysv/linux/aarch64/sysdep.c b/sysdeps/unix/sysv/linux/aarch64/sysdep.c index c6439f6..540481a 100644 --- a/sysdeps/unix/sysv/linux/aarch64/sysdep.c +++ b/sysdeps/unix/sysv/linux/aarch64/sysdep.c @@ -1,4 +1,4 @@ -/* 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/aarch64/sysdep.h b/sysdeps/unix/sysv/linux/aarch64/sysdep.h index bbbe357..f0e8d64 100644 --- a/sysdeps/unix/sysv/linux/aarch64/sysdep.h +++ b/sysdeps/unix/sysv/linux/aarch64/sysdep.h @@ -1,4 +1,4 @@ -/* 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. @@ -152,18 +152,14 @@ #else /* not __ASSEMBLER__ */ -# ifdef __LP64__ -# define VDSO_NAME "LINUX_2.6.39" -# define VDSO_HASH 123718537 -# else -# define VDSO_NAME "LINUX_4.9" -# define VDSO_HASH 61765625 -# endif +# define VDSO_NAME "LINUX_2.6.39" +# define VDSO_HASH 123718537 /* List of system calls which are supported as vsyscalls. */ # define HAVE_CLOCK_GETRES64_VSYSCALL "__kernel_clock_getres" # define HAVE_CLOCK_GETTIME64_VSYSCALL "__kernel_clock_gettime" # define HAVE_GETTIMEOFDAY_VSYSCALL "__kernel_gettimeofday" +# define HAVE_GETRANDOM_VSYSCALL "__kernel_getrandom" # define HAVE_CLONE3_WRAPPER 1 diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-aarch64-pkey.c b/sysdeps/unix/sysv/linux/aarch64/tst-aarch64-pkey.c new file mode 100644 index 0000000..c884efc --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-aarch64-pkey.c @@ -0,0 +1,190 @@ +/* AArch64 tests for memory protection keys. + 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 + 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 <errno.h> +#include <inttypes.h> +#include <stdbool.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <support/check.h> +#include <support/support.h> +#include <support/test-driver.h> +#include <support/xsignal.h> +#include <support/xunistd.h> +#include <sys/mman.h> +#include <array_length.h> + +static sig_atomic_t sigusr1_handler_ran; +static int pkey; + +/* On AArch64 access is revoked during signal handling for + pkey > 0 because POR is reset to the default value 0x7. */ +static void +sigusr1_handler (int signum) +{ + TEST_COMPARE (signum, SIGUSR1); + TEST_COMPARE (pkey_get (pkey) & PKEY_DISABLE_ACCESS, PKEY_DISABLE_ACCESS); + TEST_COMPARE (pkey_get (pkey) & PKEY_DISABLE_READ, PKEY_DISABLE_READ); + TEST_COMPARE (pkey_get (pkey) & PKEY_DISABLE_WRITE, PKEY_DISABLE_WRITE); + TEST_COMPARE (pkey_get (pkey) & PKEY_DISABLE_EXECUTE, PKEY_DISABLE_EXECUTE); + sigusr1_handler_ran += 1; +} + +static int +do_test (void) +{ + pkey = pkey_alloc (0, PKEY_UNRESTRICTED); + if (pkey < 0) + { + if (errno == ENOSYS || errno == EINVAL) + FAIL_UNSUPPORTED + ("kernel or CPU does not support memory protection keys"); + if (errno == ENOSPC) + FAIL_UNSUPPORTED + ("no keys available or kernel does not support memory" + " protection keys"); + FAIL_EXIT1 ("pkey_alloc: %m"); + } + + long int pagesize = xsysconf (_SC_PAGESIZE); + + int *page = xmmap (NULL, pagesize, PROT_NONE, MAP_ANONYMOUS | MAP_PRIVATE, + -1); + + /* On AArch64 pkey == 0 is reserved and should never be allocated. */ + TEST_VERIFY (pkey > 0); + TEST_COMPARE (pkey_get(pkey), PKEY_UNRESTRICTED); + + /* Check that access is revoked during signal handling + with initial rights being set to no restrictions. */ + TEST_COMPARE (pkey_mprotect ((void *) page, pagesize, PROT_READ + | PROT_WRITE, pkey), 0); + xsignal (SIGUSR1, &sigusr1_handler); + xraise (SIGUSR1); + xsignal (SIGUSR1, SIG_DFL); + TEST_COMPARE (sigusr1_handler_ran, 1); + + /* Check that access is revoked during signal handling + with initial rights being set to PKEY_DISABLE_WRITE. */ + TEST_COMPARE (pkey_set (pkey, PKEY_DISABLE_WRITE), 0); + xsignal (SIGUSR1, &sigusr1_handler); + xraise (SIGUSR1); + xsignal (SIGUSR1, SIG_DFL); + TEST_COMPARE (sigusr1_handler_ran, 2); + + /* Check that all combinations of PKEY flags used in pkey_set + result in consistent values obtained via pkey_get. + Note that whenever flags PKEY_DISABLE_READ and PKEY_DISABLE_WRITE + are set, the PKEY_DISABLE_ACCESS is also set. */ + struct + { + unsigned int set; + unsigned int expected; + } rrs[] = + { + { + PKEY_UNRESTRICTED, + PKEY_UNRESTRICTED + }, + { + PKEY_DISABLE_ACCESS, + PKEY_DISABLE_ACCESS | PKEY_DISABLE_READ | PKEY_DISABLE_WRITE + }, + { + PKEY_DISABLE_WRITE, + PKEY_DISABLE_WRITE + }, + { + PKEY_DISABLE_ACCESS | PKEY_DISABLE_WRITE, + PKEY_DISABLE_ACCESS | PKEY_DISABLE_READ | PKEY_DISABLE_WRITE + }, + { + PKEY_DISABLE_EXECUTE, + PKEY_DISABLE_EXECUTE + }, + { + PKEY_DISABLE_ACCESS | PKEY_DISABLE_EXECUTE, + PKEY_DISABLE_ACCESS | PKEY_DISABLE_READ | PKEY_DISABLE_WRITE + | PKEY_DISABLE_EXECUTE + }, + { + PKEY_DISABLE_WRITE | PKEY_DISABLE_EXECUTE, + PKEY_DISABLE_WRITE | PKEY_DISABLE_EXECUTE + }, + { + PKEY_DISABLE_ACCESS | PKEY_DISABLE_WRITE | PKEY_DISABLE_EXECUTE, + PKEY_DISABLE_ACCESS | PKEY_DISABLE_READ | PKEY_DISABLE_WRITE + | PKEY_DISABLE_EXECUTE + }, + { + PKEY_DISABLE_READ, + PKEY_DISABLE_READ + }, + { + PKEY_DISABLE_ACCESS | PKEY_DISABLE_READ, + PKEY_DISABLE_ACCESS | PKEY_DISABLE_READ | PKEY_DISABLE_WRITE + }, + { + PKEY_DISABLE_WRITE | PKEY_DISABLE_READ, + PKEY_DISABLE_ACCESS | PKEY_DISABLE_READ | PKEY_DISABLE_WRITE + }, + { + PKEY_DISABLE_ACCESS | PKEY_DISABLE_WRITE | PKEY_DISABLE_READ, + PKEY_DISABLE_ACCESS | PKEY_DISABLE_WRITE | PKEY_DISABLE_READ + }, + { + PKEY_DISABLE_EXECUTE | PKEY_DISABLE_READ, + PKEY_DISABLE_EXECUTE | PKEY_DISABLE_READ + }, + { + PKEY_DISABLE_ACCESS | PKEY_DISABLE_EXECUTE | PKEY_DISABLE_READ, + PKEY_DISABLE_ACCESS | PKEY_DISABLE_READ | PKEY_DISABLE_WRITE + | PKEY_DISABLE_EXECUTE + }, + { + PKEY_DISABLE_WRITE | PKEY_DISABLE_EXECUTE | PKEY_DISABLE_READ, + PKEY_DISABLE_ACCESS | PKEY_DISABLE_READ | PKEY_DISABLE_WRITE + | PKEY_DISABLE_EXECUTE + }, + { + PKEY_DISABLE_ACCESS | PKEY_DISABLE_WRITE | PKEY_DISABLE_EXECUTE + | PKEY_DISABLE_READ, + PKEY_DISABLE_ACCESS | PKEY_DISABLE_WRITE | PKEY_DISABLE_EXECUTE + | PKEY_DISABLE_READ + }, + }; + + for (int k = 0; k < (array_length (rrs) / 2); k++) { + TEST_COMPARE (k, rrs[k].set); + TEST_COMPARE (pkey_set (pkey, rrs[k].set), 0); + TEST_COMPARE (pkey_get (pkey), rrs[k].expected); + } + + /* Check that restrictions above maximum allowed value are rejected. */ + TEST_COMPARE (pkey_set (pkey, 16), -1); + TEST_COMPARE (errno, EINVAL); + + TEST_COMPARE (pkey_free (pkey), 0); + + xmunmap ((void *) page, pagesize); + + return 0; +} + +#include <support/test-driver.c> diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-abort.sh b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-abort.sh new file mode 100644 index 0000000..9e2be2d --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-abort.sh @@ -0,0 +1,39 @@ +#!/bin/sh +# Test wrapper for AArch64 tests for GCS that are expected to abort. +# Copyright (C) 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 +# <https://www.gnu.org/licenses/>. + +objpfx=$1; shift +tstname=$1; shift +tstrun=$1; shift + +logfile=$objpfx/$tstname.out + +rm -vf $logfile +touch $logfile + +${tstrun} 2>> $logfile >> $logfile; status=$? + +if test $status -eq 127 \ + && grep -q -w "not GCS compatible" "$logfile" ; then + exit 0 +elif test $status -eq 77; then + exit 77 +else + echo "unexpected test output or exit status $status" + exit 1 +fi diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-disabled-static.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-disabled-static.c new file mode 100644 index 0000000..c71d68c --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-disabled-static.c @@ -0,0 +1 @@ +#include "tst-gcs-disabled.c" diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-disabled.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-disabled.c new file mode 100644 index 0000000..bd68878 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-disabled.c @@ -0,0 +1,2 @@ +#define TEST_GCS_EXPECT_ENABLED 0 +#include "tst-gcs-skeleton.c" diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-disabled.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-disabled.c new file mode 100644 index 0000000..3439528 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-disabled.c @@ -0,0 +1,3 @@ +#define TEST_GCS_EXPECT_ENABLED 0 +#define TEST_GCS_EXPECT_DLOPEN 1 +#include "tst-gcs-dlopen.c" diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-enforced.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-enforced.c new file mode 100644 index 0000000..d8489ec --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-enforced.c @@ -0,0 +1,3 @@ +#define TEST_GCS_EXPECT_ENABLED 1 +#define TEST_GCS_EXPECT_DLOPEN 0 +#include "tst-gcs-dlopen.c" diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-optional-off.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-optional-off.c new file mode 100644 index 0000000..3439528 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-optional-off.c @@ -0,0 +1,3 @@ +#define TEST_GCS_EXPECT_ENABLED 0 +#define TEST_GCS_EXPECT_DLOPEN 1 +#include "tst-gcs-dlopen.c" diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-optional-on.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-optional-on.c new file mode 100644 index 0000000..d8489ec --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-optional-on.c @@ -0,0 +1,3 @@ +#define TEST_GCS_EXPECT_ENABLED 1 +#define TEST_GCS_EXPECT_DLOPEN 0 +#include "tst-gcs-dlopen.c" diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-override.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-override.c new file mode 100644 index 0000000..152ffcf --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-override.c @@ -0,0 +1,3 @@ +#define TEST_GCS_EXPECT_ENABLED 1 +#define TEST_GCS_EXPECT_DLOPEN 1 +#include "tst-gcs-dlopen.c" diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen.c new file mode 100644 index 0000000..6e0801c --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen.c @@ -0,0 +1,62 @@ +/* AArch64 tests for GCS for dlopen use case. + Copyright (C) 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 + <https://www.gnu.org/licenses/>. */ + +#include "tst-gcs-helper.h" + +#include <dlfcn.h> +#include <string.h> + +static int +do_test (void) +{ + /* Check if GCS could possible by enabled. */ + if (!(getauxval (AT_HWCAP) & HWCAP_GCS)) + { + puts ("kernel or CPU does not support GCS"); + return EXIT_UNSUPPORTED; + } + /* The tst-gcs-mod2.so test library does not have GCS marking. */ + void *h = dlopen ("tst-gcs-mod2.so", RTLD_NOW); + const char *err = dlerror (); + +#if TEST_GCS_EXPECT_DLOPEN + TEST_VERIFY (h != NULL); +#else + TEST_VERIFY (h == NULL); + /* Only accept expected GCS-related errors. */ + TEST_VERIFY (strstr (err, "not GCS compatible") != NULL); +#endif + +#if TEST_GCS_EXPECT_ENABLED + TEST_VERIFY (__check_gcs_status ()); +#else + TEST_VERIFY (!__check_gcs_status ()); +#endif + + if (h == NULL) + printf ("dlopen error: %s\n", err); + else + { + puts ("library loaded normally"); + dlclose (h); + } + + return 0; +} + +#include <support/test-driver.c> diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-enforced-abort.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-enforced-abort.c new file mode 100644 index 0000000..608318f --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-enforced-abort.c @@ -0,0 +1,2 @@ +#define TEST_GCS_EXPECT_ENABLED 1 +#include "tst-gcs-skeleton.c" diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-enforced-static-abort.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-enforced-static-abort.c new file mode 100644 index 0000000..c20a999 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-enforced-static-abort.c @@ -0,0 +1 @@ +#include "tst-gcs-enforced-abort.c" diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-enforced-static.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-enforced-static.c new file mode 100644 index 0000000..bb39dad --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-enforced-static.c @@ -0,0 +1 @@ +#include "tst-gcs-enforced.c" diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-enforced.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-enforced.c new file mode 100644 index 0000000..608318f --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-enforced.c @@ -0,0 +1,2 @@ +#define TEST_GCS_EXPECT_ENABLED 1 +#include "tst-gcs-skeleton.c" diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-helper.h b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-helper.h new file mode 100644 index 0000000..d8a586d --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-helper.h @@ -0,0 +1,39 @@ +/* AArch64 tests for GCS. + Copyright (C) 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 + <https://www.gnu.org/licenses/>. */ + +#ifndef TST_GCS_HELPER_H +#define TST_GCS_HELPER_H + +#include <support/check.h> +#include <support/support.h> +#include <support/test-driver.h> + +#include <stdio.h> +#include <sys/auxv.h> + +static bool __check_gcs_status (void) +{ + register unsigned long x16 asm ("x16"); + asm volatile ( + "mov x16, #1 /* _CHKFEAT_GCS */\n" + "hint 40 /* CHKFEAT_X16 */\n" + : "=r" (x16)); + return x16 ^ 1; +} + +#endif // POINTER_GUARD_H diff --git a/sysdeps/unix/sysv/linux/nios2/bits/timesize.h b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-mod1.c index 6f11fde..931ff81 100644 --- a/sysdeps/unix/sysv/linux/nios2/bits/timesize.h +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-mod1.c @@ -1,5 +1,5 @@ -/* Bit size of the time_t type at glibc build time, Linux/NIOS2. - Copyright (C) 2021-2024 Free Software Foundation, Inc. +/* DSO for testing GCS. + Copyright (C) 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 @@ -16,5 +16,12 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -/* Size in bits of the 'time_t' type of the default ABI. */ -#define __TIMESIZE 32 +#include <stdio.h> + +int fun2 (void); // tst-gcs-mod2.c + +int fun1 (void) +{ + puts ("called function fun1"); + return fun2 (); +} diff --git a/sysdeps/unix/sysv/linux/nios2/sigcontextinfo.h b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-mod2.c index b759d37..f9370eb 100644 --- a/sysdeps/unix/sysv/linux/nios2/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-mod2.c @@ -1,5 +1,5 @@ -/* Nios II definitions for signal handling calling conventions. - Copyright (C) 2015-2024 Free Software Foundation, Inc. +/* DSO for testing GCS. + Copyright (C) 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 @@ -16,13 +16,10 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -#ifndef _SIGCONTEXTINFO_H -#define _SIGCONTEXTINFO_H +#include <stdio.h> -static inline uintptr_t -sigcontext_get_pc (const ucontext_t *ctx) +int fun2 (void) { - return ctx->uc_mcontext.regs[27]; + puts ("called function fun2"); + return 0; } - -#endif diff --git a/sysdeps/unix/sysv/linux/nios2/kernel_stat.h b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-mod3.c index d92b5fe..38bb357 100644 --- a/sysdeps/unix/sysv/linux/nios2/kernel_stat.h +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-mod3.c @@ -1,5 +1,5 @@ -/* Internal definitions for stat functions. Linux/nios2. - Copyright (C) 2021-2024 Free Software Foundation, Inc. +/* DSO for testing GCS. + Copyright (C) 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 @@ -13,9 +13,13 @@ 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 + License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -#define STAT_IS_KERNEL_STAT 1 -#define XSTAT_IS_XSTAT64 0 -#define STATFS_IS_STATFS64 0 +#include <stdio.h> + +int fun3 (void) +{ + puts ("called function fun3"); + return 0; +} diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-noreturn.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-noreturn.c new file mode 100644 index 0000000..f550579 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-noreturn.c @@ -0,0 +1,101 @@ +/* AArch64 test for GCS abort when returning to non-GCS address. + Copyright (C) 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 + <https://www.gnu.org/licenses/>. */ + +#include "tst-gcs-helper.h" + +#include <sys/prctl.h> +#include <stdlib.h> + +#include <support/xsignal.h> + +# ifndef PR_SET_SHADOW_STACK_STATUS +# define PR_SET_SHADOW_STACK_STATUS 75 +# define PR_SHADOW_STACK_ENABLE (1UL << 0) +# endif + +static void +run_with_gcs (void) +{ + int r = prctl (PR_SET_SHADOW_STACK_STATUS, PR_SHADOW_STACK_ENABLE, 0, 0, 0); + /* Syscall should succeed. */ + TEST_VERIFY (r == 0); + bool gcs_enabled = __check_gcs_status (); + /* Now GCS should be enabled. */ + TEST_VERIFY (gcs_enabled); + printf ("GCS is %s\n", gcs_enabled ? "enabled" : "disabled"); +} + +static struct _aarch64_ctx * +extension (void *p) +{ + return p; +} + +#ifndef GCS_MAGIC +#define GCS_MAGIC 0x47435300 +#endif + +static void +handler (int sig, siginfo_t *si, void *ctx) +{ + TEST_VERIFY (sig == SIGSEGV); + ucontext_t *uc = ctx; + void *p = uc->uc_mcontext.__reserved; + if (extension (p)->magic == FPSIMD_MAGIC) + p = (char *)p + extension (p)->size; + if (extension (p)->magic == GCS_MAGIC) + { + struct { uint64_t x, gcspr, y, z; } *q = p; + printf ("GCS pointer: %016lx\n", q->gcspr); + exit (0); + } + else + exit (3); +} + +static int +do_test (void) +{ + /* Check if GCS could possible by enabled. */ + if (!(getauxval (AT_HWCAP) & HWCAP_GCS)) + { + puts ("kernel or CPU does not support GCS"); + return EXIT_UNSUPPORTED; + } + bool gcs_enabled = __check_gcs_status (); + /* This test should be rung with GCS initially disabled. */ + TEST_VERIFY (!gcs_enabled); + + /* We can't use EXPECTED_SIGNAL because of cases when + this test runs on a system that does not support GCS + which is being detected at runtime. */ + struct sigaction sigact; + sigemptyset (&sigact.sa_mask); + sigact.sa_flags = 0; + sigact.sa_flags = sigact.sa_flags | SA_SIGINFO; + sigact.sa_sigaction = handler; + xsigaction (SIGSEGV, &sigact, NULL); + + run_with_gcs (); + /* If we reached this point, then something went wrong. + Returning from a function that enabled GCS should result in + SIGSEGV that we catch with the handler set up above. */ + return 2; +} + +#include <support/test-driver.c> diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-optional-off.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-optional-off.c new file mode 100644 index 0000000..bd68878 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-optional-off.c @@ -0,0 +1,2 @@ +#define TEST_GCS_EXPECT_ENABLED 0 +#include "tst-gcs-skeleton.c" diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-optional-on.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-optional-on.c new file mode 100644 index 0000000..608318f --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-optional-on.c @@ -0,0 +1,2 @@ +#define TEST_GCS_EXPECT_ENABLED 1 +#include "tst-gcs-skeleton.c" diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-optional-static-off.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-optional-static-off.c new file mode 100644 index 0000000..54e3b9a --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-optional-static-off.c @@ -0,0 +1 @@ +#include "tst-gcs-optional-off.c" diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-optional-static-on.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-optional-static-on.c new file mode 100644 index 0000000..11b884b --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-optional-static-on.c @@ -0,0 +1 @@ +#include "tst-gcs-optional-on.c" diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-override-static.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-override-static.c new file mode 100644 index 0000000..09055dc --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-override-static.c @@ -0,0 +1 @@ +#include "tst-gcs-override.c" diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-override.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-override.c new file mode 100644 index 0000000..608318f --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-override.c @@ -0,0 +1,2 @@ +#define TEST_GCS_EXPECT_ENABLED 1 +#include "tst-gcs-skeleton.c" diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared-disabled.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared-disabled.c new file mode 100644 index 0000000..8598dc4 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared-disabled.c @@ -0,0 +1,2 @@ +#define TEST_GCS_EXPECT_ENABLED 0 +#include "tst-gcs-shared.c" diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared-enforced-abort.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared-enforced-abort.c new file mode 100644 index 0000000..f1333ce --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared-enforced-abort.c @@ -0,0 +1,2 @@ +#define TEST_GCS_EXPECT_ENABLED 1 +#include "tst-gcs-shared.c" diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared-optional.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared-optional.c new file mode 100644 index 0000000..8598dc4 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared-optional.c @@ -0,0 +1,2 @@ +#define TEST_GCS_EXPECT_ENABLED 0 +#include "tst-gcs-shared.c" diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared-override.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared-override.c new file mode 100644 index 0000000..f1333ce --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared-override.c @@ -0,0 +1,2 @@ +#define TEST_GCS_EXPECT_ENABLED 1 +#include "tst-gcs-shared.c" diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared.c new file mode 100644 index 0000000..1192de6 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared.c @@ -0,0 +1,41 @@ +/* AArch64 tests for GCS. + Copyright (C) 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 + <https://www.gnu.org/licenses/>. */ + +#include "tst-gcs-helper.h" + +int fun1 (void); // tst-gcs-mod1.c +int fun3 (void); // tst-gcs-mod3.c + +static int +do_test (void) +{ + /* Check if GCS could possible by enabled. */ + if (!(getauxval (AT_HWCAP) & HWCAP_GCS)) + { + puts ("kernel or CPU does not support GCS"); + return EXIT_UNSUPPORTED; + } +#if TEST_GCS_EXPECT_ENABLED + TEST_VERIFY (__check_gcs_status ()); +#else + TEST_VERIFY (!__check_gcs_status ()); +#endif + return fun1 () + fun3 (); +} + +#include <support/test-driver.c> diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-gcs-skeleton.c b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-skeleton.c new file mode 100644 index 0000000..feb5e33 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-gcs-skeleton.c @@ -0,0 +1,43 @@ +/* AArch64 tests for GCS. + Copyright (C) 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 + <https://www.gnu.org/licenses/>. */ + +#include "tst-gcs-helper.h" + +static int +do_test (void) +{ + /* Check if GCS could possible by enabled. */ + if (!(getauxval (AT_HWCAP) & HWCAP_GCS)) + { + puts ("kernel or CPU does not support GCS"); + return EXIT_UNSUPPORTED; + } + bool gcs_enabled = __check_gcs_status (); + if (gcs_enabled) + puts ("GCS enabled"); + else + puts ("GCS not enabled"); +#if TEST_GCS_EXPECT_ENABLED + TEST_VERIFY (gcs_enabled); +#else + TEST_VERIFY (!gcs_enabled); +#endif + return 0; +} + +#include <support/test-driver.c> diff --git a/sysdeps/unix/sysv/linux/aarch64/tst-tlsdesc-pac-mod.c b/sysdeps/unix/sysv/linux/aarch64/tst-tlsdesc-pac-mod.c new file mode 100644 index 0000000..d34c8be --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/tst-tlsdesc-pac-mod.c @@ -0,0 +1,27 @@ +/* AArch64 tests for unwinding TLSDESC (BZ 32612) + Copyright (C) 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 + <https://www.gnu.org/licenses/>. */ + +_Thread_local int foo; +/* Make the TLS segment large enough to trigger _dl_tlsdesc_dynamic. */ +_Thread_local int foobar[1000]; + +void +bar (void) +{ + foo = 1; +} diff --git a/sysdeps/unix/sysv/linux/i386/dl-procinfo.h b/sysdeps/unix/sysv/linux/aarch64/tst-tlsdesc-pac.c index 3de8dea..24d656a 100644 --- a/sysdeps/unix/sysv/linux/i386/dl-procinfo.h +++ b/sysdeps/unix/sysv/linux/aarch64/tst-tlsdesc-pac.c @@ -1,5 +1,5 @@ -/* Linux/i386 version of processor capability information handling macros. - Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* AArch64 tests for unwinding TLSDESC (BZ 32612) + Copyright (C) 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 @@ -16,31 +16,33 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -#ifndef _DL_I386_PROCINFO_H -#define _DL_I386_PROCINFO_H 1 -#include <sysdeps/x86/dl-procinfo.h> +#include <stdlib.h> +#include <unwind.h> +#include <support/xdlfcn.h> -#undef _dl_procinfo -static inline int -__attribute__ ((unused)) -_dl_procinfo (unsigned int type, unsigned long int word) +static _Unwind_Reason_Code +unwind_callback (struct _Unwind_Context* context, void* closure) { - /* This table should match the information from arch/i386/kernel/setup.c - in the kernel sources. */ - int i; - - /* Fallback to generic output mechanism. */ - if (type != AT_HWCAP) - return -1; - - _dl_printf ("AT_HWCAP: "); + return _URC_NO_REASON; +} - for (i = 0; i < 32; ++i) - if (word & (1 << i)) - _dl_printf (" %s", GLRO(dl_x86_cap_flags)[i]); +/* Assume that TLS variable from tst-tlsdesc-pac-mod.so will trigger + the slow-path that allocates the required memory with malloc. */ +void * +malloc (size_t s) +{ + _Unwind_Backtrace (unwind_callback, NULL); + return calloc (1, s); +} - _dl_printf ("\n"); +static int +do_test (void) +{ + void *h = xdlopen ("tst-tlsdesc-pac-mod.so", RTLD_LAZY); + void (*func)(void) = xdlsym (h, "bar"); + func (); return 0; } -#endif + +#include <support/test-driver.c> diff --git a/sysdeps/unix/sysv/linux/aarch64/ucontext-internal.h b/sysdeps/unix/sysv/linux/aarch64/ucontext-internal.h index 096d5fb..8419842 100644 --- a/sysdeps/unix/sysv/linux/aarch64/ucontext-internal.h +++ b/sysdeps/unix/sysv/linux/aarch64/ucontext-internal.h @@ -1,4 +1,4 @@ -/* 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. @@ -43,3 +43,8 @@ #define oX21 (oX0 + 21*8) #define oFP (oX0 + 29*8) #define oLR (oX0 + 30*8) + +/* Use kernel layout for saving GCSPR in ucontext. */ +#define GCS_MAGIC 0x47435300 +#define GCS_CONTEXT_SIZE 32 +#define oGCSPR 8 diff --git a/sysdeps/unix/sysv/linux/aarch64/vfork.S b/sysdeps/unix/sysv/linux/aarch64/vfork.S index e71e492..d5943a7 100644 --- a/sysdeps/unix/sysv/linux/aarch64/vfork.S +++ b/sysdeps/unix/sysv/linux/aarch64/vfork.S @@ -1,4 +1,4 @@ -/* 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. @@ -33,8 +33,13 @@ ENTRY (__vfork) cmn x0, #4095 b.cs .Lsyscall_error + cbz x0, L(child) RET - +L(child): + /* Return with indirect branch in the child to support GCS. + Compilers insert BTI instruction after vfork() to make + sure return via BR works on systems with BTI. */ + br x30 PSEUDO_END (__vfork) libc_hidden_def (__vfork) diff --git a/sysdeps/unix/sysv/linux/aarch64/vltest.py b/sysdeps/unix/sysv/linux/aarch64/vltest.py index f74be43..3a09905 100755 --- a/sysdeps/unix/sysv/linux/aarch64/vltest.py +++ b/sysdeps/unix/sysv/linux/aarch64/vltest.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 # Set Scalable Vector Length test helper -# Copyright (C) 2021-2024 Free Software Foundation, Inc. +# Copyright (C) 2021-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/accept.c b/sysdeps/unix/sysv/linux/accept.c index cf52661..410b1c0 100644 --- a/sysdeps/unix/sysv/linux/accept.c +++ b/sysdeps/unix/sysv/linux/accept.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2015-2024 Free Software Foundation, Inc. +/* Copyright (C) 2015-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/accept4.c b/sysdeps/unix/sysv/linux/accept4.c index 63133c8..20fb640 100644 --- a/sysdeps/unix/sysv/linux/accept4.c +++ b/sysdeps/unix/sysv/linux/accept4.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/access.c b/sysdeps/unix/sysv/linux/access.c index 4b7c3be..bdf14ab 100644 --- a/sysdeps/unix/sysv/linux/access.c +++ b/sysdeps/unix/sysv/linux/access.c @@ -1,5 +1,5 @@ /* Linux implementation for access function. - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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/adjtime.c b/sysdeps/unix/sysv/linux/adjtime.c index 4b0a54f..ff80909 100644 --- a/sysdeps/unix/sysv/linux/adjtime.c +++ b/sysdeps/unix/sysv/linux/adjtime.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/adjtimex.c b/sysdeps/unix/sysv/linux/adjtimex.c index 72d5c18..f3bf393 100644 --- a/sysdeps/unix/sysv/linux/adjtimex.c +++ b/sysdeps/unix/sysv/linux/adjtimex.c @@ -1,5 +1,5 @@ /* Tune kernel clock. Linux specific syscall. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/aio_misc.h b/sysdeps/unix/sysv/linux/aio_misc.h index ef5276c..e8094c2 100644 --- a/sysdeps/unix/sysv/linux/aio_misc.h +++ b/sysdeps/unix/sysv/linux/aio_misc.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2024 Free Software Foundation, Inc. +/* Copyright (C) 2004-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/aio_sigqueue.c b/sysdeps/unix/sysv/linux/aio_sigqueue.c index dcae15f..4d9e8ce 100644 --- a/sysdeps/unix/sysv/linux/aio_sigqueue.c +++ b/sysdeps/unix/sysv/linux/aio_sigqueue.c @@ -1,4 +1,4 @@ -/* 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/alpha/____longjmp_chk.S b/sysdeps/unix/sysv/linux/alpha/____longjmp_chk.S index 09ef76e..2cf1096 100644 --- a/sysdeps/unix/sysv/linux/alpha/____longjmp_chk.S +++ b/sysdeps/unix/sysv/linux/alpha/____longjmp_chk.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1992-2024 Free Software Foundation, Inc. +/* Copyright (C) 1992-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/alpha/adjtime.c b/sysdeps/unix/sysv/linux/alpha/adjtime.c index 463cec3..f78d939 100644 --- a/sysdeps/unix/sysv/linux/alpha/adjtime.c +++ b/sysdeps/unix/sysv/linux/alpha/adjtime.c @@ -1,5 +1,5 @@ /* adjtime -- Adjust the current time of day. Linux/Alpha/tv64 version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/alpha/adjtimex.c b/sysdeps/unix/sysv/linux/alpha/adjtimex.c index 8245698..75b7b37 100644 --- a/sysdeps/unix/sysv/linux/alpha/adjtimex.c +++ b/sysdeps/unix/sysv/linux/alpha/adjtimex.c @@ -1,5 +1,5 @@ /* adjtimex -- Adjust the current time of day. Linux/Alpha/tv64 version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/alpha/arch-syscall.h b/sysdeps/unix/sysv/linux/alpha/arch-syscall.h index 216a557..840d6fe 100644 --- a/sysdeps/unix/sysv/linux/alpha/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/alpha/arch-syscall.h @@ -119,6 +119,7 @@ #define __NR_gettimeofday 359 #define __NR_getuid 24 #define __NR_getxattr 385 +#define __NR_getxattrat 574 #define __NR_getxgid 47 #define __NR_getxpid 20 #define __NR_getxuid 24 @@ -153,6 +154,7 @@ #define __NR_listen 106 #define __NR_listmount 568 #define __NR_listxattr 388 +#define __NR_listxattrat 575 #define __NR_llistxattr 389 #define __NR_lookup_dcookie 406 #define __NR_lremovexattr 392 @@ -207,6 +209,7 @@ #define __NR_open 45 #define __NR_open_by_handle_at 498 #define __NR_open_tree 538 +#define __NR_open_tree_attr 577 #define __NR_openat 450 #define __NR_openat2 547 #define __NR_osf_adjtime 140 @@ -364,6 +367,7 @@ #define __NR_recvmsg 113 #define __NR_remap_file_pages 410 #define __NR_removexattr 391 +#define __NR_removexattrat 576 #define __NR_rename 128 #define __NR_renameat 457 #define __NR_renameat2 510 @@ -428,6 +432,7 @@ #define __NR_settimeofday 360 #define __NR_setuid 23 #define __NR_setxattr 382 +#define __NR_setxattrat 573 #define __NR_shmat 209 #define __NR_shmctl 210 #define __NR_shmdt 211 diff --git a/sysdeps/unix/sysv/linux/alpha/bits/dirent.h b/sysdeps/unix/sysv/linux/alpha/bits/dirent.h index b604576..fbec550 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/dirent.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/dirent.h @@ -1,4 +1,4 @@ -/* 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/alpha/bits/epoll.h b/sysdeps/unix/sysv/linux/alpha/bits/epoll.h index 83c950e..dc81854 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/epoll.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/epoll.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2024 Free Software Foundation, Inc. +/* Copyright (C) 2002-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/alpha/bits/errno.h b/sysdeps/unix/sysv/linux/alpha/bits/errno.h index 16dbca7..c019bdce 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/errno.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/errno.h @@ -1,5 +1,5 @@ /* Error constants. Linux/Alpha specific 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/alpha/bits/eventfd.h b/sysdeps/unix/sysv/linux/alpha/bits/eventfd.h index 5e46341..f1bb9b8 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/eventfd.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/eventfd.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/alpha/bits/fcntl.h b/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h index 29397ba..d6b87e7 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h @@ -1,5 +1,5 @@ /* O_*, F_*, FD_* bit values for Linux. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/alpha/bits/inotify.h b/sysdeps/unix/sysv/linux/alpha/bits/inotify.h index 73a5146..52f7542 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/inotify.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/inotify.h @@ -1,4 +1,4 @@ -/* 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 diff --git a/sysdeps/unix/sysv/linux/alpha/bits/ioctls.h b/sysdeps/unix/sysv/linux/alpha/bits/ioctls.h index eca4132..77dc0c1 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/ioctls.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/ioctls.h @@ -1,4 +1,4 @@ -/* 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/alpha/bits/mman.h b/sysdeps/unix/sysv/linux/alpha/bits/mman.h index 43b22a4..6403700 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/mman.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/mman.h @@ -1,5 +1,5 @@ /* Definitions for POSIX memory map interface. Linux/Alpha 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/alpha/bits/netdb.h b/sysdeps/unix/sysv/linux/alpha/bits/netdb.h index 05726e3..040071d 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/netdb.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/netdb.h @@ -1,4 +1,4 @@ -/* 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/alpha/bits/procfs-prregset.h b/sysdeps/unix/sysv/linux/alpha/bits/procfs-prregset.h index ac1e57a..aad7f91 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/procfs-prregset.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/procfs-prregset.h @@ -1,5 +1,5 @@ /* Types of prgregset_t and prfpregset_t. Alpha 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. diff --git a/sysdeps/unix/sysv/linux/alpha/bits/procfs.h b/sysdeps/unix/sysv/linux/alpha/bits/procfs.h index d55fe92..99dd1c7 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/procfs.h @@ -1,5 +1,5 @@ /* Types for registers for sys/procfs.h. Alpha 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/alpha/bits/pthread_stack_min.h b/sysdeps/unix/sysv/linux/alpha/bits/pthread_stack_min.h index 324b549..cf70ea5 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/pthread_stack_min.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/pthread_stack_min.h @@ -1,5 +1,5 @@ /* Definition of PTHREAD_STACK_MIN. Linux/Alpha version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/alpha/bits/resource.h b/sysdeps/unix/sysv/linux/alpha/bits/resource.h index 2bcbdf0..225ed98 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/resource.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/resource.h @@ -1,5 +1,5 @@ /* Bit values & structures for resource limits. Alpha/Linux version. - Copyright (C) 1994-2024 Free Software Foundation, Inc. + Copyright (C) 1994-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/alpha/bits/sigaction.h b/sysdeps/unix/sysv/linux/alpha/bits/sigaction.h index ffd0288..54ee8c9 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/sigaction.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/sigaction.h @@ -1,5 +1,5 @@ /* The proper definitions for Linux/Alpha sigaction. - 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/alpha/bits/signalfd.h b/sysdeps/unix/sysv/linux/alpha/bits/signalfd.h index 6753f00..ba4dbd3 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/signalfd.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/signalfd.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/alpha/bits/signum-arch.h b/sysdeps/unix/sysv/linux/alpha/bits/signum-arch.h index 56ec725..68bcda1 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/signum-arch.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/signum-arch.h @@ -1,5 +1,5 @@ /* Signal number definitions. Linux/Alpha 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/alpha/bits/sigstack.h b/sysdeps/unix/sysv/linux/alpha/bits/sigstack.h index d43039d..3864e79 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/sigstack.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/sigstack.h @@ -1,5 +1,5 @@ /* sigstack, sigaltstack definitions. - Copyright (C) 1998-2024 Free Software Foundation, Inc. + Copyright (C) 1998-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/alpha/bits/socket-constants.h b/sysdeps/unix/sysv/linux/alpha/bits/socket-constants.h index 7a5a426..fdbb2bd 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/socket-constants.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/socket-constants.h @@ -1,5 +1,5 @@ /* Socket constants which vary among Linux architectures. Version for alpha. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/alpha/bits/socket_type.h b/sysdeps/unix/sysv/linux/alpha/bits/socket_type.h index 7300dd9..74ea018 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/socket_type.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/socket_type.h @@ -1,5 +1,5 @@ /* Define enum __socket_type for Linux/Alpha. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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/alpha/bits/statfs.h b/sysdeps/unix/sysv/linux/alpha/bits/statfs.h index ed23840..4998ca1 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/statfs.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/statfs.h @@ -1,4 +1,4 @@ -/* 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/alpha/bits/struct_stat.h b/sysdeps/unix/sysv/linux/alpha/bits/struct_stat.h index 83a9bfd..d9b5f32 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/struct_stat.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/struct_stat.h @@ -1,5 +1,5 @@ /* Definition for struct stat. - 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/alpha/bits/termios-c_cc.h b/sysdeps/unix/sysv/linux/alpha/bits/termios-c_cc.h index a9735f5..8ece17d 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/termios-c_cc.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/termios-c_cc.h @@ -1,5 +1,5 @@ /* termios c_cc symbolic constant definitions. Linux/alpha version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/alpha/bits/termios-c_cflag.h b/sysdeps/unix/sysv/linux/alpha/bits/termios-c_cflag.h index ff50a24..d830884 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/termios-c_cflag.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/termios-c_cflag.h @@ -1,5 +1,5 @@ /* termios control mode definitions. Linux/alpha version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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 @@ -36,4 +36,6 @@ #ifdef __USE_MISC # define ADDRB 04000000000 +# define CMSPAR 010000000000 /* Mark or space (stick) parity. */ +# define CRTSCTS 020000000000 /* Flow control. */ #endif diff --git a/sysdeps/unix/sysv/linux/alpha/bits/termios-c_iflag.h b/sysdeps/unix/sysv/linux/alpha/bits/termios-c_iflag.h index 2556911..b4dfdb4 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/termios-c_iflag.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/termios-c_iflag.h @@ -1,5 +1,5 @@ /* termios input mode definitions. Linux/alpha version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/alpha/bits/termios-c_lflag.h b/sysdeps/unix/sysv/linux/alpha/bits/termios-c_lflag.h index 9ae43ba..84b876c 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/termios-c_lflag.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/termios-c_lflag.h @@ -1,5 +1,5 @@ /* termios local mode definitions. Linux/alpha version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/alpha/bits/termios-c_oflag.h b/sysdeps/unix/sysv/linux/alpha/bits/termios-c_oflag.h index e3bec09..f1ae9e5 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/termios-c_oflag.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/termios-c_oflag.h @@ -1,5 +1,5 @@ /* termios output mode definitions. Linux/alpha version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/alpha/bits/termios-baud.h b/sysdeps/unix/sysv/linux/alpha/bits/termios-cbaud.h index 0345e9f..69421f6 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/termios-baud.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/termios-cbaud.h @@ -1,5 +1,5 @@ /* termios baud rate selection definitions. Linux/alpha version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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 @@ -17,30 +17,29 @@ <https://www.gnu.org/licenses/>. */ #ifndef _TERMIOS_H -# error "Never include <bits/termios-baud.h> directly; use <termios.h> instead." +# error "Never include <bits/termios-cbaud.h> directly; use <termios.h> instead." #endif #ifdef __USE_MISC -# define CBAUD 0000037 -# define CBAUDEX 0000000 -# define CMSPAR 010000000000 /* mark or space (stick) parity */ -# define CRTSCTS 020000000000 /* flow control */ +# define CBAUD 000000037 +# define CBAUDEX 000000000 +# define CIBAUD 007600000 +# define IBSHIFT 16 #endif -#define B57600 00020 -#define B115200 00021 -#define B230400 00022 -#define B460800 00023 -#define B500000 00024 -#define B576000 00025 -#define B921600 00026 -#define B1000000 00027 -#define B1152000 00030 -#define B1500000 00031 -#define B2000000 00032 -#define B2500000 00033 -#define B3000000 00034 -#define B3500000 00035 -#define B4000000 00036 - -#define __MAX_BAUD B4000000 +#define __B57600 00020 +#define __B115200 00021 +#define __B230400 00022 +#define __B460800 00023 +#define __B500000 00024 +#define __B576000 00025 +#define __B921600 00026 +#define __B1000000 00027 +#define __B1152000 00030 +#define __B1500000 00031 +#define __B2000000 00032 +#define __B2500000 00033 +#define __B3000000 00034 +#define __B3500000 00035 +#define __B4000000 00036 +#define __BOTHER 00037 diff --git a/sysdeps/unix/sysv/linux/alpha/bits/termios-struct.h b/sysdeps/unix/sysv/linux/alpha/bits/termios-struct.h index 3fa02fe..f50e9ef 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/termios-struct.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/termios-struct.h @@ -1,5 +1,5 @@ /* struct termios definition. Linux/alpha version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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 @@ -30,8 +30,15 @@ struct termios tcflag_t c_lflag; /* local mode flags */ cc_t c_cc[NCCS]; /* control characters */ cc_t c_line; /* line discipline (== c_cc[33]) */ - speed_t c_ispeed; /* input speed */ - speed_t c_ospeed; /* output speed */ + /* Input and output baud rates. */ + __extension__ union { + speed_t __ispeed; + speed_t c_ispeed; + }; #define _HAVE_STRUCT_TERMIOS_C_ISPEED 1 + __extension__ union { + speed_t __ospeed; + speed_t c_ospeed; + }; #define _HAVE_STRUCT_TERMIOS_C_OSPEED 1 }; diff --git a/sysdeps/unix/sysv/linux/alpha/bits/timerfd.h b/sysdeps/unix/sysv/linux/alpha/bits/timerfd.h index fd1ead8..0dfafe5 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/timerfd.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/timerfd.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/alpha/bits/typesizes.h b/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h index 5da4ce2..8cc4491 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h @@ -1,5 +1,5 @@ /* bits/typesizes.h -- underlying types for *_t. Linux/Alpha version. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/alpha/bits/wordsize.h b/sysdeps/unix/sysv/linux/alpha/bits/wordsize.h index 259f563..88de5c4 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/wordsize.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/wordsize.h @@ -1,4 +1,4 @@ -/* 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/alpha/brk_call.h b/sysdeps/unix/sysv/linux/alpha/brk_call.h index ec20208..49053ab 100644 --- a/sysdeps/unix/sysv/linux/alpha/brk_call.h +++ b/sysdeps/unix/sysv/linux/alpha/brk_call.h @@ -1,5 +1,5 @@ /* Invoke the brk system call. Alpha version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/alpha/clone.S b/sysdeps/unix/sysv/linux/alpha/clone.S index 747a68d..727346f 100644 --- a/sysdeps/unix/sysv/linux/alpha/clone.S +++ b/sysdeps/unix/sysv/linux/alpha/clone.S @@ -1,4 +1,4 @@ -/* 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/alpha/dl-auxv.h b/sysdeps/unix/sysv/linux/alpha/dl-auxv.h index e90c2cb..26e0460 100644 --- a/sysdeps/unix/sysv/linux/alpha/dl-auxv.h +++ b/sysdeps/unix/sysv/linux/alpha/dl-auxv.h @@ -1,5 +1,5 @@ /* Auxiliary vector processing for Linux/Alpha. - Copyright (C) 2007-2024 Free Software Foundation, Inc. + Copyright (C) 2007-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/alpha/errlist-compat-data.h b/sysdeps/unix/sysv/linux/alpha/errlist-compat-data.h index 25028fd..a0e0b81 100644 --- a/sysdeps/unix/sysv/linux/alpha/errlist-compat-data.h +++ b/sysdeps/unix/sysv/linux/alpha/errlist-compat-data.h @@ -1,5 +1,5 @@ /* Linux sys_errlist compat symbol definitions. Alpha 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/alpha/fraiseexcpt.S b/sysdeps/unix/sysv/linux/alpha/fraiseexcpt.S index 96265ac..933a3d8 100644 --- a/sysdeps/unix/sysv/linux/alpha/fraiseexcpt.S +++ b/sysdeps/unix/sysv/linux/alpha/fraiseexcpt.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2024 Free Software Foundation, Inc. +/* Copyright (C) 2004-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/alpha/fstatfs.c b/sysdeps/unix/sysv/linux/alpha/fstatfs.c index 147d491..e940ea0 100644 --- a/sysdeps/unix/sysv/linux/alpha/fstatfs.c +++ b/sysdeps/unix/sysv/linux/alpha/fstatfs.c @@ -1,5 +1,5 @@ /* Get filesystem statistics. Linux/alpha. - 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/alpha/fstatfs64.c b/sysdeps/unix/sysv/linux/alpha/fstatfs64.c index 7e08929..59d99b2 100644 --- a/sysdeps/unix/sysv/linux/alpha/fstatfs64.c +++ b/sysdeps/unix/sysv/linux/alpha/fstatfs64.c @@ -1,5 +1,5 @@ /* Get filesystem statistics. Linux/alpha. - 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/alpha/fxstat64.c b/sysdeps/unix/sysv/linux/alpha/fxstat64.c index 89d84f3..bb52faa 100644 --- a/sysdeps/unix/sysv/linux/alpha/fxstat64.c +++ b/sysdeps/unix/sysv/linux/alpha/fxstat64.c @@ -1,5 +1,5 @@ /* fxstat64 using old-style Unix stat system call. - Copyright (C) 2004-2024 Free Software Foundation, Inc. + Copyright (C) 2004-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/alpha/fxstatat64.c b/sysdeps/unix/sysv/linux/alpha/fxstatat64.c index 2ee47a4..5594c4c 100644 --- a/sysdeps/unix/sysv/linux/alpha/fxstatat64.c +++ b/sysdeps/unix/sysv/linux/alpha/fxstatat64.c @@ -1,5 +1,5 @@ /* fxstat using old-style Unix stat system call. - Copyright (C) 2004-2024 Free Software Foundation, Inc. + Copyright (C) 2004-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/alpha/getcontext.S b/sysdeps/unix/sysv/linux/alpha/getcontext.S index 5c0be7d..a833269 100644 --- a/sysdeps/unix/sysv/linux/alpha/getcontext.S +++ b/sysdeps/unix/sysv/linux/alpha/getcontext.S @@ -1,5 +1,5 @@ /* Save current context. - Copyright (C) 2004-2024 Free Software Foundation, Inc. + Copyright (C) 2004-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/alpha/getegid.S b/sysdeps/unix/sysv/linux/alpha/getegid.S index 29370f1..885c1a5 100644 --- a/sysdeps/unix/sysv/linux/alpha/getegid.S +++ b/sysdeps/unix/sysv/linux/alpha/getegid.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2024 Free Software Foundation, Inc. +/* Copyright (C) 1991-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/alpha/geteuid.S b/sysdeps/unix/sysv/linux/alpha/geteuid.S index 68af11a..b171943 100644 --- a/sysdeps/unix/sysv/linux/alpha/geteuid.S +++ b/sysdeps/unix/sysv/linux/alpha/geteuid.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2024 Free Software Foundation, Inc. +/* Copyright (C) 1991-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/alpha/gethostname.c b/sysdeps/unix/sysv/linux/alpha/gethostname.c index 30da8f3..2aeb8c8 100644 --- a/sysdeps/unix/sysv/linux/alpha/gethostname.c +++ b/sysdeps/unix/sysv/linux/alpha/gethostname.c @@ -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/alpha/getppid.S b/sysdeps/unix/sysv/linux/alpha/getppid.S index c0405e6..e0e8b3f 100644 --- a/sysdeps/unix/sysv/linux/alpha/getppid.S +++ b/sysdeps/unix/sysv/linux/alpha/getppid.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2024 Free Software Foundation, Inc. +/* Copyright (C) 1991-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/alpha/getrlimit64.c b/sysdeps/unix/sysv/linux/alpha/getrlimit64.c index 898049e..bf32626 100644 --- a/sysdeps/unix/sysv/linux/alpha/getrlimit64.c +++ b/sysdeps/unix/sysv/linux/alpha/getrlimit64.c @@ -1,4 +1,4 @@ -/* 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/alpha/gettimeofday.c b/sysdeps/unix/sysv/linux/alpha/gettimeofday.c index 2cfd20f..27ffdc6 100644 --- a/sysdeps/unix/sysv/linux/alpha/gettimeofday.c +++ b/sysdeps/unix/sysv/linux/alpha/gettimeofday.c @@ -1,5 +1,5 @@ /* gettimeofday -- Get the current time of day. Linux/Alpha/tv64 version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/alpha/globfree.c b/sysdeps/unix/sysv/linux/alpha/globfree.c index fcb89a4..fe2a7e1 100644 --- a/sysdeps/unix/sysv/linux/alpha/globfree.c +++ b/sysdeps/unix/sysv/linux/alpha/globfree.c @@ -1,5 +1,5 @@ /* Compat globfree. Linux/alpha version. - 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/alpha/ieee_get_fp_control.S b/sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S index e599d7a..43b80bd 100644 --- a/sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S +++ b/sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1993-2024 Free Software Foundation, Inc. +/* Copyright (C) 1993-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/alpha/ieee_set_fp_control.S b/sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S index d9a3a66..f5a7d9d 100644 --- a/sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S +++ b/sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1993-2024 Free Software Foundation, Inc. +/* Copyright (C) 1993-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/alpha/ioperm.c b/sysdeps/unix/sysv/linux/alpha/ioperm.c index b1b373b..2e193d9 100644 --- a/sysdeps/unix/sysv/linux/alpha/ioperm.c +++ b/sysdeps/unix/sysv/linux/alpha/ioperm.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1992-2024 Free Software Foundation, Inc. +/* Copyright (C) 1992-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/alpha/ipc_priv.h b/sysdeps/unix/sysv/linux/alpha/ipc_priv.h index 6ba8e81..70612b1 100644 --- a/sysdeps/unix/sysv/linux/alpha/ipc_priv.h +++ b/sysdeps/unix/sysv/linux/alpha/ipc_priv.h @@ -1,5 +1,5 @@ /* Old SysV permission definition for Linux. Alpha version. - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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/alpha/kernel-features.h b/sysdeps/unix/sysv/linux/alpha/kernel-features.h index e0233ea..83fdf91 100644 --- a/sysdeps/unix/sysv/linux/alpha/kernel-features.h +++ b/sysdeps/unix/sysv/linux/alpha/kernel-features.h @@ -1,6 +1,6 @@ /* Set flags signalling availability of kernel features based on given kernel version number. - Copyright (C) 2010-2024 Free Software Foundation, Inc. + Copyright (C) 2010-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 @@ -54,4 +54,15 @@ #undef __ASSUME_CLONE3 #define __ASSUME_CLONE3 0 +/* Alpha did not provide BOTHER, CIBAUD or the termios2 ioctls until + kernel 4.20. Even though struct __kernel_termios and struct + termios2 are the same on Alpha, Calling the legacy TCSETS* ioctls + with BOTHER set triggers a bug in these old kernels, so only use + the legacy TCSETS* ioctl numbers if neither BOTHER nor split speed is + needed; that way the code will fail gracefully. */ +#if __LINUX_KERNEL_VERSION < 0x041400 +# undef __ASSUME_TERMIOS2 +# define __ASSUME_TERMIOS2 0 +#endif + #endif /* _KERNEL_FEATURES_H */ diff --git a/sysdeps/unix/sysv/linux/alpha/kernel_termios.h b/sysdeps/unix/sysv/linux/alpha/kernel_termios.h deleted file mode 100644 index bdc0377..0000000 --- a/sysdeps/unix/sysv/linux/alpha/kernel_termios.h +++ /dev/null @@ -1,43 +0,0 @@ -/* Copyright (C) 1997-2024 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 - <https://www.gnu.org/licenses/>. */ - -#ifndef _KERNEL_TERMIOS_H -#define _KERNEL_TERMIOS_H 1 - -/* The following corresponds to the values from the Linux 2.1.20 kernel. */ - -/* We need the definition of tcflag_t, cc_t, and speed_t. */ -#include <termios.h> - -#define __KERNEL_NCCS 19 - -struct __kernel_termios - { - tcflag_t c_iflag; /* input mode flags */ - tcflag_t c_oflag; /* output mode flags */ - tcflag_t c_cflag; /* control mode flags */ - tcflag_t c_lflag; /* local mode flags */ - cc_t c_cc[__KERNEL_NCCS]; /* control characters */ - cc_t c_line; /* line discipline */ - speed_t c_ispeed; /* input speed */ - speed_t c_ospeed; /* output speed */ - }; - -#define _HAVE_C_ISPEED 1 -#define _HAVE_C_OSPEED 1 - -#endif /* kernel_termios.h */ diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist index 34c187b..4b5736a 100644 --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist @@ -3095,6 +3095,25 @@ GLIBC_2.4 wcstold F GLIBC_2.4 wcstold_l F GLIBC_2.4 wprintf F GLIBC_2.4 wscanf 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 GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist index 4b7f756..4b383b1 100644 --- a/sysdeps/unix/sysv/linux/alpha/libm.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist @@ -1348,3 +1348,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/alpha/librt-compat.c b/sysdeps/unix/sysv/linux/alpha/librt-compat.c index 020cad7..4dd6a44 100644 --- a/sysdeps/unix/sysv/linux/alpha/librt-compat.c +++ b/sysdeps/unix/sysv/linux/alpha/librt-compat.c @@ -1,5 +1,5 @@ /* Placeholder definitions to pull in removed symbol versions. alpha version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/alpha/lxstat64.c b/sysdeps/unix/sysv/linux/alpha/lxstat64.c index 6daade4..2d5b9a9 100644 --- a/sysdeps/unix/sysv/linux/alpha/lxstat64.c +++ b/sysdeps/unix/sysv/linux/alpha/lxstat64.c @@ -1,5 +1,5 @@ /* lxstat using old-style Unix stat system call. - Copyright (C) 2004-2024 Free Software Foundation, Inc. + Copyright (C) 2004-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/alpha/makecontext.S b/sysdeps/unix/sysv/linux/alpha/makecontext.S index 1fefc37..72e1dbb 100644 --- a/sysdeps/unix/sysv/linux/alpha/makecontext.S +++ b/sysdeps/unix/sysv/linux/alpha/makecontext.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2024 Free Software Foundation, Inc. +/* Copyright (C) 2004-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/alpha/oldglob.c b/sysdeps/unix/sysv/linux/alpha/oldglob.c index f2dce70..f0e6197 100644 --- a/sysdeps/unix/sysv/linux/alpha/oldglob.c +++ b/sysdeps/unix/sysv/linux/alpha/oldglob.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/alpha/osf_adjtime.c b/sysdeps/unix/sysv/linux/alpha/osf_adjtime.c index acc4e6a..8f53b7c 100644 --- a/sysdeps/unix/sysv/linux/alpha/osf_adjtime.c +++ b/sysdeps/unix/sysv/linux/alpha/osf_adjtime.c @@ -1,5 +1,5 @@ /* adjtime -- adjust the system clock. Linux/Alpha/tv32 version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/alpha/osf_getitimer.c b/sysdeps/unix/sysv/linux/alpha/osf_getitimer.c index 000b044..f7140b5 100644 --- a/sysdeps/unix/sysv/linux/alpha/osf_getitimer.c +++ b/sysdeps/unix/sysv/linux/alpha/osf_getitimer.c @@ -1,5 +1,5 @@ /* getitimer -- Get the state of an interval timer. Linux/Alpha/tv32 version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/alpha/osf_getrusage.c b/sysdeps/unix/sysv/linux/alpha/osf_getrusage.c index facfacc..d19658b 100644 --- a/sysdeps/unix/sysv/linux/alpha/osf_getrusage.c +++ b/sysdeps/unix/sysv/linux/alpha/osf_getrusage.c @@ -1,5 +1,5 @@ /* utimes -- change file timestamps. Linux/Alpha/tv32 version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/alpha/osf_gettimeofday.c b/sysdeps/unix/sysv/linux/alpha/osf_gettimeofday.c index 5c5409b..21f6137 100644 --- a/sysdeps/unix/sysv/linux/alpha/osf_gettimeofday.c +++ b/sysdeps/unix/sysv/linux/alpha/osf_gettimeofday.c @@ -1,5 +1,5 @@ /* gettimeofday -- Get the current time of day. Linux/Alpha/tv32 version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/alpha/osf_setitimer.c b/sysdeps/unix/sysv/linux/alpha/osf_setitimer.c index 3130353..faeb944 100644 --- a/sysdeps/unix/sysv/linux/alpha/osf_setitimer.c +++ b/sysdeps/unix/sysv/linux/alpha/osf_setitimer.c @@ -1,5 +1,5 @@ /* getitimer -- Get the state of an interval timer. Linux/Alpha/tv32 version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/alpha/osf_settimeofday.c b/sysdeps/unix/sysv/linux/alpha/osf_settimeofday.c index 572f1b5..b5634f7 100644 --- a/sysdeps/unix/sysv/linux/alpha/osf_settimeofday.c +++ b/sysdeps/unix/sysv/linux/alpha/osf_settimeofday.c @@ -1,5 +1,5 @@ /* settimeofday -- Set the current time of day. Linux/Alpha/tv32 version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/alpha/osf_utimes.c b/sysdeps/unix/sysv/linux/alpha/osf_utimes.c index 055da7b..096ac1e 100644 --- a/sysdeps/unix/sysv/linux/alpha/osf_utimes.c +++ b/sysdeps/unix/sysv/linux/alpha/osf_utimes.c @@ -1,5 +1,5 @@ /* utimes -- change file timestamps. Linux/Alpha/tv32 version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/alpha/osf_wait4.c b/sysdeps/unix/sysv/linux/alpha/osf_wait4.c index c290c38..5ab6212 100644 --- a/sysdeps/unix/sysv/linux/alpha/osf_wait4.c +++ b/sysdeps/unix/sysv/linux/alpha/osf_wait4.c @@ -1,5 +1,5 @@ /* wait4 -- wait for process to change state. Linux/Alpha/tv32 version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/alpha/pointer_guard.h b/sysdeps/unix/sysv/linux/alpha/pointer_guard.h index 4b7ca8d..3bbd924 100644 --- a/sysdeps/unix/sysv/linux/alpha/pointer_guard.h +++ b/sysdeps/unix/sysv/linux/alpha/pointer_guard.h @@ -1,5 +1,5 @@ /* Pointer guard implementation. Alpha version. - Copyright (C) 2006-2024 Free Software Foundation, Inc. + Copyright (C) 2006-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/alpha/rt_sigaction.S b/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S index a17fb2e..d75550c 100644 --- a/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S +++ b/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/alpha/select.c b/sysdeps/unix/sysv/linux/alpha/select.c index 72c82da..b00d26e 100644 --- a/sysdeps/unix/sysv/linux/alpha/select.c +++ b/sysdeps/unix/sysv/linux/alpha/select.c @@ -1,5 +1,5 @@ /* Linux/alpha select implementation. - 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/alpha/setcontext.S b/sysdeps/unix/sysv/linux/alpha/setcontext.S index 2c1bd7e..5dc16c6 100644 --- a/sysdeps/unix/sysv/linux/alpha/setcontext.S +++ b/sysdeps/unix/sysv/linux/alpha/setcontext.S @@ -1,5 +1,5 @@ /* Install given context. - Copyright (C) 2004-2024 Free Software Foundation, Inc. + Copyright (C) 2004-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/alpha/setfpucw.c b/sysdeps/unix/sysv/linux/alpha/setfpucw.c index 19433aa..7b0b596 100644 --- a/sysdeps/unix/sysv/linux/alpha/setfpucw.c +++ b/sysdeps/unix/sysv/linux/alpha/setfpucw.c @@ -1,5 +1,5 @@ /* Set FP exception mask and rounding mode. - 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/alpha/setrlimit64.c b/sysdeps/unix/sysv/linux/alpha/setrlimit64.c index 67947c8..fd6c50c 100644 --- a/sysdeps/unix/sysv/linux/alpha/setrlimit64.c +++ b/sysdeps/unix/sysv/linux/alpha/setrlimit64.c @@ -1,4 +1,4 @@ -/* 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/alpha/settimeofday.c b/sysdeps/unix/sysv/linux/alpha/settimeofday.c index 3a19960..02005a8 100644 --- a/sysdeps/unix/sysv/linux/alpha/settimeofday.c +++ b/sysdeps/unix/sysv/linux/alpha/settimeofday.c @@ -1,5 +1,5 @@ /* settimeofday -- Set the current time of day. Linux/Alpha/tv64 version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/alpha/sigcontextinfo.h b/sysdeps/unix/sysv/linux/alpha/sigcontextinfo.h index 174bcc7..9f18fb1 100644 --- a/sysdeps/unix/sysv/linux/alpha/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/alpha/sigcontextinfo.h @@ -1,4 +1,4 @@ -/* 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/alpha/sizes.h b/sysdeps/unix/sysv/linux/alpha/sizes.h index 4e3df21..0493a95 100644 --- a/sysdeps/unix/sysv/linux/alpha/sizes.h +++ b/sysdeps/unix/sysv/linux/alpha/sizes.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/alpha/statfs.c b/sysdeps/unix/sysv/linux/alpha/statfs.c index e11a798..eda0bce 100644 --- a/sysdeps/unix/sysv/linux/alpha/statfs.c +++ b/sysdeps/unix/sysv/linux/alpha/statfs.c @@ -1,5 +1,5 @@ /* Return information about the filesystem on which FILE resides. Linux/alpha. - 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/alpha/statfs64.c b/sysdeps/unix/sysv/linux/alpha/statfs64.c index 319772e..1f5fa4e 100644 --- a/sysdeps/unix/sysv/linux/alpha/statfs64.c +++ b/sysdeps/unix/sysv/linux/alpha/statfs64.c @@ -1,5 +1,5 @@ /* Return information about the filesystem on which FILE resides. Linux/alpha. - 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/alpha/swapcontext.S b/sysdeps/unix/sysv/linux/alpha/swapcontext.S index 5baceee..42c2dc2 100644 --- a/sysdeps/unix/sysv/linux/alpha/swapcontext.S +++ b/sysdeps/unix/sysv/linux/alpha/swapcontext.S @@ -1,5 +1,5 @@ /* Save current context and install the given one. - Copyright (C) 2004-2024 Free Software Foundation, Inc. + Copyright (C) 2004-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/alpha/sys/io.h b/sysdeps/unix/sysv/linux/alpha/sys/io.h index dc8a0ac..8eb1bc0 100644 --- a/sysdeps/unix/sysv/linux/alpha/sys/io.h +++ b/sysdeps/unix/sysv/linux/alpha/sys/io.h @@ -1,4 +1,4 @@ -/* 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/alpha/sys/ucontext.h b/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h index 5308cfa..ac3d183 100644 --- a/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/alpha/sys/user.h b/sysdeps/unix/sysv/linux/alpha/sys/user.h index ca52b67..e14ab13 100644 --- a/sysdeps/unix/sysv/linux/alpha/sys/user.h +++ b/sysdeps/unix/sysv/linux/alpha/sys/user.h @@ -1,4 +1,4 @@ -/* 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/alpha/syscall.S b/sysdeps/unix/sysv/linux/alpha/syscall.S index 0e8528e..585e29c 100644 --- a/sysdeps/unix/sysv/linux/alpha/syscall.S +++ b/sysdeps/unix/sysv/linux/alpha/syscall.S @@ -1,4 +1,4 @@ -/* 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/alpha/syscall_cancel.S b/sysdeps/unix/sysv/linux/alpha/syscall_cancel.S new file mode 100644 index 0000000..fad1a29 --- /dev/null +++ b/sysdeps/unix/sysv/linux/alpha/syscall_cancel.S @@ -0,0 +1,80 @@ +/* Cancellable syscall wrapper. Linux/alpha 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 *ch, + __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) */ + + .set noreorder + .set noat + .set nomacro +ENTRY (__syscall_cancel_arch) + .frame sp, 16, ra, 0 + .mask 0x4000000,-16 + cfi_startproc + ldah gp, 0(t12) + lda gp, 0(gp) + lda sp, -16(sp) + cfi_def_cfa_offset (16) + mov a1, v0 + stq ra, 0(sp) + cfi_offset (26, -16) + .prologue 1 + + .global __syscall_cancel_arch_start +__syscall_cancel_arch_start: + ldl t0, 0(a0) + addl zero, t0, t0 + /* if (*ch & CANCELED_BITMASK) */ + and t0, TCB_CANCELED_BITMASK, t0 + bne t0, 1f + mov a2, a0 + mov a3, a1 + mov a4, a2 + ldq a4, 16(sp) + mov a5, a3 + ldq a5, 24(sp) + .set macro + callsys + .set nomacro + + .global __syscall_cancel_arch_end +__syscall_cancel_arch_end: + subq zero, v0, t0 + ldq ra, 0(sp) + cmovne a3, t0, v0 + lda sp, 16(sp) + cfi_remember_state + cfi_restore (26) + cfi_def_cfa_offset (0) + ret zero, (ra), 1 + .align 4 +1: + cfi_restore_state + ldq t12, __syscall_do_cancel(gp) !literal!2 + jsr ra, (t12), __syscall_do_cancel !lituse_jsr!2 + cfi_endproc +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/alpha/sysconf.c b/sysdeps/unix/sysv/linux/alpha/sysconf.c index 1d14e82..916533a 100644 --- a/sysdeps/unix/sysv/linux/alpha/sysconf.c +++ b/sysdeps/unix/sysv/linux/alpha/sysconf.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2024 Free Software Foundation, Inc. +/* Copyright (C) 2004-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/alpha/sysdep.h b/sysdeps/unix/sysv/linux/alpha/sysdep.h index 3c880e0..1f0e249 100644 --- a/sysdeps/unix/sysv/linux/alpha/sysdep.h +++ b/sysdeps/unix/sysv/linux/alpha/sysdep.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1992-2024 Free Software Foundation, Inc. +/* Copyright (C) 1992-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/alpha/termios_arch.h b/sysdeps/unix/sysv/linux/alpha/termios_arch.h new file mode 100644 index 0000000..20025f2 --- /dev/null +++ b/sysdeps/unix/sysv/linux/alpha/termios_arch.h @@ -0,0 +1,26 @@ +/* Architectural parameters for Linux termios - Alpha/PowerPC version + + 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 + 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/>. */ + +#ifndef TERMIOS_INTERNALS_H +# error "<termios_arch.h> should only be included from <termios_internals.h>" +#endif + +#define _TERMIOS2_NCCS 19 +#define _HAVE_TERMIOS2_C_CC_BEFORE_C_LINE 1 +#define _HAVE_STRUCT_OLD_TERMIOS 0 diff --git a/sysdeps/unix/sysv/linux/alpha/timer_t_was_int_compat.h b/sysdeps/unix/sysv/linux/alpha/timer_t_was_int_compat.h index b9dccd7..ebbccc1 100644 --- a/sysdeps/unix/sysv/linux/alpha/timer_t_was_int_compat.h +++ b/sysdeps/unix/sysv/linux/alpha/timer_t_was_int_compat.h @@ -1,5 +1,5 @@ /* timer_t/int compatibility transition. alpha version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/alpha/vfork.S b/sysdeps/unix/sysv/linux/alpha/vfork.S index a66266a..d290423 100644 --- a/sysdeps/unix/sysv/linux/alpha/vfork.S +++ b/sysdeps/unix/sysv/linux/alpha/vfork.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2024 Free Software Foundation, Inc. +/* Copyright (C) 2004-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/alpha/wait4.c b/sysdeps/unix/sysv/linux/alpha/wait4.c index 8fae2c5..a07cc97 100644 --- a/sysdeps/unix/sysv/linux/alpha/wait4.c +++ b/sysdeps/unix/sysv/linux/alpha/wait4.c @@ -1,5 +1,5 @@ /* wait4 -- wait for process to change state. Linux/Alpha version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/alpha/xstat64.c b/sysdeps/unix/sysv/linux/alpha/xstat64.c index b998384..36e8adb 100644 --- a/sysdeps/unix/sysv/linux/alpha/xstat64.c +++ b/sysdeps/unix/sysv/linux/alpha/xstat64.c @@ -1,5 +1,5 @@ /* xstat using old-style Unix stat system call. - Copyright (C) 2004-2024 Free Software Foundation, Inc. + Copyright (C) 2004-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/alpha/xstatconv.c b/sysdeps/unix/sysv/linux/alpha/xstatconv.c index 444ab67..405f1f6 100644 --- a/sysdeps/unix/sysv/linux/alpha/xstatconv.c +++ b/sysdeps/unix/sysv/linux/alpha/xstatconv.c @@ -1,5 +1,5 @@ /* Convert between the kernel's `struct stat' format, and libc's. - 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/alpha/xstatconv.h b/sysdeps/unix/sysv/linux/alpha/xstatconv.h index d54b8f2..3ef0189 100644 --- a/sysdeps/unix/sysv/linux/alpha/xstatconv.h +++ b/sysdeps/unix/sysv/linux/alpha/xstatconv.h @@ -1,5 +1,5 @@ /* Convert between the kernel's `struct stat' format, and libc's. - Copyright (C) 2004-2024 Free Software Foundation, Inc. + Copyright (C) 2004-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/alphasort64.c b/sysdeps/unix/sysv/linux/alphasort64.c index 672268c..8f2812d 100644 --- a/sysdeps/unix/sysv/linux/alphasort64.c +++ b/sysdeps/unix/sysv/linux/alphasort64.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1992-2024 Free Software Foundation, Inc. +/* Copyright (C) 1992-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/arc/Makefile b/sysdeps/unix/sysv/linux/arc/Makefile index eca9a9f..dd3da52 100644 --- a/sysdeps/unix/sysv/linux/arc/Makefile +++ b/sysdeps/unix/sysv/linux/arc/Makefile @@ -11,12 +11,3 @@ ifeq ($(subdir),misc) sysdep_headers += sys/cachectl.h sysdep_routines += cacheflush endif - -abi-variants := arcle arcbe - -ifeq (,$(filter $(default-abi),$(abi-variants))) -$(error Unknown ABI $(default-abi), must be one of $(abi-variants)) -endif - -abi-arcle-condition := !defined __BIG_ENDIAN__ -abi-arcbe-condition := defined __BIG_ENDIAN__ diff --git a/sysdeps/unix/sysv/linux/arc/arch-syscall.h b/sysdeps/unix/sysv/linux/arc/arch-syscall.h index ea581b0..2534f0f 100644 --- a/sysdeps/unix/sysv/linux/arc/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/arc/arch-syscall.h @@ -98,6 +98,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 @@ -128,6 +129,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 @@ -175,6 +177,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 @@ -214,6 +217,7 @@ #define __NR_recvmsg 212 #define __NR_remap_file_pages 234 #define __NR_removexattr 14 +#define __NR_removexattrat 466 #define __NR_renameat 38 #define __NR_renameat2 276 #define __NR_request_key 218 @@ -272,6 +276,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/arc/bits/procfs.h b/sysdeps/unix/sysv/linux/arc/bits/procfs.h index e5a6c37..fe98451 100644 --- a/sysdeps/unix/sysv/linux/arc/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/arc/bits/procfs.h @@ -1,5 +1,5 @@ /* Types for registers for sys/procfs.h. ARC 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/arc/clone.S b/sysdeps/unix/sysv/linux/arc/clone.S index a2b520a..cfdae35 100644 --- a/sysdeps/unix/sysv/linux/arc/clone.S +++ b/sysdeps/unix/sysv/linux/arc/clone.S @@ -1,5 +1,5 @@ /* clone() implementation for ARC. - 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/arc/clone3.S b/sysdeps/unix/sysv/linux/arc/clone3.S index 38a2706..0dc2f9b 100644 --- a/sysdeps/unix/sysv/linux/arc/clone3.S +++ b/sysdeps/unix/sysv/linux/arc/clone3.S @@ -1,5 +1,5 @@ /* The clone3 syscall wrapper. Linux/arc 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/arc/fixup-asm-unistd.h b/sysdeps/unix/sysv/linux/arc/fixup-asm-unistd.h index f388938..e75ef3f 100644 --- a/sysdeps/unix/sysv/linux/arc/fixup-asm-unistd.h +++ b/sysdeps/unix/sysv/linux/arc/fixup-asm-unistd.h @@ -1,5 +1,5 @@ /* Regularize <asm/unistd.h> definitions. ARC version. - Copyright (C) 2020-2024 Free Software Foundation, Inc. + Copyright (C) 2020-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 diff --git a/sysdeps/unix/sysv/linux/arc/getcontext.S b/sysdeps/unix/sysv/linux/arc/getcontext.S index 680e84a..14a60ff 100644 --- a/sysdeps/unix/sysv/linux/arc/getcontext.S +++ b/sysdeps/unix/sysv/linux/arc/getcontext.S @@ -1,5 +1,5 @@ /* Save current context for ARC. - 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/arc/kernel-features.h b/sysdeps/unix/sysv/linux/arc/kernel-features.h index 8ae54ca..e9e1a3d 100644 --- a/sysdeps/unix/sysv/linux/arc/kernel-features.h +++ b/sysdeps/unix/sysv/linux/arc/kernel-features.h @@ -1,7 +1,7 @@ /* Set flags signalling availability of kernel features based on given kernel version number. - 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/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist index 916c18e..b8a4478 100644 --- a/sysdeps/unix/sysv/linux/arc/libc.abilist +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist @@ -2509,3 +2509,22 @@ GLIBC_2.39 stdc_trailing_zeros_ui F 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.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/arc/libc_sigaction.c b/sysdeps/unix/sysv/linux/arc/libc_sigaction.c index 938c7bf..6c20481 100644 --- a/sysdeps/unix/sysv/linux/arc/libc_sigaction.c +++ b/sysdeps/unix/sysv/linux/arc/libc_sigaction.c @@ -1,5 +1,5 @@ /* ARC specific sigaction. - 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/arc/libm.abilist b/sysdeps/unix/sysv/linux/arc/libm.abilist index f6eb7a5..c865ec8 100644 --- a/sysdeps/unix/sysv/linux/arc/libm.abilist +++ b/sysdeps/unix/sysv/linux/arc/libm.abilist @@ -787,3 +787,75 @@ GLIBC_2.40 logp1f32 F GLIBC_2.40 logp1f32x F GLIBC_2.40 logp1f64 F GLIBC_2.40 logp1l F +GLIBC_2.41 acospi F +GLIBC_2.41 acospif F +GLIBC_2.41 acospif32 F +GLIBC_2.41 acospif32x F +GLIBC_2.41 acospif64 F +GLIBC_2.41 acospil F +GLIBC_2.41 asinpi F +GLIBC_2.41 asinpif F +GLIBC_2.41 asinpif32 F +GLIBC_2.41 asinpif32x F +GLIBC_2.41 asinpif64 F +GLIBC_2.41 asinpil F +GLIBC_2.41 atan2pi F +GLIBC_2.41 atan2pif F +GLIBC_2.41 atan2pif32 F +GLIBC_2.41 atan2pif32x F +GLIBC_2.41 atan2pif64 F +GLIBC_2.41 atan2pil F +GLIBC_2.41 atanpi F +GLIBC_2.41 atanpif F +GLIBC_2.41 atanpif32 F +GLIBC_2.41 atanpif32x F +GLIBC_2.41 atanpif64 F +GLIBC_2.41 atanpil F +GLIBC_2.41 cospi F +GLIBC_2.41 cospif F +GLIBC_2.41 cospif32 F +GLIBC_2.41 cospif32x F +GLIBC_2.41 cospif64 F +GLIBC_2.41 cospil F +GLIBC_2.41 sinpi F +GLIBC_2.41 sinpif F +GLIBC_2.41 sinpif32 F +GLIBC_2.41 sinpif32x F +GLIBC_2.41 sinpif64 F +GLIBC_2.41 sinpil F +GLIBC_2.41 tanpi F +GLIBC_2.41 tanpif F +GLIBC_2.41 tanpif32 F +GLIBC_2.41 tanpif32x F +GLIBC_2.41 tanpif64 F +GLIBC_2.41 tanpil F +GLIBC_2.42 compoundn F +GLIBC_2.42 compoundnf F +GLIBC_2.42 compoundnf32 F +GLIBC_2.42 compoundnf32x F +GLIBC_2.42 compoundnf64 F +GLIBC_2.42 compoundnl F +GLIBC_2.42 pown F +GLIBC_2.42 pownf F +GLIBC_2.42 pownf32 F +GLIBC_2.42 pownf32x F +GLIBC_2.42 pownf64 F +GLIBC_2.42 pownl F +GLIBC_2.42 powr F +GLIBC_2.42 powrf F +GLIBC_2.42 powrf32 F +GLIBC_2.42 powrf32x F +GLIBC_2.42 powrf64 F +GLIBC_2.42 powrl F +GLIBC_2.42 rootn F +GLIBC_2.42 rootnf F +GLIBC_2.42 rootnf32 F +GLIBC_2.42 rootnf32x F +GLIBC_2.42 rootnf64 F +GLIBC_2.42 rootnl F +GLIBC_2.42 rsqrt F +GLIBC_2.42 rsqrtf F +GLIBC_2.42 rsqrtf32 F +GLIBC_2.42 rsqrtf32x F +GLIBC_2.42 rsqrtf64 F +GLIBC_2.42 rsqrtl F diff --git a/sysdeps/unix/sysv/linux/arc/makecontext.c b/sysdeps/unix/sysv/linux/arc/makecontext.c index 2ae8c12..a6cabdb 100644 --- a/sysdeps/unix/sysv/linux/arc/makecontext.c +++ b/sysdeps/unix/sysv/linux/arc/makecontext.c @@ -1,5 +1,5 @@ /* Create new context for ARC. - 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/arc/mmap_internal.h b/sysdeps/unix/sysv/linux/arc/mmap_internal.h index 8ddc699..8640014 100644 --- a/sysdeps/unix/sysv/linux/arc/mmap_internal.h +++ b/sysdeps/unix/sysv/linux/arc/mmap_internal.h @@ -1,5 +1,5 @@ /* mmap - map files or devices into memory. Linux/ARC 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/arc/setcontext.S b/sysdeps/unix/sysv/linux/arc/setcontext.S index ce783f7..45d6bb3 100644 --- a/sysdeps/unix/sysv/linux/arc/setcontext.S +++ b/sysdeps/unix/sysv/linux/arc/setcontext.S @@ -1,5 +1,5 @@ /* Set current context for ARC. - 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/arc/shlib-versions b/sysdeps/unix/sysv/linux/arc/shlib-versions index 343c0a0..62c1bd5 100644 --- a/sysdeps/unix/sysv/linux/arc/shlib-versions +++ b/sysdeps/unix/sysv/linux/arc/shlib-versions @@ -1,7 +1,3 @@ DEFAULT GLIBC_2.32 -%ifdef HAVE_ARC_BE -ld=ld-linux-arceb.so.2 -%else ld=ld-linux-arc.so.2 -%endif diff --git a/sysdeps/unix/sysv/linux/arc/sigcontextinfo.h b/sysdeps/unix/sysv/linux/arc/sigcontextinfo.h index fd3a4be..b7a892a 100644 --- a/sysdeps/unix/sysv/linux/arc/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/arc/sigcontextinfo.h @@ -1,5 +1,5 @@ /* ARC definitions for signal handling calling conventions. - 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/arc/sigrestorer.S b/sysdeps/unix/sysv/linux/arc/sigrestorer.S index 154241e..d06234d 100644 --- a/sysdeps/unix/sysv/linux/arc/sigrestorer.S +++ b/sysdeps/unix/sysv/linux/arc/sigrestorer.S @@ -1,5 +1,5 @@ /* Default sigreturn stub for ARC Linux. - 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/arc/swapcontext.S b/sysdeps/unix/sysv/linux/arc/swapcontext.S index abaec4a..31816e4 100644 --- a/sysdeps/unix/sysv/linux/arc/swapcontext.S +++ b/sysdeps/unix/sysv/linux/arc/swapcontext.S @@ -1,5 +1,5 @@ /* Save and set current context for ARC. - 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/arc/sys/cachectl.h b/sysdeps/unix/sysv/linux/arc/sys/cachectl.h index 9c17237..3bce65a 100644 --- a/sysdeps/unix/sysv/linux/arc/sys/cachectl.h +++ b/sysdeps/unix/sysv/linux/arc/sys/cachectl.h @@ -1,5 +1,5 @@ /* cacheflush - flush contents of instruction and/or data cache. - 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/arc/sys/ucontext.h b/sysdeps/unix/sysv/linux/arc/sys/ucontext.h index 5b44ebf..5fa0015 100644 --- a/sysdeps/unix/sysv/linux/arc/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/arc/sys/ucontext.h @@ -1,5 +1,5 @@ /* struct ucontext definition, ARC 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/arc/sys/user.h b/sysdeps/unix/sysv/linux/arc/sys/user.h index bf9a589..7caa0c6 100644 --- a/sysdeps/unix/sysv/linux/arc/sys/user.h +++ b/sysdeps/unix/sysv/linux/arc/sys/user.h @@ -1,5 +1,5 @@ /* ptrace register data format definitions. - 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/arc/syscall.S b/sysdeps/unix/sysv/linux/arc/syscall.S index 1f96853..71177e1 100644 --- a/sysdeps/unix/sysv/linux/arc/syscall.S +++ b/sysdeps/unix/sysv/linux/arc/syscall.S @@ -1,5 +1,5 @@ /* syscall - indirect system call. - 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/arc/syscall_cancel.S b/sysdeps/unix/sysv/linux/arc/syscall_cancel.S new file mode 100644 index 0000000..ccffef3f --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/syscall_cancel.S @@ -0,0 +1,56 @@ +/* Cancellable syscall wrapper. Linux/ARC 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) */ + +ENTRY (__syscall_cancel_arch) + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + ld_s r12,[r0] + bbit1 r12, TCB_CANCELED_BITMASK, 1f + mov_s r8, r1 + mov_s r0, r2 + mov_s r1, r3 + mov_s r2, r4 + mov_s r3, r5 + mov_s r4, r6 + mov_s r5, r7 + trap_s 0 + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + j_s [blink] + + .align 4 +1: push_s blink + cfi_def_cfa_offset (4) + cfi_offset (31, -4) + bl @__syscall_do_cancel + +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/arc/sysdep.c b/sysdeps/unix/sysv/linux/arc/sysdep.c index ede5a16..ed5025c 100644 --- a/sysdeps/unix/sysv/linux/arc/sysdep.c +++ b/sysdeps/unix/sysv/linux/arc/sysdep.c @@ -1,5 +1,5 @@ /* ARC wrapper for setting errno. - 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/arc/sysdep.h b/sysdeps/unix/sysv/linux/arc/sysdep.h index 60d5ef8..06e3140 100644 --- a/sysdeps/unix/sysv/linux/arc/sysdep.h +++ b/sysdeps/unix/sysv/linux/arc/sysdep.h @@ -1,5 +1,5 @@ /* Assembler macros for ARC. - 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/arc/ucontext-macros.h b/sysdeps/unix/sysv/linux/arc/ucontext-macros.h index ab20d85..35caf73 100644 --- a/sysdeps/unix/sysv/linux/arc/ucontext-macros.h +++ b/sysdeps/unix/sysv/linux/arc/ucontext-macros.h @@ -1,5 +1,5 @@ /* Macros for ucontext routines, ARC 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/arc/vfork.S b/sysdeps/unix/sysv/linux/arc/vfork.S index 63eb42b..33498cd 100644 --- a/sysdeps/unix/sysv/linux/arc/vfork.S +++ b/sysdeps/unix/sysv/linux/arc/vfork.S @@ -1,5 +1,5 @@ /* vfork for ARC Linux. - 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/arch-fd_to_filename.h b/sysdeps/unix/sysv/linux/arch-fd_to_filename.h index 8e70b2b..dea487d 100644 --- a/sysdeps/unix/sysv/linux/arch-fd_to_filename.h +++ b/sysdeps/unix/sysv/linux/arch-fd_to_filename.h @@ -1,5 +1,5 @@ /* Query filename corresponding to an open FD. Linux 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/arch-fork.h b/sysdeps/unix/sysv/linux/arch-fork.h index 650f3ec..1886630 100644 --- a/sysdeps/unix/sysv/linux/arch-fork.h +++ b/sysdeps/unix/sysv/linux/arch-fork.h @@ -1,5 +1,5 @@ /* arch_fork definition for Linux fork implementation. - 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/arm/Makefile b/sysdeps/unix/sysv/linux/arm/Makefile index a73c897..e73ce4f 100644 --- a/sysdeps/unix/sysv/linux/arm/Makefile +++ b/sysdeps/unix/sysv/linux/arm/Makefile @@ -1,5 +1,8 @@ ifeq ($(subdir),elf) sysdep-rtld-routines += aeabi_read_tp libc-do-syscall +# The test uses INTERNAL_SYSCALL_CALL. In thumb mode, this uses +# an undefined reference to __libc_do_syscall. +CFLAGS-tst-nolink-libc.c += -marm endif ifeq ($(subdir),misc) diff --git a/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S b/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S index 080c6ae..0af9b2e 100644 --- a/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S +++ b/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S @@ -1,4 +1,4 @@ -/* 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/arm/aeabi_read_tp.S b/sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S index fd31e16..6b1806f 100644 --- a/sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S +++ b/sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S @@ -1,4 +1,4 @@ -/* 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 diff --git a/sysdeps/unix/sysv/linux/arm/arch-syscall.h b/sysdeps/unix/sysv/linux/arm/arch-syscall.h index 2809f52..8e585a4 100644 --- a/sysdeps/unix/sysv/linux/arm/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/arm/arch-syscall.h @@ -132,6 +132,7 @@ #define __NR_getuid 24 #define __NR_getuid32 199 #define __NR_getxattr 229 +#define __NR_getxattrat 464 #define __NR_init_module 128 #define __NR_inotify_add_watch 317 #define __NR_inotify_init 316 @@ -166,6 +167,7 @@ #define __NR_listen 284 #define __NR_listmount 458 #define __NR_listxattr 232 +#define __NR_listxattrat 465 #define __NR_llistxattr 233 #define __NR_lookup_dcookie 249 #define __NR_lremovexattr 236 @@ -221,6 +223,7 @@ #define __NR_open 5 #define __NR_open_by_handle_at 371 #define __NR_open_tree 428 +#define __NR_open_tree_attr 467 #define __NR_openat 322 #define __NR_openat2 437 #define __NR_pause 29 @@ -271,6 +274,7 @@ #define __NR_recvmsg 297 #define __NR_remap_file_pages 253 #define __NR_removexattr 235 +#define __NR_removexattrat 466 #define __NR_rename 38 #define __NR_renameat 329 #define __NR_renameat2 382 @@ -346,6 +350,7 @@ #define __NR_setuid 23 #define __NR_setuid32 213 #define __NR_setxattr 226 +#define __NR_setxattrat 463 #define __NR_shmat 305 #define __NR_shmctl 308 #define __NR_shmdt 306 diff --git a/sysdeps/unix/sysv/linux/arm/arm-features.h b/sysdeps/unix/sysv/linux/arm/arm-features.h index ce69bd1..14a2ca5 100644 --- a/sysdeps/unix/sysv/linux/arm/arm-features.h +++ b/sysdeps/unix/sysv/linux/arm/arm-features.h @@ -1,5 +1,5 @@ /* Macros to test for CPU features on ARM. Linux version. - Copyright (C) 2012-2024 Free Software Foundation, Inc. + Copyright (C) 2012-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/arm/atomic-machine.h b/sysdeps/unix/sysv/linux/arm/atomic-machine.h index 936fd71..1734bcd 100644 --- a/sysdeps/unix/sysv/linux/arm/atomic-machine.h +++ b/sysdeps/unix/sysv/linux/arm/atomic-machine.h @@ -1,5 +1,5 @@ /* Atomic operations. ARM/Linux version. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist index ea95de2..959e446 100644 --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist @@ -2801,6 +2801,25 @@ GLIBC_2.4 xdrstdio_create F GLIBC_2.4 xencrypt F GLIBC_2.4 xprt_register F GLIBC_2.4 xprt_unregister 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 GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/arm/be/libm.abilist b/sysdeps/unix/sysv/linux/arm/be/libm.abilist index 78540e9..63bad09 100644 --- a/sysdeps/unix/sysv/linux/arm/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/arm/be/libm.abilist @@ -878,3 +878,75 @@ GLIBC_2.40 logp1f32 F GLIBC_2.40 logp1f32x F GLIBC_2.40 logp1f64 F GLIBC_2.40 logp1l F +GLIBC_2.41 acospi F +GLIBC_2.41 acospif F +GLIBC_2.41 acospif32 F +GLIBC_2.41 acospif32x F +GLIBC_2.41 acospif64 F +GLIBC_2.41 acospil F +GLIBC_2.41 asinpi F +GLIBC_2.41 asinpif F +GLIBC_2.41 asinpif32 F +GLIBC_2.41 asinpif32x F +GLIBC_2.41 asinpif64 F +GLIBC_2.41 asinpil F +GLIBC_2.41 atan2pi F +GLIBC_2.41 atan2pif F +GLIBC_2.41 atan2pif32 F +GLIBC_2.41 atan2pif32x F +GLIBC_2.41 atan2pif64 F +GLIBC_2.41 atan2pil F +GLIBC_2.41 atanpi F +GLIBC_2.41 atanpif F +GLIBC_2.41 atanpif32 F +GLIBC_2.41 atanpif32x F +GLIBC_2.41 atanpif64 F +GLIBC_2.41 atanpil F +GLIBC_2.41 cospi F +GLIBC_2.41 cospif F +GLIBC_2.41 cospif32 F +GLIBC_2.41 cospif32x F +GLIBC_2.41 cospif64 F +GLIBC_2.41 cospil F +GLIBC_2.41 sinpi F +GLIBC_2.41 sinpif F +GLIBC_2.41 sinpif32 F +GLIBC_2.41 sinpif32x F +GLIBC_2.41 sinpif64 F +GLIBC_2.41 sinpil F +GLIBC_2.41 tanpi F +GLIBC_2.41 tanpif F +GLIBC_2.41 tanpif32 F +GLIBC_2.41 tanpif32x F +GLIBC_2.41 tanpif64 F +GLIBC_2.41 tanpil F +GLIBC_2.42 compoundn F +GLIBC_2.42 compoundnf F +GLIBC_2.42 compoundnf32 F +GLIBC_2.42 compoundnf32x F +GLIBC_2.42 compoundnf64 F +GLIBC_2.42 compoundnl F +GLIBC_2.42 pown F +GLIBC_2.42 pownf F +GLIBC_2.42 pownf32 F +GLIBC_2.42 pownf32x F +GLIBC_2.42 pownf64 F +GLIBC_2.42 pownl F +GLIBC_2.42 powr F +GLIBC_2.42 powrf F +GLIBC_2.42 powrf32 F +GLIBC_2.42 powrf32x F +GLIBC_2.42 powrf64 F +GLIBC_2.42 powrl F +GLIBC_2.42 rootn F +GLIBC_2.42 rootnf F +GLIBC_2.42 rootnf32 F +GLIBC_2.42 rootnf32x F +GLIBC_2.42 rootnf64 F +GLIBC_2.42 rootnl F +GLIBC_2.42 rsqrt F +GLIBC_2.42 rsqrtf F +GLIBC_2.42 rsqrtf32 F +GLIBC_2.42 rsqrtf32x F +GLIBC_2.42 rsqrtf64 F +GLIBC_2.42 rsqrtl F diff --git a/sysdeps/unix/sysv/linux/arm/bits/fcntl.h b/sysdeps/unix/sysv/linux/arm/bits/fcntl.h index 13ae5e8..13d94ba 100644 --- a/sysdeps/unix/sysv/linux/arm/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/arm/bits/fcntl.h @@ -1,5 +1,5 @@ /* O_*, F_*, FD_* bit values for Linux. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/arm/bits/hwcap.h b/sysdeps/unix/sysv/linux/arm/bits/hwcap.h index b104de4..a5106cf 100644 --- a/sysdeps/unix/sysv/linux/arm/bits/hwcap.h +++ b/sysdeps/unix/sysv/linux/arm/bits/hwcap.h @@ -1,5 +1,5 @@ /* Defines for bits in AT_HWCAP. ARM Linux version. - Copyright (C) 2012-2024 Free Software Foundation, Inc. + Copyright (C) 2012-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 @@ -49,3 +49,11 @@ #define HWCAP_ASIMDFHM 33554432 #define HWCAP_ASIMDBF16 67108864 #define HWCAP_I8MM 134217728 + +#define HWCAP2_AES 1 +#define HWCAP2_PMULL 2 +#define HWCAP2_SHA1 4 +#define HWCAP2_SHA2 8 +#define HWCAP2_CRC32 16 +#define HWCAP2_SB 32 +#define HWCAP2_SSBS 64 diff --git a/sysdeps/unix/sysv/linux/arm/bits/procfs-id.h b/sysdeps/unix/sysv/linux/arm/bits/procfs-id.h index fdecf8f..bc2777d 100644 --- a/sysdeps/unix/sysv/linux/arm/bits/procfs-id.h +++ b/sysdeps/unix/sysv/linux/arm/bits/procfs-id.h @@ -1,5 +1,5 @@ /* Types of pr_uid and pr_gid in struct elf_prpsinfo. Arm 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. diff --git a/sysdeps/unix/sysv/linux/arm/bits/procfs.h b/sysdeps/unix/sysv/linux/arm/bits/procfs.h index 52edf75..8427b00 100644 --- a/sysdeps/unix/sysv/linux/arm/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/arm/bits/procfs.h @@ -1,5 +1,5 @@ /* Types for registers for sys/procfs.h. Arm 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/arm/bits/rseq.h b/sysdeps/unix/sysv/linux/arm/bits/rseq.h index 5126278..4a92a19 100644 --- a/sysdeps/unix/sysv/linux/arm/bits/rseq.h +++ b/sysdeps/unix/sysv/linux/arm/bits/rseq.h @@ -1,5 +1,5 @@ /* Restartable Sequences Linux arm architecture header. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + 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 diff --git a/sysdeps/unix/sysv/linux/arm/bits/shmlba.h b/sysdeps/unix/sysv/linux/arm/bits/shmlba.h index c348e97..bdb3637 100644 --- a/sysdeps/unix/sysv/linux/arm/bits/shmlba.h +++ b/sysdeps/unix/sysv/linux/arm/bits/shmlba.h @@ -1,5 +1,5 @@ /* Define SHMLBA. ARM 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/arm/bits/struct_stat.h b/sysdeps/unix/sysv/linux/arm/bits/struct_stat.h index 89534fe..9b37fc9 100644 --- a/sysdeps/unix/sysv/linux/arm/bits/struct_stat.h +++ b/sysdeps/unix/sysv/linux/arm/bits/struct_stat.h @@ -1,5 +1,5 @@ /* Definition for struct stat. Linux/arm 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/arm/bits/timesize.h b/sysdeps/unix/sysv/linux/arm/bits/timesize.h index cbcab7c..52ed28a 100644 --- a/sysdeps/unix/sysv/linux/arm/bits/timesize.h +++ b/sysdeps/unix/sysv/linux/arm/bits/timesize.h @@ -1,5 +1,5 @@ /* Bit size of the time_t type at glibc build time, Linux/ARM. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/arm/bits/typesizes.h b/sysdeps/unix/sysv/linux/arm/bits/typesizes.h index 122813d..e4c7ae1 100644 --- a/sysdeps/unix/sysv/linux/arm/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/arm/bits/typesizes.h @@ -1,5 +1,5 @@ /* bits/typesizes.h -- underlying types for *_t. ARM version. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/arm/clone.S b/sysdeps/unix/sysv/linux/arm/clone.S index 115c532..c798123 100644 --- a/sysdeps/unix/sysv/linux/arm/clone.S +++ b/sysdeps/unix/sysv/linux/arm/clone.S @@ -1,4 +1,4 @@ -/* 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/arm/clone3.S b/sysdeps/unix/sysv/linux/arm/clone3.S index 094efc2..2a03c18 100644 --- a/sysdeps/unix/sysv/linux/arm/clone3.S +++ b/sysdeps/unix/sysv/linux/arm/clone3.S @@ -1,5 +1,5 @@ /* The clone3 syscall wrapper. Linux/arm 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/arm/dl-cache.h b/sysdeps/unix/sysv/linux/arm/dl-cache.h index b157f3a..94d81e2 100644 --- a/sysdeps/unix/sysv/linux/arm/dl-cache.h +++ b/sysdeps/unix/sysv/linux/arm/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/arm/dl-machine.h b/sysdeps/unix/sysv/linux/arm/dl-machine.h index b830ee7..bc81862 100644 --- a/sysdeps/unix/sysv/linux/arm/dl-machine.h +++ b/sysdeps/unix/sysv/linux/arm/dl-machine.h @@ -1,5 +1,5 @@ /* Machine-dependent ELF dynamic relocation inline functions. ARM/Linux version - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/arm/dl-procinfo.c b/sysdeps/unix/sysv/linux/arm/dl-procinfo.c deleted file mode 100644 index ad18a8c..0000000 --- a/sysdeps/unix/sysv/linux/arm/dl-procinfo.c +++ /dev/null @@ -1,66 +0,0 @@ -/* Data for Linux/ARM version of processor capability information. - Copyright (C) 2001-2024 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 - <https://www.gnu.org/licenses/>. */ - -/* This information must be kept in sync with the _DL_HWCAP_COUNT and - _DL_PLATFORM_COUNT definitions in procinfo.h. - - If anything should be added here check whether the size of each string - is still ok with the given array size. - - All the #ifdefs in the definitions are quite irritating but - necessary if we want to avoid duplicating the information. There - are three different modes: - - - PROCINFO_DECL is defined. This means we are only interested in - declarations. - - - PROCINFO_DECL is not defined: - - + if SHARED is defined the file is included in an array - initializer. The .element = { ... } syntax is needed. - - + if SHARED is not defined a normal array initialization is - needed. - */ - -#ifndef PROCINFO_CLASS -#define PROCINFO_CLASS -#endif - -#if !defined PROCINFO_DECL && defined SHARED - ._dl_arm_cap_flags -#else -PROCINFO_CLASS const char _dl_arm_cap_flags[35][10] -#endif -#ifndef PROCINFO_DECL -= { - "swp", "half", "thumb", "26bit", "fastmult", "fpa", "vfp", "edsp", - "java", "iwmmxt", "crunch", "thumbee", "neon", "vfpv3", "vfpv3d16", - "tls", "vfpv4", "idiva", "idivt", "vfpd32", "lpae", "evtstrm", - "fphp", "asimdhp", "asimddp", "asimdfhm", "asimdbf16", "i8mm", - "aes", "pmull", "sha1", "sha2", "crc32", "sb", "ssbs", - } -#endif -#if !defined SHARED || defined PROCINFO_DECL -; -#else -, -#endif - -#undef PROCINFO_DECL -#undef PROCINFO_CLASS diff --git a/sysdeps/unix/sysv/linux/arm/dl-procinfo.h b/sysdeps/unix/sysv/linux/arm/dl-procinfo.h deleted file mode 100644 index 7d26216..0000000 --- a/sysdeps/unix/sysv/linux/arm/dl-procinfo.h +++ /dev/null @@ -1,73 +0,0 @@ -/* Linux/ARM version of processor capability information handling macros. - Copyright (C) 2001-2024 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 - <https://www.gnu.org/licenses/>. */ - -#ifndef _DL_PROCINFO_H -#define _DL_PROCINFO_H 1 - -#include <ldsodefs.h> -#include <sysdep.h> - -#define _DL_HWCAP_COUNT 27 - -/* Low 28 bits are allocated in HWCAP. */ -#define _DL_HWCAP_LAST 27 - -/* Low 7 bits are allocated in HWCAP2. */ -#define _DL_HWCAP2_LAST 6 - - -static inline const char * -__attribute__ ((unused)) -_dl_hwcap_string (int idx) -{ - return GLRO(dl_arm_cap_flags)[idx]; -}; - -static inline int -__attribute__ ((unused)) -_dl_procinfo (unsigned int type, unsigned long int word) -{ - switch(type) - { - case AT_HWCAP: - _dl_printf ("AT_HWCAP: "); - - for (int i = 0; i <= _DL_HWCAP_LAST; ++i) - if (word & (1 << i)) - _dl_printf (" %s", _dl_hwcap_string (i)); - break; - case AT_HWCAP2: - { - unsigned int offset = _DL_HWCAP_LAST + 1; - - _dl_printf ("AT_HWCAP2: "); - - for (int i = 0; i <= _DL_HWCAP2_LAST; ++i) - if (word & (1 << i)) - _dl_printf (" %s", _dl_hwcap_string (offset + i)); - break; - } - default: - /* Fallback to generic output mechanism. */ - return -1; - } - _dl_printf ("\n"); - return 0; -} - -#endif /* dl-procinfo.h */ diff --git a/sysdeps/unix/sysv/linux/arm/fixup-asm-unistd.h b/sysdeps/unix/sysv/linux/arm/fixup-asm-unistd.h index 9ad2c65..eacc7f7 100644 --- a/sysdeps/unix/sysv/linux/arm/fixup-asm-unistd.h +++ b/sysdeps/unix/sysv/linux/arm/fixup-asm-unistd.h @@ -1,5 +1,5 @@ /* Regularize <asm/unistd.h> definitions. Arm version. - Copyright (C) 2020-2024 Free Software Foundation, Inc. + Copyright (C) 2020-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 diff --git a/sysdeps/unix/sysv/linux/arm/getcontext.S b/sysdeps/unix/sysv/linux/arm/getcontext.S index 4dacd93..821e553 100644 --- a/sysdeps/unix/sysv/linux/arm/getcontext.S +++ b/sysdeps/unix/sysv/linux/arm/getcontext.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2024 Free Software Foundation, Inc. +/* Copyright (C) 2012-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/arm/ioperm.c b/sysdeps/unix/sysv/linux/arm/ioperm.c index 987af91..a92365f 100644 --- a/sysdeps/unix/sysv/linux/arm/ioperm.c +++ b/sysdeps/unix/sysv/linux/arm/ioperm.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/arm/kernel-features.h b/sysdeps/unix/sysv/linux/arm/kernel-features.h index f17c2f9..10caae8 100644 --- a/sysdeps/unix/sysv/linux/arm/kernel-features.h +++ b/sysdeps/unix/sysv/linux/arm/kernel-features.h @@ -1,6 +1,6 @@ /* Set flags signalling availability of kernel features based on given kernel version number. - Copyright (C) 2006-2024 Free Software Foundation, Inc. + Copyright (C) 2006-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/arm/ldsodefs.h b/sysdeps/unix/sysv/linux/arm/ldsodefs.h index 67c1e81..2d8c0c4 100644 --- a/sysdeps/unix/sysv/linux/arm/ldsodefs.h +++ b/sysdeps/unix/sysv/linux/arm/ldsodefs.h @@ -1,5 +1,5 @@ /* Run-time dynamic linker data structures for loaded ELF shared objects. - Copyright (C) 2010-2024 Free Software Foundation, Inc. + Copyright (C) 2010-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/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist index 1cdbc98..a930d1a 100644 --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist @@ -2798,6 +2798,25 @@ GLIBC_2.4 xdrstdio_create F GLIBC_2.4 xencrypt F GLIBC_2.4 xprt_register F GLIBC_2.4 xprt_unregister 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 GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/arm/le/libm.abilist b/sysdeps/unix/sysv/linux/arm/le/libm.abilist index 78540e9..63bad09 100644 --- a/sysdeps/unix/sysv/linux/arm/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/arm/le/libm.abilist @@ -878,3 +878,75 @@ GLIBC_2.40 logp1f32 F GLIBC_2.40 logp1f32x F GLIBC_2.40 logp1f64 F GLIBC_2.40 logp1l F +GLIBC_2.41 acospi F +GLIBC_2.41 acospif F +GLIBC_2.41 acospif32 F +GLIBC_2.41 acospif32x F +GLIBC_2.41 acospif64 F +GLIBC_2.41 acospil F +GLIBC_2.41 asinpi F +GLIBC_2.41 asinpif F +GLIBC_2.41 asinpif32 F +GLIBC_2.41 asinpif32x F +GLIBC_2.41 asinpif64 F +GLIBC_2.41 asinpil F +GLIBC_2.41 atan2pi F +GLIBC_2.41 atan2pif F +GLIBC_2.41 atan2pif32 F +GLIBC_2.41 atan2pif32x F +GLIBC_2.41 atan2pif64 F +GLIBC_2.41 atan2pil F +GLIBC_2.41 atanpi F +GLIBC_2.41 atanpif F +GLIBC_2.41 atanpif32 F +GLIBC_2.41 atanpif32x F +GLIBC_2.41 atanpif64 F +GLIBC_2.41 atanpil F +GLIBC_2.41 cospi F +GLIBC_2.41 cospif F +GLIBC_2.41 cospif32 F +GLIBC_2.41 cospif32x F +GLIBC_2.41 cospif64 F +GLIBC_2.41 cospil F +GLIBC_2.41 sinpi F +GLIBC_2.41 sinpif F +GLIBC_2.41 sinpif32 F +GLIBC_2.41 sinpif32x F +GLIBC_2.41 sinpif64 F +GLIBC_2.41 sinpil F +GLIBC_2.41 tanpi F +GLIBC_2.41 tanpif F +GLIBC_2.41 tanpif32 F +GLIBC_2.41 tanpif32x F +GLIBC_2.41 tanpif64 F +GLIBC_2.41 tanpil F +GLIBC_2.42 compoundn F +GLIBC_2.42 compoundnf F +GLIBC_2.42 compoundnf32 F +GLIBC_2.42 compoundnf32x F +GLIBC_2.42 compoundnf64 F +GLIBC_2.42 compoundnl F +GLIBC_2.42 pown F +GLIBC_2.42 pownf F +GLIBC_2.42 pownf32 F +GLIBC_2.42 pownf32x F +GLIBC_2.42 pownf64 F +GLIBC_2.42 pownl F +GLIBC_2.42 powr F +GLIBC_2.42 powrf F +GLIBC_2.42 powrf32 F +GLIBC_2.42 powrf32x F +GLIBC_2.42 powrf64 F +GLIBC_2.42 powrl F +GLIBC_2.42 rootn F +GLIBC_2.42 rootnf F +GLIBC_2.42 rootnf32 F +GLIBC_2.42 rootnf32x F +GLIBC_2.42 rootnf64 F +GLIBC_2.42 rootnl F +GLIBC_2.42 rsqrt F +GLIBC_2.42 rsqrtf F +GLIBC_2.42 rsqrtf32 F +GLIBC_2.42 rsqrtf32x F +GLIBC_2.42 rsqrtf64 F +GLIBC_2.42 rsqrtl F diff --git a/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S b/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S index 1eaff90..033a56b 100644 --- a/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S +++ b/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2010-2024 Free Software Foundation, Inc. +/* Copyright (C) 2010-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/arm/libc_sigaction.c b/sysdeps/unix/sysv/linux/arm/libc_sigaction.c index 9700231..8cd5c98 100644 --- a/sysdeps/unix/sysv/linux/arm/libc_sigaction.c +++ b/sysdeps/unix/sysv/linux/arm/libc_sigaction.c @@ -1,4 +1,4 @@ -/* 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/arm/makecontext.c b/sysdeps/unix/sysv/linux/arm/makecontext.c index 7065c59..68feaec 100644 --- a/sysdeps/unix/sysv/linux/arm/makecontext.c +++ b/sysdeps/unix/sysv/linux/arm/makecontext.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2024 Free Software Foundation, Inc. +/* Copyright (C) 2012-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/arm/profil-counter.h b/sysdeps/unix/sysv/linux/arm/profil-counter.h index ee11a62..b4cbc74 100644 --- a/sysdeps/unix/sysv/linux/arm/profil-counter.h +++ b/sysdeps/unix/sysv/linux/arm/profil-counter.h @@ -1,5 +1,5 @@ /* Low-level statistical profiling support function. Linux/ARM 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/arm/readelflib.c b/sysdeps/unix/sysv/linux/arm/readelflib.c index 28a1e63..edf6984 100644 --- a/sysdeps/unix/sysv/linux/arm/readelflib.c +++ b/sysdeps/unix/sysv/linux/arm/readelflib.c @@ -1,4 +1,4 @@ -/* 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/arm/setcontext.S b/sysdeps/unix/sysv/linux/arm/setcontext.S index 38b9797..4c69a06 100644 --- a/sysdeps/unix/sysv/linux/arm/setcontext.S +++ b/sysdeps/unix/sysv/linux/arm/setcontext.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2024 Free Software Foundation, Inc. +/* Copyright (C) 2012-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/arm/sigcontextinfo.h b/sysdeps/unix/sysv/linux/arm/sigcontextinfo.h index 39419bb..7b316d5 100644 --- a/sysdeps/unix/sysv/linux/arm/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/arm/sigcontextinfo.h @@ -1,4 +1,4 @@ -/* 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/arm/sigrestorer.S b/sysdeps/unix/sysv/linux/arm/sigrestorer.S index 6eacc3f..d1d9fe5 100644 --- a/sysdeps/unix/sysv/linux/arm/sigrestorer.S +++ b/sysdeps/unix/sysv/linux/arm/sigrestorer.S @@ -1,4 +1,4 @@ -/* 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/arm/swapcontext.S b/sysdeps/unix/sysv/linux/arm/swapcontext.S index 407db3c..dfe38d8 100644 --- a/sysdeps/unix/sysv/linux/arm/swapcontext.S +++ b/sysdeps/unix/sysv/linux/arm/swapcontext.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2024 Free Software Foundation, Inc. +/* Copyright (C) 2012-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/arm/sys/elf.h b/sysdeps/unix/sysv/linux/arm/sys/elf.h index 82ec0fe..9acb39e 100644 --- a/sysdeps/unix/sysv/linux/arm/sys/elf.h +++ b/sysdeps/unix/sysv/linux/arm/sys/elf.h @@ -1,4 +1,4 @@ -/* 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/arm/sys/ptrace.h b/sysdeps/unix/sysv/linux/arm/sys/ptrace.h index f74d7cb..476c0ed 100644 --- a/sysdeps/unix/sysv/linux/arm/sys/ptrace.h +++ b/sysdeps/unix/sysv/linux/arm/sys/ptrace.h @@ -1,5 +1,5 @@ /* `ptrace' debugger support interface. Linux/ARM 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. diff --git a/sysdeps/unix/sysv/linux/arm/sys/ucontext.h b/sysdeps/unix/sysv/linux/arm/sys/ucontext.h index 748c864..8201010 100644 --- a/sysdeps/unix/sysv/linux/arm/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/arm/sys/ucontext.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/arm/sys/user.h b/sysdeps/unix/sysv/linux/arm/sys/user.h index 31f37f3..3376f34 100644 --- a/sysdeps/unix/sysv/linux/arm/sys/user.h +++ b/sysdeps/unix/sysv/linux/arm/sys/user.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/arm/syscall.S b/sysdeps/unix/sysv/linux/arm/syscall.S index 799c451..f5a47de 100644 --- a/sysdeps/unix/sysv/linux/arm/syscall.S +++ b/sysdeps/unix/sysv/linux/arm/syscall.S @@ -1,4 +1,4 @@ -/* 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 diff --git a/sysdeps/unix/sysv/linux/arm/syscall_cancel.S b/sysdeps/unix/sysv/linux/arm/syscall_cancel.S new file mode 100644 index 0000000..00167fc --- /dev/null +++ b/sysdeps/unix/sysv/linux/arm/syscall_cancel.S @@ -0,0 +1,78 @@ +/* Cancellable syscall wrapper. Linux/arm 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 [r0] __syscall_cancel_arch (int *cancelhandling [r0], + long int nr [r1], + long int arg1 [r2], + long int arg2 [r3], + long int arg3 [SP], + long int arg4 [SP+4], + long int arg5 [SP+8], + long int arg6 [SP+12]) */ + + .syntax unified + +ENTRY (__syscall_cancel_arch) + .fnstart + mov ip, sp + stmfd sp!, {r4, r5, r6, r7, lr} + .save {r4, r5, r6, r7, lr} + + cfi_adjust_cfa_offset (20) + cfi_rel_offset (r4, 0) + cfi_rel_offset (r5, 4) + cfi_rel_offset (r6, 8) + cfi_rel_offset (r7, 12) + cfi_rel_offset (lr, 16) + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + /* if (*cancelhandling & CANCELED_BITMASK) + __syscall_do_cancel() */ + ldr r0, [r0] + tst r0, #TCB_CANCELED_BITMASK + bne 1f + + /* Issue a 6 argument syscall, the nr [r1] being the syscall + number. */ + mov r7, r1 + mov r0, r2 + mov r1, r3 + ldmfd ip, {r2, r3, r4, r5, r6} + svc 0x0 + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + ldmfd sp!, {r4, r5, r6, r7, lr} + cfi_adjust_cfa_offset (-20) + cfi_restore (r4) + cfi_restore (r5) + cfi_restore (r6) + cfi_restore (r7) + cfi_restore (lr) + BX (lr) + +1: + ldmfd sp!, {r4, r5, r6, r7, lr} + b __syscall_do_cancel + .fnend +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/arm/sysdep.S b/sysdeps/unix/sysv/linux/arm/sysdep.S index bfea480..0467a5e 100644 --- a/sysdeps/unix/sysv/linux/arm/sysdep.S +++ b/sysdeps/unix/sysv/linux/arm/sysdep.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/arm/sysdep.h b/sysdeps/unix/sysv/linux/arm/sysdep.h index 7110e12..6a47706 100644 --- a/sysdeps/unix/sysv/linux/arm/sysdep.h +++ b/sysdeps/unix/sysv/linux/arm/sysdep.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1992-2024 Free Software Foundation, Inc. +/* Copyright (C) 1992-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/arm/tls.h b/sysdeps/unix/sysv/linux/arm/tls.h index 258307a..ea2fb7f 100644 --- a/sysdeps/unix/sysv/linux/arm/tls.h +++ b/sysdeps/unix/sysv/linux/arm/tls.h @@ -1,5 +1,5 @@ /* Definition for thread-local data handling. ARM/Linux 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 diff --git a/sysdeps/unix/sysv/linux/arm/vfork.S b/sysdeps/unix/sysv/linux/arm/vfork.S index 63ca79d..35e10fb 100644 --- a/sysdeps/unix/sysv/linux/arm/vfork.S +++ b/sysdeps/unix/sysv/linux/arm/vfork.S @@ -1,4 +1,4 @@ -/* 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/bind.c b/sysdeps/unix/sysv/linux/bind.c index 630b452..20b17ea 100644 --- a/sysdeps/unix/sysv/linux/bind.c +++ b/sysdeps/unix/sysv/linux/bind.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2015-2024 Free Software Foundation, Inc. +/* Copyright (C) 2015-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/bits/dirent.h b/sysdeps/unix/sysv/linux/bits/dirent.h index 8bf38f8..cd5e93c 100644 --- a/sysdeps/unix/sysv/linux/bits/dirent.h +++ b/sysdeps/unix/sysv/linux/bits/dirent.h @@ -1,4 +1,4 @@ -/* 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/bits/dirent_ext.h b/sysdeps/unix/sysv/linux/bits/dirent_ext.h index c0a9fc2..81c0563 100644 --- a/sysdeps/unix/sysv/linux/bits/dirent_ext.h +++ b/sysdeps/unix/sysv/linux/bits/dirent_ext.h @@ -1,5 +1,5 @@ /* System-specific extensions of <dirent.h>. Linux version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/bits/epoll.h b/sysdeps/unix/sysv/linux/bits/epoll.h index 7a9e6f0..e417cbe 100644 --- a/sysdeps/unix/sysv/linux/bits/epoll.h +++ b/sysdeps/unix/sysv/linux/bits/epoll.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2024 Free Software Foundation, Inc. +/* Copyright (C) 2002-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/bits/errno.h b/sysdeps/unix/sysv/linux/bits/errno.h index 1151786..9564034 100644 --- a/sysdeps/unix/sysv/linux/bits/errno.h +++ b/sysdeps/unix/sysv/linux/bits/errno.h @@ -1,5 +1,5 @@ /* Error constants. Linux specific 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/bits/eventfd.h b/sysdeps/unix/sysv/linux/bits/eventfd.h index cdaf3a3..97a000a 100644 --- a/sysdeps/unix/sysv/linux/bits/eventfd.h +++ b/sysdeps/unix/sysv/linux/bits/eventfd.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/bits/fcntl-linux.h b/sysdeps/unix/sysv/linux/bits/fcntl-linux.h index 61c100d..f425a4b 100644 --- a/sysdeps/unix/sysv/linux/bits/fcntl-linux.h +++ b/sysdeps/unix/sysv/linux/bits/fcntl-linux.h @@ -1,5 +1,5 @@ /* O_*, F_*, FD_* bit values for Linux. - 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 @@ -201,6 +201,7 @@ # define F_GETLEASE 1025 /* Enquire what lease is active. */ # define F_NOTIFY 1026 /* Request notifications on a directory. */ # define F_DUPFD_QUERY 1027 /* Compare two file descriptors for sameness. */ +# define F_CREATED_QUERY 1028 /* Was the file just created? */ # define F_SETPIPE_SZ 1031 /* Set pipe page size array. */ # define F_GETPIPE_SZ 1032 /* Set pipe page size array. */ # define F_ADD_SEALS 1033 /* Add seals to file. */ @@ -378,6 +379,8 @@ struct file_handle identity and may not be usable to open_by_handle_at. */ +# define AT_HANDLE_MNT_ID_UNIQUE 1 /* Return the 64-bit unique mount + ID. */ #endif __BEGIN_DECLS diff --git a/sysdeps/unix/sysv/linux/bits/fcntl.h b/sysdeps/unix/sysv/linux/bits/fcntl.h index 4712bc6..742f558 100644 --- a/sysdeps/unix/sysv/linux/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/bits/fcntl.h @@ -1,5 +1,5 @@ /* O_*, F_*, FD_* bit values for the generic Linux ABI. - 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/bits/in.h b/sysdeps/unix/sysv/linux/bits/in.h index ae0103c..6c7beb8 100644 --- a/sysdeps/unix/sysv/linux/bits/in.h +++ b/sysdeps/unix/sysv/linux/bits/in.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2024 Free Software Foundation, Inc. +/* Copyright (C) 1991-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/bits/inotify.h b/sysdeps/unix/sysv/linux/bits/inotify.h index f4750f7..89e37da 100644 --- a/sysdeps/unix/sysv/linux/bits/inotify.h +++ b/sysdeps/unix/sysv/linux/bits/inotify.h @@ -1,4 +1,4 @@ -/* 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 diff --git a/sysdeps/unix/sysv/linux/bits/ioctl-types.h b/sysdeps/unix/sysv/linux/bits/ioctl-types.h index ca23dc2..e8e5084 100644 --- a/sysdeps/unix/sysv/linux/bits/ioctl-types.h +++ b/sysdeps/unix/sysv/linux/bits/ioctl-types.h @@ -1,5 +1,5 @@ /* Structure types for pre-termios terminal ioctls. Linux 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 @@ -32,17 +32,6 @@ struct winsize unsigned short int ws_ypixel; }; -#define NCC 8 -struct termio - { - unsigned short int c_iflag; /* input mode flags */ - unsigned short int c_oflag; /* output mode flags */ - unsigned short int c_cflag; /* control mode flags */ - unsigned short int c_lflag; /* local mode flags */ - unsigned char c_line; /* line discipline */ - unsigned char c_cc[NCC]; /* control characters */ -}; - /* modem lines */ #define TIOCM_LE 0x001 #define TIOCM_DTR 0x002 diff --git a/sysdeps/unix/sysv/linux/bits/ioctls.h b/sysdeps/unix/sysv/linux/bits/ioctls.h index 2df44f3..1ddcd4f 100644 --- a/sysdeps/unix/sysv/linux/bits/ioctls.h +++ b/sysdeps/unix/sysv/linux/bits/ioctls.h @@ -1,4 +1,4 @@ -/* 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 @@ -22,87 +22,4 @@ /* Use the definitions from the kernel header files. */ #include <asm/ioctls.h> -/* Routing table calls. */ -#define SIOCADDRT 0x890B /* add routing table entry */ -#define SIOCDELRT 0x890C /* delete routing table entry */ -#define SIOCRTMSG 0x890D /* call to routing system */ - -/* Socket configuration controls. */ -#define SIOCGIFNAME 0x8910 /* get iface name */ -#define SIOCSIFLINK 0x8911 /* set iface channel */ -#define SIOCGIFCONF 0x8912 /* get iface list */ -#define SIOCGIFFLAGS 0x8913 /* get flags */ -#define SIOCSIFFLAGS 0x8914 /* set flags */ -#define SIOCGIFADDR 0x8915 /* get PA address */ -#define SIOCSIFADDR 0x8916 /* set PA address */ -#define SIOCGIFDSTADDR 0x8917 /* get remote PA address */ -#define SIOCSIFDSTADDR 0x8918 /* set remote PA address */ -#define SIOCGIFBRDADDR 0x8919 /* get broadcast PA address */ -#define SIOCSIFBRDADDR 0x891a /* set broadcast PA address */ -#define SIOCGIFNETMASK 0x891b /* get network PA mask */ -#define SIOCSIFNETMASK 0x891c /* set network PA mask */ -#define SIOCGIFMETRIC 0x891d /* get metric */ -#define SIOCSIFMETRIC 0x891e /* set metric */ -#define SIOCGIFMEM 0x891f /* get memory address (BSD) */ -#define SIOCSIFMEM 0x8920 /* set memory address (BSD) */ -#define SIOCGIFMTU 0x8921 /* get MTU size */ -#define SIOCSIFMTU 0x8922 /* set MTU size */ -#define SIOCSIFNAME 0x8923 /* set interface name */ -#define SIOCSIFHWADDR 0x8924 /* set hardware address */ -#define SIOCGIFENCAP 0x8925 /* get/set encapsulations */ -#define SIOCSIFENCAP 0x8926 -#define SIOCGIFHWADDR 0x8927 /* Get hardware address */ -#define SIOCGIFSLAVE 0x8929 /* Driver slaving support */ -#define SIOCSIFSLAVE 0x8930 -#define SIOCADDMULTI 0x8931 /* Multicast address lists */ -#define SIOCDELMULTI 0x8932 -#define SIOCGIFINDEX 0x8933 /* name -> if_index mapping */ -#define SIOGIFINDEX SIOCGIFINDEX /* misprint compatibility :-) */ -#define SIOCSIFPFLAGS 0x8934 /* set/get extended flags set */ -#define SIOCGIFPFLAGS 0x8935 -#define SIOCDIFADDR 0x8936 /* delete PA address */ -#define SIOCSIFHWBROADCAST 0x8937 /* set hardware broadcast addr */ -#define SIOCGIFCOUNT 0x8938 /* get number of devices */ - -#define SIOCGIFBR 0x8940 /* Bridging support */ -#define SIOCSIFBR 0x8941 /* Set bridging options */ - -#define SIOCGIFTXQLEN 0x8942 /* Get the tx queue length */ -#define SIOCSIFTXQLEN 0x8943 /* Set the tx queue length */ - - -/* ARP cache control calls. */ - /* 0x8950 - 0x8952 * obsolete calls, don't re-use */ -#define SIOCDARP 0x8953 /* delete ARP table entry */ -#define SIOCGARP 0x8954 /* get ARP table entry */ -#define SIOCSARP 0x8955 /* set ARP table entry */ - -/* RARP cache control calls. */ -#define SIOCDRARP 0x8960 /* delete RARP table entry */ -#define SIOCGRARP 0x8961 /* get RARP table entry */ -#define SIOCSRARP 0x8962 /* set RARP table entry */ - -/* Driver configuration calls */ - -#define SIOCGIFMAP 0x8970 /* Get device parameters */ -#define SIOCSIFMAP 0x8971 /* Set device parameters */ - -/* DLCI configuration calls */ - -#define SIOCADDDLCI 0x8980 /* Create new DLCI device */ -#define SIOCDELDLCI 0x8981 /* Delete DLCI device */ - -/* Device private ioctl calls. */ - -/* These 16 ioctls are available to devices via the do_ioctl() device - vector. Each device should include this file and redefine these - names as their own. Because these are device dependent it is a good - idea _NOT_ to issue them to random objects and hope. */ - -#define SIOCDEVPRIVATE 0x89F0 /* to 89FF */ - -/* - * These 16 ioctl calls are protocol private - */ - -#define SIOCPROTOPRIVATE 0x89E0 /* to 89EF */ +#include <linux/sockios.h> diff --git a/sysdeps/unix/sysv/linux/bits/ipc-perm.h b/sysdeps/unix/sysv/linux/bits/ipc-perm.h index 14adb89..616a680 100644 --- a/sysdeps/unix/sysv/linux/bits/ipc-perm.h +++ b/sysdeps/unix/sysv/linux/bits/ipc-perm.h @@ -1,5 +1,5 @@ /* struct ipc_perm definition. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/bits/local_lim.h b/sysdeps/unix/sysv/linux/bits/local_lim.h index 2c76f73..c0ae97f 100644 --- a/sysdeps/unix/sysv/linux/bits/local_lim.h +++ b/sysdeps/unix/sysv/linux/bits/local_lim.h @@ -1,5 +1,5 @@ /* Minimum guaranteed maximum values for system limits. Linux version. - Copyright (C) 1993-2024 Free Software Foundation, Inc. + Copyright (C) 1993-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/bits/mman-linux.h b/sysdeps/unix/sysv/linux/bits/mman-linux.h index 522333c..fe0496d 100644 --- a/sysdeps/unix/sysv/linux/bits/mman-linux.h +++ b/sysdeps/unix/sysv/linux/bits/mman-linux.h @@ -1,5 +1,5 @@ /* Definitions for POSIX memory map interface. Linux generic 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 @@ -43,6 +43,7 @@ #define MAP_PRIVATE 0x02 /* Changes are private. */ #define MAP_SHARED_VALIDATE 0x03 /* Share changes and validate extension flags. */ +#define MAP_DROPPABLE 0x08 /* Zero memory under memory pressure. */ #define MAP_TYPE 0x0f /* Mask for type of mapping. */ /* Other flags. */ @@ -112,6 +113,8 @@ locked pages too. */ # define MADV_COLLAPSE 25 /* Synchronous hugepage collapse. */ # define MADV_HWPOISON 100 /* Poison a page for testing. */ +# define MADV_GUARD_INSTALL 102 /* Fatal signal on access to range */ +# define MADV_GUARD_REMOVE 103 /* Unguard range */ #endif /* The POSIX people had to invent similar names for the same things. */ diff --git a/sysdeps/unix/sysv/linux/bits/mman-map-flags-generic.h b/sysdeps/unix/sysv/linux/bits/mman-map-flags-generic.h index 97f654a..6199a81 100644 --- a/sysdeps/unix/sysv/linux/bits/mman-map-flags-generic.h +++ b/sysdeps/unix/sysv/linux/bits/mman-map-flags-generic.h @@ -1,5 +1,5 @@ /* Definitions for POSIX memory map interface. Linux/generic 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/bits/mman-shared.h b/sysdeps/unix/sysv/linux/bits/mman-shared.h index d8ed443..0be4b47 100644 --- a/sysdeps/unix/sysv/linux/bits/mman-shared.h +++ b/sysdeps/unix/sysv/linux/bits/mman-shared.h @@ -1,5 +1,5 @@ /* Memory-mapping-related declarations/definitions, not architecture-specific. - 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 @@ -42,11 +42,10 @@ # define MLOCK_ONFAULT 1U # endif -/* Access rights for pkey_alloc. */ -# ifndef PKEY_DISABLE_ACCESS -# define PKEY_DISABLE_ACCESS 0x1 -# define PKEY_DISABLE_WRITE 0x2 -# endif +/* Access restrictions for pkey_alloc. */ +# define PKEY_UNRESTRICTED 0x0 +# define PKEY_DISABLE_ACCESS 0x1 +# define PKEY_DISABLE_WRITE 0x2 __BEGIN_DECLS @@ -56,19 +55,20 @@ int memfd_create (const char *__name, unsigned int __flags) __THROW; /* Lock pages from ADDR (inclusive) to ADDR + LENGTH (exclusive) into memory. FLAGS is a combination of the MLOCK_* flags above. */ -int mlock2 (const void *__addr, size_t __length, unsigned int __flags) __THROW; +int mlock2 (const void *__addr, size_t __length, unsigned int __flags) __THROW + __attr_access_none (1); /* Allocate a new protection key, with the PKEY_DISABLE_* bits - specified in ACCESS_RIGHTS. The protection key mask for the + specified in ACCESS_RESTRICTIONS. The protection key mask for the current thread is updated to match the access privilege for the new key. */ -int pkey_alloc (unsigned int __flags, unsigned int __access_rights) __THROW; +int pkey_alloc (unsigned int __flags, unsigned int __access_restrictions) __THROW; -/* Update the access rights for the current thread for KEY, which must +/* Update the access restrictions for the current thread for KEY, which must have been allocated using pkey_alloc. */ -int pkey_set (int __key, unsigned int __access_rights) __THROW; +int pkey_set (int __key, unsigned int __access_restrictions) __THROW; -/* Return the access rights for the current thread for KEY, which must +/* Return the access restrictions for the current thread for KEY, which must have been allocated using pkey_alloc. */ int pkey_get (int __key) __THROW; diff --git a/sysdeps/unix/sysv/linux/bits/mman.h b/sysdeps/unix/sysv/linux/bits/mman.h index 576be1a..94c8435 100644 --- a/sysdeps/unix/sysv/linux/bits/mman.h +++ b/sysdeps/unix/sysv/linux/bits/mman.h @@ -1,5 +1,5 @@ /* Definitions for POSIX memory map interface. Linux/generic 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/bits/mman_ext.h b/sysdeps/unix/sysv/linux/bits/mman_ext.h index b911266..4a5de8c 100644 --- a/sysdeps/unix/sysv/linux/bits/mman_ext.h +++ b/sysdeps/unix/sysv/linux/bits/mman_ext.h @@ -1,5 +1,5 @@ /* System-specific extensions of <sys/mman.h>, Linux version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/bits/mqueue.h b/sysdeps/unix/sysv/linux/bits/mqueue.h index 3309d71..e36cade 100644 --- a/sysdeps/unix/sysv/linux/bits/mqueue.h +++ b/sysdeps/unix/sysv/linux/bits/mqueue.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2024 Free Software Foundation, Inc. +/* Copyright (C) 2004-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/bits/msq.h b/sysdeps/unix/sysv/linux/bits/msq.h index f3a0c5e..0ac52ac 100644 --- a/sysdeps/unix/sysv/linux/bits/msq.h +++ b/sysdeps/unix/sysv/linux/bits/msq.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/bits/param.h b/sysdeps/unix/sysv/linux/bits/param.h index aa2d721..1fb9c1a 100644 --- a/sysdeps/unix/sysv/linux/bits/param.h +++ b/sysdeps/unix/sysv/linux/bits/param.h @@ -1,5 +1,5 @@ /* Old-style Unix parameters and limits. Linux version. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/bits/poll.h b/sysdeps/unix/sysv/linux/bits/poll.h index 6bac5a4..9e4e8c8 100644 --- a/sysdeps/unix/sysv/linux/bits/poll.h +++ b/sysdeps/unix/sysv/linux/bits/poll.h @@ -1,4 +1,4 @@ -/* 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/bits/posix_opt.h b/sysdeps/unix/sysv/linux/bits/posix_opt.h index a388d59..60ab46a 100644 --- a/sysdeps/unix/sysv/linux/bits/posix_opt.h +++ b/sysdeps/unix/sysv/linux/bits/posix_opt.h @@ -1,5 +1,5 @@ /* Define POSIX options for Linux. - 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/bits/procfs-extra.h b/sysdeps/unix/sysv/linux/bits/procfs-extra.h index bd37f68..94f4297 100644 --- a/sysdeps/unix/sysv/linux/bits/procfs-extra.h +++ b/sysdeps/unix/sysv/linux/bits/procfs-extra.h @@ -1,5 +1,5 @@ /* Extra sys/procfs.h definitions. Generic Linux 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. diff --git a/sysdeps/unix/sysv/linux/bits/procfs-id.h b/sysdeps/unix/sysv/linux/bits/procfs-id.h index b92f7a3..5b6724a 100644 --- a/sysdeps/unix/sysv/linux/bits/procfs-id.h +++ b/sysdeps/unix/sysv/linux/bits/procfs-id.h @@ -1,5 +1,5 @@ /* Types of pr_uid and pr_gid in struct elf_prpsinfo. Generic Linux 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. diff --git a/sysdeps/unix/sysv/linux/bits/procfs-prregset.h b/sysdeps/unix/sysv/linux/bits/procfs-prregset.h index e24601e..467c9dc 100644 --- a/sysdeps/unix/sysv/linux/bits/procfs-prregset.h +++ b/sysdeps/unix/sysv/linux/bits/procfs-prregset.h @@ -1,5 +1,5 @@ /* Types of prgregset_t and prfpregset_t. Generic Linux 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. diff --git a/sysdeps/unix/sysv/linux/bits/pthread_stack_min-dynamic.h b/sysdeps/unix/sysv/linux/bits/pthread_stack_min-dynamic.h index 09e534f..ed7a037 100644 --- a/sysdeps/unix/sysv/linux/bits/pthread_stack_min-dynamic.h +++ b/sysdeps/unix/sysv/linux/bits/pthread_stack_min-dynamic.h @@ -1,5 +1,5 @@ /* Definition of PTHREAD_STACK_MIN, possibly dynamic. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/bits/pthread_stack_min.h b/sysdeps/unix/sysv/linux/bits/pthread_stack_min.h index 8bcfa6a..23a8c7c 100644 --- a/sysdeps/unix/sysv/linux/bits/pthread_stack_min.h +++ b/sysdeps/unix/sysv/linux/bits/pthread_stack_min.h @@ -1,5 +1,5 @@ /* Definition of PTHREAD_STACK_MIN. Linux version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/bits/ptrace-shared.h b/sysdeps/unix/sysv/linux/bits/ptrace-shared.h index 30ba017..9822274 100644 --- a/sysdeps/unix/sysv/linux/bits/ptrace-shared.h +++ b/sysdeps/unix/sysv/linux/bits/ptrace-shared.h @@ -1,6 +1,6 @@ /* `ptrace' debugger support interface. Linux version, not architecture-specific. - 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. diff --git a/sysdeps/unix/sysv/linux/bits/resource.h b/sysdeps/unix/sysv/linux/bits/resource.h index 148b6a9..51c07da 100644 --- a/sysdeps/unix/sysv/linux/bits/resource.h +++ b/sysdeps/unix/sysv/linux/bits/resource.h @@ -1,5 +1,5 @@ /* Bit values & structures for resource limits. Linux version. - Copyright (C) 1994-2024 Free Software Foundation, Inc. + Copyright (C) 1994-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/bits/rseq.h b/sysdeps/unix/sysv/linux/bits/rseq.h index faf5a9c..cd7bf99 100644 --- a/sysdeps/unix/sysv/linux/bits/rseq.h +++ b/sysdeps/unix/sysv/linux/bits/rseq.h @@ -1,5 +1,5 @@ /* Restartable Sequences architecture header. Stub version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + 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 diff --git a/sysdeps/unix/sysv/linux/bits/sched.h b/sysdeps/unix/sysv/linux/bits/sched.h index a53e136..39b0b3d 100644 --- a/sysdeps/unix/sysv/linux/bits/sched.h +++ b/sysdeps/unix/sysv/linux/bits/sched.h @@ -1,6 +1,6 @@ /* Definitions of constants and data structure for POSIX 1003.1b-1993 scheduling interface. - 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 @@ -29,15 +29,61 @@ #define SCHED_FIFO 1 #define SCHED_RR 2 #ifdef __USE_GNU +# define SCHED_NORMAL 0 # define SCHED_BATCH 3 # define SCHED_ISO 4 # define SCHED_IDLE 5 # define SCHED_DEADLINE 6 +# define SCHED_EXT 7 +/* Flags that can be used in policy values. */ # define SCHED_RESET_ON_FORK 0x40000000 -#endif -#ifdef __USE_GNU +/* Flags for the sched_flags field in struct sched_attr. */ +#define SCHED_FLAG_RESET_ON_FORK 0x01 +#define SCHED_FLAG_RECLAIM 0x02 +#define SCHED_FLAG_DL_OVERRUN 0x04 +#define SCHED_FLAG_KEEP_POLICY 0x08 +#define SCHED_FLAG_KEEP_PARAMS 0x10 +#define SCHED_FLAG_UTIL_CLAMP_MIN 0x20 +#define SCHED_FLAG_UTIL_CLAMP_MAX 0x40 + +/* Combinations of sched_flags fields. */ +#define SCHED_FLAG_KEEP_ALL \ + (SCHED_FLAG_KEEP_POLICY | SCHED_FLAG_KEEP_PARAMS) +#define SCHED_FLAG_UTIL_CLAMP \ + (SCHED_FLAG_UTIL_CLAMP_MIN | SCHED_FLAG_UTIL_CLAMP_MAX) + +/* Use "" to work around incorrect macro expansion of the + __has_include argument (GCC PR 80005). */ +# ifdef __has_include +# if __has_include ("linux/sched/types.h") +/* Some older Linux versions defined sched_param in <linux/sched/types.h>. */ +# define sched_param __glibc_mask_sched_param +# include <linux/sched/types.h> +# undef sched_param +# endif +# endif +# ifndef SCHED_ATTR_SIZE_VER0 +# include <linux/types.h> +# define SCHED_ATTR_SIZE_VER0 48 +# define SCHED_ATTR_SIZE_VER1 56 +struct sched_attr +{ + __u32 size; + __u32 sched_policy; + __u64 sched_flags; + __s32 sched_nice; + __u32 sched_priority; + __u64 sched_runtime; + __u64 sched_deadline; + __u64 sched_period; + __u32 sched_util_min; + __u32 sched_util_max; + /* Additional fields may be added at the end. */ +}; +# endif /* !SCHED_ATTR_SIZE_VER0 */ + /* Cloning flags. */ # define CSIGNAL 0x000000ff /* Signal mask to be sent at exit. */ # define CLONE_VM 0x00000100 /* Set if VM shared between processes. */ @@ -97,6 +143,17 @@ extern int getcpu (unsigned int *, unsigned int *) __THROW; /* Switch process to namespace of type NSTYPE indicated by FD. */ extern int setns (int __fd, int __nstype) __THROW; + +/* Apply the scheduling attributes from *ATTR to the process or thread TID. */ +int sched_setattr (pid_t tid, struct sched_attr *attr, unsigned int flags) + __THROW __nonnull ((2)); + +/* Obtain the scheduling attributes of the process or thread TID and + store it in *ATTR. */ +int sched_getattr (pid_t tid, struct sched_attr *attr, unsigned int size, + unsigned int flags) + __THROW __nonnull ((2)); + #endif __END_DECLS diff --git a/sysdeps/unix/sysv/linux/bits/sem.h b/sysdeps/unix/sysv/linux/bits/sem.h index 012ff15..bb92285 100644 --- a/sysdeps/unix/sysv/linux/bits/sem.h +++ b/sysdeps/unix/sysv/linux/bits/sem.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/bits/semaphore.h b/sysdeps/unix/sysv/linux/bits/semaphore.h index 6296ea8..9a57483 100644 --- a/sysdeps/unix/sysv/linux/bits/semaphore.h +++ b/sysdeps/unix/sysv/linux/bits/semaphore.h @@ -1,5 +1,5 @@ /* Generic POSIX semaphore type layout - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/bits/shm.h b/sysdeps/unix/sysv/linux/bits/shm.h index 76144f5..a8f321c 100644 --- a/sysdeps/unix/sysv/linux/bits/shm.h +++ b/sysdeps/unix/sysv/linux/bits/shm.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/bits/shmlba.h b/sysdeps/unix/sysv/linux/bits/shmlba.h index 0606491..f508d32 100644 --- a/sysdeps/unix/sysv/linux/bits/shmlba.h +++ b/sysdeps/unix/sysv/linux/bits/shmlba.h @@ -1,5 +1,5 @@ /* Define SHMLBA. Generic 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/bits/sigaction.h b/sysdeps/unix/sysv/linux/bits/sigaction.h index af9d457..ffa809f 100644 --- a/sysdeps/unix/sysv/linux/bits/sigaction.h +++ b/sysdeps/unix/sysv/linux/bits/sigaction.h @@ -1,5 +1,5 @@ /* The proper definitions for Linux's sigaction. - Copyright (C) 1993-2024 Free Software Foundation, Inc. + Copyright (C) 1993-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/bits/sigcontext.h b/sysdeps/unix/sysv/linux/bits/sigcontext.h index b939bf0..f4abb75 100644 --- a/sysdeps/unix/sysv/linux/bits/sigcontext.h +++ b/sysdeps/unix/sysv/linux/bits/sigcontext.h @@ -1,4 +1,4 @@ -/* 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/bits/sigevent-consts.h b/sysdeps/unix/sysv/linux/bits/sigevent-consts.h index c0cece9..52e715f 100644 --- a/sysdeps/unix/sysv/linux/bits/sigevent-consts.h +++ b/sysdeps/unix/sysv/linux/bits/sigevent-consts.h @@ -1,5 +1,5 @@ /* sigevent constants. Linux 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/bits/siginfo-consts.h b/sysdeps/unix/sysv/linux/bits/siginfo-consts.h index 5265c8d..fd38bb3 100644 --- a/sysdeps/unix/sysv/linux/bits/siginfo-consts.h +++ b/sysdeps/unix/sysv/linux/bits/siginfo-consts.h @@ -1,5 +1,5 @@ /* siginfo constants. Linux 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/bits/signal_ext.h b/sysdeps/unix/sysv/linux/bits/signal_ext.h index 304a7eb..5429ea9 100644 --- a/sysdeps/unix/sysv/linux/bits/signal_ext.h +++ b/sysdeps/unix/sysv/linux/bits/signal_ext.h @@ -1,5 +1,5 @@ /* System-specific extensions of <signal.h>, Linux version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/bits/signalfd.h b/sysdeps/unix/sysv/linux/bits/signalfd.h index 876e09c..2325e77 100644 --- a/sysdeps/unix/sysv/linux/bits/signalfd.h +++ b/sysdeps/unix/sysv/linux/bits/signalfd.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/bits/signum-arch.h b/sysdeps/unix/sysv/linux/bits/signum-arch.h index 4627134..5988b75 100644 --- a/sysdeps/unix/sysv/linux/bits/signum-arch.h +++ b/sysdeps/unix/sysv/linux/bits/signum-arch.h @@ -1,5 +1,5 @@ /* Signal number definitions. Linux version. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/bits/sigstack.h b/sysdeps/unix/sysv/linux/bits/sigstack.h index 3250e10..9563325 100644 --- a/sysdeps/unix/sysv/linux/bits/sigstack.h +++ b/sysdeps/unix/sysv/linux/bits/sigstack.h @@ -1,5 +1,5 @@ /* sigstack, sigaltstack definitions. - Copyright (C) 1998-2024 Free Software Foundation, Inc. + Copyright (C) 1998-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/bits/sigstksz.h b/sysdeps/unix/sysv/linux/bits/sigstksz.h index c82fe3e..9e7fdbb 100644 --- a/sysdeps/unix/sysv/linux/bits/sigstksz.h +++ b/sysdeps/unix/sysv/linux/bits/sigstksz.h @@ -1,5 +1,5 @@ /* Definition of MINSIGSTKSZ and SIGSTKSZ. Linux 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/bits/socket-constants.h b/sysdeps/unix/sysv/linux/bits/socket-constants.h index b2102d3..b12edcb 100644 --- a/sysdeps/unix/sysv/linux/bits/socket-constants.h +++ b/sysdeps/unix/sysv/linux/bits/socket-constants.h @@ -1,5 +1,5 @@ /* Socket constants which vary among Linux architectures. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/bits/socket.h b/sysdeps/unix/sysv/linux/bits/socket.h index 5ab19a8..f6eb297 100644 --- a/sysdeps/unix/sysv/linux/bits/socket.h +++ b/sysdeps/unix/sysv/linux/bits/socket.h @@ -1,5 +1,5 @@ /* System-specific socket constants and types. Linux version. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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 @@ -246,6 +246,8 @@ enum #define MSG_WAITFORONE MSG_WAITFORONE MSG_BATCH = 0x40000, /* sendmmsg: more messages coming. */ #define MSG_BATCH MSG_BATCH + MSG_SOCK_DEVMEM = 0x2000000, /* Receive devmem skbs as cmsg. */ +#define MSG_SOCK_DEVMEM MSG_SOCK_DEVMEM MSG_ZEROCOPY = 0x4000000, /* Use user data in kernel path. */ #define MSG_ZEROCOPY MSG_ZEROCOPY MSG_FASTOPEN = 0x20000000, /* Send data in TCP SYN. */ diff --git a/sysdeps/unix/sysv/linux/bits/socket_type.h b/sysdeps/unix/sysv/linux/bits/socket_type.h index 13aa922..9584e81 100644 --- a/sysdeps/unix/sysv/linux/bits/socket_type.h +++ b/sysdeps/unix/sysv/linux/bits/socket_type.h @@ -1,5 +1,5 @@ /* Define enum __socket_type for generic Linux. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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/bits/spawn_ext.h b/sysdeps/unix/sysv/linux/bits/spawn_ext.h index 667bc0b..997c53a 100644 --- a/sysdeps/unix/sysv/linux/bits/spawn_ext.h +++ b/sysdeps/unix/sysv/linux/bits/spawn_ext.h @@ -1,5 +1,5 @@ /* POSIX spawn extensions. Linux 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/bits/ss_flags.h b/sysdeps/unix/sysv/linux/bits/ss_flags.h index c715148..933e995 100644 --- a/sysdeps/unix/sysv/linux/bits/ss_flags.h +++ b/sysdeps/unix/sysv/linux/bits/ss_flags.h @@ -1,5 +1,5 @@ /* ss_flags values for stack_t. Linux version. - Copyright (C) 1998-2024 Free Software Foundation, Inc. + Copyright (C) 1998-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/bits/stat.h b/sysdeps/unix/sysv/linux/bits/stat.h index fad5f43..e42a305 100644 --- a/sysdeps/unix/sysv/linux/bits/stat.h +++ b/sysdeps/unix/sysv/linux/bits/stat.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1992-2024 Free Software Foundation, Inc. +/* Copyright (C) 1992-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/bits/statfs.h b/sysdeps/unix/sysv/linux/bits/statfs.h index 22780a1..b8578ad 100644 --- a/sysdeps/unix/sysv/linux/bits/statfs.h +++ b/sysdeps/unix/sysv/linux/bits/statfs.h @@ -1,4 +1,4 @@ -/* 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/bits/statvfs.h b/sysdeps/unix/sysv/linux/bits/statvfs.h index 64f0dcb..1aed2f5 100644 --- a/sysdeps/unix/sysv/linux/bits/statvfs.h +++ b/sysdeps/unix/sysv/linux/bits/statvfs.h @@ -1,4 +1,4 @@ -/* 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/bits/statx.h b/sysdeps/unix/sysv/linux/bits/statx.h index 6a25f8f..5d8d156 100644 --- a/sysdeps/unix/sysv/linux/bits/statx.h +++ b/sysdeps/unix/sysv/linux/bits/statx.h @@ -1,5 +1,5 @@ /* statx-related definitions and declarations. Linux 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/bits/stdio_lim.h b/sysdeps/unix/sysv/linux/bits/stdio_lim.h index 46b49fc..d299a9a 100644 --- a/sysdeps/unix/sysv/linux/bits/stdio_lim.h +++ b/sysdeps/unix/sysv/linux/bits/stdio_lim.h @@ -1,5 +1,5 @@ /* System specific stdio.h definitions. Linux 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/bits/struct_stat.h b/sysdeps/unix/sysv/linux/bits/struct_stat.h index 35dec3d..11d1777 100644 --- a/sysdeps/unix/sysv/linux/bits/struct_stat.h +++ b/sysdeps/unix/sysv/linux/bits/struct_stat.h @@ -1,5 +1,5 @@ /* Definition for struct stat. - 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/bits/struct_stat_time64_helper.h b/sysdeps/unix/sysv/linux/bits/struct_stat_time64_helper.h index 9ded57a..4d68131 100644 --- a/sysdeps/unix/sysv/linux/bits/struct_stat_time64_helper.h +++ b/sysdeps/unix/sysv/linux/bits/struct_stat_time64_helper.h @@ -1,5 +1,5 @@ /* Definition for helper to define struct stat with 64-bit time. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/bits/termios-c_cc.h b/sysdeps/unix/sysv/linux/bits/termios-c_cc.h index 5383a65..89a5bda 100644 --- a/sysdeps/unix/sysv/linux/bits/termios-c_cc.h +++ b/sysdeps/unix/sysv/linux/bits/termios-c_cc.h @@ -1,5 +1,5 @@ /* termios c_cc symbolic constant definitions. Linux/generic version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/bits/termios-c_cflag.h b/sysdeps/unix/sysv/linux/bits/termios-c_cflag.h index 7260883..befd25a 100644 --- a/sysdeps/unix/sysv/linux/bits/termios-c_cflag.h +++ b/sysdeps/unix/sysv/linux/bits/termios-c_cflag.h @@ -1,5 +1,5 @@ /* termios control mode definitions. Linux/generic version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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 @@ -34,5 +34,7 @@ #define CLOCAL 0004000 #ifdef __USE_MISC -# define ADDRB 04000000000 +# define ADDRB 04000000000 +# define CMSPAR 010000000000 /* Mark or space (stick) parity. */ +# define CRTSCTS 020000000000 /* Flow control. */ #endif diff --git a/sysdeps/unix/sysv/linux/bits/termios-c_iflag.h b/sysdeps/unix/sysv/linux/bits/termios-c_iflag.h index 57aae5f..ff8289f 100644 --- a/sysdeps/unix/sysv/linux/bits/termios-c_iflag.h +++ b/sysdeps/unix/sysv/linux/bits/termios-c_iflag.h @@ -1,5 +1,5 @@ /* termios input mode definitions. Linux/generic version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/bits/termios-c_lflag.h b/sysdeps/unix/sysv/linux/bits/termios-c_lflag.h index 725af59..f4cd8dd 100644 --- a/sysdeps/unix/sysv/linux/bits/termios-c_lflag.h +++ b/sysdeps/unix/sysv/linux/bits/termios-c_lflag.h @@ -1,5 +1,5 @@ /* termios local mode definitions. Linux/generic version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/bits/termios-c_oflag.h b/sysdeps/unix/sysv/linux/bits/termios-c_oflag.h index 436c9d1..12727f9 100644 --- a/sysdeps/unix/sysv/linux/bits/termios-c_oflag.h +++ b/sysdeps/unix/sysv/linux/bits/termios-c_oflag.h @@ -1,5 +1,5 @@ /* termios output mode definitions. Linux/generic version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/bits/termios-baud.h b/sysdeps/unix/sysv/linux/bits/termios-cbaud.h index e742313..b9aadff 100644 --- a/sysdeps/unix/sysv/linux/bits/termios-baud.h +++ b/sysdeps/unix/sysv/linux/bits/termios-cbaud.h @@ -1,5 +1,5 @@ /* termios baud rate selection definitions. Linux/generic version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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 @@ -17,32 +17,31 @@ <https://www.gnu.org/licenses/>. */ #ifndef _TERMIOS_H -# error "Never include <bits/termios-baud.h> directly; use <termios.h> instead." +# error "Never include <bits/termios-cbaud.h> directly; use <termios.h> instead." #endif #ifdef __USE_MISC # define CBAUD 000000010017 /* Baud speed mask (not in POSIX). */ # define CBAUDEX 000000010000 /* Extra baud speed mask, included in CBAUD. (not in POSIX). */ -# define CIBAUD 002003600000 /* Input baud rate (not used). */ -# define CMSPAR 010000000000 /* Mark or space (stick) parity. */ -# define CRTSCTS 020000000000 /* Flow control. */ +# define CIBAUD 002003600000 /* Input baud rate. */ +# define IBSHIFT 16 #endif /* Extra output baud rates (not in POSIX). */ -#define B57600 0010001 -#define B115200 0010002 -#define B230400 0010003 -#define B460800 0010004 -#define B500000 0010005 -#define B576000 0010006 -#define B921600 0010007 -#define B1000000 0010010 -#define B1152000 0010011 -#define B1500000 0010012 -#define B2000000 0010013 -#define B2500000 0010014 -#define B3000000 0010015 -#define B3500000 0010016 -#define B4000000 0010017 -#define __MAX_BAUD B4000000 +#define __BOTHER 0010000 +#define __B57600 0010001 +#define __B115200 0010002 +#define __B230400 0010003 +#define __B460800 0010004 +#define __B500000 0010005 +#define __B576000 0010006 +#define __B921600 0010007 +#define __B1000000 0010010 +#define __B1152000 0010011 +#define __B1500000 0010012 +#define __B2000000 0010013 +#define __B2500000 0010014 +#define __B3000000 0010015 +#define __B3500000 0010016 +#define __B4000000 0010017 diff --git a/sysdeps/unix/sysv/linux/bits/termios-misc.h b/sysdeps/unix/sysv/linux/bits/termios-misc.h index b009d76..ca6d6f1 100644 --- a/sysdeps/unix/sysv/linux/bits/termios-misc.h +++ b/sysdeps/unix/sysv/linux/bits/termios-misc.h @@ -1,5 +1,5 @@ /* termios baud platform specific definitions. Linux/generic version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/bits/termios-struct.h b/sysdeps/unix/sysv/linux/bits/termios-struct.h index 5397961..0aba1a4 100644 --- a/sysdeps/unix/sysv/linux/bits/termios-struct.h +++ b/sysdeps/unix/sysv/linux/bits/termios-struct.h @@ -1,5 +1,5 @@ /* struct termios definition. Linux/generic version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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 @@ -29,8 +29,15 @@ struct termios tcflag_t c_lflag; /* local mode flags */ cc_t c_line; /* line discipline */ cc_t c_cc[NCCS]; /* control characters */ - speed_t c_ispeed; /* input speed */ - speed_t c_ospeed; /* output speed */ + /* Input and output baud rates. */ + __extension__ union { + speed_t __ispeed; + speed_t c_ispeed; + }; #define _HAVE_STRUCT_TERMIOS_C_ISPEED 1 + __extension__ union { + speed_t __ospeed; + speed_t c_ospeed; + }; #define _HAVE_STRUCT_TERMIOS_C_OSPEED 1 }; diff --git a/sysdeps/unix/sysv/linux/bits/termios-tcflow.h b/sysdeps/unix/sysv/linux/bits/termios-tcflow.h index a3d032b..f465714 100644 --- a/sysdeps/unix/sysv/linux/bits/termios-tcflow.h +++ b/sysdeps/unix/sysv/linux/bits/termios-tcflow.h @@ -1,5 +1,5 @@ /* termios tcflag symbolic constant definitions. Linux/generic version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/bits/termios.h b/sysdeps/unix/sysv/linux/bits/termios.h index f190af7..20746a0 100644 --- a/sysdeps/unix/sysv/linux/bits/termios.h +++ b/sysdeps/unix/sysv/linux/bits/termios.h @@ -1,5 +1,5 @@ /* termios type and macro definitions. Linux version. - Copyright (C) 1993-2024 Free Software Foundation, Inc. + Copyright (C) 1993-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 @@ -24,35 +24,41 @@ typedef unsigned char cc_t; typedef unsigned int speed_t; typedef unsigned int tcflag_t; -#include <bits/termios-struct.h> +#ifdef _TERMIOS_H +# include <bits/termios-struct.h> +#endif + #include <bits/termios-c_cc.h> #include <bits/termios-c_iflag.h> #include <bits/termios-c_oflag.h> /* c_cflag bit meaning */ -#define B0 0000000 /* hang up */ -#define B50 0000001 -#define B75 0000002 -#define B110 0000003 -#define B134 0000004 -#define B150 0000005 -#define B200 0000006 -#define B300 0000007 -#define B600 0000010 -#define B1200 0000011 -#define B1800 0000012 -#define B2400 0000013 -#define B4800 0000014 -#define B9600 0000015 -#define B19200 0000016 -#define B38400 0000017 +#include <bits/termios-c_cflag.h> + #ifdef __USE_MISC -# define EXTA B19200 -# define EXTB B38400 +#define __B0 0000000 /* hang up */ +#define __B50 0000001 +#define __B75 0000002 +#define __B110 0000003 +#define __B134 0000004 +#define __B150 0000005 +#define __B200 0000006 +#define __B300 0000007 +#define __B600 0000010 +#define __B1200 0000011 +#define __B1800 0000012 +#define __B2400 0000013 +#define __B4800 0000014 +#define __B9600 0000015 +#define __B19200 0000016 +#define __B38400 0000017 +#include <bits/termios-cbaud.h> + +# define __EXTA __B19200 +# define __EXTB __B38400 +# define BOTHER __BOTHER #endif -#include <bits/termios-baud.h> -#include <bits/termios-c_cflag.h> #include <bits/termios-c_lflag.h> #ifdef __USE_MISC @@ -74,3 +80,5 @@ typedef unsigned int tcflag_t; #include <bits/termios-tcflow.h> #include <bits/termios-misc.h> + +#include <bits/termios-baud.h> diff --git a/sysdeps/unix/sysv/linux/bits/time.h b/sysdeps/unix/sysv/linux/bits/time.h index cab4057..9f311d7 100644 --- a/sysdeps/unix/sysv/linux/bits/time.h +++ b/sysdeps/unix/sysv/linux/bits/time.h @@ -1,5 +1,5 @@ /* System-dependent timing definitions. Linux 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/bits/timerfd.h b/sysdeps/unix/sysv/linux/bits/timerfd.h index d34fdf3..acee347 100644 --- a/sysdeps/unix/sysv/linux/bits/timerfd.h +++ b/sysdeps/unix/sysv/linux/bits/timerfd.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/bits/timex.h b/sysdeps/unix/sysv/linux/bits/timex.h index 03ccde6..56ba6c2 100644 --- a/sysdeps/unix/sysv/linux/bits/timex.h +++ b/sysdeps/unix/sysv/linux/bits/timex.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/bits/types/stack_t.h b/sysdeps/unix/sysv/linux/bits/types/stack_t.h index 82cd81a..2bc894e 100644 --- a/sysdeps/unix/sysv/linux/bits/types/stack_t.h +++ b/sysdeps/unix/sysv/linux/bits/types/stack_t.h @@ -1,5 +1,5 @@ /* Define stack_t. Linux version. - Copyright (C) 1998-2024 Free Software Foundation, Inc. + Copyright (C) 1998-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/bits/types/struct_msqid64_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_msqid64_ds.h index 67708df..c2cb3e5 100644 --- a/sysdeps/unix/sysv/linux/bits/types/struct_msqid64_ds.h +++ b/sysdeps/unix/sysv/linux/bits/types/struct_msqid64_ds.h @@ -1,5 +1,5 @@ /* Generic implementation of the SysV message struct msqid64_ds. - 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/bits/types/struct_msqid64_ds_helper.h b/sysdeps/unix/sysv/linux/bits/types/struct_msqid64_ds_helper.h index f315448..03e7465 100644 --- a/sysdeps/unix/sysv/linux/bits/types/struct_msqid64_ds_helper.h +++ b/sysdeps/unix/sysv/linux/bits/types/struct_msqid64_ds_helper.h @@ -1,5 +1,5 @@ /* Common definitions for struct msqid_ds with 64-bit time. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_msqid_ds.h index 86296ca..1e3a0a7 100644 --- a/sysdeps/unix/sysv/linux/bits/types/struct_msqid_ds.h +++ b/sysdeps/unix/sysv/linux/bits/types/struct_msqid_ds.h @@ -1,5 +1,5 @@ /* Generic implementation of the SysV message struct msqid_ds. - 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/bits/types/struct_semid64_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_semid64_ds.h index 87cbe64..2fc51a0 100644 --- a/sysdeps/unix/sysv/linux/bits/types/struct_semid64_ds.h +++ b/sysdeps/unix/sysv/linux/bits/types/struct_semid64_ds.h @@ -1,5 +1,5 @@ /* Generic implementation of the semaphore struct semid64_ds. - 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/bits/types/struct_semid64_ds_helper.h b/sysdeps/unix/sysv/linux/bits/types/struct_semid64_ds_helper.h index 04717df..193a5b9 100644 --- a/sysdeps/unix/sysv/linux/bits/types/struct_semid64_ds_helper.h +++ b/sysdeps/unix/sysv/linux/bits/types/struct_semid64_ds_helper.h @@ -1,5 +1,5 @@ /* Common definitions for struct semid_ds with 64-bit time. - 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/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h index 2ac89b3..3e070c1 100644 --- a/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h +++ b/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h @@ -1,5 +1,5 @@ /* Generic implementation of the semaphore struct semid_ds. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/bits/types/struct_shmid64_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_shmid64_ds.h index f94e947..a6fff3e 100644 --- a/sysdeps/unix/sysv/linux/bits/types/struct_shmid64_ds.h +++ b/sysdeps/unix/sysv/linux/bits/types/struct_shmid64_ds.h @@ -1,5 +1,5 @@ /* Generic implementation of the shared memory struct shmid_ds. - 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/bits/types/struct_shmid64_ds_helper.h b/sysdeps/unix/sysv/linux/bits/types/struct_shmid64_ds_helper.h index 48b77ec..fb9ca04 100644 --- a/sysdeps/unix/sysv/linux/bits/types/struct_shmid64_ds_helper.h +++ b/sysdeps/unix/sysv/linux/bits/types/struct_shmid64_ds_helper.h @@ -1,5 +1,5 @@ /* Common definitions for struct semid_ds with 64-bit time. - 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/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h index 1012ed0..12cb89a 100644 --- a/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h +++ b/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h @@ -1,5 +1,5 @@ /* Generic implementation of the shared memory struct shmid_ds. - 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/bits/typesizes.h b/sysdeps/unix/sysv/linux/bits/typesizes.h index 87734ee..40c7dd3 100644 --- a/sysdeps/unix/sysv/linux/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/bits/typesizes.h @@ -1,5 +1,5 @@ /* bits/typesizes.h -- underlying types for *_t. For the generic Linux ABI. - 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/bits/uio-ext.h b/sysdeps/unix/sysv/linux/bits/uio-ext.h index ead7a09..040cb8d 100644 --- a/sysdeps/unix/sysv/linux/bits/uio-ext.h +++ b/sysdeps/unix/sysv/linux/bits/uio-ext.h @@ -1,5 +1,5 @@ /* Operating system-specific extensions to sys/uio.h - Linux 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 @@ -48,6 +48,8 @@ extern ssize_t process_vm_writev (pid_t __pid, const struct iovec *__lvec, #define RWF_NOWAIT 0x00000008 /* per-IO nonblocking mode. */ #define RWF_APPEND 0x00000010 /* per-IO O_APPEND. */ #define RWF_NOAPPEND 0x00000020 /* per-IO negation of O_APPEND */ +#define RWF_ATOMIC 0x00000040 /* Write is to be issued with torn-write + prevention. */ __END_DECLS diff --git a/sysdeps/unix/sysv/linux/bits/uio_lim.h b/sysdeps/unix/sysv/linux/bits/uio_lim.h index d8a5741..2cf9be8 100644 --- a/sysdeps/unix/sysv/linux/bits/uio_lim.h +++ b/sysdeps/unix/sysv/linux/bits/uio_lim.h @@ -1,5 +1,5 @@ /* Implementation limits related to sys/uio.h - Linux version. - 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/bits/unistd_ext.h b/sysdeps/unix/sysv/linux/bits/unistd_ext.h index 2ce1d45..86bb4e7 100644 --- a/sysdeps/unix/sysv/linux/bits/unistd_ext.h +++ b/sysdeps/unix/sysv/linux/bits/unistd_ext.h @@ -1,5 +1,5 @@ /* System-specific extensions of <unistd.h>, Linux version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/bits/utsname.h b/sysdeps/unix/sysv/linux/bits/utsname.h index aa8e219..3f6fe95 100644 --- a/sysdeps/unix/sysv/linux/bits/utsname.h +++ b/sysdeps/unix/sysv/linux/bits/utsname.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/bits/waitflags.h b/sysdeps/unix/sysv/linux/bits/waitflags.h index 87dc43e..acaab1a 100644 --- a/sysdeps/unix/sysv/linux/bits/waitflags.h +++ b/sysdeps/unix/sysv/linux/bits/waitflags.h @@ -1,5 +1,5 @@ /* Definitions of flag bits for `waitpid' et al. - Copyright (C) 1992-2024 Free Software Foundation, Inc. + Copyright (C) 1992-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/brk.c b/sysdeps/unix/sysv/linux/brk.c index a0be43e..d788a68 100644 --- a/sysdeps/unix/sysv/linux/brk.c +++ b/sysdeps/unix/sysv/linux/brk.c @@ -1,5 +1,5 @@ /* Change data segment. Linux generic 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 @@ -22,7 +22,7 @@ #include <brk_call.h> /* This must be initialized data because commons can't have aliases. */ -void *__curbrk = 0; +void *__curbrk = NULL; #if HAVE_INTERNAL_BRK_ADDR_SYMBOL /* Old braindamage in GCC's crtstuff.c requires this symbol in an attempt diff --git a/sysdeps/unix/sysv/linux/brk_call.h b/sysdeps/unix/sysv/linux/brk_call.h index 1353042..c906ab4 100644 --- a/sysdeps/unix/sysv/linux/brk_call.h +++ b/sysdeps/unix/sysv/linux/brk_call.h @@ -1,5 +1,5 @@ /* Invoke the brk system call. Generic Linux version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/cfsetspeed.c b/sysdeps/unix/sysv/linux/cfsetspeed.c new file mode 100644 index 0000000..8ce46f8 --- /dev/null +++ b/sysdeps/unix/sysv/linux/cfsetspeed.c @@ -0,0 +1,59 @@ +/* cfsetspeed(), Linux version. + Copyright (C) 1991-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 + <https://www.gnu.org/licenses/>. */ + +#include <termios_internals.h> + +/* Set both the input and output baud rates stored in *TERMIOS_P to SPEED. */ +int +__cfsetspeed (struct termios *termios_p, speed_t speed) +{ + tcflag_t cbaud = ___speed_to_cbaud (speed); + + termios_p->c_ospeed = speed; + termios_p->c_ispeed = speed; + termios_p->c_cflag &= ~(CBAUD | CIBAUD); + termios_p->c_cflag |= cbaud | (cbaud << IBSHIFT); + + return 0; +} +libc_hidden_def (__cfsetspeed) +versioned_symbol (libc, __cfsetspeed, cfsetspeed, GLIBC_2_42); + +#if _TERMIOS_OLD_COMPAT + +int +attribute_compat_text_section +__old_cfsetspeed (old_termios_t *termios_p, speed_t speed) +{ + speed_t real_speed = ___cbaud_to_speed (speed, -1); + if (real_speed == (speed_t)-1) + return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL); + +#if !_HAVE_STRUCT_OLD_TERMIOS + /* Otherwise these fields don't exist in old_termios_t */ + termios_p->c_ospeed = real_speed; + termios_p->c_ispeed = real_speed; +#endif + termios_p->c_cflag &= ~(CBAUD | CIBAUD); + termios_p->c_cflag |= speed | (speed << IBSHIFT); + + return 0; +} +compat_symbol (libc, __old_cfsetspeed, cfsetspeed, GLIBC_2_0); + +#endif /* _TERMIOS_OLD_COMPAT */ diff --git a/sysdeps/unix/sysv/linux/check_native.c b/sysdeps/unix/sysv/linux/check_native.c index 94e676d..b8042da 100644 --- a/sysdeps/unix/sysv/linux/check_native.c +++ b/sysdeps/unix/sysv/linux/check_native.c @@ -1,5 +1,5 @@ /* Determine whether interfaces use native transport. Linux version. - Copyright (C) 2007-2024 Free Software Foundation, Inc. + Copyright (C) 2007-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/check_pf.c b/sysdeps/unix/sysv/linux/check_pf.c index 5d9240e..c3532b6 100644 --- a/sysdeps/unix/sysv/linux/check_pf.c +++ b/sysdeps/unix/sysv/linux/check_pf.c @@ -1,5 +1,5 @@ /* Determine protocol families for which interfaces exist. Linux version. - 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/chmod.c b/sysdeps/unix/sysv/linux/chmod.c index 2743fb5..b15fd3e 100644 --- a/sysdeps/unix/sysv/linux/chmod.c +++ b/sysdeps/unix/sysv/linux/chmod.c @@ -1,5 +1,5 @@ /* Change permissions of a file. Linux version. - 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/chown.c b/sysdeps/unix/sysv/linux/chown.c index f1c7b8a..bac53aa 100644 --- a/sysdeps/unix/sysv/linux/chown.c +++ b/sysdeps/unix/sysv/linux/chown.c @@ -1,5 +1,5 @@ /* Change ownership of a file. Linux version. - 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/clock.c b/sysdeps/unix/sysv/linux/clock.c index b0b42a3..e68fafa 100644 --- a/sysdeps/unix/sysv/linux/clock.c +++ b/sysdeps/unix/sysv/linux/clock.c @@ -1,5 +1,5 @@ /* Return the time used by the program so far (user time + system time). - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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/clock_adjtime.c b/sysdeps/unix/sysv/linux/clock_adjtime.c index 8c8d2aa..5a55e97 100644 --- a/sysdeps/unix/sysv/linux/clock_adjtime.c +++ b/sysdeps/unix/sysv/linux/clock_adjtime.c @@ -1,5 +1,5 @@ /* clock_adjtime -- tune kernel clock. - 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/clock_getcpuclockid.c b/sysdeps/unix/sysv/linux/clock_getcpuclockid.c index 736ffcc..d061c9a 100644 --- a/sysdeps/unix/sysv/linux/clock_getcpuclockid.c +++ b/sysdeps/unix/sysv/linux/clock_getcpuclockid.c @@ -1,5 +1,5 @@ /* clock_getcpuclockid -- Get a clockid_t for process CPU time. Linux version. - Copyright (C) 2004-2024 Free Software Foundation, Inc. + Copyright (C) 2004-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/clock_getres.c b/sysdeps/unix/sysv/linux/clock_getres.c index 89119ed..54b60b9 100644 --- a/sysdeps/unix/sysv/linux/clock_getres.c +++ b/sysdeps/unix/sysv/linux/clock_getres.c @@ -1,5 +1,5 @@ /* clock_getres -- Get the resolution of a POSIX clockid_t. Linux version. - 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/clock_gettime.c b/sysdeps/unix/sysv/linux/clock_gettime.c index f10a289..e5ae1d9 100644 --- a/sysdeps/unix/sysv/linux/clock_gettime.c +++ b/sysdeps/unix/sysv/linux/clock_gettime.c @@ -1,5 +1,5 @@ /* clock_gettime -- Get current time from a POSIX clockid_t. Linux version. - 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/clock_nanosleep.c b/sysdeps/unix/sysv/linux/clock_nanosleep.c index 7f9d4e1..6b7f9d3 100644 --- a/sysdeps/unix/sysv/linux/clock_nanosleep.c +++ b/sysdeps/unix/sysv/linux/clock_nanosleep.c @@ -1,4 +1,4 @@ -/* 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/clock_settime.c b/sysdeps/unix/sysv/linux/clock_settime.c index f1f4f36..21f1e0c 100644 --- a/sysdeps/unix/sysv/linux/clock_settime.c +++ b/sysdeps/unix/sysv/linux/clock_settime.c @@ -1,4 +1,4 @@ -/* 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/clone-internal.c b/sysdeps/unix/sysv/linux/clone-internal.c index 40ef303..9a1f27d0 100644 --- a/sysdeps/unix/sysv/linux/clone-internal.c +++ b/sysdeps/unix/sysv/linux/clone-internal.c @@ -1,5 +1,5 @@ /* The internal wrapper of clone and clone3. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/clone-pidfd-support.c b/sysdeps/unix/sysv/linux/clone-pidfd-support.c index 0ca1958..6d52741 100644 --- a/sysdeps/unix/sysv/linux/clone-pidfd-support.c +++ b/sysdeps/unix/sysv/linux/clone-pidfd-support.c @@ -1,5 +1,5 @@ /* Check if kernel supports PID file descriptors. - 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/clone3.h b/sysdeps/unix/sysv/linux/clone3.h index deff63d..847ca96 100644 --- a/sysdeps/unix/sysv/linux/clone3.h +++ b/sysdeps/unix/sysv/linux/clone3.h @@ -1,5 +1,5 @@ /* The clone3 kernel interface definitions. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/close.c b/sysdeps/unix/sysv/linux/close.c index 00a0aba..85456e4 100644 --- a/sysdeps/unix/sysv/linux/close.c +++ b/sysdeps/unix/sysv/linux/close.c @@ -1,5 +1,5 @@ /* Linux close syscall implementation. - 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/close_nocancel.c b/sysdeps/unix/sysv/linux/close_nocancel.c index 509cc89..c6aff60 100644 --- a/sysdeps/unix/sysv/linux/close_nocancel.c +++ b/sysdeps/unix/sysv/linux/close_nocancel.c @@ -1,5 +1,5 @@ /* Linux close syscall implementation -- non-cancellable. - 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/nios2/cacheflush.c b/sysdeps/unix/sysv/linux/close_nocancel_nostatus.c index 9c426aa..b1df5ed 100644 --- a/sysdeps/unix/sysv/linux/nios2/cacheflush.c +++ b/sysdeps/unix/sysv/linux/close_nocancel_nostatus.c @@ -1,5 +1,5 @@ -/* cacheflush system call for Nios II Linux. - Copyright (C) 2015-2024 Free Software Foundation, Inc. +/* Linux close syscall implementation -- non-cancellable, no errno update. + Copyright (C) 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 @@ -13,17 +13,16 @@ 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 + License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -#include <sysdep.h> -#include <stddef.h> #include <unistd.h> +#include <sysdep-cancel.h> +#include <not-cancel.h> -/* Flush cache(s). */ -int -_flush_cache (char *addr, const int nbytes, const int op) +void +__close_nocancel_nostatus (int fd) { - return INLINE_SYSCALL (cacheflush, 3, addr, nbytes, op); + INTERNAL_SYSCALL_CALL (close, fd); } -weak_alias (_flush_cache, cacheflush) +libc_hidden_def (__close_nocancel_nostatus) diff --git a/sysdeps/unix/sysv/linux/closedir.c b/sysdeps/unix/sysv/linux/closedir.c index b86f79f..36f1968 100644 --- a/sysdeps/unix/sysv/linux/closedir.c +++ b/sysdeps/unix/sysv/linux/closedir.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2024 Free Software Foundation, Inc. +/* Copyright (C) 1991-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/closefrom_fallback.c b/sysdeps/unix/sysv/linux/closefrom_fallback.c index 3ac22d1..b34f823 100644 --- a/sysdeps/unix/sysv/linux/closefrom_fallback.c +++ b/sysdeps/unix/sysv/linux/closefrom_fallback.c @@ -1,5 +1,5 @@ /* Close a range of file descriptors. Linux version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/cmsg_nxthdr.c b/sysdeps/unix/sysv/linux/cmsg_nxthdr.c index 9619937..0e602a1 100644 --- a/sysdeps/unix/sysv/linux/cmsg_nxthdr.c +++ b/sysdeps/unix/sysv/linux/cmsg_nxthdr.c @@ -1,5 +1,5 @@ /* Return point to next ancillary data entry in message header. - 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/cnd_timedwait.c b/sysdeps/unix/sysv/linux/cnd_timedwait.c index 1b5ca5c..04c9ef5 100644 --- a/sysdeps/unix/sysv/linux/cnd_timedwait.c +++ b/sysdeps/unix/sysv/linux/cnd_timedwait.c @@ -1,5 +1,5 @@ /* C11 threads conditional timed wait implementation - Linux variant. - 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/connect.c b/sysdeps/unix/sysv/linux/connect.c index 109cfc4..d60dc2e 100644 --- a/sysdeps/unix/sysv/linux/connect.c +++ b/sysdeps/unix/sysv/linux/connect.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2015-2024 Free Software Foundation, Inc. +/* Copyright (C) 2015-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/convert_scm_timestamps.c b/sysdeps/unix/sysv/linux/convert_scm_timestamps.c index 3720bd9..c87febc 100644 --- a/sysdeps/unix/sysv/linux/convert_scm_timestamps.c +++ b/sysdeps/unix/sysv/linux/convert_scm_timestamps.c @@ -1,5 +1,5 @@ /* Socket timestamp conversion routines. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/copy_file_range.c b/sysdeps/unix/sysv/linux/copy_file_range.c index ac32e7e..4bb27a5 100644 --- a/sysdeps/unix/sysv/linux/copy_file_range.c +++ b/sysdeps/unix/sysv/linux/copy_file_range.c @@ -1,5 +1,5 @@ /* Linux implementation of copy_file_range. - 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/creat.c b/sysdeps/unix/sysv/linux/creat.c index 6357617..4b12087 100644 --- a/sysdeps/unix/sysv/linux/creat.c +++ b/sysdeps/unix/sysv/linux/creat.c @@ -1,5 +1,5 @@ /* Linux default implementation for creat. - 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/creat64.c b/sysdeps/unix/sysv/linux/creat64.c index 2f65ec3..e3d6ed8 100644 --- a/sysdeps/unix/sysv/linux/creat64.c +++ b/sysdeps/unix/sysv/linux/creat64.c @@ -1,5 +1,5 @@ /* Linux default implementation for LFS creat. - 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/csky/abiv2/____longjmp_chk.S b/sysdeps/unix/sysv/linux/csky/abiv2/____longjmp_chk.S index 17c35f5..739353e 100644 --- a/sysdeps/unix/sysv/linux/csky/abiv2/____longjmp_chk.S +++ b/sysdeps/unix/sysv/linux/csky/abiv2/____longjmp_chk.S @@ -1,5 +1,5 @@ /* longjmp with sp check for C-SKY ABIV2. - 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/csky/abiv2/clone.S b/sysdeps/unix/sysv/linux/csky/abiv2/clone.S index 1675107..dc36f07 100644 --- a/sysdeps/unix/sysv/linux/csky/abiv2/clone.S +++ b/sysdeps/unix/sysv/linux/csky/abiv2/clone.S @@ -1,5 +1,5 @@ /* Wrapper around clone system call. C-SKY ABIV2 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/csky/abiv2/getcontext.S b/sysdeps/unix/sysv/linux/csky/abiv2/getcontext.S index 12ca945..9aa5be1 100644 --- a/sysdeps/unix/sysv/linux/csky/abiv2/getcontext.S +++ b/sysdeps/unix/sysv/linux/csky/abiv2/getcontext.S @@ -1,5 +1,5 @@ /* Save current context. C-SKY ABIV2 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/csky/abiv2/setcontext.S b/sysdeps/unix/sysv/linux/csky/abiv2/setcontext.S index 588e4b4..41c2fa0 100644 --- a/sysdeps/unix/sysv/linux/csky/abiv2/setcontext.S +++ b/sysdeps/unix/sysv/linux/csky/abiv2/setcontext.S @@ -1,5 +1,5 @@ /* Set saved user context to current context. C-SKY ABIV2 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/csky/abiv2/swapcontext.S b/sysdeps/unix/sysv/linux/csky/abiv2/swapcontext.S index 59a89d7..5dde2fd 100644 --- a/sysdeps/unix/sysv/linux/csky/abiv2/swapcontext.S +++ b/sysdeps/unix/sysv/linux/csky/abiv2/swapcontext.S @@ -1,5 +1,5 @@ /* Save and set current context. C-SKY ABIV2 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/csky/abiv2/syscall.S b/sysdeps/unix/sysv/linux/csky/abiv2/syscall.S index 17c4fee..19e7923 100644 --- a/sysdeps/unix/sysv/linux/csky/abiv2/syscall.S +++ b/sysdeps/unix/sysv/linux/csky/abiv2/syscall.S @@ -1,5 +1,5 @@ /* System call interface. C-SKY ABIV2 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/csky/abiv2/sysdep.S b/sysdeps/unix/sysv/linux/csky/abiv2/sysdep.S index 5354d77..46b2b47 100644 --- a/sysdeps/unix/sysv/linux/csky/abiv2/sysdep.S +++ b/sysdeps/unix/sysv/linux/csky/abiv2/sysdep.S @@ -1,5 +1,5 @@ /* syscall error handlers. C-SKY ABIV2 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/csky/arch-syscall.h b/sysdeps/unix/sysv/linux/csky/arch-syscall.h index ede3551..73fdba1 100644 --- a/sysdeps/unix/sysv/linux/csky/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/csky/arch-syscall.h @@ -103,6 +103,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 @@ -133,6 +134,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 @@ -182,6 +184,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 @@ -224,6 +227,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 @@ -285,6 +289,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/csky/bits/procfs.h b/sysdeps/unix/sysv/linux/csky/bits/procfs.h index 808daaa..de50492 100644 --- a/sysdeps/unix/sysv/linux/csky/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/csky/bits/procfs.h @@ -1,5 +1,5 @@ /* Types for registers for sys/procfs.h. C-SKY 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/csky/bits/shmlba.h b/sysdeps/unix/sysv/linux/csky/bits/shmlba.h index 595d063..e50dd2c 100644 --- a/sysdeps/unix/sysv/linux/csky/bits/shmlba.h +++ b/sysdeps/unix/sysv/linux/csky/bits/shmlba.h @@ -1,5 +1,5 @@ /* Define SHMLBA. C-SKY 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/csky/bits/statfs.h b/sysdeps/unix/sysv/linux/csky/bits/statfs.h index f9f3c64..c2df5ea 100644 --- a/sysdeps/unix/sysv/linux/csky/bits/statfs.h +++ b/sysdeps/unix/sysv/linux/csky/bits/statfs.h @@ -1,4 +1,4 @@ -/* 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/csky/bits/struct_stat.h b/sysdeps/unix/sysv/linux/csky/bits/struct_stat.h index 47a9f0a..daab371 100644 --- a/sysdeps/unix/sysv/linux/csky/bits/struct_stat.h +++ b/sysdeps/unix/sysv/linux/csky/bits/struct_stat.h @@ -1,5 +1,5 @@ /* Definition for struct stat. Linux/csky 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/csky/bits/timesize.h b/sysdeps/unix/sysv/linux/csky/bits/timesize.h index 59d5faa..4887c20 100644 --- a/sysdeps/unix/sysv/linux/csky/bits/timesize.h +++ b/sysdeps/unix/sysv/linux/csky/bits/timesize.h @@ -1,5 +1,5 @@ /* Bit size of the time_t type at glibc build time, Linux/csky. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/csky/kernel-features.h b/sysdeps/unix/sysv/linux/csky/kernel-features.h index bb0a197..bddd109 100644 --- a/sysdeps/unix/sysv/linux/csky/kernel-features.h +++ b/sysdeps/unix/sysv/linux/csky/kernel-features.h @@ -1,6 +1,6 @@ /* Set flags signalling availability of kernel features based on given kernel version number. - 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/csky/kernel_stat.h b/sysdeps/unix/sysv/linux/csky/kernel_stat.h index d987a25..f39c7c1 100644 --- a/sysdeps/unix/sysv/linux/csky/kernel_stat.h +++ b/sysdeps/unix/sysv/linux/csky/kernel_stat.h @@ -1,5 +1,5 @@ /* Internal definitions for stat functions. Linux/csky. - 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/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist index 96d4596..6325fc1 100644 --- a/sysdeps/unix/sysv/linux/csky/libc.abilist +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist @@ -2785,3 +2785,22 @@ GLIBC_2.39 stdc_trailing_zeros_ui F 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.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/csky/libm.abilist b/sysdeps/unix/sysv/linux/csky/libm.abilist index 7a68784..4ed463c 100644 --- a/sysdeps/unix/sysv/linux/csky/libm.abilist +++ b/sysdeps/unix/sysv/linux/csky/libm.abilist @@ -853,3 +853,75 @@ GLIBC_2.40 logp1f32 F GLIBC_2.40 logp1f32x F GLIBC_2.40 logp1f64 F GLIBC_2.40 logp1l F +GLIBC_2.41 acospi F +GLIBC_2.41 acospif F +GLIBC_2.41 acospif32 F +GLIBC_2.41 acospif32x F +GLIBC_2.41 acospif64 F +GLIBC_2.41 acospil F +GLIBC_2.41 asinpi F +GLIBC_2.41 asinpif F +GLIBC_2.41 asinpif32 F +GLIBC_2.41 asinpif32x F +GLIBC_2.41 asinpif64 F +GLIBC_2.41 asinpil F +GLIBC_2.41 atan2pi F +GLIBC_2.41 atan2pif F +GLIBC_2.41 atan2pif32 F +GLIBC_2.41 atan2pif32x F +GLIBC_2.41 atan2pif64 F +GLIBC_2.41 atan2pil F +GLIBC_2.41 atanpi F +GLIBC_2.41 atanpif F +GLIBC_2.41 atanpif32 F +GLIBC_2.41 atanpif32x F +GLIBC_2.41 atanpif64 F +GLIBC_2.41 atanpil F +GLIBC_2.41 cospi F +GLIBC_2.41 cospif F +GLIBC_2.41 cospif32 F +GLIBC_2.41 cospif32x F +GLIBC_2.41 cospif64 F +GLIBC_2.41 cospil F +GLIBC_2.41 sinpi F +GLIBC_2.41 sinpif F +GLIBC_2.41 sinpif32 F +GLIBC_2.41 sinpif32x F +GLIBC_2.41 sinpif64 F +GLIBC_2.41 sinpil F +GLIBC_2.41 tanpi F +GLIBC_2.41 tanpif F +GLIBC_2.41 tanpif32 F +GLIBC_2.41 tanpif32x F +GLIBC_2.41 tanpif64 F +GLIBC_2.41 tanpil F +GLIBC_2.42 compoundn F +GLIBC_2.42 compoundnf F +GLIBC_2.42 compoundnf32 F +GLIBC_2.42 compoundnf32x F +GLIBC_2.42 compoundnf64 F +GLIBC_2.42 compoundnl F +GLIBC_2.42 pown F +GLIBC_2.42 pownf F +GLIBC_2.42 pownf32 F +GLIBC_2.42 pownf32x F +GLIBC_2.42 pownf64 F +GLIBC_2.42 pownl F +GLIBC_2.42 powr F +GLIBC_2.42 powrf F +GLIBC_2.42 powrf32 F +GLIBC_2.42 powrf32x F +GLIBC_2.42 powrf64 F +GLIBC_2.42 powrl F +GLIBC_2.42 rootn F +GLIBC_2.42 rootnf F +GLIBC_2.42 rootnf32 F +GLIBC_2.42 rootnf32x F +GLIBC_2.42 rootnf64 F +GLIBC_2.42 rootnl F +GLIBC_2.42 rsqrt F +GLIBC_2.42 rsqrtf F +GLIBC_2.42 rsqrtf32 F +GLIBC_2.42 rsqrtf32x F +GLIBC_2.42 rsqrtf64 F +GLIBC_2.42 rsqrtl F diff --git a/sysdeps/unix/sysv/linux/csky/makecontext.c b/sysdeps/unix/sysv/linux/csky/makecontext.c index 5a8ae8b..8c2c082 100644 --- a/sysdeps/unix/sysv/linux/csky/makecontext.c +++ b/sysdeps/unix/sysv/linux/csky/makecontext.c @@ -1,5 +1,5 @@ /* Create new context. C-SKY 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/csky/pointer_guard.h b/sysdeps/unix/sysv/linux/csky/pointer_guard.h index 0b79684..281f845 100644 --- a/sysdeps/unix/sysv/linux/csky/pointer_guard.h +++ b/sysdeps/unix/sysv/linux/csky/pointer_guard.h @@ -1,5 +1,5 @@ /* Pointer obfuscation implenentation. C-SKY version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/csky/sigcontextinfo.h b/sysdeps/unix/sysv/linux/csky/sigcontextinfo.h index 541b1a2..4c93743 100644 --- a/sysdeps/unix/sysv/linux/csky/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/csky/sigcontextinfo.h @@ -1,5 +1,5 @@ /* C-SKY definitions for signal handling calling conventions. - 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/csky/sys/cachectl.h b/sysdeps/unix/sysv/linux/csky/sys/cachectl.h index 6d7cf3e..5144481 100644 --- a/sysdeps/unix/sysv/linux/csky/sys/cachectl.h +++ b/sysdeps/unix/sysv/linux/csky/sys/cachectl.h @@ -1,5 +1,5 @@ /* C-SKY cache flushing interface. - 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/csky/sys/ucontext.h b/sysdeps/unix/sysv/linux/csky/sys/ucontext.h index 77fd66d..99e0598 100644 --- a/sysdeps/unix/sysv/linux/csky/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/csky/sys/ucontext.h @@ -1,5 +1,5 @@ /* struct ucontext definition, C-SKY 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/csky/sys/user.h b/sysdeps/unix/sysv/linux/csky/sys/user.h index eab3820..a3d5c62 100644 --- a/sysdeps/unix/sysv/linux/csky/sys/user.h +++ b/sysdeps/unix/sysv/linux/csky/sys/user.h @@ -1,6 +1,6 @@ /* This file is not used by C-SKY GDB. ptrace can use pt_regs definition from linux kernel directly. - 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/csky/syscall_cancel.S b/sysdeps/unix/sysv/linux/csky/syscall_cancel.S new file mode 100644 index 0000000..191be62 --- /dev/null +++ b/sysdeps/unix/sysv/linux/csky/syscall_cancel.S @@ -0,0 +1,114 @@ +/* Cancellable syscall wrapper. Linux/csky 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 +# define STACK_ADJ 4 +#else +# define STACK_ADJ 0 +#endif + +ENTRY (__syscall_cancel_arch) + subi sp, sp, 16 + STACK_ADJ + cfi_def_cfa_offset (16 + STACK_ADJ) +#ifdef SHARED + st.w gb, (sp, 16) + lrw t1, 1f@GOTPC + cfi_offset (gb, -4) + grs gb, 1f +1: +#endif + st.w lr, (sp, 12) + st.w l3, (sp, 8) + st.w l1, (sp, 4) + st.w l0, (sp, 0) +#ifdef SHARED + addu gb, gb, t1 +#endif + subi sp, sp, 16 + cfi_def_cfa_offset (32 + STACK_ADJ) + cfi_offset (lr, -( 4 + STACK_ADJ)) + cfi_offset (l3, -( 8 + STACK_ADJ)) + cfi_offset (l1, -(12 + STACK_ADJ)) + cfi_offset (l0, -(16 + STACK_ADJ)) + + mov l3, a1 + mov a1, a3 + ld.w a3, (sp, 32 + STACK_ADJ) + st.w a3, (sp, 0) + ld.w a3, (sp, 36 + STACK_ADJ) + st.w a3, (sp, 4) + ld.w a3, (sp, 40 + STACK_ADJ) + st.w a3, (sp, 8) + ld.w a3, (sp, 44 + STACK_ADJ) + st.w a3, (sp, 12) + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + ld.w t0, (a0, 0) + andi t0, t0, TCB_CANCELED_BITMASK + jbnez t0, 2f + mov a0, a2 + ld.w a3, (sp, 4) + ld.w a2, (sp, 0) + ld.w l0, (sp, 8) + ld.w l1, (sp, 12) + trap 0 + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + addi sp, sp, 16 + cfi_remember_state + cfi_def_cfa_offset (16 + STACK_ADJ) +#ifdef SHARED + ld.w gb, (sp, 16) + cfi_restore (gb) +#endif + ld.w lr, (sp, 12) + cfi_restore (lr) + ld.w l3, (sp, 8) + cfi_restore (l3) + ld.w l1, (sp, 4) + cfi_restore (l1) + ld.w l0, (sp, 0) + cfi_restore (l0) + addi sp, sp, 16 + cfi_def_cfa_offset (0) + rts + +2: + cfi_restore_state +#ifdef SHARED + lrw a3, __syscall_do_cancel@GOTOFF + addu a3, a3, gb + jsr a3 +#else + jbsr __syscall_do_cancel +#endif +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/csky/sysdep.h b/sysdeps/unix/sysv/linux/csky/sysdep.h index e632f3e..6ef105d 100644 --- a/sysdeps/unix/sysv/linux/csky/sysdep.h +++ b/sysdeps/unix/sysv/linux/csky/sysdep.h @@ -1,5 +1,5 @@ /* Assembly macros for C-SKY. - 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/default-sched.h b/sysdeps/unix/sysv/linux/default-sched.h index ce2591b..354db3d 100644 --- a/sysdeps/unix/sysv/linux/default-sched.h +++ b/sysdeps/unix/sysv/linux/default-sched.h @@ -1,5 +1,5 @@ /* Determine calling thread's scheduling parameters. Linux 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/device-nrs.h b/sysdeps/unix/sysv/linux/device-nrs.h index 427e999..0ba287a 100644 --- a/sysdeps/unix/sysv/linux/device-nrs.h +++ b/sysdeps/unix/sysv/linux/device-nrs.h @@ -1,5 +1,5 @@ /* Device numbers of devices used in the implementation. Linux version. - 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/dirfd.c b/sysdeps/unix/sysv/linux/dirfd.c index 4165ecc..1c637c6 100644 --- a/sysdeps/unix/sysv/linux/dirfd.c +++ b/sysdeps/unix/sysv/linux/dirfd.c @@ -1,5 +1,5 @@ /* Return the file descriptor used by a DIR stream. Unix version. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/dirstream.h b/sysdeps/unix/sysv/linux/dirstream.h index 3d36437..8649f85 100644 --- a/sysdeps/unix/sysv/linux/dirstream.h +++ b/sysdeps/unix/sysv/linux/dirstream.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1993-2024 Free Software Foundation, Inc. +/* Copyright (C) 1993-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/dl-affinity.h b/sysdeps/unix/sysv/linux/dl-affinity.h index bbfede7..53ef114 100644 --- a/sysdeps/unix/sysv/linux/dl-affinity.h +++ b/sysdeps/unix/sysv/linux/dl-affinity.h @@ -1,5 +1,5 @@ /* CPU affinity handling for the dynamic linker. Linux 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/dl-diagnostics-kernel.c b/sysdeps/unix/sysv/linux/dl-diagnostics-kernel.c index af9acfc..164a233 100644 --- a/sysdeps/unix/sysv/linux/dl-diagnostics-kernel.c +++ b/sysdeps/unix/sysv/linux/dl-diagnostics-kernel.c @@ -1,5 +1,5 @@ /* Print kernel diagnostics data in ld.so. Linux version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/dl-early_allocate.c b/sysdeps/unix/sysv/linux/dl-early_allocate.c index 4d98076..257519b 100644 --- a/sysdeps/unix/sysv/linux/dl-early_allocate.c +++ b/sysdeps/unix/sysv/linux/dl-early_allocate.c @@ -1,5 +1,5 @@ /* Early memory allocation for the dynamic loader. Generic version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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 @@ -51,7 +51,7 @@ _dl_early_allocate (size_t size) { /* If brk has not been invoked, there is no need to update __curbrk. The first call to brk will take care of that. */ - void *previous = __brk_call (0); + void *previous = __brk_call (NULL); result = __brk_call (previous + size); if (result == previous) result = NULL; diff --git a/sysdeps/unix/sysv/linux/dl-execstack.c b/sysdeps/unix/sysv/linux/dl-execstack.c index b986898..6db9601 100644 --- a/sysdeps/unix/sysv/linux/dl-execstack.c +++ b/sysdeps/unix/sysv/linux/dl-execstack.c @@ -1,5 +1,5 @@ /* Stack executability handling for GNU dynamic linker. Linux version. - 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 @@ -16,22 +16,13 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -#include <errno.h> #include <ldsodefs.h> -#include <libintl.h> -#include <list.h> -#include <pthreadP.h> -#include <stackinfo.h> -#include <stdbool.h> -#include <sys/mman.h> -#include <sysdep.h> -#include <unistd.h> -static int -make_main_stack_executable (void **stack_endp) +int +_dl_make_stack_executable (const void *stack_endp) { /* This gives us the highest/lowest page that needs to be changed. */ - uintptr_t page = ((uintptr_t) *stack_endp + uintptr_t page = ((uintptr_t) stack_endp & -(intptr_t) GLRO(dl_pagesize)); if (__mprotect ((void *) page, GLRO(dl_pagesize), @@ -44,65 +35,8 @@ make_main_stack_executable (void **stack_endp) ) != 0) return errno; - /* Clear the address. */ - *stack_endp = NULL; - /* Remember that we changed the permission. */ GL(dl_stack_flags) |= PF_X; return 0; } - -int -_dl_make_stacks_executable (void **stack_endp) -{ - /* First the main thread's stack. */ - int err = make_main_stack_executable (stack_endp); - if (err != 0) - return err; - - lll_lock (GL (dl_stack_cache_lock), LLL_PRIVATE); - - list_t *runp; - list_for_each (runp, &GL (dl_stack_used)) - { - err = __nptl_change_stack_perm (list_entry (runp, struct pthread, list)); - if (err != 0) - break; - } - - /* Also change the permission for the currently unused stacks. This - might be wasted time but better spend it here than adding a check - in the fast path. */ - if (err == 0) - list_for_each (runp, &GL (dl_stack_cache)) - { - err = __nptl_change_stack_perm (list_entry (runp, struct pthread, - list)); - if (err != 0) - break; - } - - lll_unlock (GL (dl_stack_cache_lock), LLL_PRIVATE); - - return err; -} - -int -__nptl_change_stack_perm (struct pthread *pd) -{ -#if _STACK_GROWS_DOWN - void *stack = pd->stackblock + pd->guardsize; - size_t len = pd->stackblock_size - pd->guardsize; -#elif _STACK_GROWS_UP - void *stack = pd->stackblock; - size_t len = (uintptr_t) pd - pd->guardsize - (uintptr_t) pd->stackblock; -#else -# error "Define either _STACK_GROWS_DOWN or _STACK_GROWS_UP" -#endif - if (__mprotect (stack, len, PROT_READ | PROT_WRITE | PROT_EXEC) != 0) - return errno; - - return 0; -} -rtld_hidden_def (__nptl_change_stack_perm) diff --git a/sysdeps/unix/sysv/linux/dl-execve.h b/sysdeps/unix/sysv/linux/dl-execve.h index 598aa6f..f843262 100644 --- a/sysdeps/unix/sysv/linux/dl-execve.h +++ b/sysdeps/unix/sysv/linux/dl-execve.h @@ -1,5 +1,5 @@ /* execve for the dynamic linker. Linux version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/dl-extra_tls.h b/sysdeps/unix/sysv/linux/dl-extra_tls.h new file mode 100644 index 0000000..d48a5e9 --- /dev/null +++ b/sysdeps/unix/sysv/linux/dl-extra_tls.h @@ -0,0 +1,71 @@ +/* extra tls block utils for the dynamic linker. Linux version. + Copyright (C) 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 + <https://www.gnu.org/licenses/>. */ + +#ifndef _DL_EXTRA_TLS_H +#define _DL_EXTRA_TLS_H 1 + +#include <stddef.h> +#include <sys/rseq.h> +#include <rseq-internal.h> +#include <elf/dl-tunables.h> + +/* Returns the size of the extra TLS block, it must always be a multiple of the + alignment. */ +static inline size_t +_dl_extra_tls_get_size (void) +{ + bool do_rseq = TUNABLE_GET_FULL (glibc, pthread, rseq, int, NULL); + if (do_rseq) + { + /* Make sure the rseq area size is at least the minimum ABI size and a + multiple of the requested aligment. */ + return roundup (MAX (_rseq_size, RSEQ_AREA_SIZE_INITIAL), _rseq_align); + } + + /* Even when disabled by tunable, an rseq area will be allocated to allow + application code to test the registration status with 'rseq->cpu_id >= 0'. + Default to the rseq ABI minimum size, this will ensure we don't use more + TLS than necessary. */ + return RSEQ_AREA_SIZE_INITIAL; +} + +/* Returns the alignment requirements of the extra TLS block. */ +static inline size_t +_dl_extra_tls_get_align (void) +{ + bool do_rseq = TUNABLE_GET_FULL (glibc, pthread, rseq, int, NULL); + if (do_rseq) + { + return _rseq_align; + } + + /* Even when disabled by tunable, an rseq area will be allocated to allow + application code to test the registration status with 'rseq->cpu_id >= 0'. + Default to the rseq ABI minimum alignment, this will ensure we don't use + more TLS than necessary. */ + return RSEQ_MIN_ALIGN; +} + +/* Record the offset of the extra TLS block from the thread pointer. */ +static inline void +_dl_extra_tls_set_offset (ptrdiff_t tls_offset) +{ + _rseq_offset = tls_offset; +} + +#endif diff --git a/sysdeps/unix/sysv/linux/dl-openat64.c b/sysdeps/unix/sysv/linux/dl-openat64.c index 3137e86..3d0fae2 100644 --- a/sysdeps/unix/sysv/linux/dl-openat64.c +++ b/sysdeps/unix/sysv/linux/dl-openat64.c @@ -1,4 +1,4 @@ -/* 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/dl-origin.c b/sysdeps/unix/sysv/linux/dl-origin.c index f2df067..3c52ba5 100644 --- a/sysdeps/unix/sysv/linux/dl-origin.c +++ b/sysdeps/unix/sysv/linux/dl-origin.c @@ -1,5 +1,5 @@ /* Find path of executable. - Copyright (C) 1998-2024 Free Software Foundation, Inc. + Copyright (C) 1998-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 @@ -21,6 +21,7 @@ #include <fcntl.h> #include <ldsodefs.h> #include <sysdep.h> +#include <fd_to_filename.h> /* On Linux >= 2.1 systems which have the dcache implementation we can get the path of the application from the /proc/self/exe symlink. Try this @@ -72,3 +73,25 @@ _dl_get_origin (void) return result; } + +/* On Linux, readlink on the magic symlinks in /proc/self/fd also has + the same behavior of returning the canonical path from the dcache. + If it does not work, we do not bother to canonicalize. */ + +char * +_dl_canonicalize (int fd) +{ + struct fd_to_filename fdfilename; + char canonical[PATH_MAX]; + char *path = __fd_to_filename (fd, &fdfilename); + int size = INTERNAL_SYSCALL_CALL (readlinkat, AT_FDCWD, path, + canonical, PATH_MAX - 1); + + /* Check if the path was truncated. */ + if (size >= 0 && size < PATH_MAX - 1) + { + canonical[size] = '\0'; + return __strdup (canonical); + } + return NULL; +} diff --git a/sysdeps/unix/sysv/linux/dl-osinfo.h b/sysdeps/unix/sysv/linux/dl-osinfo.h index 2ec4c5a..bf08951 100644 --- a/sysdeps/unix/sysv/linux/dl-osinfo.h +++ b/sysdeps/unix/sysv/linux/dl-osinfo.h @@ -1,5 +1,5 @@ /* Operating system specific code for generic dynamic loader functions. Linux. - 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/dl-parse_auxv.h b/sysdeps/unix/sysv/linux/dl-parse_auxv.h index ea2a58e..41250c9 100644 --- a/sysdeps/unix/sysv/linux/dl-parse_auxv.h +++ b/sysdeps/unix/sysv/linux/dl-parse_auxv.h @@ -1,5 +1,5 @@ /* Parse the Linux auxiliary vector. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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 @@ -21,6 +21,7 @@ #include <fpu_control.h> #include <ldsodefs.h> #include <link.h> +#include <rseq-internal.h> typedef ElfW(Addr) dl_parse_auxv_t[AT_MINSIGSTKSZ + 1]; @@ -59,5 +60,11 @@ void _dl_parse_auxv (ElfW(auxv_t) *av, dl_parse_auxv_t auxv_values) GLRO(dl_sysinfo) = auxv_values[AT_SYSINFO]; #endif + /* Get the rseq feature size, with a minimum of RSEQ_AREA_SIZE_INITIAL_USED + (20) for kernels that don't have AT_RSEQ_FEATURE_SIZE. */ + _rseq_size = MAX (auxv_values[AT_RSEQ_FEATURE_SIZE], + RSEQ_AREA_SIZE_INITIAL_USED); + _rseq_align = MAX (auxv_values[AT_RSEQ_ALIGN], RSEQ_MIN_ALIGN); + DL_PLATFORM_AUXV } diff --git a/sysdeps/unix/sysv/linux/dl-rseq-symbols.S b/sysdeps/unix/sysv/linux/dl-rseq-symbols.S index b4bba06..2502a76 100644 --- a/sysdeps/unix/sysv/linux/dl-rseq-symbols.S +++ b/sysdeps/unix/sysv/linux/dl-rseq-symbols.S @@ -1,5 +1,5 @@ /* Define symbols used by rseq. - 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 @@ -27,14 +27,18 @@ /* Some targets define a macro to denote the zero register. */ #undef zero -/* Define 2 symbols: '__rseq_size' is public const and '_rseq_size' (an - alias of '__rseq_size') is hidden and writable for internal use by the - dynamic linker which will initialize the value both symbols point to - before copy relocations take place. */ +/* Define 3 symbols: '__rseq_size' is public const and then '_rseq_size' and + '__GI___rseq_size' (both aliases of '__rseq_size') are hidden, '_rseq_size' + is writable for internal use by the dynamic linker which will initialize + the value the symbols point to before copy relocations take place. */ .globl __rseq_size .type __rseq_size, %object .size __rseq_size, 4 + .hidden __GI___rseq_size + .globl __GI___rseq_size + .type __GI___rseq_size, %object + .size __GI___rseq_size, 4 .hidden _rseq_size .globl _rseq_size .type _rseq_size, %object @@ -42,17 +46,23 @@ .section .data.rel.ro .balign 4 __rseq_size: +__GI___rseq_size: _rseq_size: .zero 4 -/* Define 2 symbols: '__rseq_offset' is public const and '_rseq_offset' (an - alias of '__rseq_offset') is hidden and writable for internal use by the - dynamic linker which will initialize the value both symbols point to - before copy relocations take place. */ +/* Define 3 symbols: '__rseq_offset' is public const and then '_rseq_offset' + and '__GI___rseq_offset' (both aliases of '__rseq_offset') are hidden, + '_rseq_offset' is writable for internal use by the dynamic linker which will + initialize the value the symbols point to before copy relocations take + place. */ .globl __rseq_offset .type __rseq_offset, %object .size __rseq_offset, RSEQ_OFFSET_SIZE + .hidden __GI___rseq_offset + .globl __GI___rseq_offset + .type __GI___rseq_offset, %object + .size __GI___rseq_offset, RSEQ_OFFSET_SIZE .hidden _rseq_offset .globl _rseq_offset .type _rseq_offset, %object @@ -60,5 +70,6 @@ _rseq_size: .section .data.rel.ro .balign RSEQ_OFFSET_SIZE __rseq_offset: +__GI___rseq_offset: _rseq_offset: .zero RSEQ_OFFSET_SIZE diff --git a/sysdeps/unix/sysv/linux/dl-sysdep.c b/sysdeps/unix/sysv/linux/dl-sysdep.c index a8ec2d7..f17a3e1 100644 --- a/sysdeps/unix/sysv/linux/dl-sysdep.c +++ b/sysdeps/unix/sysv/linux/dl-sysdep.c @@ -1,5 +1,5 @@ /* Dynamic linker system dependencies for Linux. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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 @@ -21,7 +21,6 @@ #include <dl-auxv.h> #include <dl-osinfo.h> #include <dl-parse_auxv.h> -#include <dl-procinfo.h> #include <dl-tunables.h> #include <elf.h> #include <errno.h> @@ -113,7 +112,7 @@ _dl_sysdep_start (void **start_argptr, /* Initialize DSO sorting algorithm after tunables. */ _dl_sort_maps_init (); - __brk (0); /* Initialize the break. */ + __brk (NULL); /* Initialize the break. */ #ifdef DL_PLATFORM_INIT DL_PLATFORM_INIT; @@ -185,7 +184,10 @@ _dl_show_auxv (void) [AT_GID - 2] = { "GID: ", dec }, [AT_EGID - 2] = { "EGID: ", dec }, [AT_PLATFORM - 2] = { "PLATFORM: ", str }, - [AT_HWCAP - 2] = { "HWCAP: ", hex }, + [AT_HWCAP - 2] = { "HWCAP: 0x", hex }, + [AT_HWCAP2 - 2] = { "HWCAP2: 0x", hex }, + [AT_HWCAP3 - 2] = { "HWCAP3: 0x", hex }, + [AT_HWCAP4 - 2] = { "HWCAP4: 0x", hex }, [AT_CLKTCK - 2] = { "CLKTCK: ", dec }, [AT_FPUCW - 2] = { "FPUCW: ", hex }, [AT_DCACHEBSIZE - 2] = { "DCACHEBSIZE: 0x", hex }, @@ -197,9 +199,8 @@ _dl_show_auxv (void) [AT_SYSINFO - 2] = { "SYSINFO: 0x", hex }, [AT_SYSINFO_EHDR - 2] = { "SYSINFO_EHDR: 0x", hex }, [AT_RANDOM - 2] = { "RANDOM: 0x", hex }, - [AT_HWCAP2 - 2] = { "HWCAP2: 0x", hex }, - [AT_HWCAP3 - 2] = { "HWCAP3: 0x", hex }, - [AT_HWCAP4 - 2] = { "HWCAP4: 0x", hex }, + [AT_RSEQ_FEATURE_SIZE - 2] = { "RSEQ_FEATURE_SIZE: ", dec }, + [AT_RSEQ_ALIGN - 2] = { "RSEQ_ALIGN: ", dec }, [AT_MINSIGSTKSZ - 2] = { "MINSIGSTKSZ: ", dec }, [AT_L1I_CACHESIZE - 2] = { "L1I_CACHESIZE: ", dec }, [AT_L1I_CACHEGEOMETRY - 2] = { "L1I_CACHEGEOMETRY: 0x", hex }, @@ -220,10 +221,6 @@ _dl_show_auxv (void) assert (AT_NULL == 0); assert (AT_IGNORE == 1); - /* Some entries are handled in a special way per platform. */ - if (_dl_procinfo (av->a_type, av->a_un.a_val) == 0) - continue; - if (idx < sizeof (auxvars) / sizeof (auxvars[0]) && auxvars[idx].form != unknown) { diff --git a/sysdeps/unix/sysv/linux/dl-sysdep.h b/sysdeps/unix/sysv/linux/dl-sysdep.h index 36c09bb..6381243 100644 --- a/sysdeps/unix/sysv/linux/dl-sysdep.h +++ b/sysdeps/unix/sysv/linux/dl-sysdep.h @@ -1,5 +1,5 @@ /* System-specific settings for dynamic linker code. Linux 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 diff --git a/sysdeps/unix/sysv/linux/dl-vdso-setup.c b/sysdeps/unix/sysv/linux/dl-vdso-setup.c index 3a44944..cd9cada 100644 --- a/sysdeps/unix/sysv/linux/dl-vdso-setup.c +++ b/sysdeps/unix/sysv/linux/dl-vdso-setup.c @@ -1,5 +1,5 @@ /* Data for vDSO support. Linux 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 @@ -66,6 +66,11 @@ PROCINFO_CLASS int (*_dl_vdso_clock_getres) (clockid_t, PROCINFO_CLASS int (*_dl_vdso_clock_getres_time64) (clockid_t, struct __timespec64 *) RELRO; # endif +# ifdef HAVE_GETRANDOM_VSYSCALL +PROCINFO_CLASS ssize_t (*_dl_vdso_getrandom) (void *buffer, size_t len, + unsigned int flags, void *state, + size_t state_len) RELRO; +# endif /* PowerPC specific ones. */ # ifdef HAVE_GET_TBFREQ diff --git a/sysdeps/unix/sysv/linux/dl-vdso-setup.h b/sysdeps/unix/sysv/linux/dl-vdso-setup.h index 8aee5a8..6962bf8 100644 --- a/sysdeps/unix/sysv/linux/dl-vdso-setup.h +++ b/sysdeps/unix/sysv/linux/dl-vdso-setup.h @@ -1,5 +1,5 @@ /* ELF symbol initialization functions for VDSO objects. Linux 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 @@ -50,6 +50,9 @@ setup_vdso_pointers (void) #ifdef HAVE_RISCV_HWPROBE GLRO(dl_vdso_riscv_hwprobe) = dl_vdso_vsym (HAVE_RISCV_HWPROBE); #endif +#ifdef HAVE_GETRANDOM_VSYSCALL + GLRO(dl_vdso_getrandom) = dl_vdso_vsym (HAVE_GETRANDOM_VSYSCALL); +#endif } #endif diff --git a/sysdeps/unix/sysv/linux/dl-vdso.h b/sysdeps/unix/sysv/linux/dl-vdso.h index b643cf5..da6eca8 100644 --- a/sysdeps/unix/sysv/linux/dl-vdso.h +++ b/sysdeps/unix/sysv/linux/dl-vdso.h @@ -1,5 +1,5 @@ /* ELF symbol resolve functions for VDSO objects. - 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 diff --git a/sysdeps/unix/sysv/linux/dl-write.c b/sysdeps/unix/sysv/linux/dl-write.c index de6a063..2c7f217 100644 --- a/sysdeps/unix/sysv/linux/dl-write.c +++ b/sysdeps/unix/sysv/linux/dl-write.c @@ -1,5 +1,5 @@ /* Implementation of the _dl_write function. Linux 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/dl-writev.h b/sysdeps/unix/sysv/linux/dl-writev.h index f394d1b..f3fa5c7 100644 --- a/sysdeps/unix/sysv/linux/dl-writev.h +++ b/sysdeps/unix/sysv/linux/dl-writev.h @@ -1,5 +1,5 @@ /* Message-writing for the dynamic linker. Linux version. - Copyright (C) 2013-2024 Free Software Foundation, Inc. + Copyright (C) 2013-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/dup2.c b/sysdeps/unix/sysv/linux/dup2.c index 8c3e8b0..0075773 100644 --- a/sysdeps/unix/sysv/linux/dup2.c +++ b/sysdeps/unix/sysv/linux/dup2.c @@ -1,5 +1,5 @@ /* Duplicate a file descriptor. Linux version. - 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/epoll_create.c b/sysdeps/unix/sysv/linux/epoll_create.c index 5417bd8..8960790 100644 --- a/sysdeps/unix/sysv/linux/epoll_create.c +++ b/sysdeps/unix/sysv/linux/epoll_create.c @@ -1,5 +1,5 @@ /* Open an epoll file descriptor. Linux version. - 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/epoll_pwait.c b/sysdeps/unix/sysv/linux/epoll_pwait.c index d0bd3d0..47a5346 100644 --- a/sysdeps/unix/sysv/linux/epoll_pwait.c +++ b/sysdeps/unix/sysv/linux/epoll_pwait.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/epoll_pwait2.c b/sysdeps/unix/sysv/linux/epoll_pwait2.c index 0f6ac3e..bbb5f04 100644 --- a/sysdeps/unix/sysv/linux/epoll_pwait2.c +++ b/sysdeps/unix/sysv/linux/epoll_pwait2.c @@ -1,5 +1,5 @@ /* Implementation of epoll_pwait2 syscall wrapper. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/epoll_wait.c b/sysdeps/unix/sysv/linux/epoll_wait.c index be77ad5..b2d9b45 100644 --- a/sysdeps/unix/sysv/linux/epoll_wait.c +++ b/sysdeps/unix/sysv/linux/epoll_wait.c @@ -1,5 +1,5 @@ /* Linux epoll_wait syscall implementation. - 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/errlist-compat-data.h b/sysdeps/unix/sysv/linux/errlist-compat-data.h index 55108de..0f0885b 100644 --- a/sysdeps/unix/sysv/linux/errlist-compat-data.h +++ b/sysdeps/unix/sysv/linux/errlist-compat-data.h @@ -1,5 +1,5 @@ /* Linux sys_errlist compat symbol definitions. Generic 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/errlist-compat.h b/sysdeps/unix/sysv/linux/errlist-compat.h index ae43bf8..341f13d 100644 --- a/sysdeps/unix/sysv/linux/errlist-compat.h +++ b/sysdeps/unix/sysv/linux/errlist-compat.h @@ -1,5 +1,5 @@ /* Linux sys_errlist compatibility macro definitions. - 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/errqueue.h b/sysdeps/unix/sysv/linux/errqueue.h index 52c5735..650cf7f 100644 --- a/sysdeps/unix/sysv/linux/errqueue.h +++ b/sysdeps/unix/sysv/linux/errqueue.h @@ -1,4 +1,4 @@ -/* 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/eventfd_read.c b/sysdeps/unix/sysv/linux/eventfd_read.c index 21b60a8..ccb0216 100644 --- a/sysdeps/unix/sysv/linux/eventfd_read.c +++ b/sysdeps/unix/sysv/linux/eventfd_read.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/eventfd_write.c b/sysdeps/unix/sysv/linux/eventfd_write.c index 72d95b3..88cecec 100644 --- a/sysdeps/unix/sysv/linux/eventfd_write.c +++ b/sysdeps/unix/sysv/linux/eventfd_write.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/execveat.c b/sysdeps/unix/sysv/linux/execveat.c index e1d68b9..633fbc8 100644 --- a/sysdeps/unix/sysv/linux/execveat.c +++ b/sysdeps/unix/sysv/linux/execveat.c @@ -1,5 +1,5 @@ /* Execute program relative to a directory file descriptor. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/faccessat.c b/sysdeps/unix/sysv/linux/faccessat.c index 2fa57fd..edb22eb 100644 --- a/sysdeps/unix/sysv/linux/faccessat.c +++ b/sysdeps/unix/sysv/linux/faccessat.c @@ -1,5 +1,5 @@ /* Test for access to file, relative to open directory. Linux version. - Copyright (C) 2006-2024 Free Software Foundation, Inc. + Copyright (C) 2006-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/fallocate.c b/sysdeps/unix/sysv/linux/fallocate.c index 77cedad..b03b04d 100644 --- a/sysdeps/unix/sysv/linux/fallocate.c +++ b/sysdeps/unix/sysv/linux/fallocate.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/fallocate64.c b/sysdeps/unix/sysv/linux/fallocate64.c index 3c5436f..9033391 100644 --- a/sysdeps/unix/sysv/linux/fallocate64.c +++ b/sysdeps/unix/sysv/linux/fallocate64.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/fanotify_mark.c b/sysdeps/unix/sysv/linux/fanotify_mark.c index 4f50b30..07e365a 100644 --- a/sysdeps/unix/sysv/linux/fanotify_mark.c +++ b/sysdeps/unix/sysv/linux/fanotify_mark.c @@ -1,6 +1,6 @@ /* Add, remove, or modify an fanotify mark on a filesystem object. Linux specific syscall. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/fatal-prepare.h b/sysdeps/unix/sysv/linux/fatal-prepare.h index 65fb38a..1475e28 100644 --- a/sysdeps/unix/sysv/linux/fatal-prepare.h +++ b/sysdeps/unix/sysv/linux/fatal-prepare.h @@ -1,4 +1,4 @@ -/* 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/fchmodat.c b/sysdeps/unix/sysv/linux/fchmodat.c index dad2e12..dd1fa5d 100644 --- a/sysdeps/unix/sysv/linux/fchmodat.c +++ b/sysdeps/unix/sysv/linux/fchmodat.c @@ -1,5 +1,5 @@ /* Change the protections of file relative to open directory. Linux version. - Copyright (C) 2006-2024 Free Software Foundation, Inc. + Copyright (C) 2006-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/fcntl.c b/sysdeps/unix/sysv/linux/fcntl.c index 3a010ff..f7e3581 100644 --- a/sysdeps/unix/sysv/linux/fcntl.c +++ b/sysdeps/unix/sysv/linux/fcntl.c @@ -1,5 +1,5 @@ /* Linux fcntl syscall implementation. - 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/fcntl64.c b/sysdeps/unix/sysv/linux/fcntl64.c index 9c7b0dd..1861b18 100644 --- a/sysdeps/unix/sysv/linux/fcntl64.c +++ b/sysdeps/unix/sysv/linux/fcntl64.c @@ -1,5 +1,5 @@ /* Manipulate file descriptor. Linux LFS 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/fcntl_nocancel.c b/sysdeps/unix/sysv/linux/fcntl_nocancel.c index 68483d8..7349dcf 100644 --- a/sysdeps/unix/sysv/linux/fcntl_nocancel.c +++ b/sysdeps/unix/sysv/linux/fcntl_nocancel.c @@ -1,5 +1,5 @@ /* Linux fcntl syscall implementation -- non-cancellable. - 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/fdatasync.c b/sysdeps/unix/sysv/linux/fdatasync.c index b4b009f..67f18d9 100644 --- a/sysdeps/unix/sysv/linux/fdatasync.c +++ b/sysdeps/unix/sysv/linux/fdatasync.c @@ -1,6 +1,6 @@ /* Synchronize a file's in-core state with storage device Linux implementation. - 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/fdopendir.c b/sysdeps/unix/sysv/linux/fdopendir.c index 26f00bb..7f8d935 100644 --- a/sysdeps/unix/sysv/linux/fdopendir.c +++ b/sysdeps/unix/sysv/linux/fdopendir.c @@ -1,4 +1,4 @@ -/* 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 diff --git a/sysdeps/unix/sysv/linux/features-time64.h b/sysdeps/unix/sysv/linux/features-time64.h index 8d573cd..d85241d 100644 --- a/sysdeps/unix/sysv/linux/features-time64.h +++ b/sysdeps/unix/sysv/linux/features-time64.h @@ -1,5 +1,5 @@ /* Features part to handle 64-bit time_t support. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/fexecve.c b/sysdeps/unix/sysv/linux/fexecve.c index a62a757..a945813 100644 --- a/sysdeps/unix/sysv/linux/fexecve.c +++ b/sysdeps/unix/sysv/linux/fexecve.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1994-2024 Free Software Foundation, Inc. +/* Copyright (C) 1994-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/filter-nr-syscalls.awk b/sysdeps/unix/sysv/linux/filter-nr-syscalls.awk index 24e068e..ab4c654 100644 --- a/sysdeps/unix/sysv/linux/filter-nr-syscalls.awk +++ b/sysdeps/unix/sysv/linux/filter-nr-syscalls.awk @@ -1,5 +1,5 @@ # Filter preprocessor __NR_* macros and extract system call names. -# 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/fixup-asm-unistd.h b/sysdeps/unix/sysv/linux/fixup-asm-unistd.h index 92d7638..52a4915 100644 --- a/sysdeps/unix/sysv/linux/fixup-asm-unistd.h +++ b/sysdeps/unix/sysv/linux/fixup-asm-unistd.h @@ -1,5 +1,5 @@ /* Regularize <asm/unistd.h> definitions. Default version. - Copyright (C) 2020-2024 Free Software Foundation, Inc. + Copyright (C) 2020-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 diff --git a/sysdeps/unix/sysv/linux/fpathconf.c b/sysdeps/unix/sysv/linux/fpathconf.c index d5ce59b..f0f8bee 100644 --- a/sysdeps/unix/sysv/linux/fpathconf.c +++ b/sysdeps/unix/sysv/linux/fpathconf.c @@ -1,5 +1,5 @@ /* Get file-specific information about descriptor FD. Linux version. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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/fstat.c b/sysdeps/unix/sysv/linux/fstat.c index fab87e7..0df9da3 100644 --- a/sysdeps/unix/sysv/linux/fstat.c +++ b/sysdeps/unix/sysv/linux/fstat.c @@ -1,5 +1,5 @@ /* Get file status. Linux 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/fstat64.c b/sysdeps/unix/sysv/linux/fstat64.c index cc9f695..8da9be3 100644 --- a/sysdeps/unix/sysv/linux/fstat64.c +++ b/sysdeps/unix/sysv/linux/fstat64.c @@ -1,5 +1,5 @@ /* Get file status. Linux 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 @@ -30,7 +30,7 @@ __fstat64_time64 (int fd, struct __stat64_t64 *buf) { #if !FSTATAT_USE_STATX # if XSTAT_IS_XSTAT64 - /* The __NR_stat macro is defined for all ABIs that also define + /* The __NR_stat macro is defined for all ABIs that also define XSTAT_IS_STAT64, so to correctly identify alpha and sparc check __NR_newfstatat (similar to what fstatat64 does). */ # ifdef __NR_newfstatat @@ -60,7 +60,7 @@ __fstat64_time64 (int fd, struct __stat64_t64 *buf) # endif #else /* !FSTATAT_USE_STATX */ /* All kABIs with non-LFS support and with old 32-bit time_t support - e.g. arm, csky, i386, hppa, m68k, microblaze, nios2, sh, powerpc32, + e.g. arm, csky, i386, hppa, m68k, microblaze, sh, powerpc32, and sparc32. */ if (fd < 0) { diff --git a/sysdeps/unix/sysv/linux/fstatat.c b/sysdeps/unix/sysv/linux/fstatat.c index f587f6e..32e67c9 100644 --- a/sysdeps/unix/sysv/linux/fstatat.c +++ b/sysdeps/unix/sysv/linux/fstatat.c @@ -1,5 +1,5 @@ /* Get file status. Linux 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/fstatat64.c b/sysdeps/unix/sysv/linux/fstatat64.c index da49617..931a593 100644 --- a/sysdeps/unix/sysv/linux/fstatat64.c +++ b/sysdeps/unix/sysv/linux/fstatat64.c @@ -1,5 +1,5 @@ /* Get file status. Linux 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 @@ -104,7 +104,7 @@ fstatat64_time64_stat (int fd, const char *file, struct __stat64_t64 *buf, #else # ifdef __NR_fstatat64 /* All kABIs with non-LFS support and with old 32-bit time_t support - e.g. arm, csky, i386, hppa, m68k, microblaze, nios2, sh, powerpc32, + e.g. arm, csky, i386, hppa, m68k, microblaze, sh, powerpc32, and sparc32. */ struct stat64 st64; r = INTERNAL_SYSCALL_CALL (fstatat64, fd, file, &st64, flag); diff --git a/sysdeps/unix/sysv/linux/fstatfs.c b/sysdeps/unix/sysv/linux/fstatfs.c index 5824089..48ca390 100644 --- a/sysdeps/unix/sysv/linux/fstatfs.c +++ b/sysdeps/unix/sysv/linux/fstatfs.c @@ -1,5 +1,5 @@ /* Get filesystem statistics. Linux version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/fstatfs64.c b/sysdeps/unix/sysv/linux/fstatfs64.c index fa5c1ff..65d09f7 100644 --- a/sysdeps/unix/sysv/linux/fstatfs64.c +++ b/sysdeps/unix/sysv/linux/fstatfs64.c @@ -1,5 +1,5 @@ /* Return information about the filesystem on which FD resides. - 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/fstatvfs.c b/sysdeps/unix/sysv/linux/fstatvfs.c index 599f950..7da2b03 100644 --- a/sysdeps/unix/sysv/linux/fstatvfs.c +++ b/sysdeps/unix/sysv/linux/fstatvfs.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/fstatvfs64.c b/sysdeps/unix/sysv/linux/fstatvfs64.c index 0a88d34..a626c9b 100644 --- a/sysdeps/unix/sysv/linux/fstatvfs64.c +++ b/sysdeps/unix/sysv/linux/fstatvfs64.c @@ -1,5 +1,5 @@ /* Return information about the filesystem on which FD resides. - 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/fsync.c b/sysdeps/unix/sysv/linux/fsync.c index 20addf6..4660488 100644 --- a/sysdeps/unix/sysv/linux/fsync.c +++ b/sysdeps/unix/sysv/linux/fsync.c @@ -1,6 +1,6 @@ /* Synchronize a file's in-core state with storage device Linux implementation. - 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/ftime.c b/sysdeps/unix/sysv/linux/ftime.c index 06b0f3d..53fbcac 100644 --- a/sysdeps/unix/sysv/linux/ftime.c +++ b/sysdeps/unix/sysv/linux/ftime.c @@ -1,5 +1,5 @@ /* Deprecated return date and time. Linux version. - Copyright (C) 1994-2024 Free Software Foundation, Inc. + Copyright (C) 1994-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/ftruncate.c b/sysdeps/unix/sysv/linux/ftruncate.c index 38737a5..0c9e096 100644 --- a/sysdeps/unix/sysv/linux/ftruncate.c +++ b/sysdeps/unix/sysv/linux/ftruncate.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2016-2024 Free Software Foundation, Inc. +/* Copyright (C) 2016-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/ftruncate64.c b/sysdeps/unix/sysv/linux/ftruncate64.c index 65deb26..e1d71e7 100644 --- a/sysdeps/unix/sysv/linux/ftruncate64.c +++ b/sysdeps/unix/sysv/linux/ftruncate64.c @@ -1,4 +1,4 @@ -/* 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/futimens.c b/sysdeps/unix/sysv/linux/futimens.c index 040aee9..d9ba0ee 100644 --- a/sysdeps/unix/sysv/linux/futimens.c +++ b/sysdeps/unix/sysv/linux/futimens.c @@ -1,5 +1,5 @@ /* Change access and modification times of open file. Linux version. - Copyright (C) 2007-2024 Free Software Foundation, Inc. + Copyright (C) 2007-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/futimes.c b/sysdeps/unix/sysv/linux/futimes.c index 87e31f2..57e0531 100644 --- a/sysdeps/unix/sysv/linux/futimes.c +++ b/sysdeps/unix/sysv/linux/futimes.c @@ -1,5 +1,5 @@ /* futimes -- change access and modification times of open file. Linux version. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/futimesat.c b/sysdeps/unix/sysv/linux/futimesat.c index e5f3e46..b9e01ad 100644 --- a/sysdeps/unix/sysv/linux/futimesat.c +++ b/sysdeps/unix/sysv/linux/futimesat.c @@ -1,5 +1,5 @@ /* futimesat -- Change access and modification times of file. Linux 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 diff --git a/sysdeps/unix/sysv/linux/fxstat.c b/sysdeps/unix/sysv/linux/fxstat.c index 5254cce..859fa01 100644 --- a/sysdeps/unix/sysv/linux/fxstat.c +++ b/sysdeps/unix/sysv/linux/fxstat.c @@ -1,5 +1,5 @@ /* fxstat using old-style Unix fstat system call. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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 @@ -38,7 +38,7 @@ __fxstat (int vers, int fd, struct stat *buf) { # if STAT_IS_KERNEL_STAT /* New kABIs which uses generic pre 64-bit time Linux ABI, - e.g. csky, nios2 */ + e.g. csky */ int r = INLINE_SYSCALL_CALL (fstat64, fd, buf); return r ?: stat_overflow (buf); # else diff --git a/sysdeps/unix/sysv/linux/fxstat64.c b/sysdeps/unix/sysv/linux/fxstat64.c index 230374c..5e8cbb9 100644 --- a/sysdeps/unix/sysv/linux/fxstat64.c +++ b/sysdeps/unix/sysv/linux/fxstat64.c @@ -1,5 +1,5 @@ /* fxstat64 using Linux fstat64/statx system call. - 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 @@ -61,7 +61,7 @@ ___fxstat64 (int vers, int fd, struct stat64 *buf) # endif #else /* All kABIs with non-LFS support, e.g. arm, csky, i386, hppa, m68k, - microblaze, mips32, nios2, sh, powerpc32, and sparc32. */ + microblaze, mips32, sh, powerpc32, and sparc32. */ return INLINE_SYSCALL_CALL (fstat64, fd, buf); #endif /* XSTAT_IS_XSTAT64 */ } diff --git a/sysdeps/unix/sysv/linux/fxstatat.c b/sysdeps/unix/sysv/linux/fxstatat.c index 5cb92a1..e729f9f 100644 --- a/sysdeps/unix/sysv/linux/fxstatat.c +++ b/sysdeps/unix/sysv/linux/fxstatat.c @@ -1,5 +1,5 @@ /* fxstatat used on fstatat, Linux implementation. - 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 @@ -34,7 +34,7 @@ __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag) { #if STAT_IS_KERNEL_STAT /* New kABIs which uses generic pre 64-bit time Linux ABI, e.g. - csky, nios2 */ + csky. */ if (vers == _STAT_VER_KERNEL) { int r = INLINE_SYSCALL_CALL (fstatat64, fd, file, st, flag); diff --git a/sysdeps/unix/sysv/linux/fxstatat64.c b/sysdeps/unix/sysv/linux/fxstatat64.c index 5255ca0..8645092 100644 --- a/sysdeps/unix/sysv/linux/fxstatat64.c +++ b/sysdeps/unix/sysv/linux/fxstatat64.c @@ -1,5 +1,5 @@ /* fxstatat64 used on fstatat64, Linux implementation. - 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 @@ -58,7 +58,7 @@ __fxstatat64 (int vers, int fd, const char *file, struct stat64 *st, int flag) # endif #else /* All kABIs with non-LFS support, e.g. arm, csky, i386, hppa, m68k, - microblaze, mips32, nios2, sh, powerpc32, and sparc32. */ + microblaze, mips32, sh, powerpc32, and sparc32. */ if (vers == _STAT_VER_LINUX) return INLINE_SYSCALL_CALL (fstatat64, fd, file, st, flag); #endif diff --git a/sysdeps/unix/sysv/linux/gai_sigqueue.c b/sysdeps/unix/sysv/linux/gai_sigqueue.c index 3610158..9d3bedf 100644 --- a/sysdeps/unix/sysv/linux/gai_sigqueue.c +++ b/sysdeps/unix/sysv/linux/gai_sigqueue.c @@ -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/gen-syscall-h.awk b/sysdeps/unix/sysv/linux/gen-syscall-h.awk index a54a7bf..ebd06d8 100644 --- a/sysdeps/unix/sysv/linux/gen-syscall-h.awk +++ b/sysdeps/unix/sysv/linux/gen-syscall-h.awk @@ -1,5 +1,5 @@ # Generate SYS_* macros from a list in a text file. -# 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/gentempfd.c b/sysdeps/unix/sysv/linux/gentempfd.c index 963e9d7..1cdadc1 100644 --- a/sysdeps/unix/sysv/linux/gentempfd.c +++ b/sysdeps/unix/sysv/linux/gentempfd.c @@ -1,5 +1,5 @@ /* Generate a temporary file descriptor. Linux version. - 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/getclktck.c b/sysdeps/unix/sysv/linux/getclktck.c index 5fe525b..5027a39 100644 --- a/sysdeps/unix/sysv/linux/getclktck.c +++ b/sysdeps/unix/sysv/linux/getclktck.c @@ -1,4 +1,4 @@ -/* 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/getcpu.c b/sysdeps/unix/sysv/linux/getcpu.c index 0e7c323..ad15f14 100644 --- a/sysdeps/unix/sysv/linux/getcpu.c +++ b/sysdeps/unix/sysv/linux/getcpu.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/getcwd.c b/sysdeps/unix/sysv/linux/getcwd.c index d05b83a..2e40a28 100644 --- a/sysdeps/unix/sysv/linux/getcwd.c +++ b/sysdeps/unix/sysv/linux/getcwd.c @@ -1,5 +1,5 @@ /* Determine current working directory. Linux 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/getdents.c b/sysdeps/unix/sysv/linux/getdents.c index 9ac6a4d..41f4535 100644 --- a/sysdeps/unix/sysv/linux/getdents.c +++ b/sysdeps/unix/sysv/linux/getdents.c @@ -1,5 +1,5 @@ /* Get directory entries. Linux non-LFS version. - Copyright (C) 1993-2024 Free Software Foundation, Inc. + Copyright (C) 1993-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/getdents64.c b/sysdeps/unix/sysv/linux/getdents64.c index 227fbf2..152b4f8 100644 --- a/sysdeps/unix/sysv/linux/getdents64.c +++ b/sysdeps/unix/sysv/linux/getdents64.c @@ -1,5 +1,5 @@ /* Get directory entries. Linux LFS 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 @@ -33,100 +33,3 @@ __getdents64 (int fd, void *buf, size_t nbytes) } libc_hidden_def (__getdents64) weak_alias (__getdents64, getdents64) - -#if _DIRENT_MATCHES_DIRENT64 -strong_alias (__getdents64, __getdents) -#else -# include <shlib-compat.h> - -# if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2) -# include <olddirent.h> -# include <unistd.h> - -static ssize_t -handle_overflow (int fd, __off64_t offset, ssize_t count) -{ - /* If this is the first entry in the buffer, we can report the - error. */ - if (offset == 0) - { - __set_errno (EOVERFLOW); - return -1; - } - - /* Otherwise, seek to the overflowing entry, so that the next call - will report the error, and return the data read so far. */ - if (__lseek64 (fd, offset, SEEK_SET) != 0) - return -1; - return count; -} - -ssize_t -__old_getdents64 (int fd, char *buf, size_t nbytes) -{ - /* We do not move the individual directory entries. This is only - possible if the target type (struct __old_dirent64) is smaller - than the source type. */ - _Static_assert (offsetof (struct __old_dirent64, d_name) - <= offsetof (struct dirent64, d_name), - "__old_dirent64 is larger than dirent64"); - _Static_assert (__alignof__ (struct __old_dirent64) - <= __alignof__ (struct dirent64), - "alignment of __old_dirent64 is larger than dirent64"); - - ssize_t retval = INLINE_SYSCALL_CALL (getdents64, fd, buf, nbytes); - if (retval > 0) - { - /* This is the marker for the first entry. Offset 0 is reserved - for the first entry (see rewinddir). Here, we use it as a - marker for the first entry in the buffer. We never actually - seek to offset 0 because handle_overflow reports the error - directly, so it does not matter that the offset is incorrect - if entries have been read from the descriptor before (so that - the descriptor is not actually at offset 0). */ - __off64_t previous_offset = 0; - - char *p = buf; - char *end = buf + retval; - while (p < end) - { - struct dirent64 *source = (struct dirent64 *) p; - - /* Copy out the fixed-size data. */ - __ino_t ino = source->d_ino; - __off64_t offset = source->d_off; - unsigned int reclen = source->d_reclen; - unsigned char type = source->d_type; - - /* Check for ino_t overflow. */ - if (__glibc_unlikely (ino != source->d_ino)) - return handle_overflow (fd, previous_offset, p - buf); - - /* Convert to the target layout. Use a separate struct and - memcpy to side-step aliasing issues. */ - struct __old_dirent64 result; - result.d_ino = ino; - result.d_off = offset; - result.d_reclen = reclen; - result.d_type = type; - - /* Write the fixed-sized part of the result to the - buffer. */ - size_t result_name_offset = offsetof (struct __old_dirent64, d_name); - memcpy (p, &result, result_name_offset); - - /* Adjust the position of the name if necessary. Copy - everything until the end of the record, including the - terminating NUL byte. */ - if (result_name_offset != offsetof (struct dirent64, d_name)) - memmove (p + result_name_offset, source->d_name, - reclen - offsetof (struct dirent64, d_name)); - - p += reclen; - previous_offset = offset; - } - } - return retval; -} -# endif /* SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2) */ -#endif /* _DIRENT_MATCHES_DIRENT64 */ diff --git a/sysdeps/unix/sysv/linux/getdirentries.c b/sysdeps/unix/sysv/linux/getdirentries.c index fcd5d32..0d9ee3d 100644 --- a/sysdeps/unix/sysv/linux/getdirentries.c +++ b/sysdeps/unix/sysv/linux/getdirentries.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1993-2024 Free Software Foundation, Inc. +/* Copyright (C) 1993-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/getdirentries64.c b/sysdeps/unix/sysv/linux/getdirentries64.c index 3bcc414..7edc373 100644 --- a/sysdeps/unix/sysv/linux/getdirentries64.c +++ b/sysdeps/unix/sysv/linux/getdirentries64.c @@ -1,5 +1,5 @@ /* Get directory entries in a filesystem-independent format. LFS version. - Copyright (C) 1993-2024 Free Software Foundation, Inc. + Copyright (C) 1993-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/getdtsz.c b/sysdeps/unix/sysv/linux/getdtsz.c index 68d1176..32fd6df 100644 --- a/sysdeps/unix/sysv/linux/getdtsz.c +++ b/sysdeps/unix/sysv/linux/getdtsz.c @@ -1,4 +1,4 @@ -/* 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/getentropy.c b/sysdeps/unix/sysv/linux/getentropy.c index 2d8030a..a62c9fb 100644 --- a/sysdeps/unix/sysv/linux/getentropy.c +++ b/sysdeps/unix/sysv/linux/getentropy.c @@ -1,5 +1,5 @@ /* Implementation of getentropy based on the getrandom system call. - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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/gethostid.c b/sysdeps/unix/sysv/linux/gethostid.c index a4be8a7..b0869e2 100644 --- a/sysdeps/unix/sysv/linux/gethostid.c +++ b/sysdeps/unix/sysv/linux/gethostid.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/getipv4sourcefilter.c b/sysdeps/unix/sysv/linux/getipv4sourcefilter.c index 271eaa7..877c037 100644 --- a/sysdeps/unix/sysv/linux/getipv4sourcefilter.c +++ b/sysdeps/unix/sysv/linux/getipv4sourcefilter.c @@ -1,5 +1,5 @@ /* Get IPv4 source filter. Linux version. - Copyright (C) 2004-2024 Free Software Foundation, Inc. + Copyright (C) 2004-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/getitimer.c b/sysdeps/unix/sysv/linux/getitimer.c index dd1a4b5..efd60da 100644 --- a/sysdeps/unix/sysv/linux/getitimer.c +++ b/sysdeps/unix/sysv/linux/getitimer.c @@ -1,5 +1,5 @@ /* getitimer -- Get the state of an interval timer. Linux/32 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/getloadavg.c b/sysdeps/unix/sysv/linux/getloadavg.c index 6a9c958..2ab47e2 100644 --- a/sysdeps/unix/sysv/linux/getloadavg.c +++ b/sysdeps/unix/sysv/linux/getloadavg.c @@ -1,5 +1,5 @@ /* Get system load averages. Linux version. - 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/getlogin.c b/sysdeps/unix/sysv/linux/getlogin.c index 5019062..b439381 100644 --- a/sysdeps/unix/sysv/linux/getlogin.c +++ b/sysdeps/unix/sysv/linux/getlogin.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2010-2024 Free Software Foundation, Inc. +/* Copyright (C) 2010-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/getlogin_r.c b/sysdeps/unix/sysv/linux/getlogin_r.c index 8f8decc..f03ecd4 100644 --- a/sysdeps/unix/sysv/linux/getlogin_r.c +++ b/sysdeps/unix/sysv/linux/getlogin_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2010-2024 Free Software Foundation, Inc. +/* Copyright (C) 2010-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/getpagesize.c b/sysdeps/unix/sysv/linux/getpagesize.c index dd5e6fc..3de5c4e 100644 --- a/sysdeps/unix/sysv/linux/getpagesize.c +++ b/sysdeps/unix/sysv/linux/getpagesize.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2024 Free Software Foundation, Inc. +/* Copyright (C) 1991-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/getpeername.c b/sysdeps/unix/sysv/linux/getpeername.c index 86f9b73..a8da0aa 100644 --- a/sysdeps/unix/sysv/linux/getpeername.c +++ b/sysdeps/unix/sysv/linux/getpeername.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2015-2024 Free Software Foundation, Inc. +/* Copyright (C) 2015-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/getpriority.c b/sysdeps/unix/sysv/linux/getpriority.c index 89d0ee9..a9b84d5 100644 --- a/sysdeps/unix/sysv/linux/getpriority.c +++ b/sysdeps/unix/sysv/linux/getpriority.c @@ -1,5 +1,5 @@ /* getpriority for Linux. - 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/getpt.c b/sysdeps/unix/sysv/linux/getpt.c index 6b9eb7d..6748f6f 100644 --- a/sysdeps/unix/sysv/linux/getpt.c +++ b/sysdeps/unix/sysv/linux/getpt.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/getrandom-internal.h b/sysdeps/unix/sysv/linux/getrandom-internal.h new file mode 100644 index 0000000..67e6e56 --- /dev/null +++ b/sysdeps/unix/sysv/linux/getrandom-internal.h @@ -0,0 +1,29 @@ +/* Internal definitions for Linux getrandom implementation. + 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 + 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/>. */ + +#ifndef _GETRANDOM_INTERNAL_H +#define _GETRANDOM_INTERNAL_H + +#include <pthreadP.h> + +extern void __getrandom_early_init (_Bool) attribute_hidden; + +extern void __getrandom_fork_subprocess (void) attribute_hidden; +extern void __getrandom_vdso_release (struct pthread *curp) attribute_hidden; +extern void __getrandom_reset_state (struct pthread *curp) attribute_hidden; +#endif diff --git a/sysdeps/unix/sysv/linux/getrandom.c b/sysdeps/unix/sysv/linux/getrandom.c index 777d1de..6b7be5e 100644 --- a/sysdeps/unix/sysv/linux/getrandom.c +++ b/sysdeps/unix/sysv/linux/getrandom.c @@ -1,5 +1,5 @@ /* Implementation of the getrandom system call. - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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 @@ -20,13 +20,340 @@ #include <errno.h> #include <unistd.h> #include <sysdep-cancel.h> +#include <sysdep.h> +#include <sysdep-vdso.h> + +static inline ssize_t +getrandom_syscall (void *buffer, size_t length, unsigned int flags, + bool cancel) +{ + return cancel + ? SYSCALL_CANCEL (getrandom, buffer, length, flags) + : INLINE_SYSCALL_CALL (getrandom, buffer, length, flags); +} + +#ifdef HAVE_GETRANDOM_VSYSCALL +# include <assert.h> +# include <ldsodefs.h> +# include <libc-lock.h> +# include <list.h> +# include <setvmaname.h> +# include <sys/mman.h> +# include <sys/sysinfo.h> +# include <tls-internal.h> + +/* These values will be initialized at loading time by calling the + _dl_vdso_getrandom with a special value. The 'state_size' is the opaque + state size per-thread allocated with a mmap using 'mmap_prot' and + 'mmap_flags' argument. */ +static uint32_t state_size; +static uint32_t state_size_cache_aligned; +static uint32_t mmap_prot; +static uint32_t mmap_flags; + +/* The function below are used on reentracy handling with (i.e. SA_NODEFER). + Before allocating a new state or issue the vDSO, atomically read the + current thread buffer, and if this is already reserved (is_reserved_ptr) + fallback to the syscall. Otherwise, reserve the buffer by atomically + setting the LSB of the opaque state pointer. The bit is cleared after the + vDSO is called, or before issuing the fallback syscall. */ + +static inline void *reserve_ptr (void *p) +{ + return (void *) ((uintptr_t) (p) | 1UL); +} + +static inline void *release_ptr (void *p) +{ + return (void *) ((uintptr_t) (p) & ~1UL); +} + +static inline bool is_reserved_ptr (void *p) +{ + return (uintptr_t) (p) & 1UL; +} + +static struct +{ + __libc_lock_define (, lock); + + void **states; /* Queue of opaque states allocated with the kernel + provided flags and used on getrandom vDSO call. */ + size_t len; /* Number of available free states in the queue. */ + size_t total; /* Number of states allocated from the kernel. */ + size_t cap; /* Total number of states that 'states' can hold before + needed to be resized. */ +} grnd_alloc = { + .lock = LLL_LOCK_INITIALIZER +}; + +static bool +vgetrandom_get_state_alloc (void) +{ + /* Start by allocating one page for the opaque states. */ + size_t block_size = ALIGN_UP (state_size_cache_aligned, GLRO(dl_pagesize)); + size_t states_per_page = GLRO (dl_pagesize) / state_size_cache_aligned; + void *block = __mmap (NULL, GLRO(dl_pagesize), mmap_prot, mmap_flags, -1, 0); + if (block == MAP_FAILED) + return false; + __set_vma_name (block, block_size, " glibc: getrandom"); + + if (grnd_alloc.total + states_per_page > grnd_alloc.cap) + { + /* Use a new mmap instead of trying to mremap. It avoids a + potential multithread fork issue where fork is called just after + mremap returns but before assigning to the grnd_alloc.states, + thus making the its value invalid in the child. */ + void *old_states = grnd_alloc.states; + size_t new_states_size = ALIGN_UP ((grnd_alloc.total + states_per_page) + * sizeof (*grnd_alloc.states), + GLRO(dl_pagesize)); + + /* There is no need to memcpy any opaque state information because + all the allocated opaque states are assigned to running threads + (meaning that if we iterate over them we can reconstruct the state + list). */ + void **states = __mmap (NULL, new_states_size, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + if (states == MAP_FAILED) + { + __munmap (block, block_size); + return false; + } + + /* Atomically replace the old state, so if a fork happens the child + process will see a consistent free state buffer. The size might + not be updated, but it does not really matter since the buffer is + always increased. */ + grnd_alloc.states = states; + atomic_thread_fence_seq_cst (); + if (old_states != NULL) + __munmap (old_states, grnd_alloc.cap * sizeof (*grnd_alloc.states)); + + __set_vma_name (states, new_states_size, " glibc: getrandom states"); + grnd_alloc.cap = new_states_size / sizeof (*grnd_alloc.states); + atomic_thread_fence_seq_cst (); + } + + for (size_t i = 0; i < states_per_page; ++i) + { + /* There is no need to handle states that straddle a page because + we allocate only one page. */ + grnd_alloc.states[i] = block; + block += state_size_cache_aligned; + } + /* Concurrent fork should not observe the previous pointer value. */ + grnd_alloc.len = states_per_page; + grnd_alloc.total += states_per_page; + atomic_thread_fence_seq_cst (); + + return true; +} + +/* Allocate an opaque state for vgetrandom. If the grnd_alloc does not have + any, mmap() another page of them using the vgetrandom parameters. */ +static void * +vgetrandom_get_state (void) +{ + void *state = NULL; + + /* The signal blocking avoid the potential issue where _Fork() (which is + async-signal-safe) is called with the lock taken. The function is + called only once during thread lifetime, so the overhead should be + minimal. */ + internal_sigset_t set; + internal_signal_block_all (&set); + __libc_lock_lock (grnd_alloc.lock); + + if (grnd_alloc.len > 0 || vgetrandom_get_state_alloc ()) + state = grnd_alloc.states[--grnd_alloc.len]; + + /* Barrier needed by fork: The state must be gone from the array + through len update before it becomes visible in the TCB. (There + is also a release barrier implied by the unlock, but issue a + stronger barrier to help fork.) */ + atomic_thread_fence_seq_cst (); + __libc_lock_unlock (grnd_alloc.lock); + internal_signal_restore_set (&set); + + return state; +} + +/* Returns true when vgetrandom is used successfully. Returns false if the + syscall fallback should be issued in the case the vDSO is not present, in + the case of reentrancy, or if any memory allocation fails. */ +static ssize_t +getrandom_vdso (void *buffer, size_t length, unsigned int flags, bool cancel) +{ + if (__glibc_unlikely (state_size == 0)) + return getrandom_syscall (buffer, length, flags, cancel); + + struct pthread *self = THREAD_SELF; + + void *state = atomic_load_relaxed (&self->getrandom_buf); + if (is_reserved_ptr (state)) + return getrandom_syscall (buffer, length, flags, cancel); + atomic_store_relaxed (&self->getrandom_buf, reserve_ptr (state)); + __atomic_signal_fence (__ATOMIC_ACQ_REL); + + bool r = false; + if (state == NULL) + { + state = vgetrandom_get_state (); + if (state == NULL) + goto out; + } + + /* Since the vDSO implementation does not issue the syscall with the + cancellation bridge (__syscall_cancel_arch), use GRND_NONBLOCK so there + is no potential unbounded blocking in the kernel. It should be a rare + situation, only at system startup when RNG is not initialized. */ + long int ret = INTERNAL_VSYSCALL_CALL (GLRO (dl_vdso_getrandom), 5, + buffer, + length, + flags | GRND_NONBLOCK, + state, + state_size); + if (INTERNAL_SYSCALL_ERROR_P (ret)) + { + /* Fallback to the syscall if the kernel would block. */ + int err = INTERNAL_SYSCALL_ERRNO (ret); + if (err == EAGAIN && !(flags & GRND_NONBLOCK)) + goto out; + + __set_errno (err); + ret = -1; + } + r = true; + +out: + __atomic_signal_fence (__ATOMIC_ACQ_REL); + atomic_store_relaxed (&self->getrandom_buf, state); + return r ? ret : getrandom_syscall (buffer, length, flags, cancel); +} +#endif + +void +__getrandom_early_init (_Bool initial) +{ +#ifdef HAVE_GETRANDOM_VSYSCALL + /* libcs loaded for audit modules, dlmopen, etc. fallback to syscall. */ + if (initial && (GLRO (dl_vdso_getrandom) != NULL)) + { + /* Used to query the vDSO for the required mmap flags and the opaque + per-thread state size. Defined by linux/random.h. */ + struct vgetrandom_opaque_params + { + uint32_t size_of_opaque_state; + uint32_t mmap_prot; + uint32_t mmap_flags; + uint32_t reserved[13]; + } params; + long int ret = INTERNAL_VSYSCALL_CALL (GLRO(dl_vdso_getrandom), + 5, NULL, 0, 0, ¶ms, ~0UL); + if (ret == 0) + { + /* Align each opaque state to L1 data cache size to avoid false + sharing. If the size can not be obtained, use the kernel + provided one. */ + state_size = params.size_of_opaque_state; + + long int ld1sz = __sysconf (_SC_LEVEL1_DCACHE_LINESIZE); + if (ld1sz <= 0) + ld1sz = 1; + state_size_cache_aligned = ALIGN_UP (state_size, ld1sz); + /* Do not enable vDSO if the required opaque state size is larger + than a page because we only allocate one page per time to hold + the states. */ + if (state_size_cache_aligned > GLRO(dl_pagesize)) + { + state_size = 0; + return; + } + mmap_prot = params.mmap_prot; + mmap_flags = params.mmap_flags; + } + } +#endif +} + +/* Re-add the state state from CURP on the free list. This function is + called after fork returns in the child, so no locking is required. */ +void +__getrandom_reset_state (struct pthread *curp) +{ +#ifdef HAVE_GETRANDOM_VSYSCALL + /* The pointer can be reserved if the fork happened during a + getrandom call. */ + void *buf = release_ptr (curp->getrandom_buf); + if (grnd_alloc.states == NULL || buf == NULL) + return; + assert (grnd_alloc.len < grnd_alloc.cap); + grnd_alloc.states[grnd_alloc.len++] = release_ptr (curp->getrandom_buf); + curp->getrandom_buf = NULL; +#endif +} + +/* Called when a thread terminates, and adds its random buffer back into the + allocator pool for use in a future thread. This is called by + pthread_create during thread termination, and after signal has been + blocked. */ +void +__getrandom_vdso_release (struct pthread *curp) +{ +#ifdef HAVE_GETRANDOM_VSYSCALL + /* The pointer can be reserved if the thread was canceled in a + signal handler. */ + void *buf = release_ptr (curp->getrandom_buf); + if (buf == NULL) + return; + + __libc_lock_lock (grnd_alloc.lock); + + size_t len = grnd_alloc.len; + grnd_alloc.states[len] = curp->getrandom_buf; + curp->getrandom_buf = NULL; + /* Barrier needed by fork: The state must vanish from the TCB before + it becomes visible in the states array. Also avoid exposing the + previous entry value at the same index in the states array (which + may be in use by another thread). */ + atomic_thread_fence_seq_cst (); + grnd_alloc.len = len + 1; + __libc_lock_unlock (grnd_alloc.lock); +#endif +} + +/* Reset the internal lock state in case another thread has locked while + this thread calls fork. The stale thread states will be handled by + reclaim_stacks which calls __getrandom_reset_state on each thread. */ +void +__getrandom_fork_subprocess (void) +{ +#ifdef HAVE_GETRANDOM_VSYSCALL + grnd_alloc.lock = LLL_LOCK_INITIALIZER; +#endif +} + +ssize_t +__getrandom_nocancel (void *buffer, size_t length, unsigned int flags) +{ +#ifdef HAVE_GETRANDOM_VSYSCALL + return getrandom_vdso (buffer, length, flags, false); +#else + return getrandom_syscall (buffer, length, flags, false); +#endif +} /* Write up to LENGTH bytes of randomness starting at BUFFER. Return the number of bytes written, or -1 on error. */ ssize_t __getrandom (void *buffer, size_t length, unsigned int flags) { - return SYSCALL_CANCEL (getrandom, buffer, length, flags); +#ifdef HAVE_GETRANDOM_VSYSCALL + return getrandom_vdso (buffer, length, flags, true); +#else + return getrandom_syscall (buffer, length, flags, true); +#endif } libc_hidden_def (__getrandom) weak_alias (__getrandom, getrandom) diff --git a/sysdeps/unix/sysv/linux/getrlimit.c b/sysdeps/unix/sysv/linux/getrlimit.c index 2519d0c..642eb2c 100644 --- a/sysdeps/unix/sysv/linux/getrlimit.c +++ b/sysdeps/unix/sysv/linux/getrlimit.c @@ -1,5 +1,5 @@ /* Linux getrlimit implementation (32 bits rlim_t). - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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/getrlimit64.c b/sysdeps/unix/sysv/linux/getrlimit64.c index 451cef4..8500fe3 100644 --- a/sysdeps/unix/sysv/linux/getrlimit64.c +++ b/sysdeps/unix/sysv/linux/getrlimit64.c @@ -1,5 +1,5 @@ /* Linux getrlimit64 implementation (64 bits rlim_t). - Copyright (C) 2010-2024 Free Software Foundation, Inc. + Copyright (C) 2010-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/getrusage.c b/sysdeps/unix/sysv/linux/getrusage.c index 9126e1f..0501b7d 100644 --- a/sysdeps/unix/sysv/linux/getrusage.c +++ b/sysdeps/unix/sysv/linux/getrusage.c @@ -1,5 +1,5 @@ /* getrusage -- get the rusage struct. Linux 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/getsockname.c b/sysdeps/unix/sysv/linux/getsockname.c index 6c04bee..e6fe14d 100644 --- a/sysdeps/unix/sysv/linux/getsockname.c +++ b/sysdeps/unix/sysv/linux/getsockname.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2015-2024 Free Software Foundation, Inc. +/* Copyright (C) 2015-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/getsockopt.c b/sysdeps/unix/sysv/linux/getsockopt.c index e6aa5e4..fcce4ff 100644 --- a/sysdeps/unix/sysv/linux/getsockopt.c +++ b/sysdeps/unix/sysv/linux/getsockopt.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2015-2024 Free Software Foundation, Inc. +/* Copyright (C) 2015-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/getsourcefilter.c b/sysdeps/unix/sysv/linux/getsourcefilter.c index a5124d5..745b2f6 100644 --- a/sysdeps/unix/sysv/linux/getsourcefilter.c +++ b/sysdeps/unix/sysv/linux/getsourcefilter.c @@ -1,5 +1,5 @@ /* Get source filter. Linux version. - Copyright (C) 2004-2024 Free Software Foundation, Inc. + Copyright (C) 2004-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/getsourcefilter.h b/sysdeps/unix/sysv/linux/getsourcefilter.h index 544b5d6..ed884f3 100644 --- a/sysdeps/unix/sysv/linux/getsourcefilter.h +++ b/sysdeps/unix/sysv/linux/getsourcefilter.h @@ -1,5 +1,5 @@ /* __get_sol function prototype. - 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/getsysstats.c b/sysdeps/unix/sysv/linux/getsysstats.c index 1c041b7..c3bc83f 100644 --- a/sysdeps/unix/sysv/linux/getsysstats.c +++ b/sysdeps/unix/sysv/linux/getsysstats.c @@ -1,5 +1,5 @@ /* Determine various system internal values, Linux 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/gettimeofday.c b/sysdeps/unix/sysv/linux/gettimeofday.c index 7ab147c..e2a2155 100644 --- a/sysdeps/unix/sysv/linux/gettimeofday.c +++ b/sysdeps/unix/sysv/linux/gettimeofday.c @@ -1,5 +1,5 @@ /* gettimeofday - set time. Linux 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 @@ -31,23 +31,23 @@ static int __gettimeofday_syscall (struct timeval *restrict tv, void *restrict tz) { - if (__glibc_unlikely (tz != 0)) + if (__glibc_unlikely (tz != NULL)) memset (tz, 0, sizeof *tz); return INLINE_SYSCALL_CALL (gettimeofday, tv, tz); } # undef INIT_ARCH -# define INIT_ARCH() \ - void *vdso_gettimeofday = dl_vdso_vsym (HAVE_GETTIMEOFDAY_VSYSCALL) +# define INIT_ARCH() libc_ifunc (__gettimeofday, - vdso_gettimeofday ? VDSO_IFUNC_RET (vdso_gettimeofday) - : (void *) __gettimeofday_syscall) + GLRO(dl_vdso_gettimeofday) != NULL + ? VDSO_IFUNC_RET (GLRO(dl_vdso_gettimeofday)) + : (void *) __gettimeofday_syscall) # else int __gettimeofday (struct timeval *restrict tv, void *restrict tz) { - if (__glibc_unlikely (tz != 0)) + if (__glibc_unlikely (tz != NULL)) memset (tz, 0, sizeof *tz); return INLINE_VSYSCALL (gettimeofday, 2, tv, tz); diff --git a/sysdeps/unix/sysv/linux/glibcsyscalls.py b/sysdeps/unix/sysv/linux/glibcsyscalls.py index 1cf2fb9..8604d10 100644 --- a/sysdeps/unix/sysv/linux/glibcsyscalls.py +++ b/sysdeps/unix/sysv/linux/glibcsyscalls.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 # Helpers for glibc system call list processing. -# 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/glob-lstat-compat.c b/sysdeps/unix/sysv/linux/glob-lstat-compat.c index 07bdec0..0162bab 100644 --- a/sysdeps/unix/sysv/linux/glob-lstat-compat.c +++ b/sysdeps/unix/sysv/linux/glob-lstat-compat.c @@ -1,6 +1,6 @@ /* Compat glob which does not use gl_lstat for GLOB_ALTDIRFUNC. Linux version which handles LFS when required. - 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/glob.c b/sysdeps/unix/sysv/linux/glob.c index 63057fd..e08c356 100644 --- a/sysdeps/unix/sysv/linux/glob.c +++ b/sysdeps/unix/sysv/linux/glob.c @@ -1,5 +1,5 @@ /* Find pathnames matching a pattern. Linux version. - 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/glob64-lstat-compat.c b/sysdeps/unix/sysv/linux/glob64-lstat-compat.c index cc91180..02545b5 100644 --- a/sysdeps/unix/sysv/linux/glob64-lstat-compat.c +++ b/sysdeps/unix/sysv/linux/glob64-lstat-compat.c @@ -1,6 +1,6 @@ /* Compat glob which does not use gl_lstat for GLOB_ALTDIRFUNC. Linux version which handles LFS when required. - 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/glob64-time64.c b/sysdeps/unix/sysv/linux/glob64-time64.c index 36c2df3..9575ce6 100644 --- a/sysdeps/unix/sysv/linux/glob64-time64.c +++ b/sysdeps/unix/sysv/linux/glob64-time64.c @@ -1,5 +1,5 @@ /* Find pathnames matching a pattern. Linux version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/glob64.c b/sysdeps/unix/sysv/linux/glob64.c index d0e8daf..c0686e2 100644 --- a/sysdeps/unix/sysv/linux/glob64.c +++ b/sysdeps/unix/sysv/linux/glob64.c @@ -1,5 +1,5 @@ /* Find pathnames matching a pattern. Linux version. - 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/globfree.c b/sysdeps/unix/sysv/linux/globfree.c index 536eb0e..5f169ed 100644 --- a/sysdeps/unix/sysv/linux/globfree.c +++ b/sysdeps/unix/sysv/linux/globfree.c @@ -1,6 +1,6 @@ /* Frees the dynamically allocated storage from an earlier call to glob. Linux version. - 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/globfree64-time64.c b/sysdeps/unix/sysv/linux/globfree64-time64.c index 0fa87b2..05adcf8 100644 --- a/sysdeps/unix/sysv/linux/globfree64-time64.c +++ b/sysdeps/unix/sysv/linux/globfree64-time64.c @@ -1,6 +1,6 @@ /* Frees the dynamically allocated storage from an earlier call to glob. Linux version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/globfree64.c b/sysdeps/unix/sysv/linux/globfree64.c index 48d7de4..e39a5ab 100644 --- a/sysdeps/unix/sysv/linux/globfree64.c +++ b/sysdeps/unix/sysv/linux/globfree64.c @@ -1,6 +1,6 @@ /* Frees the dynamically allocated storage from an earlier call to glob. Linux version. - 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/grantpt.c b/sysdeps/unix/sysv/linux/grantpt.c index 5e29c9e..83f9ba5 100644 --- a/sysdeps/unix/sysv/linux/grantpt.c +++ b/sysdeps/unix/sysv/linux/grantpt.c @@ -1,5 +1,5 @@ /* grantpt implementation for Linux. - Copyright (C) 1998-2024 Free Software Foundation, Inc. + Copyright (C) 1998-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/hppa/Makefile b/sysdeps/unix/sysv/linux/hppa/Makefile index 2e031e2..9eebe8e 100644 --- a/sysdeps/unix/sysv/linux/hppa/Makefile +++ b/sysdeps/unix/sysv/linux/hppa/Makefile @@ -15,6 +15,11 @@ test-xfail-check-wx-segment = * endif # $(subdir) == elf +ifeq ($(subdir),misc) +sysdep_routines += cacheflush +sysdep_headers += sys/cachectl.h +endif + ifeq ($(subdir),debug) test-xfail-tst-ssp-1 = $(have-ssp) endif # $(subdir) == debug diff --git a/sysdeps/unix/sysv/linux/hppa/Versions b/sysdeps/unix/sysv/linux/hppa/Versions index 78528e5..1f83840 100644 --- a/sysdeps/unix/sysv/linux/hppa/Versions +++ b/sysdeps/unix/sysv/linux/hppa/Versions @@ -23,4 +23,7 @@ libc { GLIBC_2.19 { fanotify_mark; } + GLIBC_2.41 { + cacheflush; + } } diff --git a/sysdeps/unix/sysv/linux/hppa/____longjmp_chk.c b/sysdeps/unix/sysv/linux/hppa/____longjmp_chk.c index 9eb893d..845507b 100644 --- a/sysdeps/unix/sysv/linux/hppa/____longjmp_chk.c +++ b/sysdeps/unix/sysv/linux/hppa/____longjmp_chk.c @@ -1,4 +1,4 @@ -/* 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/hppa/arch-syscall.h b/sysdeps/unix/sysv/linux/hppa/arch-syscall.h index 08b153f..d8ffab9 100644 --- a/sysdeps/unix/sysv/linux/hppa/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/hppa/arch-syscall.h @@ -124,6 +124,7 @@ #define __NR_gettimeofday 78 #define __NR_getuid 24 #define __NR_getxattr 241 +#define __NR_getxattrat 464 #define __NR_init_module 128 #define __NR_inotify_add_watch 270 #define __NR_inotify_init 269 @@ -157,6 +158,7 @@ #define __NR_listen 32 #define __NR_listmount 458 #define __NR_listxattr 244 +#define __NR_listxattrat 465 #define __NR_llistxattr 245 #define __NR_lookup_dcookie 223 #define __NR_lremovexattr 248 @@ -212,6 +214,7 @@ #define __NR_open 5 #define __NR_open_by_handle_at 326 #define __NR_open_tree 428 +#define __NR_open_tree_attr 467 #define __NR_openat 275 #define __NR_openat2 437 #define __NR_pause 29 @@ -259,6 +262,7 @@ #define __NR_recvmsg 184 #define __NR_remap_file_pages 227 #define __NR_removexattr 247 +#define __NR_removexattrat 466 #define __NR_rename 38 #define __NR_renameat 282 #define __NR_renameat2 337 @@ -324,6 +328,7 @@ #define __NR_settimeofday 79 #define __NR_setuid 23 #define __NR_setxattr 238 +#define __NR_setxattrat 463 #define __NR_sgetmask 68 #define __NR_shmat 192 #define __NR_shmctl 195 diff --git a/sysdeps/unix/sysv/linux/hppa/atomic-machine.h b/sysdeps/unix/sysv/linux/hppa/atomic-machine.h index f1c9573..85b820d 100644 --- a/sysdeps/unix/sysv/linux/hppa/atomic-machine.h +++ b/sysdeps/unix/sysv/linux/hppa/atomic-machine.h @@ -1,4 +1,4 @@ -/* 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/hppa/bits/epoll.h b/sysdeps/unix/sysv/linux/hppa/bits/epoll.h index e91fddd..8a4b507 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/epoll.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/epoll.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2024 Free Software Foundation, Inc. +/* Copyright (C) 2002-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/hppa/bits/errno.h b/sysdeps/unix/sysv/linux/hppa/bits/errno.h index 84052e8..cca71b0 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/errno.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/errno.h @@ -1,5 +1,5 @@ /* Error constants. Linux/HPPA specific 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/hppa/bits/eventfd.h b/sysdeps/unix/sysv/linux/hppa/bits/eventfd.h index d825ee2..c86e421 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/eventfd.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/eventfd.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/hppa/bits/fcntl.h b/sysdeps/unix/sysv/linux/hppa/bits/fcntl.h index 096e341..009737e 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/fcntl.h @@ -1,5 +1,5 @@ /* O_*, F_*, FD_* bit values for Linux. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/hppa/bits/inotify.h b/sysdeps/unix/sysv/linux/hppa/bits/inotify.h index 31354ed..9d35862 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/inotify.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/inotify.h @@ -1,4 +1,4 @@ -/* 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 diff --git a/sysdeps/unix/sysv/linux/hppa/bits/ioctls.h b/sysdeps/unix/sysv/linux/hppa/bits/ioctls.h index f0b0ffa..6563be8 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/ioctls.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/ioctls.h @@ -1,4 +1,4 @@ -/* 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/hppa/bits/ipc-perm.h b/sysdeps/unix/sysv/linux/hppa/bits/ipc-perm.h index 4dab95c..07cda67 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/ipc-perm.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/ipc-perm.h @@ -1,5 +1,5 @@ /* struct ipc_perm definition. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/hppa/bits/mman.h b/sysdeps/unix/sysv/linux/hppa/bits/mman.h index 111e9e9..b73ae2e 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/mman.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/mman.h @@ -1,5 +1,5 @@ /* Definitions for POSIX memory map interface. Linux/HPPA 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/hppa/bits/procfs.h b/sysdeps/unix/sysv/linux/hppa/bits/procfs.h index cc7d33a..ad169c3 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/procfs.h @@ -1,5 +1,5 @@ /* Types for registers for sys/procfs.h. HPPA 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/hppa/bits/shmlba.h b/sysdeps/unix/sysv/linux/hppa/bits/shmlba.h index 772f3e6..6dabe4b 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/shmlba.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/shmlba.h @@ -1,5 +1,5 @@ /* Define SHMLBA. HPPA 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/hppa/bits/sigaction.h b/sysdeps/unix/sysv/linux/hppa/bits/sigaction.h index 17d1843..0ef9742 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/sigaction.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/sigaction.h @@ -1,5 +1,5 @@ /* Definitions for Linux/HPPA sigaction. - 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/hppa/bits/signalfd.h b/sysdeps/unix/sysv/linux/hppa/bits/signalfd.h index 3bc8889..9ea2c46 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/signalfd.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/signalfd.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/hppa/bits/signum-arch.h b/sysdeps/unix/sysv/linux/hppa/bits/signum-arch.h index 10a9405..d959131 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/signum-arch.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/signum-arch.h @@ -1,5 +1,5 @@ /* Signal number definitions. Linux/HPPA version. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/hppa/bits/socket-constants.h b/sysdeps/unix/sysv/linux/hppa/bits/socket-constants.h index 80a76a1..4a4ba8e 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/socket-constants.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/socket-constants.h @@ -1,5 +1,5 @@ /* Socket constants which vary among Linux architectures. Version for hppa. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/hppa/bits/socket_type.h b/sysdeps/unix/sysv/linux/hppa/bits/socket_type.h index ce42be8..93d7f9a 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/socket_type.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/socket_type.h @@ -1,5 +1,5 @@ /* Define enum __socket_type for Linux/HP-PARISC. - Copyright (C) 2012-2024 Free Software Foundation, Inc. + Copyright (C) 2012-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/hppa/bits/struct_stat.h b/sysdeps/unix/sysv/linux/hppa/bits/struct_stat.h index 09ea400..13e0b9f 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/struct_stat.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/struct_stat.h @@ -1,5 +1,5 @@ /* Definition for struct stat. Linux/hppa 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/hppa/bits/timerfd.h b/sysdeps/unix/sysv/linux/hppa/bits/timerfd.h index bbac12c..47782dd 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/timerfd.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/timerfd.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/hppa/bits/timesize.h b/sysdeps/unix/sysv/linux/hppa/bits/timesize.h index 7c6f2ef..fe83909 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/timesize.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/timesize.h @@ -1,5 +1,5 @@ /* Bit size of the time_t type at glibc build time, Linux/HPPA. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/hppa/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_msqid_ds.h index 4995e0a..31dd5a5 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_msqid_ds.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_msqid_ds.h @@ -1,5 +1,5 @@ /* Linux/HPPA implementation of the SysV message struct msqid_ds. - 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/hppa/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h index df88949..adf43a6 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h @@ -1,5 +1,5 @@ /* HPPA implementation of the semaphore struct semid_ds - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/hppa/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h index cb3b030..9e332eb 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h @@ -1,5 +1,5 @@ /* Linux/HPPA implementation of the shared memory struct shmid_ds. - 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/hppa/bits/typesizes.h b/sysdeps/unix/sysv/linux/hppa/bits/typesizes.h index 18498e3..f4cfb48 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/typesizes.h @@ -1,5 +1,5 @@ /* bits/typesizes.h -- underlying types for *_t. HPPA version. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/hppa/bits/wordsize.h b/sysdeps/unix/sysv/linux/hppa/bits/wordsize.h index 6ecbfe7..be457d8 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/wordsize.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/wordsize.h @@ -1,4 +1,4 @@ -/* 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/hppa/clone.S b/sysdeps/unix/sysv/linux/hppa/clone.S index a31afea..a4dc6eb 100644 --- a/sysdeps/unix/sysv/linux/hppa/clone.S +++ b/sysdeps/unix/sysv/linux/hppa/clone.S @@ -1,4 +1,4 @@ -/* 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 @@ -59,16 +59,6 @@ .text ENTRY(__clone) - /* Prologue */ - stwm %r4, 64(%sp) - .cfi_def_cfa_offset -64 - .cfi_offset 4, 0 - stw %sp, -4(%sp) -#ifdef PIC - stw %r19, -32(%sp) - .cfi_offset 19, 32 -#endif - /* Sanity check arguments. */ comib,=,n 0,%arg0,.LerrorSanity /* no NULL function pointers */ comib,=,n 0,%arg1,.LerrorSanity /* no NULL stack pointers */ @@ -87,54 +77,33 @@ ENTRY(__clone) /* User stack pointer is in the correct register already */ /* Load args from stack... */ - ldw -116(%sp), %r24 /* Load parent_tidptr */ - ldw -120(%sp), %r23 /* Load newtls */ - ldw -124(%sp), %r22 /* Load child_tidptr */ - - /* Save the PIC register. */ -#ifdef PIC - copy %r19, %r4 /* parent */ -#endif + ldw -52(%sp), %r24 /* Load parent_tidptr */ + ldw -56(%sp), %r23 /* Load newtls */ + ldw -60(%sp), %r22 /* Load child_tidptr */ /* Do the system call */ ble 0x100(%sr2, %r0) ldi __NR_clone, %r20 ldi -4096, %r1 - comclr,>>= %r1, %ret0, %r0 /* Note: unsigned compare. */ - b,n .LerrorRest - - /* Restore the PIC register. */ -#ifdef PIC - copy %r4, %r19 /* parent */ -#endif - + comb,<<,n %r1, %ret0, .LerrorRest /* Note: unsigned compare. */ comib,=,n 0, %ret0, .LthreadStart + bv,n %r0(%rp) - /* Successful return from the parent - No need to restore the PIC register, - since we return immediately. */ - - ldw -84(%sp), %rp - bv %r0(%rp) - ldwm -64(%sp), %r4 +.LerrorSanity: + /* Sanity checks failed, set errno to EINVAL. */ + ldi -EINVAL, %ret0 .LerrorRest: - /* Something bad happened -- no child created */ + /* Something bad happened -- no child created -- need a frame */ + ldo 64(%sp),%sp + .cfi_def_cfa_offset -64 bl __syscall_error, %rp sub %r0, %ret0, %arg0 ldw -84(%sp), %rp /* Return after setting errno, ret0 is set to -1 by __syscall_error. */ bv %r0(%rp) - ldwm -64(%sp), %r4 - -.LerrorSanity: - /* Sanity checks failed, return -1, and set errno to EINVAL. */ - bl __syscall_error, %rp - ldi EINVAL, %arg0 - ldw -84(%sp), %rp - bv %r0(%rp) - ldwm -64(%sp), %r4 + ldo -64(%sp), %sp .LthreadStart: /* Load up the arguments. */ @@ -144,20 +113,14 @@ ENTRY(__clone) /* $$dyncall fixes child's PIC register */ /* Call the user's function */ -#ifdef PIC - copy %r19, %r4 -#endif bl $$dyncall, %r31 copy %r31, %rp -#ifdef PIC - copy %r4, %r19 -#endif copy %r28, %r26 ble 0x100(%sr2, %r0) ldi __NR_exit, %r20 /* We should not return from exit. - We do not restore r4, or the stack state. */ + We do not restore the stack state. */ iitlbp %r0, (%sr0, %r0) PSEUDO_END(__clone) diff --git a/sysdeps/unix/sysv/linux/hppa/errlist-compat-data.h b/sysdeps/unix/sysv/linux/hppa/errlist-compat-data.h index fc626c9..97fd597 100644 --- a/sysdeps/unix/sysv/linux/hppa/errlist-compat-data.h +++ b/sysdeps/unix/sysv/linux/hppa/errlist-compat-data.h @@ -1,5 +1,5 @@ /* Linux sys_errlist compat symbol definitions. HPPA 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/hppa/getcontext.S b/sysdeps/unix/sysv/linux/hppa/getcontext.S index e4ef57e..ac0f610 100644 --- a/sysdeps/unix/sysv/linux/hppa/getcontext.S +++ b/sysdeps/unix/sysv/linux/hppa/getcontext.S @@ -1,5 +1,5 @@ /* Get current user context. - Copyright (C) 2008-2024 Free Software Foundation, Inc. + Copyright (C) 2008-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/hppa/kernel-features.h b/sysdeps/unix/sysv/linux/hppa/kernel-features.h index c4f09a2..1027141 100644 --- a/sysdeps/unix/sysv/linux/hppa/kernel-features.h +++ b/sysdeps/unix/sysv/linux/hppa/kernel-features.h @@ -1,6 +1,6 @@ /* Set flags signalling availability of kernel features based on given kernel version number. - Copyright (C) 2006-2024 Free Software Foundation, Inc. + Copyright (C) 2006-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/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist index fbcd60c..86b3fbd 100644 --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist @@ -2821,6 +2821,26 @@ GLIBC_2.4 sys_errlist D 0x400 GLIBC_2.4 sys_nerr D 0x4 GLIBC_2.4 unlinkat F GLIBC_2.4 unshare F +GLIBC_2.41 cacheflush 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 GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist index d29139e..d681d6e 100644 --- a/sysdeps/unix/sysv/linux/hppa/libm.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist @@ -878,3 +878,75 @@ GLIBC_2.40 logp1f32 F GLIBC_2.40 logp1f32x F GLIBC_2.40 logp1f64 F GLIBC_2.40 logp1l F +GLIBC_2.41 acospi F +GLIBC_2.41 acospif F +GLIBC_2.41 acospif32 F +GLIBC_2.41 acospif32x F +GLIBC_2.41 acospif64 F +GLIBC_2.41 acospil F +GLIBC_2.41 asinpi F +GLIBC_2.41 asinpif F +GLIBC_2.41 asinpif32 F +GLIBC_2.41 asinpif32x F +GLIBC_2.41 asinpif64 F +GLIBC_2.41 asinpil F +GLIBC_2.41 atan2pi F +GLIBC_2.41 atan2pif F +GLIBC_2.41 atan2pif32 F +GLIBC_2.41 atan2pif32x F +GLIBC_2.41 atan2pif64 F +GLIBC_2.41 atan2pil F +GLIBC_2.41 atanpi F +GLIBC_2.41 atanpif F +GLIBC_2.41 atanpif32 F +GLIBC_2.41 atanpif32x F +GLIBC_2.41 atanpif64 F +GLIBC_2.41 atanpil F +GLIBC_2.41 cospi F +GLIBC_2.41 cospif F +GLIBC_2.41 cospif32 F +GLIBC_2.41 cospif32x F +GLIBC_2.41 cospif64 F +GLIBC_2.41 cospil F +GLIBC_2.41 sinpi F +GLIBC_2.41 sinpif F +GLIBC_2.41 sinpif32 F +GLIBC_2.41 sinpif32x F +GLIBC_2.41 sinpif64 F +GLIBC_2.41 sinpil F +GLIBC_2.41 tanpi F +GLIBC_2.41 tanpif F +GLIBC_2.41 tanpif32 F +GLIBC_2.41 tanpif32x F +GLIBC_2.41 tanpif64 F +GLIBC_2.41 tanpil F +GLIBC_2.42 compoundn F +GLIBC_2.42 compoundnf F +GLIBC_2.42 compoundnf32 F +GLIBC_2.42 compoundnf32x F +GLIBC_2.42 compoundnf64 F +GLIBC_2.42 compoundnl F +GLIBC_2.42 pown F +GLIBC_2.42 pownf F +GLIBC_2.42 pownf32 F +GLIBC_2.42 pownf32x F +GLIBC_2.42 pownf64 F +GLIBC_2.42 pownl F +GLIBC_2.42 powr F +GLIBC_2.42 powrf F +GLIBC_2.42 powrf32 F +GLIBC_2.42 powrf32x F +GLIBC_2.42 powrf64 F +GLIBC_2.42 powrl F +GLIBC_2.42 rootn F +GLIBC_2.42 rootnf F +GLIBC_2.42 rootnf32 F +GLIBC_2.42 rootnf32x F +GLIBC_2.42 rootnf64 F +GLIBC_2.42 rootnl F +GLIBC_2.42 rsqrt F +GLIBC_2.42 rsqrtf F +GLIBC_2.42 rsqrtf32 F +GLIBC_2.42 rsqrtf32x F +GLIBC_2.42 rsqrtf64 F +GLIBC_2.42 rsqrtl F diff --git a/sysdeps/unix/sysv/linux/hppa/makecontext.c b/sysdeps/unix/sysv/linux/hppa/makecontext.c index 168f00e..4d35457 100644 --- a/sysdeps/unix/sysv/linux/hppa/makecontext.c +++ b/sysdeps/unix/sysv/linux/hppa/makecontext.c @@ -1,5 +1,5 @@ /* Create new context. - Copyright (C) 2008-2024 Free Software Foundation, Inc. + Copyright (C) 2008-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/hppa/setcontext.S b/sysdeps/unix/sysv/linux/hppa/setcontext.S index 7816c00..979f989 100644 --- a/sysdeps/unix/sysv/linux/hppa/setcontext.S +++ b/sysdeps/unix/sysv/linux/hppa/setcontext.S @@ -1,5 +1,5 @@ /* Install given context. - Copyright (C) 2008-2024 Free Software Foundation, Inc. + Copyright (C) 2008-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/hppa/sigcontextinfo.h b/sysdeps/unix/sysv/linux/hppa/sigcontextinfo.h index bc815f1..d1f4f3a 100644 --- a/sysdeps/unix/sysv/linux/hppa/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/hppa/sigcontextinfo.h @@ -1,5 +1,5 @@ /* Machine-dependent SIGPROF signal handler. PA-RISC version - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/hppa/socket-constants-time64.h b/sysdeps/unix/sysv/linux/hppa/socket-constants-time64.h index ca07f3f..42deec5 100644 --- a/sysdeps/unix/sysv/linux/hppa/socket-constants-time64.h +++ b/sysdeps/unix/sysv/linux/hppa/socket-constants-time64.h @@ -1,5 +1,5 @@ /* Compat socket constants used in 64-bit compat code. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/hppa/swapcontext.S b/sysdeps/unix/sysv/linux/hppa/swapcontext.S index e2fdb77..13e7f83 100644 --- a/sysdeps/unix/sysv/linux/hppa/swapcontext.S +++ b/sysdeps/unix/sysv/linux/hppa/swapcontext.S @@ -1,5 +1,5 @@ /* Swap to new context. - Copyright (C) 2008-2024 Free Software Foundation, Inc. + Copyright (C) 2008-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/nios2/sys/cachectl.h b/sysdeps/unix/sysv/linux/hppa/sys/cachectl.h index c39afca..5bcbfd5 100644 --- a/sysdeps/unix/sysv/linux/nios2/sys/cachectl.h +++ b/sysdeps/unix/sysv/linux/hppa/sys/cachectl.h @@ -1,5 +1,5 @@ -/* cacheflush - flush contents of instruction and/or data cache. - Copyright (C) 2015-2024 Free Software Foundation, Inc. +/* HPPA cache flushing interface. + 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 @@ -21,12 +21,15 @@ #include <features.h> +/* Get the kernel definition for the op bits. */ +#include <asm/cachectl.h> + __BEGIN_DECLS #ifdef __USE_MISC -extern int cacheflush (void *__addr, const int __nbytes, const int __op) __THROW; +extern int cacheflush (void *__addr, const int __nbytes, + const int __op) __THROW; #endif -extern int _flush_cache (char *__addr, const int __nbytes, const int __op) __THROW; __END_DECLS diff --git a/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h b/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h index 7c6ddb8..9823577 100644 --- a/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h @@ -1,4 +1,4 @@ -/* 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/hppa/syscall_cancel.S b/sysdeps/unix/sysv/linux/hppa/syscall_cancel.S new file mode 100644 index 0000000..19f95c9 --- /dev/null +++ b/sysdeps/unix/sysv/linux/hppa/syscall_cancel.S @@ -0,0 +1,81 @@ +/* Cancellable syscall wrapper. Linux/hppa 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, + long int nr, + long int arg1, + long int arg2, + long int arg3, + long int arg4, + long int arg5, + long int arg6) */ + + .text +ENTRY(__syscall_cancel_arch) + stw %r2,-20(%r30) + ldo 128(%r30),%r30 + cfi_def_cfa_offset (-128) + cfi_offset (2, -20) + ldw -180(%r30),%r28 + copy %r26,%r20 + stw %r28,-108(%r30) + ldw -184(%r30),%r28 + copy %r24,%r26 + stw %r28,-112(%r30) + ldw -188(%r30),%r28 + stw %r28,-116(%r30) + ldw -192(%r30),%r28 + stw %r4,-104(%r30) + stw %r28,-120(%r30) + copy %r25,%r28 + copy %r23,%r25 +#ifdef __PIC__ + stw %r19,-32(%r30) +#endif + cfi_offset (4, 24) + + .global __syscall_cancel_arch_start +__syscall_cancel_arch_start: + ldw 0(%r20),%r20 + bb,< %r20,31-TCB_CANCELED_BIT,1f + ldw -120(%r30),%r21 + ldw -116(%r30),%r22 + ldw -112(%r30),%r23 + ldw -108(%r30),%r24 + copy %r19, %r4 + ble 0x100(%sr2, %r0) + + .global __syscall_cancel_arch_end +__syscall_cancel_arch_end: + + copy %r28,%r20 + copy %r4,%r19 + + ldw -148(%r30),%r2 + ldw -104(%r30),%r4 + bv %r0(%r2) + ldo -128(%r30),%r30 +1: + bl __syscall_do_cancel,%r2 + nop + nop + +END(__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/hppa/syscalls.list b/sysdeps/unix/sysv/linux/hppa/syscalls.list index 12e4ade..b302011 100644 --- a/sysdeps/unix/sysv/linux/hppa/syscalls.list +++ b/sysdeps/unix/sysv/linux/hppa/syscalls.list @@ -8,5 +8,6 @@ listen - listen i:ii __listen listen shutdown - shutdown i:ii __shutdown shutdown socket - socket i:iii __socket socket socketpair - socketpair i:iiif __socketpair socketpair +cacheflush - cacheflush i:pii _flush_cache cacheflush personality EXTRA personality Ei:i __personality personality diff --git a/sysdeps/unix/sysv/linux/hppa/sysdep.c b/sysdeps/unix/sysv/linux/hppa/sysdep.c index 20179c4..2c979aa 100644 --- a/sysdeps/unix/sysv/linux/hppa/sysdep.c +++ b/sysdeps/unix/sysv/linux/hppa/sysdep.c @@ -1,4 +1,4 @@ -/* 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/hppa/sysdep.h b/sysdeps/unix/sysv/linux/hppa/sysdep.h index e47975e..bba525b 100644 --- a/sysdeps/unix/sysv/linux/hppa/sysdep.h +++ b/sysdeps/unix/sysv/linux/hppa/sysdep.h @@ -1,5 +1,5 @@ /* Assembler macros for PA-RISC. - 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/hppa/vfork.S b/sysdeps/unix/sysv/linux/hppa/vfork.S new file mode 100644 index 0000000..79dae15 --- /dev/null +++ b/sysdeps/unix/sysv/linux/hppa/vfork.S @@ -0,0 +1,53 @@ +/* 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 + 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 <sysdep.h> +#define _ERRNO_H 1 +#include <bits/errno.h> + +/* Clone the calling process, but without copying the whole address space. + The calling process is suspended until the new process exits or is + replaced by a call to `execve'. Return -1 for errors, 0 to the new process, + and the process ID of the new process to the old process. */ + +ENTRY (__vfork) + ble 0x100(%sr2, %r0) + ldi __NR_vfork, %r20 + + ldi -4096, %r1 + comclr,<< %r1, %ret0, %r0 /* Note: unsigned compare. */ + bv,n %r0(%rp) + + /* Something bad happened -- no child created -- we need a frame */ + ldo 64(%sp), %sp + .cfi_def_cfa_offset -64 + + /* Set errno */ + bl __syscall_error, %rp + sub %r0, %ret0, %arg0 + + /* ret0 is set to -1 by __syscall_error */ + ldw -84(%sp), %rp + bv %r0(%rp) + ldo -64(%sp), %sp + +PSEUDO_END (__vfork) +libc_hidden_def (__vfork) + +weak_alias (__vfork, vfork) +strong_alias (__vfork, __libc_vfork) diff --git a/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S b/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S index 35538f6..e468d34 100644 --- a/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S +++ b/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S @@ -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/i386/arch-syscall.h b/sysdeps/unix/sysv/linux/i386/arch-syscall.h index 500ca1e..196dfec 100644 --- a/sysdeps/unix/sysv/linux/i386/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/i386/arch-syscall.h @@ -140,6 +140,7 @@ #define __NR_getuid 24 #define __NR_getuid32 199 #define __NR_getxattr 229 +#define __NR_getxattrat 464 #define __NR_gtty 32 #define __NR_idle 112 #define __NR_init_module 128 @@ -178,6 +179,7 @@ #define __NR_listen 363 #define __NR_listmount 458 #define __NR_listxattr 232 +#define __NR_listxattrat 465 #define __NR_llistxattr 233 #define __NR_lock 53 #define __NR_lookup_dcookie 253 @@ -243,6 +245,7 @@ #define __NR_open 5 #define __NR_open_by_handle_at 342 #define __NR_open_tree 428 +#define __NR_open_tree_attr 467 #define __NR_openat 295 #define __NR_openat2 437 #define __NR_pause 29 @@ -294,6 +297,7 @@ #define __NR_recvmsg 372 #define __NR_remap_file_pages 257 #define __NR_removexattr 235 +#define __NR_removexattrat 466 #define __NR_rename 38 #define __NR_renameat 302 #define __NR_renameat2 353 @@ -367,6 +371,7 @@ #define __NR_setuid 23 #define __NR_setuid32 213 #define __NR_setxattr 226 +#define __NR_setxattrat 463 #define __NR_sgetmask 68 #define __NR_shmat 397 #define __NR_shmctl 396 diff --git a/sysdeps/unix/sysv/linux/i386/brk.c b/sysdeps/unix/sysv/linux/i386/brk.c index db0bede..b9aa65f 100644 --- a/sysdeps/unix/sysv/linux/i386/brk.c +++ b/sysdeps/unix/sysv/linux/i386/brk.c @@ -1,5 +1,5 @@ /* brk system call for Linux/i386. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/i386/clone.S b/sysdeps/unix/sysv/linux/i386/clone.S index 41b2049..5ed5a2e 100644 --- a/sysdeps/unix/sysv/linux/i386/clone.S +++ b/sysdeps/unix/sysv/linux/i386/clone.S @@ -1,4 +1,4 @@ -/* 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/i386/clone3.S b/sysdeps/unix/sysv/linux/i386/clone3.S index 6803e59..139cc02 100644 --- a/sysdeps/unix/sysv/linux/i386/clone3.S +++ b/sysdeps/unix/sysv/linux/i386/clone3.S @@ -1,5 +1,5 @@ /* The clone3 syscall wrapper. Linux/i386 version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/i386/dl-sysdep.h b/sysdeps/unix/sysv/linux/i386/dl-sysdep.h index 7c33130..60f6d4d 100644 --- a/sysdeps/unix/sysv/linux/i386/dl-sysdep.h +++ b/sysdeps/unix/sysv/linux/i386/dl-sysdep.h @@ -1,5 +1,5 @@ /* System-specific settings for dynamic linker code. i386 version. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/i386/dl-writev.h b/sysdeps/unix/sysv/linux/i386/dl-writev.h index b6e05ad..d0c03f9 100644 --- a/sysdeps/unix/sysv/linux/i386/dl-writev.h +++ b/sysdeps/unix/sysv/linux/i386/dl-writev.h @@ -1,5 +1,5 @@ /* Message-writing for the dynamic linker. Linux/i386 version. - Copyright (C) 2013-2024 Free Software Foundation, Inc. + Copyright (C) 2013-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/i386/getcontext.S b/sysdeps/unix/sysv/linux/i386/getcontext.S index 9c1ca3c..799cdd3 100644 --- a/sysdeps/unix/sysv/linux/i386/getcontext.S +++ b/sysdeps/unix/sysv/linux/i386/getcontext.S @@ -1,5 +1,5 @@ /* Save current context. - 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/i386/i686/dl-sysdep.h b/sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h index 203d7a2..0ecd9c5 100644 --- a/sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h +++ b/sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h @@ -1,5 +1,5 @@ /* System-specific settings for dynamic linker code. IA-32 version. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/i386/kernel-features.h b/sysdeps/unix/sysv/linux/i386/kernel-features.h index 446acfc..d21e3ba 100644 --- a/sysdeps/unix/sysv/linux/i386/kernel-features.h +++ b/sysdeps/unix/sysv/linux/i386/kernel-features.h @@ -1,6 +1,6 @@ /* Set flags signalling availability of kernel features based on given kernel version number. i386 version. - 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/i386/ldconfig.h b/sysdeps/unix/sysv/linux/i386/ldconfig.h index 147ca09..c15c0ea 100644 --- a/sysdeps/unix/sysv/linux/i386/ldconfig.h +++ b/sysdeps/unix/sysv/linux/i386/ldconfig.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/i386/libc-do-syscall-int80.S b/sysdeps/unix/sysv/linux/i386/libc-do-syscall-int80.S index ee46ff9..96d05f0 100644 --- a/sysdeps/unix/sysv/linux/i386/libc-do-syscall-int80.S +++ b/sysdeps/unix/sysv/linux/i386/libc-do-syscall-int80.S @@ -1,5 +1,5 @@ /* Out-of-line syscall stub for six-argument syscalls from C. For static PIE. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/i386/libc-do-syscall.S b/sysdeps/unix/sysv/linux/i386/libc-do-syscall.S index e39fb2c..053353c 100644 --- a/sysdeps/unix/sysv/linux/i386/libc-do-syscall.S +++ b/sysdeps/unix/sysv/linux/i386/libc-do-syscall.S @@ -1,5 +1,5 @@ /* Out-of-line syscall stub for six-argument syscalls from C. - Copyright (C) 2015-2024 Free Software Foundation, Inc. + Copyright (C) 2015-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/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist index c989b43..6555592 100644 --- a/sysdeps/unix/sysv/linux/i386/libc.abilist +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist @@ -3005,6 +3005,25 @@ GLIBC_2.4 sys_errlist D 0x210 GLIBC_2.4 sys_nerr D 0x4 GLIBC_2.4 unlinkat F GLIBC_2.4 unshare 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 GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/i386/libc_sigaction.c b/sysdeps/unix/sysv/linux/i386/libc_sigaction.c index 9d225d5..4940435 100644 --- a/sysdeps/unix/sysv/linux/i386/libc_sigaction.c +++ b/sysdeps/unix/sysv/linux/i386/libc_sigaction.c @@ -1,5 +1,5 @@ /* POSIX.1 `sigaction' call for Linux/i386. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist index 0797f3f..de77b0f 100644 --- a/sysdeps/unix/sysv/linux/i386/libm.abilist +++ b/sysdeps/unix/sysv/linux/i386/libm.abilist @@ -1228,3 +1228,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/i386/makecontext.S b/sysdeps/unix/sysv/linux/i386/makecontext.S index 7ee5630..1ccd10c 100644 --- a/sysdeps/unix/sysv/linux/i386/makecontext.S +++ b/sysdeps/unix/sysv/linux/i386/makecontext.S @@ -1,5 +1,5 @@ /* Create new context. - 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/i386/pointer_guard.h b/sysdeps/unix/sysv/linux/i386/pointer_guard.h index 79373d5..ae27c82 100644 --- a/sysdeps/unix/sysv/linux/i386/pointer_guard.h +++ b/sysdeps/unix/sysv/linux/i386/pointer_guard.h @@ -1,5 +1,5 @@ /* Pointer obfuscation implenentation. i386 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 diff --git a/sysdeps/unix/sysv/linux/i386/setcontext.S b/sysdeps/unix/sysv/linux/i386/setcontext.S index b6d827d..b9b5258 100644 --- a/sysdeps/unix/sysv/linux/i386/setcontext.S +++ b/sysdeps/unix/sysv/linux/i386/setcontext.S @@ -1,5 +1,5 @@ /* Install given context. - 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/i386/sigcontextinfo.h b/sysdeps/unix/sysv/linux/i386/sigcontextinfo.h index 6de0ff4..ec151b1 100644 --- a/sysdeps/unix/sysv/linux/i386/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/i386/sigcontextinfo.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/i386/startup.h b/sysdeps/unix/sysv/linux/i386/startup.h index c329a1a..29083c2 100644 --- a/sysdeps/unix/sysv/linux/i386/startup.h +++ b/sysdeps/unix/sysv/linux/i386/startup.h @@ -1,5 +1,5 @@ /* Linux/i386 definitions of functions used by static libc main startup. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/i386/swapcontext.S b/sysdeps/unix/sysv/linux/i386/swapcontext.S index bb736ae..18446be 100644 --- a/sysdeps/unix/sysv/linux/i386/swapcontext.S +++ b/sysdeps/unix/sysv/linux/i386/swapcontext.S @@ -1,5 +1,5 @@ /* Save current context and install the given one. - 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/i386/syscall.S b/sysdeps/unix/sysv/linux/i386/syscall.S index d5bd580..99d2f70 100644 --- a/sysdeps/unix/sysv/linux/i386/syscall.S +++ b/sysdeps/unix/sysv/linux/i386/syscall.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/i386/syscall_cancel.S b/sysdeps/unix/sysv/linux/i386/syscall_cancel.S new file mode 100644 index 0000000..4a9247e --- /dev/null +++ b/sysdeps/unix/sysv/linux/i386/syscall_cancel.S @@ -0,0 +1,104 @@ +/* Cancellable syscall wrapper. Linux/i686 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 [eax] __syscall_cancel_arch (int *cancelhandling [SP], + long int nr [SP+4], + long int arg1 [SP+8], + long int arg2 [SP+12], + long int arg3 [SP+16], + long int arg4 [SP+20], + long int arg5 [SP+24], + long int arg6 [SP+28]) */ + +ENTRY (__syscall_cancel_arch) + pushl %ebp + cfi_def_cfa_offset (8) + cfi_offset (ebp, -8) + pushl %edi + cfi_def_cfa_offset (12) + cfi_offset (edi, -12) + pushl %esi + cfi_def_cfa_offset (16) + cfi_offset (esi, -16) + pushl %ebx + cfi_def_cfa_offset (20) + cfi_offset (ebx, -20) + + .global __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + /* if (*cancelhandling & CANCELED_BITMASK) + __syscall_do_cancel() */ + movl 20(%esp), %eax + testb $TCB_CANCELED_BITMASK, (%eax) + jne 1f + + /* Issue a 6 argument syscall, the nr [%eax] being the syscall + number. */ + movl 24(%esp), %eax + movl 28(%esp), %ebx + movl 32(%esp), %ecx + movl 36(%esp), %edx + movl 40(%esp), %esi + movl 44(%esp), %edi + movl 48(%esp), %ebp + + /* We can not use the vDSO helper for syscall (__kernel_vsyscall) + because the returned PC from kernel will point to the vDSO page + instead of the expected __syscall_cancel_arch_{start,end} + marks. */ + int $0x80 + + .global __syscall_cancel_arch_end +__syscall_cancel_arch_end: + + popl %ebx + cfi_restore (ebx) + cfi_def_cfa_offset (16) + popl %esi + cfi_restore (esi) + cfi_def_cfa_offset (12) + popl %edi + cfi_restore (edi) + cfi_def_cfa_offset (8) + popl %ebp + cfi_restore (ebp) + cfi_def_cfa_offset (4) + ret + +1: + /* Although the __syscall_do_cancel do not return, we need to stack + being set correctly for unwind. */ + popl %ebx + cfi_restore (ebx) + cfi_def_cfa_offset (16) + popl %esi + cfi_restore (esi) + cfi_def_cfa_offset (12) + popl %edi + cfi_restore (edi) + cfi_def_cfa_offset (8) + popl %ebp + cfi_restore (ebp) + cfi_def_cfa_offset (4) + jmp __syscall_do_cancel + +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.c b/sysdeps/unix/sysv/linux/i386/sysdep.c index 5cf58cb..5897ce2 100644 --- a/sysdeps/unix/sysv/linux/i386/sysdep.c +++ b/sysdeps/unix/sysv/linux/i386/sysdep.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2015-2024 Free Software Foundation, Inc. +/* Copyright (C) 2015-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/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h index 25852f8..87806a7 100644 --- a/sysdeps/unix/sysv/linux/i386/sysdep.h +++ b/sysdeps/unix/sysv/linux/i386/sysdep.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1992-2024 Free Software Foundation, Inc. +/* Copyright (C) 1992-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/i386/tst-bz21269.c b/sysdeps/unix/sysv/linux/i386/tst-bz21269.c index 5ee644c..b40d8d7 100644 --- a/sysdeps/unix/sysv/linux/i386/tst-bz21269.c +++ b/sysdeps/unix/sysv/linux/i386/tst-bz21269.c @@ -1,5 +1,5 @@ /* Test for i386 sigaction sa_restorer handling (BZ#21269) - 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/i386/vfork.S b/sysdeps/unix/sysv/linux/i386/vfork.S index 8846b61..a37a553 100644 --- a/sysdeps/unix/sysv/linux/i386/vfork.S +++ b/sysdeps/unix/sysv/linux/i386/vfork.S @@ -1,4 +1,4 @@ -/* 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/if_index.c b/sysdeps/unix/sysv/linux/if_index.c index 3b4de1d..5d13759 100644 --- a/sysdeps/unix/sysv/linux/if_index.c +++ b/sysdeps/unix/sysv/linux/if_index.c @@ -1,4 +1,4 @@ -/* 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 @@ -32,35 +32,23 @@ unsigned int __if_nametoindex (const char *ifname) { -#ifndef SIOCGIFINDEX - __set_errno (ENOSYS); - return 0; -#else - struct ifreq ifr; if (strlen (ifname) >= IFNAMSIZ) { __set_errno (ENODEV); return 0; } - strncpy (ifr.ifr_name, ifname, sizeof (ifr.ifr_name)); - int fd = __opensock (); - if (fd < 0) return 0; - if (__ioctl (fd, SIOCGIFINDEX, &ifr) < 0) - { - int saved_errno = errno; - __close_nocancel_nostatus (fd); - if (saved_errno == EINVAL) - __set_errno (ENOSYS); - return 0; - } + struct ifreq ifr; + strncpy (ifr.ifr_name, ifname, sizeof (ifr.ifr_name)); + + int status = __ioctl (fd, SIOCGIFINDEX, &ifr); __close_nocancel_nostatus (fd); - return ifr.ifr_ifindex; -#endif + + return status < 0 ? 0 : ifr.ifr_ifindex; } libc_hidden_def (__if_nametoindex) weak_alias (__if_nametoindex, if_nametoindex) @@ -83,8 +71,8 @@ weak_alias (__if_freenameindex, if_freenameindex) libc_hidden_weak (if_freenameindex) -static struct if_nameindex * -if_nameindex_netlink (void) +struct if_nameindex * +__if_nameindex (void) { struct netlink_handle nh = { 0, 0, 0, NULL, NULL }; struct if_nameindex *idx = NULL; @@ -196,19 +184,6 @@ if_nameindex_netlink (void) return idx; } - - -struct if_nameindex * -__if_nameindex (void) -{ -#ifndef SIOCGIFINDEX - __set_errno (ENOSYS); - return NULL; -#else - struct if_nameindex *result = if_nameindex_netlink (); - return result; -#endif -} weak_alias (__if_nameindex, if_nameindex) libc_hidden_weak (if_nameindex) diff --git a/sysdeps/unix/sysv/linux/ifaddrs.c b/sysdeps/unix/sysv/linux/ifaddrs.c index 10b26d8..ddc4be7 100644 --- a/sysdeps/unix/sysv/linux/ifaddrs.c +++ b/sysdeps/unix/sysv/linux/ifaddrs.c @@ -1,5 +1,5 @@ /* getifaddrs -- get names and addresses of all network interfaces - 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/ifreq.c b/sysdeps/unix/sysv/linux/ifreq.c index 035a53f..45f3b5b 100644 --- a/sysdeps/unix/sysv/linux/ifreq.c +++ b/sysdeps/unix/sysv/linux/ifreq.c @@ -1,4 +1,4 @@ -/* 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/include/bits/mman-shared.h b/sysdeps/unix/sysv/linux/include/bits/mman-shared.h new file mode 100644 index 0000000..7c14b5d --- /dev/null +++ b/sysdeps/unix/sysv/linux/include/bits/mman-shared.h @@ -0,0 +1,16 @@ +#include <sysdeps/unix/sysv/linux/bits/mman-shared.h> + +#ifndef _ISOMAC + +extern __typeof (pkey_alloc) __pkey_alloc; +libc_hidden_proto (__pkey_alloc) +extern __typeof (pkey_free) __pkey_free; +libc_hidden_proto (__pkey_free) +extern __typeof (pkey_mprotect) __pkey_mprotect; +libc_hidden_proto (__pkey_mprotect) +extern __typeof (pkey_get) __pkey_get; +libc_hidden_proto (__pkey_get) +extern __typeof (pkey_set) __pkey_set; +libc_hidden_proto (__pkey_set) + +#endif diff --git a/sysdeps/unix/sysv/linux/include/sys/mount.h b/sysdeps/unix/sysv/linux/include/sys/mount.h index 5850927..9c57692 100644 --- a/sysdeps/unix/sysv/linux/include/sys/mount.h +++ b/sysdeps/unix/sysv/linux/include/sys/mount.h @@ -1,5 +1,5 @@ /* Internal declarations for sys/mount.h. - 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/include/sys/syscall.h b/sysdeps/unix/sysv/linux/include/sys/syscall.h index 07d7d71..5a2f42c 100644 --- a/sysdeps/unix/sysv/linux/include/sys/syscall.h +++ b/sysdeps/unix/sysv/linux/include/sys/syscall.h @@ -1,5 +1,5 @@ /* Wrapper header for <sys/syscall.h>. Linux version. - Copyright (C) 2020-2024 Free Software Foundation, Inc. + Copyright (C) 2020-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 diff --git a/sysdeps/unix/sysv/linux/include/sys/sysinfo.h b/sysdeps/unix/sysv/linux/include/sys/sysinfo.h index 2317a26..62d95f2 100644 --- a/sysdeps/unix/sysv/linux/include/sys/sysinfo.h +++ b/sysdeps/unix/sysv/linux/include/sys/sysinfo.h @@ -1,5 +1,5 @@ /* Internal declarations for sys/sysinfo.h. - Copyright (C) 2015-2024 Free Software Foundation, Inc. + Copyright (C) 2015-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/include/sys/timex.h b/sysdeps/unix/sysv/linux/include/sys/timex.h index c4a0af4..8af305d 100644 --- a/sysdeps/unix/sysv/linux/include/sys/timex.h +++ b/sysdeps/unix/sysv/linux/include/sys/timex.h @@ -1,5 +1,5 @@ /* Internal declarations for sys/timex.h. - 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/inotify_init.c b/sysdeps/unix/sysv/linux/inotify_init.c index b5b36a8..9998e64 100644 --- a/sysdeps/unix/sysv/linux/inotify_init.c +++ b/sysdeps/unix/sysv/linux/inotify_init.c @@ -1,5 +1,5 @@ /* Initialize an inotify instance. Linux version. - 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/internal-ioctl.h b/sysdeps/unix/sysv/linux/internal-ioctl.h index 58ab209..841f2b2 100644 --- a/sysdeps/unix/sysv/linux/internal-ioctl.h +++ b/sysdeps/unix/sysv/linux/internal-ioctl.h @@ -1,5 +1,5 @@ /* Linux internal definitions for ioctl. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/internal-signals.h b/sysdeps/unix/sysv/linux/internal-signals.h index a6fae59..ecb00f5 100644 --- a/sysdeps/unix/sysv/linux/internal-signals.h +++ b/sysdeps/unix/sysv/linux/internal-signals.h @@ -1,5 +1,5 @@ /* Special use of signals internally. Linux 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 @@ -90,6 +90,15 @@ internal_signal_restore_set (const internal_sigset_t *set) __NSIG_BYTES); } +static inline void +internal_signal_unblock_signal (int sig) +{ + internal_sigset_t set; + internal_sigemptyset (&set); + internal_sigaddset (&set, sig); + INTERNAL_SYSCALL_CALL (rt_sigprocmask, SIG_UNBLOCK, &set, NULL, + __NSIG_BYTES); +} /* It is used on timer_create code directly on sigwaitinfo call, so it can not use the internal_sigset_t definitions. */ diff --git a/sysdeps/unix/sysv/linux/internal-sigset.h b/sysdeps/unix/sysv/linux/internal-sigset.h index 5d7020b..a1a6c32 100644 --- a/sysdeps/unix/sysv/linux/internal-sigset.h +++ b/sysdeps/unix/sysv/linux/internal-sigset.h @@ -1,5 +1,5 @@ /* Internal sigset_t definition. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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 @@ -21,7 +21,7 @@ #include <sigsetops.h> -typedef struct +typedef struct _internal_sigset_t { unsigned long int __val[__NSIG_WORDS]; } internal_sigset_t; diff --git a/sysdeps/unix/sysv/linux/internal-stat.h b/sysdeps/unix/sysv/linux/internal-stat.h index 9334059..61fca97 100644 --- a/sysdeps/unix/sysv/linux/internal-stat.h +++ b/sysdeps/unix/sysv/linux/internal-stat.h @@ -1,5 +1,5 @@ /* Internal stat definitions. - 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/internal_statvfs.c b/sysdeps/unix/sysv/linux/internal_statvfs.c index e8c046e..fe6a433 100644 --- a/sysdeps/unix/sysv/linux/internal_statvfs.c +++ b/sysdeps/unix/sysv/linux/internal_statvfs.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/internal_statvfs.h b/sysdeps/unix/sysv/linux/internal_statvfs.h index 6d23860..8c5f0a7 100644 --- a/sysdeps/unix/sysv/linux/internal_statvfs.h +++ b/sysdeps/unix/sysv/linux/internal_statvfs.h @@ -1,5 +1,5 @@ /* Internal statvfs/statvfs64 function prototypes. - 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/ioctl.c b/sysdeps/unix/sysv/linux/ioctl.c index 230aeda..b0d3747 100644 --- a/sysdeps/unix/sysv/linux/ioctl.c +++ b/sysdeps/unix/sysv/linux/ioctl.c @@ -1,5 +1,5 @@ /* Control device. Linux generic implementation. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/ipc_ops.h b/sysdeps/unix/sysv/linux/ipc_ops.h index f9b9109..0b2270d 100644 --- a/sysdeps/unix/sysv/linux/ipc_ops.h +++ b/sysdeps/unix/sysv/linux/ipc_ops.h @@ -1,5 +1,5 @@ /* The codes for the functions to use the ipc syscall multiplexer. - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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/ipc_priv.h b/sysdeps/unix/sysv/linux/ipc_priv.h index 8b8341c..6ace4b7 100644 --- a/sysdeps/unix/sysv/linux/ipc_priv.h +++ b/sysdeps/unix/sysv/linux/ipc_priv.h @@ -1,5 +1,5 @@ /* Old SysV permission definition for Linux. Default version. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/isatty.c b/sysdeps/unix/sysv/linux/isatty.c new file mode 100644 index 0000000..3faaec5 --- /dev/null +++ b/sysdeps/unix/sysv/linux/isatty.c @@ -0,0 +1,29 @@ +/* Test whether a file descriptor refers to a terminal. Linux version. + Copyright (C) 1991-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 + <https://www.gnu.org/licenses/>. */ + +#include <termios_internals.h> + +/* Return 1 if FD is a terminal, 0 if not. This simply does a + TCGETS2 ioctl into a dummy buffer without parsing the result. */ +int +__isatty (int fd) +{ + struct termios2 k_termios; + return INLINE_SYSCALL_CALL (ioctl, fd, TCGETS2, &k_termios) == 0; +} +weak_alias (__isatty, isatty) diff --git a/sysdeps/unix/sysv/linux/nios2/kernel-features.h b/sysdeps/unix/sysv/linux/isatty_nostatus.c index 9b16a95..406decb 100644 --- a/sysdeps/unix/sysv/linux/nios2/kernel-features.h +++ b/sysdeps/unix/sysv/linux/isatty_nostatus.c @@ -1,6 +1,4 @@ -/* Set flags signalling availability of kernel features based on given - kernel version number. NIOS2 version. - Copyright (C) 2023-2024 Free Software Foundation, Inc. +/* Copyright (C) 1991-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 @@ -14,11 +12,15 @@ 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 + License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -#include_next <kernel-features.h> +#include <termios_internals.h> -/* nios2 does not provide clone3. */ -#undef __ASSUME_CLONE3 -#define __ASSUME_CLONE3 0 +/* Return 1 if FD is a terminal, 0 if not, without changing errno */ +int +__isatty_nostatus (int fd) +{ + struct termios2 k_termios; + return INTERNAL_SYSCALL_CALL (ioctl, fd, TCGETS2, &k_termios) == 0; +} diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h index a25cf07..a49a915 100644 --- a/sysdeps/unix/sysv/linux/kernel-features.h +++ b/sysdeps/unix/sysv/linux/kernel-features.h @@ -1,6 +1,6 @@ /* Set flags signalling availability of kernel features based on given kernel version number. - 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 @@ -54,6 +54,10 @@ configurations). */ #define __ASSUME_SET_ROBUST_LIST 1 +/* The termios2 interface was introduced across all architectures except + Alpha in kernel 2.6.22. */ +#define __ASSUME_TERMIOS2 1 + /* Support for various CLOEXEC and NONBLOCK flags was added in 2.6.27. */ #define __ASSUME_IN_NONBLOCK 1 diff --git a/sysdeps/unix/sysv/linux/kernel-posix-timers.h b/sysdeps/unix/sysv/linux/kernel-posix-timers.h index d10b000..3000953 100644 --- a/sysdeps/unix/sysv/linux/kernel-posix-timers.h +++ b/sysdeps/unix/sysv/linux/kernel-posix-timers.h @@ -1,4 +1,4 @@ -/* 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/kernel_stat.h b/sysdeps/unix/sysv/linux/kernel_stat.h index b6cfc4a..a861c94 100644 --- a/sysdeps/unix/sysv/linux/kernel_stat.h +++ b/sysdeps/unix/sysv/linux/kernel_stat.h @@ -1,5 +1,5 @@ /* Internal definitions for stat functions. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/kernel_termios.h b/sysdeps/unix/sysv/linux/kernel_termios.h deleted file mode 100644 index 12d9b92..0000000 --- a/sysdeps/unix/sysv/linux/kernel_termios.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 1997-2024 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 - <https://www.gnu.org/licenses/>. */ - -#ifndef _KERNEL_TERMIOS_H -#define _KERNEL_TERMIOS_H 1 -/* The following corresponds to the values from the Linux 2.1.20 kernel. */ - -#define __KERNEL_NCCS 19 - -struct __kernel_termios - { - tcflag_t c_iflag; /* input mode flags */ - tcflag_t c_oflag; /* output mode flags */ - tcflag_t c_cflag; /* control mode flags */ - tcflag_t c_lflag; /* local mode flags */ - cc_t c_line; /* line discipline */ - cc_t c_cc[__KERNEL_NCCS]; /* control characters */ - }; - -#define _HAVE_C_ISPEED 0 -#define _HAVE_C_OSPEED 0 - -#endif /* kernel_termios.h */ diff --git a/sysdeps/unix/sysv/linux/lchown.c b/sysdeps/unix/sysv/linux/lchown.c index c4699ed..090df24 100644 --- a/sysdeps/unix/sysv/linux/lchown.c +++ b/sysdeps/unix/sysv/linux/lchown.c @@ -1,5 +1,5 @@ /* Change ownership of a file. Linux version. - 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/ldsodefs.h b/sysdeps/unix/sysv/linux/ldsodefs.h index d847376..25a6058 100644 --- a/sysdeps/unix/sysv/linux/ldsodefs.h +++ b/sysdeps/unix/sysv/linux/ldsodefs.h @@ -1,5 +1,5 @@ /* Run-time dynamic linker data structures for loaded ELF shared objects. - 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/libc-vdso.h b/sysdeps/unix/sysv/linux/libc-vdso.h index d854350..a0c2064 100644 --- a/sysdeps/unix/sysv/linux/libc-vdso.h +++ b/sysdeps/unix/sysv/linux/libc-vdso.h @@ -1,4 +1,4 @@ -/* 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. diff --git a/sysdeps/unix/sysv/linux/libc_fatal.c b/sysdeps/unix/sysv/linux/libc_fatal.c index 4676757..72d7328 100644 --- a/sysdeps/unix/sysv/linux/libc_fatal.c +++ b/sysdeps/unix/sysv/linux/libc_fatal.c @@ -1,5 +1,5 @@ /* Catastrophic failure reports. Linux version. - Copyright (C) 1993-2024 Free Software Foundation, Inc. + Copyright (C) 1993-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/libc_sigaction.c b/sysdeps/unix/sysv/linux/libc_sigaction.c index 8b894d3..67dbc04 100644 --- a/sysdeps/unix/sysv/linux/libc_sigaction.c +++ b/sysdeps/unix/sysv/linux/libc_sigaction.c @@ -1,4 +1,4 @@ -/* 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 @@ -49,7 +49,7 @@ __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact) { kact.k_sa_handler = act->sa_handler; memcpy (&kact.sa_mask, &act->sa_mask, sizeof (sigset_t)); - kact.sa_flags = act->sa_flags; + kact.sa_flags = (unsigned int) act->sa_flags; SET_SA_RESTORER (&kact, act); } diff --git a/sysdeps/unix/sysv/linux/librt-compat.c b/sysdeps/unix/sysv/linux/librt-compat.c index 973e518..b755bd4 100644 --- a/sysdeps/unix/sysv/linux/librt-compat.c +++ b/sysdeps/unix/sysv/linux/librt-compat.c @@ -1,5 +1,5 @@ /* Placeholder definitions to pull in removed symbol versions. Linux version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/link.c b/sysdeps/unix/sysv/linux/link.c index 3dfc7c8..06bda8e 100644 --- a/sysdeps/unix/sysv/linux/link.c +++ b/sysdeps/unix/sysv/linux/link.c @@ -1,5 +1,5 @@ /* Make a new name for a file. Linux version. - 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/linux_fsinfo.h b/sysdeps/unix/sysv/linux/linux_fsinfo.h index 7beda01..9758942 100644 --- a/sysdeps/unix/sysv/linux/linux_fsinfo.h +++ b/sysdeps/unix/sysv/linux/linux_fsinfo.h @@ -1,5 +1,5 @@ /* Constants from kernel header for various FSes. - Copyright (C) 1998-2024 Free Software Foundation, Inc. + Copyright (C) 1998-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 @@ -251,6 +251,7 @@ #define XFS_SUPER_MAGIC 0x58465342 /* Maximum link counts. */ +#define BTRFS_LINK_MAX 65535 #define COH_LINK_MAX 10000 #define EXT2_LINK_MAX 32000 #define EXT4_LINK_MAX 65000 diff --git a/sysdeps/unix/sysv/linux/listen.c b/sysdeps/unix/sysv/linux/listen.c index a27c6df..25dfedc 100644 --- a/sysdeps/unix/sysv/linux/listen.c +++ b/sysdeps/unix/sysv/linux/listen.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2015-2024 Free Software Foundation, Inc. +/* Copyright (C) 2015-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/loongarch/arch-syscall.h b/sysdeps/unix/sysv/linux/loongarch/arch-syscall.h index 8bb8244..f57a152 100644 --- a/sysdeps/unix/sysv/linux/loongarch/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/loongarch/arch-syscall.h @@ -93,6 +93,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 @@ -122,6 +123,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 @@ -169,6 +171,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 @@ -208,6 +211,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 @@ -264,6 +268,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/loongarch/atomic-machine.h b/sysdeps/unix/sysv/linux/loongarch/atomic-machine.h index 0962826..683e947 100644 --- a/sysdeps/unix/sysv/linux/loongarch/atomic-machine.h +++ b/sysdeps/unix/sysv/linux/loongarch/atomic-machine.h @@ -1,5 +1,5 @@ /* Atomic operations. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/loongarch/bits/fcntl.h b/sysdeps/unix/sysv/linux/loongarch/bits/fcntl.h index c10c65d..f06e702 100644 --- a/sysdeps/unix/sysv/linux/loongarch/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/loongarch/bits/fcntl.h @@ -1,5 +1,5 @@ /* O_*, F_*, FD_* bit values for the generic Linux/LoongArch ABI. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/loongarch/bits/hwcap.h b/sysdeps/unix/sysv/linux/loongarch/bits/hwcap.h index 16d17fa..99920ff 100644 --- a/sysdeps/unix/sysv/linux/loongarch/bits/hwcap.h +++ b/sysdeps/unix/sysv/linux/loongarch/bits/hwcap.h @@ -1,5 +1,5 @@ /* Defines for bits in AT_HWCAP. LoongArch64 Linux version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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 @@ -36,3 +36,4 @@ #define HWCAP_LOONGARCH_LBT_ARM (1 << 11) #define HWCAP_LOONGARCH_LBT_MIPS (1 << 12) #define HWCAP_LOONGARCH_PTW (1 << 13) +#define HWCAP_LOONGARCH_LSPW (1 << 14) diff --git a/sysdeps/unix/sysv/linux/loongarch/bits/procfs.h b/sysdeps/unix/sysv/linux/loongarch/bits/procfs.h index 85f311f..c4088d8 100644 --- a/sysdeps/unix/sysv/linux/loongarch/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/loongarch/bits/procfs.h @@ -1,5 +1,5 @@ /* Types for registers for sys/procfs.h. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-2025 Free Software Foundation, Inc. This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/loongarch/bits/pthread_stack_min.h b/sysdeps/unix/sysv/linux/loongarch/bits/pthread_stack_min.h index 5b16627..4c8c8a4 100644 --- a/sysdeps/unix/sysv/linux/loongarch/bits/pthread_stack_min.h +++ b/sysdeps/unix/sysv/linux/loongarch/bits/pthread_stack_min.h @@ -1,5 +1,5 @@ /* Definition of PTHREAD_STACK_MIN. LoongArch Linux version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/loongarch/bits/rseq.h b/sysdeps/unix/sysv/linux/loongarch/bits/rseq.h new file mode 100644 index 0000000..a7413ae --- /dev/null +++ b/sysdeps/unix/sysv/linux/loongarch/bits/rseq.h @@ -0,0 +1,36 @@ +/* Restartable Sequences Linux LoongArch architecture header. + Copyright (C) 2024-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/>. */ + +#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. + + RSEQ_SIG uses the following break instruction: + + 0x002a0010 break 0x10 +*/ + +#define RSEQ_SIG 0x002a0010 diff --git a/sysdeps/unix/sysv/linux/loongarch/bits/shmlba.h b/sysdeps/unix/sysv/linux/loongarch/bits/shmlba.h index 8ff960a..e74644d 100644 --- a/sysdeps/unix/sysv/linux/loongarch/bits/shmlba.h +++ b/sysdeps/unix/sysv/linux/loongarch/bits/shmlba.h @@ -1,5 +1,5 @@ /* Define SHMLBA. LoongArch 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/loongarch/bits/sigstack.h b/sysdeps/unix/sysv/linux/loongarch/bits/sigstack.h index 61da2e9..f94a549 100644 --- a/sysdeps/unix/sysv/linux/loongarch/bits/sigstack.h +++ b/sysdeps/unix/sysv/linux/loongarch/bits/sigstack.h @@ -1,5 +1,5 @@ /* sigstack, sigaltstack definitions. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/loongarch/clone.S b/sysdeps/unix/sysv/linux/loongarch/clone.S index c4fd93d..2a68dd3 100644 --- a/sysdeps/unix/sysv/linux/loongarch/clone.S +++ b/sysdeps/unix/sysv/linux/loongarch/clone.S @@ -1,5 +1,5 @@ /* The clone syscall wrapper. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-2025 Free Software Foundation, Inc. This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/loongarch/clone3.S b/sysdeps/unix/sysv/linux/loongarch/clone3.S index dfffb1f..39d43ca 100644 --- a/sysdeps/unix/sysv/linux/loongarch/clone3.S +++ b/sysdeps/unix/sysv/linux/loongarch/clone3.S @@ -1,5 +1,5 @@ /* The clone3 syscall wrapper. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-2025 Free Software Foundation, Inc. This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/loongarch/cpu-features.c b/sysdeps/unix/sysv/linux/loongarch/cpu-features.c index ba6201a..5162c52 100644 --- a/sysdeps/unix/sysv/linux/loongarch/cpu-features.c +++ b/sysdeps/unix/sysv/linux/loongarch/cpu-features.c @@ -1,6 +1,6 @@ /* Initialize CPU feature data. LoongArch64 version. This file is part of the GNU C Library. - Copyright (C) 2024 Free Software Foundation, Inc. + Copyright (C) 2024-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 diff --git a/sysdeps/unix/sysv/linux/loongarch/cpu-features.h b/sysdeps/unix/sysv/linux/loongarch/cpu-features.h index eec5195..726b6e4 100644 --- a/sysdeps/unix/sysv/linux/loongarch/cpu-features.h +++ b/sysdeps/unix/sysv/linux/loongarch/cpu-features.h @@ -1,6 +1,6 @@ /* Initialize CPU feature data. LoongArch64 version. This file is part of the GNU C Library. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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 diff --git a/sysdeps/unix/sysv/linux/loongarch/dl-cache.h b/sysdeps/unix/sysv/linux/loongarch/dl-cache.h index 6f88368..629c71d 100644 --- a/sysdeps/unix/sysv/linux/loongarch/dl-cache.h +++ b/sysdeps/unix/sysv/linux/loongarch/dl-cache.h @@ -1,5 +1,5 @@ /* Support for reading /etc/ld.so.cache files written by Linux ldconfig. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/loongarch/dl-procinfo.c b/sysdeps/unix/sysv/linux/loongarch/dl-procinfo.c index 5e056a1..853e57f 100644 --- a/sysdeps/unix/sysv/linux/loongarch/dl-procinfo.c +++ b/sysdeps/unix/sysv/linux/loongarch/dl-procinfo.c @@ -1,6 +1,6 @@ /* Data for LoongArch64 version of processor capability information. Linux 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/loongarch/dl-sysdep.c b/sysdeps/unix/sysv/linux/loongarch/dl-sysdep.c index 30b84f1..a7ae605 100644 --- a/sysdeps/unix/sysv/linux/loongarch/dl-sysdep.c +++ b/sysdeps/unix/sysv/linux/loongarch/dl-sysdep.c @@ -1,5 +1,5 @@ /* Operating system support for run-time dynamic linker. LoongArch 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/loongarch/fixup-asm-unistd.h b/sysdeps/unix/sysv/linux/loongarch/fixup-asm-unistd.h new file mode 100644 index 0000000..c1b89ce --- /dev/null +++ b/sysdeps/unix/sysv/linux/loongarch/fixup-asm-unistd.h @@ -0,0 +1,21 @@ +/* Regularize <asm/unistd.h> definitions. LoongArch version. + Copyright (C) 2024-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 + <http://www.gnu.org/licenses/>. */ + +/* To avoid the messy usage of the fstat, newfstatat, and statx system calls, we +only use statx. */ +#undef __NR_fstat +#undef __NR_newfstatat diff --git a/sysdeps/unix/sysv/linux/loongarch/getcontext.S b/sysdeps/unix/sysv/linux/loongarch/getcontext.S index 79e14d8..4e78c7c 100644 --- a/sysdeps/unix/sysv/linux/loongarch/getcontext.S +++ b/sysdeps/unix/sysv/linux/loongarch/getcontext.S @@ -1,5 +1,5 @@ /* Save current context. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/loongarch/gettimeofday.c b/sysdeps/unix/sysv/linux/loongarch/gettimeofday.c index 72043dd..93ea6ce 100644 --- a/sysdeps/unix/sysv/linux/loongarch/gettimeofday.c +++ b/sysdeps/unix/sysv/linux/loongarch/gettimeofday.c @@ -1,5 +1,5 @@ /* gettimeofday -- Get the current time of day. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-2025 Free Software Foundation, Inc. This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/loongarch/libc-start.c b/sysdeps/unix/sysv/linux/loongarch/libc-start.c index e545f7f..51e276f 100644 --- a/sysdeps/unix/sysv/linux/loongarch/libc-start.c +++ b/sysdeps/unix/sysv/linux/loongarch/libc-start.c @@ -1,5 +1,5 @@ /* Override csu/libc-start.c on LoongArch64. - 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/loongarch/lp64/libc.abilist b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist index 0023ec1..a6cab96 100644 --- a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist +++ b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist @@ -2269,3 +2269,22 @@ GLIBC_2.39 stdc_trailing_zeros_ui F 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.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/loongarch/lp64/libm.abilist b/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist index 16bde43..4b3ea80 100644 --- a/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist +++ b/sysdeps/unix/sysv/linux/loongarch/lp64/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/loongarch/makecontext.c b/sysdeps/unix/sysv/linux/loongarch/makecontext.c index 4215cd0..82a868f 100644 --- a/sysdeps/unix/sysv/linux/loongarch/makecontext.c +++ b/sysdeps/unix/sysv/linux/loongarch/makecontext.c @@ -1,5 +1,5 @@ /* Create new context. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-2025 Free Software Foundation, Inc. This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/loongarch/pointer_guard.h b/sysdeps/unix/sysv/linux/loongarch/pointer_guard.h index b85c58d..00f4ad7 100644 --- a/sysdeps/unix/sysv/linux/loongarch/pointer_guard.h +++ b/sysdeps/unix/sysv/linux/loongarch/pointer_guard.h @@ -1,5 +1,5 @@ /* Pointer obfuscation implenentation. LoongArch version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/loongarch/readelflib.c b/sysdeps/unix/sysv/linux/loongarch/readelflib.c index 2975012..bb7d6d2 100644 --- a/sysdeps/unix/sysv/linux/loongarch/readelflib.c +++ b/sysdeps/unix/sysv/linux/loongarch/readelflib.c @@ -1,5 +1,5 @@ /* Support for reading ELF files. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/loongarch/setcontext.S b/sysdeps/unix/sysv/linux/loongarch/setcontext.S index e1ce498..ef4830a 100644 --- a/sysdeps/unix/sysv/linux/loongarch/setcontext.S +++ b/sysdeps/unix/sysv/linux/loongarch/setcontext.S @@ -1,5 +1,5 @@ /* Set current context. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/loongarch/sigcontextinfo.h b/sysdeps/unix/sysv/linux/loongarch/sigcontextinfo.h index e608005..28505a1 100644 --- a/sysdeps/unix/sysv/linux/loongarch/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/loongarch/sigcontextinfo.h @@ -1,5 +1,5 @@ /* LoongArch definitions for signal handling calling conventions. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-2025 Free Software Foundation, Inc. This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/loongarch/swapcontext.S b/sysdeps/unix/sysv/linux/loongarch/swapcontext.S index e8029b4..4b8a90b 100644 --- a/sysdeps/unix/sysv/linux/loongarch/swapcontext.S +++ b/sysdeps/unix/sysv/linux/loongarch/swapcontext.S @@ -1,5 +1,5 @@ /* Save and set current context. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/loongarch/sys/ucontext.h b/sysdeps/unix/sysv/linux/loongarch/sys/ucontext.h index 613ffe8..4992f67 100644 --- a/sysdeps/unix/sysv/linux/loongarch/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/loongarch/sys/ucontext.h @@ -1,5 +1,5 @@ /* struct ucontext definition. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-2025 Free Software Foundation, Inc. This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/loongarch/sys/user.h b/sysdeps/unix/sysv/linux/loongarch/sys/user.h index 2e6428f..2d5ac88 100644 --- a/sysdeps/unix/sysv/linux/loongarch/sys/user.h +++ b/sysdeps/unix/sysv/linux/loongarch/sys/user.h @@ -1,5 +1,5 @@ /* struct user_regs_struct definition for LoongArch. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/loongarch/syscall_cancel.S b/sysdeps/unix/sysv/linux/loongarch/syscall_cancel.S new file mode 100644 index 0000000..1cc3d61 --- /dev/null +++ b/sysdeps/unix/sysv/linux/loongarch/syscall_cancel.S @@ -0,0 +1,50 @@ +/* Cancellable syscall wrapper. Linux/loongarch 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> + +ENTRY (__syscall_cancel_arch) + + .global __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + /* if (*cancelhandling & CANCELED_BITMASK) + __syscall_do_cancel() */ + ld.w t0, a0, 0 + andi t0, t0, TCB_CANCELED_BITMASK + bnez t0, 1f + + /* Issue a 6 argument syscall. */ + move t1, a1 + move a0, a2 + move a1, a3 + move a2, a4 + move a3, a5 + move a4, a6 + move a5, a7 + move a7, t1 + syscall 0 + + .global __syscall_cancel_arch_end +__syscall_cancel_arch_end: + jr ra +1: + b __syscall_do_cancel + +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/loongarch/sysdep.S b/sysdeps/unix/sysv/linux/loongarch/sysdep.S index 8b8b0e1..1680022 100644 --- a/sysdeps/unix/sysv/linux/loongarch/sysdep.S +++ b/sysdeps/unix/sysv/linux/loongarch/sysdep.S @@ -1,5 +1,5 @@ /* syscall error handlers - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/loongarch/sysdep.h b/sysdeps/unix/sysv/linux/loongarch/sysdep.h index eb0ba79..b9835d8 100644 --- a/sysdeps/unix/sysv/linux/loongarch/sysdep.h +++ b/sysdeps/unix/sysv/linux/loongarch/sysdep.h @@ -1,5 +1,5 @@ /* Assembly macros for LoongArch. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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 @@ -119,6 +119,7 @@ #define HAVE_CLOCK_GETTIME64_VSYSCALL "__vdso_clock_gettime" #define HAVE_GETTIMEOFDAY_VSYSCALL "__vdso_gettimeofday" #define HAVE_GETCPU_VSYSCALL "__vdso_getcpu" +#define HAVE_GETRANDOM_VSYSCALL "__vdso_getrandom" #define HAVE_CLONE3_WRAPPER 1 diff --git a/sysdeps/unix/sysv/linux/loongarch/ucontext-macros.h b/sysdeps/unix/sysv/linux/loongarch/ucontext-macros.h index bfb0759..99bc8b0 100644 --- a/sysdeps/unix/sysv/linux/loongarch/ucontext-macros.h +++ b/sysdeps/unix/sysv/linux/loongarch/ucontext-macros.h @@ -1,5 +1,5 @@ /* Macros for ucontext routines. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/loongarch/vfork.S b/sysdeps/unix/sysv/linux/loongarch/vfork.S index a172823..903d0f8 100644 --- a/sysdeps/unix/sysv/linux/loongarch/vfork.S +++ b/sysdeps/unix/sysv/linux/loongarch/vfork.S @@ -1,5 +1,5 @@ /* vfork for Linux. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-2025 Free Software Foundation, Inc. This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/lseek.c b/sysdeps/unix/sysv/linux/lseek.c index 39d7963..ff83735 100644 --- a/sysdeps/unix/sysv/linux/lseek.c +++ b/sysdeps/unix/sysv/linux/lseek.c @@ -1,5 +1,5 @@ /* Linux lseek implementation, 32 bits off_t. - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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/lseek64.c b/sysdeps/unix/sysv/linux/lseek64.c index f7ae01f..49f4136 100644 --- a/sysdeps/unix/sysv/linux/lseek64.c +++ b/sysdeps/unix/sysv/linux/lseek64.c @@ -1,5 +1,5 @@ /* Linux lseek implementation, 64 bits off_t. - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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/lstat.c b/sysdeps/unix/sysv/linux/lstat.c index 7d87fcf..5b44171 100644 --- a/sysdeps/unix/sysv/linux/lstat.c +++ b/sysdeps/unix/sysv/linux/lstat.c @@ -1,5 +1,5 @@ /* Get file status. Linux 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/lstat64.c b/sysdeps/unix/sysv/linux/lstat64.c index cd09493..3d70ef8 100644 --- a/sysdeps/unix/sysv/linux/lstat64.c +++ b/sysdeps/unix/sysv/linux/lstat64.c @@ -1,5 +1,5 @@ /* Get file status. - 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/lutimes.c b/sysdeps/unix/sysv/linux/lutimes.c index 9b56d93..8f8d3c7 100644 --- a/sysdeps/unix/sysv/linux/lutimes.c +++ b/sysdeps/unix/sysv/linux/lutimes.c @@ -1,6 +1,6 @@ /* Change access and/or modification date of file. Do not follow symbolic links. - Copyright (C) 2007-2024 Free Software Foundation, Inc. + Copyright (C) 2007-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/lxstat.c b/sysdeps/unix/sysv/linux/lxstat.c index 7f8d5e1..b6eb715 100644 --- a/sysdeps/unix/sysv/linux/lxstat.c +++ b/sysdeps/unix/sysv/linux/lxstat.c @@ -1,5 +1,5 @@ /* lxstat using old-style Unix stat system call. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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 @@ -38,7 +38,7 @@ __lxstat (int vers, const char *name, struct stat *buf) { # if STAT_IS_KERNEL_STAT /* New kABIs which uses generic pre 64-bit time Linux ABI, - e.g. csky, nios2 */ + e.g. csky. */ int r = INLINE_SYSCALL_CALL (fstatat64, AT_FDCWD, name, buf, AT_SYMLINK_NOFOLLOW); return r ?: stat_overflow (buf); diff --git a/sysdeps/unix/sysv/linux/lxstat64.c b/sysdeps/unix/sysv/linux/lxstat64.c index 16ad8b8..aee1efb 100644 --- a/sysdeps/unix/sysv/linux/lxstat64.c +++ b/sysdeps/unix/sysv/linux/lxstat64.c @@ -1,5 +1,5 @@ /* lxstat64 using Linux lstat64 system call. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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 @@ -69,7 +69,7 @@ ___lxstat64 (int vers, const char *name, struct stat64 *buf) #else # if STAT_IS_KERNEL_STAT /* New kABIs which uses generic pre 64-bit time Linux ABI, - e.g. csky, nios2 */ + e.g. csky. */ if (vers == _STAT_VER_KERNEL) return INLINE_SYSCALL_CALL (fstatat64, AT_FDCWD, name, buf, AT_SYMLINK_NOFOLLOW); diff --git a/sysdeps/unix/sysv/linux/m68k/____longjmp_chk.c b/sysdeps/unix/sysv/linux/m68k/____longjmp_chk.c index 8d2aa20..8442f7a 100644 --- a/sysdeps/unix/sysv/linux/m68k/____longjmp_chk.c +++ b/sysdeps/unix/sysv/linux/m68k/____longjmp_chk.c @@ -1,4 +1,4 @@ -/* 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/m68k/arch-syscall.h b/sysdeps/unix/sysv/linux/m68k/arch-syscall.h index 4ab34f6..a95cb41 100644 --- a/sysdeps/unix/sysv/linux/m68k/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/m68k/arch-syscall.h @@ -140,6 +140,7 @@ #define __NR_getuid 24 #define __NR_getuid32 199 #define __NR_getxattr 226 +#define __NR_getxattrat 464 #define __NR_init_module 128 #define __NR_inotify_add_watch 285 #define __NR_inotify_init 284 @@ -173,6 +174,7 @@ #define __NR_listen 360 #define __NR_listmount 458 #define __NR_listxattr 229 +#define __NR_listxattrat 465 #define __NR_llistxattr 230 #define __NR_lookup_dcookie 248 #define __NR_lremovexattr 233 @@ -232,6 +234,7 @@ #define __NR_open 5 #define __NR_open_by_handle_at 341 #define __NR_open_tree 428 +#define __NR_open_tree_attr 467 #define __NR_openat 288 #define __NR_openat2 437 #define __NR_pause 29 @@ -281,6 +284,7 @@ #define __NR_recvmsg 369 #define __NR_remap_file_pages 252 #define __NR_removexattr 232 +#define __NR_removexattrat 466 #define __NR_rename 38 #define __NR_renameat 295 #define __NR_renameat2 351 @@ -354,6 +358,7 @@ #define __NR_setuid 23 #define __NR_setuid32 213 #define __NR_setxattr 223 +#define __NR_setxattrat 463 #define __NR_sgetmask 68 #define __NR_shmat 397 #define __NR_shmctl 396 diff --git a/sysdeps/unix/sysv/linux/m68k/bits/fcntl.h b/sysdeps/unix/sysv/linux/m68k/bits/fcntl.h index f0d37cc..59cde28 100644 --- a/sysdeps/unix/sysv/linux/m68k/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/m68k/bits/fcntl.h @@ -1,5 +1,5 @@ /* O_*, F_*, FD_* bit values for Linux. - 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/m68k/bits/poll.h b/sysdeps/unix/sysv/linux/m68k/bits/poll.h index 9cdfe43..3e64d9e 100644 --- a/sysdeps/unix/sysv/linux/m68k/bits/poll.h +++ b/sysdeps/unix/sysv/linux/m68k/bits/poll.h @@ -1,4 +1,4 @@ -/* 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/m68k/bits/procfs-id.h b/sysdeps/unix/sysv/linux/m68k/bits/procfs-id.h index 09a63e5..f5b5c8d 100644 --- a/sysdeps/unix/sysv/linux/m68k/bits/procfs-id.h +++ b/sysdeps/unix/sysv/linux/m68k/bits/procfs-id.h @@ -1,5 +1,5 @@ /* Types of pr_uid and pr_gid in struct elf_prpsinfo. M68K 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. diff --git a/sysdeps/unix/sysv/linux/m68k/bits/procfs.h b/sysdeps/unix/sysv/linux/m68k/bits/procfs.h index 6c9b997..cec1f48 100644 --- a/sysdeps/unix/sysv/linux/m68k/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/m68k/bits/procfs.h @@ -1,5 +1,5 @@ /* Types for registers for sys/procfs.h. M68K 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/m68k/bits/sockaddr.h b/sysdeps/unix/sysv/linux/m68k/bits/sockaddr.h index bbbbd3d..4a64432 100644 --- a/sysdeps/unix/sysv/linux/m68k/bits/sockaddr.h +++ b/sysdeps/unix/sysv/linux/m68k/bits/sockaddr.h @@ -1,5 +1,5 @@ /* Definition of struct sockaddr_* members and sizes, Linux/m68k version. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/m68k/bits/struct_stat.h b/sysdeps/unix/sysv/linux/m68k/bits/struct_stat.h index b7f2018..0402b01 100644 --- a/sysdeps/unix/sysv/linux/m68k/bits/struct_stat.h +++ b/sysdeps/unix/sysv/linux/m68k/bits/struct_stat.h @@ -1,5 +1,5 @@ /* Definition for struct stat. - 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/m68k/bits/timesize.h b/sysdeps/unix/sysv/linux/m68k/bits/timesize.h index ad9be44..606125e 100644 --- a/sysdeps/unix/sysv/linux/m68k/bits/timesize.h +++ b/sysdeps/unix/sysv/linux/m68k/bits/timesize.h @@ -1,5 +1,5 @@ /* Bit size of the time_t type at glibc build time, Linux/m68k. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/m68k/bits/typesizes.h b/sysdeps/unix/sysv/linux/m68k/bits/typesizes.h index a13f9f3..e0bebf9 100644 --- a/sysdeps/unix/sysv/linux/m68k/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/m68k/bits/typesizes.h @@ -1,5 +1,5 @@ /* bits/typesizes.h -- underlying types for *_t. m68k version. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/m68k/clone.S b/sysdeps/unix/sysv/linux/m68k/clone.S index dc5bd4f..258d704 100644 --- a/sysdeps/unix/sysv/linux/m68k/clone.S +++ b/sysdeps/unix/sysv/linux/m68k/clone.S @@ -1,4 +1,4 @@ -/* 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/m68k/coldfire/atomic-machine.h b/sysdeps/unix/sysv/linux/m68k/coldfire/atomic-machine.h index e9a5c35..5f1b232 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/atomic-machine.h +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/atomic-machine.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2010-2024 Free Software Foundation, Inc. +/* Copyright (C) 2010-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/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist index d9bd6a9..7b7b72a 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist @@ -2781,6 +2781,25 @@ GLIBC_2.4 xdrstdio_create F GLIBC_2.4 xencrypt F GLIBC_2.4 xprt_register F GLIBC_2.4 xprt_unregister 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 GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist index 78540e9..63bad09 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist @@ -878,3 +878,75 @@ GLIBC_2.40 logp1f32 F GLIBC_2.40 logp1f32x F GLIBC_2.40 logp1f64 F GLIBC_2.40 logp1l F +GLIBC_2.41 acospi F +GLIBC_2.41 acospif F +GLIBC_2.41 acospif32 F +GLIBC_2.41 acospif32x F +GLIBC_2.41 acospif64 F +GLIBC_2.41 acospil F +GLIBC_2.41 asinpi F +GLIBC_2.41 asinpif F +GLIBC_2.41 asinpif32 F +GLIBC_2.41 asinpif32x F +GLIBC_2.41 asinpif64 F +GLIBC_2.41 asinpil F +GLIBC_2.41 atan2pi F +GLIBC_2.41 atan2pif F +GLIBC_2.41 atan2pif32 F +GLIBC_2.41 atan2pif32x F +GLIBC_2.41 atan2pif64 F +GLIBC_2.41 atan2pil F +GLIBC_2.41 atanpi F +GLIBC_2.41 atanpif F +GLIBC_2.41 atanpif32 F +GLIBC_2.41 atanpif32x F +GLIBC_2.41 atanpif64 F +GLIBC_2.41 atanpil F +GLIBC_2.41 cospi F +GLIBC_2.41 cospif F +GLIBC_2.41 cospif32 F +GLIBC_2.41 cospif32x F +GLIBC_2.41 cospif64 F +GLIBC_2.41 cospil F +GLIBC_2.41 sinpi F +GLIBC_2.41 sinpif F +GLIBC_2.41 sinpif32 F +GLIBC_2.41 sinpif32x F +GLIBC_2.41 sinpif64 F +GLIBC_2.41 sinpil F +GLIBC_2.41 tanpi F +GLIBC_2.41 tanpif F +GLIBC_2.41 tanpif32 F +GLIBC_2.41 tanpif32x F +GLIBC_2.41 tanpif64 F +GLIBC_2.41 tanpil F +GLIBC_2.42 compoundn F +GLIBC_2.42 compoundnf F +GLIBC_2.42 compoundnf32 F +GLIBC_2.42 compoundnf32x F +GLIBC_2.42 compoundnf64 F +GLIBC_2.42 compoundnl F +GLIBC_2.42 pown F +GLIBC_2.42 pownf F +GLIBC_2.42 pownf32 F +GLIBC_2.42 pownf32x F +GLIBC_2.42 pownf64 F +GLIBC_2.42 pownl F +GLIBC_2.42 powr F +GLIBC_2.42 powrf F +GLIBC_2.42 powrf32 F +GLIBC_2.42 powrf32x F +GLIBC_2.42 powrf64 F +GLIBC_2.42 powrl F +GLIBC_2.42 rootn F +GLIBC_2.42 rootnf F +GLIBC_2.42 rootnf32 F +GLIBC_2.42 rootnf32x F +GLIBC_2.42 rootnf64 F +GLIBC_2.42 rootnl F +GLIBC_2.42 rsqrt F +GLIBC_2.42 rsqrtf F +GLIBC_2.42 rsqrtf32 F +GLIBC_2.42 rsqrtf32x F +GLIBC_2.42 rsqrtf64 F +GLIBC_2.42 rsqrtl F diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/sysdep.h b/sysdeps/unix/sysv/linux/m68k/coldfire/sysdep.h index 4f39f25..30b182f 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/sysdep.h +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/sysdep.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2010-2024 Free Software Foundation, Inc. +/* Copyright (C) 2010-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/m68k/getpagesize.c b/sysdeps/unix/sysv/linux/m68k/getpagesize.c index 14e0aac..207a296 100644 --- a/sysdeps/unix/sysv/linux/m68k/getpagesize.c +++ b/sysdeps/unix/sysv/linux/m68k/getpagesize.c @@ -1,4 +1,4 @@ -/* 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/m68k/kernel-features.h b/sysdeps/unix/sysv/linux/m68k/kernel-features.h index 82a34a8..3515b20 100644 --- a/sysdeps/unix/sysv/linux/m68k/kernel-features.h +++ b/sysdeps/unix/sysv/linux/m68k/kernel-features.h @@ -1,6 +1,6 @@ /* Set flags signalling availability of kernel features based on given kernel version number. - Copyright (C) 2008-2024 Free Software Foundation, Inc. + Copyright (C) 2008-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/m68k/libc-lock-arch.h b/sysdeps/unix/sysv/linux/m68k/libc-lock-arch.h index 3efee8b..864c34b 100644 --- a/sysdeps/unix/sysv/linux/m68k/libc-lock-arch.h +++ b/sysdeps/unix/sysv/linux/m68k/libc-lock-arch.h @@ -1,5 +1,5 @@ /* Private libc-internal arch-specific definitions. m68k version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/m68k/m680x0/getcontext.S b/sysdeps/unix/sysv/linux/m68k/m680x0/getcontext.S index cde0dbf..df8858d 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/getcontext.S +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/getcontext.S @@ -1,5 +1,5 @@ /* Save current context. - Copyright (C) 2012-2024 Free Software Foundation, Inc. + Copyright (C) 2012-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/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist index 439796d..df398e4 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist @@ -2948,6 +2948,25 @@ GLIBC_2.4 sys_errlist D 0x210 GLIBC_2.4 sys_nerr D 0x4 GLIBC_2.4 unlinkat F GLIBC_2.4 unshare 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 GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist index 6fd32e7..9dba60b 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist @@ -914,3 +914,75 @@ GLIBC_2.40 logp1f32 F GLIBC_2.40 logp1f32x F GLIBC_2.40 logp1f64 F GLIBC_2.40 logp1l F +GLIBC_2.41 acospi F +GLIBC_2.41 acospif F +GLIBC_2.41 acospif32 F +GLIBC_2.41 acospif32x F +GLIBC_2.41 acospif64 F +GLIBC_2.41 acospil F +GLIBC_2.41 asinpi F +GLIBC_2.41 asinpif F +GLIBC_2.41 asinpif32 F +GLIBC_2.41 asinpif32x F +GLIBC_2.41 asinpif64 F +GLIBC_2.41 asinpil F +GLIBC_2.41 atan2pi F +GLIBC_2.41 atan2pif F +GLIBC_2.41 atan2pif32 F +GLIBC_2.41 atan2pif32x F +GLIBC_2.41 atan2pif64 F +GLIBC_2.41 atan2pil F +GLIBC_2.41 atanpi F +GLIBC_2.41 atanpif F +GLIBC_2.41 atanpif32 F +GLIBC_2.41 atanpif32x F +GLIBC_2.41 atanpif64 F +GLIBC_2.41 atanpil F +GLIBC_2.41 cospi F +GLIBC_2.41 cospif F +GLIBC_2.41 cospif32 F +GLIBC_2.41 cospif32x F +GLIBC_2.41 cospif64 F +GLIBC_2.41 cospil F +GLIBC_2.41 sinpi F +GLIBC_2.41 sinpif F +GLIBC_2.41 sinpif32 F +GLIBC_2.41 sinpif32x F +GLIBC_2.41 sinpif64 F +GLIBC_2.41 sinpil F +GLIBC_2.41 tanpi F +GLIBC_2.41 tanpif F +GLIBC_2.41 tanpif32 F +GLIBC_2.41 tanpif32x F +GLIBC_2.41 tanpif64 F +GLIBC_2.41 tanpil F +GLIBC_2.42 compoundn F +GLIBC_2.42 compoundnf F +GLIBC_2.42 compoundnf32 F +GLIBC_2.42 compoundnf32x F +GLIBC_2.42 compoundnf64 F +GLIBC_2.42 compoundnl F +GLIBC_2.42 pown F +GLIBC_2.42 pownf F +GLIBC_2.42 pownf32 F +GLIBC_2.42 pownf32x F +GLIBC_2.42 pownf64 F +GLIBC_2.42 pownl F +GLIBC_2.42 powr F +GLIBC_2.42 powrf F +GLIBC_2.42 powrf32 F +GLIBC_2.42 powrf32x F +GLIBC_2.42 powrf64 F +GLIBC_2.42 powrl F +GLIBC_2.42 rootn F +GLIBC_2.42 rootnf F +GLIBC_2.42 rootnf32 F +GLIBC_2.42 rootnf32x F +GLIBC_2.42 rootnf64 F +GLIBC_2.42 rootnl F +GLIBC_2.42 rsqrt F +GLIBC_2.42 rsqrtf F +GLIBC_2.42 rsqrtf32 F +GLIBC_2.42 rsqrtf32x F +GLIBC_2.42 rsqrtf64 F +GLIBC_2.42 rsqrtl F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/makecontext.S b/sysdeps/unix/sysv/linux/m68k/m680x0/makecontext.S index 8affb64..60b71b3 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/makecontext.S +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/makecontext.S @@ -1,5 +1,5 @@ /* Create new context. - Copyright (C) 2012-2024 Free Software Foundation, Inc. + Copyright (C) 2012-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/m68k/m680x0/setcontext.S b/sysdeps/unix/sysv/linux/m68k/m680x0/setcontext.S index 6f85825..67fd246 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/setcontext.S +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/setcontext.S @@ -1,5 +1,5 @@ /* Install given context. - Copyright (C) 2012-2024 Free Software Foundation, Inc. + Copyright (C) 2012-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/m68k/m680x0/swapcontext.S b/sysdeps/unix/sysv/linux/m68k/m680x0/swapcontext.S index 060a7b2..8ce7531 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/swapcontext.S +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/swapcontext.S @@ -1,5 +1,5 @@ /* Save current context and install the given one. - Copyright (C) 2012-2024 Free Software Foundation, Inc. + Copyright (C) 2012-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/m68k/m680x0/sysdep.h b/sysdeps/unix/sysv/linux/m68k/m680x0/sysdep.h index 2560e91..02bde90 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/sysdep.h +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/sysdep.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2010-2024 Free Software Foundation, Inc. +/* Copyright (C) 2010-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/m68k/m68k-helpers.c b/sysdeps/unix/sysv/linux/m68k/m68k-helpers.c index c428742..845aae5 100644 --- a/sysdeps/unix/sysv/linux/m68k/m68k-helpers.c +++ b/sysdeps/unix/sysv/linux/m68k/m68k-helpers.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2019-2024 Free Software Foundation, Inc. +/* Copyright (C) 2019-2025 Free Software Foundation, Inc. This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/m68k/mmap_internal.h b/sysdeps/unix/sysv/linux/m68k/mmap_internal.h index 2b2c8c2..7ba902f 100644 --- a/sysdeps/unix/sysv/linux/m68k/mmap_internal.h +++ b/sysdeps/unix/sysv/linux/m68k/mmap_internal.h @@ -1,5 +1,5 @@ /* Common mmap definition for Linux implementation. Linux/m68k version. - 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/m68k/mremap.S b/sysdeps/unix/sysv/linux/m68k/mremap.S index 62011a8..eb27d9b 100644 --- a/sysdeps/unix/sysv/linux/m68k/mremap.S +++ b/sysdeps/unix/sysv/linux/m68k/mremap.S @@ -1,4 +1,4 @@ -/* 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/m68k/sigcontextinfo.h b/sysdeps/unix/sysv/linux/m68k/sigcontextinfo.h index 429bc24..312ffc5 100644 --- a/sysdeps/unix/sysv/linux/m68k/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/m68k/sigcontextinfo.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/m68k/sys/reg.h b/sysdeps/unix/sysv/linux/m68k/sys/reg.h index 6bde111..e7f8522 100644 --- a/sysdeps/unix/sysv/linux/m68k/sys/reg.h +++ b/sysdeps/unix/sysv/linux/m68k/sys/reg.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/m68k/sys/ucontext.h b/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h index db9c153..88062db 100644 --- a/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h @@ -1,4 +1,4 @@ -/* 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/m68k/sys/user.h b/sysdeps/unix/sysv/linux/m68k/sys/user.h index 1ced05f..b461dab 100644 --- a/sysdeps/unix/sysv/linux/m68k/sys/user.h +++ b/sysdeps/unix/sysv/linux/m68k/sys/user.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/m68k/syscall.S b/sysdeps/unix/sysv/linux/m68k/syscall.S index 10776a8..24bda51 100644 --- a/sysdeps/unix/sysv/linux/m68k/syscall.S +++ b/sysdeps/unix/sysv/linux/m68k/syscall.S @@ -1,4 +1,4 @@ -/* 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/m68k/syscall_cancel.S b/sysdeps/unix/sysv/linux/m68k/syscall_cancel.S new file mode 100644 index 0000000..00b94a1 --- /dev/null +++ b/sysdeps/unix/sysv/linux/m68k/syscall_cancel.S @@ -0,0 +1,84 @@ +/* Cancellable syscall wrapper. Linux/m68k 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) */ + + +ENTRY (__syscall_cancel_arch) +#ifdef __mcoldfire__ + lea (-16,%sp),%sp + movem.l %d2-%d5,(%sp) +#else + movem.l %d2-%d5,-(%sp) +#endif + cfi_def_cfa_offset (20) + cfi_offset (2, -20) + cfi_offset (3, -16) + cfi_offset (4, -12) + cfi_offset (5, -8) + + .global __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + move.l 20(%sp),%a0 + move.l (%a0),%d0 +#ifdef __mcoldfire__ + move.w %d0,%ccr + jeq 1f +#else + btst #TCB_CANCELED_BIT,%d0 + jne 1f +#endif + + move.l 48(%sp),%a0 + move.l 44(%sp),%d5 + move.l 40(%sp),%d4 + move.l 36(%sp),%d3 + move.l 32(%sp),%d2 + move.l 28(%sp),%d1 + move.l 24(%sp),%d0 + trap #0 + + .global __syscall_cancel_arch_end +__syscall_cancel_arch_end: + +#ifdef __mcoldfire__ + movem.l (%sp),%d2-%d5 + lea (16,%sp),%sp +#else + movem.l (%sp)+,%d2-%d5 +#endif + rts + +1: +#ifdef PIC + bsr.l __syscall_do_cancel +#else + jsr __syscall_do_cancel +#endif +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/m68k/sysdep.S b/sysdeps/unix/sysv/linux/m68k/sysdep.S index 484f7a9..fc3276d 100644 --- a/sysdeps/unix/sysv/linux/m68k/sysdep.S +++ b/sysdeps/unix/sysv/linux/m68k/sysdep.S @@ -1,4 +1,4 @@ -/* 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/m68k/sysdep.h b/sysdeps/unix/sysv/linux/m68k/sysdep.h index 0e43b4a..6f6b46e 100644 --- a/sysdeps/unix/sysv/linux/m68k/sysdep.h +++ b/sysdeps/unix/sysv/linux/m68k/sysdep.h @@ -1,4 +1,4 @@ -/* 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/m68k/vfork.S b/sysdeps/unix/sysv/linux/m68k/vfork.S index 985b14d..542595b 100644 --- a/sysdeps/unix/sysv/linux/m68k/vfork.S +++ b/sysdeps/unix/sysv/linux/m68k/vfork.S @@ -1,4 +1,4 @@ -/* 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/machine-sp.h b/sysdeps/unix/sysv/linux/machine-sp.h index 601b6b4..6ab3ca6 100644 --- a/sysdeps/unix/sysv/linux/machine-sp.h +++ b/sysdeps/unix/sysv/linux/machine-sp.h @@ -1,5 +1,5 @@ /* Machine-specific function to return the stack pointer. Linux version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/malloc-hugepages.c b/sysdeps/unix/sysv/linux/malloc-hugepages.c index e8f82fb..e23cdfb 100644 --- a/sysdeps/unix/sysv/linux/malloc-hugepages.c +++ b/sysdeps/unix/sysv/linux/malloc-hugepages.c @@ -1,5 +1,5 @@ /* Huge Page support. Linux implementation. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/malloc-sysdep.h b/sysdeps/unix/sysv/linux/malloc-sysdep.h index 1ca2d6a..778d897 100644 --- a/sysdeps/unix/sysv/linux/malloc-sysdep.h +++ b/sysdeps/unix/sysv/linux/malloc-sysdep.h @@ -1,5 +1,5 @@ /* System-specific malloc support functions. Linux version. - Copyright (C) 2012-2024 Free Software Foundation, Inc. + Copyright (C) 2012-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/microblaze/____longjmp_chk.S b/sysdeps/unix/sysv/linux/microblaze/____longjmp_chk.S index 3bac090..82b3492 100644 --- a/sysdeps/unix/sysv/linux/microblaze/____longjmp_chk.S +++ b/sysdeps/unix/sysv/linux/microblaze/____longjmp_chk.S @@ -1,4 +1,4 @@ -/* 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. diff --git a/sysdeps/unix/sysv/linux/microblaze/arch-syscall.h b/sysdeps/unix/sysv/linux/microblaze/arch-syscall.h index 79e225e..fe08f5c 100644 --- a/sysdeps/unix/sysv/linux/microblaze/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/microblaze/arch-syscall.h @@ -140,6 +140,7 @@ #define __NR_getuid 24 #define __NR_getuid32 199 #define __NR_getxattr 229 +#define __NR_getxattrat 464 #define __NR_gtty 32 #define __NR_idle 112 #define __NR_init_module 128 @@ -178,6 +179,7 @@ #define __NR_listen 348 #define __NR_listmount 458 #define __NR_listxattr 232 +#define __NR_listxattrat 465 #define __NR_llistxattr 233 #define __NR_lock 53 #define __NR_lookup_dcookie 253 @@ -242,6 +244,7 @@ #define __NR_open 5 #define __NR_open_by_handle_at 372 #define __NR_open_tree 428 +#define __NR_open_tree_attr 467 #define __NR_openat 295 #define __NR_openat2 437 #define __NR_pause 29 @@ -294,6 +297,7 @@ #define __NR_recvmsg 361 #define __NR_remap_file_pages 257 #define __NR_removexattr 235 +#define __NR_removexattrat 466 #define __NR_rename 38 #define __NR_renameat 302 #define __NR_renameat2 383 @@ -370,6 +374,7 @@ #define __NR_setuid 23 #define __NR_setuid32 213 #define __NR_setxattr 226 +#define __NR_setxattrat 463 #define __NR_sgetmask 68 #define __NR_shmat 335 #define __NR_shmctl 336 diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist index 1069d32..ca8df6f 100644 --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist @@ -2834,3 +2834,22 @@ GLIBC_2.39 stdc_trailing_zeros_ui F 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.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/microblaze/be/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist index d2c2cdb..5596e08 100644 --- a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist @@ -878,3 +878,75 @@ GLIBC_2.40 logp1f32 F GLIBC_2.40 logp1f32x F GLIBC_2.40 logp1f64 F GLIBC_2.40 logp1l F +GLIBC_2.41 acospi F +GLIBC_2.41 acospif F +GLIBC_2.41 acospif32 F +GLIBC_2.41 acospif32x F +GLIBC_2.41 acospif64 F +GLIBC_2.41 acospil F +GLIBC_2.41 asinpi F +GLIBC_2.41 asinpif F +GLIBC_2.41 asinpif32 F +GLIBC_2.41 asinpif32x F +GLIBC_2.41 asinpif64 F +GLIBC_2.41 asinpil F +GLIBC_2.41 atan2pi F +GLIBC_2.41 atan2pif F +GLIBC_2.41 atan2pif32 F +GLIBC_2.41 atan2pif32x F +GLIBC_2.41 atan2pif64 F +GLIBC_2.41 atan2pil F +GLIBC_2.41 atanpi F +GLIBC_2.41 atanpif F +GLIBC_2.41 atanpif32 F +GLIBC_2.41 atanpif32x F +GLIBC_2.41 atanpif64 F +GLIBC_2.41 atanpil F +GLIBC_2.41 cospi F +GLIBC_2.41 cospif F +GLIBC_2.41 cospif32 F +GLIBC_2.41 cospif32x F +GLIBC_2.41 cospif64 F +GLIBC_2.41 cospil F +GLIBC_2.41 sinpi F +GLIBC_2.41 sinpif F +GLIBC_2.41 sinpif32 F +GLIBC_2.41 sinpif32x F +GLIBC_2.41 sinpif64 F +GLIBC_2.41 sinpil F +GLIBC_2.41 tanpi F +GLIBC_2.41 tanpif F +GLIBC_2.41 tanpif32 F +GLIBC_2.41 tanpif32x F +GLIBC_2.41 tanpif64 F +GLIBC_2.41 tanpil F +GLIBC_2.42 compoundn F +GLIBC_2.42 compoundnf F +GLIBC_2.42 compoundnf32 F +GLIBC_2.42 compoundnf32x F +GLIBC_2.42 compoundnf64 F +GLIBC_2.42 compoundnl F +GLIBC_2.42 pown F +GLIBC_2.42 pownf F +GLIBC_2.42 pownf32 F +GLIBC_2.42 pownf32x F +GLIBC_2.42 pownf64 F +GLIBC_2.42 pownl F +GLIBC_2.42 powr F +GLIBC_2.42 powrf F +GLIBC_2.42 powrf32 F +GLIBC_2.42 powrf32x F +GLIBC_2.42 powrf64 F +GLIBC_2.42 powrl F +GLIBC_2.42 rootn F +GLIBC_2.42 rootnf F +GLIBC_2.42 rootnf32 F +GLIBC_2.42 rootnf32x F +GLIBC_2.42 rootnf64 F +GLIBC_2.42 rootnl F +GLIBC_2.42 rsqrt F +GLIBC_2.42 rsqrtf F +GLIBC_2.42 rsqrtf32 F +GLIBC_2.42 rsqrtf32x F +GLIBC_2.42 rsqrtf64 F +GLIBC_2.42 rsqrtl F diff --git a/sysdeps/unix/sysv/linux/microblaze/bits/fcntl.h b/sysdeps/unix/sysv/linux/microblaze/bits/fcntl.h index da936f4..63681bb 100644 --- a/sysdeps/unix/sysv/linux/microblaze/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/microblaze/bits/fcntl.h @@ -1,5 +1,5 @@ /* O_*, F_*, FD_* bit values for Linux. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/microblaze/bits/procfs.h b/sysdeps/unix/sysv/linux/microblaze/bits/procfs.h index ef8c27e..eff7f39 100644 --- a/sysdeps/unix/sysv/linux/microblaze/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/microblaze/bits/procfs.h @@ -1,5 +1,5 @@ /* Types for registers for sys/procfs.h. MicroBlaze 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. diff --git a/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h b/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h index ff1e269..4b47cc7 100644 --- a/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h +++ b/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h @@ -1,5 +1,5 @@ /* Definition for struct stat. - 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/microblaze/bits/timesize.h b/sysdeps/unix/sysv/linux/microblaze/bits/timesize.h index 60de226..9b7d983 100644 --- a/sysdeps/unix/sysv/linux/microblaze/bits/timesize.h +++ b/sysdeps/unix/sysv/linux/microblaze/bits/timesize.h @@ -1,5 +1,5 @@ /* Bit size of the time_t type at glibc build time, Linux/MicroBlaze. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/microblaze/bits/typesizes.h b/sysdeps/unix/sysv/linux/microblaze/bits/typesizes.h index 943babb..a07dc91 100644 --- a/sysdeps/unix/sysv/linux/microblaze/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/microblaze/bits/typesizes.h @@ -1,5 +1,5 @@ /* bits/typesizes.h -- underlying types for *_t. Microblaze version. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/microblaze/clock-compat.c b/sysdeps/unix/sysv/linux/microblaze/clock-compat.c index 6d907d8..4c4e99e 100644 --- a/sysdeps/unix/sysv/linux/microblaze/clock-compat.c +++ b/sysdeps/unix/sysv/linux/microblaze/clock-compat.c @@ -1,6 +1,6 @@ /* ABI compatibility redirects for clock_* symbols in librt. MicroBlaze version. - 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/microblaze/clone.S b/sysdeps/unix/sysv/linux/microblaze/clone.S index 30e9ee2..8b108fc 100644 --- a/sysdeps/unix/sysv/linux/microblaze/clone.S +++ b/sysdeps/unix/sysv/linux/microblaze/clone.S @@ -1,4 +1,4 @@ -/* 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. diff --git a/sysdeps/unix/sysv/linux/microblaze/kernel-features.h b/sysdeps/unix/sysv/linux/microblaze/kernel-features.h index 69e322e..96c3131 100644 --- a/sysdeps/unix/sysv/linux/microblaze/kernel-features.h +++ b/sysdeps/unix/sysv/linux/microblaze/kernel-features.h @@ -1,4 +1,4 @@ -/* 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/microblaze/kernel_stat.h b/sysdeps/unix/sysv/linux/microblaze/kernel_stat.h index c0a121f..d4bca02 100644 --- a/sysdeps/unix/sysv/linux/microblaze/kernel_stat.h +++ b/sysdeps/unix/sysv/linux/microblaze/kernel_stat.h @@ -1,5 +1,5 @@ /* Definition of `struct stat' used in the kernel - Copyright (C) 2013-2024 Free Software Foundation, Inc. + Copyright (C) 2013-2025 Free Software Foundation, Inc. This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist index 17abe08..9508154 100644 --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist @@ -2831,3 +2831,22 @@ GLIBC_2.39 stdc_trailing_zeros_ui F 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.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/microblaze/le/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist index d2c2cdb..5596e08 100644 --- a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist @@ -878,3 +878,75 @@ GLIBC_2.40 logp1f32 F GLIBC_2.40 logp1f32x F GLIBC_2.40 logp1f64 F GLIBC_2.40 logp1l F +GLIBC_2.41 acospi F +GLIBC_2.41 acospif F +GLIBC_2.41 acospif32 F +GLIBC_2.41 acospif32x F +GLIBC_2.41 acospif64 F +GLIBC_2.41 acospil F +GLIBC_2.41 asinpi F +GLIBC_2.41 asinpif F +GLIBC_2.41 asinpif32 F +GLIBC_2.41 asinpif32x F +GLIBC_2.41 asinpif64 F +GLIBC_2.41 asinpil F +GLIBC_2.41 atan2pi F +GLIBC_2.41 atan2pif F +GLIBC_2.41 atan2pif32 F +GLIBC_2.41 atan2pif32x F +GLIBC_2.41 atan2pif64 F +GLIBC_2.41 atan2pil F +GLIBC_2.41 atanpi F +GLIBC_2.41 atanpif F +GLIBC_2.41 atanpif32 F +GLIBC_2.41 atanpif32x F +GLIBC_2.41 atanpif64 F +GLIBC_2.41 atanpil F +GLIBC_2.41 cospi F +GLIBC_2.41 cospif F +GLIBC_2.41 cospif32 F +GLIBC_2.41 cospif32x F +GLIBC_2.41 cospif64 F +GLIBC_2.41 cospil F +GLIBC_2.41 sinpi F +GLIBC_2.41 sinpif F +GLIBC_2.41 sinpif32 F +GLIBC_2.41 sinpif32x F +GLIBC_2.41 sinpif64 F +GLIBC_2.41 sinpil F +GLIBC_2.41 tanpi F +GLIBC_2.41 tanpif F +GLIBC_2.41 tanpif32 F +GLIBC_2.41 tanpif32x F +GLIBC_2.41 tanpif64 F +GLIBC_2.41 tanpil F +GLIBC_2.42 compoundn F +GLIBC_2.42 compoundnf F +GLIBC_2.42 compoundnf32 F +GLIBC_2.42 compoundnf32x F +GLIBC_2.42 compoundnf64 F +GLIBC_2.42 compoundnl F +GLIBC_2.42 pown F +GLIBC_2.42 pownf F +GLIBC_2.42 pownf32 F +GLIBC_2.42 pownf32x F +GLIBC_2.42 pownf64 F +GLIBC_2.42 pownl F +GLIBC_2.42 powr F +GLIBC_2.42 powrf F +GLIBC_2.42 powrf32 F +GLIBC_2.42 powrf32x F +GLIBC_2.42 powrf64 F +GLIBC_2.42 powrl F +GLIBC_2.42 rootn F +GLIBC_2.42 rootnf F +GLIBC_2.42 rootnf32 F +GLIBC_2.42 rootnf32x F +GLIBC_2.42 rootnf64 F +GLIBC_2.42 rootnl F +GLIBC_2.42 rsqrt F +GLIBC_2.42 rsqrtf F +GLIBC_2.42 rsqrtf32 F +GLIBC_2.42 rsqrtf32x F +GLIBC_2.42 rsqrtf64 F +GLIBC_2.42 rsqrtl F diff --git a/sysdeps/unix/sysv/linux/microblaze/pselect32.c b/sysdeps/unix/sysv/linux/microblaze/pselect32.c index 3aee185..d2a84ff 100644 --- a/sysdeps/unix/sysv/linux/microblaze/pselect32.c +++ b/sysdeps/unix/sysv/linux/microblaze/pselect32.c @@ -1,5 +1,5 @@ /* Synchronous I/O multiplexing. Linux/microblaze version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/microblaze/sigcontextinfo.h b/sysdeps/unix/sysv/linux/microblaze/sigcontextinfo.h index e9c2355..d6335fc 100644 --- a/sysdeps/unix/sysv/linux/microblaze/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/microblaze/sigcontextinfo.h @@ -1,4 +1,4 @@ -/* 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. diff --git a/sysdeps/unix/sysv/linux/microblaze/sys/ucontext.h b/sysdeps/unix/sysv/linux/microblaze/sys/ucontext.h index 35124b4..52b615b 100644 --- a/sysdeps/unix/sysv/linux/microblaze/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/microblaze/sys/ucontext.h @@ -1,5 +1,5 @@ /* Data structures for user-level context switching. MicroBlaze 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/microblaze/sys/user.h b/sysdeps/unix/sysv/linux/microblaze/sys/user.h index 362cc09..d9deec4 100644 --- a/sysdeps/unix/sysv/linux/microblaze/sys/user.h +++ b/sysdeps/unix/sysv/linux/microblaze/sys/user.h @@ -1,4 +1,4 @@ -/* 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. diff --git a/sysdeps/unix/sysv/linux/microblaze/syscall.S b/sysdeps/unix/sysv/linux/microblaze/syscall.S index 6c1ba07..6ebf688 100644 --- a/sysdeps/unix/sysv/linux/microblaze/syscall.S +++ b/sysdeps/unix/sysv/linux/microblaze/syscall.S @@ -1,4 +1,4 @@ -/* 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. diff --git a/sysdeps/unix/sysv/linux/microblaze/syscall_cancel.S b/sysdeps/unix/sysv/linux/microblaze/syscall_cancel.S new file mode 100644 index 0000000..38150e6 --- /dev/null +++ b/sysdeps/unix/sysv/linux/microblaze/syscall_cancel.S @@ -0,0 +1,61 @@ +/* Cancellable syscall wrapper. Linux/microblaze 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, + long int nr, + long int arg1, + long int arg2, + long int arg3, + long int arg4, + long int arg5, + long int arg6) */ + +ENTRY (__syscall_cancel_arch) + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + lwi r3,r5,0 + andi r3,r3,TCB_CANCELED_BITMASK + bneid r3,1f + addk r12,r6,r0 + + addk r5,r7,r0 + addk r6,r8,r0 + addk r7,r9,r0 + addk r8,r10,r0 + lwi r9,r1,56 + lwi r10,r1,60 + brki r14,8 + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + + nop + lwi r15,r1,0 + rtsd r15,8 + addik r1,r1,28 + +1: + brlid r15, __syscall_do_cancel + nop + +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/microblaze/sysctl.c b/sysdeps/unix/sysv/linux/microblaze/sysctl.c index 0e7d132..cb1f200 100644 --- a/sysdeps/unix/sysv/linux/microblaze/sysctl.c +++ b/sysdeps/unix/sysv/linux/microblaze/sysctl.c @@ -1,5 +1,5 @@ /* sysctl function stub. microblaze 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/microblaze/sysdep.S b/sysdeps/unix/sysv/linux/microblaze/sysdep.S index 09d2f1e..0a3c1b6 100644 --- a/sysdeps/unix/sysv/linux/microblaze/sysdep.S +++ b/sysdeps/unix/sysv/linux/microblaze/sysdep.S @@ -1,4 +1,4 @@ -/* 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. diff --git a/sysdeps/unix/sysv/linux/microblaze/sysdep.h b/sysdeps/unix/sysv/linux/microblaze/sysdep.h index 9c52923..ac56648 100644 --- a/sysdeps/unix/sysv/linux/microblaze/sysdep.h +++ b/sysdeps/unix/sysv/linux/microblaze/sysdep.h @@ -1,4 +1,4 @@ -/* 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. diff --git a/sysdeps/unix/sysv/linux/microblaze/vfork.S b/sysdeps/unix/sysv/linux/microblaze/vfork.S index 7f53f81..75375bd 100644 --- a/sysdeps/unix/sysv/linux/microblaze/vfork.S +++ b/sysdeps/unix/sysv/linux/microblaze/vfork.S @@ -1,4 +1,4 @@ -/* 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. diff --git a/sysdeps/unix/sysv/linux/mips/Makefile b/sysdeps/unix/sysv/linux/mips/Makefile index d5725c6..05ec915 100644 --- a/sysdeps/unix/sysv/linux/mips/Makefile +++ b/sysdeps/unix/sysv/linux/mips/Makefile @@ -61,6 +61,7 @@ ifeq ($(subdir),elf) # this test is expected to fail. ifneq ($(mips-has-gnustack),yes) test-xfail-check-execstack = yes +CFLAGS-tst-execstack.c += -DDEFAULT_RWX_STACK=1 endif endif @@ -68,6 +69,12 @@ ifeq ($(subdir),stdlib) gen-as-const-headers += ucontext_i.sym endif +ifeq ($(subdir),nptl) +ifeq ($(mips-force-execstack),yes) +CFLAGS-tst-execstack-threads.c += -DDEFAULT_RWX_STACK=1 +endif +endif + ifeq ($(mips-force-execstack),yes) CFLAGS-.o += -Wa,-execstack CFLAGS-.os += -Wa,-execstack diff --git a/sysdeps/unix/sysv/linux/mips/Versions b/sysdeps/unix/sysv/linux/mips/Versions index 9ea0fa6..48f0037 100644 --- a/sysdeps/unix/sysv/linux/mips/Versions +++ b/sysdeps/unix/sysv/linux/mips/Versions @@ -26,6 +26,10 @@ libc { pthread_attr_setstack; pthread_attr_setstacksize; } + GLIBC_2.42 { + tcgetattr; + tcsetattr; + } GLIBC_PRIVATE { # nptl/pthread_cond_timedwait.c uses INTERNAL_VSYSCALL(clock_gettime). __vdso_clock_gettime; diff --git a/sysdeps/unix/sysv/linux/mips/____longjmp_chk.c b/sysdeps/unix/sysv/linux/mips/____longjmp_chk.c index 9119909..de3891f 100644 --- a/sysdeps/unix/sysv/linux/mips/____longjmp_chk.c +++ b/sysdeps/unix/sysv/linux/mips/____longjmp_chk.c @@ -1,4 +1,4 @@ -/* 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/mips/_test_and_set.c b/sysdeps/unix/sysv/linux/mips/_test_and_set.c index a4ff4fa..255e439 100644 --- a/sysdeps/unix/sysv/linux/mips/_test_and_set.c +++ b/sysdeps/unix/sysv/linux/mips/_test_and_set.c @@ -1,4 +1,4 @@ -/* 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/mips/bits/epoll.h b/sysdeps/unix/sysv/linux/mips/bits/epoll.h index 7a9e6f0..e417cbe 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/epoll.h +++ b/sysdeps/unix/sysv/linux/mips/bits/epoll.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2024 Free Software Foundation, Inc. +/* Copyright (C) 2002-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/mips/bits/errno.h b/sysdeps/unix/sysv/linux/mips/bits/errno.h index bc87c2e..1dfaeac 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/errno.h +++ b/sysdeps/unix/sysv/linux/mips/bits/errno.h @@ -1,5 +1,5 @@ /* Error constants. MIPS/Linux specific 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/mips/bits/eventfd.h b/sysdeps/unix/sysv/linux/mips/bits/eventfd.h index a1dcbdd..9c35666 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/eventfd.h +++ b/sysdeps/unix/sysv/linux/mips/bits/eventfd.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/mips/bits/fcntl.h b/sysdeps/unix/sysv/linux/mips/bits/fcntl.h index 774e150..c814bfc 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/mips/bits/fcntl.h @@ -1,5 +1,5 @@ /* O_*, F_*, FD_* bit values for Linux. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/mips/bits/inotify.h b/sysdeps/unix/sysv/linux/mips/bits/inotify.h index 12c590e..4017182 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/inotify.h +++ b/sysdeps/unix/sysv/linux/mips/bits/inotify.h @@ -1,4 +1,4 @@ -/* 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 diff --git a/sysdeps/unix/sysv/linux/mips/bits/ioctl-types.h b/sysdeps/unix/sysv/linux/mips/bits/ioctl-types.h index 18c554f..84bb6fc 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/ioctl-types.h +++ b/sysdeps/unix/sysv/linux/mips/bits/ioctl-types.h @@ -1,5 +1,5 @@ /* Structure types for pre-termios terminal ioctls. Linux/MIPS 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 @@ -31,18 +31,6 @@ struct winsize unsigned short int ws_ypixel; }; -#define NCC 8 -struct termio - { - unsigned short int c_iflag; /* input mode flags */ - unsigned short int c_oflag; /* output mode flags */ - unsigned short int c_cflag; /* control mode flags */ - unsigned short int c_lflag; /* local mode flags */ - char c_line; /* line discipline */ - /* Yes, this is really NCCS. */ - unsigned char c_cc[32 /* NCCS */]; /* control characters */ - }; - /* modem lines */ #define TIOCM_LE 0x001 /* line enable */ #define TIOCM_DTR 0x002 /* data terminal ready */ diff --git a/sysdeps/unix/sysv/linux/mips/bits/mman.h b/sysdeps/unix/sysv/linux/mips/bits/mman.h index 517f52d..91e43a2 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/mman.h +++ b/sysdeps/unix/sysv/linux/mips/bits/mman.h @@ -1,5 +1,5 @@ /* Definitions for POSIX memory map interface. Linux/MIPS 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/mips/bits/poll.h b/sysdeps/unix/sysv/linux/mips/bits/poll.h index 9cdfe43..3e64d9e 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/poll.h +++ b/sysdeps/unix/sysv/linux/mips/bits/poll.h @@ -1,4 +1,4 @@ -/* 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/mips/bits/procfs.h b/sysdeps/unix/sysv/linux/mips/bits/procfs.h index 7a26ae1..7af0b4d 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/mips/bits/procfs.h @@ -1,5 +1,5 @@ /* Types for registers for sys/procfs.h. MIPS 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/mips/bits/pthread_stack_min.h b/sysdeps/unix/sysv/linux/mips/bits/pthread_stack_min.h index 8c1ee07..4829024 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/pthread_stack_min.h +++ b/sysdeps/unix/sysv/linux/mips/bits/pthread_stack_min.h @@ -1,5 +1,5 @@ /* Definition of PTHREAD_STACK_MIN. MIPS Linux version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/mips/bits/resource.h b/sysdeps/unix/sysv/linux/mips/bits/resource.h index d288256..05f8e6a 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/resource.h +++ b/sysdeps/unix/sysv/linux/mips/bits/resource.h @@ -1,5 +1,5 @@ /* Bit values & structures for resource limits. Linux/MIPS version. - Copyright (C) 1994-2024 Free Software Foundation, Inc. + Copyright (C) 1994-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/mips/bits/rseq.h b/sysdeps/unix/sysv/linux/mips/bits/rseq.h index 0abd1ce..a72c17c 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/rseq.h +++ b/sysdeps/unix/sysv/linux/mips/bits/rseq.h @@ -1,5 +1,5 @@ /* Restartable Sequences Linux mips architecture header. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + 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 diff --git a/sysdeps/unix/sysv/linux/mips/bits/shmlba.h b/sysdeps/unix/sysv/linux/mips/bits/shmlba.h index dfd857f..5509e3a 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/shmlba.h +++ b/sysdeps/unix/sysv/linux/mips/bits/shmlba.h @@ -1,5 +1,5 @@ /* Define SHMLBA. MIPS 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/mips/bits/sigaction.h b/sysdeps/unix/sysv/linux/mips/bits/sigaction.h index 0f31f90..f7e3ad8 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/sigaction.h +++ b/sysdeps/unix/sysv/linux/mips/bits/sigaction.h @@ -1,5 +1,5 @@ /* The proper definitions for Linux/MIPS's sigaction. - Copyright (C) 1993-2024 Free Software Foundation, Inc. + Copyright (C) 1993-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/mips/bits/sigcontext.h b/sysdeps/unix/sysv/linux/mips/bits/sigcontext.h index 0a5a7b1..a3a5cc3 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/sigcontext.h +++ b/sysdeps/unix/sysv/linux/mips/bits/sigcontext.h @@ -1,4 +1,4 @@ -/* 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/mips/bits/signalfd.h b/sysdeps/unix/sysv/linux/mips/bits/signalfd.h index ccd1f9e..bbd450e 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/signalfd.h +++ b/sysdeps/unix/sysv/linux/mips/bits/signalfd.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/mips/bits/signum-arch.h b/sysdeps/unix/sysv/linux/mips/bits/signum-arch.h index 2625c35..d16c13c 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/signum-arch.h +++ b/sysdeps/unix/sysv/linux/mips/bits/signum-arch.h @@ -1,5 +1,5 @@ /* Signal number definitions. Linux/MIPS version. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/mips/bits/socket-constants.h b/sysdeps/unix/sysv/linux/mips/bits/socket-constants.h index 77ffc8b..d71571b 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/socket-constants.h +++ b/sysdeps/unix/sysv/linux/mips/bits/socket-constants.h @@ -1,5 +1,5 @@ /* Socket constants which vary among Linux architectures. Version for MIPS. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/mips/bits/socket_type.h b/sysdeps/unix/sysv/linux/mips/bits/socket_type.h index 313c34c..26438e1 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/socket_type.h +++ b/sysdeps/unix/sysv/linux/mips/bits/socket_type.h @@ -1,5 +1,5 @@ /* Define enum __socket_type for Linux/MIPS. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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/mips/bits/statfs.h b/sysdeps/unix/sysv/linux/mips/bits/statfs.h index bf92bd9..a685953 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/statfs.h +++ b/sysdeps/unix/sysv/linux/mips/bits/statfs.h @@ -1,4 +1,4 @@ -/* 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/mips/bits/struct_stat.h b/sysdeps/unix/sysv/linux/mips/bits/struct_stat.h index 50a4b36..0670f48 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/struct_stat.h +++ b/sysdeps/unix/sysv/linux/mips/bits/struct_stat.h @@ -1,5 +1,5 @@ /* Definition for struct stat. - 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/mips/bits/termios-c_cc.h b/sysdeps/unix/sysv/linux/mips/bits/termios-c_cc.h index 7bed635..a1ed86b 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/termios-c_cc.h +++ b/sysdeps/unix/sysv/linux/mips/bits/termios-c_cc.h @@ -1,5 +1,5 @@ /* termios c_cc symbolic constant definitions. Linux/mips version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/mips/bits/termios-c_lflag.h b/sysdeps/unix/sysv/linux/mips/bits/termios-c_lflag.h index 5d3310e..a2c7679 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/termios-c_lflag.h +++ b/sysdeps/unix/sysv/linux/mips/bits/termios-c_lflag.h @@ -1,5 +1,5 @@ /* termios local mode definitions. Linux/mips version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/mips/bits/termios-struct.h b/sysdeps/unix/sysv/linux/mips/bits/termios-struct.h deleted file mode 100644 index 95882b7..0000000 --- a/sysdeps/unix/sysv/linux/mips/bits/termios-struct.h +++ /dev/null @@ -1,34 +0,0 @@ -/* struct termios definition. Linux/mips version. - Copyright (C) 2019-2024 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 - <https://www.gnu.org/licenses/>. */ - -#ifndef _TERMIOS_H -# error "Never include <bits/termios-struct.h> directly; use <termios.h> instead." -#endif - -#define NCCS 32 -struct termios - { - tcflag_t c_iflag; /* input mode flags */ - tcflag_t c_oflag; /* output mode flags */ - tcflag_t c_cflag; /* control mode flags */ - tcflag_t c_lflag; /* local mode flags */ - cc_t c_line; /* line discipline */ - cc_t c_cc[NCCS]; /* control characters */ -#define _HAVE_STRUCT_TERMIOS_C_ISPEED 0 -#define _HAVE_STRUCT_TERMIOS_C_OSPEED 0 - }; diff --git a/sysdeps/unix/sysv/linux/mips/bits/termios-tcflow.h b/sysdeps/unix/sysv/linux/mips/bits/termios-tcflow.h index 0c0f0542..986c56a 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/termios-tcflow.h +++ b/sysdeps/unix/sysv/linux/mips/bits/termios-tcflow.h @@ -1,5 +1,5 @@ /* termios local mode definitions. Linux/mips version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/mips/bits/timerfd.h b/sysdeps/unix/sysv/linux/mips/bits/timerfd.h index 6b8250b..ab20435 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/timerfd.h +++ b/sysdeps/unix/sysv/linux/mips/bits/timerfd.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/mips/bits/timesize.h b/sysdeps/unix/sysv/linux/mips/bits/timesize.h index ccc0643..80d8240 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/timesize.h +++ b/sysdeps/unix/sysv/linux/mips/bits/timesize.h @@ -1,5 +1,5 @@ /* Bit size of the time_t type at glibc build time, Linux/MIPS. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/mips/bits/types/stack_t.h b/sysdeps/unix/sysv/linux/mips/bits/types/stack_t.h index 4f52d55..a80b4a0 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/types/stack_t.h +++ b/sysdeps/unix/sysv/linux/mips/bits/types/stack_t.h @@ -1,5 +1,5 @@ /* Define stack_t. MIPS Linux version. - Copyright (C) 1998-2024 Free Software Foundation, Inc. + Copyright (C) 1998-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/mips/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/mips/bits/types/struct_msqid_ds.h index 09c5364..61723d3 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/types/struct_msqid_ds.h +++ b/sysdeps/unix/sysv/linux/mips/bits/types/struct_msqid_ds.h @@ -1,5 +1,5 @@ /* Linux/MIPS implementation of the SysV message struct msqid_ds. - 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/mips/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h index 0746684..730f7a8 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h +++ b/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h @@ -1,5 +1,5 @@ /* MIPS implementation of the semaphore struct semid_ds - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/mips/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h index c665af1..ee6bcb0 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h +++ b/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h @@ -1,5 +1,5 @@ /* Linux/MIPS implementation of the shared memory struct shmid_ds. - 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/mips/bits/typesizes.h b/sysdeps/unix/sysv/linux/mips/bits/typesizes.h index 1b4f700..1539181 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/mips/bits/typesizes.h @@ -1,5 +1,5 @@ /* bits/typesizes.h -- underlying types for *_t. MIPS version. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/mips/clone.S b/sysdeps/unix/sysv/linux/mips/clone.S index eaa879f..d4f95d2 100644 --- a/sysdeps/unix/sysv/linux/mips/clone.S +++ b/sysdeps/unix/sysv/linux/mips/clone.S @@ -1,4 +1,4 @@ -/* 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/mips/clone3.S b/sysdeps/unix/sysv/linux/mips/clone3.S index 58925d6..7e6f3cc 100644 --- a/sysdeps/unix/sysv/linux/mips/clone3.S +++ b/sysdeps/unix/sysv/linux/mips/clone3.S @@ -1,5 +1,5 @@ /* The clone3 syscall wrapper. Linux/mips 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/mips/dl-cache.h b/sysdeps/unix/sysv/linux/mips/dl-cache.h index e3e0c1a..72499fd 100644 --- a/sysdeps/unix/sysv/linux/mips/dl-cache.h +++ b/sysdeps/unix/sysv/linux/mips/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/mips/errlist-compat-data.h b/sysdeps/unix/sysv/linux/mips/errlist-compat-data.h index fafc254..6bd6821 100644 --- a/sysdeps/unix/sysv/linux/mips/errlist-compat-data.h +++ b/sysdeps/unix/sysv/linux/mips/errlist-compat-data.h @@ -1,5 +1,5 @@ /* Linux sys_errlist compat symbol definitions. MIPS 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/mips/fxstat.c b/sysdeps/unix/sysv/linux/mips/fxstat.c index 4ab3a34..d367227 100644 --- a/sysdeps/unix/sysv/linux/mips/fxstat.c +++ b/sysdeps/unix/sysv/linux/mips/fxstat.c @@ -1,5 +1,5 @@ /* fxstat using old-style Unix stat system call. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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/mips/getcontext.S b/sysdeps/unix/sysv/linux/mips/getcontext.S index 48b3500..4e10d37 100644 --- a/sysdeps/unix/sysv/linux/mips/getcontext.S +++ b/sysdeps/unix/sysv/linux/mips/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/mips/getrlimit64.c b/sysdeps/unix/sysv/linux/mips/getrlimit64.c index 39691dd..bdc535f 100644 --- a/sysdeps/unix/sysv/linux/mips/getrlimit64.c +++ b/sysdeps/unix/sysv/linux/mips/getrlimit64.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2013-2024 Free Software Foundation, Inc. +/* Copyright (C) 2013-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/mips/kernel-features.h b/sysdeps/unix/sysv/linux/mips/kernel-features.h index 5977177..d86ac92 100644 --- a/sysdeps/unix/sysv/linux/mips/kernel-features.h +++ b/sysdeps/unix/sysv/linux/mips/kernel-features.h @@ -1,6 +1,6 @@ /* Set flags signalling availability of kernel features based on given kernel version number. - 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/mips/kernel_termios.h b/sysdeps/unix/sysv/linux/mips/kernel_termios.h deleted file mode 100644 index 478f295..0000000 --- a/sysdeps/unix/sysv/linux/mips/kernel_termios.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 1997-2024 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 - <https://www.gnu.org/licenses/>. */ - -#ifndef _KERNEL_TERMIOS_H -#define _KERNEL_TERMIOS_H 1 -/* The following corresponds to the values from the Linux 2.1.24 kernel. */ - -#define __KERNEL_NCCS 23 - -struct __kernel_termios - { - tcflag_t c_iflag; /* input mode flags */ - tcflag_t c_oflag; /* output mode flags */ - tcflag_t c_cflag; /* control mode flags */ - tcflag_t c_lflag; /* local mode flags */ - cc_t c_line; /* line discipline */ - cc_t c_cc[__KERNEL_NCCS]; /* control characters */ - }; - -#define _HAVE_C_ISPEED 0 -#define _HAVE_C_OSPEED 0 - -#endif /* kernel_termios.h */ diff --git a/sysdeps/unix/sysv/linux/mips/ldsodefs.h b/sysdeps/unix/sysv/linux/mips/ldsodefs.h index 5f6cdea..22d45dd 100644 --- a/sysdeps/unix/sysv/linux/mips/ldsodefs.h +++ b/sysdeps/unix/sysv/linux/mips/ldsodefs.h @@ -1,5 +1,5 @@ /* Run-time dynamic linker data structures for loaded ELF shared objects. MIPS. - 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/mips/lxstat.c b/sysdeps/unix/sysv/linux/mips/lxstat.c index 8bf8f67..e36fdf4 100644 --- a/sysdeps/unix/sysv/linux/mips/lxstat.c +++ b/sysdeps/unix/sysv/linux/mips/lxstat.c @@ -1,5 +1,5 @@ /* lxstat using old-style Unix stat system call. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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/mips/makecontext.S b/sysdeps/unix/sysv/linux/mips/makecontext.S index 63909f2..dd632b3 100644 --- a/sysdeps/unix/sysv/linux/mips/makecontext.S +++ b/sysdeps/unix/sysv/linux/mips/makecontext.S @@ -1,5 +1,5 @@ /* Modify saved 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/mips/mips32/arch-syscall.h b/sysdeps/unix/sysv/linux/mips/mips32/arch-syscall.h index dadd7f3..7d76d65 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/mips/mips32/arch-syscall.h @@ -131,6 +131,7 @@ #define __NR_gettimeofday 4078 #define __NR_getuid 4024 #define __NR_getxattr 4227 +#define __NR_getxattrat 4464 #define __NR_gtty 4032 #define __NR_idle 4112 #define __NR_init_module 4128 @@ -168,6 +169,7 @@ #define __NR_listen 4174 #define __NR_listmount 4458 #define __NR_listxattr 4230 +#define __NR_listxattrat 4465 #define __NR_llistxattr 4231 #define __NR_lock 4053 #define __NR_lookup_dcookie 4247 @@ -227,6 +229,7 @@ #define __NR_open 4005 #define __NR_open_by_handle_at 4340 #define __NR_open_tree 4428 +#define __NR_open_tree_attr 4467 #define __NR_openat 4288 #define __NR_openat2 4437 #define __NR_pause 4029 @@ -279,6 +282,7 @@ #define __NR_recvmsg 4177 #define __NR_remap_file_pages 4251 #define __NR_removexattr 4233 +#define __NR_removexattrat 4466 #define __NR_rename 4038 #define __NR_renameat 4295 #define __NR_renameat2 4351 @@ -343,6 +347,7 @@ #define __NR_settimeofday 4079 #define __NR_setuid 4023 #define __NR_setxattr 4224 +#define __NR_setxattrat 4463 #define __NR_sgetmask 4068 #define __NR_shmat 4397 #define __NR_shmctl 4396 diff --git a/sysdeps/unix/sysv/linux/mips/mips32/bug-getcontext-mips-gp.c b/sysdeps/unix/sysv/linux/mips/mips32/bug-getcontext-mips-gp.c index a36507d..5f75a4e 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/bug-getcontext-mips-gp.c +++ b/sysdeps/unix/sysv/linux/mips/mips32/bug-getcontext-mips-gp.c @@ -1,5 +1,5 @@ /* Tests register values retrieved by getcontext() for mips o32. - 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/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist index 799e508..4d51cc4 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist @@ -2909,6 +2909,27 @@ GLIBC_2.4 renameat F GLIBC_2.4 symlinkat F GLIBC_2.4 unlinkat F GLIBC_2.4 unshare 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 tcgetattr F +GLIBC_2.42 tcsetattr F +GLIBC_2.42 uabs F +GLIBC_2.42 uimaxabs F +GLIBC_2.42 ulabs F +GLIBC_2.42 ullabs F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist index a7c8ca0..cdcc488 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist @@ -878,3 +878,75 @@ GLIBC_2.40 logp1f32 F GLIBC_2.40 logp1f32x F GLIBC_2.40 logp1f64 F GLIBC_2.40 logp1l F +GLIBC_2.41 acospi F +GLIBC_2.41 acospif F +GLIBC_2.41 acospif32 F +GLIBC_2.41 acospif32x F +GLIBC_2.41 acospif64 F +GLIBC_2.41 acospil F +GLIBC_2.41 asinpi F +GLIBC_2.41 asinpif F +GLIBC_2.41 asinpif32 F +GLIBC_2.41 asinpif32x F +GLIBC_2.41 asinpif64 F +GLIBC_2.41 asinpil F +GLIBC_2.41 atan2pi F +GLIBC_2.41 atan2pif F +GLIBC_2.41 atan2pif32 F +GLIBC_2.41 atan2pif32x F +GLIBC_2.41 atan2pif64 F +GLIBC_2.41 atan2pil F +GLIBC_2.41 atanpi F +GLIBC_2.41 atanpif F +GLIBC_2.41 atanpif32 F +GLIBC_2.41 atanpif32x F +GLIBC_2.41 atanpif64 F +GLIBC_2.41 atanpil F +GLIBC_2.41 cospi F +GLIBC_2.41 cospif F +GLIBC_2.41 cospif32 F +GLIBC_2.41 cospif32x F +GLIBC_2.41 cospif64 F +GLIBC_2.41 cospil F +GLIBC_2.41 sinpi F +GLIBC_2.41 sinpif F +GLIBC_2.41 sinpif32 F +GLIBC_2.41 sinpif32x F +GLIBC_2.41 sinpif64 F +GLIBC_2.41 sinpil F +GLIBC_2.41 tanpi F +GLIBC_2.41 tanpif F +GLIBC_2.41 tanpif32 F +GLIBC_2.41 tanpif32x F +GLIBC_2.41 tanpif64 F +GLIBC_2.41 tanpil F +GLIBC_2.42 compoundn F +GLIBC_2.42 compoundnf F +GLIBC_2.42 compoundnf32 F +GLIBC_2.42 compoundnf32x F +GLIBC_2.42 compoundnf64 F +GLIBC_2.42 compoundnl F +GLIBC_2.42 pown F +GLIBC_2.42 pownf F +GLIBC_2.42 pownf32 F +GLIBC_2.42 pownf32x F +GLIBC_2.42 pownf64 F +GLIBC_2.42 pownl F +GLIBC_2.42 powr F +GLIBC_2.42 powrf F +GLIBC_2.42 powrf32 F +GLIBC_2.42 powrf32x F +GLIBC_2.42 powrf64 F +GLIBC_2.42 powrl F +GLIBC_2.42 rootn F +GLIBC_2.42 rootnf F +GLIBC_2.42 rootnf32 F +GLIBC_2.42 rootnf32x F +GLIBC_2.42 rootnf64 F +GLIBC_2.42 rootnl F +GLIBC_2.42 rsqrt F +GLIBC_2.42 rsqrtf F +GLIBC_2.42 rsqrtf32 F +GLIBC_2.42 rsqrtf32x F +GLIBC_2.42 rsqrtf64 F +GLIBC_2.42 rsqrtl F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/mips-syscall5.S b/sysdeps/unix/sysv/linux/mips/mips32/mips-syscall5.S index 137198a..2fcc21b 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/mips-syscall5.S +++ b/sysdeps/unix/sysv/linux/mips/mips32/mips-syscall5.S @@ -1,5 +1,5 @@ /* MIPS syscall wrappers. - 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/mips/mips32/mips-syscall6.S b/sysdeps/unix/sysv/linux/mips/mips32/mips-syscall6.S index b54fad4..dcd579d 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/mips-syscall6.S +++ b/sysdeps/unix/sysv/linux/mips/mips32/mips-syscall6.S @@ -1,5 +1,5 @@ /* MIPS syscall wrappers. - 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/mips/mips32/mips-syscall7.S b/sysdeps/unix/sysv/linux/mips/mips32/mips-syscall7.S index a4722aa..68da583 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/mips-syscall7.S +++ b/sysdeps/unix/sysv/linux/mips/mips32/mips-syscall7.S @@ -1,5 +1,5 @@ /* MIPS syscall wrappers. - 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/mips/mips32/mips16/mips16-syscall.h b/sysdeps/unix/sysv/linux/mips/mips32/mips16/mips16-syscall.h index ed0e688..66a1bfa 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/mips16/mips16-syscall.h +++ b/sysdeps/unix/sysv/linux/mips/mips32/mips16/mips16-syscall.h @@ -1,5 +1,5 @@ /* MIPS16 syscall wrappers. - Copyright (C) 2013-2024 Free Software Foundation, Inc. + Copyright (C) 2013-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/mips/mips32/mips16/mips16-syscall0.c b/sysdeps/unix/sysv/linux/mips/mips32/mips16/mips16-syscall0.c index 5b229f8..fb1516c 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/mips16/mips16-syscall0.c +++ b/sysdeps/unix/sysv/linux/mips/mips32/mips16/mips16-syscall0.c @@ -1,5 +1,5 @@ /* MIPS16 syscall wrappers. - Copyright (C) 2013-2024 Free Software Foundation, Inc. + Copyright (C) 2013-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/mips/mips32/mips16/mips16-syscall1.c b/sysdeps/unix/sysv/linux/mips/mips32/mips16/mips16-syscall1.c index 4287178..8116bfb 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/mips16/mips16-syscall1.c +++ b/sysdeps/unix/sysv/linux/mips/mips32/mips16/mips16-syscall1.c @@ -1,5 +1,5 @@ /* MIPS16 syscall wrappers. - Copyright (C) 2013-2024 Free Software Foundation, Inc. + Copyright (C) 2013-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/mips/mips32/mips16/mips16-syscall2.c b/sysdeps/unix/sysv/linux/mips/mips32/mips16/mips16-syscall2.c index 1de808f..0938e6d 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/mips16/mips16-syscall2.c +++ b/sysdeps/unix/sysv/linux/mips/mips32/mips16/mips16-syscall2.c @@ -1,5 +1,5 @@ /* MIPS16 syscall wrappers. - Copyright (C) 2013-2024 Free Software Foundation, Inc. + Copyright (C) 2013-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/mips/mips32/mips16/mips16-syscall3.c b/sysdeps/unix/sysv/linux/mips/mips32/mips16/mips16-syscall3.c index b212f51..7a56c16 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/mips16/mips16-syscall3.c +++ b/sysdeps/unix/sysv/linux/mips/mips32/mips16/mips16-syscall3.c @@ -1,5 +1,5 @@ /* MIPS16 syscall wrappers. - Copyright (C) 2013-2024 Free Software Foundation, Inc. + Copyright (C) 2013-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/mips/mips32/mips16/mips16-syscall4.c b/sysdeps/unix/sysv/linux/mips/mips32/mips16/mips16-syscall4.c index 4164849..e6a2f66 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/mips16/mips16-syscall4.c +++ b/sysdeps/unix/sysv/linux/mips/mips32/mips16/mips16-syscall4.c @@ -1,5 +1,5 @@ /* MIPS16 syscall wrappers. - Copyright (C) 2013-2024 Free Software Foundation, Inc. + Copyright (C) 2013-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/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist index 1c10996..7f90fad 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist @@ -2907,6 +2907,27 @@ GLIBC_2.4 renameat F GLIBC_2.4 symlinkat F GLIBC_2.4 unlinkat F GLIBC_2.4 unshare 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 tcgetattr F +GLIBC_2.42 tcsetattr F +GLIBC_2.42 uabs F +GLIBC_2.42 uimaxabs F +GLIBC_2.42 ulabs F +GLIBC_2.42 ullabs F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/syscall_cancel.S b/sysdeps/unix/sysv/linux/mips/mips32/syscall_cancel.S new file mode 100644 index 0000000..1190f08 --- /dev/null +++ b/sysdeps/unix/sysv/linux/mips/mips32/syscall_cancel.S @@ -0,0 +1,128 @@ +/* Cancellable syscall wrapper. Linux/mips32 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 <sys/asm.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, + __syscall_arg_t arg7) */ + +#define FRAME_SIZE 56 + +NESTED (__syscall_cancel_arch, FRAME_SIZE, fp) + .mask 0xc0070000,-SZREG + .fmask 0x00000000,0 + + PTR_ADDIU sp, -FRAME_SIZE + cfi_def_cfa_offset (FRAME_SIZE) + + sw fp, 48(sp) + sw ra, 52(sp) + sw s2, 44(sp) + sw s1, 40(sp) + sw s0, 36(sp) +#ifdef __PIC__ + .cprestore 16 +#endif + cfi_offset (ra, -4) + cfi_offset (fp, -8) + cfi_offset (s2, -12) + cfi_offset (s1, -16) + cfi_offset (s0, -20) + + move fp ,sp + cfi_def_cfa_register (fp) + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + lw v0, 0(a0) + andi v0, v0, TCB_CANCELED_BITMASK + bne v0, zero, 2f + + addiu sp, sp, -16 + addiu v0, sp, 16 + sw v0, 24(fp) + + move s0, a1 + move a0, a2 + move a1, a3 + lw a2, 72(fp) + lw a3, 76(fp) + lw v0, 84(fp) + lw s1, 80(fp) + lw s2, 88(fp) + + .set noreorder + subu sp, 32 + sw s1, 16(sp) + sw v0, 20(sp) + sw s2, 24(sp) + move v0, s0 + syscall + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + addiu sp, sp, 32 + .set reorder + + beq a3, zero, 1f + subu v0, zero, v0 +1: + move sp, fp + cfi_remember_state + cfi_def_cfa_register (sp) + lw ra, 52(fp) + lw fp, 48(sp) + lw s2, 44(sp) + lw s1, 40(sp) + lw s0, 36(sp) + + .set noreorder + .set nomacro + jr ra + addiu sp,sp,FRAME_SIZE + + .set macro + .set reorder + + cfi_def_cfa_offset (0) + cfi_restore (s0) + cfi_restore (s1) + cfi_restore (s2) + cfi_restore (fp) + cfi_restore (ra) + +2: + cfi_restore_state +#ifdef __PIC__ + PTR_LA t9, __syscall_do_cancel + jalr t9 +#else + jal __syscall_do_cancel +#endif + +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h index 1827caf..83ccfb0 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h +++ b/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h @@ -1,4 +1,4 @@ -/* 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 @@ -18,6 +18,10 @@ #ifndef _LINUX_MIPS_MIPS32_SYSDEP_H #define _LINUX_MIPS_MIPS32_SYSDEP_H 1 +/* mips32 have cancelable syscalls with 7 arguments (currently only + sync_file_range). */ +#define HAVE_CANCELABLE_SYSCALL_WITH_7_ARGS 1 + /* There is some commonality. */ #include <sysdeps/unix/sysv/linux/mips/sysdep.h> #include <sysdeps/unix/sysv/linux/sysdep.h> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/fxstat64.c b/sysdeps/unix/sysv/linux/mips/mips64/fxstat64.c index 8bf8d05..8a7c3d0 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/fxstat64.c +++ b/sysdeps/unix/sysv/linux/mips/mips64/fxstat64.c @@ -1,5 +1,5 @@ /* fxstat64 using 64-bit MIPS fstat system call. - 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/mips/mips64/fxstatat.c b/sysdeps/unix/sysv/linux/mips/mips64/fxstatat.c index 583aafe..007b531 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/fxstatat.c +++ b/sysdeps/unix/sysv/linux/mips/mips64/fxstatat.c @@ -1,5 +1,5 @@ /* fxstat using old-style Unix fstat system call. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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/mips/mips64/fxstatat64.c b/sysdeps/unix/sysv/linux/mips/mips64/fxstatat64.c index 93d2556..37acf1e 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/fxstatat64.c +++ b/sysdeps/unix/sysv/linux/mips/mips64/fxstatat64.c @@ -1,4 +1,4 @@ -/* 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 diff --git a/sysdeps/unix/sysv/linux/mips/mips64/getdents64.c b/sysdeps/unix/sysv/linux/mips/mips64/getdents64.c index f81ae5b..4b0fe2c 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/getdents64.c +++ b/sysdeps/unix/sysv/linux/mips/mips64/getdents64.c @@ -1,5 +1,5 @@ /* Get directory entries. Linux/MIPSn64 LFS 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/mips/mips64/ipc_priv.h b/sysdeps/unix/sysv/linux/mips/mips64/ipc_priv.h index 7f17aed..b2d93cf 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/ipc_priv.h +++ b/sysdeps/unix/sysv/linux/mips/mips64/ipc_priv.h @@ -1,5 +1,5 @@ /* Old SysV permission definition for Linux. MIPS64 version. - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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/mips/mips64/kstat_cp.h b/sysdeps/unix/sysv/linux/mips/mips64/kstat_cp.h index fac8c0c..6e8375d 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/kstat_cp.h +++ b/sysdeps/unix/sysv/linux/mips/mips64/kstat_cp.h @@ -1,5 +1,5 @@ /* Struct stat/stat64 to stat/stat64 conversion for Linux. - 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/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist index 8e36e16..888164b 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist @@ -1189,3 +1189,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/mips/mips64/lxstat64.c b/sysdeps/unix/sysv/linux/mips/mips64/lxstat64.c index 4294668..c872172 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/lxstat64.c +++ b/sysdeps/unix/sysv/linux/mips/mips64/lxstat64.c @@ -1,5 +1,5 @@ /* lxstat64 using 64-bit MIPS lstat system call. - 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/mips/mips64/msgctl.c b/sysdeps/unix/sysv/linux/mips/mips64/msgctl.c index 064e234..a8d9eaa 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/msgctl.c +++ b/sysdeps/unix/sysv/linux/mips/mips64/msgctl.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/mips/mips64/n32/arch-syscall.h b/sysdeps/unix/sysv/linux/mips/mips64/n32/arch-syscall.h index db6b2d4..bca3ea6 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/arch-syscall.h @@ -124,6 +124,7 @@ #define __NR_gettimeofday 6094 #define __NR_getuid 6100 #define __NR_getxattr 6183 +#define __NR_getxattrat 6464 #define __NR_init_module 6168 #define __NR_inotify_add_watch 6248 #define __NR_inotify_init 6247 @@ -156,6 +157,7 @@ #define __NR_listen 6049 #define __NR_listmount 6458 #define __NR_listxattr 6186 +#define __NR_listxattrat 6465 #define __NR_llistxattr 6187 #define __NR_lookup_dcookie 6206 #define __NR_lremovexattr 6190 @@ -210,6 +212,7 @@ #define __NR_open 6002 #define __NR_open_by_handle_at 6304 #define __NR_open_tree 6428 +#define __NR_open_tree_attr 6467 #define __NR_openat 6251 #define __NR_openat2 6437 #define __NR_pause 6033 @@ -258,6 +261,7 @@ #define __NR_recvmsg 6046 #define __NR_remap_file_pages 6210 #define __NR_removexattr 6189 +#define __NR_removexattrat 6466 #define __NR_rename 6080 #define __NR_renameat 6258 #define __NR_renameat2 6315 @@ -323,6 +327,7 @@ #define __NR_settimeofday 6159 #define __NR_setuid 6103 #define __NR_setxattr 6180 +#define __NR_setxattrat 6463 #define __NR_shmat 6029 #define __NR_shmctl 6030 #define __NR_shmdt 6065 diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist index 03d9655..fc366d1 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist @@ -2915,6 +2915,27 @@ GLIBC_2.4 renameat F GLIBC_2.4 symlinkat F GLIBC_2.4 unlinkat F GLIBC_2.4 unshare 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 tcgetattr F +GLIBC_2.42 tcsetattr F +GLIBC_2.42 uabs F +GLIBC_2.42 uimaxabs F +GLIBC_2.42 ulabs F +GLIBC_2.42 ullabs F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/lseek.c b/sysdeps/unix/sysv/linux/mips/mips64/n32/lseek.c index 1d21ced..b33c119 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/lseek.c +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/lseek.c @@ -1,5 +1,5 @@ /* MIPS n32 lseek implementation. - 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/mips/mips64/n32/mmap_internal.h b/sysdeps/unix/sysv/linux/mips/mips64/n32/mmap_internal.h index 9c739d1..7e0fb03 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/mmap_internal.h +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/mmap_internal.h @@ -1,5 +1,5 @@ /* Common mmap definition for Linux implementation. MIPS n32 version. - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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/nios2/syscall.S b/sysdeps/unix/sysv/linux/mips/mips64/n32/syscall_types.h index 18ac11c..90c0a0b 100644 --- a/sysdeps/unix/sysv/linux/nios2/syscall.S +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/syscall_types.h @@ -1,5 +1,5 @@ -/* syscall - indirect system call. - Copyright (C) 2005-2024 Free Software Foundation, Inc. +/* Types and macros used for syscall issuing. MIPS64n32 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 @@ -16,21 +16,13 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -#include <sysdep.h> +#ifndef _SYSCALL_TYPES_H +#define _SYSCALL_TYPES_H -/* We don't need a special syscall to implement syscall(). It won't work - reliably with 64-bit arguments (but that is true on many modern platforms). -*/ +typedef long long int __syscall_arg_t; -ENTRY (syscall) - mov r2, r4 - mov r4, r5 - mov r5, r6 - mov r6, r7 - ldw r7, 0(sp) - ldw r8, 4(sp) - ldw r9, 8(sp) - trap - bne r7, zero, SYSCALL_ERROR_LABEL - ret -PSEUDO_END (syscall) +/* Convert X to a long long, without losing any bits if it is one + already or warning if it is a 32-bit pointer. */ +#define __SSC(__x) ((__syscall_arg_t) (__typeof__ ((__x) - (__x))) (__x)) + +#endif diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/arch-syscall.h b/sysdeps/unix/sysv/linux/mips/mips64/n64/arch-syscall.h index b4129a4..5bcd929 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/arch-syscall.h @@ -116,6 +116,7 @@ #define __NR_gettimeofday 5094 #define __NR_getuid 5100 #define __NR_getxattr 5183 +#define __NR_getxattrat 5464 #define __NR_init_module 5168 #define __NR_inotify_add_watch 5244 #define __NR_inotify_init 5243 @@ -147,6 +148,7 @@ #define __NR_listen 5049 #define __NR_listmount 5458 #define __NR_listxattr 5186 +#define __NR_listxattrat 5465 #define __NR_llistxattr 5187 #define __NR_lookup_dcookie 5206 #define __NR_lremovexattr 5190 @@ -199,6 +201,7 @@ #define __NR_open 5002 #define __NR_open_by_handle_at 5299 #define __NR_open_tree 5428 +#define __NR_open_tree_attr 5467 #define __NR_openat 5247 #define __NR_openat2 5437 #define __NR_pause 5033 @@ -244,6 +247,7 @@ #define __NR_recvmsg 5046 #define __NR_remap_file_pages 5210 #define __NR_removexattr 5189 +#define __NR_removexattrat 5466 #define __NR_rename 5080 #define __NR_renameat 5254 #define __NR_renameat2 5311 @@ -305,6 +309,7 @@ #define __NR_settimeofday 5159 #define __NR_setuid 5103 #define __NR_setxattr 5180 +#define __NR_setxattrat 5463 #define __NR_shmat 5029 #define __NR_shmctl 5030 #define __NR_shmdt 5065 diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/fstatat.c b/sysdeps/unix/sysv/linux/mips/mips64/n64/fstatat.c index bbb687a..efac564 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/fstatat.c +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/fstatat.c @@ -1,5 +1,5 @@ /* Get file status. Linux/MIPSn64 version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/mips/mips64/n64/ioctl.S b/sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S index 13f5ce0..667ddaf 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S @@ -1,4 +1,4 @@ -/* Copyright 2003-2024 Free Software Foundation, Inc. +/* Copyright 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/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist index 05e402e..debd5c3 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist @@ -2817,6 +2817,27 @@ GLIBC_2.4 renameat F GLIBC_2.4 symlinkat F GLIBC_2.4 unlinkat F GLIBC_2.4 unshare 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 tcgetattr F +GLIBC_2.42 tcsetattr F +GLIBC_2.42 uabs F +GLIBC_2.42 uimaxabs F +GLIBC_2.42 ulabs F +GLIBC_2.42 ullabs F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/posix_fadvise64.c b/sysdeps/unix/sysv/linux/mips/mips64/n64/posix_fadvise64.c index 79f7e3d..22647e0 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/posix_fadvise64.c +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/posix_fadvise64.c @@ -1,4 +1,4 @@ -/* 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/mips/mips64/semctl.c b/sysdeps/unix/sysv/linux/mips/mips64/semctl.c index ce1c42c..819b0e5 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/semctl.c +++ b/sysdeps/unix/sysv/linux/mips/mips64/semctl.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/mips/mips64/shmctl.c b/sysdeps/unix/sysv/linux/mips/mips64/shmctl.c index 37548a8..b3e1fb3 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/shmctl.c +++ b/sysdeps/unix/sysv/linux/mips/mips64/shmctl.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/mips/mips64/syscall.S b/sysdeps/unix/sysv/linux/mips/mips64/syscall.S index ddc84b1..0ebaa60 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/syscall.S +++ b/sysdeps/unix/sysv/linux/mips/mips64/syscall.S @@ -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/mips/mips64/syscall_cancel.S b/sysdeps/unix/sysv/linux/mips/mips64/syscall_cancel.S new file mode 100644 index 0000000..edd7c4d --- /dev/null +++ b/sysdeps/unix/sysv/linux/mips/mips64/syscall_cancel.S @@ -0,0 +1,112 @@ +/* Cancellable syscall wrapper. Linux/mips64 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 <sys/asm.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, + __syscall_arg_t arg7) */ + +#define FRAME_SIZE 32 + + .text +NESTED (__syscall_cancel_arch, FRAME_SIZE, ra) + .mask 0x90010000, -SZREG + .fmask 0x00000000, 0 + LONG_ADDIU sp, sp, -FRAME_SIZE + cfi_def_cfa_offset (FRAME_SIZE) + sd gp, 16(sp) + cfi_offset (gp, -16) + lui gp, %hi(%neg(%gp_rel(__syscall_cancel_arch))) + LONG_ADDU gp, gp, t9 + sd ra, 24(sp) + sd s0, 8(sp) + cfi_offset (ra, -8) + cfi_offset (s0, -24) + LONG_ADDIU gp, gp, %lo(%neg(%gp_rel(__syscall_cancel_arch))) + + .global __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + lw v0, 0(a0) + andi v0, v0, TCB_CANCELED_BITMASK + .set noreorder + .set nomacro + bne v0, zero, 2f + move s0, a1 + .set macro + .set reorder + + move a0, a2 + move a1, a3 + move a2, a4 + move a3, a5 + move a4, a6 + move a5, a7 + + .set noreorder + move v0, s0 + syscall + .set reorder + + .global __syscall_cancel_arch_end +__syscall_cancel_arch_end: + + .set noreorder + .set nomacro +#if __mips_isa_rev >= 6 + beqzc $7, 1f +#else + bnel a3, zero, 1f +#endif + SUBU v0, zero, v0 + .set macro + .set reorder + +1: + ld ra, 24(sp) + ld gp, 16(sp) + ld s0, 8(sp) + + .set noreorder + .set nomacro + jr ra + LONG_ADDIU sp, sp, FRAME_SIZE + .set macro + .set reorder + + cfi_remember_state + cfi_def_cfa_offset (0) + cfi_restore (s0) + cfi_restore (gp) + cfi_restore (ra) + .align 3 +2: + cfi_restore_state + LONG_L t9, %got_disp(__syscall_do_cancel)(gp) + .reloc 3f, R_MIPS_JALR, __syscall_do_cancel +3: jalr t9 +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/mips/mips64/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips64/sysdep.h index 0a1711d..78044d6 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/sysdep.h +++ b/sysdeps/unix/sysv/linux/mips/mips64/sysdep.h @@ -1,4 +1,4 @@ -/* 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 @@ -44,15 +44,7 @@ #undef HAVE_INTERNAL_BRK_ADDR_SYMBOL #define HAVE_INTERNAL_BRK_ADDR_SYMBOL 1 -#if _MIPS_SIM == _ABIN32 -/* Convert X to a long long, without losing any bits if it is one - already or warning if it is a 32-bit pointer. */ -# define ARGIFY(X) ((long long int) (__typeof__ ((X) - (X))) (X)) -typedef long long int __syscall_arg_t; -#else -# define ARGIFY(X) ((long int) (X)) -typedef long int __syscall_arg_t; -#endif +#include <syscall_types.h> /* Note that the original Linux syscall restart convention required the instruction immediately preceding SYSCALL to initialize $v0 with the @@ -120,7 +112,7 @@ typedef long int __syscall_arg_t; long int _sys_result; \ \ { \ - __syscall_arg_t _arg1 = ARGIFY (arg1); \ + __syscall_arg_t _arg1 = __SSC (arg1); \ register __syscall_arg_t __s0 asm ("$16") __attribute__ ((unused))\ = (number); \ register __syscall_arg_t __v0 asm ("$2"); \ @@ -144,8 +136,8 @@ typedef long int __syscall_arg_t; long int _sys_result; \ \ { \ - __syscall_arg_t _arg1 = ARGIFY (arg1); \ - __syscall_arg_t _arg2 = ARGIFY (arg2); \ + __syscall_arg_t _arg1 = __SSC (arg1); \ + __syscall_arg_t _arg2 = __SSC (arg2); \ register __syscall_arg_t __s0 asm ("$16") __attribute__ ((unused))\ = (number); \ register __syscall_arg_t __v0 asm ("$2"); \ @@ -170,9 +162,9 @@ typedef long int __syscall_arg_t; long int _sys_result; \ \ { \ - __syscall_arg_t _arg1 = ARGIFY (arg1); \ - __syscall_arg_t _arg2 = ARGIFY (arg2); \ - __syscall_arg_t _arg3 = ARGIFY (arg3); \ + __syscall_arg_t _arg1 = __SSC (arg1); \ + __syscall_arg_t _arg2 = __SSC (arg2); \ + __syscall_arg_t _arg3 = __SSC (arg3); \ register __syscall_arg_t __s0 asm ("$16") __attribute__ ((unused))\ = (number); \ register __syscall_arg_t __v0 asm ("$2"); \ @@ -199,10 +191,10 @@ typedef long int __syscall_arg_t; long int _sys_result; \ \ { \ - __syscall_arg_t _arg1 = ARGIFY (arg1); \ - __syscall_arg_t _arg2 = ARGIFY (arg2); \ - __syscall_arg_t _arg3 = ARGIFY (arg3); \ - __syscall_arg_t _arg4 = ARGIFY (arg4); \ + __syscall_arg_t _arg1 = __SSC (arg1); \ + __syscall_arg_t _arg2 = __SSC (arg2); \ + __syscall_arg_t _arg3 = __SSC (arg3); \ + __syscall_arg_t _arg4 = __SSC (arg4); \ register __syscall_arg_t __s0 asm ("$16") __attribute__ ((unused))\ = (number); \ register __syscall_arg_t __v0 asm ("$2"); \ @@ -229,11 +221,11 @@ typedef long int __syscall_arg_t; long int _sys_result; \ \ { \ - __syscall_arg_t _arg1 = ARGIFY (arg1); \ - __syscall_arg_t _arg2 = ARGIFY (arg2); \ - __syscall_arg_t _arg3 = ARGIFY (arg3); \ - __syscall_arg_t _arg4 = ARGIFY (arg4); \ - __syscall_arg_t _arg5 = ARGIFY (arg5); \ + __syscall_arg_t _arg1 = __SSC (arg1); \ + __syscall_arg_t _arg2 = __SSC (arg2); \ + __syscall_arg_t _arg3 = __SSC (arg3); \ + __syscall_arg_t _arg4 = __SSC (arg4); \ + __syscall_arg_t _arg5 = __SSC (arg5); \ register __syscall_arg_t __s0 asm ("$16") __attribute__ ((unused))\ = (number); \ register __syscall_arg_t __v0 asm ("$2"); \ @@ -261,12 +253,12 @@ typedef long int __syscall_arg_t; long int _sys_result; \ \ { \ - __syscall_arg_t _arg1 = ARGIFY (arg1); \ - __syscall_arg_t _arg2 = ARGIFY (arg2); \ - __syscall_arg_t _arg3 = ARGIFY (arg3); \ - __syscall_arg_t _arg4 = ARGIFY (arg4); \ - __syscall_arg_t _arg5 = ARGIFY (arg5); \ - __syscall_arg_t _arg6 = ARGIFY (arg6); \ + __syscall_arg_t _arg1 = __SSC (arg1); \ + __syscall_arg_t _arg2 = __SSC (arg2); \ + __syscall_arg_t _arg3 = __SSC (arg3); \ + __syscall_arg_t _arg4 = __SSC (arg4); \ + __syscall_arg_t _arg5 = __SSC (arg5); \ + __syscall_arg_t _arg6 = __SSC (arg6); \ register __syscall_arg_t __s0 asm ("$16") __attribute__ ((unused))\ = (number); \ register __syscall_arg_t __v0 asm ("$2"); \ diff --git a/sysdeps/unix/sysv/linux/mips/mips64/xstat64.c b/sysdeps/unix/sysv/linux/mips/mips64/xstat64.c index e8a6300..2738130 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/xstat64.c +++ b/sysdeps/unix/sysv/linux/mips/mips64/xstat64.c @@ -1,5 +1,5 @@ /* xstat64 using Linux stat64 system call. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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/mips/readelflib.c b/sysdeps/unix/sysv/linux/mips/readelflib.c index 57e8d72..d648a29 100644 --- a/sysdeps/unix/sysv/linux/mips/readelflib.c +++ b/sysdeps/unix/sysv/linux/mips/readelflib.c @@ -1,4 +1,4 @@ -/* 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/mips/setcontext.S b/sysdeps/unix/sysv/linux/mips/setcontext.S index b9aa153..c16571a 100644 --- a/sysdeps/unix/sysv/linux/mips/setcontext.S +++ b/sysdeps/unix/sysv/linux/mips/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/mips/setrlimit64.c b/sysdeps/unix/sysv/linux/mips/setrlimit64.c index 2a7279b..fd7a83e 100644 --- a/sysdeps/unix/sysv/linux/mips/setrlimit64.c +++ b/sysdeps/unix/sysv/linux/mips/setrlimit64.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2013-2024 Free Software Foundation, Inc. +/* Copyright (C) 2013-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/mips/sigcontextinfo.h b/sysdeps/unix/sysv/linux/mips/sigcontextinfo.h index 6282d37..bd6f371 100644 --- a/sysdeps/unix/sysv/linux/mips/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/mips/sigcontextinfo.h @@ -1,4 +1,4 @@ -/* 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/mips/socket-constants-time64.h b/sysdeps/unix/sysv/linux/mips/socket-constants-time64.h index 2531fff..62450de 100644 --- a/sysdeps/unix/sysv/linux/mips/socket-constants-time64.h +++ b/sysdeps/unix/sysv/linux/mips/socket-constants-time64.h @@ -1,5 +1,5 @@ /* Compat socket constants used in 64-bit compat code. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/mips/swapcontext.S b/sysdeps/unix/sysv/linux/mips/swapcontext.S index 51351a0..bdb3d6f 100644 --- a/sysdeps/unix/sysv/linux/mips/swapcontext.S +++ b/sysdeps/unix/sysv/linux/mips/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/mips/sys/cachectl.h b/sysdeps/unix/sysv/linux/mips/sys/cachectl.h index b1de27b..d059246 100644 --- a/sysdeps/unix/sysv/linux/mips/sys/cachectl.h +++ b/sysdeps/unix/sysv/linux/mips/sys/cachectl.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/mips/sys/sysmips.h b/sysdeps/unix/sysv/linux/mips/sys/sysmips.h index b00900d..71c84c6 100644 --- a/sysdeps/unix/sysv/linux/mips/sys/sysmips.h +++ b/sysdeps/unix/sysv/linux/mips/sys/sysmips.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/mips/sys/ucontext.h b/sysdeps/unix/sysv/linux/mips/sys/ucontext.h index ddde9ab..90d3e1a 100644 --- a/sysdeps/unix/sysv/linux/mips/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/mips/sys/ucontext.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1997-2024 Free Software Foundation, Inc. This file is part of the GNU C Library. +/* 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 modify it under the terms of the GNU Lesser General Public diff --git a/sysdeps/unix/sysv/linux/mips/sys/user.h b/sysdeps/unix/sysv/linux/mips/sys/user.h index c70a49c..b9e7ed0 100644 --- a/sysdeps/unix/sysv/linux/mips/sys/user.h +++ b/sysdeps/unix/sysv/linux/mips/sys/user.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2024 Free Software Foundation, Inc. +/* Copyright (C) 2002-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/mips/sysdep.h b/sysdeps/unix/sysv/linux/mips/sysdep.h index 74ca3d6..76e121a 100644 --- a/sysdeps/unix/sysv/linux/mips/sysdep.h +++ b/sysdeps/unix/sysv/linux/mips/sysdep.h @@ -1,5 +1,5 @@ /* Syscall definitions, Linux MIPS generic version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/aarch64/dl-procinfo.h b/sysdeps/unix/sysv/linux/mips/termios_arch.h index b85d4ad..392d9aa 100644 --- a/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h +++ b/sysdeps/unix/sysv/linux/mips/termios_arch.h @@ -1,5 +1,6 @@ -/* Processor capability information handling macros - aarch64 version. - Copyright (C) 2017-2024 Free Software Foundation, Inc. +/* Architectural parameters for Linux termios - MIPS version + + Copyright (C) 1991-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 @@ -16,22 +17,18 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -#ifndef _DL_PROCINFO_H -#define _DL_PROCINFO_H 1 - -#include <sys/auxv.h> -#include <unistd.h> -#include <ldsodefs.h> -#include <sysdep.h> +#define _TERMIOS2_NCCS 23 +#define _HAVE_TERMIOS2_C_CC_BEFORE_C_LINE 0 -/* We cannot provide a general printing function. */ -#define _dl_procinfo(type, word) -1 +#define _HAVE_STRUCT_OLD_TERMIOS 1 -static inline const char * -__attribute__ ((unused)) -_dl_hwcap_string (int idx) +#define OLD_NCCS 32 +struct old_termios { - return (unsigned)idx < _DL_HWCAP_COUNT ? GLRO(dl_aarch64_cap_flags)[idx] : ""; + tcflag_t c_iflag; /* input mode flags */ + tcflag_t c_oflag; /* output mode flags */ + tcflag_t c_cflag; /* control mode flags */ + tcflag_t c_lflag; /* local mode flags */ + cc_t c_line; /* line discipline */ + cc_t c_cc[OLD_NCCS]; /* control characters */ }; - -#endif /* dl-procinfo.h */ diff --git a/sysdeps/unix/sysv/linux/mips/ustat.c b/sysdeps/unix/sysv/linux/mips/ustat.c index e827136..084f8b5 100644 --- a/sysdeps/unix/sysv/linux/mips/ustat.c +++ b/sysdeps/unix/sysv/linux/mips/ustat.c @@ -1,4 +1,4 @@ -/* 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/mips/vfork.S b/sysdeps/unix/sysv/linux/mips/vfork.S index 13f8fba..36b3621 100644 --- a/sysdeps/unix/sysv/linux/mips/vfork.S +++ b/sysdeps/unix/sysv/linux/mips/vfork.S @@ -1,4 +1,4 @@ -/* 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 diff --git a/sysdeps/unix/sysv/linux/mips/xstat.c b/sysdeps/unix/sysv/linux/mips/xstat.c index f7651cf..e2bfc94 100644 --- a/sysdeps/unix/sysv/linux/mips/xstat.c +++ b/sysdeps/unix/sysv/linux/mips/xstat.c @@ -1,5 +1,5 @@ /* xstat using old-style Unix stat system call. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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/mips/xstatconv.c b/sysdeps/unix/sysv/linux/mips/xstatconv.c index 1c87b62..b8fa14a 100644 --- a/sysdeps/unix/sysv/linux/mips/xstatconv.c +++ b/sysdeps/unix/sysv/linux/mips/xstatconv.c @@ -1,5 +1,5 @@ /* Convert between the kernel's `struct stat' format, and libc's. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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/mkdir.c b/sysdeps/unix/sysv/linux/mkdir.c index fbab0a9..3fb245a 100644 --- a/sysdeps/unix/sysv/linux/mkdir.c +++ b/sysdeps/unix/sysv/linux/mkdir.c @@ -1,5 +1,5 @@ /* Create a directory. Linux version. - 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/mknodat.c b/sysdeps/unix/sysv/linux/mknodat.c index 8e350e2..e86624b 100644 --- a/sysdeps/unix/sysv/linux/mknodat.c +++ b/sysdeps/unix/sysv/linux/mknodat.c @@ -1,5 +1,5 @@ /* Create a special or ordinary file. Linux 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/mlock2.c b/sysdeps/unix/sysv/linux/mlock2.c index 11f5e68..468f33e 100644 --- a/sysdeps/unix/sysv/linux/mlock2.c +++ b/sysdeps/unix/sysv/linux/mlock2.c @@ -1,5 +1,5 @@ /* Wrapper for the mlock2 system call with fallback to mlock. - Copyright (C) 2017-2024 Free Software Foundation, Inc. + Copyright (C) 2017-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 diff --git a/sysdeps/unix/sysv/linux/mmap.c b/sysdeps/unix/sysv/linux/mmap.c index c7f8a6f..6af5e6d 100644 --- a/sysdeps/unix/sysv/linux/mmap.c +++ b/sysdeps/unix/sysv/linux/mmap.c @@ -1,5 +1,5 @@ /* mmap - map files or devices into memory. Linux version. - 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/mmap64.c b/sysdeps/unix/sysv/linux/mmap64.c index f1869fa..e202356 100644 --- a/sysdeps/unix/sysv/linux/mmap64.c +++ b/sysdeps/unix/sysv/linux/mmap64.c @@ -1,5 +1,5 @@ /* mmap - map files or devices into memory. Linux version. - 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/mmap_call.h b/sysdeps/unix/sysv/linux/mmap_call.h index f55dd2b..719fcff 100644 --- a/sysdeps/unix/sysv/linux/mmap_call.h +++ b/sysdeps/unix/sysv/linux/mmap_call.h @@ -1,5 +1,5 @@ /* Generic definition of MMAP_CALL and MMAP_CALL_INTERNAL. - 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/mmap_internal.h b/sysdeps/unix/sysv/linux/mmap_internal.h index b2c2e27..215a507 100644 --- a/sysdeps/unix/sysv/linux/mmap_internal.h +++ b/sysdeps/unix/sysv/linux/mmap_internal.h @@ -1,5 +1,5 @@ /* Common mmap definition for Linux implementation. - 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/mq_close.c b/sysdeps/unix/sysv/linux/mq_close.c index 6120960..f0faa45 100644 --- a/sysdeps/unix/sysv/linux/mq_close.c +++ b/sysdeps/unix/sysv/linux/mq_close.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2024 Free Software Foundation, Inc. +/* Copyright (C) 2004-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/mq_getattr.c b/sysdeps/unix/sysv/linux/mq_getattr.c index fc5fa41..f70af92 100644 --- a/sysdeps/unix/sysv/linux/mq_getattr.c +++ b/sysdeps/unix/sysv/linux/mq_getattr.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2024 Free Software Foundation, Inc. +/* Copyright (C) 2004-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/mq_notify.c b/sysdeps/unix/sysv/linux/mq_notify.c index 55b4294..f99e9ea 100644 --- a/sysdeps/unix/sysv/linux/mq_notify.c +++ b/sysdeps/unix/sysv/linux/mq_notify.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2024 Free Software Foundation, Inc. +/* Copyright (C) 2004-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/mq_open.c b/sysdeps/unix/sysv/linux/mq_open.c index 936001b..493ccb7 100644 --- a/sysdeps/unix/sysv/linux/mq_open.c +++ b/sysdeps/unix/sysv/linux/mq_open.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2024 Free Software Foundation, Inc. +/* Copyright (C) 2004-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/mq_receive.c b/sysdeps/unix/sysv/linux/mq_receive.c index 0955476..980db63 100644 --- a/sysdeps/unix/sysv/linux/mq_receive.c +++ b/sysdeps/unix/sysv/linux/mq_receive.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2024 Free Software Foundation, Inc. +/* Copyright (C) 2004-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/mq_send.c b/sysdeps/unix/sysv/linux/mq_send.c index c936942..16847a6 100644 --- a/sysdeps/unix/sysv/linux/mq_send.c +++ b/sysdeps/unix/sysv/linux/mq_send.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2024 Free Software Foundation, Inc. +/* Copyright (C) 2004-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/mq_setattr.c b/sysdeps/unix/sysv/linux/mq_setattr.c index 098c740..09cbae6 100644 --- a/sysdeps/unix/sysv/linux/mq_setattr.c +++ b/sysdeps/unix/sysv/linux/mq_setattr.c @@ -1,5 +1,5 @@ /* mq_setattr system call wrapper. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/mq_timedreceive.c b/sysdeps/unix/sysv/linux/mq_timedreceive.c index f2f24ea..3ee2753 100644 --- a/sysdeps/unix/sysv/linux/mq_timedreceive.c +++ b/sysdeps/unix/sysv/linux/mq_timedreceive.c @@ -1,5 +1,5 @@ /* Receive a message from a message queue with a timeout. Linux version. - 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/mq_timedsend.c b/sysdeps/unix/sysv/linux/mq_timedsend.c index a0ccda9..cb27f1a 100644 --- a/sysdeps/unix/sysv/linux/mq_timedsend.c +++ b/sysdeps/unix/sysv/linux/mq_timedsend.c @@ -1,5 +1,5 @@ /* Send a message to a message queue with a timeout. Linux version. - 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/mq_unlink.c b/sysdeps/unix/sysv/linux/mq_unlink.c index ce4b889..e21e05a 100644 --- a/sysdeps/unix/sysv/linux/mq_unlink.c +++ b/sysdeps/unix/sysv/linux/mq_unlink.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2024 Free Software Foundation, Inc. +/* Copyright (C) 2004-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/mremap-failure.h b/sysdeps/unix/sysv/linux/mremap-failure.h index c99ab30..8535d62 100644 --- a/sysdeps/unix/sysv/linux/mremap-failure.h +++ b/sysdeps/unix/sysv/linux/mremap-failure.h @@ -1,5 +1,5 @@ /* mremap failure handling. Linux 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/mremap.c b/sysdeps/unix/sysv/linux/mremap.c index 1ada5c1..e93986e 100644 --- a/sysdeps/unix/sysv/linux/mremap.c +++ b/sysdeps/unix/sysv/linux/mremap.c @@ -1,5 +1,5 @@ /* Remap a virtual memory address. Linux specific syscall. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/msgctl.c b/sysdeps/unix/sysv/linux/msgctl.c index 3120cae..ee794c3 100644 --- a/sysdeps/unix/sysv/linux/msgctl.c +++ b/sysdeps/unix/sysv/linux/msgctl.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/msgget.c b/sysdeps/unix/sysv/linux/msgget.c index 71eea73..608a6ec 100644 --- a/sysdeps/unix/sysv/linux/msgget.c +++ b/sysdeps/unix/sysv/linux/msgget.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/msgrcv.c b/sysdeps/unix/sysv/linux/msgrcv.c index 3051900..35059b2 100644 --- a/sysdeps/unix/sysv/linux/msgrcv.c +++ b/sysdeps/unix/sysv/linux/msgrcv.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/msgsnd.c b/sysdeps/unix/sysv/linux/msgsnd.c index 8af400c..3593685 100644 --- a/sysdeps/unix/sysv/linux/msgsnd.c +++ b/sysdeps/unix/sysv/linux/msgsnd.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/msync.c b/sysdeps/unix/sysv/linux/msync.c index 1d8dd4f..542975c 100644 --- a/sysdeps/unix/sysv/linux/msync.c +++ b/sysdeps/unix/sysv/linux/msync.c @@ -1,5 +1,5 @@ /* Linux synchronize a file with a memory map implementation. - 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/mtx_timedlock.c b/sysdeps/unix/sysv/linux/mtx_timedlock.c index a829213..d98d9fe 100644 --- a/sysdeps/unix/sysv/linux/mtx_timedlock.c +++ b/sysdeps/unix/sysv/linux/mtx_timedlock.c @@ -1,5 +1,5 @@ /* C11 threads mutex timed lock implementation - Linux variant. - 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/nanosleep.c b/sysdeps/unix/sysv/linux/nanosleep.c index fac9307..04d2a59 100644 --- a/sysdeps/unix/sysv/linux/nanosleep.c +++ b/sysdeps/unix/sysv/linux/nanosleep.c @@ -1,5 +1,5 @@ /* High-resolution sleep. - 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/net/ethernet.h b/sysdeps/unix/sysv/linux/net/ethernet.h index 3f58506..62eb832 100644 --- a/sysdeps/unix/sysv/linux/net/ethernet.h +++ b/sysdeps/unix/sysv/linux/net/ethernet.h @@ -1,4 +1,4 @@ -/* 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/net/if_arp.h b/sysdeps/unix/sysv/linux/net/if_arp.h index e7e194d..6b0a79c 100644 --- a/sysdeps/unix/sysv/linux/net/if_arp.h +++ b/sysdeps/unix/sysv/linux/net/if_arp.h @@ -1,5 +1,5 @@ /* Definitions for Address Resolution Protocol. - 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/net/if_packet.h b/sysdeps/unix/sysv/linux/net/if_packet.h index c17e1c2..4fdc930 100644 --- a/sysdeps/unix/sysv/linux/net/if_packet.h +++ b/sysdeps/unix/sysv/linux/net/if_packet.h @@ -1,5 +1,5 @@ /* Definitions for use with Linux SOCK_PACKET sockets. - 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/net/if_shaper.h b/sysdeps/unix/sysv/linux/net/if_shaper.h index 89ac7d5..9b7b1b8 100644 --- a/sysdeps/unix/sysv/linux/net/if_shaper.h +++ b/sysdeps/unix/sysv/linux/net/if_shaper.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/net/if_slip.h b/sysdeps/unix/sysv/linux/net/if_slip.h index 991f67d..1c4afbb 100644 --- a/sysdeps/unix/sysv/linux/net/if_slip.h +++ b/sysdeps/unix/sysv/linux/net/if_slip.h @@ -1,4 +1,4 @@ -/* 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/net/route.h b/sysdeps/unix/sysv/linux/net/route.h index 1999c06..28646ad 100644 --- a/sysdeps/unix/sysv/linux/net/route.h +++ b/sysdeps/unix/sysv/linux/net/route.h @@ -1,4 +1,4 @@ -/* 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/netash/ash.h b/sysdeps/unix/sysv/linux/netash/ash.h index 7a6ff50..1316837 100644 --- a/sysdeps/unix/sysv/linux/netash/ash.h +++ b/sysdeps/unix/sysv/linux/netash/ash.h @@ -1,5 +1,5 @@ /* Definitions for use with Linux AF_ASH sockets. - Copyright (C) 1998-2024 Free Software Foundation, Inc. + Copyright (C) 1998-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/netatalk/at.h b/sysdeps/unix/sysv/linux/netatalk/at.h index 6867620..aea8523 100644 --- a/sysdeps/unix/sysv/linux/netatalk/at.h +++ b/sysdeps/unix/sysv/linux/netatalk/at.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2024 Free Software Foundation, Inc. +/* Copyright (C) 1991-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/netax25/ax25.h b/sysdeps/unix/sysv/linux/netax25/ax25.h index 8259d3c..f10ab265a 100644 --- a/sysdeps/unix/sysv/linux/netax25/ax25.h +++ b/sysdeps/unix/sysv/linux/netax25/ax25.h @@ -1,4 +1,4 @@ -/* 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/neteconet/ec.h b/sysdeps/unix/sysv/linux/neteconet/ec.h index f3132f0..93652e2 100644 --- a/sysdeps/unix/sysv/linux/neteconet/ec.h +++ b/sysdeps/unix/sysv/linux/neteconet/ec.h @@ -1,5 +1,5 @@ /* Definitions for use with Linux AF_ECONET sockets. - Copyright (C) 1998-2024 Free Software Foundation, Inc. + Copyright (C) 1998-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/netinet/if_ether.h b/sysdeps/unix/sysv/linux/netinet/if_ether.h index 344dd8f..a9c8a84 100644 --- a/sysdeps/unix/sysv/linux/netinet/if_ether.h +++ b/sysdeps/unix/sysv/linux/netinet/if_ether.h @@ -1,4 +1,4 @@ -/* 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/netinet/if_fddi.h b/sysdeps/unix/sysv/linux/netinet/if_fddi.h index 26b0c42..3771dbd 100644 --- a/sysdeps/unix/sysv/linux/netinet/if_fddi.h +++ b/sysdeps/unix/sysv/linux/netinet/if_fddi.h @@ -1,4 +1,4 @@ -/* 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/netinet/if_tr.h b/sysdeps/unix/sysv/linux/netinet/if_tr.h index ec08676..19f5e9a 100644 --- a/sysdeps/unix/sysv/linux/netinet/if_tr.h +++ b/sysdeps/unix/sysv/linux/netinet/if_tr.h @@ -1,4 +1,4 @@ -/* 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/netipx/ipx.h b/sysdeps/unix/sysv/linux/netipx/ipx.h index ee9d785..2acd9a6 100644 --- a/sysdeps/unix/sysv/linux/netipx/ipx.h +++ b/sysdeps/unix/sysv/linux/netipx/ipx.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2024 Free Software Foundation, Inc. +/* Copyright (C) 1991-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/netiucv/iucv.h b/sysdeps/unix/sysv/linux/netiucv/iucv.h index 27151e8..1e8a4c9 100644 --- a/sysdeps/unix/sysv/linux/netiucv/iucv.h +++ b/sysdeps/unix/sysv/linux/netiucv/iucv.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/netlink_assert_response.c b/sysdeps/unix/sysv/linux/netlink_assert_response.c index f7dd348..05e2724 100644 --- a/sysdeps/unix/sysv/linux/netlink_assert_response.c +++ b/sysdeps/unix/sysv/linux/netlink_assert_response.c @@ -1,5 +1,5 @@ /* Check recvmsg results for netlink sockets. - Copyright (C) 2015-2024 Free Software Foundation, Inc. + Copyright (C) 2015-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/netlinkaccess.h b/sysdeps/unix/sysv/linux/netlinkaccess.h index 2bc6e3f..afea6c3 100644 --- a/sysdeps/unix/sysv/linux/netlinkaccess.h +++ b/sysdeps/unix/sysv/linux/netlinkaccess.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2024 Free Software Foundation, Inc. +/* Copyright (C) 2004-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/netpacket/packet.h b/sysdeps/unix/sysv/linux/netpacket/packet.h index 9ac1331..5e8d6f3 100644 --- a/sysdeps/unix/sysv/linux/netpacket/packet.h +++ b/sysdeps/unix/sysv/linux/netpacket/packet.h @@ -1,5 +1,5 @@ /* Definitions for use with Linux AF_PACKET sockets. - Copyright (C) 1998-2024 Free Software Foundation, Inc. + Copyright (C) 1998-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/netrom/netrom.h b/sysdeps/unix/sysv/linux/netrom/netrom.h index 184b235..0d61e37 100644 --- a/sysdeps/unix/sysv/linux/netrom/netrom.h +++ b/sysdeps/unix/sysv/linux/netrom/netrom.h @@ -1,4 +1,4 @@ -/* 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/netrose/rose.h b/sysdeps/unix/sysv/linux/netrose/rose.h index 1f838d0..f87934b 100644 --- a/sysdeps/unix/sysv/linux/netrose/rose.h +++ b/sysdeps/unix/sysv/linux/netrose/rose.h @@ -1,5 +1,5 @@ /* Definitions for Rose packet radio address family. - Copyright (C) 1998-2024 Free Software Foundation, Inc. + Copyright (C) 1998-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/nios2/Implies b/sysdeps/unix/sysv/linux/nios2/Implies deleted file mode 100644 index e6c9be4..0000000 --- a/sysdeps/unix/sysv/linux/nios2/Implies +++ /dev/null @@ -1 +0,0 @@ -nios2/nptl diff --git a/sysdeps/unix/sysv/linux/nios2/Makefile b/sysdeps/unix/sysv/linux/nios2/Makefile deleted file mode 100644 index 9342e45..0000000 --- a/sysdeps/unix/sysv/linux/nios2/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -ifeq ($(subdir),stdlib) -gen-as-const-headers += ucontext_i.sym -endif - -ifeq ($(subdir),misc) -# MIPS-style cacheflush routine -sysdep_headers += sys/cachectl.h -sysdep_routines += cacheflush -endif - -ifeq ($(subdir),csu) -# Work around an incorrect assumption that an object of variably -# modified type, with a small fixed size but a large variable-sized -# part (the static_slotinfo variable in libc-tls.c) is allocated in -# the small data section, not the data section where it belongs based -# on its size. See GCC PR 92499. -CFLAGS-libc-tls.c += -mgpopt=none -endif diff --git a/sysdeps/unix/sysv/linux/nios2/Versions b/sysdeps/unix/sysv/linux/nios2/Versions deleted file mode 100644 index e42c85f..0000000 --- a/sysdeps/unix/sysv/linux/nios2/Versions +++ /dev/null @@ -1,6 +0,0 @@ -libc { - GLIBC_2.21 { - _flush_cache; - cacheflush; - } -} diff --git a/sysdeps/unix/sysv/linux/nios2/arch-syscall.h b/sysdeps/unix/sysv/linux/nios2/arch-syscall.h deleted file mode 100644 index f94e212..0000000 --- a/sysdeps/unix/sysv/linux/nios2/arch-syscall.h +++ /dev/null @@ -1,338 +0,0 @@ -/* AUTOGENERATED by update-syscall-lists.py. */ -#define __NR_accept 202 -#define __NR_accept4 242 -#define __NR_acct 89 -#define __NR_add_key 217 -#define __NR_adjtimex 171 -#define __NR_bind 200 -#define __NR_bpf 280 -#define __NR_brk 214 -#define __NR_cacheflush 244 -#define __NR_cachestat 451 -#define __NR_capget 90 -#define __NR_capset 91 -#define __NR_chdir 49 -#define __NR_chroot 51 -#define __NR_clock_adjtime 266 -#define __NR_clock_adjtime64 405 -#define __NR_clock_getres 114 -#define __NR_clock_getres_time64 406 -#define __NR_clock_gettime 113 -#define __NR_clock_gettime64 403 -#define __NR_clock_nanosleep 115 -#define __NR_clock_nanosleep_time64 407 -#define __NR_clock_settime 112 -#define __NR_clock_settime64 404 -#define __NR_clone 220 -#define __NR_close 57 -#define __NR_close_range 436 -#define __NR_connect 203 -#define __NR_copy_file_range 285 -#define __NR_delete_module 106 -#define __NR_dup 23 -#define __NR_dup3 24 -#define __NR_epoll_create1 20 -#define __NR_epoll_ctl 21 -#define __NR_epoll_pwait 22 -#define __NR_epoll_pwait2 441 -#define __NR_eventfd2 19 -#define __NR_execve 221 -#define __NR_execveat 281 -#define __NR_exit 93 -#define __NR_exit_group 94 -#define __NR_faccessat 48 -#define __NR_faccessat2 439 -#define __NR_fadvise64_64 223 -#define __NR_fallocate 47 -#define __NR_fanotify_init 262 -#define __NR_fanotify_mark 263 -#define __NR_fchdir 50 -#define __NR_fchmod 52 -#define __NR_fchmodat 53 -#define __NR_fchmodat2 452 -#define __NR_fchown 55 -#define __NR_fchownat 54 -#define __NR_fcntl64 25 -#define __NR_fdatasync 83 -#define __NR_fgetxattr 10 -#define __NR_finit_module 273 -#define __NR_flistxattr 13 -#define __NR_flock 32 -#define __NR_fremovexattr 16 -#define __NR_fsconfig 431 -#define __NR_fsetxattr 7 -#define __NR_fsmount 432 -#define __NR_fsopen 430 -#define __NR_fspick 433 -#define __NR_fstat64 80 -#define __NR_fstatat64 79 -#define __NR_fstatfs64 44 -#define __NR_fsync 82 -#define __NR_ftruncate64 46 -#define __NR_futex 98 -#define __NR_futex_requeue 456 -#define __NR_futex_time64 422 -#define __NR_futex_wait 455 -#define __NR_futex_waitv 449 -#define __NR_futex_wake 454 -#define __NR_get_mempolicy 236 -#define __NR_get_robust_list 100 -#define __NR_getcpu 168 -#define __NR_getcwd 17 -#define __NR_getdents64 61 -#define __NR_getegid 177 -#define __NR_geteuid 175 -#define __NR_getgid 176 -#define __NR_getgroups 158 -#define __NR_getitimer 102 -#define __NR_getpeername 205 -#define __NR_getpgid 155 -#define __NR_getpid 172 -#define __NR_getppid 173 -#define __NR_getpriority 141 -#define __NR_getrandom 278 -#define __NR_getresgid 150 -#define __NR_getresuid 148 -#define __NR_getrlimit 163 -#define __NR_getrusage 165 -#define __NR_getsid 156 -#define __NR_getsockname 204 -#define __NR_getsockopt 209 -#define __NR_gettid 178 -#define __NR_gettimeofday 169 -#define __NR_getuid 174 -#define __NR_getxattr 8 -#define __NR_init_module 105 -#define __NR_inotify_add_watch 27 -#define __NR_inotify_init1 26 -#define __NR_inotify_rm_watch 28 -#define __NR_io_cancel 3 -#define __NR_io_destroy 1 -#define __NR_io_getevents 4 -#define __NR_io_pgetevents 292 -#define __NR_io_pgetevents_time64 416 -#define __NR_io_setup 0 -#define __NR_io_submit 2 -#define __NR_io_uring_enter 426 -#define __NR_io_uring_register 427 -#define __NR_io_uring_setup 425 -#define __NR_ioctl 29 -#define __NR_ioprio_get 31 -#define __NR_ioprio_set 30 -#define __NR_kcmp 272 -#define __NR_kexec_file_load 294 -#define __NR_kexec_load 104 -#define __NR_keyctl 219 -#define __NR_kill 129 -#define __NR_landlock_add_rule 445 -#define __NR_landlock_create_ruleset 444 -#define __NR_landlock_restrict_self 446 -#define __NR_lgetxattr 9 -#define __NR_linkat 37 -#define __NR_listen 201 -#define __NR_listmount 458 -#define __NR_listxattr 11 -#define __NR_llistxattr 12 -#define __NR_llseek 62 -#define __NR_lookup_dcookie 18 -#define __NR_lremovexattr 15 -#define __NR_lsetxattr 6 -#define __NR_lsm_get_self_attr 459 -#define __NR_lsm_list_modules 461 -#define __NR_lsm_set_self_attr 460 -#define __NR_madvise 233 -#define __NR_map_shadow_stack 453 -#define __NR_mbind 235 -#define __NR_membarrier 283 -#define __NR_memfd_create 279 -#define __NR_migrate_pages 238 -#define __NR_mincore 232 -#define __NR_mkdirat 34 -#define __NR_mknodat 33 -#define __NR_mlock 228 -#define __NR_mlock2 284 -#define __NR_mlockall 230 -#define __NR_mmap2 222 -#define __NR_mount 40 -#define __NR_mount_setattr 442 -#define __NR_move_mount 429 -#define __NR_move_pages 239 -#define __NR_mprotect 226 -#define __NR_mq_getsetattr 185 -#define __NR_mq_notify 184 -#define __NR_mq_open 180 -#define __NR_mq_timedreceive 183 -#define __NR_mq_timedreceive_time64 419 -#define __NR_mq_timedsend 182 -#define __NR_mq_timedsend_time64 418 -#define __NR_mq_unlink 181 -#define __NR_mremap 216 -#define __NR_mseal 462 -#define __NR_msgctl 187 -#define __NR_msgget 186 -#define __NR_msgrcv 188 -#define __NR_msgsnd 189 -#define __NR_msync 227 -#define __NR_munlock 229 -#define __NR_munlockall 231 -#define __NR_munmap 215 -#define __NR_name_to_handle_at 264 -#define __NR_nanosleep 101 -#define __NR_nfsservctl 42 -#define __NR_open_by_handle_at 265 -#define __NR_open_tree 428 -#define __NR_openat 56 -#define __NR_openat2 437 -#define __NR_perf_event_open 241 -#define __NR_personality 92 -#define __NR_pidfd_getfd 438 -#define __NR_pidfd_open 434 -#define __NR_pidfd_send_signal 424 -#define __NR_pipe2 59 -#define __NR_pivot_root 41 -#define __NR_pkey_alloc 289 -#define __NR_pkey_free 290 -#define __NR_pkey_mprotect 288 -#define __NR_ppoll 73 -#define __NR_ppoll_time64 414 -#define __NR_prctl 167 -#define __NR_pread64 67 -#define __NR_preadv 69 -#define __NR_preadv2 286 -#define __NR_prlimit64 261 -#define __NR_process_madvise 440 -#define __NR_process_mrelease 448 -#define __NR_process_vm_readv 270 -#define __NR_process_vm_writev 271 -#define __NR_pselect6 72 -#define __NR_pselect6_time64 413 -#define __NR_ptrace 117 -#define __NR_pwrite64 68 -#define __NR_pwritev 70 -#define __NR_pwritev2 287 -#define __NR_quotactl 60 -#define __NR_quotactl_fd 443 -#define __NR_read 63 -#define __NR_readahead 213 -#define __NR_readlinkat 78 -#define __NR_readv 65 -#define __NR_reboot 142 -#define __NR_recvfrom 207 -#define __NR_recvmmsg 243 -#define __NR_recvmmsg_time64 417 -#define __NR_recvmsg 212 -#define __NR_remap_file_pages 234 -#define __NR_removexattr 14 -#define __NR_renameat 38 -#define __NR_renameat2 276 -#define __NR_request_key 218 -#define __NR_restart_syscall 128 -#define __NR_rseq 293 -#define __NR_rt_sigaction 134 -#define __NR_rt_sigpending 136 -#define __NR_rt_sigprocmask 135 -#define __NR_rt_sigqueueinfo 138 -#define __NR_rt_sigreturn 139 -#define __NR_rt_sigsuspend 133 -#define __NR_rt_sigtimedwait 137 -#define __NR_rt_sigtimedwait_time64 421 -#define __NR_rt_tgsigqueueinfo 240 -#define __NR_sched_get_priority_max 125 -#define __NR_sched_get_priority_min 126 -#define __NR_sched_getaffinity 123 -#define __NR_sched_getattr 275 -#define __NR_sched_getparam 121 -#define __NR_sched_getscheduler 120 -#define __NR_sched_rr_get_interval 127 -#define __NR_sched_rr_get_interval_time64 423 -#define __NR_sched_setaffinity 122 -#define __NR_sched_setattr 274 -#define __NR_sched_setparam 118 -#define __NR_sched_setscheduler 119 -#define __NR_sched_yield 124 -#define __NR_seccomp 277 -#define __NR_semctl 191 -#define __NR_semget 190 -#define __NR_semop 193 -#define __NR_semtimedop 192 -#define __NR_semtimedop_time64 420 -#define __NR_sendfile64 71 -#define __NR_sendmmsg 269 -#define __NR_sendmsg 211 -#define __NR_sendto 206 -#define __NR_set_mempolicy 237 -#define __NR_set_mempolicy_home_node 450 -#define __NR_set_robust_list 99 -#define __NR_set_tid_address 96 -#define __NR_setdomainname 162 -#define __NR_setfsgid 152 -#define __NR_setfsuid 151 -#define __NR_setgid 144 -#define __NR_setgroups 159 -#define __NR_sethostname 161 -#define __NR_setitimer 103 -#define __NR_setns 268 -#define __NR_setpgid 154 -#define __NR_setpriority 140 -#define __NR_setregid 143 -#define __NR_setresgid 149 -#define __NR_setresuid 147 -#define __NR_setreuid 145 -#define __NR_setrlimit 164 -#define __NR_setsid 157 -#define __NR_setsockopt 208 -#define __NR_settimeofday 170 -#define __NR_setuid 146 -#define __NR_setxattr 5 -#define __NR_shmat 196 -#define __NR_shmctl 195 -#define __NR_shmdt 197 -#define __NR_shmget 194 -#define __NR_shutdown 210 -#define __NR_sigaltstack 132 -#define __NR_signalfd4 74 -#define __NR_socket 198 -#define __NR_socketpair 199 -#define __NR_splice 76 -#define __NR_statfs64 43 -#define __NR_statmount 457 -#define __NR_statx 291 -#define __NR_swapoff 225 -#define __NR_swapon 224 -#define __NR_symlinkat 36 -#define __NR_sync 81 -#define __NR_sync_file_range 84 -#define __NR_syncfs 267 -#define __NR_sysinfo 179 -#define __NR_syslog 116 -#define __NR_tee 77 -#define __NR_tgkill 131 -#define __NR_timer_create 107 -#define __NR_timer_delete 111 -#define __NR_timer_getoverrun 109 -#define __NR_timer_gettime 108 -#define __NR_timer_gettime64 408 -#define __NR_timer_settime 110 -#define __NR_timer_settime64 409 -#define __NR_timerfd_create 85 -#define __NR_timerfd_gettime 87 -#define __NR_timerfd_gettime64 410 -#define __NR_timerfd_settime 86 -#define __NR_timerfd_settime64 411 -#define __NR_times 153 -#define __NR_tkill 130 -#define __NR_truncate64 45 -#define __NR_umask 166 -#define __NR_umount2 39 -#define __NR_uname 160 -#define __NR_unlinkat 35 -#define __NR_unshare 97 -#define __NR_userfaultfd 282 -#define __NR_utimensat 88 -#define __NR_utimensat_time64 412 -#define __NR_vhangup 58 -#define __NR_vmsplice 75 -#define __NR_wait4 260 -#define __NR_waitid 95 -#define __NR_write 64 -#define __NR_writev 66 diff --git a/sysdeps/unix/sysv/linux/nios2/atomic-machine.h b/sysdeps/unix/sysv/linux/nios2/atomic-machine.h deleted file mode 100644 index 91033fa..0000000 --- a/sysdeps/unix/sysv/linux/nios2/atomic-machine.h +++ /dev/null @@ -1,83 +0,0 @@ -/* Low-level functions for atomic operations. Nios II version. - Copyright (C) 2012-2024 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 - <https://www.gnu.org/licenses/>. */ - -#ifndef _NIOS2_ATOMIC_MACHINE_H -#define _NIOS2_ATOMIC_MACHINE_H 1 - -#define __HAVE_64B_ATOMICS 0 -#define USE_ATOMIC_COMPILER_BUILTINS 0 - -/* XXX Is this actually correct? */ -#define ATOMIC_EXCHANGE_USES_CAS 1 - -#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \ - (abort (), (__typeof (*mem)) 0) -#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \ - (abort (), (__typeof (*mem)) 0) -#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \ - (abort (), (__typeof (*mem)) 0) - -#define __arch_compare_and_exchange_bool_8_acq(mem, newval, oldval) \ - (abort (), 0) -#define __arch_compare_and_exchange_bool_16_acq(mem, newval, oldval) \ - (abort (), 0) -#define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \ - (abort (), 0) - -#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \ - ({ \ - register int r2 asm ("r2"); \ - register int* r4 asm ("r4") = (int*)(mem); \ - register int r5 asm ("r5"); \ - register int r6 asm ("r6") = (int)(newval); \ - int retval, orig_oldval = (int)(oldval); \ - long kernel_cmpxchg = 0x1004; \ - while (1) \ - { \ - r5 = *r4; \ - if (r5 != orig_oldval) \ - { \ - retval = r5; \ - break; \ - } \ - asm volatile ("callr %1\n" \ - : "=r" (r2) \ - : "r" (kernel_cmpxchg), "r" (r4), "r" (r5), "r" (r6) \ - : "ra", "memory"); \ - if (!r2) { retval = orig_oldval; break; } \ - } \ - (__typeof (*(mem))) retval; \ - }) - -#define __arch_compare_and_exchange_bool_32_acq(mem, newval, oldval) \ - ({ \ - register int r2 asm ("r2"); \ - register int *r4 asm ("r4") = (int*)(mem); \ - register int r5 asm ("r5") = (int)(oldval); \ - register int r6 asm ("r6") = (int)(newval); \ - long kernel_cmpxchg = 0x1004; \ - asm volatile ("callr %1\n" \ - : "=r" (r2) \ - : "r" (kernel_cmpxchg), "r" (r4), "r" (r5), "r" (r6) \ - : "ra", "memory"); \ - r2; \ - }) - -#define atomic_full_barrier() ({ asm volatile ("sync"); }) - -#endif /* _NIOS2_ATOMIC_MACHINE_H */ diff --git a/sysdeps/unix/sysv/linux/nios2/bits/procfs.h b/sysdeps/unix/sysv/linux/nios2/bits/procfs.h deleted file mode 100644 index 98ccb07..0000000 --- a/sysdeps/unix/sysv/linux/nios2/bits/procfs.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Types for registers for sys/procfs.h. Nios II version. - Copyright (C) 1996-2024 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 - <https://www.gnu.org/licenses/>. */ - -#ifndef _SYS_PROCFS_H -# error "Never include <bits/procfs.h> directly; use <sys/procfs.h> instead." -#endif - -/* Type for a general-purpose register. */ -typedef unsigned long elf_greg_t; - -/* And the whole bunch of them. We could have used `struct - user_regs' directly in the typedef, but tradition says that - the register set is an array, which does have some peculiar - semantics, so leave it that way. */ -#define ELF_NGREG (sizeof (struct user_regs) / sizeof (elf_greg_t)) -typedef elf_greg_t elf_gregset_t[ELF_NGREG]; - -/* Register set for the floating-point registers. */ -typedef struct user_fpregs elf_fpregset_t; diff --git a/sysdeps/unix/sysv/linux/nios2/bits/statfs.h b/sysdeps/unix/sysv/linux/nios2/bits/statfs.h deleted file mode 100644 index f9f3c64..0000000 --- a/sysdeps/unix/sysv/linux/nios2/bits/statfs.h +++ /dev/null @@ -1,75 +0,0 @@ -/* Copyright (C) 2011-2024 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 - <https://www.gnu.org/licenses/>. */ - -#ifndef _SYS_STATFS_H -# error "Never include <bits/statfs.h> directly; use <sys/statfs.h> instead." -#endif - -#include <bits/endian.h> -#include <bits/types.h> -#include <bits/wordsize.h> - -#if defined __USE_FILE_OFFSET64 -# define __field64(type, type64, name) type64 name -#elif __BYTE_ORDER == __LITTLE_ENDIAN -# define __field64(type, type64, name) \ - type name __attribute__((__aligned__ (__alignof__ (type64)))); int __##name##_pad -#else -# define __field64(type, type64, name) \ - int __##name##_pad __attribute__((__aligned__ (__alignof__ (type64)))); type name -#endif - -struct statfs - { - __SWORD_TYPE f_type; - __SWORD_TYPE f_bsize; - __field64(__fsblkcnt_t, __fsblkcnt64_t, f_blocks); - __field64(__fsblkcnt_t, __fsblkcnt64_t, f_bfree); - __field64(__fsblkcnt_t, __fsblkcnt64_t, f_bavail); - __field64(__fsfilcnt_t, __fsfilcnt64_t, f_files); - __field64(__fsfilcnt_t, __fsfilcnt64_t, f_ffree); - __fsid_t f_fsid; - __SWORD_TYPE f_namelen; - __SWORD_TYPE f_frsize; - __SWORD_TYPE f_flags; - __SWORD_TYPE f_spare[4]; - }; - -#undef __field64 - -#ifdef __USE_LARGEFILE64 -struct statfs64 - { - __SWORD_TYPE f_type; - __SWORD_TYPE f_bsize; - __fsblkcnt64_t f_blocks; - __fsblkcnt64_t f_bfree; - __fsblkcnt64_t f_bavail; - __fsfilcnt64_t f_files; - __fsfilcnt64_t f_ffree; - __fsid_t f_fsid; - __SWORD_TYPE f_namelen; - __SWORD_TYPE f_frsize; - __SWORD_TYPE f_flags; - __SWORD_TYPE f_spare[4]; - }; -#endif - -/* Tell code we have these members. */ -#define _STATFS_F_NAMELEN -#define _STATFS_F_FRSIZE -#define _STATFS_F_FLAGS diff --git a/sysdeps/unix/sysv/linux/nios2/bits/struct_stat.h b/sysdeps/unix/sysv/linux/nios2/bits/struct_stat.h deleted file mode 100644 index dab466d..0000000 --- a/sysdeps/unix/sysv/linux/nios2/bits/struct_stat.h +++ /dev/null @@ -1,135 +0,0 @@ -/* Definition for struct stat. Linux/nios2 version. - Copyright (C) 2020-2024 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 - <https://www.gnu.org/licenses/>. */ - -#if !defined _SYS_STAT_H && !defined _FCNTL_H -# error "Never include <bits/struct_stat.h> directly; use <sys/stat.h> instead." -#endif - -#ifndef _BITS_STRUCT_STAT_H -#define _BITS_STRUCT_STAT_H 1 - -#include <bits/endian.h> -#include <bits/wordsize.h> - -#if defined __USE_FILE_OFFSET64 -# define __field64(type, type64, name) type64 name -#elif __WORDSIZE == 64 || defined __INO_T_MATCHES_INO64_T -# if defined __INO_T_MATCHES_INO64_T && !defined __OFF_T_MATCHES_OFF64_T -# error "ino_t and off_t must both be the same type" -# endif -# define __field64(type, type64, name) type name -#elif __BYTE_ORDER == __LITTLE_ENDIAN -# define __field64(type, type64, name) \ - type name __attribute__((__aligned__ (__alignof__ (type64)))); int __##name##_pad -#else -# define __field64(type, type64, name) \ - int __##name##_pad __attribute__((__aligned__ (__alignof__ (type64)))); type name -#endif - -struct stat - { -#ifdef __USE_TIME64_REDIRECTS -# include <bits/struct_stat_time64_helper.h> -#else - __dev_t st_dev; /* Device. */ - __field64(__ino_t, __ino64_t, st_ino); /* File serial number. */ - __mode_t st_mode; /* File mode. */ - __nlink_t st_nlink; /* Link count. */ - __uid_t st_uid; /* User ID of the file's owner. */ - __gid_t st_gid; /* Group ID of the file's group.*/ - __dev_t st_rdev; /* Device number, if device. */ - __dev_t __pad1; - __field64(__off_t, __off64_t, st_size); /* Size of file, in bytes. */ - __blksize_t st_blksize; /* Optimal block size for I/O. */ - int __pad2; - __field64(__blkcnt_t, __blkcnt64_t, st_blocks); /* 512-byte blocks */ -# ifdef __USE_XOPEN2K8 - /* Nanosecond resolution timestamps are stored in a format - equivalent to 'struct timespec'. This is the type used - whenever possible but the Unix namespace rules do not allow the - identifier 'timespec' to appear in the <sys/stat.h> header. - Therefore we have to handle the use of this header in strictly - standard-compliant sources special. */ - struct timespec st_atim; /* Time of last access. */ - struct timespec st_mtim; /* Time of last modification. */ - struct timespec st_ctim; /* Time of last status change. */ -# define st_atime st_atim.tv_sec /* Backward compatibility. */ -# define st_mtime st_mtim.tv_sec -# define st_ctime st_ctim.tv_sec -# else - __time_t st_atime; /* Time of last access. */ - unsigned long int st_atimensec; /* Nscecs of last access. */ - __time_t st_mtime; /* Time of last modification. */ - unsigned long int st_mtimensec; /* Nsecs of last modification. */ - __time_t st_ctime; /* Time of last status change. */ - unsigned long int st_ctimensec; /* Nsecs of last status change. */ -# endif - int __glibc_reserved[2]; -#endif - }; - -#undef __field64 - -#ifdef __USE_LARGEFILE64 -struct stat64 - { -# ifdef __USE_TIME64_REDIRECTS -# include <bits/struct_stat_time64_helper.h> -# else - __dev_t st_dev; /* Device. */ - __ino64_t st_ino; /* File serial number. */ - __mode_t st_mode; /* File mode. */ - __nlink_t st_nlink; /* Link count. */ - __uid_t st_uid; /* User ID of the file's owner. */ - __gid_t st_gid; /* Group ID of the file's group.*/ - __dev_t st_rdev; /* Device number, if device. */ - __dev_t __pad1; - __off64_t st_size; /* Size of file, in bytes. */ - __blksize_t st_blksize; /* Optimal block size for I/O. */ - int __pad2; - __blkcnt64_t st_blocks; /* Nr. 512-byte blocks allocated. */ -# ifdef __USE_XOPEN2K8 - /* Nanosecond resolution timestamps are stored in a format - equivalent to 'struct timespec'. This is the type used - whenever possible but the Unix namespace rules do not allow the - identifier 'timespec' to appear in the <sys/stat.h> header. - Therefore we have to handle the use of this header in strictly - standard-compliant sources special. */ - struct timespec st_atim; /* Time of last access. */ - struct timespec st_mtim; /* Time of last modification. */ - struct timespec st_ctim; /* Time of last status change. */ -# else - __time_t st_atime; /* Time of last access. */ - unsigned long int st_atimensec; /* Nscecs of last access. */ - __time_t st_mtime; /* Time of last modification. */ - unsigned long int st_mtimensec; /* Nsecs of last modification. */ - __time_t st_ctime; /* Time of last status change. */ - unsigned long int st_ctimensec; /* Nsecs of last status change. */ -# endif - int __glibc_reserved[2]; -# endif - }; -#endif - -/* Tell code we have these members. */ -#define _STATBUF_ST_BLKSIZE -#define _STATBUF_ST_RDEV -/* Nanosecond resolution time values are supported. */ -#define _STATBUF_ST_NSEC - -#endif /* _BITS_STRUCT_STAT_H */ diff --git a/sysdeps/unix/sysv/linux/nios2/c++-types.data b/sysdeps/unix/sysv/linux/nios2/c++-types.data deleted file mode 100644 index 303f457..0000000 --- a/sysdeps/unix/sysv/linux/nios2/c++-types.data +++ /dev/null @@ -1,67 +0,0 @@ -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/nios2/clone.S b/sysdeps/unix/sysv/linux/nios2/clone.S deleted file mode 100644 index c234f45..0000000 --- a/sysdeps/unix/sysv/linux/nios2/clone.S +++ /dev/null @@ -1,83 +0,0 @@ -/* clone() implementation for Nios II. - Copyright (C) 2008-2024 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 - <https://www.gnu.org/licenses/>. */ - -/* clone() is even more special than fork() as it mucks with stacks - and invokes a function in the right context after its all over. */ - -#include <sysdep.h> -#define _ERRNO_H 1 -#include <bits/errno.h> -#include <tcb-offsets.h> - -/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg, - void *parent_tidptr, void *tls, void *child_tidptr) */ - - .text -ENTRY(__clone) - /* Sanity check arguments. */ - movi r2, EINVAL - /* No NULL function pointers. */ - beq r4, zero, SYSCALL_ERROR_LABEL - /* No NULL stack pointers. */ - beq r5, zero, SYSCALL_ERROR_LABEL - - subi r5, r5, 8 /* Reserve argument save space. */ - stw r4, 4(r5) /* Save function pointer. */ - stw r7, 0(r5) /* Save argument pointer. */ - - /* Load arguments. */ - mov r4, r6 - ldw r6, 0(sp) - ldw r7, 8(sp) - ldw r8, 4(sp) - - /* Do the system call. */ - movi r2, SYS_ify (clone) - - /* End FDE now, because in the child the unwind info will be - wrong. */ - cfi_endproc - trap - - /* Check for errors. */ - bne r7, zero, SYSCALL_ERROR_LABEL - /* See if we're on the newly created thread. */ - beq r2, zero, thread_start - /* Successful return from the parent */ - ret - -thread_start: - cfi_startproc - cfi_undefined (ra) - - ldw r5, 4(sp) /* Function pointer. */ - ldw r4, 0(sp) /* Argument pointer. */ - addi sp, sp, 8 - - /* Call the user's function. */ - callr r5 - - /* exit with the result. */ - movi r2, SYS_ify (exit) - trap - cfi_endproc - - cfi_startproc -PSEUDO_END (__clone) -libc_hidden_def (__clone) -weak_alias (__clone, clone) diff --git a/sysdeps/unix/sysv/linux/nios2/configure b/sysdeps/unix/sysv/linux/nios2/configure deleted file mode 100644 index 8d80166..0000000 --- a/sysdeps/unix/sysv/linux/nios2/configure +++ /dev/null @@ -1,5 +0,0 @@ -# This file is generated from configure.ac by Autoconf. DO NOT EDIT! - # Local configure fragment for sysdeps/unix/sysv/linux/nios2. - -arch_minimum_kernel=3.19.0 - diff --git a/sysdeps/unix/sysv/linux/nios2/configure.ac b/sysdeps/unix/sysv/linux/nios2/configure.ac deleted file mode 100644 index a8ccc17..0000000 --- a/sysdeps/unix/sysv/linux/nios2/configure.ac +++ /dev/null @@ -1,4 +0,0 @@ -GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. -# Local configure fragment for sysdeps/unix/sysv/linux/nios2. - -arch_minimum_kernel=3.19.0 diff --git a/sysdeps/unix/sysv/linux/nios2/getcontext.S b/sysdeps/unix/sysv/linux/nios2/getcontext.S deleted file mode 100644 index 627c89d..0000000 --- a/sysdeps/unix/sysv/linux/nios2/getcontext.S +++ /dev/null @@ -1,66 +0,0 @@ -/* Save current context. - Copyright (C) 2015-2024 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 - <https://www.gnu.org/licenses/>. */ - -#include <sysdep.h> -#include "ucontext_i.h" - -/* int getcontext (ucontext_t *ucp) - - Returns 0 on success -1 and errno on failure. - */ - .text -ENTRY(__getcontext) - stw r16, (UCONTEXT_MCONTEXT + 16*4)(r4) - stw r17, (UCONTEXT_MCONTEXT + 17*4)(r4) - stw r18, (UCONTEXT_MCONTEXT + 18*4)(r4) - stw r19, (UCONTEXT_MCONTEXT + 19*4)(r4) - stw r20, (UCONTEXT_MCONTEXT + 20*4)(r4) - stw r21, (UCONTEXT_MCONTEXT + 21*4)(r4) - stw r22, (UCONTEXT_MCONTEXT + 22*4)(r4) - stw ra, (UCONTEXT_MCONTEXT + 24*4)(r4) - stw fp, (UCONTEXT_MCONTEXT + 25*4)(r4) - stw gp, (UCONTEXT_MCONTEXT + 26*4)(r4) - /* Store return address at place for EA. */ - stw ra, (UCONTEXT_MCONTEXT + 28*4)(r4) - stw sp, (UCONTEXT_MCONTEXT + 29*4)(r4) - /* Store zero for return success. */ - stw zero, (UCONTEXT_MCONTEXT + 2*4)(r4) - - /* Store value "1" at uc_flags to recognize as getcontext created. */ - movi r2, 1 - stw r2, UCONTEXT_FLAGS(r4) - - /* Store MCONTEXT_VERSION at first word of mcontext_t. */ - movi r2, MCONTEXT_VERSION - stw r2, UCONTEXT_MCONTEXT(r4) - - /* Get signal mask. */ - /* rt_sigprocmask (SIG_BLOCK, NULL, &ucp->uc_sigmask, _NSIG8) */ - movi r7, _NSIG8 - addi r6, r4, UCONTEXT_SIGMASK - mov r5, zero - movi r4, SIG_BLOCK - movi r2, SYS_ify (rt_sigprocmask) - trap - bne r7, zero, SYSCALL_ERROR_LABEL - - mov r2, zero - ret - -PSEUDO_END(__getcontext) -weak_alias(__getcontext, getcontext) diff --git a/sysdeps/unix/sysv/linux/nios2/kernel_sigaction.h b/sysdeps/unix/sysv/linux/nios2/kernel_sigaction.h deleted file mode 100644 index 89f9bce..0000000 --- a/sysdeps/unix/sysv/linux/nios2/kernel_sigaction.h +++ /dev/null @@ -1,9 +0,0 @@ -/* NIOS2 uses the generic Linux UAPI but defines SA_RESTORER. */ -#define SA_RESTORER 0x04000000 - -#define SET_SA_RESTORER(kact, act) \ - (kact)->sa_restorer = (act)->sa_restorer -#define RESET_SA_RESTORER(act, kact) \ - (act)->sa_restorer = (kact)->sa_restorer - -#include <sysdeps/unix/sysv/linux/kernel_sigaction.h> diff --git a/sysdeps/unix/sysv/linux/nios2/ld.abilist b/sysdeps/unix/sysv/linux/nios2/ld.abilist deleted file mode 100644 index 811ae9d..0000000 --- a/sysdeps/unix/sysv/linux/nios2/ld.abilist +++ /dev/null @@ -1,9 +0,0 @@ -GLIBC_2.21 __libc_stack_end D 0x4 -GLIBC_2.21 __stack_chk_guard D 0x4 -GLIBC_2.21 __tls_get_addr F -GLIBC_2.21 _dl_mcount F -GLIBC_2.21 _r_debug D 0x14 -GLIBC_2.34 __rtld_version_placeholder F -GLIBC_2.35 __rseq_flags D 0x4 -GLIBC_2.35 __rseq_offset D 0x4 -GLIBC_2.35 __rseq_size D 0x4 diff --git a/sysdeps/unix/sysv/linux/nios2/libBrokenLocale.abilist b/sysdeps/unix/sysv/linux/nios2/libBrokenLocale.abilist deleted file mode 100644 index f0210af..0000000 --- a/sysdeps/unix/sysv/linux/nios2/libBrokenLocale.abilist +++ /dev/null @@ -1 +0,0 @@ -GLIBC_2.21 __ctype_get_mb_cur_max F diff --git a/sysdeps/unix/sysv/linux/nios2/libanl.abilist b/sysdeps/unix/sysv/linux/nios2/libanl.abilist deleted file mode 100644 index 68f340f..0000000 --- a/sysdeps/unix/sysv/linux/nios2/libanl.abilist +++ /dev/null @@ -1 +0,0 @@ -GLIBC_2.21 __libanl_version_placeholder F diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist deleted file mode 100644 index 3aa8176..0000000 --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist +++ /dev/null @@ -1,2875 +0,0 @@ -GLIBC_2.21 _Exit F -GLIBC_2.21 _IO_2_1_stderr_ D 0x98 -GLIBC_2.21 _IO_2_1_stdin_ D 0x98 -GLIBC_2.21 _IO_2_1_stdout_ D 0x98 -GLIBC_2.21 _IO_adjust_column F -GLIBC_2.21 _IO_adjust_wcolumn F -GLIBC_2.21 _IO_default_doallocate F -GLIBC_2.21 _IO_default_finish F -GLIBC_2.21 _IO_default_pbackfail F -GLIBC_2.21 _IO_default_uflow F -GLIBC_2.21 _IO_default_xsgetn F -GLIBC_2.21 _IO_default_xsputn F -GLIBC_2.21 _IO_do_write F -GLIBC_2.21 _IO_doallocbuf F -GLIBC_2.21 _IO_fclose F -GLIBC_2.21 _IO_fdopen F -GLIBC_2.21 _IO_feof F -GLIBC_2.21 _IO_ferror F -GLIBC_2.21 _IO_fflush F -GLIBC_2.21 _IO_fgetpos F -GLIBC_2.21 _IO_fgetpos64 F -GLIBC_2.21 _IO_fgets F -GLIBC_2.21 _IO_file_attach F -GLIBC_2.21 _IO_file_close F -GLIBC_2.21 _IO_file_close_it F -GLIBC_2.21 _IO_file_doallocate F -GLIBC_2.21 _IO_file_finish F -GLIBC_2.21 _IO_file_fopen F -GLIBC_2.21 _IO_file_init F -GLIBC_2.21 _IO_file_jumps D 0x54 -GLIBC_2.21 _IO_file_open F -GLIBC_2.21 _IO_file_overflow F -GLIBC_2.21 _IO_file_read F -GLIBC_2.21 _IO_file_seek F -GLIBC_2.21 _IO_file_seekoff F -GLIBC_2.21 _IO_file_setbuf F -GLIBC_2.21 _IO_file_stat F -GLIBC_2.21 _IO_file_sync F -GLIBC_2.21 _IO_file_underflow F -GLIBC_2.21 _IO_file_write F -GLIBC_2.21 _IO_file_xsputn F -GLIBC_2.21 _IO_flockfile F -GLIBC_2.21 _IO_flush_all F -GLIBC_2.21 _IO_flush_all_linebuffered F -GLIBC_2.21 _IO_fopen F -GLIBC_2.21 _IO_fprintf F -GLIBC_2.21 _IO_fputs F -GLIBC_2.21 _IO_fread F -GLIBC_2.21 _IO_free_backup_area F -GLIBC_2.21 _IO_free_wbackup_area F -GLIBC_2.21 _IO_fsetpos F -GLIBC_2.21 _IO_fsetpos64 F -GLIBC_2.21 _IO_ftell F -GLIBC_2.21 _IO_ftrylockfile F -GLIBC_2.21 _IO_funlockfile F -GLIBC_2.21 _IO_fwrite F -GLIBC_2.21 _IO_getc F -GLIBC_2.21 _IO_getline F -GLIBC_2.21 _IO_getline_info F -GLIBC_2.21 _IO_gets F -GLIBC_2.21 _IO_init F -GLIBC_2.21 _IO_init_marker F -GLIBC_2.21 _IO_init_wmarker F -GLIBC_2.21 _IO_iter_begin F -GLIBC_2.21 _IO_iter_end F -GLIBC_2.21 _IO_iter_file F -GLIBC_2.21 _IO_iter_next F -GLIBC_2.21 _IO_least_wmarker F -GLIBC_2.21 _IO_link_in F -GLIBC_2.21 _IO_list_all D 0x4 -GLIBC_2.21 _IO_list_lock F -GLIBC_2.21 _IO_list_resetlock F -GLIBC_2.21 _IO_list_unlock F -GLIBC_2.21 _IO_marker_delta F -GLIBC_2.21 _IO_marker_difference F -GLIBC_2.21 _IO_padn F -GLIBC_2.21 _IO_peekc_locked F -GLIBC_2.21 _IO_popen F -GLIBC_2.21 _IO_printf F -GLIBC_2.21 _IO_proc_close F -GLIBC_2.21 _IO_proc_open F -GLIBC_2.21 _IO_putc F -GLIBC_2.21 _IO_puts F -GLIBC_2.21 _IO_remove_marker F -GLIBC_2.21 _IO_seekmark F -GLIBC_2.21 _IO_seekoff F -GLIBC_2.21 _IO_seekpos F -GLIBC_2.21 _IO_seekwmark F -GLIBC_2.21 _IO_setb F -GLIBC_2.21 _IO_setbuffer F -GLIBC_2.21 _IO_setvbuf F -GLIBC_2.21 _IO_sgetn F -GLIBC_2.21 _IO_sprintf F -GLIBC_2.21 _IO_sputbackc F -GLIBC_2.21 _IO_sputbackwc F -GLIBC_2.21 _IO_sscanf F -GLIBC_2.21 _IO_str_init_readonly F -GLIBC_2.21 _IO_str_init_static F -GLIBC_2.21 _IO_str_overflow F -GLIBC_2.21 _IO_str_pbackfail F -GLIBC_2.21 _IO_str_seekoff F -GLIBC_2.21 _IO_str_underflow F -GLIBC_2.21 _IO_sungetc F -GLIBC_2.21 _IO_sungetwc F -GLIBC_2.21 _IO_switch_to_get_mode F -GLIBC_2.21 _IO_switch_to_main_wget_area F -GLIBC_2.21 _IO_switch_to_wbackup_area F -GLIBC_2.21 _IO_switch_to_wget_mode F -GLIBC_2.21 _IO_un_link F -GLIBC_2.21 _IO_ungetc F -GLIBC_2.21 _IO_unsave_markers F -GLIBC_2.21 _IO_unsave_wmarkers F -GLIBC_2.21 _IO_vfprintf F -GLIBC_2.21 _IO_vfscanf F -GLIBC_2.21 _IO_vsprintf F -GLIBC_2.21 _IO_wdefault_doallocate F -GLIBC_2.21 _IO_wdefault_finish F -GLIBC_2.21 _IO_wdefault_pbackfail F -GLIBC_2.21 _IO_wdefault_uflow F -GLIBC_2.21 _IO_wdefault_xsgetn F -GLIBC_2.21 _IO_wdefault_xsputn F -GLIBC_2.21 _IO_wdo_write F -GLIBC_2.21 _IO_wdoallocbuf F -GLIBC_2.21 _IO_wfile_jumps D 0x54 -GLIBC_2.21 _IO_wfile_overflow F -GLIBC_2.21 _IO_wfile_seekoff F -GLIBC_2.21 _IO_wfile_sync F -GLIBC_2.21 _IO_wfile_underflow F -GLIBC_2.21 _IO_wfile_xsputn F -GLIBC_2.21 _IO_wmarker_delta F -GLIBC_2.21 _IO_wsetb F -GLIBC_2.21 ___brk_addr D 0x4 -GLIBC_2.21 __adddf3 F -GLIBC_2.21 __addsf3 F -GLIBC_2.21 __adjtimex F -GLIBC_2.21 __after_morecore_hook D 0x4 -GLIBC_2.21 __argz_count F -GLIBC_2.21 __argz_next F -GLIBC_2.21 __argz_stringify F -GLIBC_2.21 __asprintf F -GLIBC_2.21 __asprintf_chk F -GLIBC_2.21 __assert F -GLIBC_2.21 __assert_fail F -GLIBC_2.21 __assert_perror_fail F -GLIBC_2.21 __backtrace F -GLIBC_2.21 __backtrace_symbols F -GLIBC_2.21 __backtrace_symbols_fd F -GLIBC_2.21 __bsd_getpgrp F -GLIBC_2.21 __bzero F -GLIBC_2.21 __check_rhosts_file D 0x4 -GLIBC_2.21 __chk_fail F -GLIBC_2.21 __clone F -GLIBC_2.21 __close F -GLIBC_2.21 __cmsg_nxthdr F -GLIBC_2.21 __confstr_chk F -GLIBC_2.21 __connect F -GLIBC_2.21 __ctype_b_loc F -GLIBC_2.21 __ctype_get_mb_cur_max F -GLIBC_2.21 __ctype_tolower_loc F -GLIBC_2.21 __ctype_toupper_loc F -GLIBC_2.21 __curbrk D 0x4 -GLIBC_2.21 __cxa_at_quick_exit F -GLIBC_2.21 __cxa_atexit F -GLIBC_2.21 __cxa_finalize F -GLIBC_2.21 __cxa_thread_atexit_impl F -GLIBC_2.21 __cyg_profile_func_enter F -GLIBC_2.21 __cyg_profile_func_exit F -GLIBC_2.21 __daylight D 0x4 -GLIBC_2.21 __dcgettext F -GLIBC_2.21 __default_morecore F -GLIBC_2.21 __dgettext F -GLIBC_2.21 __divdf3 F -GLIBC_2.21 __divsf3 F -GLIBC_2.21 __dn_comp F -GLIBC_2.21 __dn_expand F -GLIBC_2.21 __dn_skipname F -GLIBC_2.21 __dprintf_chk F -GLIBC_2.21 __dup2 F -GLIBC_2.21 __duplocale F -GLIBC_2.21 __endmntent F -GLIBC_2.21 __environ D 0x4 -GLIBC_2.21 __eqdf2 F -GLIBC_2.21 __eqsf2 F -GLIBC_2.21 __errno_location F -GLIBC_2.21 __extendsfdf2 F -GLIBC_2.21 __fbufsize F -GLIBC_2.21 __fcntl F -GLIBC_2.21 __fdelt_chk F -GLIBC_2.21 __fdelt_warn F -GLIBC_2.21 __ffs F -GLIBC_2.21 __fgets_chk F -GLIBC_2.21 __fgets_unlocked_chk F -GLIBC_2.21 __fgetws_chk F -GLIBC_2.21 __fgetws_unlocked_chk F -GLIBC_2.21 __finite F -GLIBC_2.21 __finitef F -GLIBC_2.21 __finitel F -GLIBC_2.21 __fixdfdi F -GLIBC_2.21 __fixdfsi F -GLIBC_2.21 __fixsfdi F -GLIBC_2.21 __fixsfsi F -GLIBC_2.21 __fixunsdfdi F -GLIBC_2.21 __fixunsdfsi F -GLIBC_2.21 __fixunssfdi F -GLIBC_2.21 __fixunssfsi F -GLIBC_2.21 __flbf F -GLIBC_2.21 __floatdidf F -GLIBC_2.21 __floatdisf F -GLIBC_2.21 __floatsidf F -GLIBC_2.21 __floatsisf F -GLIBC_2.21 __floatundidf F -GLIBC_2.21 __floatundisf F -GLIBC_2.21 __floatunsidf F -GLIBC_2.21 __floatunsisf F -GLIBC_2.21 __fork F -GLIBC_2.21 __fpending F -GLIBC_2.21 __fprintf_chk F -GLIBC_2.21 __fpu_control D 0x4 -GLIBC_2.21 __fpurge F -GLIBC_2.21 __fread_chk F -GLIBC_2.21 __fread_unlocked_chk F -GLIBC_2.21 __freadable F -GLIBC_2.21 __freading F -GLIBC_2.21 __free_hook D 0x4 -GLIBC_2.21 __freelocale F -GLIBC_2.21 __fsetlocking F -GLIBC_2.21 __fwprintf_chk F -GLIBC_2.21 __fwritable F -GLIBC_2.21 __fwriting F -GLIBC_2.21 __fxstat F -GLIBC_2.21 __fxstat64 F -GLIBC_2.21 __fxstatat F -GLIBC_2.21 __fxstatat64 F -GLIBC_2.21 __gedf2 F -GLIBC_2.21 __gesf2 F -GLIBC_2.21 __getauxval F -GLIBC_2.21 __getcwd_chk F -GLIBC_2.21 __getdelim F -GLIBC_2.21 __getdomainname_chk F -GLIBC_2.21 __getgroups_chk F -GLIBC_2.21 __gethostname_chk F -GLIBC_2.21 __getlogin_r_chk F -GLIBC_2.21 __getmntent_r F -GLIBC_2.21 __getpagesize F -GLIBC_2.21 __getpgid F -GLIBC_2.21 __getpid F -GLIBC_2.21 __gets_chk F -GLIBC_2.21 __gettimeofday F -GLIBC_2.21 __getwd_chk F -GLIBC_2.21 __gmtime_r F -GLIBC_2.21 __gtdf2 F -GLIBC_2.21 __gtsf2 F -GLIBC_2.21 __h_errno_location F -GLIBC_2.21 __isalnum_l F -GLIBC_2.21 __isalpha_l F -GLIBC_2.21 __isascii_l F -GLIBC_2.21 __isblank_l F -GLIBC_2.21 __iscntrl_l F -GLIBC_2.21 __isctype F -GLIBC_2.21 __isdigit_l F -GLIBC_2.21 __isgraph_l F -GLIBC_2.21 __isinf F -GLIBC_2.21 __isinff F -GLIBC_2.21 __isinfl F -GLIBC_2.21 __islower_l F -GLIBC_2.21 __isnan F -GLIBC_2.21 __isnanf F -GLIBC_2.21 __isnanl F -GLIBC_2.21 __isoc99_fscanf F -GLIBC_2.21 __isoc99_fwscanf F -GLIBC_2.21 __isoc99_scanf F -GLIBC_2.21 __isoc99_sscanf F -GLIBC_2.21 __isoc99_swscanf F -GLIBC_2.21 __isoc99_vfscanf F -GLIBC_2.21 __isoc99_vfwscanf F -GLIBC_2.21 __isoc99_vscanf F -GLIBC_2.21 __isoc99_vsscanf F -GLIBC_2.21 __isoc99_vswscanf F -GLIBC_2.21 __isoc99_vwscanf F -GLIBC_2.21 __isoc99_wscanf F -GLIBC_2.21 __isprint_l F -GLIBC_2.21 __ispunct_l F -GLIBC_2.21 __isspace_l F -GLIBC_2.21 __isupper_l F -GLIBC_2.21 __iswalnum_l F -GLIBC_2.21 __iswalpha_l F -GLIBC_2.21 __iswblank_l F -GLIBC_2.21 __iswcntrl_l F -GLIBC_2.21 __iswctype F -GLIBC_2.21 __iswctype_l F -GLIBC_2.21 __iswdigit_l F -GLIBC_2.21 __iswgraph_l F -GLIBC_2.21 __iswlower_l F -GLIBC_2.21 __iswprint_l F -GLIBC_2.21 __iswpunct_l F -GLIBC_2.21 __iswspace_l F -GLIBC_2.21 __iswupper_l F -GLIBC_2.21 __iswxdigit_l F -GLIBC_2.21 __isxdigit_l F -GLIBC_2.21 __ivaliduser F -GLIBC_2.21 __key_decryptsession_pk_LOCAL D 0x4 -GLIBC_2.21 __key_encryptsession_pk_LOCAL D 0x4 -GLIBC_2.21 __key_gendes_LOCAL D 0x4 -GLIBC_2.21 __ledf2 F -GLIBC_2.21 __lesf2 F -GLIBC_2.21 __libc_allocate_rtsig F -GLIBC_2.21 __libc_calloc F -GLIBC_2.21 __libc_current_sigrtmax F -GLIBC_2.21 __libc_current_sigrtmin F -GLIBC_2.21 __libc_free F -GLIBC_2.21 __libc_freeres F -GLIBC_2.21 __libc_init_first F -GLIBC_2.21 __libc_mallinfo F -GLIBC_2.21 __libc_malloc F -GLIBC_2.21 __libc_mallopt F -GLIBC_2.21 __libc_memalign F -GLIBC_2.21 __libc_pvalloc F -GLIBC_2.21 __libc_realloc F -GLIBC_2.21 __libc_sa_len F -GLIBC_2.21 __libc_start_main F -GLIBC_2.21 __libc_valloc F -GLIBC_2.21 __longjmp_chk F -GLIBC_2.21 __lseek F -GLIBC_2.21 __ltdf2 F -GLIBC_2.21 __ltsf2 F -GLIBC_2.21 __lxstat F -GLIBC_2.21 __lxstat64 F -GLIBC_2.21 __malloc_hook D 0x4 -GLIBC_2.21 __malloc_initialize_hook D 0x4 -GLIBC_2.21 __mbrlen F -GLIBC_2.21 __mbrtowc F -GLIBC_2.21 __mbsnrtowcs_chk F -GLIBC_2.21 __mbsrtowcs_chk F -GLIBC_2.21 __mbstowcs_chk F -GLIBC_2.21 __memalign_hook D 0x4 -GLIBC_2.21 __memcpy_chk F -GLIBC_2.21 __memmove_chk F -GLIBC_2.21 __mempcpy F -GLIBC_2.21 __mempcpy_chk F -GLIBC_2.21 __mempcpy_small F -GLIBC_2.21 __memset_chk F -GLIBC_2.21 __monstartup F -GLIBC_2.21 __morecore D 0x4 -GLIBC_2.21 __mq_open_2 F -GLIBC_2.21 __muldf3 F -GLIBC_2.21 __mulsf3 F -GLIBC_2.21 __nanosleep F -GLIBC_2.21 __nedf2 F -GLIBC_2.21 __negdf2 F -GLIBC_2.21 __negsf2 F -GLIBC_2.21 __nesf2 F -GLIBC_2.21 __newlocale F -GLIBC_2.21 __nl_langinfo_l F -GLIBC_2.21 __nss_configure_lookup F -GLIBC_2.21 __nss_database_lookup F -GLIBC_2.21 __nss_group_lookup F -GLIBC_2.21 __nss_hostname_digits_dots F -GLIBC_2.21 __nss_hosts_lookup F -GLIBC_2.21 __nss_next F -GLIBC_2.21 __nss_passwd_lookup F -GLIBC_2.21 __obstack_printf_chk F -GLIBC_2.21 __obstack_vprintf_chk F -GLIBC_2.21 __open F -GLIBC_2.21 __open64 F -GLIBC_2.21 __open64_2 F -GLIBC_2.21 __open_2 F -GLIBC_2.21 __openat64_2 F -GLIBC_2.21 __openat_2 F -GLIBC_2.21 __overflow F -GLIBC_2.21 __pipe F -GLIBC_2.21 __poll F -GLIBC_2.21 __poll_chk F -GLIBC_2.21 __posix_getopt F -GLIBC_2.21 __ppoll_chk F -GLIBC_2.21 __pread64 F -GLIBC_2.21 __pread64_chk F -GLIBC_2.21 __pread_chk F -GLIBC_2.21 __printf_chk F -GLIBC_2.21 __printf_fp F -GLIBC_2.21 __profile_frequency F -GLIBC_2.21 __progname D 0x4 -GLIBC_2.21 __progname_full D 0x4 -GLIBC_2.21 __pthread_cleanup_routine F -GLIBC_2.21 __pthread_getspecific F -GLIBC_2.21 __pthread_key_create F -GLIBC_2.21 __pthread_mutex_destroy F -GLIBC_2.21 __pthread_mutex_init F -GLIBC_2.21 __pthread_mutex_lock F -GLIBC_2.21 __pthread_mutex_trylock F -GLIBC_2.21 __pthread_mutex_unlock F -GLIBC_2.21 __pthread_mutexattr_destroy F -GLIBC_2.21 __pthread_mutexattr_init F -GLIBC_2.21 __pthread_mutexattr_settype F -GLIBC_2.21 __pthread_once F -GLIBC_2.21 __pthread_register_cancel F -GLIBC_2.21 __pthread_register_cancel_defer F -GLIBC_2.21 __pthread_rwlock_destroy F -GLIBC_2.21 __pthread_rwlock_init F -GLIBC_2.21 __pthread_rwlock_rdlock F -GLIBC_2.21 __pthread_rwlock_tryrdlock F -GLIBC_2.21 __pthread_rwlock_trywrlock F -GLIBC_2.21 __pthread_rwlock_unlock F -GLIBC_2.21 __pthread_rwlock_wrlock F -GLIBC_2.21 __pthread_setspecific F -GLIBC_2.21 __pthread_unregister_cancel F -GLIBC_2.21 __pthread_unregister_cancel_restore F -GLIBC_2.21 __pthread_unwind_next F -GLIBC_2.21 __ptsname_r_chk F -GLIBC_2.21 __pwrite64 F -GLIBC_2.21 __rawmemchr F -GLIBC_2.21 __rcmd_errstr D 0x4 -GLIBC_2.21 __read F -GLIBC_2.21 __read_chk F -GLIBC_2.21 __readlink_chk F -GLIBC_2.21 __readlinkat_chk F -GLIBC_2.21 __realloc_hook D 0x4 -GLIBC_2.21 __realpath_chk F -GLIBC_2.21 __recv_chk F -GLIBC_2.21 __recvfrom_chk F -GLIBC_2.21 __register_atfork F -GLIBC_2.21 __res_dnok F -GLIBC_2.21 __res_hnok F -GLIBC_2.21 __res_init F -GLIBC_2.21 __res_mailok F -GLIBC_2.21 __res_mkquery F -GLIBC_2.21 __res_nclose F -GLIBC_2.21 __res_ninit F -GLIBC_2.21 __res_nmkquery F -GLIBC_2.21 __res_nquery F -GLIBC_2.21 __res_nquerydomain F -GLIBC_2.21 __res_nsearch F -GLIBC_2.21 __res_nsend F -GLIBC_2.21 __res_ownok F -GLIBC_2.21 __res_query F -GLIBC_2.21 __res_querydomain F -GLIBC_2.21 __res_randomid F -GLIBC_2.21 __res_search F -GLIBC_2.21 __res_send F -GLIBC_2.21 __res_state F -GLIBC_2.21 __rpc_thread_createerr F -GLIBC_2.21 __rpc_thread_svc_fdset F -GLIBC_2.21 __rpc_thread_svc_max_pollfd F -GLIBC_2.21 __rpc_thread_svc_pollfd F -GLIBC_2.21 __sbrk F -GLIBC_2.21 __sched_cpualloc F -GLIBC_2.21 __sched_cpucount F -GLIBC_2.21 __sched_cpufree F -GLIBC_2.21 __sched_get_priority_max F -GLIBC_2.21 __sched_get_priority_min F -GLIBC_2.21 __sched_getparam F -GLIBC_2.21 __sched_getscheduler F -GLIBC_2.21 __sched_setscheduler F -GLIBC_2.21 __sched_yield F -GLIBC_2.21 __select F -GLIBC_2.21 __send F -GLIBC_2.21 __setmntent F -GLIBC_2.21 __setpgid F -GLIBC_2.21 __sigaction F -GLIBC_2.21 __sigaddset F -GLIBC_2.21 __sigdelset F -GLIBC_2.21 __sigismember F -GLIBC_2.21 __signbit F -GLIBC_2.21 __signbitf F -GLIBC_2.21 __sigpause F -GLIBC_2.21 __sigsetjmp F -GLIBC_2.21 __sigsuspend F -GLIBC_2.21 __snprintf_chk F -GLIBC_2.21 __sprintf_chk F -GLIBC_2.21 __stack_chk_fail F -GLIBC_2.21 __statfs F -GLIBC_2.21 __stpcpy F -GLIBC_2.21 __stpcpy_chk F -GLIBC_2.21 __stpcpy_small F -GLIBC_2.21 __stpncpy F -GLIBC_2.21 __stpncpy_chk F -GLIBC_2.21 __strcasecmp F -GLIBC_2.21 __strcasecmp_l F -GLIBC_2.21 __strcasestr F -GLIBC_2.21 __strcat_chk F -GLIBC_2.21 __strcoll_l F -GLIBC_2.21 __strcpy_chk F -GLIBC_2.21 __strcpy_small F -GLIBC_2.21 __strcspn_c1 F -GLIBC_2.21 __strcspn_c2 F -GLIBC_2.21 __strcspn_c3 F -GLIBC_2.21 __strdup F -GLIBC_2.21 __strerror_r F -GLIBC_2.21 __strfmon_l F -GLIBC_2.21 __strftime_l F -GLIBC_2.21 __strncasecmp_l F -GLIBC_2.21 __strncat_chk F -GLIBC_2.21 __strncpy_chk F -GLIBC_2.21 __strndup F -GLIBC_2.21 __strpbrk_c2 F -GLIBC_2.21 __strpbrk_c3 F -GLIBC_2.21 __strsep_1c F -GLIBC_2.21 __strsep_2c F -GLIBC_2.21 __strsep_3c F -GLIBC_2.21 __strsep_g F -GLIBC_2.21 __strspn_c1 F -GLIBC_2.21 __strspn_c2 F -GLIBC_2.21 __strspn_c3 F -GLIBC_2.21 __strtod_internal F -GLIBC_2.21 __strtod_l F -GLIBC_2.21 __strtof_internal F -GLIBC_2.21 __strtof_l F -GLIBC_2.21 __strtok_r F -GLIBC_2.21 __strtok_r_1c F -GLIBC_2.21 __strtol_internal F -GLIBC_2.21 __strtol_l F -GLIBC_2.21 __strtold_internal F -GLIBC_2.21 __strtold_l F -GLIBC_2.21 __strtoll_internal F -GLIBC_2.21 __strtoll_l F -GLIBC_2.21 __strtoul_internal F -GLIBC_2.21 __strtoul_l F -GLIBC_2.21 __strtoull_internal F -GLIBC_2.21 __strtoull_l F -GLIBC_2.21 __strverscmp F -GLIBC_2.21 __strxfrm_l F -GLIBC_2.21 __subdf3 F -GLIBC_2.21 __subsf3 F -GLIBC_2.21 __swprintf_chk F -GLIBC_2.21 __sysconf F -GLIBC_2.21 __syslog_chk F -GLIBC_2.21 __sysv_signal F -GLIBC_2.21 __timezone D 0x4 -GLIBC_2.21 __toascii_l F -GLIBC_2.21 __tolower_l F -GLIBC_2.21 __toupper_l F -GLIBC_2.21 __towctrans F -GLIBC_2.21 __towctrans_l F -GLIBC_2.21 __towlower_l F -GLIBC_2.21 __towupper_l F -GLIBC_2.21 __truncdfsf2 F -GLIBC_2.21 __ttyname_r_chk F -GLIBC_2.21 __tzname D 0x8 -GLIBC_2.21 __uflow F -GLIBC_2.21 __underflow F -GLIBC_2.21 __unorddf2 F -GLIBC_2.21 __unordsf2 F -GLIBC_2.21 __uselocale F -GLIBC_2.21 __vasprintf_chk F -GLIBC_2.21 __vdprintf_chk F -GLIBC_2.21 __vfork F -GLIBC_2.21 __vfprintf_chk F -GLIBC_2.21 __vfscanf F -GLIBC_2.21 __vfwprintf_chk F -GLIBC_2.21 __vprintf_chk F -GLIBC_2.21 __vsnprintf F -GLIBC_2.21 __vsnprintf_chk F -GLIBC_2.21 __vsprintf_chk F -GLIBC_2.21 __vsscanf F -GLIBC_2.21 __vswprintf_chk F -GLIBC_2.21 __vsyslog_chk F -GLIBC_2.21 __vwprintf_chk F -GLIBC_2.21 __wait F -GLIBC_2.21 __waitpid F -GLIBC_2.21 __wcpcpy_chk F -GLIBC_2.21 __wcpncpy_chk F -GLIBC_2.21 __wcrtomb_chk F -GLIBC_2.21 __wcscasecmp_l F -GLIBC_2.21 __wcscat_chk F -GLIBC_2.21 __wcscoll_l F -GLIBC_2.21 __wcscpy_chk F -GLIBC_2.21 __wcsftime_l F -GLIBC_2.21 __wcsncasecmp_l F -GLIBC_2.21 __wcsncat_chk F -GLIBC_2.21 __wcsncpy_chk F -GLIBC_2.21 __wcsnrtombs_chk F -GLIBC_2.21 __wcsrtombs_chk F -GLIBC_2.21 __wcstod_internal F -GLIBC_2.21 __wcstod_l F -GLIBC_2.21 __wcstof_internal F -GLIBC_2.21 __wcstof_l F -GLIBC_2.21 __wcstol_internal F -GLIBC_2.21 __wcstol_l F -GLIBC_2.21 __wcstold_internal F -GLIBC_2.21 __wcstold_l F -GLIBC_2.21 __wcstoll_internal F -GLIBC_2.21 __wcstoll_l F -GLIBC_2.21 __wcstombs_chk F -GLIBC_2.21 __wcstoul_internal F -GLIBC_2.21 __wcstoul_l F -GLIBC_2.21 __wcstoull_internal F -GLIBC_2.21 __wcstoull_l F -GLIBC_2.21 __wcsxfrm_l F -GLIBC_2.21 __wctomb_chk F -GLIBC_2.21 __wctrans_l F -GLIBC_2.21 __wctype_l F -GLIBC_2.21 __wmemcpy_chk F -GLIBC_2.21 __wmemmove_chk F -GLIBC_2.21 __wmempcpy_chk F -GLIBC_2.21 __wmemset_chk F -GLIBC_2.21 __woverflow F -GLIBC_2.21 __wprintf_chk F -GLIBC_2.21 __write F -GLIBC_2.21 __wuflow F -GLIBC_2.21 __wunderflow F -GLIBC_2.21 __xmknod F -GLIBC_2.21 __xmknodat F -GLIBC_2.21 __xpg_basename F -GLIBC_2.21 __xpg_sigpause F -GLIBC_2.21 __xpg_strerror_r F -GLIBC_2.21 __xstat F -GLIBC_2.21 __xstat64 F -GLIBC_2.21 _authenticate F -GLIBC_2.21 _dl_mcount_wrapper F -GLIBC_2.21 _dl_mcount_wrapper_check F -GLIBC_2.21 _environ D 0x4 -GLIBC_2.21 _exit F -GLIBC_2.21 _flush_cache F -GLIBC_2.21 _flushlbf F -GLIBC_2.21 _libc_intl_domainname D 0x5 -GLIBC_2.21 _longjmp F -GLIBC_2.21 _mcleanup F -GLIBC_2.21 _mcount F -GLIBC_2.21 _nl_default_dirname D 0x12 -GLIBC_2.21 _nl_domain_bindings D 0x4 -GLIBC_2.21 _nl_msg_cat_cntr D 0x4 -GLIBC_2.21 _null_auth D 0xc -GLIBC_2.21 _obstack_allocated_p F -GLIBC_2.21 _obstack_begin F -GLIBC_2.21 _obstack_begin_1 F -GLIBC_2.21 _obstack_free F -GLIBC_2.21 _obstack_memory_used F -GLIBC_2.21 _obstack_newchunk F -GLIBC_2.21 _pthread_cleanup_pop F -GLIBC_2.21 _pthread_cleanup_pop_restore F -GLIBC_2.21 _pthread_cleanup_push F -GLIBC_2.21 _pthread_cleanup_push_defer F -GLIBC_2.21 _res D 0x200 -GLIBC_2.21 _res_hconf D 0x30 -GLIBC_2.21 _rpc_dtablesize F -GLIBC_2.21 _seterr_reply F -GLIBC_2.21 _setjmp F -GLIBC_2.21 _sys_errlist D 0x21c -GLIBC_2.21 _sys_nerr D 0x4 -GLIBC_2.21 _sys_siglist D 0x104 -GLIBC_2.21 _tolower F -GLIBC_2.21 _toupper F -GLIBC_2.21 a64l F -GLIBC_2.21 abort F -GLIBC_2.21 abs F -GLIBC_2.21 accept F -GLIBC_2.21 accept4 F -GLIBC_2.21 access F -GLIBC_2.21 acct F -GLIBC_2.21 addmntent F -GLIBC_2.21 addseverity F -GLIBC_2.21 adjtime F -GLIBC_2.21 adjtimex F -GLIBC_2.21 advance F -GLIBC_2.21 aio_cancel F -GLIBC_2.21 aio_cancel64 F -GLIBC_2.21 aio_error F -GLIBC_2.21 aio_error64 F -GLIBC_2.21 aio_fsync F -GLIBC_2.21 aio_fsync64 F -GLIBC_2.21 aio_init F -GLIBC_2.21 aio_read F -GLIBC_2.21 aio_read64 F -GLIBC_2.21 aio_return F -GLIBC_2.21 aio_return64 F -GLIBC_2.21 aio_suspend F -GLIBC_2.21 aio_suspend64 F -GLIBC_2.21 aio_write F -GLIBC_2.21 aio_write64 F -GLIBC_2.21 alarm F -GLIBC_2.21 aligned_alloc F -GLIBC_2.21 alphasort F -GLIBC_2.21 alphasort64 F -GLIBC_2.21 argp_err_exit_status D 0x4 -GLIBC_2.21 argp_error F -GLIBC_2.21 argp_failure F -GLIBC_2.21 argp_help F -GLIBC_2.21 argp_parse F -GLIBC_2.21 argp_program_bug_address D 0x4 -GLIBC_2.21 argp_program_version D 0x4 -GLIBC_2.21 argp_program_version_hook D 0x4 -GLIBC_2.21 argp_state_help F -GLIBC_2.21 argp_usage F -GLIBC_2.21 argz_add F -GLIBC_2.21 argz_add_sep F -GLIBC_2.21 argz_append F -GLIBC_2.21 argz_count F -GLIBC_2.21 argz_create F -GLIBC_2.21 argz_create_sep F -GLIBC_2.21 argz_delete F -GLIBC_2.21 argz_extract F -GLIBC_2.21 argz_insert F -GLIBC_2.21 argz_next F -GLIBC_2.21 argz_replace F -GLIBC_2.21 argz_stringify F -GLIBC_2.21 asctime F -GLIBC_2.21 asctime_r F -GLIBC_2.21 asprintf F -GLIBC_2.21 atof F -GLIBC_2.21 atoi F -GLIBC_2.21 atol F -GLIBC_2.21 atoll F -GLIBC_2.21 authdes_create F -GLIBC_2.21 authdes_getucred F -GLIBC_2.21 authdes_pk_create F -GLIBC_2.21 authnone_create F -GLIBC_2.21 authunix_create F -GLIBC_2.21 authunix_create_default F -GLIBC_2.21 backtrace F -GLIBC_2.21 backtrace_symbols F -GLIBC_2.21 backtrace_symbols_fd F -GLIBC_2.21 basename F -GLIBC_2.21 bcmp F -GLIBC_2.21 bcopy F -GLIBC_2.21 bdflush F -GLIBC_2.21 bind F -GLIBC_2.21 bind_textdomain_codeset F -GLIBC_2.21 bindresvport F -GLIBC_2.21 bindtextdomain F -GLIBC_2.21 brk F -GLIBC_2.21 bsd_signal F -GLIBC_2.21 bsearch F -GLIBC_2.21 btowc F -GLIBC_2.21 bzero F -GLIBC_2.21 c16rtomb F -GLIBC_2.21 c32rtomb F -GLIBC_2.21 cacheflush F -GLIBC_2.21 calloc F -GLIBC_2.21 callrpc F -GLIBC_2.21 canonicalize_file_name F -GLIBC_2.21 capget F -GLIBC_2.21 capset F -GLIBC_2.21 catclose F -GLIBC_2.21 catgets F -GLIBC_2.21 catopen F -GLIBC_2.21 cbc_crypt F -GLIBC_2.21 cfgetispeed F -GLIBC_2.21 cfgetospeed F -GLIBC_2.21 cfmakeraw F -GLIBC_2.21 cfree F -GLIBC_2.21 cfsetispeed F -GLIBC_2.21 cfsetospeed F -GLIBC_2.21 cfsetspeed F -GLIBC_2.21 chdir F -GLIBC_2.21 chflags F -GLIBC_2.21 chmod F -GLIBC_2.21 chown F -GLIBC_2.21 chroot F -GLIBC_2.21 clearenv F -GLIBC_2.21 clearerr F -GLIBC_2.21 clearerr_unlocked F -GLIBC_2.21 clnt_broadcast F -GLIBC_2.21 clnt_create F -GLIBC_2.21 clnt_pcreateerror F -GLIBC_2.21 clnt_perrno F -GLIBC_2.21 clnt_perror F -GLIBC_2.21 clnt_spcreateerror F -GLIBC_2.21 clnt_sperrno F -GLIBC_2.21 clnt_sperror F -GLIBC_2.21 clntraw_create F -GLIBC_2.21 clnttcp_create F -GLIBC_2.21 clntudp_bufcreate F -GLIBC_2.21 clntudp_create F -GLIBC_2.21 clntunix_create F -GLIBC_2.21 clock F -GLIBC_2.21 clock_adjtime F -GLIBC_2.21 clock_getcpuclockid F -GLIBC_2.21 clock_getres F -GLIBC_2.21 clock_gettime F -GLIBC_2.21 clock_nanosleep F -GLIBC_2.21 clock_settime F -GLIBC_2.21 clone F -GLIBC_2.21 close F -GLIBC_2.21 closedir F -GLIBC_2.21 closelog F -GLIBC_2.21 confstr F -GLIBC_2.21 connect F -GLIBC_2.21 copysign F -GLIBC_2.21 copysignf F -GLIBC_2.21 copysignl F -GLIBC_2.21 creat F -GLIBC_2.21 creat64 F -GLIBC_2.21 create_module F -GLIBC_2.21 ctermid F -GLIBC_2.21 ctime F -GLIBC_2.21 ctime_r F -GLIBC_2.21 cuserid F -GLIBC_2.21 daemon F -GLIBC_2.21 daylight D 0x4 -GLIBC_2.21 dcgettext F -GLIBC_2.21 dcngettext F -GLIBC_2.21 delete_module F -GLIBC_2.21 des_setparity F -GLIBC_2.21 dgettext F -GLIBC_2.21 difftime F -GLIBC_2.21 dirfd F -GLIBC_2.21 dirname F -GLIBC_2.21 div F -GLIBC_2.21 dl_iterate_phdr F -GLIBC_2.21 dladdr F -GLIBC_2.21 dladdr1 F -GLIBC_2.21 dlclose F -GLIBC_2.21 dlerror F -GLIBC_2.21 dlinfo F -GLIBC_2.21 dlmopen F -GLIBC_2.21 dlopen F -GLIBC_2.21 dlsym F -GLIBC_2.21 dlvsym F -GLIBC_2.21 dngettext F -GLIBC_2.21 dprintf F -GLIBC_2.21 drand48 F -GLIBC_2.21 drand48_r F -GLIBC_2.21 dup F -GLIBC_2.21 dup2 F -GLIBC_2.21 dup3 F -GLIBC_2.21 duplocale F -GLIBC_2.21 dysize F -GLIBC_2.21 eaccess F -GLIBC_2.21 ecb_crypt F -GLIBC_2.21 ecvt F -GLIBC_2.21 ecvt_r F -GLIBC_2.21 endaliasent F -GLIBC_2.21 endfsent F -GLIBC_2.21 endgrent F -GLIBC_2.21 endhostent F -GLIBC_2.21 endmntent F -GLIBC_2.21 endnetent F -GLIBC_2.21 endnetgrent F -GLIBC_2.21 endprotoent F -GLIBC_2.21 endpwent F -GLIBC_2.21 endrpcent F -GLIBC_2.21 endservent F -GLIBC_2.21 endsgent F -GLIBC_2.21 endspent F -GLIBC_2.21 endttyent F -GLIBC_2.21 endusershell F -GLIBC_2.21 endutent F -GLIBC_2.21 endutxent F -GLIBC_2.21 environ D 0x4 -GLIBC_2.21 envz_add F -GLIBC_2.21 envz_entry F -GLIBC_2.21 envz_get F -GLIBC_2.21 envz_merge F -GLIBC_2.21 envz_remove F -GLIBC_2.21 envz_strip F -GLIBC_2.21 epoll_create F -GLIBC_2.21 epoll_create1 F -GLIBC_2.21 epoll_ctl F -GLIBC_2.21 epoll_pwait F -GLIBC_2.21 epoll_wait F -GLIBC_2.21 erand48 F -GLIBC_2.21 erand48_r F -GLIBC_2.21 err F -GLIBC_2.21 error F -GLIBC_2.21 error_at_line F -GLIBC_2.21 error_message_count D 0x4 -GLIBC_2.21 error_one_per_line D 0x4 -GLIBC_2.21 error_print_progname D 0x4 -GLIBC_2.21 errx F -GLIBC_2.21 ether_aton F -GLIBC_2.21 ether_aton_r F -GLIBC_2.21 ether_hostton F -GLIBC_2.21 ether_line F -GLIBC_2.21 ether_ntoa F -GLIBC_2.21 ether_ntoa_r F -GLIBC_2.21 ether_ntohost F -GLIBC_2.21 euidaccess F -GLIBC_2.21 eventfd F -GLIBC_2.21 eventfd_read F -GLIBC_2.21 eventfd_write F -GLIBC_2.21 execl F -GLIBC_2.21 execle F -GLIBC_2.21 execlp F -GLIBC_2.21 execv F -GLIBC_2.21 execve F -GLIBC_2.21 execvp F -GLIBC_2.21 execvpe F -GLIBC_2.21 exit F -GLIBC_2.21 faccessat F -GLIBC_2.21 fallocate F -GLIBC_2.21 fallocate64 F -GLIBC_2.21 fanotify_init F -GLIBC_2.21 fanotify_mark F -GLIBC_2.21 fattach F -GLIBC_2.21 fchdir F -GLIBC_2.21 fchflags F -GLIBC_2.21 fchmod F -GLIBC_2.21 fchmodat F -GLIBC_2.21 fchown F -GLIBC_2.21 fchownat F -GLIBC_2.21 fclose F -GLIBC_2.21 fcloseall F -GLIBC_2.21 fcntl F -GLIBC_2.21 fcvt F -GLIBC_2.21 fcvt_r F -GLIBC_2.21 fdatasync F -GLIBC_2.21 fdetach F -GLIBC_2.21 fdopen F -GLIBC_2.21 fdopendir F -GLIBC_2.21 feof F -GLIBC_2.21 feof_unlocked F -GLIBC_2.21 ferror F -GLIBC_2.21 ferror_unlocked F -GLIBC_2.21 fexecve F -GLIBC_2.21 fflush F -GLIBC_2.21 fflush_unlocked F -GLIBC_2.21 ffs F -GLIBC_2.21 ffsl F -GLIBC_2.21 ffsll F -GLIBC_2.21 fgetc F -GLIBC_2.21 fgetc_unlocked F -GLIBC_2.21 fgetgrent F -GLIBC_2.21 fgetgrent_r F -GLIBC_2.21 fgetpos F -GLIBC_2.21 fgetpos64 F -GLIBC_2.21 fgetpwent F -GLIBC_2.21 fgetpwent_r F -GLIBC_2.21 fgets F -GLIBC_2.21 fgets_unlocked F -GLIBC_2.21 fgetsgent F -GLIBC_2.21 fgetsgent_r F -GLIBC_2.21 fgetspent F -GLIBC_2.21 fgetspent_r F -GLIBC_2.21 fgetwc F -GLIBC_2.21 fgetwc_unlocked F -GLIBC_2.21 fgetws F -GLIBC_2.21 fgetws_unlocked F -GLIBC_2.21 fgetxattr F -GLIBC_2.21 fileno F -GLIBC_2.21 fileno_unlocked F -GLIBC_2.21 finite F -GLIBC_2.21 finitef F -GLIBC_2.21 finitel F -GLIBC_2.21 flistxattr F -GLIBC_2.21 flock F -GLIBC_2.21 flockfile F -GLIBC_2.21 fmemopen F -GLIBC_2.21 fmtmsg F -GLIBC_2.21 fnmatch F -GLIBC_2.21 fopen F -GLIBC_2.21 fopen64 F -GLIBC_2.21 fopencookie F -GLIBC_2.21 fork F -GLIBC_2.21 forkpty F -GLIBC_2.21 fpathconf F -GLIBC_2.21 fprintf F -GLIBC_2.21 fputc F -GLIBC_2.21 fputc_unlocked F -GLIBC_2.21 fputs F -GLIBC_2.21 fputs_unlocked F -GLIBC_2.21 fputwc F -GLIBC_2.21 fputwc_unlocked F -GLIBC_2.21 fputws F -GLIBC_2.21 fputws_unlocked F -GLIBC_2.21 fread F -GLIBC_2.21 fread_unlocked F -GLIBC_2.21 free F -GLIBC_2.21 freeaddrinfo F -GLIBC_2.21 freeifaddrs F -GLIBC_2.21 freelocale F -GLIBC_2.21 fremovexattr F -GLIBC_2.21 freopen F -GLIBC_2.21 freopen64 F -GLIBC_2.21 frexp F -GLIBC_2.21 frexpf F -GLIBC_2.21 frexpl F -GLIBC_2.21 fscanf F -GLIBC_2.21 fseek F -GLIBC_2.21 fseeko F -GLIBC_2.21 fseeko64 F -GLIBC_2.21 fsetpos F -GLIBC_2.21 fsetpos64 F -GLIBC_2.21 fsetxattr F -GLIBC_2.21 fstatfs F -GLIBC_2.21 fstatfs64 F -GLIBC_2.21 fstatvfs F -GLIBC_2.21 fstatvfs64 F -GLIBC_2.21 fsync F -GLIBC_2.21 ftell F -GLIBC_2.21 ftello F -GLIBC_2.21 ftello64 F -GLIBC_2.21 ftime F -GLIBC_2.21 ftok F -GLIBC_2.21 ftruncate F -GLIBC_2.21 ftruncate64 F -GLIBC_2.21 ftrylockfile F -GLIBC_2.21 fts_children F -GLIBC_2.21 fts_close F -GLIBC_2.21 fts_open F -GLIBC_2.21 fts_read F -GLIBC_2.21 fts_set F -GLIBC_2.21 ftw F -GLIBC_2.21 ftw64 F -GLIBC_2.21 funlockfile F -GLIBC_2.21 futimens F -GLIBC_2.21 futimes F -GLIBC_2.21 futimesat F -GLIBC_2.21 fwide F -GLIBC_2.21 fwprintf F -GLIBC_2.21 fwrite F -GLIBC_2.21 fwrite_unlocked F -GLIBC_2.21 fwscanf F -GLIBC_2.21 gai_cancel F -GLIBC_2.21 gai_error F -GLIBC_2.21 gai_strerror F -GLIBC_2.21 gai_suspend F -GLIBC_2.21 gcvt F -GLIBC_2.21 get_avphys_pages F -GLIBC_2.21 get_current_dir_name F -GLIBC_2.21 get_kernel_syms F -GLIBC_2.21 get_myaddress F -GLIBC_2.21 get_nprocs F -GLIBC_2.21 get_nprocs_conf F -GLIBC_2.21 get_phys_pages F -GLIBC_2.21 getaddrinfo F -GLIBC_2.21 getaddrinfo_a F -GLIBC_2.21 getaliasbyname F -GLIBC_2.21 getaliasbyname_r F -GLIBC_2.21 getaliasent F -GLIBC_2.21 getaliasent_r F -GLIBC_2.21 getauxval F -GLIBC_2.21 getc F -GLIBC_2.21 getc_unlocked F -GLIBC_2.21 getchar F -GLIBC_2.21 getchar_unlocked F -GLIBC_2.21 getcontext F -GLIBC_2.21 getcwd F -GLIBC_2.21 getdate F -GLIBC_2.21 getdate_err D 0x4 -GLIBC_2.21 getdate_r F -GLIBC_2.21 getdelim F -GLIBC_2.21 getdirentries F -GLIBC_2.21 getdirentries64 F -GLIBC_2.21 getdomainname F -GLIBC_2.21 getdtablesize F -GLIBC_2.21 getegid F -GLIBC_2.21 getenv F -GLIBC_2.21 geteuid F -GLIBC_2.21 getfsent F -GLIBC_2.21 getfsfile F -GLIBC_2.21 getfsspec F -GLIBC_2.21 getgid F -GLIBC_2.21 getgrent F -GLIBC_2.21 getgrent_r F -GLIBC_2.21 getgrgid F -GLIBC_2.21 getgrgid_r F -GLIBC_2.21 getgrnam F -GLIBC_2.21 getgrnam_r F -GLIBC_2.21 getgrouplist F -GLIBC_2.21 getgroups F -GLIBC_2.21 gethostbyaddr F -GLIBC_2.21 gethostbyaddr_r F -GLIBC_2.21 gethostbyname F -GLIBC_2.21 gethostbyname2 F -GLIBC_2.21 gethostbyname2_r F -GLIBC_2.21 gethostbyname_r F -GLIBC_2.21 gethostent F -GLIBC_2.21 gethostent_r F -GLIBC_2.21 gethostid F -GLIBC_2.21 gethostname F -GLIBC_2.21 getifaddrs F -GLIBC_2.21 getipv4sourcefilter F -GLIBC_2.21 getitimer F -GLIBC_2.21 getline F -GLIBC_2.21 getloadavg F -GLIBC_2.21 getlogin F -GLIBC_2.21 getlogin_r F -GLIBC_2.21 getmntent F -GLIBC_2.21 getmntent_r F -GLIBC_2.21 getmsg F -GLIBC_2.21 getnameinfo F -GLIBC_2.21 getnetbyaddr F -GLIBC_2.21 getnetbyaddr_r F -GLIBC_2.21 getnetbyname F -GLIBC_2.21 getnetbyname_r F -GLIBC_2.21 getnetent F -GLIBC_2.21 getnetent_r F -GLIBC_2.21 getnetgrent F -GLIBC_2.21 getnetgrent_r F -GLIBC_2.21 getnetname F -GLIBC_2.21 getopt F -GLIBC_2.21 getopt_long F -GLIBC_2.21 getopt_long_only F -GLIBC_2.21 getpagesize F -GLIBC_2.21 getpass F -GLIBC_2.21 getpeername F -GLIBC_2.21 getpgid F -GLIBC_2.21 getpgrp F -GLIBC_2.21 getpid F -GLIBC_2.21 getpmsg F -GLIBC_2.21 getppid F -GLIBC_2.21 getpriority F -GLIBC_2.21 getprotobyname F -GLIBC_2.21 getprotobyname_r F -GLIBC_2.21 getprotobynumber F -GLIBC_2.21 getprotobynumber_r F -GLIBC_2.21 getprotoent F -GLIBC_2.21 getprotoent_r F -GLIBC_2.21 getpt F -GLIBC_2.21 getpublickey F -GLIBC_2.21 getpw F -GLIBC_2.21 getpwent F -GLIBC_2.21 getpwent_r F -GLIBC_2.21 getpwnam F -GLIBC_2.21 getpwnam_r F -GLIBC_2.21 getpwuid F -GLIBC_2.21 getpwuid_r F -GLIBC_2.21 getresgid F -GLIBC_2.21 getresuid F -GLIBC_2.21 getrlimit F -GLIBC_2.21 getrlimit64 F -GLIBC_2.21 getrpcbyname F -GLIBC_2.21 getrpcbyname_r F -GLIBC_2.21 getrpcbynumber F -GLIBC_2.21 getrpcbynumber_r F -GLIBC_2.21 getrpcent F -GLIBC_2.21 getrpcent_r F -GLIBC_2.21 getrpcport F -GLIBC_2.21 getrusage F -GLIBC_2.21 gets F -GLIBC_2.21 getsecretkey F -GLIBC_2.21 getservbyname F -GLIBC_2.21 getservbyname_r F -GLIBC_2.21 getservbyport F -GLIBC_2.21 getservbyport_r F -GLIBC_2.21 getservent F -GLIBC_2.21 getservent_r F -GLIBC_2.21 getsgent F -GLIBC_2.21 getsgent_r F -GLIBC_2.21 getsgnam F -GLIBC_2.21 getsgnam_r F -GLIBC_2.21 getsid F -GLIBC_2.21 getsockname F -GLIBC_2.21 getsockopt F -GLIBC_2.21 getsourcefilter F -GLIBC_2.21 getspent F -GLIBC_2.21 getspent_r F -GLIBC_2.21 getspnam F -GLIBC_2.21 getspnam_r F -GLIBC_2.21 getsubopt F -GLIBC_2.21 gettext F -GLIBC_2.21 gettimeofday F -GLIBC_2.21 getttyent F -GLIBC_2.21 getttynam F -GLIBC_2.21 getuid F -GLIBC_2.21 getusershell F -GLIBC_2.21 getutent F -GLIBC_2.21 getutent_r F -GLIBC_2.21 getutid F -GLIBC_2.21 getutid_r F -GLIBC_2.21 getutline F -GLIBC_2.21 getutline_r F -GLIBC_2.21 getutmp F -GLIBC_2.21 getutmpx F -GLIBC_2.21 getutxent F -GLIBC_2.21 getutxid F -GLIBC_2.21 getutxline F -GLIBC_2.21 getw F -GLIBC_2.21 getwc F -GLIBC_2.21 getwc_unlocked F -GLIBC_2.21 getwchar F -GLIBC_2.21 getwchar_unlocked F -GLIBC_2.21 getwd F -GLIBC_2.21 getxattr F -GLIBC_2.21 glob F -GLIBC_2.21 glob64 F -GLIBC_2.21 glob_pattern_p F -GLIBC_2.21 globfree F -GLIBC_2.21 globfree64 F -GLIBC_2.21 gmtime F -GLIBC_2.21 gmtime_r F -GLIBC_2.21 gnu_dev_major F -GLIBC_2.21 gnu_dev_makedev F -GLIBC_2.21 gnu_dev_minor F -GLIBC_2.21 gnu_get_libc_release F -GLIBC_2.21 gnu_get_libc_version F -GLIBC_2.21 grantpt F -GLIBC_2.21 group_member F -GLIBC_2.21 gsignal F -GLIBC_2.21 gtty F -GLIBC_2.21 h_errlist D 0x14 -GLIBC_2.21 h_nerr D 0x4 -GLIBC_2.21 hasmntopt F -GLIBC_2.21 hcreate F -GLIBC_2.21 hcreate_r F -GLIBC_2.21 hdestroy F -GLIBC_2.21 hdestroy_r F -GLIBC_2.21 herror F -GLIBC_2.21 host2netname F -GLIBC_2.21 hsearch F -GLIBC_2.21 hsearch_r F -GLIBC_2.21 hstrerror F -GLIBC_2.21 htonl F -GLIBC_2.21 htons F -GLIBC_2.21 iconv F -GLIBC_2.21 iconv_close F -GLIBC_2.21 iconv_open F -GLIBC_2.21 if_freenameindex F -GLIBC_2.21 if_indextoname F -GLIBC_2.21 if_nameindex F -GLIBC_2.21 if_nametoindex F -GLIBC_2.21 imaxabs F -GLIBC_2.21 imaxdiv F -GLIBC_2.21 in6addr_any D 0x10 -GLIBC_2.21 in6addr_loopback D 0x10 -GLIBC_2.21 index F -GLIBC_2.21 inet6_opt_append F -GLIBC_2.21 inet6_opt_find F -GLIBC_2.21 inet6_opt_finish F -GLIBC_2.21 inet6_opt_get_val F -GLIBC_2.21 inet6_opt_init F -GLIBC_2.21 inet6_opt_next F -GLIBC_2.21 inet6_opt_set_val F -GLIBC_2.21 inet6_option_alloc F -GLIBC_2.21 inet6_option_append F -GLIBC_2.21 inet6_option_find F -GLIBC_2.21 inet6_option_init F -GLIBC_2.21 inet6_option_next F -GLIBC_2.21 inet6_option_space F -GLIBC_2.21 inet6_rth_add F -GLIBC_2.21 inet6_rth_getaddr F -GLIBC_2.21 inet6_rth_init F -GLIBC_2.21 inet6_rth_reverse F -GLIBC_2.21 inet6_rth_segments F -GLIBC_2.21 inet6_rth_space F -GLIBC_2.21 inet_addr F -GLIBC_2.21 inet_aton F -GLIBC_2.21 inet_lnaof F -GLIBC_2.21 inet_makeaddr F -GLIBC_2.21 inet_netof F -GLIBC_2.21 inet_network F -GLIBC_2.21 inet_nsap_addr F -GLIBC_2.21 inet_nsap_ntoa F -GLIBC_2.21 inet_ntoa F -GLIBC_2.21 inet_ntop F -GLIBC_2.21 inet_pton F -GLIBC_2.21 init_module F -GLIBC_2.21 initgroups F -GLIBC_2.21 initstate F -GLIBC_2.21 initstate_r F -GLIBC_2.21 innetgr F -GLIBC_2.21 inotify_add_watch F -GLIBC_2.21 inotify_init F -GLIBC_2.21 inotify_init1 F -GLIBC_2.21 inotify_rm_watch F -GLIBC_2.21 insque F -GLIBC_2.21 ioctl F -GLIBC_2.21 iruserok F -GLIBC_2.21 iruserok_af F -GLIBC_2.21 isalnum F -GLIBC_2.21 isalnum_l F -GLIBC_2.21 isalpha F -GLIBC_2.21 isalpha_l F -GLIBC_2.21 isascii F -GLIBC_2.21 isastream F -GLIBC_2.21 isatty F -GLIBC_2.21 isblank F -GLIBC_2.21 isblank_l F -GLIBC_2.21 iscntrl F -GLIBC_2.21 iscntrl_l F -GLIBC_2.21 isctype F -GLIBC_2.21 isdigit F -GLIBC_2.21 isdigit_l F -GLIBC_2.21 isfdtype F -GLIBC_2.21 isgraph F -GLIBC_2.21 isgraph_l F -GLIBC_2.21 isinf F -GLIBC_2.21 isinff F -GLIBC_2.21 isinfl F -GLIBC_2.21 islower F -GLIBC_2.21 islower_l F -GLIBC_2.21 isnan F -GLIBC_2.21 isnanf F -GLIBC_2.21 isnanl F -GLIBC_2.21 isprint F -GLIBC_2.21 isprint_l F -GLIBC_2.21 ispunct F -GLIBC_2.21 ispunct_l F -GLIBC_2.21 isspace F -GLIBC_2.21 isspace_l F -GLIBC_2.21 isupper F -GLIBC_2.21 isupper_l F -GLIBC_2.21 iswalnum F -GLIBC_2.21 iswalnum_l F -GLIBC_2.21 iswalpha F -GLIBC_2.21 iswalpha_l F -GLIBC_2.21 iswblank F -GLIBC_2.21 iswblank_l F -GLIBC_2.21 iswcntrl F -GLIBC_2.21 iswcntrl_l F -GLIBC_2.21 iswctype F -GLIBC_2.21 iswctype_l F -GLIBC_2.21 iswdigit F -GLIBC_2.21 iswdigit_l F -GLIBC_2.21 iswgraph F -GLIBC_2.21 iswgraph_l F -GLIBC_2.21 iswlower F -GLIBC_2.21 iswlower_l F -GLIBC_2.21 iswprint F -GLIBC_2.21 iswprint_l F -GLIBC_2.21 iswpunct F -GLIBC_2.21 iswpunct_l F -GLIBC_2.21 iswspace F -GLIBC_2.21 iswspace_l F -GLIBC_2.21 iswupper F -GLIBC_2.21 iswupper_l F -GLIBC_2.21 iswxdigit F -GLIBC_2.21 iswxdigit_l F -GLIBC_2.21 isxdigit F -GLIBC_2.21 isxdigit_l F -GLIBC_2.21 jrand48 F -GLIBC_2.21 jrand48_r F -GLIBC_2.21 key_decryptsession F -GLIBC_2.21 key_decryptsession_pk F -GLIBC_2.21 key_encryptsession F -GLIBC_2.21 key_encryptsession_pk F -GLIBC_2.21 key_gendes F -GLIBC_2.21 key_get_conv F -GLIBC_2.21 key_secretkey_is_set F -GLIBC_2.21 key_setnet F -GLIBC_2.21 key_setsecret F -GLIBC_2.21 kill F -GLIBC_2.21 killpg F -GLIBC_2.21 klogctl F -GLIBC_2.21 l64a F -GLIBC_2.21 labs F -GLIBC_2.21 lchmod F -GLIBC_2.21 lchown F -GLIBC_2.21 lckpwdf F -GLIBC_2.21 lcong48 F -GLIBC_2.21 lcong48_r F -GLIBC_2.21 ldexp F -GLIBC_2.21 ldexpf F -GLIBC_2.21 ldexpl F -GLIBC_2.21 ldiv F -GLIBC_2.21 lfind F -GLIBC_2.21 lgetxattr F -GLIBC_2.21 link F -GLIBC_2.21 linkat F -GLIBC_2.21 lio_listio F -GLIBC_2.21 lio_listio64 F -GLIBC_2.21 listen F -GLIBC_2.21 listxattr F -GLIBC_2.21 llabs F -GLIBC_2.21 lldiv F -GLIBC_2.21 llistxattr F -GLIBC_2.21 llseek F -GLIBC_2.21 loc1 D 0x4 -GLIBC_2.21 loc2 D 0x4 -GLIBC_2.21 localeconv F -GLIBC_2.21 localtime F -GLIBC_2.21 localtime_r F -GLIBC_2.21 lockf F -GLIBC_2.21 lockf64 F -GLIBC_2.21 locs D 0x4 -GLIBC_2.21 login F -GLIBC_2.21 login_tty F -GLIBC_2.21 logout F -GLIBC_2.21 logwtmp F -GLIBC_2.21 longjmp F -GLIBC_2.21 lrand48 F -GLIBC_2.21 lrand48_r F -GLIBC_2.21 lremovexattr F -GLIBC_2.21 lsearch F -GLIBC_2.21 lseek F -GLIBC_2.21 lseek64 F -GLIBC_2.21 lsetxattr F -GLIBC_2.21 lutimes F -GLIBC_2.21 madvise F -GLIBC_2.21 makecontext F -GLIBC_2.21 mallinfo F -GLIBC_2.21 malloc F -GLIBC_2.21 malloc_info F -GLIBC_2.21 malloc_stats F -GLIBC_2.21 malloc_trim F -GLIBC_2.21 malloc_usable_size F -GLIBC_2.21 mallopt F -GLIBC_2.21 mallwatch D 0x4 -GLIBC_2.21 mblen F -GLIBC_2.21 mbrlen F -GLIBC_2.21 mbrtoc16 F -GLIBC_2.21 mbrtoc32 F -GLIBC_2.21 mbrtowc F -GLIBC_2.21 mbsinit F -GLIBC_2.21 mbsnrtowcs F -GLIBC_2.21 mbsrtowcs F -GLIBC_2.21 mbstowcs F -GLIBC_2.21 mbtowc F -GLIBC_2.21 mcheck F -GLIBC_2.21 mcheck_check_all F -GLIBC_2.21 mcheck_pedantic F -GLIBC_2.21 memalign F -GLIBC_2.21 memccpy F -GLIBC_2.21 memchr F -GLIBC_2.21 memcmp F -GLIBC_2.21 memcpy F -GLIBC_2.21 memfrob F -GLIBC_2.21 memmem F -GLIBC_2.21 memmove F -GLIBC_2.21 mempcpy F -GLIBC_2.21 memrchr F -GLIBC_2.21 memset F -GLIBC_2.21 mincore F -GLIBC_2.21 mkdir F -GLIBC_2.21 mkdirat F -GLIBC_2.21 mkdtemp F -GLIBC_2.21 mkfifo F -GLIBC_2.21 mkfifoat F -GLIBC_2.21 mkostemp F -GLIBC_2.21 mkostemp64 F -GLIBC_2.21 mkostemps F -GLIBC_2.21 mkostemps64 F -GLIBC_2.21 mkstemp F -GLIBC_2.21 mkstemp64 F -GLIBC_2.21 mkstemps F -GLIBC_2.21 mkstemps64 F -GLIBC_2.21 mktemp F -GLIBC_2.21 mktime F -GLIBC_2.21 mlock F -GLIBC_2.21 mlockall F -GLIBC_2.21 mmap F -GLIBC_2.21 mmap64 F -GLIBC_2.21 modf F -GLIBC_2.21 modff F -GLIBC_2.21 modfl F -GLIBC_2.21 moncontrol F -GLIBC_2.21 monstartup F -GLIBC_2.21 mount F -GLIBC_2.21 mprobe F -GLIBC_2.21 mprotect F -GLIBC_2.21 mq_close F -GLIBC_2.21 mq_getattr F -GLIBC_2.21 mq_notify F -GLIBC_2.21 mq_open F -GLIBC_2.21 mq_receive F -GLIBC_2.21 mq_send F -GLIBC_2.21 mq_setattr F -GLIBC_2.21 mq_timedreceive F -GLIBC_2.21 mq_timedsend F -GLIBC_2.21 mq_unlink F -GLIBC_2.21 mrand48 F -GLIBC_2.21 mrand48_r F -GLIBC_2.21 mremap F -GLIBC_2.21 msgctl F -GLIBC_2.21 msgget F -GLIBC_2.21 msgrcv F -GLIBC_2.21 msgsnd F -GLIBC_2.21 msync F -GLIBC_2.21 mtrace F -GLIBC_2.21 munlock F -GLIBC_2.21 munlockall F -GLIBC_2.21 munmap F -GLIBC_2.21 muntrace F -GLIBC_2.21 name_to_handle_at F -GLIBC_2.21 nanosleep F -GLIBC_2.21 netname2host F -GLIBC_2.21 netname2user F -GLIBC_2.21 newlocale F -GLIBC_2.21 nfsservctl F -GLIBC_2.21 nftw F -GLIBC_2.21 nftw64 F -GLIBC_2.21 ngettext F -GLIBC_2.21 nice F -GLIBC_2.21 nl_langinfo F -GLIBC_2.21 nl_langinfo_l F -GLIBC_2.21 nrand48 F -GLIBC_2.21 nrand48_r F -GLIBC_2.21 ns_name_compress F -GLIBC_2.21 ns_name_ntop F -GLIBC_2.21 ns_name_pack F -GLIBC_2.21 ns_name_pton F -GLIBC_2.21 ns_name_skip F -GLIBC_2.21 ns_name_uncompress F -GLIBC_2.21 ns_name_unpack F -GLIBC_2.21 ntohl F -GLIBC_2.21 ntohs F -GLIBC_2.21 ntp_adjtime F -GLIBC_2.21 ntp_gettime F -GLIBC_2.21 ntp_gettimex F -GLIBC_2.21 obstack_alloc_failed_handler D 0x4 -GLIBC_2.21 obstack_exit_failure D 0x4 -GLIBC_2.21 obstack_free F -GLIBC_2.21 obstack_printf F -GLIBC_2.21 obstack_vprintf F -GLIBC_2.21 on_exit F -GLIBC_2.21 open F -GLIBC_2.21 open64 F -GLIBC_2.21 open_by_handle_at F -GLIBC_2.21 open_memstream F -GLIBC_2.21 open_wmemstream F -GLIBC_2.21 openat F -GLIBC_2.21 openat64 F -GLIBC_2.21 opendir F -GLIBC_2.21 openlog F -GLIBC_2.21 openpty F -GLIBC_2.21 optarg D 0x4 -GLIBC_2.21 opterr D 0x4 -GLIBC_2.21 optind D 0x4 -GLIBC_2.21 optopt D 0x4 -GLIBC_2.21 parse_printf_format F -GLIBC_2.21 passwd2des F -GLIBC_2.21 pathconf F -GLIBC_2.21 pause F -GLIBC_2.21 pclose F -GLIBC_2.21 perror F -GLIBC_2.21 personality F -GLIBC_2.21 pipe F -GLIBC_2.21 pipe2 F -GLIBC_2.21 pivot_root F -GLIBC_2.21 pmap_getmaps F -GLIBC_2.21 pmap_getport F -GLIBC_2.21 pmap_rmtcall F -GLIBC_2.21 pmap_set F -GLIBC_2.21 pmap_unset F -GLIBC_2.21 poll F -GLIBC_2.21 popen F -GLIBC_2.21 posix_fadvise F -GLIBC_2.21 posix_fadvise64 F -GLIBC_2.21 posix_fallocate F -GLIBC_2.21 posix_fallocate64 F -GLIBC_2.21 posix_madvise F -GLIBC_2.21 posix_memalign F -GLIBC_2.21 posix_openpt F -GLIBC_2.21 posix_spawn F -GLIBC_2.21 posix_spawn_file_actions_addclose F -GLIBC_2.21 posix_spawn_file_actions_adddup2 F -GLIBC_2.21 posix_spawn_file_actions_addopen F -GLIBC_2.21 posix_spawn_file_actions_destroy F -GLIBC_2.21 posix_spawn_file_actions_init F -GLIBC_2.21 posix_spawnattr_destroy F -GLIBC_2.21 posix_spawnattr_getflags F -GLIBC_2.21 posix_spawnattr_getpgroup F -GLIBC_2.21 posix_spawnattr_getschedparam F -GLIBC_2.21 posix_spawnattr_getschedpolicy F -GLIBC_2.21 posix_spawnattr_getsigdefault F -GLIBC_2.21 posix_spawnattr_getsigmask F -GLIBC_2.21 posix_spawnattr_init F -GLIBC_2.21 posix_spawnattr_setflags F -GLIBC_2.21 posix_spawnattr_setpgroup F -GLIBC_2.21 posix_spawnattr_setschedparam F -GLIBC_2.21 posix_spawnattr_setschedpolicy F -GLIBC_2.21 posix_spawnattr_setsigdefault F -GLIBC_2.21 posix_spawnattr_setsigmask F -GLIBC_2.21 posix_spawnp F -GLIBC_2.21 ppoll F -GLIBC_2.21 prctl F -GLIBC_2.21 pread F -GLIBC_2.21 pread64 F -GLIBC_2.21 preadv F -GLIBC_2.21 preadv64 F -GLIBC_2.21 printf F -GLIBC_2.21 printf_size F -GLIBC_2.21 printf_size_info F -GLIBC_2.21 prlimit F -GLIBC_2.21 prlimit64 F -GLIBC_2.21 process_vm_readv F -GLIBC_2.21 process_vm_writev F -GLIBC_2.21 profil F -GLIBC_2.21 program_invocation_name D 0x4 -GLIBC_2.21 program_invocation_short_name D 0x4 -GLIBC_2.21 pselect F -GLIBC_2.21 psiginfo F -GLIBC_2.21 psignal F -GLIBC_2.21 pthread_attr_destroy F -GLIBC_2.21 pthread_attr_getaffinity_np F -GLIBC_2.21 pthread_attr_getdetachstate F -GLIBC_2.21 pthread_attr_getguardsize F -GLIBC_2.21 pthread_attr_getinheritsched F -GLIBC_2.21 pthread_attr_getschedparam F -GLIBC_2.21 pthread_attr_getschedpolicy F -GLIBC_2.21 pthread_attr_getscope F -GLIBC_2.21 pthread_attr_getstack F -GLIBC_2.21 pthread_attr_getstackaddr F -GLIBC_2.21 pthread_attr_getstacksize F -GLIBC_2.21 pthread_attr_init F -GLIBC_2.21 pthread_attr_setaffinity_np F -GLIBC_2.21 pthread_attr_setdetachstate F -GLIBC_2.21 pthread_attr_setguardsize F -GLIBC_2.21 pthread_attr_setinheritsched F -GLIBC_2.21 pthread_attr_setschedparam F -GLIBC_2.21 pthread_attr_setschedpolicy F -GLIBC_2.21 pthread_attr_setscope F -GLIBC_2.21 pthread_attr_setstack F -GLIBC_2.21 pthread_attr_setstackaddr F -GLIBC_2.21 pthread_attr_setstacksize F -GLIBC_2.21 pthread_barrier_destroy F -GLIBC_2.21 pthread_barrier_init F -GLIBC_2.21 pthread_barrier_wait F -GLIBC_2.21 pthread_barrierattr_destroy F -GLIBC_2.21 pthread_barrierattr_getpshared F -GLIBC_2.21 pthread_barrierattr_init F -GLIBC_2.21 pthread_barrierattr_setpshared F -GLIBC_2.21 pthread_cancel F -GLIBC_2.21 pthread_cond_broadcast F -GLIBC_2.21 pthread_cond_destroy F -GLIBC_2.21 pthread_cond_init F -GLIBC_2.21 pthread_cond_signal F -GLIBC_2.21 pthread_cond_timedwait F -GLIBC_2.21 pthread_cond_wait F -GLIBC_2.21 pthread_condattr_destroy F -GLIBC_2.21 pthread_condattr_getclock F -GLIBC_2.21 pthread_condattr_getpshared F -GLIBC_2.21 pthread_condattr_init F -GLIBC_2.21 pthread_condattr_setclock F -GLIBC_2.21 pthread_condattr_setpshared F -GLIBC_2.21 pthread_create F -GLIBC_2.21 pthread_detach F -GLIBC_2.21 pthread_equal F -GLIBC_2.21 pthread_exit F -GLIBC_2.21 pthread_getaffinity_np F -GLIBC_2.21 pthread_getattr_default_np F -GLIBC_2.21 pthread_getattr_np F -GLIBC_2.21 pthread_getconcurrency F -GLIBC_2.21 pthread_getcpuclockid F -GLIBC_2.21 pthread_getname_np F -GLIBC_2.21 pthread_getschedparam F -GLIBC_2.21 pthread_getspecific F -GLIBC_2.21 pthread_join F -GLIBC_2.21 pthread_key_create F -GLIBC_2.21 pthread_key_delete F -GLIBC_2.21 pthread_kill F -GLIBC_2.21 pthread_kill_other_threads_np F -GLIBC_2.21 pthread_mutex_consistent F -GLIBC_2.21 pthread_mutex_consistent_np F -GLIBC_2.21 pthread_mutex_destroy F -GLIBC_2.21 pthread_mutex_getprioceiling F -GLIBC_2.21 pthread_mutex_init F -GLIBC_2.21 pthread_mutex_lock F -GLIBC_2.21 pthread_mutex_setprioceiling F -GLIBC_2.21 pthread_mutex_timedlock F -GLIBC_2.21 pthread_mutex_trylock F -GLIBC_2.21 pthread_mutex_unlock F -GLIBC_2.21 pthread_mutexattr_destroy F -GLIBC_2.21 pthread_mutexattr_getkind_np F -GLIBC_2.21 pthread_mutexattr_getprioceiling F -GLIBC_2.21 pthread_mutexattr_getprotocol F -GLIBC_2.21 pthread_mutexattr_getpshared F -GLIBC_2.21 pthread_mutexattr_getrobust F -GLIBC_2.21 pthread_mutexattr_getrobust_np F -GLIBC_2.21 pthread_mutexattr_gettype F -GLIBC_2.21 pthread_mutexattr_init F -GLIBC_2.21 pthread_mutexattr_setkind_np F -GLIBC_2.21 pthread_mutexattr_setprioceiling F -GLIBC_2.21 pthread_mutexattr_setprotocol F -GLIBC_2.21 pthread_mutexattr_setpshared F -GLIBC_2.21 pthread_mutexattr_setrobust F -GLIBC_2.21 pthread_mutexattr_setrobust_np F -GLIBC_2.21 pthread_mutexattr_settype F -GLIBC_2.21 pthread_once F -GLIBC_2.21 pthread_rwlock_destroy F -GLIBC_2.21 pthread_rwlock_init F -GLIBC_2.21 pthread_rwlock_rdlock F -GLIBC_2.21 pthread_rwlock_timedrdlock F -GLIBC_2.21 pthread_rwlock_timedwrlock F -GLIBC_2.21 pthread_rwlock_tryrdlock F -GLIBC_2.21 pthread_rwlock_trywrlock F -GLIBC_2.21 pthread_rwlock_unlock F -GLIBC_2.21 pthread_rwlock_wrlock F -GLIBC_2.21 pthread_rwlockattr_destroy F -GLIBC_2.21 pthread_rwlockattr_getkind_np F -GLIBC_2.21 pthread_rwlockattr_getpshared F -GLIBC_2.21 pthread_rwlockattr_init F -GLIBC_2.21 pthread_rwlockattr_setkind_np F -GLIBC_2.21 pthread_rwlockattr_setpshared F -GLIBC_2.21 pthread_self F -GLIBC_2.21 pthread_setaffinity_np F -GLIBC_2.21 pthread_setattr_default_np F -GLIBC_2.21 pthread_setcancelstate F -GLIBC_2.21 pthread_setcanceltype F -GLIBC_2.21 pthread_setconcurrency F -GLIBC_2.21 pthread_setname_np F -GLIBC_2.21 pthread_setschedparam F -GLIBC_2.21 pthread_setschedprio F -GLIBC_2.21 pthread_setspecific F -GLIBC_2.21 pthread_sigmask F -GLIBC_2.21 pthread_sigqueue F -GLIBC_2.21 pthread_spin_destroy F -GLIBC_2.21 pthread_spin_init F -GLIBC_2.21 pthread_spin_lock F -GLIBC_2.21 pthread_spin_trylock F -GLIBC_2.21 pthread_spin_unlock F -GLIBC_2.21 pthread_testcancel F -GLIBC_2.21 pthread_timedjoin_np F -GLIBC_2.21 pthread_tryjoin_np F -GLIBC_2.21 pthread_yield F -GLIBC_2.21 ptrace F -GLIBC_2.21 ptsname F -GLIBC_2.21 ptsname_r F -GLIBC_2.21 putc F -GLIBC_2.21 putc_unlocked F -GLIBC_2.21 putchar F -GLIBC_2.21 putchar_unlocked F -GLIBC_2.21 putenv F -GLIBC_2.21 putgrent F -GLIBC_2.21 putmsg F -GLIBC_2.21 putpmsg F -GLIBC_2.21 putpwent F -GLIBC_2.21 puts F -GLIBC_2.21 putsgent F -GLIBC_2.21 putspent F -GLIBC_2.21 pututline F -GLIBC_2.21 pututxline F -GLIBC_2.21 putw F -GLIBC_2.21 putwc F -GLIBC_2.21 putwc_unlocked F -GLIBC_2.21 putwchar F -GLIBC_2.21 putwchar_unlocked F -GLIBC_2.21 pvalloc F -GLIBC_2.21 pwrite F -GLIBC_2.21 pwrite64 F -GLIBC_2.21 pwritev F -GLIBC_2.21 pwritev64 F -GLIBC_2.21 qecvt F -GLIBC_2.21 qecvt_r F -GLIBC_2.21 qfcvt F -GLIBC_2.21 qfcvt_r F -GLIBC_2.21 qgcvt F -GLIBC_2.21 qsort F -GLIBC_2.21 qsort_r F -GLIBC_2.21 query_module F -GLIBC_2.21 quick_exit F -GLIBC_2.21 quotactl F -GLIBC_2.21 raise F -GLIBC_2.21 rand F -GLIBC_2.21 rand_r F -GLIBC_2.21 random F -GLIBC_2.21 random_r F -GLIBC_2.21 rawmemchr F -GLIBC_2.21 rcmd F -GLIBC_2.21 rcmd_af F -GLIBC_2.21 re_comp F -GLIBC_2.21 re_compile_fastmap F -GLIBC_2.21 re_compile_pattern F -GLIBC_2.21 re_exec F -GLIBC_2.21 re_match F -GLIBC_2.21 re_match_2 F -GLIBC_2.21 re_search F -GLIBC_2.21 re_search_2 F -GLIBC_2.21 re_set_registers F -GLIBC_2.21 re_set_syntax F -GLIBC_2.21 re_syntax_options D 0x4 -GLIBC_2.21 read F -GLIBC_2.21 readahead F -GLIBC_2.21 readdir F -GLIBC_2.21 readdir64 F -GLIBC_2.21 readdir64_r F -GLIBC_2.21 readdir_r F -GLIBC_2.21 readlink F -GLIBC_2.21 readlinkat F -GLIBC_2.21 readv F -GLIBC_2.21 realloc F -GLIBC_2.21 realpath F -GLIBC_2.21 reboot F -GLIBC_2.21 recv F -GLIBC_2.21 recvfrom F -GLIBC_2.21 recvmmsg F -GLIBC_2.21 recvmsg F -GLIBC_2.21 regcomp F -GLIBC_2.21 regerror F -GLIBC_2.21 regexec F -GLIBC_2.21 regfree F -GLIBC_2.21 register_printf_function F -GLIBC_2.21 register_printf_modifier F -GLIBC_2.21 register_printf_specifier F -GLIBC_2.21 register_printf_type F -GLIBC_2.21 registerrpc F -GLIBC_2.21 remap_file_pages F -GLIBC_2.21 remove F -GLIBC_2.21 removexattr F -GLIBC_2.21 remque F -GLIBC_2.21 rename F -GLIBC_2.21 renameat F -GLIBC_2.21 revoke F -GLIBC_2.21 rewind F -GLIBC_2.21 rewinddir F -GLIBC_2.21 rexec F -GLIBC_2.21 rexec_af F -GLIBC_2.21 rexecoptions D 0x4 -GLIBC_2.21 rindex F -GLIBC_2.21 rmdir F -GLIBC_2.21 rpc_createerr D 0x10 -GLIBC_2.21 rpmatch F -GLIBC_2.21 rresvport F -GLIBC_2.21 rresvport_af F -GLIBC_2.21 rtime F -GLIBC_2.21 ruserok F -GLIBC_2.21 ruserok_af F -GLIBC_2.21 ruserpass F -GLIBC_2.21 sbrk F -GLIBC_2.21 scalbn F -GLIBC_2.21 scalbnf F -GLIBC_2.21 scalbnl F -GLIBC_2.21 scandir F -GLIBC_2.21 scandir64 F -GLIBC_2.21 scandirat F -GLIBC_2.21 scandirat64 F -GLIBC_2.21 scanf F -GLIBC_2.21 sched_get_priority_max F -GLIBC_2.21 sched_get_priority_min F -GLIBC_2.21 sched_getaffinity F -GLIBC_2.21 sched_getcpu F -GLIBC_2.21 sched_getparam F -GLIBC_2.21 sched_getscheduler F -GLIBC_2.21 sched_rr_get_interval F -GLIBC_2.21 sched_setaffinity F -GLIBC_2.21 sched_setparam F -GLIBC_2.21 sched_setscheduler F -GLIBC_2.21 sched_yield F -GLIBC_2.21 secure_getenv F -GLIBC_2.21 seed48 F -GLIBC_2.21 seed48_r F -GLIBC_2.21 seekdir F -GLIBC_2.21 select F -GLIBC_2.21 sem_close F -GLIBC_2.21 sem_destroy F -GLIBC_2.21 sem_getvalue F -GLIBC_2.21 sem_init F -GLIBC_2.21 sem_open F -GLIBC_2.21 sem_post F -GLIBC_2.21 sem_timedwait F -GLIBC_2.21 sem_trywait F -GLIBC_2.21 sem_unlink F -GLIBC_2.21 sem_wait F -GLIBC_2.21 semctl F -GLIBC_2.21 semget F -GLIBC_2.21 semop F -GLIBC_2.21 semtimedop F -GLIBC_2.21 send F -GLIBC_2.21 sendfile F -GLIBC_2.21 sendfile64 F -GLIBC_2.21 sendmmsg F -GLIBC_2.21 sendmsg F -GLIBC_2.21 sendto F -GLIBC_2.21 setaliasent F -GLIBC_2.21 setbuf F -GLIBC_2.21 setbuffer F -GLIBC_2.21 setcontext F -GLIBC_2.21 setdomainname F -GLIBC_2.21 setegid F -GLIBC_2.21 setenv F -GLIBC_2.21 seteuid F -GLIBC_2.21 setfsent F -GLIBC_2.21 setfsgid F -GLIBC_2.21 setfsuid F -GLIBC_2.21 setgid F -GLIBC_2.21 setgrent F -GLIBC_2.21 setgroups F -GLIBC_2.21 sethostent F -GLIBC_2.21 sethostid F -GLIBC_2.21 sethostname F -GLIBC_2.21 setipv4sourcefilter F -GLIBC_2.21 setitimer F -GLIBC_2.21 setjmp F -GLIBC_2.21 setlinebuf F -GLIBC_2.21 setlocale F -GLIBC_2.21 setlogin F -GLIBC_2.21 setlogmask F -GLIBC_2.21 setmntent F -GLIBC_2.21 setnetent F -GLIBC_2.21 setnetgrent F -GLIBC_2.21 setns F -GLIBC_2.21 setpgid F -GLIBC_2.21 setpgrp F -GLIBC_2.21 setpriority F -GLIBC_2.21 setprotoent F -GLIBC_2.21 setpwent F -GLIBC_2.21 setregid F -GLIBC_2.21 setresgid F -GLIBC_2.21 setresuid F -GLIBC_2.21 setreuid F -GLIBC_2.21 setrlimit F -GLIBC_2.21 setrlimit64 F -GLIBC_2.21 setrpcent F -GLIBC_2.21 setservent F -GLIBC_2.21 setsgent F -GLIBC_2.21 setsid F -GLIBC_2.21 setsockopt F -GLIBC_2.21 setsourcefilter F -GLIBC_2.21 setspent F -GLIBC_2.21 setstate F -GLIBC_2.21 setstate_r F -GLIBC_2.21 settimeofday F -GLIBC_2.21 setttyent F -GLIBC_2.21 setuid F -GLIBC_2.21 setusershell F -GLIBC_2.21 setutent F -GLIBC_2.21 setutxent F -GLIBC_2.21 setvbuf F -GLIBC_2.21 setxattr F -GLIBC_2.21 sgetsgent F -GLIBC_2.21 sgetsgent_r F -GLIBC_2.21 sgetspent F -GLIBC_2.21 sgetspent_r F -GLIBC_2.21 shm_open F -GLIBC_2.21 shm_unlink F -GLIBC_2.21 shmat F -GLIBC_2.21 shmctl F -GLIBC_2.21 shmdt F -GLIBC_2.21 shmget F -GLIBC_2.21 shutdown F -GLIBC_2.21 sigaction F -GLIBC_2.21 sigaddset F -GLIBC_2.21 sigaltstack F -GLIBC_2.21 sigandset F -GLIBC_2.21 sigblock F -GLIBC_2.21 sigdelset F -GLIBC_2.21 sigemptyset F -GLIBC_2.21 sigfillset F -GLIBC_2.21 siggetmask F -GLIBC_2.21 sighold F -GLIBC_2.21 sigignore F -GLIBC_2.21 siginterrupt F -GLIBC_2.21 sigisemptyset F -GLIBC_2.21 sigismember F -GLIBC_2.21 siglongjmp F -GLIBC_2.21 signal F -GLIBC_2.21 signalfd F -GLIBC_2.21 sigorset F -GLIBC_2.21 sigpause F -GLIBC_2.21 sigpending F -GLIBC_2.21 sigprocmask F -GLIBC_2.21 sigqueue F -GLIBC_2.21 sigrelse F -GLIBC_2.21 sigreturn F -GLIBC_2.21 sigset F -GLIBC_2.21 sigsetmask F -GLIBC_2.21 sigstack F -GLIBC_2.21 sigsuspend F -GLIBC_2.21 sigtimedwait F -GLIBC_2.21 sigwait F -GLIBC_2.21 sigwaitinfo F -GLIBC_2.21 sleep F -GLIBC_2.21 snprintf F -GLIBC_2.21 sockatmark F -GLIBC_2.21 socket F -GLIBC_2.21 socketpair F -GLIBC_2.21 splice F -GLIBC_2.21 sprintf F -GLIBC_2.21 sprofil F -GLIBC_2.21 srand F -GLIBC_2.21 srand48 F -GLIBC_2.21 srand48_r F -GLIBC_2.21 srandom F -GLIBC_2.21 srandom_r F -GLIBC_2.21 sscanf F -GLIBC_2.21 ssignal F -GLIBC_2.21 sstk F -GLIBC_2.21 statfs F -GLIBC_2.21 statfs64 F -GLIBC_2.21 statvfs F -GLIBC_2.21 statvfs64 F -GLIBC_2.21 stderr D 0x4 -GLIBC_2.21 stdin D 0x4 -GLIBC_2.21 stdout D 0x4 -GLIBC_2.21 step F -GLIBC_2.21 stime F -GLIBC_2.21 stpcpy F -GLIBC_2.21 stpncpy F -GLIBC_2.21 strcasecmp F -GLIBC_2.21 strcasecmp_l F -GLIBC_2.21 strcasestr F -GLIBC_2.21 strcat F -GLIBC_2.21 strchr F -GLIBC_2.21 strchrnul F -GLIBC_2.21 strcmp F -GLIBC_2.21 strcoll F -GLIBC_2.21 strcoll_l F -GLIBC_2.21 strcpy F -GLIBC_2.21 strcspn F -GLIBC_2.21 strdup F -GLIBC_2.21 strerror F -GLIBC_2.21 strerror_l F -GLIBC_2.21 strerror_r F -GLIBC_2.21 strfmon F -GLIBC_2.21 strfmon_l F -GLIBC_2.21 strfry F -GLIBC_2.21 strftime F -GLIBC_2.21 strftime_l F -GLIBC_2.21 strlen F -GLIBC_2.21 strncasecmp F -GLIBC_2.21 strncasecmp_l F -GLIBC_2.21 strncat F -GLIBC_2.21 strncmp F -GLIBC_2.21 strncpy F -GLIBC_2.21 strndup F -GLIBC_2.21 strnlen F -GLIBC_2.21 strpbrk F -GLIBC_2.21 strptime F -GLIBC_2.21 strptime_l F -GLIBC_2.21 strrchr F -GLIBC_2.21 strsep F -GLIBC_2.21 strsignal F -GLIBC_2.21 strspn F -GLIBC_2.21 strstr F -GLIBC_2.21 strtod F -GLIBC_2.21 strtod_l F -GLIBC_2.21 strtof F -GLIBC_2.21 strtof_l F -GLIBC_2.21 strtoimax F -GLIBC_2.21 strtok F -GLIBC_2.21 strtok_r F -GLIBC_2.21 strtol F -GLIBC_2.21 strtol_l F -GLIBC_2.21 strtold F -GLIBC_2.21 strtold_l F -GLIBC_2.21 strtoll F -GLIBC_2.21 strtoll_l F -GLIBC_2.21 strtoq F -GLIBC_2.21 strtoul F -GLIBC_2.21 strtoul_l F -GLIBC_2.21 strtoull F -GLIBC_2.21 strtoull_l F -GLIBC_2.21 strtoumax F -GLIBC_2.21 strtouq F -GLIBC_2.21 strverscmp F -GLIBC_2.21 strxfrm F -GLIBC_2.21 strxfrm_l F -GLIBC_2.21 stty F -GLIBC_2.21 svc_exit F -GLIBC_2.21 svc_fdset D 0x80 -GLIBC_2.21 svc_getreq F -GLIBC_2.21 svc_getreq_common F -GLIBC_2.21 svc_getreq_poll F -GLIBC_2.21 svc_getreqset F -GLIBC_2.21 svc_max_pollfd D 0x4 -GLIBC_2.21 svc_pollfd D 0x4 -GLIBC_2.21 svc_register F -GLIBC_2.21 svc_run F -GLIBC_2.21 svc_sendreply F -GLIBC_2.21 svc_unregister F -GLIBC_2.21 svcauthdes_stats D 0xc -GLIBC_2.21 svcerr_auth F -GLIBC_2.21 svcerr_decode F -GLIBC_2.21 svcerr_noproc F -GLIBC_2.21 svcerr_noprog F -GLIBC_2.21 svcerr_progvers F -GLIBC_2.21 svcerr_systemerr F -GLIBC_2.21 svcerr_weakauth F -GLIBC_2.21 svcfd_create F -GLIBC_2.21 svcraw_create F -GLIBC_2.21 svctcp_create F -GLIBC_2.21 svcudp_bufcreate F -GLIBC_2.21 svcudp_create F -GLIBC_2.21 svcudp_enablecache F -GLIBC_2.21 svcunix_create F -GLIBC_2.21 svcunixfd_create F -GLIBC_2.21 swab F -GLIBC_2.21 swapcontext F -GLIBC_2.21 swapoff F -GLIBC_2.21 swapon F -GLIBC_2.21 swprintf F -GLIBC_2.21 swscanf F -GLIBC_2.21 symlink F -GLIBC_2.21 symlinkat F -GLIBC_2.21 sync F -GLIBC_2.21 sync_file_range F -GLIBC_2.21 syncfs F -GLIBC_2.21 sys_errlist D 0x21c -GLIBC_2.21 sys_nerr D 0x4 -GLIBC_2.21 sys_sigabbrev D 0x104 -GLIBC_2.21 sys_siglist D 0x104 -GLIBC_2.21 syscall F -GLIBC_2.21 sysconf F -GLIBC_2.21 sysctl F -GLIBC_2.21 sysinfo F -GLIBC_2.21 syslog F -GLIBC_2.21 system F -GLIBC_2.21 sysv_signal F -GLIBC_2.21 tcdrain F -GLIBC_2.21 tcflow F -GLIBC_2.21 tcflush F -GLIBC_2.21 tcgetattr F -GLIBC_2.21 tcgetpgrp F -GLIBC_2.21 tcgetsid F -GLIBC_2.21 tcsendbreak F -GLIBC_2.21 tcsetattr F -GLIBC_2.21 tcsetpgrp F -GLIBC_2.21 tdelete F -GLIBC_2.21 tdestroy F -GLIBC_2.21 tee F -GLIBC_2.21 telldir F -GLIBC_2.21 tempnam F -GLIBC_2.21 textdomain F -GLIBC_2.21 tfind F -GLIBC_2.21 time F -GLIBC_2.21 timegm F -GLIBC_2.21 timelocal F -GLIBC_2.21 timer_create F -GLIBC_2.21 timer_delete F -GLIBC_2.21 timer_getoverrun F -GLIBC_2.21 timer_gettime F -GLIBC_2.21 timer_settime F -GLIBC_2.21 timerfd_create F -GLIBC_2.21 timerfd_gettime F -GLIBC_2.21 timerfd_settime F -GLIBC_2.21 times F -GLIBC_2.21 timespec_get F -GLIBC_2.21 timezone D 0x4 -GLIBC_2.21 tmpfile F -GLIBC_2.21 tmpfile64 F -GLIBC_2.21 tmpnam F -GLIBC_2.21 tmpnam_r F -GLIBC_2.21 toascii F -GLIBC_2.21 tolower F -GLIBC_2.21 tolower_l F -GLIBC_2.21 toupper F -GLIBC_2.21 toupper_l F -GLIBC_2.21 towctrans F -GLIBC_2.21 towctrans_l F -GLIBC_2.21 towlower F -GLIBC_2.21 towlower_l F -GLIBC_2.21 towupper F -GLIBC_2.21 towupper_l F -GLIBC_2.21 tr_break F -GLIBC_2.21 truncate F -GLIBC_2.21 truncate64 F -GLIBC_2.21 tsearch F -GLIBC_2.21 ttyname F -GLIBC_2.21 ttyname_r F -GLIBC_2.21 ttyslot F -GLIBC_2.21 twalk F -GLIBC_2.21 tzname D 0x8 -GLIBC_2.21 tzset F -GLIBC_2.21 ualarm F -GLIBC_2.21 ulckpwdf F -GLIBC_2.21 ulimit F -GLIBC_2.21 umask F -GLIBC_2.21 umount F -GLIBC_2.21 umount2 F -GLIBC_2.21 uname F -GLIBC_2.21 ungetc F -GLIBC_2.21 ungetwc F -GLIBC_2.21 unlink F -GLIBC_2.21 unlinkat F -GLIBC_2.21 unlockpt F -GLIBC_2.21 unsetenv F -GLIBC_2.21 unshare F -GLIBC_2.21 updwtmp F -GLIBC_2.21 updwtmpx F -GLIBC_2.21 uselib F -GLIBC_2.21 uselocale F -GLIBC_2.21 user2netname F -GLIBC_2.21 usleep F -GLIBC_2.21 ustat F -GLIBC_2.21 utime F -GLIBC_2.21 utimensat F -GLIBC_2.21 utimes F -GLIBC_2.21 utmpname F -GLIBC_2.21 utmpxname F -GLIBC_2.21 valloc F -GLIBC_2.21 vasprintf F -GLIBC_2.21 vdprintf F -GLIBC_2.21 verr F -GLIBC_2.21 verrx F -GLIBC_2.21 versionsort F -GLIBC_2.21 versionsort64 F -GLIBC_2.21 vfork F -GLIBC_2.21 vfprintf F -GLIBC_2.21 vfscanf F -GLIBC_2.21 vfwprintf F -GLIBC_2.21 vfwscanf F -GLIBC_2.21 vhangup F -GLIBC_2.21 vlimit F -GLIBC_2.21 vmsplice F -GLIBC_2.21 vprintf F -GLIBC_2.21 vscanf F -GLIBC_2.21 vsnprintf F -GLIBC_2.21 vsprintf F -GLIBC_2.21 vsscanf F -GLIBC_2.21 vswprintf F -GLIBC_2.21 vswscanf F -GLIBC_2.21 vsyslog F -GLIBC_2.21 vtimes F -GLIBC_2.21 vwarn F -GLIBC_2.21 vwarnx F -GLIBC_2.21 vwprintf F -GLIBC_2.21 vwscanf F -GLIBC_2.21 wait F -GLIBC_2.21 wait3 F -GLIBC_2.21 wait4 F -GLIBC_2.21 waitid F -GLIBC_2.21 waitpid F -GLIBC_2.21 warn F -GLIBC_2.21 warnx F -GLIBC_2.21 wcpcpy F -GLIBC_2.21 wcpncpy F -GLIBC_2.21 wcrtomb F -GLIBC_2.21 wcscasecmp F -GLIBC_2.21 wcscasecmp_l F -GLIBC_2.21 wcscat F -GLIBC_2.21 wcschr F -GLIBC_2.21 wcschrnul F -GLIBC_2.21 wcscmp F -GLIBC_2.21 wcscoll F -GLIBC_2.21 wcscoll_l F -GLIBC_2.21 wcscpy F -GLIBC_2.21 wcscspn F -GLIBC_2.21 wcsdup F -GLIBC_2.21 wcsftime F -GLIBC_2.21 wcsftime_l F -GLIBC_2.21 wcslen F -GLIBC_2.21 wcsncasecmp F -GLIBC_2.21 wcsncasecmp_l F -GLIBC_2.21 wcsncat F -GLIBC_2.21 wcsncmp F -GLIBC_2.21 wcsncpy F -GLIBC_2.21 wcsnlen F -GLIBC_2.21 wcsnrtombs F -GLIBC_2.21 wcspbrk F -GLIBC_2.21 wcsrchr F -GLIBC_2.21 wcsrtombs F -GLIBC_2.21 wcsspn F -GLIBC_2.21 wcsstr F -GLIBC_2.21 wcstod F -GLIBC_2.21 wcstod_l F -GLIBC_2.21 wcstof F -GLIBC_2.21 wcstof_l F -GLIBC_2.21 wcstoimax F -GLIBC_2.21 wcstok F -GLIBC_2.21 wcstol F -GLIBC_2.21 wcstol_l F -GLIBC_2.21 wcstold F -GLIBC_2.21 wcstold_l F -GLIBC_2.21 wcstoll F -GLIBC_2.21 wcstoll_l F -GLIBC_2.21 wcstombs F -GLIBC_2.21 wcstoq F -GLIBC_2.21 wcstoul F -GLIBC_2.21 wcstoul_l F -GLIBC_2.21 wcstoull F -GLIBC_2.21 wcstoull_l F -GLIBC_2.21 wcstoumax F -GLIBC_2.21 wcstouq F -GLIBC_2.21 wcswcs F -GLIBC_2.21 wcswidth F -GLIBC_2.21 wcsxfrm F -GLIBC_2.21 wcsxfrm_l F -GLIBC_2.21 wctob F -GLIBC_2.21 wctomb F -GLIBC_2.21 wctrans F -GLIBC_2.21 wctrans_l F -GLIBC_2.21 wctype F -GLIBC_2.21 wctype_l F -GLIBC_2.21 wcwidth F -GLIBC_2.21 wmemchr F -GLIBC_2.21 wmemcmp F -GLIBC_2.21 wmemcpy F -GLIBC_2.21 wmemmove F -GLIBC_2.21 wmempcpy F -GLIBC_2.21 wmemset F -GLIBC_2.21 wordexp F -GLIBC_2.21 wordfree F -GLIBC_2.21 wprintf F -GLIBC_2.21 write F -GLIBC_2.21 writev F -GLIBC_2.21 wscanf F -GLIBC_2.21 xdecrypt F -GLIBC_2.21 xdr_accepted_reply F -GLIBC_2.21 xdr_array F -GLIBC_2.21 xdr_authdes_cred F -GLIBC_2.21 xdr_authdes_verf F -GLIBC_2.21 xdr_authunix_parms F -GLIBC_2.21 xdr_bool F -GLIBC_2.21 xdr_bytes F -GLIBC_2.21 xdr_callhdr F -GLIBC_2.21 xdr_callmsg F -GLIBC_2.21 xdr_char F -GLIBC_2.21 xdr_cryptkeyarg F -GLIBC_2.21 xdr_cryptkeyarg2 F -GLIBC_2.21 xdr_cryptkeyres F -GLIBC_2.21 xdr_des_block F -GLIBC_2.21 xdr_double F -GLIBC_2.21 xdr_enum F -GLIBC_2.21 xdr_float F -GLIBC_2.21 xdr_free F -GLIBC_2.21 xdr_getcredres F -GLIBC_2.21 xdr_hyper F -GLIBC_2.21 xdr_int F -GLIBC_2.21 xdr_int16_t F -GLIBC_2.21 xdr_int32_t F -GLIBC_2.21 xdr_int64_t F -GLIBC_2.21 xdr_int8_t F -GLIBC_2.21 xdr_key_netstarg F -GLIBC_2.21 xdr_key_netstres F -GLIBC_2.21 xdr_keybuf F -GLIBC_2.21 xdr_keystatus F -GLIBC_2.21 xdr_long F -GLIBC_2.21 xdr_longlong_t F -GLIBC_2.21 xdr_netnamestr F -GLIBC_2.21 xdr_netobj F -GLIBC_2.21 xdr_opaque F -GLIBC_2.21 xdr_opaque_auth F -GLIBC_2.21 xdr_pmap F -GLIBC_2.21 xdr_pmaplist F -GLIBC_2.21 xdr_pointer F -GLIBC_2.21 xdr_quad_t F -GLIBC_2.21 xdr_reference F -GLIBC_2.21 xdr_rejected_reply F -GLIBC_2.21 xdr_replymsg F -GLIBC_2.21 xdr_rmtcall_args F -GLIBC_2.21 xdr_rmtcallres F -GLIBC_2.21 xdr_short F -GLIBC_2.21 xdr_sizeof F -GLIBC_2.21 xdr_string F -GLIBC_2.21 xdr_u_char F -GLIBC_2.21 xdr_u_hyper F -GLIBC_2.21 xdr_u_int F -GLIBC_2.21 xdr_u_long F -GLIBC_2.21 xdr_u_longlong_t F -GLIBC_2.21 xdr_u_quad_t F -GLIBC_2.21 xdr_u_short F -GLIBC_2.21 xdr_uint16_t F -GLIBC_2.21 xdr_uint32_t F -GLIBC_2.21 xdr_uint64_t F -GLIBC_2.21 xdr_uint8_t F -GLIBC_2.21 xdr_union F -GLIBC_2.21 xdr_unixcred F -GLIBC_2.21 xdr_vector F -GLIBC_2.21 xdr_void F -GLIBC_2.21 xdr_wrapstring F -GLIBC_2.21 xdrmem_create F -GLIBC_2.21 xdrrec_create F -GLIBC_2.21 xdrrec_endofrecord F -GLIBC_2.21 xdrrec_eof F -GLIBC_2.21 xdrrec_skiprecord F -GLIBC_2.21 xdrstdio_create F -GLIBC_2.21 xencrypt F -GLIBC_2.21 xprt_register F -GLIBC_2.21 xprt_unregister F -GLIBC_2.22 fmemopen F -GLIBC_2.23 fts64_children F -GLIBC_2.23 fts64_close F -GLIBC_2.23 fts64_open F -GLIBC_2.23 fts64_read F -GLIBC_2.23 fts64_set F -GLIBC_2.24 quick_exit F -GLIBC_2.25 __explicit_bzero_chk F -GLIBC_2.25 explicit_bzero F -GLIBC_2.25 getentropy F -GLIBC_2.25 getrandom F -GLIBC_2.25 strfromd F -GLIBC_2.25 strfromf F -GLIBC_2.25 strfroml F -GLIBC_2.26 preadv2 F -GLIBC_2.26 preadv64v2 F -GLIBC_2.26 pwritev2 F -GLIBC_2.26 pwritev64v2 F -GLIBC_2.26 reallocarray F -GLIBC_2.27 copy_file_range F -GLIBC_2.27 glob F -GLIBC_2.27 glob64 F -GLIBC_2.27 memfd_create F -GLIBC_2.27 mlock2 F -GLIBC_2.27 pkey_alloc F -GLIBC_2.27 pkey_free F -GLIBC_2.27 pkey_get F -GLIBC_2.27 pkey_mprotect F -GLIBC_2.27 pkey_set F -GLIBC_2.27 strfromf32 F -GLIBC_2.27 strfromf32x F -GLIBC_2.27 strfromf64 F -GLIBC_2.27 strtof32 F -GLIBC_2.27 strtof32_l F -GLIBC_2.27 strtof32x F -GLIBC_2.27 strtof32x_l F -GLIBC_2.27 strtof64 F -GLIBC_2.27 strtof64_l F -GLIBC_2.27 wcstof32 F -GLIBC_2.27 wcstof32_l F -GLIBC_2.27 wcstof32x F -GLIBC_2.27 wcstof32x_l F -GLIBC_2.27 wcstof64 F -GLIBC_2.27 wcstof64_l F -GLIBC_2.28 call_once F -GLIBC_2.28 cnd_broadcast F -GLIBC_2.28 cnd_destroy F -GLIBC_2.28 cnd_init F -GLIBC_2.28 cnd_signal F -GLIBC_2.28 cnd_timedwait F -GLIBC_2.28 cnd_wait F -GLIBC_2.28 fcntl F -GLIBC_2.28 fcntl64 F -GLIBC_2.28 mtx_destroy F -GLIBC_2.28 mtx_init F -GLIBC_2.28 mtx_lock F -GLIBC_2.28 mtx_timedlock F -GLIBC_2.28 mtx_trylock F -GLIBC_2.28 mtx_unlock F -GLIBC_2.28 renameat2 F -GLIBC_2.28 statx F -GLIBC_2.28 thrd_create F -GLIBC_2.28 thrd_current F -GLIBC_2.28 thrd_detach F -GLIBC_2.28 thrd_equal F -GLIBC_2.28 thrd_exit F -GLIBC_2.28 thrd_join F -GLIBC_2.28 thrd_sleep F -GLIBC_2.28 thrd_yield F -GLIBC_2.28 tss_create F -GLIBC_2.28 tss_delete F -GLIBC_2.28 tss_get F -GLIBC_2.28 tss_set F -GLIBC_2.29 getcpu F -GLIBC_2.29 posix_spawn_file_actions_addchdir_np F -GLIBC_2.29 posix_spawn_file_actions_addfchdir_np F -GLIBC_2.30 getdents64 F -GLIBC_2.30 gettid F -GLIBC_2.30 pthread_cond_clockwait F -GLIBC_2.30 pthread_mutex_clocklock F -GLIBC_2.30 pthread_rwlock_clockrdlock F -GLIBC_2.30 pthread_rwlock_clockwrlock F -GLIBC_2.30 sem_clockwait F -GLIBC_2.30 tgkill F -GLIBC_2.30 twalk_r F -GLIBC_2.31 pthread_clockjoin_np F -GLIBC_2.32 __libc_single_threaded D 0x1 -GLIBC_2.32 pthread_attr_getsigmask_np F -GLIBC_2.32 pthread_attr_setaffinity_np F -GLIBC_2.32 pthread_attr_setsigmask_np F -GLIBC_2.32 pthread_getaffinity_np F -GLIBC_2.32 pthread_getattr_np F -GLIBC_2.32 pthread_sigmask F -GLIBC_2.32 sigabbrev_np F -GLIBC_2.32 sigdescr_np F -GLIBC_2.32 strerrordesc_np F -GLIBC_2.32 strerrorname_np F -GLIBC_2.33 fstat F -GLIBC_2.33 fstat64 F -GLIBC_2.33 fstatat F -GLIBC_2.33 fstatat64 F -GLIBC_2.33 lstat F -GLIBC_2.33 lstat64 F -GLIBC_2.33 mallinfo2 F -GLIBC_2.33 mknod F -GLIBC_2.33 mknodat F -GLIBC_2.33 stat F -GLIBC_2.33 stat64 F -GLIBC_2.34 _Fork F -GLIBC_2.34 ___adjtimex64 F -GLIBC_2.34 __adjtime64 F -GLIBC_2.34 __aio_suspend_time64 F -GLIBC_2.34 __clock_adjtime64 F -GLIBC_2.34 __clock_getres64 F -GLIBC_2.34 __clock_gettime64 F -GLIBC_2.34 __clock_nanosleep_time64 F -GLIBC_2.34 __clock_settime64 F -GLIBC_2.34 __cnd_timedwait64 F -GLIBC_2.34 __ctime64 F -GLIBC_2.34 __ctime64_r F -GLIBC_2.34 __difftime64 F -GLIBC_2.34 __fcntl_time64 F -GLIBC_2.34 __fstat64_time64 F -GLIBC_2.34 __fstatat64_time64 F -GLIBC_2.34 __fts64_children_time64 F -GLIBC_2.34 __fts64_close_time64 F -GLIBC_2.34 __fts64_open_time64 F -GLIBC_2.34 __fts64_read_time64 F -GLIBC_2.34 __fts64_set_time64 F -GLIBC_2.34 __ftw64_time64 F -GLIBC_2.34 __futimens64 F -GLIBC_2.34 __futimes64 F -GLIBC_2.34 __futimesat64 F -GLIBC_2.34 __gai_suspend_time64 F -GLIBC_2.34 __getitimer64 F -GLIBC_2.34 __getrusage64 F -GLIBC_2.34 __getsockopt64 F -GLIBC_2.34 __gettimeofday64 F -GLIBC_2.34 __glob64_time64 F -GLIBC_2.34 __globfree64_time64 F -GLIBC_2.34 __gmtime64 F -GLIBC_2.34 __gmtime64_r F -GLIBC_2.34 __ioctl_time64 F -GLIBC_2.34 __libc_start_main F -GLIBC_2.34 __localtime64 F -GLIBC_2.34 __localtime64_r F -GLIBC_2.34 __lstat64_time64 F -GLIBC_2.34 __lutimes64 F -GLIBC_2.34 __mktime64 F -GLIBC_2.34 __mq_open_2 F -GLIBC_2.34 __mq_timedreceive_time64 F -GLIBC_2.34 __mq_timedsend_time64 F -GLIBC_2.34 __msgctl64 F -GLIBC_2.34 __mtx_timedlock64 F -GLIBC_2.34 __nanosleep64 F -GLIBC_2.34 __nftw64_time64 F -GLIBC_2.34 __ntp_gettime64 F -GLIBC_2.34 __ntp_gettimex64 F -GLIBC_2.34 __ppoll64 F -GLIBC_2.34 __prctl_time64 F -GLIBC_2.34 __pselect64 F -GLIBC_2.34 __pthread_cleanup_routine F -GLIBC_2.34 __pthread_clockjoin_np64 F -GLIBC_2.34 __pthread_cond_clockwait64 F -GLIBC_2.34 __pthread_cond_timedwait64 F -GLIBC_2.34 __pthread_key_create F -GLIBC_2.34 __pthread_mutex_clocklock64 F -GLIBC_2.34 __pthread_mutex_timedlock64 F -GLIBC_2.34 __pthread_register_cancel F -GLIBC_2.34 __pthread_register_cancel_defer F -GLIBC_2.34 __pthread_rwlock_clockrdlock64 F -GLIBC_2.34 __pthread_rwlock_clockwrlock64 F -GLIBC_2.34 __pthread_rwlock_timedrdlock64 F -GLIBC_2.34 __pthread_rwlock_timedwrlock64 F -GLIBC_2.34 __pthread_timedjoin_np64 F -GLIBC_2.34 __pthread_unregister_cancel F -GLIBC_2.34 __pthread_unregister_cancel_restore F -GLIBC_2.34 __pthread_unwind_next F -GLIBC_2.34 __recvmmsg64 F -GLIBC_2.34 __recvmsg64 F -GLIBC_2.34 __sched_rr_get_interval64 F -GLIBC_2.34 __select64 F -GLIBC_2.34 __sem_clockwait64 F -GLIBC_2.34 __sem_timedwait64 F -GLIBC_2.34 __semctl64 F -GLIBC_2.34 __semtimedop64 F -GLIBC_2.34 __sendmmsg64 F -GLIBC_2.34 __sendmsg64 F -GLIBC_2.34 __setitimer64 F -GLIBC_2.34 __setsockopt64 F -GLIBC_2.34 __settimeofday64 F -GLIBC_2.34 __shmctl64 F -GLIBC_2.34 __sigtimedwait64 F -GLIBC_2.34 __stat64_time64 F -GLIBC_2.34 __thrd_sleep64 F -GLIBC_2.34 __time64 F -GLIBC_2.34 __timegm64 F -GLIBC_2.34 __timer_gettime64 F -GLIBC_2.34 __timer_settime64 F -GLIBC_2.34 __timerfd_gettime64 F -GLIBC_2.34 __timerfd_settime64 F -GLIBC_2.34 __timespec_get64 F -GLIBC_2.34 __timespec_getres64 F -GLIBC_2.34 __utime64 F -GLIBC_2.34 __utimensat64 F -GLIBC_2.34 __utimes64 F -GLIBC_2.34 __wait3_time64 F -GLIBC_2.34 __wait4_time64 F -GLIBC_2.34 _pthread_cleanup_pop F -GLIBC_2.34 _pthread_cleanup_push F -GLIBC_2.34 aio_cancel F -GLIBC_2.34 aio_cancel64 F -GLIBC_2.34 aio_error F -GLIBC_2.34 aio_error64 F -GLIBC_2.34 aio_fsync F -GLIBC_2.34 aio_fsync64 F -GLIBC_2.34 aio_init F -GLIBC_2.34 aio_read F -GLIBC_2.34 aio_read64 F -GLIBC_2.34 aio_return F -GLIBC_2.34 aio_return64 F -GLIBC_2.34 aio_suspend F -GLIBC_2.34 aio_suspend64 F -GLIBC_2.34 aio_write F -GLIBC_2.34 aio_write64 F -GLIBC_2.34 call_once F -GLIBC_2.34 close_range F -GLIBC_2.34 closefrom F -GLIBC_2.34 cnd_broadcast F -GLIBC_2.34 cnd_destroy F -GLIBC_2.34 cnd_init F -GLIBC_2.34 cnd_signal F -GLIBC_2.34 cnd_timedwait F -GLIBC_2.34 cnd_wait F -GLIBC_2.34 dladdr F -GLIBC_2.34 dladdr1 F -GLIBC_2.34 dlclose F -GLIBC_2.34 dlerror F -GLIBC_2.34 dlinfo F -GLIBC_2.34 dlmopen F -GLIBC_2.34 dlopen F -GLIBC_2.34 dlsym F -GLIBC_2.34 dlvsym F -GLIBC_2.34 dn_comp F -GLIBC_2.34 dn_expand F -GLIBC_2.34 dn_skipname F -GLIBC_2.34 execveat F -GLIBC_2.34 forkpty F -GLIBC_2.34 gai_cancel F -GLIBC_2.34 gai_error F -GLIBC_2.34 gai_suspend F -GLIBC_2.34 getaddrinfo_a F -GLIBC_2.34 lio_listio F -GLIBC_2.34 lio_listio64 F -GLIBC_2.34 login F -GLIBC_2.34 login_tty F -GLIBC_2.34 logout F -GLIBC_2.34 logwtmp F -GLIBC_2.34 mq_close F -GLIBC_2.34 mq_getattr F -GLIBC_2.34 mq_notify F -GLIBC_2.34 mq_open F -GLIBC_2.34 mq_receive F -GLIBC_2.34 mq_send F -GLIBC_2.34 mq_setattr F -GLIBC_2.34 mq_timedreceive F -GLIBC_2.34 mq_timedsend F -GLIBC_2.34 mq_unlink F -GLIBC_2.34 mtx_destroy F -GLIBC_2.34 mtx_init F -GLIBC_2.34 mtx_lock F -GLIBC_2.34 mtx_timedlock F -GLIBC_2.34 mtx_trylock F -GLIBC_2.34 mtx_unlock F -GLIBC_2.34 ns_name_compress F -GLIBC_2.34 ns_name_ntop F -GLIBC_2.34 ns_name_pack F -GLIBC_2.34 ns_name_pton F -GLIBC_2.34 ns_name_skip F -GLIBC_2.34 ns_name_uncompress F -GLIBC_2.34 ns_name_unpack F -GLIBC_2.34 openpty F -GLIBC_2.34 posix_spawn_file_actions_addclosefrom_np F -GLIBC_2.34 pthread_attr_getaffinity_np F -GLIBC_2.34 pthread_attr_getguardsize F -GLIBC_2.34 pthread_attr_getstack F -GLIBC_2.34 pthread_attr_getstackaddr F -GLIBC_2.34 pthread_attr_getstacksize F -GLIBC_2.34 pthread_attr_setguardsize F -GLIBC_2.34 pthread_attr_setstack F -GLIBC_2.34 pthread_attr_setstackaddr F -GLIBC_2.34 pthread_attr_setstacksize F -GLIBC_2.34 pthread_barrier_destroy F -GLIBC_2.34 pthread_barrier_init F -GLIBC_2.34 pthread_barrier_wait F -GLIBC_2.34 pthread_barrierattr_destroy F -GLIBC_2.34 pthread_barrierattr_getpshared F -GLIBC_2.34 pthread_barrierattr_init F -GLIBC_2.34 pthread_barrierattr_setpshared F -GLIBC_2.34 pthread_cancel F -GLIBC_2.34 pthread_clockjoin_np F -GLIBC_2.34 pthread_cond_clockwait F -GLIBC_2.34 pthread_condattr_getclock F -GLIBC_2.34 pthread_condattr_getpshared F -GLIBC_2.34 pthread_condattr_setclock F -GLIBC_2.34 pthread_condattr_setpshared F -GLIBC_2.34 pthread_create F -GLIBC_2.34 pthread_detach F -GLIBC_2.34 pthread_getattr_default_np F -GLIBC_2.34 pthread_getconcurrency F -GLIBC_2.34 pthread_getcpuclockid F -GLIBC_2.34 pthread_getname_np F -GLIBC_2.34 pthread_getspecific F -GLIBC_2.34 pthread_join F -GLIBC_2.34 pthread_key_create F -GLIBC_2.34 pthread_key_delete F -GLIBC_2.34 pthread_kill F -GLIBC_2.34 pthread_mutex_clocklock F -GLIBC_2.34 pthread_mutex_consistent F -GLIBC_2.34 pthread_mutex_getprioceiling F -GLIBC_2.34 pthread_mutex_setprioceiling F -GLIBC_2.34 pthread_mutex_timedlock F -GLIBC_2.34 pthread_mutex_trylock F -GLIBC_2.34 pthread_mutexattr_destroy F -GLIBC_2.34 pthread_mutexattr_getprioceiling F -GLIBC_2.34 pthread_mutexattr_getprotocol F -GLIBC_2.34 pthread_mutexattr_getpshared F -GLIBC_2.34 pthread_mutexattr_getrobust F -GLIBC_2.34 pthread_mutexattr_gettype F -GLIBC_2.34 pthread_mutexattr_init F -GLIBC_2.34 pthread_mutexattr_setprioceiling F -GLIBC_2.34 pthread_mutexattr_setprotocol F -GLIBC_2.34 pthread_mutexattr_setpshared F -GLIBC_2.34 pthread_mutexattr_setrobust F -GLIBC_2.34 pthread_mutexattr_settype F -GLIBC_2.34 pthread_once F -GLIBC_2.34 pthread_rwlock_clockrdlock F -GLIBC_2.34 pthread_rwlock_clockwrlock F -GLIBC_2.34 pthread_rwlock_destroy F -GLIBC_2.34 pthread_rwlock_init F -GLIBC_2.34 pthread_rwlock_rdlock F -GLIBC_2.34 pthread_rwlock_timedrdlock F -GLIBC_2.34 pthread_rwlock_timedwrlock F -GLIBC_2.34 pthread_rwlock_tryrdlock F -GLIBC_2.34 pthread_rwlock_trywrlock F -GLIBC_2.34 pthread_rwlock_unlock F -GLIBC_2.34 pthread_rwlock_wrlock F -GLIBC_2.34 pthread_rwlockattr_destroy F -GLIBC_2.34 pthread_rwlockattr_getkind_np F -GLIBC_2.34 pthread_rwlockattr_getpshared F -GLIBC_2.34 pthread_rwlockattr_init F -GLIBC_2.34 pthread_rwlockattr_setkind_np F -GLIBC_2.34 pthread_rwlockattr_setpshared F -GLIBC_2.34 pthread_setaffinity_np F -GLIBC_2.34 pthread_setattr_default_np F -GLIBC_2.34 pthread_setconcurrency F -GLIBC_2.34 pthread_setname_np F -GLIBC_2.34 pthread_setschedprio F -GLIBC_2.34 pthread_setspecific F -GLIBC_2.34 pthread_sigqueue F -GLIBC_2.34 pthread_spin_destroy F -GLIBC_2.34 pthread_spin_init F -GLIBC_2.34 pthread_spin_lock F -GLIBC_2.34 pthread_spin_trylock F -GLIBC_2.34 pthread_spin_unlock F -GLIBC_2.34 pthread_testcancel F -GLIBC_2.34 pthread_timedjoin_np F -GLIBC_2.34 pthread_tryjoin_np F -GLIBC_2.34 res_dnok F -GLIBC_2.34 res_hnok F -GLIBC_2.34 res_mailok F -GLIBC_2.34 res_mkquery F -GLIBC_2.34 res_nmkquery F -GLIBC_2.34 res_nquery F -GLIBC_2.34 res_nquerydomain F -GLIBC_2.34 res_nsearch F -GLIBC_2.34 res_nsend F -GLIBC_2.34 res_ownok F -GLIBC_2.34 res_query F -GLIBC_2.34 res_querydomain F -GLIBC_2.34 res_search F -GLIBC_2.34 res_send F -GLIBC_2.34 sem_clockwait F -GLIBC_2.34 sem_close F -GLIBC_2.34 sem_destroy F -GLIBC_2.34 sem_getvalue F -GLIBC_2.34 sem_init F -GLIBC_2.34 sem_open F -GLIBC_2.34 sem_post F -GLIBC_2.34 sem_timedwait F -GLIBC_2.34 sem_trywait F -GLIBC_2.34 sem_unlink F -GLIBC_2.34 sem_wait F -GLIBC_2.34 shm_open F -GLIBC_2.34 shm_unlink F -GLIBC_2.34 thrd_create F -GLIBC_2.34 thrd_detach F -GLIBC_2.34 thrd_exit F -GLIBC_2.34 thrd_join F -GLIBC_2.34 timer_create F -GLIBC_2.34 timer_delete F -GLIBC_2.34 timer_getoverrun F -GLIBC_2.34 timer_gettime F -GLIBC_2.34 timer_settime F -GLIBC_2.34 timespec_getres F -GLIBC_2.34 tss_create F -GLIBC_2.34 tss_delete F -GLIBC_2.34 tss_get F -GLIBC_2.34 tss_set F -GLIBC_2.35 __epoll_pwait2_time64 F -GLIBC_2.35 __memcmpeq F -GLIBC_2.35 _dl_find_object F -GLIBC_2.35 epoll_pwait2 F -GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F -GLIBC_2.36 arc4random F -GLIBC_2.36 arc4random_buf F -GLIBC_2.36 arc4random_uniform F -GLIBC_2.36 c8rtomb F -GLIBC_2.36 fsconfig F -GLIBC_2.36 fsmount F -GLIBC_2.36 fsopen F -GLIBC_2.36 fspick F -GLIBC_2.36 mbrtoc8 F -GLIBC_2.36 mount_setattr F -GLIBC_2.36 move_mount F -GLIBC_2.36 open_tree F -GLIBC_2.36 pidfd_getfd F -GLIBC_2.36 pidfd_open F -GLIBC_2.36 pidfd_send_signal F -GLIBC_2.36 process_madvise F -GLIBC_2.36 process_mrelease F -GLIBC_2.37 __ppoll64_chk F -GLIBC_2.38 __isoc23_fscanf F -GLIBC_2.38 __isoc23_fwscanf F -GLIBC_2.38 __isoc23_scanf F -GLIBC_2.38 __isoc23_sscanf F -GLIBC_2.38 __isoc23_strtoimax F -GLIBC_2.38 __isoc23_strtol F -GLIBC_2.38 __isoc23_strtol_l F -GLIBC_2.38 __isoc23_strtoll F -GLIBC_2.38 __isoc23_strtoll_l F -GLIBC_2.38 __isoc23_strtoul F -GLIBC_2.38 __isoc23_strtoul_l F -GLIBC_2.38 __isoc23_strtoull F -GLIBC_2.38 __isoc23_strtoull_l F -GLIBC_2.38 __isoc23_strtoumax F -GLIBC_2.38 __isoc23_swscanf F -GLIBC_2.38 __isoc23_vfscanf F -GLIBC_2.38 __isoc23_vfwscanf F -GLIBC_2.38 __isoc23_vscanf F -GLIBC_2.38 __isoc23_vsscanf F -GLIBC_2.38 __isoc23_vswscanf F -GLIBC_2.38 __isoc23_vwscanf F -GLIBC_2.38 __isoc23_wcstoimax F -GLIBC_2.38 __isoc23_wcstol F -GLIBC_2.38 __isoc23_wcstol_l F -GLIBC_2.38 __isoc23_wcstoll F -GLIBC_2.38 __isoc23_wcstoll_l F -GLIBC_2.38 __isoc23_wcstoul F -GLIBC_2.38 __isoc23_wcstoul_l F -GLIBC_2.38 __isoc23_wcstoull F -GLIBC_2.38 __isoc23_wcstoull_l F -GLIBC_2.38 __isoc23_wcstoumax F -GLIBC_2.38 __isoc23_wscanf F -GLIBC_2.38 __strlcat_chk F -GLIBC_2.38 __strlcpy_chk F -GLIBC_2.38 __wcslcat_chk F -GLIBC_2.38 __wcslcpy_chk F -GLIBC_2.38 strlcat F -GLIBC_2.38 strlcpy F -GLIBC_2.38 wcslcat F -GLIBC_2.38 wcslcpy F -GLIBC_2.39 pidfd_getpid F -GLIBC_2.39 pidfd_spawn F -GLIBC_2.39 pidfd_spawnp F -GLIBC_2.39 posix_spawnattr_getcgroup_np F -GLIBC_2.39 posix_spawnattr_setcgroup_np F -GLIBC_2.39 stdc_bit_ceil_uc F -GLIBC_2.39 stdc_bit_ceil_ui F -GLIBC_2.39 stdc_bit_ceil_ul F -GLIBC_2.39 stdc_bit_ceil_ull F -GLIBC_2.39 stdc_bit_ceil_us F -GLIBC_2.39 stdc_bit_floor_uc F -GLIBC_2.39 stdc_bit_floor_ui F -GLIBC_2.39 stdc_bit_floor_ul F -GLIBC_2.39 stdc_bit_floor_ull F -GLIBC_2.39 stdc_bit_floor_us F -GLIBC_2.39 stdc_bit_width_uc F -GLIBC_2.39 stdc_bit_width_ui F -GLIBC_2.39 stdc_bit_width_ul F -GLIBC_2.39 stdc_bit_width_ull F -GLIBC_2.39 stdc_bit_width_us F -GLIBC_2.39 stdc_count_ones_uc F -GLIBC_2.39 stdc_count_ones_ui F -GLIBC_2.39 stdc_count_ones_ul F -GLIBC_2.39 stdc_count_ones_ull F -GLIBC_2.39 stdc_count_ones_us F -GLIBC_2.39 stdc_count_zeros_uc F -GLIBC_2.39 stdc_count_zeros_ui F -GLIBC_2.39 stdc_count_zeros_ul F -GLIBC_2.39 stdc_count_zeros_ull F -GLIBC_2.39 stdc_count_zeros_us F -GLIBC_2.39 stdc_first_leading_one_uc F -GLIBC_2.39 stdc_first_leading_one_ui F -GLIBC_2.39 stdc_first_leading_one_ul F -GLIBC_2.39 stdc_first_leading_one_ull F -GLIBC_2.39 stdc_first_leading_one_us F -GLIBC_2.39 stdc_first_leading_zero_uc F -GLIBC_2.39 stdc_first_leading_zero_ui F -GLIBC_2.39 stdc_first_leading_zero_ul F -GLIBC_2.39 stdc_first_leading_zero_ull F -GLIBC_2.39 stdc_first_leading_zero_us F -GLIBC_2.39 stdc_first_trailing_one_uc F -GLIBC_2.39 stdc_first_trailing_one_ui F -GLIBC_2.39 stdc_first_trailing_one_ul F -GLIBC_2.39 stdc_first_trailing_one_ull F -GLIBC_2.39 stdc_first_trailing_one_us F -GLIBC_2.39 stdc_first_trailing_zero_uc F -GLIBC_2.39 stdc_first_trailing_zero_ui F -GLIBC_2.39 stdc_first_trailing_zero_ul F -GLIBC_2.39 stdc_first_trailing_zero_ull F -GLIBC_2.39 stdc_first_trailing_zero_us F -GLIBC_2.39 stdc_has_single_bit_uc F -GLIBC_2.39 stdc_has_single_bit_ui F -GLIBC_2.39 stdc_has_single_bit_ul F -GLIBC_2.39 stdc_has_single_bit_ull F -GLIBC_2.39 stdc_has_single_bit_us F -GLIBC_2.39 stdc_leading_ones_uc F -GLIBC_2.39 stdc_leading_ones_ui F -GLIBC_2.39 stdc_leading_ones_ul F -GLIBC_2.39 stdc_leading_ones_ull F -GLIBC_2.39 stdc_leading_ones_us F -GLIBC_2.39 stdc_leading_zeros_uc F -GLIBC_2.39 stdc_leading_zeros_ui F -GLIBC_2.39 stdc_leading_zeros_ul F -GLIBC_2.39 stdc_leading_zeros_ull F -GLIBC_2.39 stdc_leading_zeros_us F -GLIBC_2.39 stdc_trailing_ones_uc F -GLIBC_2.39 stdc_trailing_ones_ui F -GLIBC_2.39 stdc_trailing_ones_ul F -GLIBC_2.39 stdc_trailing_ones_ull F -GLIBC_2.39 stdc_trailing_ones_us F -GLIBC_2.39 stdc_trailing_zeros_uc F -GLIBC_2.39 stdc_trailing_zeros_ui F -GLIBC_2.39 stdc_trailing_zeros_ul F -GLIBC_2.39 stdc_trailing_zeros_ull F -GLIBC_2.39 stdc_trailing_zeros_us F diff --git a/sysdeps/unix/sysv/linux/nios2/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/nios2/libc_malloc_debug.abilist deleted file mode 100644 index de9a79a..0000000 --- a/sysdeps/unix/sysv/linux/nios2/libc_malloc_debug.abilist +++ /dev/null @@ -1,28 +0,0 @@ -GLIBC_2.21 __free_hook D 0x4 -GLIBC_2.21 __malloc_hook D 0x4 -GLIBC_2.21 __memalign_hook D 0x4 -GLIBC_2.21 __realloc_hook D 0x4 -GLIBC_2.21 aligned_alloc F -GLIBC_2.21 calloc F -GLIBC_2.21 free F -GLIBC_2.21 mallinfo F -GLIBC_2.21 malloc F -GLIBC_2.21 malloc_get_state F -GLIBC_2.21 malloc_info F -GLIBC_2.21 malloc_set_state F -GLIBC_2.21 malloc_stats F -GLIBC_2.21 malloc_trim F -GLIBC_2.21 malloc_usable_size F -GLIBC_2.21 mallopt F -GLIBC_2.21 mcheck F -GLIBC_2.21 mcheck_check_all F -GLIBC_2.21 mcheck_pedantic F -GLIBC_2.21 memalign F -GLIBC_2.21 mprobe F -GLIBC_2.21 mtrace F -GLIBC_2.21 muntrace F -GLIBC_2.21 posix_memalign F -GLIBC_2.21 pvalloc F -GLIBC_2.21 realloc F -GLIBC_2.21 valloc F -GLIBC_2.33 mallinfo2 F diff --git a/sysdeps/unix/sysv/linux/nios2/libdl.abilist b/sysdeps/unix/sysv/linux/nios2/libdl.abilist deleted file mode 100644 index 70efb87..0000000 --- a/sysdeps/unix/sysv/linux/nios2/libdl.abilist +++ /dev/null @@ -1 +0,0 @@ -GLIBC_2.21 __libdl_version_placeholder F diff --git a/sysdeps/unix/sysv/linux/nios2/libm.abilist b/sysdeps/unix/sysv/linux/nios2/libm.abilist deleted file mode 100644 index c0df77f..0000000 --- a/sysdeps/unix/sysv/linux/nios2/libm.abilist +++ /dev/null @@ -1,880 +0,0 @@ -GLIBC_2.21 _LIB_VERSION D 0x4 -GLIBC_2.21 __acos_finite F -GLIBC_2.21 __acosf_finite F -GLIBC_2.21 __acosh_finite F -GLIBC_2.21 __acoshf_finite F -GLIBC_2.21 __asin_finite F -GLIBC_2.21 __asinf_finite F -GLIBC_2.21 __atan2_finite F -GLIBC_2.21 __atan2f_finite F -GLIBC_2.21 __atanh_finite F -GLIBC_2.21 __atanhf_finite F -GLIBC_2.21 __clog10 F -GLIBC_2.21 __clog10f F -GLIBC_2.21 __clog10l F -GLIBC_2.21 __cosh_finite F -GLIBC_2.21 __coshf_finite F -GLIBC_2.21 __exp10_finite F -GLIBC_2.21 __exp10f_finite F -GLIBC_2.21 __exp2_finite F -GLIBC_2.21 __exp2f_finite F -GLIBC_2.21 __exp_finite F -GLIBC_2.21 __expf_finite F -GLIBC_2.21 __finite F -GLIBC_2.21 __finitef F -GLIBC_2.21 __finitel F -GLIBC_2.21 __fmod_finite F -GLIBC_2.21 __fmodf_finite F -GLIBC_2.21 __fpclassify F -GLIBC_2.21 __fpclassifyf F -GLIBC_2.21 __gamma_r_finite F -GLIBC_2.21 __gammaf_r_finite F -GLIBC_2.21 __hypot_finite F -GLIBC_2.21 __hypotf_finite F -GLIBC_2.21 __issignaling F -GLIBC_2.21 __issignalingf F -GLIBC_2.21 __j0_finite F -GLIBC_2.21 __j0f_finite F -GLIBC_2.21 __j1_finite F -GLIBC_2.21 __j1f_finite F -GLIBC_2.21 __jn_finite F -GLIBC_2.21 __jnf_finite F -GLIBC_2.21 __lgamma_r_finite F -GLIBC_2.21 __lgammaf_r_finite F -GLIBC_2.21 __log10_finite F -GLIBC_2.21 __log10f_finite F -GLIBC_2.21 __log2_finite F -GLIBC_2.21 __log2f_finite F -GLIBC_2.21 __log_finite F -GLIBC_2.21 __logf_finite F -GLIBC_2.21 __pow_finite F -GLIBC_2.21 __powf_finite F -GLIBC_2.21 __remainder_finite F -GLIBC_2.21 __remainderf_finite F -GLIBC_2.21 __scalb_finite F -GLIBC_2.21 __scalbf_finite F -GLIBC_2.21 __signbit F -GLIBC_2.21 __signbitf F -GLIBC_2.21 __sinh_finite F -GLIBC_2.21 __sinhf_finite F -GLIBC_2.21 __sqrt_finite F -GLIBC_2.21 __sqrtf_finite F -GLIBC_2.21 __y0_finite F -GLIBC_2.21 __y0f_finite F -GLIBC_2.21 __y1_finite F -GLIBC_2.21 __y1f_finite F -GLIBC_2.21 __yn_finite F -GLIBC_2.21 __ynf_finite F -GLIBC_2.21 acos F -GLIBC_2.21 acosf F -GLIBC_2.21 acosh F -GLIBC_2.21 acoshf F -GLIBC_2.21 acoshl F -GLIBC_2.21 acosl F -GLIBC_2.21 asin F -GLIBC_2.21 asinf F -GLIBC_2.21 asinh F -GLIBC_2.21 asinhf F -GLIBC_2.21 asinhl F -GLIBC_2.21 asinl F -GLIBC_2.21 atan F -GLIBC_2.21 atan2 F -GLIBC_2.21 atan2f F -GLIBC_2.21 atan2l F -GLIBC_2.21 atanf F -GLIBC_2.21 atanh F -GLIBC_2.21 atanhf F -GLIBC_2.21 atanhl F -GLIBC_2.21 atanl F -GLIBC_2.21 cabs F -GLIBC_2.21 cabsf F -GLIBC_2.21 cabsl F -GLIBC_2.21 cacos F -GLIBC_2.21 cacosf F -GLIBC_2.21 cacosh F -GLIBC_2.21 cacoshf F -GLIBC_2.21 cacoshl F -GLIBC_2.21 cacosl F -GLIBC_2.21 carg F -GLIBC_2.21 cargf F -GLIBC_2.21 cargl F -GLIBC_2.21 casin F -GLIBC_2.21 casinf F -GLIBC_2.21 casinh F -GLIBC_2.21 casinhf F -GLIBC_2.21 casinhl F -GLIBC_2.21 casinl F -GLIBC_2.21 catan F -GLIBC_2.21 catanf F -GLIBC_2.21 catanh F -GLIBC_2.21 catanhf F -GLIBC_2.21 catanhl F -GLIBC_2.21 catanl F -GLIBC_2.21 cbrt F -GLIBC_2.21 cbrtf F -GLIBC_2.21 cbrtl F -GLIBC_2.21 ccos F -GLIBC_2.21 ccosf F -GLIBC_2.21 ccosh F -GLIBC_2.21 ccoshf F -GLIBC_2.21 ccoshl F -GLIBC_2.21 ccosl F -GLIBC_2.21 ceil F -GLIBC_2.21 ceilf F -GLIBC_2.21 ceill F -GLIBC_2.21 cexp F -GLIBC_2.21 cexpf F -GLIBC_2.21 cexpl F -GLIBC_2.21 cimag F -GLIBC_2.21 cimagf F -GLIBC_2.21 cimagl F -GLIBC_2.21 clog F -GLIBC_2.21 clog10 F -GLIBC_2.21 clog10f F -GLIBC_2.21 clog10l F -GLIBC_2.21 clogf F -GLIBC_2.21 clogl F -GLIBC_2.21 conj F -GLIBC_2.21 conjf F -GLIBC_2.21 conjl F -GLIBC_2.21 copysign F -GLIBC_2.21 copysignf F -GLIBC_2.21 copysignl F -GLIBC_2.21 cos F -GLIBC_2.21 cosf F -GLIBC_2.21 cosh F -GLIBC_2.21 coshf F -GLIBC_2.21 coshl F -GLIBC_2.21 cosl F -GLIBC_2.21 cpow F -GLIBC_2.21 cpowf F -GLIBC_2.21 cpowl F -GLIBC_2.21 cproj F -GLIBC_2.21 cprojf F -GLIBC_2.21 cprojl F -GLIBC_2.21 creal F -GLIBC_2.21 crealf F -GLIBC_2.21 creall F -GLIBC_2.21 csin F -GLIBC_2.21 csinf F -GLIBC_2.21 csinh F -GLIBC_2.21 csinhf F -GLIBC_2.21 csinhl F -GLIBC_2.21 csinl F -GLIBC_2.21 csqrt F -GLIBC_2.21 csqrtf F -GLIBC_2.21 csqrtl F -GLIBC_2.21 ctan F -GLIBC_2.21 ctanf F -GLIBC_2.21 ctanh F -GLIBC_2.21 ctanhf F -GLIBC_2.21 ctanhl F -GLIBC_2.21 ctanl F -GLIBC_2.21 drem F -GLIBC_2.21 dremf F -GLIBC_2.21 dreml F -GLIBC_2.21 erf F -GLIBC_2.21 erfc F -GLIBC_2.21 erfcf F -GLIBC_2.21 erfcl F -GLIBC_2.21 erff F -GLIBC_2.21 erfl F -GLIBC_2.21 exp F -GLIBC_2.21 exp10 F -GLIBC_2.21 exp10f F -GLIBC_2.21 exp10l F -GLIBC_2.21 exp2 F -GLIBC_2.21 exp2f F -GLIBC_2.21 exp2l F -GLIBC_2.21 expf F -GLIBC_2.21 expl F -GLIBC_2.21 expm1 F -GLIBC_2.21 expm1f F -GLIBC_2.21 expm1l F -GLIBC_2.21 fabs F -GLIBC_2.21 fabsf F -GLIBC_2.21 fabsl F -GLIBC_2.21 fdim F -GLIBC_2.21 fdimf F -GLIBC_2.21 fdiml F -GLIBC_2.21 feclearexcept F -GLIBC_2.21 fedisableexcept F -GLIBC_2.21 feenableexcept F -GLIBC_2.21 fegetenv F -GLIBC_2.21 fegetexcept F -GLIBC_2.21 fegetexceptflag F -GLIBC_2.21 fegetround F -GLIBC_2.21 feholdexcept F -GLIBC_2.21 feraiseexcept F -GLIBC_2.21 fesetenv F -GLIBC_2.21 fesetexceptflag F -GLIBC_2.21 fesetround F -GLIBC_2.21 fetestexcept F -GLIBC_2.21 feupdateenv F -GLIBC_2.21 finite F -GLIBC_2.21 finitef F -GLIBC_2.21 finitel F -GLIBC_2.21 floor F -GLIBC_2.21 floorf F -GLIBC_2.21 floorl F -GLIBC_2.21 fma F -GLIBC_2.21 fmaf F -GLIBC_2.21 fmal F -GLIBC_2.21 fmax F -GLIBC_2.21 fmaxf F -GLIBC_2.21 fmaxl F -GLIBC_2.21 fmin F -GLIBC_2.21 fminf F -GLIBC_2.21 fminl F -GLIBC_2.21 fmod F -GLIBC_2.21 fmodf F -GLIBC_2.21 fmodl F -GLIBC_2.21 frexp F -GLIBC_2.21 frexpf F -GLIBC_2.21 frexpl F -GLIBC_2.21 gamma F -GLIBC_2.21 gammaf F -GLIBC_2.21 gammal F -GLIBC_2.21 hypot F -GLIBC_2.21 hypotf F -GLIBC_2.21 hypotl F -GLIBC_2.21 ilogb F -GLIBC_2.21 ilogbf F -GLIBC_2.21 ilogbl F -GLIBC_2.21 j0 F -GLIBC_2.21 j0f F -GLIBC_2.21 j0l F -GLIBC_2.21 j1 F -GLIBC_2.21 j1f F -GLIBC_2.21 j1l F -GLIBC_2.21 jn F -GLIBC_2.21 jnf F -GLIBC_2.21 jnl F -GLIBC_2.21 ldexp F -GLIBC_2.21 ldexpf F -GLIBC_2.21 ldexpl F -GLIBC_2.21 lgamma F -GLIBC_2.21 lgamma_r F -GLIBC_2.21 lgammaf F -GLIBC_2.21 lgammaf_r F -GLIBC_2.21 lgammal F -GLIBC_2.21 lgammal_r F -GLIBC_2.21 llrint F -GLIBC_2.21 llrintf F -GLIBC_2.21 llrintl F -GLIBC_2.21 llround F -GLIBC_2.21 llroundf F -GLIBC_2.21 llroundl F -GLIBC_2.21 log F -GLIBC_2.21 log10 F -GLIBC_2.21 log10f F -GLIBC_2.21 log10l F -GLIBC_2.21 log1p F -GLIBC_2.21 log1pf F -GLIBC_2.21 log1pl F -GLIBC_2.21 log2 F -GLIBC_2.21 log2f F -GLIBC_2.21 log2l F -GLIBC_2.21 logb F -GLIBC_2.21 logbf F -GLIBC_2.21 logbl F -GLIBC_2.21 logf F -GLIBC_2.21 logl F -GLIBC_2.21 lrint F -GLIBC_2.21 lrintf F -GLIBC_2.21 lrintl F -GLIBC_2.21 lround F -GLIBC_2.21 lroundf F -GLIBC_2.21 lroundl F -GLIBC_2.21 matherr F -GLIBC_2.21 modf F -GLIBC_2.21 modff F -GLIBC_2.21 modfl F -GLIBC_2.21 nan F -GLIBC_2.21 nanf F -GLIBC_2.21 nanl F -GLIBC_2.21 nearbyint F -GLIBC_2.21 nearbyintf F -GLIBC_2.21 nearbyintl F -GLIBC_2.21 nextafter F -GLIBC_2.21 nextafterf F -GLIBC_2.21 nextafterl F -GLIBC_2.21 nexttoward F -GLIBC_2.21 nexttowardf F -GLIBC_2.21 nexttowardl F -GLIBC_2.21 pow F -GLIBC_2.21 pow10 F -GLIBC_2.21 pow10f F -GLIBC_2.21 pow10l F -GLIBC_2.21 powf F -GLIBC_2.21 powl F -GLIBC_2.21 remainder F -GLIBC_2.21 remainderf F -GLIBC_2.21 remainderl F -GLIBC_2.21 remquo F -GLIBC_2.21 remquof F -GLIBC_2.21 remquol F -GLIBC_2.21 rint F -GLIBC_2.21 rintf F -GLIBC_2.21 rintl F -GLIBC_2.21 round F -GLIBC_2.21 roundf F -GLIBC_2.21 roundl F -GLIBC_2.21 scalb F -GLIBC_2.21 scalbf F -GLIBC_2.21 scalbl F -GLIBC_2.21 scalbln F -GLIBC_2.21 scalblnf F -GLIBC_2.21 scalblnl F -GLIBC_2.21 scalbn F -GLIBC_2.21 scalbnf F -GLIBC_2.21 scalbnl F -GLIBC_2.21 signgam D 0x4 -GLIBC_2.21 significand F -GLIBC_2.21 significandf F -GLIBC_2.21 significandl F -GLIBC_2.21 sin F -GLIBC_2.21 sincos F -GLIBC_2.21 sincosf F -GLIBC_2.21 sincosl F -GLIBC_2.21 sinf F -GLIBC_2.21 sinh F -GLIBC_2.21 sinhf F -GLIBC_2.21 sinhl F -GLIBC_2.21 sinl F -GLIBC_2.21 sqrt F -GLIBC_2.21 sqrtf F -GLIBC_2.21 sqrtl F -GLIBC_2.21 tan F -GLIBC_2.21 tanf F -GLIBC_2.21 tanh F -GLIBC_2.21 tanhf F -GLIBC_2.21 tanhl F -GLIBC_2.21 tanl F -GLIBC_2.21 tgamma F -GLIBC_2.21 tgammaf F -GLIBC_2.21 tgammal F -GLIBC_2.21 trunc F -GLIBC_2.21 truncf F -GLIBC_2.21 truncl F -GLIBC_2.21 y0 F -GLIBC_2.21 y0f F -GLIBC_2.21 y0l F -GLIBC_2.21 y1 F -GLIBC_2.21 y1f F -GLIBC_2.21 y1l F -GLIBC_2.21 yn F -GLIBC_2.21 ynf F -GLIBC_2.21 ynl F -GLIBC_2.23 __signgam D 0x4 -GLIBC_2.23 lgamma F -GLIBC_2.23 lgammaf F -GLIBC_2.23 lgammal F -GLIBC_2.24 nextdown F -GLIBC_2.24 nextdownf F -GLIBC_2.24 nextdownl F -GLIBC_2.24 nextup F -GLIBC_2.24 nextupf F -GLIBC_2.24 nextupl F -GLIBC_2.25 __iseqsig F -GLIBC_2.25 __iseqsigf F -GLIBC_2.25 canonicalize F -GLIBC_2.25 canonicalizef F -GLIBC_2.25 canonicalizel F -GLIBC_2.25 fegetmode F -GLIBC_2.25 fesetexcept F -GLIBC_2.25 fesetmode F -GLIBC_2.25 fetestexceptflag F -GLIBC_2.25 fmaxmag F -GLIBC_2.25 fmaxmagf F -GLIBC_2.25 fmaxmagl F -GLIBC_2.25 fminmag F -GLIBC_2.25 fminmagf F -GLIBC_2.25 fminmagl F -GLIBC_2.25 fromfp F -GLIBC_2.25 fromfpf F -GLIBC_2.25 fromfpl F -GLIBC_2.25 fromfpx F -GLIBC_2.25 fromfpxf F -GLIBC_2.25 fromfpxl F -GLIBC_2.25 getpayload F -GLIBC_2.25 getpayloadf F -GLIBC_2.25 getpayloadl F -GLIBC_2.25 llogb F -GLIBC_2.25 llogbf F -GLIBC_2.25 llogbl F -GLIBC_2.25 roundeven F -GLIBC_2.25 roundevenf F -GLIBC_2.25 roundevenl F -GLIBC_2.25 setpayload F -GLIBC_2.25 setpayloadf F -GLIBC_2.25 setpayloadl F -GLIBC_2.25 setpayloadsig F -GLIBC_2.25 setpayloadsigf F -GLIBC_2.25 setpayloadsigl F -GLIBC_2.25 totalorder F -GLIBC_2.25 totalorderf F -GLIBC_2.25 totalorderl F -GLIBC_2.25 totalordermag F -GLIBC_2.25 totalordermagf F -GLIBC_2.25 totalordermagl F -GLIBC_2.25 ufromfp F -GLIBC_2.25 ufromfpf F -GLIBC_2.25 ufromfpl F -GLIBC_2.25 ufromfpx F -GLIBC_2.25 ufromfpxf F -GLIBC_2.25 ufromfpxl F -GLIBC_2.27 acosf32 F -GLIBC_2.27 acosf32x F -GLIBC_2.27 acosf64 F -GLIBC_2.27 acoshf32 F -GLIBC_2.27 acoshf32x F -GLIBC_2.27 acoshf64 F -GLIBC_2.27 asinf32 F -GLIBC_2.27 asinf32x F -GLIBC_2.27 asinf64 F -GLIBC_2.27 asinhf32 F -GLIBC_2.27 asinhf32x F -GLIBC_2.27 asinhf64 F -GLIBC_2.27 atan2f32 F -GLIBC_2.27 atan2f32x F -GLIBC_2.27 atan2f64 F -GLIBC_2.27 atanf32 F -GLIBC_2.27 atanf32x F -GLIBC_2.27 atanf64 F -GLIBC_2.27 atanhf32 F -GLIBC_2.27 atanhf32x F -GLIBC_2.27 atanhf64 F -GLIBC_2.27 cabsf32 F -GLIBC_2.27 cabsf32x F -GLIBC_2.27 cabsf64 F -GLIBC_2.27 cacosf32 F -GLIBC_2.27 cacosf32x F -GLIBC_2.27 cacosf64 F -GLIBC_2.27 cacoshf32 F -GLIBC_2.27 cacoshf32x F -GLIBC_2.27 cacoshf64 F -GLIBC_2.27 canonicalizef32 F -GLIBC_2.27 canonicalizef32x F -GLIBC_2.27 canonicalizef64 F -GLIBC_2.27 cargf32 F -GLIBC_2.27 cargf32x F -GLIBC_2.27 cargf64 F -GLIBC_2.27 casinf32 F -GLIBC_2.27 casinf32x F -GLIBC_2.27 casinf64 F -GLIBC_2.27 casinhf32 F -GLIBC_2.27 casinhf32x F -GLIBC_2.27 casinhf64 F -GLIBC_2.27 catanf32 F -GLIBC_2.27 catanf32x F -GLIBC_2.27 catanf64 F -GLIBC_2.27 catanhf32 F -GLIBC_2.27 catanhf32x F -GLIBC_2.27 catanhf64 F -GLIBC_2.27 cbrtf32 F -GLIBC_2.27 cbrtf32x F -GLIBC_2.27 cbrtf64 F -GLIBC_2.27 ccosf32 F -GLIBC_2.27 ccosf32x F -GLIBC_2.27 ccosf64 F -GLIBC_2.27 ccoshf32 F -GLIBC_2.27 ccoshf32x F -GLIBC_2.27 ccoshf64 F -GLIBC_2.27 ceilf32 F -GLIBC_2.27 ceilf32x F -GLIBC_2.27 ceilf64 F -GLIBC_2.27 cexpf32 F -GLIBC_2.27 cexpf32x F -GLIBC_2.27 cexpf64 F -GLIBC_2.27 cimagf32 F -GLIBC_2.27 cimagf32x F -GLIBC_2.27 cimagf64 F -GLIBC_2.27 clog10f32 F -GLIBC_2.27 clog10f32x F -GLIBC_2.27 clog10f64 F -GLIBC_2.27 clogf32 F -GLIBC_2.27 clogf32x F -GLIBC_2.27 clogf64 F -GLIBC_2.27 conjf32 F -GLIBC_2.27 conjf32x F -GLIBC_2.27 conjf64 F -GLIBC_2.27 copysignf32 F -GLIBC_2.27 copysignf32x F -GLIBC_2.27 copysignf64 F -GLIBC_2.27 cosf32 F -GLIBC_2.27 cosf32x F -GLIBC_2.27 cosf64 F -GLIBC_2.27 coshf32 F -GLIBC_2.27 coshf32x F -GLIBC_2.27 coshf64 F -GLIBC_2.27 cpowf32 F -GLIBC_2.27 cpowf32x F -GLIBC_2.27 cpowf64 F -GLIBC_2.27 cprojf32 F -GLIBC_2.27 cprojf32x F -GLIBC_2.27 cprojf64 F -GLIBC_2.27 crealf32 F -GLIBC_2.27 crealf32x F -GLIBC_2.27 crealf64 F -GLIBC_2.27 csinf32 F -GLIBC_2.27 csinf32x F -GLIBC_2.27 csinf64 F -GLIBC_2.27 csinhf32 F -GLIBC_2.27 csinhf32x F -GLIBC_2.27 csinhf64 F -GLIBC_2.27 csqrtf32 F -GLIBC_2.27 csqrtf32x F -GLIBC_2.27 csqrtf64 F -GLIBC_2.27 ctanf32 F -GLIBC_2.27 ctanf32x F -GLIBC_2.27 ctanf64 F -GLIBC_2.27 ctanhf32 F -GLIBC_2.27 ctanhf32x F -GLIBC_2.27 ctanhf64 F -GLIBC_2.27 erfcf32 F -GLIBC_2.27 erfcf32x F -GLIBC_2.27 erfcf64 F -GLIBC_2.27 erff32 F -GLIBC_2.27 erff32x F -GLIBC_2.27 erff64 F -GLIBC_2.27 exp10f32 F -GLIBC_2.27 exp10f32x F -GLIBC_2.27 exp10f64 F -GLIBC_2.27 exp2f F -GLIBC_2.27 exp2f32 F -GLIBC_2.27 exp2f32x F -GLIBC_2.27 exp2f64 F -GLIBC_2.27 expf F -GLIBC_2.27 expf32 F -GLIBC_2.27 expf32x F -GLIBC_2.27 expf64 F -GLIBC_2.27 expm1f32 F -GLIBC_2.27 expm1f32x F -GLIBC_2.27 expm1f64 F -GLIBC_2.27 fabsf32 F -GLIBC_2.27 fabsf32x F -GLIBC_2.27 fabsf64 F -GLIBC_2.27 fdimf32 F -GLIBC_2.27 fdimf32x F -GLIBC_2.27 fdimf64 F -GLIBC_2.27 floorf32 F -GLIBC_2.27 floorf32x F -GLIBC_2.27 floorf64 F -GLIBC_2.27 fmaf32 F -GLIBC_2.27 fmaf32x F -GLIBC_2.27 fmaf64 F -GLIBC_2.27 fmaxf32 F -GLIBC_2.27 fmaxf32x F -GLIBC_2.27 fmaxf64 F -GLIBC_2.27 fmaxmagf32 F -GLIBC_2.27 fmaxmagf32x F -GLIBC_2.27 fmaxmagf64 F -GLIBC_2.27 fminf32 F -GLIBC_2.27 fminf32x F -GLIBC_2.27 fminf64 F -GLIBC_2.27 fminmagf32 F -GLIBC_2.27 fminmagf32x F -GLIBC_2.27 fminmagf64 F -GLIBC_2.27 fmodf32 F -GLIBC_2.27 fmodf32x F -GLIBC_2.27 fmodf64 F -GLIBC_2.27 frexpf32 F -GLIBC_2.27 frexpf32x F -GLIBC_2.27 frexpf64 F -GLIBC_2.27 fromfpf32 F -GLIBC_2.27 fromfpf32x F -GLIBC_2.27 fromfpf64 F -GLIBC_2.27 fromfpxf32 F -GLIBC_2.27 fromfpxf32x F -GLIBC_2.27 fromfpxf64 F -GLIBC_2.27 getpayloadf32 F -GLIBC_2.27 getpayloadf32x F -GLIBC_2.27 getpayloadf64 F -GLIBC_2.27 hypotf32 F -GLIBC_2.27 hypotf32x F -GLIBC_2.27 hypotf64 F -GLIBC_2.27 ilogbf32 F -GLIBC_2.27 ilogbf32x F -GLIBC_2.27 ilogbf64 F -GLIBC_2.27 j0f32 F -GLIBC_2.27 j0f32x F -GLIBC_2.27 j0f64 F -GLIBC_2.27 j1f32 F -GLIBC_2.27 j1f32x F -GLIBC_2.27 j1f64 F -GLIBC_2.27 jnf32 F -GLIBC_2.27 jnf32x F -GLIBC_2.27 jnf64 F -GLIBC_2.27 ldexpf32 F -GLIBC_2.27 ldexpf32x F -GLIBC_2.27 ldexpf64 F -GLIBC_2.27 lgammaf32 F -GLIBC_2.27 lgammaf32_r F -GLIBC_2.27 lgammaf32x F -GLIBC_2.27 lgammaf32x_r F -GLIBC_2.27 lgammaf64 F -GLIBC_2.27 lgammaf64_r F -GLIBC_2.27 llogbf32 F -GLIBC_2.27 llogbf32x F -GLIBC_2.27 llogbf64 F -GLIBC_2.27 llrintf32 F -GLIBC_2.27 llrintf32x F -GLIBC_2.27 llrintf64 F -GLIBC_2.27 llroundf32 F -GLIBC_2.27 llroundf32x F -GLIBC_2.27 llroundf64 F -GLIBC_2.27 log10f32 F -GLIBC_2.27 log10f32x F -GLIBC_2.27 log10f64 F -GLIBC_2.27 log1pf32 F -GLIBC_2.27 log1pf32x F -GLIBC_2.27 log1pf64 F -GLIBC_2.27 log2f F -GLIBC_2.27 log2f32 F -GLIBC_2.27 log2f32x F -GLIBC_2.27 log2f64 F -GLIBC_2.27 logbf32 F -GLIBC_2.27 logbf32x F -GLIBC_2.27 logbf64 F -GLIBC_2.27 logf F -GLIBC_2.27 logf32 F -GLIBC_2.27 logf32x F -GLIBC_2.27 logf64 F -GLIBC_2.27 lrintf32 F -GLIBC_2.27 lrintf32x F -GLIBC_2.27 lrintf64 F -GLIBC_2.27 lroundf32 F -GLIBC_2.27 lroundf32x F -GLIBC_2.27 lroundf64 F -GLIBC_2.27 modff32 F -GLIBC_2.27 modff32x F -GLIBC_2.27 modff64 F -GLIBC_2.27 nanf32 F -GLIBC_2.27 nanf32x F -GLIBC_2.27 nanf64 F -GLIBC_2.27 nearbyintf32 F -GLIBC_2.27 nearbyintf32x F -GLIBC_2.27 nearbyintf64 F -GLIBC_2.27 nextafterf32 F -GLIBC_2.27 nextafterf32x F -GLIBC_2.27 nextafterf64 F -GLIBC_2.27 nextdownf32 F -GLIBC_2.27 nextdownf32x F -GLIBC_2.27 nextdownf64 F -GLIBC_2.27 nextupf32 F -GLIBC_2.27 nextupf32x F -GLIBC_2.27 nextupf64 F -GLIBC_2.27 powf F -GLIBC_2.27 powf32 F -GLIBC_2.27 powf32x F -GLIBC_2.27 powf64 F -GLIBC_2.27 remainderf32 F -GLIBC_2.27 remainderf32x F -GLIBC_2.27 remainderf64 F -GLIBC_2.27 remquof32 F -GLIBC_2.27 remquof32x F -GLIBC_2.27 remquof64 F -GLIBC_2.27 rintf32 F -GLIBC_2.27 rintf32x F -GLIBC_2.27 rintf64 F -GLIBC_2.27 roundevenf32 F -GLIBC_2.27 roundevenf32x F -GLIBC_2.27 roundevenf64 F -GLIBC_2.27 roundf32 F -GLIBC_2.27 roundf32x F -GLIBC_2.27 roundf64 F -GLIBC_2.27 scalblnf32 F -GLIBC_2.27 scalblnf32x F -GLIBC_2.27 scalblnf64 F -GLIBC_2.27 scalbnf32 F -GLIBC_2.27 scalbnf32x F -GLIBC_2.27 scalbnf64 F -GLIBC_2.27 setpayloadf32 F -GLIBC_2.27 setpayloadf32x F -GLIBC_2.27 setpayloadf64 F -GLIBC_2.27 setpayloadsigf32 F -GLIBC_2.27 setpayloadsigf32x F -GLIBC_2.27 setpayloadsigf64 F -GLIBC_2.27 sincosf32 F -GLIBC_2.27 sincosf32x F -GLIBC_2.27 sincosf64 F -GLIBC_2.27 sinf32 F -GLIBC_2.27 sinf32x F -GLIBC_2.27 sinf64 F -GLIBC_2.27 sinhf32 F -GLIBC_2.27 sinhf32x F -GLIBC_2.27 sinhf64 F -GLIBC_2.27 sqrtf32 F -GLIBC_2.27 sqrtf32x F -GLIBC_2.27 sqrtf64 F -GLIBC_2.27 tanf32 F -GLIBC_2.27 tanf32x F -GLIBC_2.27 tanf64 F -GLIBC_2.27 tanhf32 F -GLIBC_2.27 tanhf32x F -GLIBC_2.27 tanhf64 F -GLIBC_2.27 tgammaf32 F -GLIBC_2.27 tgammaf32x F -GLIBC_2.27 tgammaf64 F -GLIBC_2.27 totalorderf32 F -GLIBC_2.27 totalorderf32x F -GLIBC_2.27 totalorderf64 F -GLIBC_2.27 totalordermagf32 F -GLIBC_2.27 totalordermagf32x F -GLIBC_2.27 totalordermagf64 F -GLIBC_2.27 truncf32 F -GLIBC_2.27 truncf32x F -GLIBC_2.27 truncf64 F -GLIBC_2.27 ufromfpf32 F -GLIBC_2.27 ufromfpf32x F -GLIBC_2.27 ufromfpf64 F -GLIBC_2.27 ufromfpxf32 F -GLIBC_2.27 ufromfpxf32x F -GLIBC_2.27 ufromfpxf64 F -GLIBC_2.27 y0f32 F -GLIBC_2.27 y0f32x F -GLIBC_2.27 y0f64 F -GLIBC_2.27 y1f32 F -GLIBC_2.27 y1f32x F -GLIBC_2.27 y1f64 F -GLIBC_2.27 ynf32 F -GLIBC_2.27 ynf32x F -GLIBC_2.27 ynf64 F -GLIBC_2.28 daddl F -GLIBC_2.28 ddivl F -GLIBC_2.28 dmull F -GLIBC_2.28 dsubl F -GLIBC_2.28 f32addf32x F -GLIBC_2.28 f32addf64 F -GLIBC_2.28 f32divf32x F -GLIBC_2.28 f32divf64 F -GLIBC_2.28 f32mulf32x F -GLIBC_2.28 f32mulf64 F -GLIBC_2.28 f32subf32x F -GLIBC_2.28 f32subf64 F -GLIBC_2.28 f32xaddf64 F -GLIBC_2.28 f32xdivf64 F -GLIBC_2.28 f32xmulf64 F -GLIBC_2.28 f32xsubf64 F -GLIBC_2.28 fadd F -GLIBC_2.28 faddl F -GLIBC_2.28 fdiv F -GLIBC_2.28 fdivl F -GLIBC_2.28 fmul F -GLIBC_2.28 fmull F -GLIBC_2.28 fsub F -GLIBC_2.28 fsubl F -GLIBC_2.29 exp F -GLIBC_2.29 exp2 F -GLIBC_2.29 log F -GLIBC_2.29 log2 F -GLIBC_2.29 pow F -GLIBC_2.31 totalorder F -GLIBC_2.31 totalorderf F -GLIBC_2.31 totalorderf32 F -GLIBC_2.31 totalorderf32x F -GLIBC_2.31 totalorderf64 F -GLIBC_2.31 totalorderl F -GLIBC_2.31 totalordermag F -GLIBC_2.31 totalordermagf F -GLIBC_2.31 totalordermagf32 F -GLIBC_2.31 totalordermagf32x F -GLIBC_2.31 totalordermagf64 F -GLIBC_2.31 totalordermagl F -GLIBC_2.32 exp10f F -GLIBC_2.35 dfmal F -GLIBC_2.35 dsqrtl F -GLIBC_2.35 f32fmaf32x F -GLIBC_2.35 f32fmaf64 F -GLIBC_2.35 f32sqrtf32x F -GLIBC_2.35 f32sqrtf64 F -GLIBC_2.35 f32xfmaf64 F -GLIBC_2.35 f32xsqrtf64 F -GLIBC_2.35 ffma F -GLIBC_2.35 ffmal F -GLIBC_2.35 fmaximum F -GLIBC_2.35 fmaximum_mag F -GLIBC_2.35 fmaximum_mag_num F -GLIBC_2.35 fmaximum_mag_numf F -GLIBC_2.35 fmaximum_mag_numf32 F -GLIBC_2.35 fmaximum_mag_numf32x F -GLIBC_2.35 fmaximum_mag_numf64 F -GLIBC_2.35 fmaximum_mag_numl F -GLIBC_2.35 fmaximum_magf F -GLIBC_2.35 fmaximum_magf32 F -GLIBC_2.35 fmaximum_magf32x F -GLIBC_2.35 fmaximum_magf64 F -GLIBC_2.35 fmaximum_magl F -GLIBC_2.35 fmaximum_num F -GLIBC_2.35 fmaximum_numf F -GLIBC_2.35 fmaximum_numf32 F -GLIBC_2.35 fmaximum_numf32x F -GLIBC_2.35 fmaximum_numf64 F -GLIBC_2.35 fmaximum_numl F -GLIBC_2.35 fmaximumf F -GLIBC_2.35 fmaximumf32 F -GLIBC_2.35 fmaximumf32x F -GLIBC_2.35 fmaximumf64 F -GLIBC_2.35 fmaximuml F -GLIBC_2.35 fminimum F -GLIBC_2.35 fminimum_mag F -GLIBC_2.35 fminimum_mag_num F -GLIBC_2.35 fminimum_mag_numf F -GLIBC_2.35 fminimum_mag_numf32 F -GLIBC_2.35 fminimum_mag_numf32x F -GLIBC_2.35 fminimum_mag_numf64 F -GLIBC_2.35 fminimum_mag_numl F -GLIBC_2.35 fminimum_magf F -GLIBC_2.35 fminimum_magf32 F -GLIBC_2.35 fminimum_magf32x F -GLIBC_2.35 fminimum_magf64 F -GLIBC_2.35 fminimum_magl F -GLIBC_2.35 fminimum_num F -GLIBC_2.35 fminimum_numf F -GLIBC_2.35 fminimum_numf32 F -GLIBC_2.35 fminimum_numf32x F -GLIBC_2.35 fminimum_numf64 F -GLIBC_2.35 fminimum_numl F -GLIBC_2.35 fminimumf F -GLIBC_2.35 fminimumf32 F -GLIBC_2.35 fminimumf32x F -GLIBC_2.35 fminimumf64 F -GLIBC_2.35 fminimuml F -GLIBC_2.35 fsqrt F -GLIBC_2.35 fsqrtl F -GLIBC_2.35 hypot F -GLIBC_2.35 hypotf F -GLIBC_2.38 fmod F -GLIBC_2.38 fmodf F -GLIBC_2.39 exp10 F -GLIBC_2.40 exp10m1 F -GLIBC_2.40 exp10m1f F -GLIBC_2.40 exp10m1f32 F -GLIBC_2.40 exp10m1f32x F -GLIBC_2.40 exp10m1f64 F -GLIBC_2.40 exp10m1l F -GLIBC_2.40 exp2m1 F -GLIBC_2.40 exp2m1f F -GLIBC_2.40 exp2m1f32 F -GLIBC_2.40 exp2m1f32x F -GLIBC_2.40 exp2m1f64 F -GLIBC_2.40 exp2m1l F -GLIBC_2.40 log10p1 F -GLIBC_2.40 log10p1f F -GLIBC_2.40 log10p1f32 F -GLIBC_2.40 log10p1f32x F -GLIBC_2.40 log10p1f64 F -GLIBC_2.40 log10p1l F -GLIBC_2.40 log2p1 F -GLIBC_2.40 log2p1f F -GLIBC_2.40 log2p1f32 F -GLIBC_2.40 log2p1f32x F -GLIBC_2.40 log2p1f64 F -GLIBC_2.40 log2p1l F -GLIBC_2.40 logp1 F -GLIBC_2.40 logp1f F -GLIBC_2.40 logp1f32 F -GLIBC_2.40 logp1f32x F -GLIBC_2.40 logp1f64 F -GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/nios2/libnsl.abilist b/sysdeps/unix/sysv/linux/nios2/libnsl.abilist deleted file mode 100644 index 9a3bbb3..0000000 --- a/sysdeps/unix/sysv/linux/nios2/libnsl.abilist +++ /dev/null @@ -1,121 +0,0 @@ -GLIBC_2.21 __free_fdresult F -GLIBC_2.21 __nis_default_access F -GLIBC_2.21 __nis_default_group F -GLIBC_2.21 __nis_default_owner F -GLIBC_2.21 __nis_default_ttl F -GLIBC_2.21 __nis_finddirectory F -GLIBC_2.21 __nis_hash F -GLIBC_2.21 __nisbind_connect F -GLIBC_2.21 __nisbind_create F -GLIBC_2.21 __nisbind_destroy F -GLIBC_2.21 __nisbind_next F -GLIBC_2.21 __yp_check F -GLIBC_2.21 nis_add F -GLIBC_2.21 nis_add_entry F -GLIBC_2.21 nis_addmember F -GLIBC_2.21 nis_checkpoint F -GLIBC_2.21 nis_clone_directory F -GLIBC_2.21 nis_clone_object F -GLIBC_2.21 nis_clone_result F -GLIBC_2.21 nis_creategroup F -GLIBC_2.21 nis_destroy_object F -GLIBC_2.21 nis_destroygroup F -GLIBC_2.21 nis_dir_cmp F -GLIBC_2.21 nis_domain_of F -GLIBC_2.21 nis_domain_of_r F -GLIBC_2.21 nis_first_entry F -GLIBC_2.21 nis_free_directory F -GLIBC_2.21 nis_free_object F -GLIBC_2.21 nis_free_request F -GLIBC_2.21 nis_freenames F -GLIBC_2.21 nis_freeresult F -GLIBC_2.21 nis_freeservlist F -GLIBC_2.21 nis_freetags F -GLIBC_2.21 nis_getnames F -GLIBC_2.21 nis_getservlist F -GLIBC_2.21 nis_ismember F -GLIBC_2.21 nis_leaf_of F -GLIBC_2.21 nis_leaf_of_r F -GLIBC_2.21 nis_lerror F -GLIBC_2.21 nis_list F -GLIBC_2.21 nis_local_directory F -GLIBC_2.21 nis_local_group F -GLIBC_2.21 nis_local_host F -GLIBC_2.21 nis_local_principal F -GLIBC_2.21 nis_lookup F -GLIBC_2.21 nis_mkdir F -GLIBC_2.21 nis_modify F -GLIBC_2.21 nis_modify_entry F -GLIBC_2.21 nis_name_of F -GLIBC_2.21 nis_name_of_r F -GLIBC_2.21 nis_next_entry F -GLIBC_2.21 nis_perror F -GLIBC_2.21 nis_ping F -GLIBC_2.21 nis_print_directory F -GLIBC_2.21 nis_print_entry F -GLIBC_2.21 nis_print_group F -GLIBC_2.21 nis_print_group_entry F -GLIBC_2.21 nis_print_link F -GLIBC_2.21 nis_print_object F -GLIBC_2.21 nis_print_result F -GLIBC_2.21 nis_print_rights F -GLIBC_2.21 nis_print_table F -GLIBC_2.21 nis_read_obj F -GLIBC_2.21 nis_remove F -GLIBC_2.21 nis_remove_entry F -GLIBC_2.21 nis_removemember F -GLIBC_2.21 nis_rmdir F -GLIBC_2.21 nis_servstate F -GLIBC_2.21 nis_sperrno F -GLIBC_2.21 nis_sperror F -GLIBC_2.21 nis_sperror_r F -GLIBC_2.21 nis_stats F -GLIBC_2.21 nis_verifygroup F -GLIBC_2.21 nis_write_obj F -GLIBC_2.21 readColdStartFile F -GLIBC_2.21 writeColdStartFile F -GLIBC_2.21 xdr_cback_data F -GLIBC_2.21 xdr_domainname F -GLIBC_2.21 xdr_keydat F -GLIBC_2.21 xdr_mapname F -GLIBC_2.21 xdr_obj_p F -GLIBC_2.21 xdr_peername F -GLIBC_2.21 xdr_valdat F -GLIBC_2.21 xdr_yp_buf F -GLIBC_2.21 xdr_ypall F -GLIBC_2.21 xdr_ypbind_binding F -GLIBC_2.21 xdr_ypbind_resp F -GLIBC_2.21 xdr_ypbind_resptype F -GLIBC_2.21 xdr_ypbind_setdom F -GLIBC_2.21 xdr_ypdelete_args F -GLIBC_2.21 xdr_ypmap_parms F -GLIBC_2.21 xdr_ypmaplist F -GLIBC_2.21 xdr_yppush_status F -GLIBC_2.21 xdr_yppushresp_xfr F -GLIBC_2.21 xdr_ypreq_key F -GLIBC_2.21 xdr_ypreq_nokey F -GLIBC_2.21 xdr_ypreq_xfr F -GLIBC_2.21 xdr_ypresp_all F -GLIBC_2.21 xdr_ypresp_key_val F -GLIBC_2.21 xdr_ypresp_maplist F -GLIBC_2.21 xdr_ypresp_master F -GLIBC_2.21 xdr_ypresp_order F -GLIBC_2.21 xdr_ypresp_val F -GLIBC_2.21 xdr_ypresp_xfr F -GLIBC_2.21 xdr_ypstat F -GLIBC_2.21 xdr_ypupdate_args F -GLIBC_2.21 xdr_ypxfrstat F -GLIBC_2.21 yp_all F -GLIBC_2.21 yp_bind F -GLIBC_2.21 yp_first F -GLIBC_2.21 yp_get_default_domain F -GLIBC_2.21 yp_maplist F -GLIBC_2.21 yp_master F -GLIBC_2.21 yp_match F -GLIBC_2.21 yp_next F -GLIBC_2.21 yp_order F -GLIBC_2.21 yp_unbind F -GLIBC_2.21 yp_update F -GLIBC_2.21 ypbinderr_string F -GLIBC_2.21 yperr_string F -GLIBC_2.21 ypprot_err F diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist deleted file mode 100644 index 714dfd9..0000000 --- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist +++ /dev/null @@ -1,4 +0,0 @@ -GLIBC_2.21 __libpthread_version_placeholder F -GLIBC_2.28 __libpthread_version_placeholder F -GLIBC_2.30 __libpthread_version_placeholder F -GLIBC_2.31 __libpthread_version_placeholder F diff --git a/sysdeps/unix/sysv/linux/nios2/libresolv.abilist b/sysdeps/unix/sysv/linux/nios2/libresolv.abilist deleted file mode 100644 index e1d6065..0000000 --- a/sysdeps/unix/sysv/linux/nios2/libresolv.abilist +++ /dev/null @@ -1,67 +0,0 @@ -GLIBC_2.21 __b64_ntop F -GLIBC_2.21 __b64_pton F -GLIBC_2.21 __dn_count_labels F -GLIBC_2.21 __fp_nquery F -GLIBC_2.21 __fp_query F -GLIBC_2.21 __fp_resstat F -GLIBC_2.21 __hostalias F -GLIBC_2.21 __loc_aton F -GLIBC_2.21 __loc_ntoa F -GLIBC_2.21 __p_cdname F -GLIBC_2.21 __p_cdnname F -GLIBC_2.21 __p_class F -GLIBC_2.21 __p_class_syms D 0x54 -GLIBC_2.21 __p_fqname F -GLIBC_2.21 __p_fqnname F -GLIBC_2.21 __p_option F -GLIBC_2.21 __p_query F -GLIBC_2.21 __p_rcode F -GLIBC_2.21 __p_secstodate F -GLIBC_2.21 __p_time F -GLIBC_2.21 __p_type F -GLIBC_2.21 __p_type_syms D 0x228 -GLIBC_2.21 __putlong F -GLIBC_2.21 __putshort F -GLIBC_2.21 __res_close F -GLIBC_2.21 __res_hostalias F -GLIBC_2.21 __res_isourserver F -GLIBC_2.21 __res_nameinquery F -GLIBC_2.21 __res_queriesmatch F -GLIBC_2.21 __sym_ntop F -GLIBC_2.21 __sym_ntos F -GLIBC_2.21 __sym_ston F -GLIBC_2.21 _gethtbyaddr F -GLIBC_2.21 _gethtbyname F -GLIBC_2.21 _gethtbyname2 F -GLIBC_2.21 _gethtent F -GLIBC_2.21 _getlong F -GLIBC_2.21 _getshort F -GLIBC_2.21 _res_opcodes D 0x40 -GLIBC_2.21 _sethtent F -GLIBC_2.21 inet_net_ntop F -GLIBC_2.21 inet_net_pton F -GLIBC_2.21 inet_neta F -GLIBC_2.21 ns_datetosecs F -GLIBC_2.21 ns_format_ttl F -GLIBC_2.21 ns_get16 F -GLIBC_2.21 ns_get32 F -GLIBC_2.21 ns_initparse F -GLIBC_2.21 ns_makecanon F -GLIBC_2.21 ns_msg_getflag F -GLIBC_2.21 ns_name_ntol F -GLIBC_2.21 ns_name_rollback F -GLIBC_2.21 ns_parse_ttl F -GLIBC_2.21 ns_parserr F -GLIBC_2.21 ns_put16 F -GLIBC_2.21 ns_put32 F -GLIBC_2.21 ns_samedomain F -GLIBC_2.21 ns_samename F -GLIBC_2.21 ns_skiprr F -GLIBC_2.21 ns_sprintrr F -GLIBC_2.21 ns_sprintrrf F -GLIBC_2.21 ns_subdomain F -GLIBC_2.21 res_gethostbyaddr F -GLIBC_2.21 res_gethostbyname F -GLIBC_2.21 res_gethostbyname2 F -GLIBC_2.21 res_send_setqhook F -GLIBC_2.21 res_send_setrhook F diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist deleted file mode 100644 index 834a4dc..0000000 --- a/sysdeps/unix/sysv/linux/nios2/librt.abilist +++ /dev/null @@ -1 +0,0 @@ -GLIBC_2.21 __librt_version_placeholder F diff --git a/sysdeps/unix/sysv/linux/nios2/libthread_db.abilist b/sysdeps/unix/sysv/linux/nios2/libthread_db.abilist deleted file mode 100644 index cb9e543..0000000 --- a/sysdeps/unix/sysv/linux/nios2/libthread_db.abilist +++ /dev/null @@ -1,40 +0,0 @@ -GLIBC_2.21 td_init F -GLIBC_2.21 td_log F -GLIBC_2.21 td_symbol_list F -GLIBC_2.21 td_ta_clear_event F -GLIBC_2.21 td_ta_delete F -GLIBC_2.21 td_ta_enable_stats F -GLIBC_2.21 td_ta_event_addr F -GLIBC_2.21 td_ta_event_getmsg F -GLIBC_2.21 td_ta_get_nthreads F -GLIBC_2.21 td_ta_get_ph F -GLIBC_2.21 td_ta_get_stats F -GLIBC_2.21 td_ta_map_id2thr F -GLIBC_2.21 td_ta_map_lwp2thr F -GLIBC_2.21 td_ta_new F -GLIBC_2.21 td_ta_reset_stats F -GLIBC_2.21 td_ta_set_event F -GLIBC_2.21 td_ta_setconcurrency F -GLIBC_2.21 td_ta_thr_iter F -GLIBC_2.21 td_ta_tsd_iter F -GLIBC_2.21 td_thr_clear_event F -GLIBC_2.21 td_thr_dbresume F -GLIBC_2.21 td_thr_dbsuspend F -GLIBC_2.21 td_thr_event_enable F -GLIBC_2.21 td_thr_event_getmsg F -GLIBC_2.21 td_thr_get_info F -GLIBC_2.21 td_thr_getfpregs F -GLIBC_2.21 td_thr_getgregs F -GLIBC_2.21 td_thr_getxregs F -GLIBC_2.21 td_thr_getxregsize F -GLIBC_2.21 td_thr_set_event F -GLIBC_2.21 td_thr_setfpregs F -GLIBC_2.21 td_thr_setgregs F -GLIBC_2.21 td_thr_setprio F -GLIBC_2.21 td_thr_setsigpending F -GLIBC_2.21 td_thr_setxregs F -GLIBC_2.21 td_thr_sigsetmask F -GLIBC_2.21 td_thr_tls_get_addr F -GLIBC_2.21 td_thr_tlsbase F -GLIBC_2.21 td_thr_tsd F -GLIBC_2.21 td_thr_validate F diff --git a/sysdeps/unix/sysv/linux/nios2/libutil.abilist b/sysdeps/unix/sysv/linux/nios2/libutil.abilist deleted file mode 100644 index 742ebe6..0000000 --- a/sysdeps/unix/sysv/linux/nios2/libutil.abilist +++ /dev/null @@ -1 +0,0 @@ -GLIBC_2.21 __libutil_version_placeholder F diff --git a/sysdeps/unix/sysv/linux/nios2/localplt.data b/sysdeps/unix/sysv/linux/nios2/localplt.data deleted file mode 100644 index f502a3f..0000000 --- a/sysdeps/unix/sysv/linux/nios2/localplt.data +++ /dev/null @@ -1,30 +0,0 @@ -libc.so: realloc -libc.so: __floatsisf -libc.so: __gtdf2 ? -libc.so: __ltdf2 -libc.so: __gedf2 -libc.so: malloc -libc.so: __gtsf2 ? -libc.so: __nesf2 -libc.so: __mulsf3 -libc.so: __floatunsisf -libc.so: __addsf3 -libc.so: __fixsfsi -libc.so: __subsf3 -libc.so: __unorddf2 ? -libc.so: calloc -libc.so: __muldf3 -libc.so: __unordsf2 ? -libc.so: free -libc.so: __subdf3 -libc.so: __ledf2 -libc.so: __adddf3 -libc.so: __divdf3 -libc.so: __floatsidf -libc.so: __divsf3 -libc.so: __nedf2 -libc.so: __eqdf2 -libc.so: __extendsfdf2 -libc.so: __floatundidf ? -libc.so: __floatunsidf ? -libm.so: matherr diff --git a/sysdeps/unix/sysv/linux/nios2/makecontext.c b/sysdeps/unix/sysv/linux/nios2/makecontext.c deleted file mode 100644 index d6e430c..0000000 --- a/sysdeps/unix/sysv/linux/nios2/makecontext.c +++ /dev/null @@ -1,79 +0,0 @@ -/* Create new context. - Copyright (C) 2015-2024 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 - <https://www.gnu.org/licenses/>. */ - -#include <sysdep.h> -#include <stdarg.h> -#include <stdint.h> -#include <ucontext.h> - -/* makecontext sets up a stack and the registers for the - user context. The stack looks like this: - - +-----------------------+ - | padding as required | - +-----------------------+ - sp -> | parameters 5 to n | - +-----------------------+ - - The registers are set up like this: - r4--r7 : parameter 1 to 4 - r16 : uc_link - sp : stack pointer. -*/ - -void -__makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...) -{ - extern void __startcontext (void); - unsigned long *sp; - va_list ap; - int i; - - sp = (unsigned long *) - ((uintptr_t) ucp->uc_stack.ss_sp + ucp->uc_stack.ss_size); - - /* Allocate stack arguments. */ - sp -= argc < 4 ? 0 : argc - 4; - - /* Keep the stack aligned. */ - sp = (unsigned long*) (((uintptr_t) sp) & -4L); - - /* Init version field. */ - ucp->uc_mcontext.version = 2; - /* Keep uc_link in r16. */ - ucp->uc_mcontext.regs[15] = (uintptr_t) ucp->uc_link; - /* Return address points to __startcontext(). */ - ucp->uc_mcontext.regs[23] = (uintptr_t) &__startcontext; - /* Frame pointer is null. */ - ucp->uc_mcontext.regs[24] = (uintptr_t) 0; - /* Restart in user-space starting at 'func'. */ - ucp->uc_mcontext.regs[27] = (uintptr_t) func; - /* Set stack pointer. */ - ucp->uc_mcontext.regs[28] = (uintptr_t) sp; - - va_start (ap, argc); - for (i = 0; i < argc; ++i) - if (i < 4) - ucp->uc_mcontext.regs[i + 3] = va_arg (ap, unsigned long); - else - sp[i - 4] = va_arg (ap, unsigned long); - - va_end (ap); -} - -weak_alias (__makecontext, makecontext) diff --git a/sysdeps/unix/sysv/linux/nios2/pointer_guard.h b/sysdeps/unix/sysv/linux/nios2/pointer_guard.h deleted file mode 100644 index 487fa22..0000000 --- a/sysdeps/unix/sysv/linux/nios2/pointer_guard.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Pointer obfuscation implenentation. Nios II version. - Copyright (C) 2015-2024 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 - <https://www.gnu.org/licenses/>. */ - -#ifndef POINTER_GUARD_H -#define POINTER_GUARD_H - -#if IS_IN (rtld) -/* We cannot use the thread descriptor because in ld.so we use setjmp - earlier than the descriptor is initialized. */ -# include <sysdeps/generic/pointer_guard.h> -#else -# ifdef __ASSEMBLER__ -# define PTR_MANGLE_GUARD(guard) ldw guard, POINTER_GUARD(r23) -# define PTR_MANGLE(dst, src, guard) xor dst, src, guard -# define PTR_DEMANGLE(dst, src, guard) PTR_MANGLE (dst, src, guard) -# else -# include <stdint.h> -# include <tls.h> -# define PTR_MANGLE(var) \ - (var) = (__typeof (var)) ((uintptr_t) (var) ^ THREAD_GET_POINTER_GUARD ()) -# define PTR_DEMANGLE(var) PTR_MANGLE (var) -# endif -#endif - -#endif /* POINTER_GUARD_H */ diff --git a/sysdeps/unix/sysv/linux/nios2/send.c b/sysdeps/unix/sysv/linux/nios2/send.c deleted file mode 100644 index c1621c8..0000000 --- a/sysdeps/unix/sysv/linux/nios2/send.c +++ /dev/null @@ -1,9 +0,0 @@ -#include <shlib-compat.h> - -#include <sysdeps/unix/sysv/linux/send.c> - -#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_21, GLIBC_2_34) -/* libpthread compat symbol: Nios2 used the generic version without the - libc_hidden_def which lead in a non existent __send symbol in libc.so. */ -compat_symbol (libc, __libc_send, __send, GLIBC_2_21); -#endif diff --git a/sysdeps/unix/sysv/linux/nios2/setcontext.S b/sysdeps/unix/sysv/linux/nios2/setcontext.S deleted file mode 100644 index 2345de7..0000000 --- a/sysdeps/unix/sysv/linux/nios2/setcontext.S +++ /dev/null @@ -1,115 +0,0 @@ -/* Set current context. - Copyright (C) 2015-2024 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 - <https://www.gnu.org/licenses/>. */ - -#include <sysdep.h> -#include "ucontext_i.h" - -/* int setcontext (const ucontext_t *ucp) */ - .text -ENTRY(__setcontext) - ldw r5, UCONTEXT_FLAGS(r4) - movi r6, 1 - bne r5, r6, .Lsigreturn - - mov r10, r4 - - /* Restore signal mask. */ - /* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, NULL, _NSIG8) */ - movi r7, _NSIG8 - addi r5, r4, UCONTEXT_SIGMASK - mov r6, zero - movi r4, SIG_SETMASK - movi r2, SYS_ify (rt_sigprocmask) - trap - bne r7, zero, SYSCALL_ERROR_LABEL - - /* Restore argument registers, for the makecontext() case. */ - ldw r4, (UCONTEXT_MCONTEXT + 4*4)(r10) - ldw r5, (UCONTEXT_MCONTEXT + 5*4)(r10) - ldw r6, (UCONTEXT_MCONTEXT + 6*4)(r10) - ldw r7, (UCONTEXT_MCONTEXT + 7*4)(r10) - - ldw r16, (UCONTEXT_MCONTEXT + 16*4)(r10) - ldw r17, (UCONTEXT_MCONTEXT + 17*4)(r10) - ldw r18, (UCONTEXT_MCONTEXT + 18*4)(r10) - ldw r19, (UCONTEXT_MCONTEXT + 19*4)(r10) - ldw r20, (UCONTEXT_MCONTEXT + 20*4)(r10) - ldw r21, (UCONTEXT_MCONTEXT + 21*4)(r10) - ldw r22, (UCONTEXT_MCONTEXT + 22*4)(r10) - ldw ra, (UCONTEXT_MCONTEXT + 24*4)(r10) - ldw fp, (UCONTEXT_MCONTEXT + 25*4)(r10) - ldw gp, (UCONTEXT_MCONTEXT + 26*4)(r10) - /* Load address to continue execution. */ - ldw r3, (UCONTEXT_MCONTEXT + 28*4)(r10) - ldw sp, (UCONTEXT_MCONTEXT + 29*4)(r10) - - mov r2, zero - jmp r3 - -.Lsigreturn: - addi sp, sp, -RT_SIGFRAME_SIZE - cfi_adjust_cfa_offset (RT_SIGFRAME_SIZE) - - addi r2, sp, RT_SIGFRAME_UCONTEXT - movi r3, UCONTEXT_SIZE-4 -1: - add r6, r4, r3 - ldw r5, 0(r6) - add r7, r2, r3 - addi r3, r3, -4 - stw r5, 0(r7) - bgt r3, zero, 1b - - movi r2, SYS_ify (rt_sigreturn) - trap - - addi sp, sp, RT_SIGFRAME_SIZE - cfi_adjust_cfa_offset (-RT_SIGFRAME_SIZE) - br SYSCALL_ERROR_LABEL - -PSEUDO_END (__setcontext) -weak_alias (__setcontext, setcontext) - - /* We add an NOP here to separate between __setcontext/__startcontext. - The wanted behavior that happens is: when unwinding from a function - called inside a makecontext() context, FDE lookup will use - '&__startcontext - 1', then returns NULL for no FDE found, - and immediately ends the unwind, in a normal fashion. - - If this NOP word does not exist, FDE lookup just repeatedly finds - __setcontext's FDE in an infinite loop, due to the convention of - using 'address - 1' for FDE lookup. Modifying/deleting the below - __startcontext's FDE has no help on this. */ - nop - -ENTRY(__startcontext) - mov r4, r16 - bne r4, zero, __setcontext - - /* If uc_link == zero, call exit. */ -#ifdef PIC - nextpc r22 -1: movhi r8, %hiadj(_gp_got - 1b) - addi r8, r8, %lo(_gp_got - 1b) - add r22, r22, r8 - ldw r8, %call(HIDDEN_JUMPTARGET(exit))(r22) - jmp r8 -#else - jmpi exit -#endif -END(__startcontext) diff --git a/sysdeps/unix/sysv/linux/nios2/shlib-versions b/sysdeps/unix/sysv/linux/nios2/shlib-versions deleted file mode 100644 index 443fd4d..0000000 --- a/sysdeps/unix/sysv/linux/nios2/shlib-versions +++ /dev/null @@ -1,2 +0,0 @@ -DEFAULT GLIBC_2.21 -ld=ld-linux-nios2.so.1 diff --git a/sysdeps/unix/sysv/linux/nios2/swapcontext.S b/sysdeps/unix/sysv/linux/nios2/swapcontext.S deleted file mode 100644 index 488d702..0000000 --- a/sysdeps/unix/sysv/linux/nios2/swapcontext.S +++ /dev/null @@ -1,125 +0,0 @@ -/* Modify saved context. - Copyright (C) 2015-2024 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 - <https://www.gnu.org/licenses/>. */ - -#include <sysdep.h> -#include "ucontext_i.h" - -/* int swapcontext (ucontext_t *oucp, const ucontext_t *ucp) */ - .text -ENTRY(__swapcontext) - - /* Same as getcontext(). */ - stw r16, (UCONTEXT_MCONTEXT + 16*4)(r4) - stw r17, (UCONTEXT_MCONTEXT + 17*4)(r4) - stw r18, (UCONTEXT_MCONTEXT + 18*4)(r4) - stw r19, (UCONTEXT_MCONTEXT + 19*4)(r4) - stw r20, (UCONTEXT_MCONTEXT + 20*4)(r4) - stw r21, (UCONTEXT_MCONTEXT + 21*4)(r4) - stw r22, (UCONTEXT_MCONTEXT + 22*4)(r4) - stw ra, (UCONTEXT_MCONTEXT + 24*4)(r4) - stw fp, (UCONTEXT_MCONTEXT + 25*4)(r4) - stw gp, (UCONTEXT_MCONTEXT + 26*4)(r4) - /* Store return address at place for EA. */ - stw ra, (UCONTEXT_MCONTEXT + 28*4)(r4) - stw sp, (UCONTEXT_MCONTEXT + 29*4)(r4) - /* Store zero for return success. */ - stw zero, (UCONTEXT_MCONTEXT + 2*4)(r4) - - /* Store value "1" at uc_flags to recognize as getcontext created. */ - movi r2, 1 - stw r2, UCONTEXT_FLAGS(r4) - - /* Store MCONTEXT_VERSION at first word of mcontext_t. */ - movi r2, MCONTEXT_VERSION - stw r2, UCONTEXT_MCONTEXT(r4) - - /* Save ucp to non-argument syscall preserved register. */ - mov r10, r5 - - /* Get signal mask. */ - /* rt_sigprocmask (SIG_BLOCK, NULL, &ucp->uc_sigmask, _NSIG8) */ - movi r7, _NSIG8 - addi r6, r4, UCONTEXT_SIGMASK - mov r5, zero - movi r4, SIG_BLOCK - movi r2, SYS_ify (rt_sigprocmask) - trap - bne r7, zero, SYSCALL_ERROR_LABEL - - - /* Same as setcontext(). */ - ldw r5, UCONTEXT_FLAGS(r10) - movi r6, 1 - bne r5, r6, .Lsigreturn - - /* Restore signal mask. */ - /* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, NULL, _NSIG8) */ - movi r7, _NSIG8 - addi r5, r10, UCONTEXT_SIGMASK - mov r6, zero - movi r4, SIG_SETMASK - movi r2, SYS_ify (rt_sigprocmask) - trap - bne r7, zero, SYSCALL_ERROR_LABEL - - /* Restore argument registers, for the makecontext() case. */ - ldw r4, (UCONTEXT_MCONTEXT + 4*4)(r10) - ldw r5, (UCONTEXT_MCONTEXT + 5*4)(r10) - ldw r6, (UCONTEXT_MCONTEXT + 6*4)(r10) - ldw r7, (UCONTEXT_MCONTEXT + 7*4)(r10) - - ldw r16, (UCONTEXT_MCONTEXT + 16*4)(r10) - ldw r17, (UCONTEXT_MCONTEXT + 17*4)(r10) - ldw r18, (UCONTEXT_MCONTEXT + 18*4)(r10) - ldw r19, (UCONTEXT_MCONTEXT + 19*4)(r10) - ldw r20, (UCONTEXT_MCONTEXT + 20*4)(r10) - ldw r21, (UCONTEXT_MCONTEXT + 21*4)(r10) - ldw r22, (UCONTEXT_MCONTEXT + 22*4)(r10) - ldw ra, (UCONTEXT_MCONTEXT + 24*4)(r10) - ldw fp, (UCONTEXT_MCONTEXT + 25*4)(r10) - ldw gp, (UCONTEXT_MCONTEXT + 26*4)(r10) - /* Load address to continue execution. */ - ldw r3, (UCONTEXT_MCONTEXT + 28*4)(r10) - ldw sp, (UCONTEXT_MCONTEXT + 29*4)(r10) - - mov r2, zero - jmp r3 - -.Lsigreturn: - addi sp, sp, -RT_SIGFRAME_SIZE - cfi_adjust_cfa_offset (RT_SIGFRAME_SIZE) - - addi r2, sp, RT_SIGFRAME_UCONTEXT - movi r3, UCONTEXT_SIZE-4 -1: - add r6, r4, r3 - ldw r5, 0(r6) - add r7, r2, r3 - addi r3, r3, -4 - stw r5, 0(r7) - bgt r3, zero, 1b - - movi r2, SYS_ify (rt_sigreturn) - trap - - addi sp, sp, RT_SIGFRAME_SIZE - cfi_adjust_cfa_offset (-RT_SIGFRAME_SIZE) - br SYSCALL_ERROR_LABEL - -PSEUDO_END (__swapcontext) -weak_alias (__swapcontext, swapcontext) diff --git a/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h b/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h deleted file mode 100644 index 74cc119..0000000 --- a/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h +++ /dev/null @@ -1,61 +0,0 @@ -/* ucontext_t definition, Nios II version. - Copyright (C) 2015-2024 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 - <https://www.gnu.org/licenses/>. */ - -/* System V/Nios II ABI compliant context switching support. */ - -#ifndef _SYS_UCONTEXT_H -#define _SYS_UCONTEXT_H 1 - -#include <features.h> - -#include <bits/types/sigset_t.h> -#include <bits/types/stack_t.h> - - -/* These definitions must be in sync with the kernel. */ - -#ifdef __USE_MISC -# define MCONTEXT_VERSION 2 -#endif - -#ifdef __USE_MISC -# define __ctx(fld) fld -#else -# define __ctx(fld) __ ## fld -#endif - -/* Context to describe whole processor state. */ -typedef struct - { - int __ctx(version); - unsigned long __ctx(regs)[32]; - } mcontext_t; - -/* Userlevel context. */ -typedef struct ucontext_t - { - unsigned long __ctx(uc_flags); - struct ucontext_t *uc_link; - stack_t uc_stack; - mcontext_t uc_mcontext; - sigset_t uc_sigmask; - } ucontext_t; - -#undef __ctx - -#endif /* sys/ucontext.h */ diff --git a/sysdeps/unix/sysv/linux/nios2/sys/user.h b/sysdeps/unix/sysv/linux/nios2/sys/user.h deleted file mode 100644 index ed637b5..0000000 --- a/sysdeps/unix/sysv/linux/nios2/sys/user.h +++ /dev/null @@ -1,58 +0,0 @@ -/* ptrace register data format definitions. - Copyright (C) 1998-2024 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 - <https://www.gnu.org/licenses/>. */ - -#ifndef _SYS_USER_H -#define _SYS_USER_H 1 - -/* The whole purpose of this file is for GDB and GDB only. Don't read - too much into it. Don't use it for anything other than GDB unless - you know what you are doing. */ - -struct user_fpregs -{ -}; - -struct user_regs -{ - unsigned long int uregs[49]; -}; - -struct user -{ - struct user_regs regs; /* General registers */ - int u_fpvalid; /* True if math co-processor being used. */ - - unsigned long int u_tsize; /* Text segment size (pages). */ - unsigned long int u_dsize; /* Data segment size (pages). */ - unsigned long int u_ssize; /* Stack segment size (pages). */ - - unsigned long start_code; /* Starting virtual address of text. */ - unsigned long start_stack; /* Starting virtual address of stack. */ - - long int signal; /* Signal that caused the core dump. */ - int reserved; /* No longer used */ - struct user_regs *u_ar0; /* help gdb to find the general registers. */ - - unsigned long magic; /* uniquely identify a core file */ - char u_comm[32]; /* User command that was responsible */ - int u_debugreg[8]; - struct user_fpregs u_fp; /* Floating point registers */ - struct user_fpregs *u_fp0; /* help gdb to find the FP registers. */ -}; - -#endif /* sys/user.h */ diff --git a/sysdeps/unix/sysv/linux/nios2/sysdep.S b/sysdeps/unix/sysv/linux/nios2/sysdep.S deleted file mode 100644 index a827d41..0000000 --- a/sysdeps/unix/sysv/linux/nios2/sysdep.S +++ /dev/null @@ -1,50 +0,0 @@ -/* Static library error handling code fragment for Nios II. - Copyright (C) 2015-2024 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 - <https://www.gnu.org/licenses/>. */ - -#include <sysdep.h> - -/* The following code is only used in the static library. In the shared - library, the error handling code is at the end of each function. */ - -#ifndef PIC - -/* In the static library, the syscall stubs jump here when they detect - an error. */ - -# undef CALL_MCOUNT -# define CALL_MCOUNT /* Don't insert the profiling call, it clobbers r2. */ - -# if IS_IN (libc) -# define SYSCALL_ERROR_ERRNO __libc_errno -# else -# define SYSCALL_ERROR_ERRNO errno -# endif - .text -ENTRY (__syscall_error) - nextpc r3 -1: - movhi r8, %hiadj(_gp_got - 1b) - addi r8, r8, %lo(_gp_got - 1b) - add r3, r3, r8 - ldw r3, %tls_ie(SYSCALL_ERROR_ERRNO)(r3) - add r3, r23, r3 - stw r2, 0(r3) - movi r2, -1 - ret -END (__syscall_error) -#endif diff --git a/sysdeps/unix/sysv/linux/nios2/sysdep.h b/sysdeps/unix/sysv/linux/nios2/sysdep.h deleted file mode 100644 index 2ea9c3b..0000000 --- a/sysdeps/unix/sysv/linux/nios2/sysdep.h +++ /dev/null @@ -1,223 +0,0 @@ -/* Assembler macros for Nios II. - Copyright (C) 2000-2024 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 - <https://www.gnu.org/licenses/>. */ - -#ifndef _LINUX_NIOS2_SYSDEP_H -#define _LINUX_NIOS2_SYSDEP_H 1 - -#include <sysdeps/unix/sysv/linux/sysdep.h> -#include <sysdeps/unix/sysdep.h> -#include <sysdeps/nios2/sysdep.h> - -/* For RTLD_PRIVATE_ERRNO. */ -#include <dl-sysdep.h> - -#include <tls.h> - -/* For Linux we can use the system call table in the header file - /usr/include/asm/unistd.h - of the kernel. But these symbols do not follow the SYS_* syntax - so we have to redefine the `SYS_ify' macro here. */ -#undef SYS_ify -#define SYS_ify(syscall_name) __NR_##syscall_name - -#ifdef __ASSEMBLER__ - -#undef SYSCALL_ERROR_LABEL -#define SYSCALL_ERROR_LABEL __local_syscall_error - -#undef PSEUDO -#define PSEUDO(name, syscall_name, args) \ - ENTRY (name) \ - DO_CALL (syscall_name, args) \ - bne r7, zero, SYSCALL_ERROR_LABEL; \ - -#undef PSEUDO_END -#define PSEUDO_END(name) \ - SYSCALL_ERROR_HANDLER \ - END (name) - -#undef PSEUDO_NOERRNO -#define PSEUDO_NOERRNO(name, syscall_name, args) \ - ENTRY (name) \ - DO_CALL (syscall_name, args) - -#undef PSEUDO_END_NOERRNO -#define PSEUDO_END_NOERRNO(name) \ - END (name) - -#undef ret_NOERRNO -#define ret_NOERRNO ret - -#undef DO_CALL -#define DO_CALL(syscall_name, args) \ - DOARGS_##args \ - movi r2, SYS_ify(syscall_name); \ - trap; - -#if defined(__PIC__) || defined(PIC) - -# if RTLD_PRIVATE_ERRNO - -# define SYSCALL_ERROR_HANDLER \ - SYSCALL_ERROR_LABEL: \ - nextpc r3; \ -1: \ - movhi r8, %hiadj(rtld_errno - 1b); \ - addi r8, r8, %lo(rtld_errno - 1b); \ - add r3, r3, r8; \ - stw r2, 0(r3); \ - movi r2, -1; \ - ret; - -# else - -# if IS_IN (libc) -# define SYSCALL_ERROR_ERRNO __libc_errno -# else -# define SYSCALL_ERROR_ERRNO errno -# endif -# define SYSCALL_ERROR_HANDLER \ - SYSCALL_ERROR_LABEL: \ - nextpc r3; \ -1: \ - movhi r8, %hiadj(_gp_got - 1b); \ - addi r8, r8, %lo(_gp_got - 1b); \ - add r3, r3, r8; \ - ldw r3, %tls_ie(SYSCALL_ERROR_ERRNO)(r3); \ - add r3, r23, r3; \ - stw r2, 0(r3); \ - movi r2, -1; \ - ret; - -# endif - -#else - -/* We can use a single error handler in the static library. */ -#define SYSCALL_ERROR_HANDLER \ - SYSCALL_ERROR_LABEL: \ - jmpi __syscall_error; - -#endif - -#define DOARGS_0 /* nothing */ -#define DOARGS_1 /* nothing */ -#define DOARGS_2 /* nothing */ -#define DOARGS_3 /* nothing */ -#define DOARGS_4 /* nothing */ -#define DOARGS_5 ldw r8, 0(sp); -#define DOARGS_6 ldw r9, 4(sp); ldw r8, 0(sp); - -/* The function has to return the error code. */ -#undef PSEUDO_ERRVAL -#define PSEUDO_ERRVAL(name, syscall_name, args) \ - ENTRY (name) \ - DO_CALL (syscall_name, args) - -#undef PSEUDO_END_ERRVAL -#define PSEUDO_END_ERRVAL(name) \ - END (name) - -#define ret_ERRVAL ret - -#else /* __ASSEMBLER__ */ - -/* In order to get __set_errno() definition in INLINE_SYSCALL. */ -#include <errno.h> - -#undef INTERNAL_SYSCALL_RAW -#define INTERNAL_SYSCALL_RAW(name, nr, args...) \ - ({ unsigned int _sys_result; \ - { \ - /* Load argument values in temporary variables - to perform side effects like function calls - before the call-used registers are set. */ \ - LOAD_ARGS_##nr (args) \ - LOAD_REGS_##nr \ - register int _r2 asm ("r2") = (int)(name); \ - register int _err asm ("r7"); \ - asm volatile ("trap" \ - : "+r" (_r2), "=r" (_err) \ - : ASM_ARGS_##nr \ - : __SYSCALL_CLOBBERS); \ - _sys_result = _err != 0 ? -_r2 : _r2; \ - } \ - (int) _sys_result; }) - -#undef INTERNAL_SYSCALL -#define INTERNAL_SYSCALL(name, nr, args...) \ - INTERNAL_SYSCALL_RAW(SYS_ify(name), nr, args) - -#undef INTERNAL_SYSCALL_NCS -#define INTERNAL_SYSCALL_NCS(number, nr, args...) \ - INTERNAL_SYSCALL_RAW(number, nr, args) - -#define LOAD_ARGS_0() -#define LOAD_REGS_0 -#define ASM_ARGS_0 -#define LOAD_ARGS_1(a1) \ - LOAD_ARGS_0 () \ - int __arg1 = (int) (a1); -#define LOAD_REGS_1 \ - register int _r4 asm ("r4") = __arg1; \ - LOAD_REGS_0 -#define ASM_ARGS_1 "r" (_r4) -#define LOAD_ARGS_2(a1, a2) \ - LOAD_ARGS_1 (a1) \ - int __arg2 = (int) (a2); -#define LOAD_REGS_2 \ - register int _r5 asm ("r5") = __arg2; \ - LOAD_REGS_1 -#define ASM_ARGS_2 ASM_ARGS_1, "r" (_r5) -#define LOAD_ARGS_3(a1, a2, a3) \ - LOAD_ARGS_2 (a1, a2) \ - int __arg3 = (int) (a3); -#define LOAD_REGS_3 \ - register int _r6 asm ("r6") = __arg3; \ - LOAD_REGS_2 -#define ASM_ARGS_3 ASM_ARGS_2, "r" (_r6) -#define LOAD_ARGS_4(a1, a2, a3, a4) \ - LOAD_ARGS_3 (a1, a2, a3) \ - int __arg4 = (int) (a4); -#define LOAD_REGS_4 \ - register int _r7 asm ("r7") = __arg4; \ - LOAD_REGS_3 -#define ASM_ARGS_4 ASM_ARGS_3, "r" (_r7) -#define LOAD_ARGS_5(a1, a2, a3, a4, a5) \ - LOAD_ARGS_4 (a1, a2, a3, a4) \ - int __arg5 = (int) (a5); -#define LOAD_REGS_5 \ - register int _r8 asm ("r8") = __arg5; \ - LOAD_REGS_4 -#define ASM_ARGS_5 ASM_ARGS_4, "r" (_r8) -#define LOAD_ARGS_6(a1, a2, a3, a4, a5, a6) \ - LOAD_ARGS_5 (a1, a2, a3, a4, a5) \ - int __arg6 = (int) (a6); -#define LOAD_REGS_6 \ - register int _r9 asm ("r9") = __arg6; \ - LOAD_REGS_5 -#define ASM_ARGS_6 ASM_ARGS_5, "r" (_r9) - -#define __SYSCALL_CLOBBERS "memory" - -#undef HAVE_INTERNAL_BRK_ADDR_SYMBOL -#define HAVE_INTERNAL_BRK_ADDR_SYMBOL 1 - -#endif /* __ASSEMBLER__ */ - -#endif /* linux/nios2/sysdep.h */ diff --git a/sysdeps/unix/sysv/linux/nios2/time64-compat.h b/sysdeps/unix/sysv/linux/nios2/time64-compat.h deleted file mode 100644 index 700f854..0000000 --- a/sysdeps/unix/sysv/linux/nios2/time64-compat.h +++ /dev/null @@ -1,2 +0,0 @@ -/* ABI support 64-bit in non-default mode. */ -#define TIME64_NON_DEFAULT diff --git a/sysdeps/unix/sysv/linux/nios2/ucontext_i.sym b/sysdeps/unix/sysv/linux/nios2/ucontext_i.sym deleted file mode 100644 index a844c96..0000000 --- a/sysdeps/unix/sysv/linux/nios2/ucontext_i.sym +++ /dev/null @@ -1,29 +0,0 @@ -#include <inttypes.h> -#include <signal.h> -#include <stddef.h> -#include <sys/ucontext.h> - -#include "kernel_rt_sigframe.h" - -SIG_BLOCK -SIG_SETMASK - -_NSIG8 (_NSIG / 8) - -MCONTEXT_VERSION - --- Offsets of the fields in the kernel rt_sigframe_t structure. -#define rt_sigframe(member) offsetof (struct kernel_rt_sigframe, member) - -RT_SIGFRAME_SIZE sizeof (struct kernel_rt_sigframe) -RT_SIGFRAME_UCONTEXT rt_sigframe (uc) - --- Offsets of the fields in the ucontext_t structure. -#define ucontext(member) offsetof (ucontext_t, member) - -UCONTEXT_FLAGS ucontext (uc_flags) -UCONTEXT_LINK ucontext (uc_link) -UCONTEXT_STACK ucontext (uc_stack) -UCONTEXT_MCONTEXT ucontext (uc_mcontext) -UCONTEXT_SIGMASK ucontext (uc_sigmask) -UCONTEXT_SIZE sizeof (ucontext_t) diff --git a/sysdeps/unix/sysv/linux/not-cancel.h b/sysdeps/unix/sysv/linux/not-cancel.h index 2a7585b..5ac6dd4 100644 --- a/sysdeps/unix/sysv/linux/not-cancel.h +++ b/sysdeps/unix/sysv/linux/not-cancel.h @@ -1,5 +1,5 @@ /* Uncancelable versions of cancelable interfaces. Linux/NPTL version. - 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 @@ -27,18 +27,19 @@ #include <sys/syscall.h> #include <sys/wait.h> #include <time.h> +#include <sys/random.h> /* Non cancellable open syscall. */ -__typeof (open) __open_nocancel; +extern int __open_nocancel (const char *, int, ...); /* Non cancellable open syscall (LFS version). */ -__typeof (open64) __open64_nocancel; +extern int __open64_nocancel (const char *, int, ...); /* Non cancellable openat syscall. */ -__typeof (openat) __openat_nocancel; +extern int __openat_nocancel (int fd, const char *, int, ...); /* Non cacellable openat syscall (LFS version). */ -__typeof (openat64) __openat64_nocancel; +extern int __openat64_nocancel (int fd, const char *, int, ...); /* Non cancellable read syscall. */ __typeof (__read) __read_nocancel; @@ -52,8 +53,11 @@ __typeof (__write) __write_nocancel; /* Uncancelable close. */ __typeof (__close) __close_nocancel; +/* Uncancellable close that does not also set errno in case of failure. */ +void __close_nocancel_nostatus (int); + /* Uncancelable fcntl. */ -__typeof (__fcntl) __fcntl64_nocancel; +int __fcntl64_nocancel (int, int, ...); #if IS_IN (libc) || IS_IN (rtld) hidden_proto (__open_nocancel) @@ -64,17 +68,10 @@ hidden_proto (__read_nocancel) hidden_proto (__pread64_nocancel) hidden_proto (__write_nocancel) hidden_proto (__close_nocancel) +hidden_proto (__close_nocancel_nostatus) hidden_proto (__fcntl64_nocancel) #endif -/* Non cancellable close syscall that does not also set errno in case of - failure. */ -static inline void -__close_nocancel_nostatus (int fd) -{ - __close_nocancel (fd); -} - /* Non cancellable writev syscall that does not also set errno in case of failure. */ static inline void @@ -84,15 +81,17 @@ __writev_nocancel_nostatus (int fd, const struct iovec *iov, int iovcnt) } static inline ssize_t -__getrandom_nocancel (void *buf, size_t buflen, unsigned int flags) +__getrandom_nocancel_direct (void *buf, size_t buflen, unsigned int flags) { return INLINE_SYSCALL_CALL (getrandom, buf, buflen, flags); } +__typeof (getrandom) __getrandom_nocancel attribute_hidden; + /* Non cancellable getrandom syscall that does not also set errno in case of failure. */ static inline ssize_t -__getrandom_nocancel_nostatus (void *buf, size_t buflen, unsigned int flags) +__getrandom_nocancel_nostatus_direct (void *buf, size_t buflen, unsigned int flags) { return INTERNAL_SYSCALL_CALL (getrandom, buf, buflen, flags); } diff --git a/sysdeps/unix/sysv/linux/not-errno.h b/sysdeps/unix/sysv/linux/not-errno.h index a8b8b50..32c09b2 100644 --- a/sysdeps/unix/sysv/linux/not-errno.h +++ b/sysdeps/unix/sysv/linux/not-errno.h @@ -1,5 +1,5 @@ /* Syscall wrapper that do not set errno. Linux version. - 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/nscd_setup_thread.c b/sysdeps/unix/sysv/linux/nscd_setup_thread.c index 6e5f6a4..22a3613 100644 --- a/sysdeps/unix/sysv/linux/nscd_setup_thread.c +++ b/sysdeps/unix/sysv/linux/nscd_setup_thread.c @@ -1,5 +1,5 @@ /* Setup of nscd worker threads. Linux version. - Copyright (C) 2004-2024 Free Software Foundation, Inc. + Copyright (C) 2004-2025 Free Software Foundation, Inc. This file is part of the GNU C Library. This program is free software; you can redistribute it and/or modify diff --git a/sysdeps/unix/sysv/linux/ntp_gettime.c b/sysdeps/unix/sysv/linux/ntp_gettime.c index c293a53..ad32d56 100644 --- a/sysdeps/unix/sysv/linux/ntp_gettime.c +++ b/sysdeps/unix/sysv/linux/ntp_gettime.c @@ -1,4 +1,4 @@ -/* 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/ntp_gettimex.c b/sysdeps/unix/sysv/linux/ntp_gettimex.c index 92df9a0..bd14e2e 100644 --- a/sysdeps/unix/sysv/linux/ntp_gettimex.c +++ b/sysdeps/unix/sysv/linux/ntp_gettimex.c @@ -1,4 +1,4 @@ -/* 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/old_termios.h b/sysdeps/unix/sysv/linux/old_termios.h new file mode 100644 index 0000000..56d19ba --- /dev/null +++ b/sysdeps/unix/sysv/linux/old_termios.h @@ -0,0 +1,23 @@ +/* old_termios.h for Linux other than MIPS and SPARC + + Copyright (C) 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 + <https://www.gnu.org/licenses/>. */ + +/* By default, no old termios structure */ +#define _HAVE_STRUCT_OLD_TERMIOS 0 +#define OLD_NCCS NCCS +typedef struct termios old_termios_t; diff --git a/sysdeps/unix/sysv/linux/olddirent.h b/sysdeps/unix/sysv/linux/olddirent.h index 239f790..b64f48d 100644 --- a/sysdeps/unix/sysv/linux/olddirent.h +++ b/sysdeps/unix/sysv/linux/olddirent.h @@ -1,4 +1,4 @@ -/* 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 @@ -34,8 +34,6 @@ extern struct __old_dirent64 *__old_readdir64 (DIR *__dirp); libc_hidden_proto (__old_readdir64); extern int __old_readdir64_r (DIR *__dirp, struct __old_dirent64 *__entry, struct __old_dirent64 **__result); -extern __ssize_t __old_getdents64 (int __fd, char *__buf, size_t __nbytes) - attribute_hidden; int __old_scandir64 (const char * __dir, struct __old_dirent64 *** __namelist, int (*__selector) (const struct __old_dirent64 *), diff --git a/sysdeps/unix/sysv/linux/open.c b/sysdeps/unix/sysv/linux/open.c index 1ddc627..76d804f 100644 --- a/sysdeps/unix/sysv/linux/open.c +++ b/sysdeps/unix/sysv/linux/open.c @@ -1,5 +1,5 @@ /* Linux open syscall implementation, non-LFS. - 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/open64.c b/sysdeps/unix/sysv/linux/open64.c index f15a921..7558be3 100644 --- a/sysdeps/unix/sysv/linux/open64.c +++ b/sysdeps/unix/sysv/linux/open64.c @@ -1,5 +1,5 @@ /* Linux open syscall implementation, LFS. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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/open64_nocancel.c b/sysdeps/unix/sysv/linux/open64_nocancel.c index c6b6845..7a62eba 100644 --- a/sysdeps/unix/sysv/linux/open64_nocancel.c +++ b/sysdeps/unix/sysv/linux/open64_nocancel.c @@ -1,5 +1,5 @@ /* Linux open syscall implementation, LFS, non-cancellable. - 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/open_by_handle_at.c b/sysdeps/unix/sysv/linux/open_by_handle_at.c index 730059d..824b214 100644 --- a/sysdeps/unix/sysv/linux/open_by_handle_at.c +++ b/sysdeps/unix/sysv/linux/open_by_handle_at.c @@ -1,5 +1,5 @@ /* Obtain handle for an open file via a handle. Linux implementation. - 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/open_nocancel.c b/sysdeps/unix/sysv/linux/open_nocancel.c index d3412ca..98afb73 100644 --- a/sysdeps/unix/sysv/linux/open_nocancel.c +++ b/sysdeps/unix/sysv/linux/open_nocancel.c @@ -1,5 +1,5 @@ /* Linux open syscall implementation, non-LFS, non-cancellable. - 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/openat.c b/sysdeps/unix/sysv/linux/openat.c index d8400f4..be8b52a 100644 --- a/sysdeps/unix/sysv/linux/openat.c +++ b/sysdeps/unix/sysv/linux/openat.c @@ -1,5 +1,5 @@ /* Linux openat syscall implementation, non-LFS. - 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 diff --git a/sysdeps/unix/sysv/linux/openat64.c b/sysdeps/unix/sysv/linux/openat64.c index 3bf6730..7e71a7c 100644 --- a/sysdeps/unix/sysv/linux/openat64.c +++ b/sysdeps/unix/sysv/linux/openat64.c @@ -1,5 +1,5 @@ /* Linux openat syscall implementation, LFS. - Copyright (C) 2007-2024 Free Software Foundation, Inc. + Copyright (C) 2007-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/openat64_nocancel.c b/sysdeps/unix/sysv/linux/openat64_nocancel.c index 4e1cbb2..80c6cb2 100644 --- a/sysdeps/unix/sysv/linux/openat64_nocancel.c +++ b/sysdeps/unix/sysv/linux/openat64_nocancel.c @@ -1,5 +1,5 @@ /* Linux openat syscall implementation, LFS, non-cancellable. - 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/openat_nocancel.c b/sysdeps/unix/sysv/linux/openat_nocancel.c index 5a9458d..abb2f37 100644 --- a/sysdeps/unix/sysv/linux/openat_nocancel.c +++ b/sysdeps/unix/sysv/linux/openat_nocancel.c @@ -1,5 +1,5 @@ /* Linux openat syscall implementation, non-LFS, non-cancellable. - 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/opendir.c b/sysdeps/unix/sysv/linux/opendir.c index b521813..48e3dc4 100644 --- a/sysdeps/unix/sysv/linux/opendir.c +++ b/sysdeps/unix/sysv/linux/opendir.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2024 Free Software Foundation, Inc. +/* Copyright (C) 1991-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/or1k/arch-syscall.h b/sysdeps/unix/sysv/linux/or1k/arch-syscall.h index 2d21fa2..c2a1d51 100644 --- a/sysdeps/unix/sysv/linux/or1k/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/or1k/arch-syscall.h @@ -102,6 +102,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 @@ -132,6 +133,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 @@ -181,6 +183,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_or1k_atomic 244 @@ -224,6 +227,7 @@ #define __NR_recvmsg 212 #define __NR_remap_file_pages 234 #define __NR_removexattr 14 +#define __NR_removexattrat 466 #define __NR_renameat 38 #define __NR_renameat2 276 #define __NR_request_key 218 @@ -285,6 +289,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/or1k/bits/procfs.h b/sysdeps/unix/sysv/linux/or1k/bits/procfs.h index e6a799f..23de266 100644 --- a/sysdeps/unix/sysv/linux/or1k/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/or1k/bits/procfs.h @@ -1,5 +1,5 @@ /* Types for registers for sys/procfs.h. OpenRISC version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/or1k/clone.c b/sysdeps/unix/sysv/linux/or1k/clone.c index ff8b9eb..5d775bd 100644 --- a/sysdeps/unix/sysv/linux/or1k/clone.c +++ b/sysdeps/unix/sysv/linux/or1k/clone.c @@ -1,5 +1,5 @@ /* OpenRISC helper for the clone syscall. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/or1k/getcontext-common.S b/sysdeps/unix/sysv/linux/or1k/getcontext-common.S index 9187749..f867689 100644 --- a/sysdeps/unix/sysv/linux/or1k/getcontext-common.S +++ b/sysdeps/unix/sysv/linux/or1k/getcontext-common.S @@ -1,5 +1,5 @@ /* Save current context. OpenRISC common 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/or1k/getcontext.S b/sysdeps/unix/sysv/linux/or1k/getcontext.S index da69e69..692a624 100644 --- a/sysdeps/unix/sysv/linux/or1k/getcontext.S +++ b/sysdeps/unix/sysv/linux/or1k/getcontext.S @@ -1,5 +1,5 @@ /* Save current context. OpenRISC version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/or1k/libc.abilist b/sysdeps/unix/sysv/linux/or1k/libc.abilist index 959e59e..b62d59f 100644 --- a/sysdeps/unix/sysv/linux/or1k/libc.abilist +++ b/sysdeps/unix/sysv/linux/or1k/libc.abilist @@ -2259,3 +2259,22 @@ GLIBC_2.40 getcontext F GLIBC_2.40 makecontext F GLIBC_2.40 setcontext F GLIBC_2.40 swapcontext 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/or1k/libm.abilist b/sysdeps/unix/sysv/linux/or1k/libm.abilist index 4db8702..bef7a98 100644 --- a/sysdeps/unix/sysv/linux/or1k/libm.abilist +++ b/sysdeps/unix/sysv/linux/or1k/libm.abilist @@ -787,3 +787,75 @@ GLIBC_2.40 logp1f32 F GLIBC_2.40 logp1f32x F GLIBC_2.40 logp1f64 F GLIBC_2.40 logp1l F +GLIBC_2.41 acospi F +GLIBC_2.41 acospif F +GLIBC_2.41 acospif32 F +GLIBC_2.41 acospif32x F +GLIBC_2.41 acospif64 F +GLIBC_2.41 acospil F +GLIBC_2.41 asinpi F +GLIBC_2.41 asinpif F +GLIBC_2.41 asinpif32 F +GLIBC_2.41 asinpif32x F +GLIBC_2.41 asinpif64 F +GLIBC_2.41 asinpil F +GLIBC_2.41 atan2pi F +GLIBC_2.41 atan2pif F +GLIBC_2.41 atan2pif32 F +GLIBC_2.41 atan2pif32x F +GLIBC_2.41 atan2pif64 F +GLIBC_2.41 atan2pil F +GLIBC_2.41 atanpi F +GLIBC_2.41 atanpif F +GLIBC_2.41 atanpif32 F +GLIBC_2.41 atanpif32x F +GLIBC_2.41 atanpif64 F +GLIBC_2.41 atanpil F +GLIBC_2.41 cospi F +GLIBC_2.41 cospif F +GLIBC_2.41 cospif32 F +GLIBC_2.41 cospif32x F +GLIBC_2.41 cospif64 F +GLIBC_2.41 cospil F +GLIBC_2.41 sinpi F +GLIBC_2.41 sinpif F +GLIBC_2.41 sinpif32 F +GLIBC_2.41 sinpif32x F +GLIBC_2.41 sinpif64 F +GLIBC_2.41 sinpil F +GLIBC_2.41 tanpi F +GLIBC_2.41 tanpif F +GLIBC_2.41 tanpif32 F +GLIBC_2.41 tanpif32x F +GLIBC_2.41 tanpif64 F +GLIBC_2.41 tanpil F +GLIBC_2.42 compoundn F +GLIBC_2.42 compoundnf F +GLIBC_2.42 compoundnf32 F +GLIBC_2.42 compoundnf32x F +GLIBC_2.42 compoundnf64 F +GLIBC_2.42 compoundnl F +GLIBC_2.42 pown F +GLIBC_2.42 pownf F +GLIBC_2.42 pownf32 F +GLIBC_2.42 pownf32x F +GLIBC_2.42 pownf64 F +GLIBC_2.42 pownl F +GLIBC_2.42 powr F +GLIBC_2.42 powrf F +GLIBC_2.42 powrf32 F +GLIBC_2.42 powrf32x F +GLIBC_2.42 powrf64 F +GLIBC_2.42 powrl F +GLIBC_2.42 rootn F +GLIBC_2.42 rootnf F +GLIBC_2.42 rootnf32 F +GLIBC_2.42 rootnf32x F +GLIBC_2.42 rootnf64 F +GLIBC_2.42 rootnl F +GLIBC_2.42 rsqrt F +GLIBC_2.42 rsqrtf F +GLIBC_2.42 rsqrtf32 F +GLIBC_2.42 rsqrtf32x F +GLIBC_2.42 rsqrtf64 F +GLIBC_2.42 rsqrtl F diff --git a/sysdeps/unix/sysv/linux/or1k/makecontext.c b/sysdeps/unix/sysv/linux/or1k/makecontext.c index 7e131ba..07557e7 100644 --- a/sysdeps/unix/sysv/linux/or1k/makecontext.c +++ b/sysdeps/unix/sysv/linux/or1k/makecontext.c @@ -1,5 +1,5 @@ /* Create new context. OpenRISC version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/or1k/mmap_internal.h b/sysdeps/unix/sysv/linux/or1k/mmap_internal.h index f6fb86e..320fe13 100644 --- a/sysdeps/unix/sysv/linux/or1k/mmap_internal.h +++ b/sysdeps/unix/sysv/linux/or1k/mmap_internal.h @@ -1,5 +1,5 @@ /* Common mmap definition for Linux implementation. OpenRISC version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/or1k/or1k_clone.S b/sysdeps/unix/sysv/linux/or1k/or1k_clone.S index 7b03257..5884713 100644 --- a/sysdeps/unix/sysv/linux/or1k/or1k_clone.S +++ b/sysdeps/unix/sysv/linux/or1k/or1k_clone.S @@ -1,5 +1,5 @@ /* clone helper __or1k_clone for OpenRISC. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/or1k/prctl.c b/sysdeps/unix/sysv/linux/or1k/prctl.c index 1aa707d..d443edd 100644 --- a/sysdeps/unix/sysv/linux/or1k/prctl.c +++ b/sysdeps/unix/sysv/linux/or1k/prctl.c @@ -1,5 +1,5 @@ /* prctl - Linux specific syscall. OpenRISC 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/or1k/setcontext-common.S b/sysdeps/unix/sysv/linux/or1k/setcontext-common.S index 8a4f147..d0e72f2 100644 --- a/sysdeps/unix/sysv/linux/or1k/setcontext-common.S +++ b/sysdeps/unix/sysv/linux/or1k/setcontext-common.S @@ -1,5 +1,5 @@ /* Set current context. OpenRISC common 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/or1k/setcontext.S b/sysdeps/unix/sysv/linux/or1k/setcontext.S index a49a5c5..a64ec28 100644 --- a/sysdeps/unix/sysv/linux/or1k/setcontext.S +++ b/sysdeps/unix/sysv/linux/or1k/setcontext.S @@ -1,5 +1,5 @@ /* Set current context. OpenRISC version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/or1k/sigcontextinfo.h b/sysdeps/unix/sysv/linux/or1k/sigcontextinfo.h index 841dbbe..8adc5af 100644 --- a/sysdeps/unix/sysv/linux/or1k/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/or1k/sigcontextinfo.h @@ -1,5 +1,5 @@ /* Profile counter helper to get PC from sigcontext. OpenRISC version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/or1k/swapcontext-common.S b/sysdeps/unix/sysv/linux/or1k/swapcontext-common.S index b7e2d4c..d508f29 100644 --- a/sysdeps/unix/sysv/linux/or1k/swapcontext-common.S +++ b/sysdeps/unix/sysv/linux/or1k/swapcontext-common.S @@ -1,5 +1,5 @@ /* Swap two contexts. OpenRISC version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/or1k/swapcontext.S b/sysdeps/unix/sysv/linux/or1k/swapcontext.S index 861c1e2..05ed2f8 100644 --- a/sysdeps/unix/sysv/linux/or1k/swapcontext.S +++ b/sysdeps/unix/sysv/linux/or1k/swapcontext.S @@ -1,5 +1,5 @@ /* Swap two contexts. OpenRISC version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/or1k/sys/ucontext.h b/sysdeps/unix/sysv/linux/or1k/sys/ucontext.h index 1b42859..ea7217d 100644 --- a/sysdeps/unix/sysv/linux/or1k/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/or1k/sys/ucontext.h @@ -1,5 +1,5 @@ /* ucontext_t definition, OpenRISC version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/or1k/syscall_cancel.S b/sysdeps/unix/sysv/linux/or1k/syscall_cancel.S new file mode 100644 index 0000000..733719a --- /dev/null +++ b/sysdeps/unix/sysv/linux/or1k/syscall_cancel.S @@ -0,0 +1,63 @@ +/* Cancellable syscall wrapper. Linux/or1k 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> + +ENTRY (__syscall_cancel_arch) + l.addi r1, r1, -4 + cfi_def_cfa_offset (4) + l.sw 0(r1), r9 + cfi_offset (9, -4) + + .global __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + /* if (*cancelhandling & CANCELED_BITMASK) + __syscall_do_cancel() */ + l.movhi r19, hi(0) + l.lwz r17, 0(r3) + l.andi r17, r17, 8 + l.sfeq r17, r19 + l.bnf 1f + + /* Issue a 6 argument syscall. */ + l.or r11, r4, r4 + l.or r3, r5, r5 + l.or r4, r6, r6 + l.or r5, r7, r7 + l.or r6, r8, r8 + l.lwz r7, 4(r1) + l.lwz r8, 8(r1) + l.sys 1 + l.nop + + .global __syscall_cancel_arch_end +__syscall_cancel_arch_end: + + l.lwz r9, 0(r1) + l.jr r9 + l.addi r1, r1, 4 + cfi_remember_state + cfi_def_cfa_offset (0) + cfi_restore (9) +1: + cfi_restore_state + l.jal __syscall_do_cancel + l.nop +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/or1k/sysdep.c b/sysdeps/unix/sysv/linux/or1k/sysdep.c index f9a4e15..3619995 100644 --- a/sysdeps/unix/sysv/linux/or1k/sysdep.c +++ b/sysdeps/unix/sysv/linux/or1k/sysdep.c @@ -1,5 +1,5 @@ /* OpenRISC wrapper for setting errno. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-2025 Free Software Foundation, Inc. This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/or1k/sysdep.h b/sysdeps/unix/sysv/linux/or1k/sysdep.h index ea3cf34..284d872 100644 --- a/sysdeps/unix/sysv/linux/or1k/sysdep.h +++ b/sysdeps/unix/sysv/linux/or1k/sysdep.h @@ -1,5 +1,5 @@ /* Assembler and syscall macros. OpenRISC version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/pathconf.c b/sysdeps/unix/sysv/linux/pathconf.c index d593712..87a0a3a 100644 --- a/sysdeps/unix/sysv/linux/pathconf.c +++ b/sysdeps/unix/sysv/linux/pathconf.c @@ -1,5 +1,5 @@ /* Get file-specific information about a file. Linux version. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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 @@ -186,6 +186,9 @@ __statfs_link_max (int result, const struct statfs *fsbuf, const char *file, case LUSTRE_SUPER_MAGIC: return LUSTRE_LINK_MAX; + case BTRFS_SUPER_MAGIC: + return BTRFS_LINK_MAX; + default: return LINUX_LINK_MAX; } diff --git a/sysdeps/unix/sysv/linux/pathconf.h b/sysdeps/unix/sysv/linux/pathconf.h index b5c0e35..9683cf8 100644 --- a/sysdeps/unix/sysv/linux/pathconf.h +++ b/sysdeps/unix/sysv/linux/pathconf.h @@ -1,5 +1,5 @@ /* Common parts of Linux implementation of pathconf and fpathconf. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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/pause.c b/sysdeps/unix/sysv/linux/pause.c index a29dac5..1e421ce 100644 --- a/sysdeps/unix/sysv/linux/pause.c +++ b/sysdeps/unix/sysv/linux/pause.c @@ -1,5 +1,5 @@ /* Linux pause syscall implementation. - 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/personality.c b/sysdeps/unix/sysv/linux/personality.c index 3c975bf..3332fc6 100644 --- a/sysdeps/unix/sysv/linux/personality.c +++ b/sysdeps/unix/sysv/linux/personality.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2015-2024 Free Software Foundation, Inc. +/* Copyright (C) 2015-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/pidfd_getpid.c b/sysdeps/unix/sysv/linux/pidfd_getpid.c index 6967477..4f16865 100644 --- a/sysdeps/unix/sysv/linux/pidfd_getpid.c +++ b/sysdeps/unix/sysv/linux/pidfd_getpid.c @@ -1,5 +1,5 @@ /* pidfd_getpid - Get the associated pid from the pid file descriptor. - 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/pidfd_spawn.c b/sysdeps/unix/sysv/linux/pidfd_spawn.c index 2735315..6d5a1bd 100644 --- a/sysdeps/unix/sysv/linux/pidfd_spawn.c +++ b/sysdeps/unix/sysv/linux/pidfd_spawn.c @@ -1,5 +1,5 @@ /* pidfd_spawn - Spawn a process and return a PID file descriptor. - 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/pidfd_spawnp.c b/sysdeps/unix/sysv/linux/pidfd_spawnp.c index 5175a6f..f2af942 100644 --- a/sysdeps/unix/sysv/linux/pidfd_spawnp.c +++ b/sysdeps/unix/sysv/linux/pidfd_spawnp.c @@ -1,5 +1,5 @@ /* pidfd_spawnp - Spawn a process and return a PID file descriptor. - 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/pipe.c b/sysdeps/unix/sysv/linux/pipe.c index e47e3fb..2955f41 100644 --- a/sysdeps/unix/sysv/linux/pipe.c +++ b/sysdeps/unix/sysv/linux/pipe.c @@ -1,5 +1,5 @@ /* Create create pipe. Linux generic version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/pkey_get.c b/sysdeps/unix/sysv/linux/pkey_get.c index 743bd09..5036c93 100644 --- a/sysdeps/unix/sysv/linux/pkey_get.c +++ b/sysdeps/unix/sysv/linux/pkey_get.c @@ -1,5 +1,5 @@ /* Obtaining the thread memory protection key, generic stub. - 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 @@ -17,10 +17,13 @@ <https://www.gnu.org/licenses/>. */ #include <errno.h> +#include <sys/mman.h> int -pkey_get (int key) +__pkey_get (int key) { __set_errno (ENOSYS); return -1; } +libc_hidden_def (__pkey_get) +weak_alias (__pkey_get, pkey_get) diff --git a/sysdeps/unix/sysv/linux/pkey_mprotect.c b/sysdeps/unix/sysv/linux/pkey_mprotect.c index b7afa79..376c728 100644 --- a/sysdeps/unix/sysv/linux/pkey_mprotect.c +++ b/sysdeps/unix/sysv/linux/pkey_mprotect.c @@ -1,5 +1,5 @@ /* mprotect with a memory protection key. - 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 @@ -22,7 +22,7 @@ #include <sysdep.h> int -pkey_mprotect (void *addr, size_t len, int prot, int pkey) +__pkey_mprotect (void *addr, size_t len, int prot, int pkey) { if (pkey == -1) /* If the key is -1, the system call is precisely equivalent to @@ -30,3 +30,5 @@ pkey_mprotect (void *addr, size_t len, int prot, int pkey) return __mprotect (addr, len, prot); return INLINE_SYSCALL_CALL (pkey_mprotect, addr, len, prot, pkey); } +libc_hidden_def (__pkey_mprotect) +weak_alias (__pkey_mprotect, pkey_mprotect) diff --git a/sysdeps/unix/sysv/linux/pkey_set.c b/sysdeps/unix/sysv/linux/pkey_set.c index d5d59e3..a3b33ba 100644 --- a/sysdeps/unix/sysv/linux/pkey_set.c +++ b/sysdeps/unix/sysv/linux/pkey_set.c @@ -1,5 +1,5 @@ /* Changing the thread memory protection key, generic stub. - 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 @@ -17,10 +17,13 @@ <https://www.gnu.org/licenses/>. */ #include <errno.h> +#include <sys/mman.h> int -pkey_set (int key, unsigned int access_rights) +__pkey_set (int key, unsigned int access_restrictions) { __set_errno (ENOSYS); return -1; } +libc_hidden_def (__pkey_set) +weak_alias (__pkey_set, pkey_set) diff --git a/sysdeps/unix/sysv/linux/poll.c b/sysdeps/unix/sysv/linux/poll.c index 76c967d..8ee6621 100644 --- a/sysdeps/unix/sysv/linux/poll.c +++ b/sysdeps/unix/sysv/linux/poll.c @@ -1,5 +1,5 @@ /* Linux poll implementation. - 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/posix_fadvise.c b/sysdeps/unix/sysv/linux/posix_fadvise.c index 150f5df..33d9b02 100644 --- a/sysdeps/unix/sysv/linux/posix_fadvise.c +++ b/sysdeps/unix/sysv/linux/posix_fadvise.c @@ -1,4 +1,4 @@ -/* 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/posix_fadvise64.c b/sysdeps/unix/sysv/linux/posix_fadvise64.c index 681bc20..b2dc2f8 100644 --- a/sysdeps/unix/sysv/linux/posix_fadvise64.c +++ b/sysdeps/unix/sysv/linux/posix_fadvise64.c @@ -1,4 +1,4 @@ -/* 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/posix_fallocate.c b/sysdeps/unix/sysv/linux/posix_fallocate.c index fff373c..c0ab457 100644 --- a/sysdeps/unix/sysv/linux/posix_fallocate.c +++ b/sysdeps/unix/sysv/linux/posix_fallocate.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/posix_fallocate64.c b/sysdeps/unix/sysv/linux/posix_fallocate64.c index f9b122b..8dfbcb1 100644 --- a/sysdeps/unix/sysv/linux/posix_fallocate64.c +++ b/sysdeps/unix/sysv/linux/posix_fallocate64.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/posix_madvise.c b/sysdeps/unix/sysv/linux/posix_madvise.c index ae1a712..6802c3f 100644 --- a/sysdeps/unix/sysv/linux/posix_madvise.c +++ b/sysdeps/unix/sysv/linux/posix_madvise.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/powerpc/Makefile b/sysdeps/unix/sysv/linux/powerpc/Makefile index 24827ef..cddb624 100644 --- a/sysdeps/unix/sysv/linux/powerpc/Makefile +++ b/sysdeps/unix/sysv/linux/powerpc/Makefile @@ -13,6 +13,10 @@ gen-as-const-headers += ucontext_i.sym endif ifeq ($(subdir),elf) +dl-routines += \ + dl-hwcap-info \ + # dl-routines + # Otherwise tst-tls-dlinfo fails due to tst-tlsmod2.so using static tls. ifeq ($(have-tls-get-addr-optimize),yes) LDFLAGS-tst-tlsmod2.so += -Wl,--no-tls-get-addr-optimize diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/environments.h b/sysdeps/unix/sysv/linux/powerpc/bits/environments.h index d31d5c2..d8339e6 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/environments.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/environments.h @@ -1,4 +1,4 @@ -/* 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/powerpc/bits/fcntl.h b/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h index 2f17fe9..24fd3b7 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h @@ -1,5 +1,5 @@ /* O_*, F_*, FD_* bit values for Linux/PowerPC. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/powerpc/bits/ioctl-types.h b/sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h index 4044c00..267fa09 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h @@ -1,5 +1,5 @@ /* Structure types for pre-termios terminal ioctls. Linux/powerpc 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 @@ -32,17 +32,6 @@ struct winsize unsigned short int ws_ypixel; }; -#define NCC 10 -struct termio - { - unsigned short int c_iflag; /* input mode flags */ - unsigned short int c_oflag; /* output mode flags */ - unsigned short int c_cflag; /* control mode flags */ - unsigned short int c_lflag; /* local mode flags */ - unsigned char c_line; /* line discipline */ - unsigned char c_cc[NCC]; /* control characters */ -}; - /* modem lines */ #define TIOCM_LE 0x001 #define TIOCM_DTR 0x002 diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/ioctls.h b/sysdeps/unix/sysv/linux/powerpc/bits/ioctls.h new file mode 100644 index 0000000..e1921df --- /dev/null +++ b/sysdeps/unix/sysv/linux/powerpc/bits/ioctls.h @@ -0,0 +1,36 @@ +/* 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 + 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/>. */ + +#ifndef _SYS_IOCTL_H +# error "Never use <bits/ioctls.h> directly; include <sys/ioctl.h> instead." +#endif + +/* Use the definitions from the kernel header files. */ +#include <asm/ioctls.h> + +/* PowerPC quirk: on PowerPC only, ioctl() emulates the TCGETS/TCSETS* + ioctls with tcgetattr/tcsetattr using the glibc struct termios. + As struct termios2 is the same as the kernel struct termios on PowerPC, + simply consider the kernel ones as the termios2 interface, even + though the kernel doesn't call it that. */ + +#define TCGETS2 _IOR ('t', 19, struct termios2) +#define TCSETS2 _IOW ('t', 20, struct termios2) +#define TCSETSW2 _IOW ('t', 21, struct termios2) +#define TCSETSF2 _IOW ('t', 22, struct termios2) + +#include <linux/sockios.h> diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/ipc-perm.h b/sysdeps/unix/sysv/linux/powerpc/bits/ipc-perm.h index d2a2b5b..0c281d8 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/ipc-perm.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/ipc-perm.h @@ -1,5 +1,5 @@ /* struct ipc_perm definition. Linux/powerpc version. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/powerpc/bits/mman.h b/sysdeps/unix/sysv/linux/powerpc/bits/mman.h index 2b392cc..99c8e52 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/mman.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/mman.h @@ -1,5 +1,5 @@ /* Definitions for POSIX memory map interface. Linux/PowerPC 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/powerpc/bits/ppc.h b/sysdeps/unix/sysv/linux/powerpc/bits/ppc.h index 21843fb..7749db6 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/ppc.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/ppc.h @@ -1,5 +1,5 @@ /* Facilities specific to the PowerPC architecture on Linux - Copyright (C) 2012-2024 Free Software Foundation, Inc. + Copyright (C) 2012-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/powerpc/bits/procfs.h b/sysdeps/unix/sysv/linux/powerpc/bits/procfs.h index 4e21788..501464b 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/procfs.h @@ -1,5 +1,5 @@ /* Types for registers for sys/procfs.h. PowerPC 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/powerpc/bits/pthread_stack_min.h b/sysdeps/unix/sysv/linux/powerpc/bits/pthread_stack_min.h index 509919d..540cdbb 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/pthread_stack_min.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/pthread_stack_min.h @@ -1,5 +1,5 @@ /* Definition of PTHREAD_STACK_MIN. Linux/PPC version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/powerpc/bits/rseq.h b/sysdeps/unix/sysv/linux/powerpc/bits/rseq.h index 85544aa..d2d6216 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/rseq.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/rseq.h @@ -1,5 +1,5 @@ /* Restartable Sequences Linux powerpc architecture header. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + 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 diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h b/sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h index 2c198eb..17a17ce 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h @@ -1,5 +1,5 @@ /* sigstack, sigaltstack definitions. - Copyright (C) 1998-2024 Free Software Foundation, Inc. + Copyright (C) 1998-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/powerpc/bits/socket-constants.h b/sysdeps/unix/sysv/linux/powerpc/bits/socket-constants.h index 0d3e095..fee5674 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/socket-constants.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/socket-constants.h @@ -1,5 +1,5 @@ /* Socket constants which vary among Linux architectures. Version for POWER. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/powerpc/bits/struct_stat.h b/sysdeps/unix/sysv/linux/powerpc/bits/struct_stat.h index 2cf3315..f0721f9 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/struct_stat.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/struct_stat.h @@ -1,5 +1,5 @@ /* Definition for struct stat. - 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/powerpc/bits/termios-c_cc.h b/sysdeps/unix/sysv/linux/powerpc/bits/termios-c_cc.h index c5f395a..20f1661 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/termios-c_cc.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/termios-c_cc.h @@ -1,5 +1,5 @@ /* termios c_cc symbolic constant definitions. Linux/powerpc version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/powerpc/bits/termios-c_cflag.h b/sysdeps/unix/sysv/linux/powerpc/bits/termios-c_cflag.h index 6607bb0..a90d581 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/termios-c_cflag.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/termios-c_cflag.h @@ -1,5 +1,5 @@ /* termios control mode definitions. Linux/powerpc version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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 @@ -35,5 +35,7 @@ #define CLOCAL 00100000 #ifdef __USE_MISC -# define ADDRB 04000000000 +# define ADDRB 04000000000 +# define CMSPAR 010000000000 /* Mark or space (stick) parity. */ +# define CRTSCTS 020000000000 /* Flow control. */ #endif diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/termios-c_iflag.h b/sysdeps/unix/sysv/linux/powerpc/bits/termios-c_iflag.h index b5e066d..ef076dc 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/termios-c_iflag.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/termios-c_iflag.h @@ -1,5 +1,5 @@ /* termios input mode definitions. Linux/powerpc version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/powerpc/bits/termios-c_lflag.h b/sysdeps/unix/sysv/linux/powerpc/bits/termios-c_lflag.h index 9f6b0ad5..9b67040 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/termios-c_lflag.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/termios-c_lflag.h @@ -1,5 +1,5 @@ /* termios local mode definitions. Linux/powerpc version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/powerpc/bits/termios-c_oflag.h b/sysdeps/unix/sysv/linux/powerpc/bits/termios-c_oflag.h index 99a0bd0..67f52df 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/termios-c_oflag.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/termios-c_oflag.h @@ -1,5 +1,5 @@ /* termios output mode definitions. Linux/powerpc version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/powerpc/bits/termios-baud.h b/sysdeps/unix/sysv/linux/powerpc/bits/termios-cbaud.h index 6862050..7bcbba4 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/termios-baud.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/termios-cbaud.h @@ -1,5 +1,5 @@ /* termios baud rate selection definitions. Linux/powerpc version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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 @@ -17,29 +17,29 @@ <https://www.gnu.org/licenses/>. */ #ifndef _TERMIOS_H -# error "Never include <bits/termios-baud.h> directly; use <termios.h> instead." +# error "Never include <bits/termios-cbaud.h> directly; use <termios.h> instead." #endif #ifdef __USE_MISC -# define CBAUD 0000377 -# define CBAUDEX 0000020 -# define CMSPAR 010000000000 /* mark or space (stick) parity */ -# define CRTSCTS 020000000000 /* flow control */ +# define CBAUD 000000377 +# define CBAUDEX 000000020 +# define CIBAUD 077600000 +# define IBSHIFT 16 #endif -#define B57600 00020 -#define B115200 00021 -#define B230400 00022 -#define B460800 00023 -#define B500000 00024 -#define B576000 00025 -#define B921600 00026 -#define B1000000 00027 -#define B1152000 00030 -#define B1500000 00031 -#define B2000000 00032 -#define B2500000 00033 -#define B3000000 00034 -#define B3500000 00035 -#define B4000000 00036 -#define __MAX_BAUD B4000000 +#define __B57600 00020 +#define __B115200 00021 +#define __B230400 00022 +#define __B460800 00023 +#define __B500000 00024 +#define __B576000 00025 +#define __B921600 00026 +#define __B1000000 00027 +#define __B1152000 00030 +#define __B1500000 00031 +#define __B2000000 00032 +#define __B2500000 00033 +#define __B3000000 00034 +#define __B3500000 00035 +#define __B4000000 00036 +#define __BOTHER 00037 diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/termios-misc.h b/sysdeps/unix/sysv/linux/powerpc/bits/termios-misc.h index aec8ac9..fe74858 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/termios-misc.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/termios-misc.h @@ -1,5 +1,5 @@ /* termios baud platform specific definitions. Linux/powerpc version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/powerpc/bits/timesize.h b/sysdeps/unix/sysv/linux/powerpc/bits/timesize.h index d25cff2..31edb4b 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/timesize.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/timesize.h @@ -1,5 +1,5 @@ /* Bit size of the time_t type at glibc build time, Linux/PowerPC. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/powerpc/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_msqid_ds.h index 44ae082..43e1827 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_msqid_ds.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_msqid_ds.h @@ -1,5 +1,5 @@ /* Linux/PowerPC implementation of the SysV message struct msqid_ds. - 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/powerpc/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h index ccee57c..d5c40f5 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h @@ -1,5 +1,5 @@ /* PowerPC implementation of the semaphore struct semid_ds. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/powerpc/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h index 58145d0..9a751fe 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h @@ -1,5 +1,5 @@ /* Linux/PowerPC implementation of the shared memory struct shmid_ds. - 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/powerpc/bits/typesizes.h b/sysdeps/unix/sysv/linux/powerpc/bits/typesizes.h index 065ede2..9db989d 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/typesizes.h @@ -1,5 +1,5 @@ /* bits/typesizes.h -- underlying types for *_t. PowerPC version. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/powerpc/cancellation-pc-check.h b/sysdeps/unix/sysv/linux/powerpc/cancellation-pc-check.h new file mode 100644 index 0000000..709882d --- /dev/null +++ b/sysdeps/unix/sysv/linux/powerpc/cancellation-pc-check.h @@ -0,0 +1,65 @@ +/* Architecture specific code for pthread cancellation handling. + Linux/PowerPC 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/>. */ + +#ifndef _NPTL_CANCELLATION_PC_CHECK +#define _NPTL_CANCELLATION_PC_CHECK + +#include <sigcontextinfo.h> + +/* For syscalls with side-effects (e.g read that might return partial read), + the kernel cannot restart the syscall when interrupted by a signal, it must + return from the call with whatever partial result. In this case, the saved + program counter is set just after the syscall instruction, so the SIGCANCEL + handler should not act on cancellation. + + The __syscall_cancel_arch function, used for all cancellable syscalls, + contains two extra markers, __syscall_cancel_arch_start and + __syscall_cancel_arch_end. The former points to just before the initial + conditional branch that checks if the thread has received a cancellation + request, while former points to the instruction after the one responsible + to issue the syscall. + + The function check if the program counter (PC) from ucontext_t CTX is + within the start and then end boundary from the __syscall_cancel_arch + bridge. Return TRUE if the PC is within the boundary, meaning the + syscall does not have any side effects; or FALSE otherwise. */ + +static __always_inline bool +cancellation_pc_check (void *ctx) +{ + /* Both are defined in syscall_cancel.S. */ + extern const char __syscall_cancel_arch_start[1]; + extern const char __syscall_cancel_arch_end_sc[1]; +#if defined(USE_PPC_SVC) && defined(__powerpc64__) + extern const char __syscall_cancel_arch_end_svc[1]; +#endif + + uintptr_t pc = sigcontext_get_pc (ctx); + + return pc >= (uintptr_t) __syscall_cancel_arch_start +#if defined(USE_PPC_SVC) && defined(__powerpc64__) + && THREAD_GET_HWCAP() & PPC_FEATURE2_SCV + ? pc < (uintptr_t) __syscall_cancel_arch_end_sc + : pc < (uintptr_t) __syscall_cancel_arch_end_svc; +#else + && pc < (uintptr_t) __syscall_cancel_arch_end_sc; +#endif +} + +#endif diff --git a/sysdeps/unix/sysv/linux/powerpc/configure b/sysdeps/unix/sysv/linux/powerpc/configure index 61ae675..ef2055d 100644 --- a/sysdeps/unix/sysv/linux/powerpc/configure +++ b/sysdeps/unix/sysv/linux/powerpc/configure @@ -40,48 +40,7 @@ fi printf "%s\n" "$libc_cv_mlong_double_128ibm" >&6; } if test "$libc_cv_mlong_double_128ibm" = no; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC $CFLAGS supports -mabi=ibmlongdouble" >&5 -printf %s "checking whether $CC $CFLAGS supports -mabi=ibmlongdouble... " >&6; } -if test ${libc_cv_mabi_ibmlongdouble+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -mlong-double-128 -mabi=ibmlongdouble" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <float.h> -int -main (void) -{ - -#if LDBL_MANT_DIG != 106 -# error "compiler doesn't implement IBM extended format of long double" -#endif -long double foobar (long double x) { return x; } - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - libc_cv_mabi_ibmlongdouble=yes -else case e in #( - e) libc_cv_mabi_ibmlongdouble=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS="$save_CFLAGS" ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mabi_ibmlongdouble" >&5 -printf "%s\n" "$libc_cv_mabi_ibmlongdouble" >&6; } - - if test "$libc_cv_mabi_ibmlongdouble" = yes; then - CFLAGS="$CFLAGS -mabi=ibmlongdouble" - else - as_fn_error $? "this configuration requires -mlong-double-128 IBM extended format support" "$LINENO" 5 - fi + CFLAGS="$CFLAGS -mabi=ibmlongdouble" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for linker that supports --no-tls-get-addr-optimize" >&5 diff --git a/sysdeps/unix/sysv/linux/powerpc/configure.ac b/sysdeps/unix/sysv/linux/powerpc/configure.ac index 8d2ec60..42347a6 100644 --- a/sysdeps/unix/sysv/linux/powerpc/configure.ac +++ b/sysdeps/unix/sysv/linux/powerpc/configure.ac @@ -16,24 +16,7 @@ long double foobar (long double x) { return x; }]])], CFLAGS="$save_CFLAGS"]) if test "$libc_cv_mlong_double_128ibm" = no; then - AC_CACHE_CHECK(whether $CC $CFLAGS supports -mabi=ibmlongdouble, - libc_cv_mabi_ibmlongdouble, [dnl - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -mlong-double-128 -mabi=ibmlongdouble" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <float.h>]], [[ -#if LDBL_MANT_DIG != 106 -# error "compiler doesn't implement IBM extended format of long double" -#endif -long double foobar (long double x) { return x; }]])], - libc_cv_mabi_ibmlongdouble=yes, - libc_cv_mabi_ibmlongdouble=no) - CFLAGS="$save_CFLAGS"]) - - if test "$libc_cv_mabi_ibmlongdouble" = yes; then - CFLAGS="$CFLAGS -mabi=ibmlongdouble" - else - AC_MSG_ERROR([this configuration requires -mlong-double-128 IBM extended format support]) - fi + CFLAGS="$CFLAGS -mabi=ibmlongdouble" fi LIBC_LINKER_FEATURE([--no-tls-get-addr-optimize], [-Wl,--no-tls-get-addr-optimize], diff --git a/sysdeps/unix/sysv/linux/powerpc/cpu-features.c b/sysdeps/unix/sysv/linux/powerpc/cpu-features.c index a947d62..88fe55f 100644 --- a/sysdeps/unix/sysv/linux/powerpc/cpu-features.c +++ b/sysdeps/unix/sysv/linux/powerpc/cpu-features.c @@ -1,5 +1,5 @@ /* Initialize cpu feature data. PowerPC version. - 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 @@ -21,8 +21,19 @@ #include <cpu-features.h> #include <elf/dl-tunables.h> #include <dl-tunables-parse.h> +#include <dl-hwcap-info.h> #include <unistd.h> #include <string.h> +#include <ldsodefs.h> + +static void set_hwcap_bit (unsigned long int *hwcap, bool disable, + unsigned long int tcb_value, unsigned int value) +{ + if (disable) + *hwcap &= ~value; + else + *hwcap |= tcb_value & value; +} static void TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp) @@ -55,32 +66,27 @@ TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp) continue; size_t offset = 0; - for (int i = 0; i < array_length (hwcap_tunables); ++i) + for (int i = 0; i < __dl_hwcap_info_size; ++i) { - const char *hwcap_name = hwcap_names + offset; + const char *hwcap_name = __dl_hwcap_names + offset; size_t hwcap_name_len = strlen (hwcap_name); /* Check the tunable name on the supported list. */ if (tunable_str_comma_strcmp (&t, hwcap_name, hwcap_name_len)) { - /* Update the hwcap and hwcap2 bits. */ - if (t.disable) + switch (__dl_hwcap_info[i].hwcap) { - /* Id is 1 for hwcap2 tunable. */ - if (hwcap_tunables[i].id) - cpu_features->hwcap2 &= ~(hwcap_tunables[i].mask); - else - cpu_features->hwcap &= ~(hwcap_tunables[i].mask); - } - else - { - /* Enable the features and also check that no unsupported - features were enabled by user. */ - if (hwcap_tunables[i].id) - cpu_features->hwcap2 |= (tcbv_hwcap2 & hwcap_tunables[i].mask); - else - cpu_features->hwcap |= (tcbv_hwcap & hwcap_tunables[i].mask); + case AT_HWCAP: + set_hwcap_bit (&cpu_features->hwcap, t.disable, tcbv_hwcap, + __dl_hwcap_info[i].value); + break; + + case AT_HWCAP2: + set_hwcap_bit (&cpu_features->hwcap2, t.disable, tcbv_hwcap2, + __dl_hwcap_info[i].value); + break; + + /* Ignore unknown values. */ } - break; } offset += hwcap_name_len + 1; } diff --git a/sysdeps/unix/sysv/linux/powerpc/cpu-features.h b/sysdeps/unix/sysv/linux/powerpc/cpu-features.h index e9eb6a1..f15a803 100644 --- a/sysdeps/unix/sysv/linux/powerpc/cpu-features.h +++ b/sysdeps/unix/sysv/linux/powerpc/cpu-features.h @@ -1,5 +1,5 @@ /* Initialize cpu feature data. PowerPC version. - Copyright (C) 2017-2024 Free Software Foundation, Inc. + Copyright (C) 2017-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 @@ -30,103 +30,4 @@ struct cpu_features unsigned long int hwcap4; }; -static const char hwcap_names[] = { - "4xxmac\0" - "altivec\0" - "arch_2_05\0" - "arch_2_06\0" - "archpmu\0" - "booke\0" - "cellbe\0" - "dfp\0" - "efpdouble\0" - "efpsingle\0" - "fpu\0" - "ic_snoop\0" - "mmu\0" - "notb\0" - "pa6t\0" - "power4\0" - "power5\0" - "power5+\0" - "power6x\0" - "ppc32\0" - "ppc601\0" - "ppc64\0" - "ppcle\0" - "smt\0" - "spe\0" - "true_le\0" - "ucache\0" - "vsx\0" - "arch_2_07\0" - "dscr\0" - "ebb\0" - "htm\0" - "htm-nosc\0" - "htm-no-suspend\0" - "isel\0" - "tar\0" - "vcrypto\0" - "arch_3_00\0" - "ieee128\0" - "darn\0" - "scv\0" - "arch_3_1\0" - "mma\0" -}; - -static const struct -{ - unsigned int mask; - bool id; -} hwcap_tunables[] = { - /* AT_HWCAP tunable masks. */ - { PPC_FEATURE_HAS_4xxMAC, 0 }, - { PPC_FEATURE_HAS_ALTIVEC, 0 }, - { PPC_FEATURE_ARCH_2_05, 0 }, - { PPC_FEATURE_ARCH_2_06, 0 }, - { PPC_FEATURE_PSERIES_PERFMON_COMPAT, 0 }, - { PPC_FEATURE_BOOKE, 0 }, - { PPC_FEATURE_CELL_BE, 0 }, - { PPC_FEATURE_HAS_DFP, 0 }, - { PPC_FEATURE_HAS_EFP_DOUBLE, 0 }, - { PPC_FEATURE_HAS_EFP_SINGLE, 0 }, - { PPC_FEATURE_HAS_FPU, 0 }, - { PPC_FEATURE_ICACHE_SNOOP, 0 }, - { PPC_FEATURE_HAS_MMU, 0 }, - { PPC_FEATURE_NO_TB, 0 }, - { PPC_FEATURE_PA6T, 0 }, - { PPC_FEATURE_POWER4, 0 }, - { PPC_FEATURE_POWER5, 0 }, - { PPC_FEATURE_POWER5_PLUS, 0 }, - { PPC_FEATURE_POWER6_EXT, 0 }, - { PPC_FEATURE_32, 0 }, - { PPC_FEATURE_601_INSTR, 0 }, - { PPC_FEATURE_64, 0 }, - { PPC_FEATURE_PPC_LE, 0 }, - { PPC_FEATURE_SMT, 0 }, - { PPC_FEATURE_HAS_SPE, 0 }, - { PPC_FEATURE_TRUE_LE, 0 }, - { PPC_FEATURE_UNIFIED_CACHE, 0 }, - { PPC_FEATURE_HAS_VSX, 0 }, - - /* AT_HWCAP2 tunable masks. */ - { PPC_FEATURE2_ARCH_2_07, 1 }, - { PPC_FEATURE2_HAS_DSCR, 1 }, - { PPC_FEATURE2_HAS_EBB, 1 }, - { PPC_FEATURE2_HAS_HTM, 1 }, - { PPC_FEATURE2_HTM_NOSC, 1 }, - { PPC_FEATURE2_HTM_NO_SUSPEND, 1 }, - { PPC_FEATURE2_HAS_ISEL, 1 }, - { PPC_FEATURE2_HAS_TAR, 1 }, - { PPC_FEATURE2_HAS_VEC_CRYPTO, 1 }, - { PPC_FEATURE2_ARCH_3_00, 1 }, - { PPC_FEATURE2_HAS_IEEE128, 1 }, - { PPC_FEATURE2_DARN, 1 }, - { PPC_FEATURE2_SCV, 1 }, - { PPC_FEATURE2_ARCH_3_1, 1 }, - { PPC_FEATURE2_MMA, 1 }, -}; - #endif /* __CPU_FEATURES_H */ diff --git a/sysdeps/unix/sysv/linux/powerpc/dl-auxv.h b/sysdeps/unix/sysv/linux/powerpc/dl-auxv.h index e47dac6..ddb9328 100644 --- a/sysdeps/unix/sysv/linux/powerpc/dl-auxv.h +++ b/sysdeps/unix/sysv/linux/powerpc/dl-auxv.h @@ -1,5 +1,5 @@ /* Auxiliary vector processing. Linux/PPC 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/powerpc/dl-hwcap-info.c b/sysdeps/unix/sysv/linux/powerpc/dl-hwcap-info.c new file mode 100644 index 0000000..1178828 --- /dev/null +++ b/sysdeps/unix/sysv/linux/powerpc/dl-hwcap-info.c @@ -0,0 +1,117 @@ +/* HWCAP string information. PowerPC version. + Copyright (C) 2017-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 <array_length.h> +#include <dl-hwcap-info.h> + +const char __dl_hwcap_names[] = { + "4xxmac\0" + "altivec\0" + "arch_2_05\0" + "arch_2_06\0" + "archpmu\0" + "booke\0" + "cellbe\0" + "dfp\0" + "efpdouble\0" + "efpsingle\0" + "fpu\0" + "ic_snoop\0" + "mmu\0" + "notb\0" + "pa6t\0" + "power4\0" + "power5\0" + "power5+\0" + "power6x\0" + "ppc32\0" + "ppc601\0" + "ppc64\0" + "ppcle\0" + "smt\0" + "spe\0" + "true_le\0" + "ucache\0" + "vsx\0" + "arch_2_07\0" + "dscr\0" + "ebb\0" + "htm\0" + "htm-nosc\0" + "htm-no-suspend\0" + "isel\0" + "tar\0" + "vcrypto\0" + "arch_3_00\0" + "ieee128\0" + "darn\0" + "scv\0" + "arch_3_1\0" + "mma\0" +}; + +const struct hwcap_info_t __dl_hwcap_info[] = +{ + /* AT_HWCAP tunable masks. */ + { PPC_FEATURE_HAS_4xxMAC, AT_HWCAP }, + { PPC_FEATURE_HAS_ALTIVEC, AT_HWCAP }, + { PPC_FEATURE_ARCH_2_05, AT_HWCAP }, + { PPC_FEATURE_ARCH_2_06, AT_HWCAP }, + { PPC_FEATURE_PSERIES_PERFMON_COMPAT, AT_HWCAP }, + { PPC_FEATURE_BOOKE, AT_HWCAP }, + { PPC_FEATURE_CELL_BE, AT_HWCAP }, + { PPC_FEATURE_HAS_DFP, AT_HWCAP }, + { PPC_FEATURE_HAS_EFP_DOUBLE, AT_HWCAP }, + { PPC_FEATURE_HAS_EFP_SINGLE, AT_HWCAP }, + { PPC_FEATURE_HAS_FPU, AT_HWCAP }, + { PPC_FEATURE_ICACHE_SNOOP, AT_HWCAP }, + { PPC_FEATURE_HAS_MMU, AT_HWCAP }, + { PPC_FEATURE_NO_TB, AT_HWCAP }, + { PPC_FEATURE_PA6T, AT_HWCAP }, + { PPC_FEATURE_POWER4, AT_HWCAP }, + { PPC_FEATURE_POWER5, AT_HWCAP }, + { PPC_FEATURE_POWER5_PLUS, AT_HWCAP }, + { PPC_FEATURE_POWER6_EXT, AT_HWCAP }, + { PPC_FEATURE_32, AT_HWCAP }, + { PPC_FEATURE_601_INSTR, AT_HWCAP }, + { PPC_FEATURE_64, AT_HWCAP }, + { PPC_FEATURE_PPC_LE, AT_HWCAP }, + { PPC_FEATURE_SMT, AT_HWCAP }, + { PPC_FEATURE_HAS_SPE, AT_HWCAP }, + { PPC_FEATURE_TRUE_LE, AT_HWCAP }, + { PPC_FEATURE_UNIFIED_CACHE, AT_HWCAP }, + { PPC_FEATURE_HAS_VSX, AT_HWCAP }, + + /* AT_HWCAP2 tunable masks. */ + { PPC_FEATURE2_ARCH_2_07, AT_HWCAP2 }, + { PPC_FEATURE2_HAS_DSCR, AT_HWCAP2 }, + { PPC_FEATURE2_HAS_EBB, AT_HWCAP2 }, + { PPC_FEATURE2_HAS_HTM, AT_HWCAP2 }, + { PPC_FEATURE2_HTM_NOSC, AT_HWCAP2 }, + { PPC_FEATURE2_HTM_NO_SUSPEND, AT_HWCAP2 }, + { PPC_FEATURE2_HAS_ISEL, AT_HWCAP2 }, + { PPC_FEATURE2_HAS_TAR, AT_HWCAP2 }, + { PPC_FEATURE2_HAS_VEC_CRYPTO, AT_HWCAP2 }, + { PPC_FEATURE2_ARCH_3_00, AT_HWCAP2 }, + { PPC_FEATURE2_HAS_IEEE128, AT_HWCAP2 }, + { PPC_FEATURE2_DARN, AT_HWCAP2 }, + { PPC_FEATURE2_SCV, AT_HWCAP2 }, + { PPC_FEATURE2_ARCH_3_1, AT_HWCAP2 }, + { PPC_FEATURE2_MMA, AT_HWCAP2 }, +}; + +size_t __dl_hwcap_info_size = array_length (__dl_hwcap_info); diff --git a/sysdeps/unix/sysv/linux/powerpc/dl-hwcap-info.h b/sysdeps/unix/sysv/linux/powerpc/dl-hwcap-info.h new file mode 100644 index 0000000..194f40c --- /dev/null +++ b/sysdeps/unix/sysv/linux/powerpc/dl-hwcap-info.h @@ -0,0 +1,34 @@ +/* HWCAP string information. PowerPC version. + Copyright (C) 2017-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/>. */ + +#ifndef _DL_HWCAP_INFO_H +#define _DL_HWCAP_INFO_H + +#include <stddef.h> +#include <sys/auxv.h> + +extern const char __dl_hwcap_names[] attribute_hidden; + +struct hwcap_info_t +{ + unsigned int value; + int hwcap; +}; +extern const struct hwcap_info_t __dl_hwcap_info[] attribute_hidden; +extern size_t __dl_hwcap_info_size attribute_hidden; + +#endif diff --git a/sysdeps/unix/sysv/linux/powerpc/elision-conf.c b/sysdeps/unix/sysv/linux/powerpc/elision-conf.c index a85d25c..451897b 100644 --- a/sysdeps/unix/sysv/linux/powerpc/elision-conf.c +++ b/sysdeps/unix/sysv/linux/powerpc/elision-conf.c @@ -1,5 +1,5 @@ /* elision-conf.c: Lock elision tunable parameters. - Copyright (C) 2015-2024 Free Software Foundation, Inc. + Copyright (C) 2015-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 @@ -20,7 +20,7 @@ #include <pthreadP.h> #include <elision-conf.h> #include <unistd.h> -#include <dl-procinfo.h> +#include <ldsodefs.h> #define TUNABLE_NAMESPACE elision #include <elf/dl-tunables.h> diff --git a/sysdeps/unix/sysv/linux/powerpc/elision-conf.h b/sysdeps/unix/sysv/linux/powerpc/elision-conf.h index bb7cbb4..11bc7ed 100644 --- a/sysdeps/unix/sysv/linux/powerpc/elision-conf.h +++ b/sysdeps/unix/sysv/linux/powerpc/elision-conf.h @@ -1,5 +1,5 @@ /* elision-conf.h: Lock elision tunable parameters. - Copyright (C) 2015-2024 Free Software Foundation, Inc. + Copyright (C) 2015-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/powerpc/elision-lock.c b/sysdeps/unix/sysv/linux/powerpc/elision-lock.c index 0715f69..8eb7c3e 100644 --- a/sysdeps/unix/sysv/linux/powerpc/elision-lock.c +++ b/sysdeps/unix/sysv/linux/powerpc/elision-lock.c @@ -1,5 +1,5 @@ /* elision-lock.c: Elided pthread mutex lock. - Copyright (C) 2015-2024 Free Software Foundation, Inc. + Copyright (C) 2015-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/powerpc/elision-timed.c b/sysdeps/unix/sysv/linux/powerpc/elision-timed.c index 0b7d5bc..6442408 100644 --- a/sysdeps/unix/sysv/linux/powerpc/elision-timed.c +++ b/sysdeps/unix/sysv/linux/powerpc/elision-timed.c @@ -1,5 +1,5 @@ /* elision-timed.c: Lock elision timed lock. - Copyright (C) 2015-2024 Free Software Foundation, Inc. + Copyright (C) 2015-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/powerpc/elision-trylock.c b/sysdeps/unix/sysv/linux/powerpc/elision-trylock.c index 2eaa413..d252799 100644 --- a/sysdeps/unix/sysv/linux/powerpc/elision-trylock.c +++ b/sysdeps/unix/sysv/linux/powerpc/elision-trylock.c @@ -1,5 +1,5 @@ /* elision-trylock.c: Lock eliding trylock for pthreads. - Copyright (C) 2015-2024 Free Software Foundation, Inc. + Copyright (C) 2015-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/powerpc/elision-unlock.c b/sysdeps/unix/sysv/linux/powerpc/elision-unlock.c index 40322ab..7741514 100644 --- a/sysdeps/unix/sysv/linux/powerpc/elision-unlock.c +++ b/sysdeps/unix/sysv/linux/powerpc/elision-unlock.c @@ -1,5 +1,5 @@ /* elision-unlock.c: Commit an elided pthread lock. - Copyright (C) 2015-2024 Free Software Foundation, Inc. + Copyright (C) 2015-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/powerpc/get_timebase_freq.c b/sysdeps/unix/sysv/linux/powerpc/get_timebase_freq.c index 12b609c..0c64a62 100644 --- a/sysdeps/unix/sysv/linux/powerpc/get_timebase_freq.c +++ b/sysdeps/unix/sysv/linux/powerpc/get_timebase_freq.c @@ -1,5 +1,5 @@ /* Get the frequency of the time base. - Copyright (C) 2012-2024 Free Software Foundation, Inc. + Copyright (C) 2012-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/powerpc/gettimeofday.c b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c index 41a8f4e..1ff9f1e 100644 --- a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c +++ b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c @@ -1,4 +1,4 @@ -/* 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 diff --git a/sysdeps/unix/sysv/linux/powerpc/htm.h b/sysdeps/unix/sysv/linux/powerpc/htm.h index a256c65..672b197 100644 --- a/sysdeps/unix/sysv/linux/powerpc/htm.h +++ b/sysdeps/unix/sysv/linux/powerpc/htm.h @@ -2,7 +2,7 @@ compilers and assemblers that do not support the intrinsics and instructions yet. - Copyright (C) 2015-2024 Free Software Foundation, Inc. + Copyright (C) 2015-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/powerpc/internal-ioctl.h b/sysdeps/unix/sysv/linux/powerpc/internal-ioctl.h index 6f68946..6c21357 100644 --- a/sysdeps/unix/sysv/linux/powerpc/internal-ioctl.h +++ b/sysdeps/unix/sysv/linux/powerpc/internal-ioctl.h @@ -1,5 +1,5 @@ /* Linux internal definitions for ioctl. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/powerpc/ipc_priv.h b/sysdeps/unix/sysv/linux/powerpc/ipc_priv.h index 0d15f04..24b7202 100644 --- a/sysdeps/unix/sysv/linux/powerpc/ipc_priv.h +++ b/sysdeps/unix/sysv/linux/powerpc/ipc_priv.h @@ -1,5 +1,5 @@ /* Old SysV permission definition for Linux. PowerPC version. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/powerpc/kernel-features.h b/sysdeps/unix/sysv/linux/powerpc/kernel-features.h index 9ddfe82..6e5adb9 100644 --- a/sysdeps/unix/sysv/linux/powerpc/kernel-features.h +++ b/sysdeps/unix/sysv/linux/powerpc/kernel-features.h @@ -1,6 +1,6 @@ /* Set flags signalling availability of kernel features based on given kernel version number. PowerPC version. - 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/powerpc/kernel_termios.h b/sysdeps/unix/sysv/linux/powerpc/kernel_termios.h deleted file mode 100644 index 6047297..0000000 --- a/sysdeps/unix/sysv/linux/powerpc/kernel_termios.h +++ /dev/null @@ -1,53 +0,0 @@ -/* Copyright (C) 1997-2024 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 - <https://www.gnu.org/licenses/>. */ - -#ifndef _KERNEL_TERMIOS_H -#define _KERNEL_TERMIOS_H 1 - -/* We need the definition of tcflag_t, cc_t, and speed_t. */ -#include <termios.h> - -#define __KERNEL_NCCS 19 - -struct __kernel_termios - { - tcflag_t c_iflag; /* input mode flags */ - tcflag_t c_oflag; /* output mode flags */ - tcflag_t c_cflag; /* control mode flags */ - tcflag_t c_lflag; /* local mode flags */ - cc_t c_cc[__KERNEL_NCCS]; /* control characters */ - cc_t c_line; /* line discipline */ - speed_t c_ispeed; /* input speed */ - speed_t c_ospeed; /* output speed */ - }; - -#define _HAVE_C_ISPEED 1 -#define _HAVE_C_OSPEED 1 - -/* We have the kernel termios structure, so we can presume this code knows - what it's doing... */ - -#undef TCGETS -#undef TCSETS -#undef TCSETSW -#undef TCSETSF -#define TCGETS _IOR ('t', 19, struct __kernel_termios) -#define TCSETS _IOW ('t', 20, struct __kernel_termios) -#define TCSETSW _IOW ('t', 21, struct __kernel_termios) -#define TCSETSF _IOW ('t', 22, struct __kernel_termios) - -#endif /* kernel_termios.h */ diff --git a/sysdeps/unix/sysv/linux/powerpc/libc-start.c b/sysdeps/unix/sysv/linux/powerpc/libc-start.c index 6a00cd8..852efce 100644 --- a/sysdeps/unix/sysv/linux/powerpc/libc-start.c +++ b/sysdeps/unix/sysv/linux/powerpc/libc-start.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/powerpc/libc-start.h b/sysdeps/unix/sysv/linux/powerpc/libc-start.h index 309eef3..f137cd3 100644 --- a/sysdeps/unix/sysv/linux/powerpc/libc-start.h +++ b/sysdeps/unix/sysv/linux/powerpc/libc-start.h @@ -1,5 +1,5 @@ /* PowerPC definitions for libc main startup. - 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/powerpc/libc-vdso.h b/sysdeps/unix/sysv/linux/powerpc/libc-vdso.h index 3fe5252..b976355 100644 --- a/sysdeps/unix/sysv/linux/powerpc/libc-vdso.h +++ b/sysdeps/unix/sysv/linux/powerpc/libc-vdso.h @@ -1,5 +1,5 @@ /* Resolve function pointers to VDSO functions. - 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 diff --git a/sysdeps/unix/sysv/linux/powerpc/libpthread-compat.c b/sysdeps/unix/sysv/linux/powerpc/libpthread-compat.c index 08545e3..da2467e 100644 --- a/sysdeps/unix/sysv/linux/powerpc/libpthread-compat.c +++ b/sysdeps/unix/sysv/linux/powerpc/libpthread-compat.c @@ -1,5 +1,5 @@ /* Placeholder definitions for removed symbol versions. powerpc version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/powerpc/pointer_guard.h b/sysdeps/unix/sysv/linux/powerpc/pointer_guard.h index 0db0f0d..19da93d 100644 --- a/sysdeps/unix/sysv/linux/powerpc/pointer_guard.h +++ b/sysdeps/unix/sysv/linux/powerpc/pointer_guard.h @@ -1,5 +1,5 @@ /* Pointer obfuscation implenentation. PowerpC 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 diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S index 9255568..fca4423 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S @@ -1,4 +1,4 @@ -/* 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/powerpc/powerpc32/arch-syscall.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/arch-syscall.h index 206d9fd..c371df8 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/arch-syscall.h @@ -130,6 +130,7 @@ #define __NR_gettimeofday 78 #define __NR_getuid 24 #define __NR_getxattr 212 +#define __NR_getxattrat 464 #define __NR_gtty 32 #define __NR_idle 112 #define __NR_init_module 128 @@ -168,6 +169,7 @@ #define __NR_listen 329 #define __NR_listmount 458 #define __NR_listxattr 215 +#define __NR_listxattrat 465 #define __NR_llistxattr 216 #define __NR_lock 53 #define __NR_lookup_dcookie 235 @@ -233,6 +235,7 @@ #define __NR_open 5 #define __NR_open_by_handle_at 346 #define __NR_open_tree 428 +#define __NR_open_tree_attr 467 #define __NR_openat 286 #define __NR_openat2 437 #define __NR_pause 29 @@ -288,6 +291,7 @@ #define __NR_recvmsg 342 #define __NR_remap_file_pages 239 #define __NR_removexattr 218 +#define __NR_removexattrat 466 #define __NR_rename 38 #define __NR_renameat 293 #define __NR_renameat2 357 @@ -353,6 +357,7 @@ #define __NR_settimeofday 79 #define __NR_setuid 23 #define __NR_setxattr 209 +#define __NR_setxattrat 463 #define __NR_sgetmask 68 #define __NR_shmat 397 #define __NR_shmctl 396 diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S index ddd0f46..20b8f8b 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S @@ -1,5 +1,5 @@ /* Wrapper around clone system call. - 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/powerpc/powerpc32/fpu/fe_mask.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c index 7137e06..1a70df5 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c @@ -1,5 +1,5 @@ /* Procedure definition for FE_MASK_ENV for Linux/ppc. - Copyright (C) 2007-2024 Free Software Foundation, Inc. + Copyright (C) 2007-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/powerpc/powerpc32/fpu/fe_nomask.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c index 6f96a17..08dfcae 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c @@ -1,5 +1,5 @@ /* Procedure definition for FE_NOMASK_ENV for Linux/ppc. - 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/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist index 9714305..883e66f 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist @@ -3138,6 +3138,25 @@ GLIBC_2.4 wcstold F GLIBC_2.4 wcstold_l F GLIBC_2.4 wprintf F GLIBC_2.4 wscanf 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 GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist index cbadcef..7f584d3 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist @@ -1025,3 +1025,75 @@ GLIBC_2.40 logp1f32 F GLIBC_2.40 logp1f32x F GLIBC_2.40 logp1f64 F GLIBC_2.40 logp1l F +GLIBC_2.41 acospi F +GLIBC_2.41 acospif F +GLIBC_2.41 acospif32 F +GLIBC_2.41 acospif32x F +GLIBC_2.41 acospif64 F +GLIBC_2.41 acospil F +GLIBC_2.41 asinpi F +GLIBC_2.41 asinpif F +GLIBC_2.41 asinpif32 F +GLIBC_2.41 asinpif32x F +GLIBC_2.41 asinpif64 F +GLIBC_2.41 asinpil F +GLIBC_2.41 atan2pi F +GLIBC_2.41 atan2pif F +GLIBC_2.41 atan2pif32 F +GLIBC_2.41 atan2pif32x F +GLIBC_2.41 atan2pif64 F +GLIBC_2.41 atan2pil F +GLIBC_2.41 atanpi F +GLIBC_2.41 atanpif F +GLIBC_2.41 atanpif32 F +GLIBC_2.41 atanpif32x F +GLIBC_2.41 atanpif64 F +GLIBC_2.41 atanpil F +GLIBC_2.41 cospi F +GLIBC_2.41 cospif F +GLIBC_2.41 cospif32 F +GLIBC_2.41 cospif32x F +GLIBC_2.41 cospif64 F +GLIBC_2.41 cospil F +GLIBC_2.41 sinpi F +GLIBC_2.41 sinpif F +GLIBC_2.41 sinpif32 F +GLIBC_2.41 sinpif32x F +GLIBC_2.41 sinpif64 F +GLIBC_2.41 sinpil F +GLIBC_2.41 tanpi F +GLIBC_2.41 tanpif F +GLIBC_2.41 tanpif32 F +GLIBC_2.41 tanpif32x F +GLIBC_2.41 tanpif64 F +GLIBC_2.41 tanpil F +GLIBC_2.42 compoundn F +GLIBC_2.42 compoundnf F +GLIBC_2.42 compoundnf32 F +GLIBC_2.42 compoundnf32x F +GLIBC_2.42 compoundnf64 F +GLIBC_2.42 compoundnl F +GLIBC_2.42 pown F +GLIBC_2.42 pownf F +GLIBC_2.42 pownf32 F +GLIBC_2.42 pownf32x F +GLIBC_2.42 pownf64 F +GLIBC_2.42 pownl F +GLIBC_2.42 powr F +GLIBC_2.42 powrf F +GLIBC_2.42 powrf32 F +GLIBC_2.42 powrf32x F +GLIBC_2.42 powrf64 F +GLIBC_2.42 powrl F +GLIBC_2.42 rootn F +GLIBC_2.42 rootnf F +GLIBC_2.42 rootnf32 F +GLIBC_2.42 rootnf32x F +GLIBC_2.42 rootnf64 F +GLIBC_2.42 rootnl F +GLIBC_2.42 rsqrt F +GLIBC_2.42 rsqrtf F +GLIBC_2.42 rsqrtf32 F +GLIBC_2.42 rsqrtf32x F +GLIBC_2.42 rsqrtf64 F +GLIBC_2.42 rsqrtl F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S index 34e6d07..8482e47 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S @@ -1,5 +1,5 @@ /* Save current context, powerpc32 common. - 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 diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S index 06cf8b2..27befc7 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S @@ -1,5 +1,5 @@ /* Save current context. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/powerpc/powerpc32/kernel_stat.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/kernel_stat.h index 6e2a5c2..40b5163 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/kernel_stat.h +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/kernel_stat.h @@ -1,5 +1,5 @@ /* Definition of `struct stat' used in the kernel. - 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/powerpc/powerpc32/makecontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S index 1f6d0a1..2ab64b5 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S @@ -1,5 +1,5 @@ /* Set up a context to call a function. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/powerpc/powerpc32/nofpu/getcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S index 8ee39fe..c64f9dc 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S @@ -1,5 +1,5 @@ /* Save current context. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist index 0beb52c..84cd9e0 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist @@ -3183,6 +3183,25 @@ GLIBC_2.4 wcstold F GLIBC_2.4 wcstold_l F GLIBC_2.4 wprintf F GLIBC_2.4 wscanf 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 GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist index d0078a4..d1cd4b1 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist @@ -1024,3 +1024,75 @@ GLIBC_2.40 logp1f32 F GLIBC_2.40 logp1f32x F GLIBC_2.40 logp1f64 F GLIBC_2.40 logp1l F +GLIBC_2.41 acospi F +GLIBC_2.41 acospif F +GLIBC_2.41 acospif32 F +GLIBC_2.41 acospif32x F +GLIBC_2.41 acospif64 F +GLIBC_2.41 acospil F +GLIBC_2.41 asinpi F +GLIBC_2.41 asinpif F +GLIBC_2.41 asinpif32 F +GLIBC_2.41 asinpif32x F +GLIBC_2.41 asinpif64 F +GLIBC_2.41 asinpil F +GLIBC_2.41 atan2pi F +GLIBC_2.41 atan2pif F +GLIBC_2.41 atan2pif32 F +GLIBC_2.41 atan2pif32x F +GLIBC_2.41 atan2pif64 F +GLIBC_2.41 atan2pil F +GLIBC_2.41 atanpi F +GLIBC_2.41 atanpif F +GLIBC_2.41 atanpif32 F +GLIBC_2.41 atanpif32x F +GLIBC_2.41 atanpif64 F +GLIBC_2.41 atanpil F +GLIBC_2.41 cospi F +GLIBC_2.41 cospif F +GLIBC_2.41 cospif32 F +GLIBC_2.41 cospif32x F +GLIBC_2.41 cospif64 F +GLIBC_2.41 cospil F +GLIBC_2.41 sinpi F +GLIBC_2.41 sinpif F +GLIBC_2.41 sinpif32 F +GLIBC_2.41 sinpif32x F +GLIBC_2.41 sinpif64 F +GLIBC_2.41 sinpil F +GLIBC_2.41 tanpi F +GLIBC_2.41 tanpif F +GLIBC_2.41 tanpif32 F +GLIBC_2.41 tanpif32x F +GLIBC_2.41 tanpif64 F +GLIBC_2.41 tanpil F +GLIBC_2.42 compoundn F +GLIBC_2.42 compoundnf F +GLIBC_2.42 compoundnf32 F +GLIBC_2.42 compoundnf32x F +GLIBC_2.42 compoundnf64 F +GLIBC_2.42 compoundnl F +GLIBC_2.42 pown F +GLIBC_2.42 pownf F +GLIBC_2.42 pownf32 F +GLIBC_2.42 pownf32x F +GLIBC_2.42 pownf64 F +GLIBC_2.42 pownl F +GLIBC_2.42 powr F +GLIBC_2.42 powrf F +GLIBC_2.42 powrf32 F +GLIBC_2.42 powrf32x F +GLIBC_2.42 powrf64 F +GLIBC_2.42 powrl F +GLIBC_2.42 rootn F +GLIBC_2.42 rootnf F +GLIBC_2.42 rootnf32 F +GLIBC_2.42 rootnf32x F +GLIBC_2.42 rootnf64 F +GLIBC_2.42 rootnl F +GLIBC_2.42 rsqrt F +GLIBC_2.42 rsqrtf F +GLIBC_2.42 rsqrtf32 F +GLIBC_2.42 rsqrtf32x F +GLIBC_2.42 rsqrtf64 F +GLIBC_2.42 rsqrtl F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S index 09f3c65..e4d161e 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S @@ -1,5 +1,5 @@ /* Jump to a new context. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/powerpc/powerpc32/nofpu/swapcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S index 53e4c4f..053e939 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S @@ -1,5 +1,5 @@ /* Save current context and jump to a new context. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/powerpc/powerpc32/setcontext-common.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S index 7ec73cc..3c78d26 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S @@ -1,5 +1,5 @@ /* Jump to a new context powerpc32 common. - 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 diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S index 6457871..98241ff 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S @@ -1,5 +1,5 @@ /* Jump to a new context. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/powerpc/powerpc32/swapcontext-common.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S index 5a397d7..2afd519 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S @@ -1,5 +1,5 @@ /* Save current context and jump to a new context. - 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 diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S index 96e4b6f..91efdfc 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S @@ -1,5 +1,5 @@ /* Save current context and jump to a new context. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/powerpc/powerpc32/vfork.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S index 04ebc31..0461a3f 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S @@ -1,4 +1,4 @@ -/* 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/powerpc/powerpc64/____longjmp_chk.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/____longjmp_chk.S index 71b381d..5ada298 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/____longjmp_chk.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/____longjmp_chk.S @@ -1,4 +1,4 @@ -/* 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/powerpc/powerpc64/arch-pkey.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/arch-pkey.h index 4fe77a3..1f66411 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/arch-pkey.h +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/arch-pkey.h @@ -1,5 +1,5 @@ /* Helper functions for manipulating memory protection keys, for powerpc64. - 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/powerpc/powerpc64/arch-syscall.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/arch-syscall.h index 19f72a7..df8844d 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/arch-syscall.h @@ -119,6 +119,7 @@ #define __NR_gettimeofday 78 #define __NR_getuid 24 #define __NR_getxattr 212 +#define __NR_getxattrat 464 #define __NR_gtty 32 #define __NR_idle 112 #define __NR_init_module 128 @@ -156,6 +157,7 @@ #define __NR_listen 329 #define __NR_listmount 458 #define __NR_listxattr 215 +#define __NR_listxattrat 465 #define __NR_llistxattr 216 #define __NR_lock 53 #define __NR_lookup_dcookie 235 @@ -218,6 +220,7 @@ #define __NR_open 5 #define __NR_open_by_handle_at 346 #define __NR_open_tree 428 +#define __NR_open_tree_attr 467 #define __NR_openat 286 #define __NR_openat2 437 #define __NR_pause 29 @@ -270,6 +273,7 @@ #define __NR_recvmsg 342 #define __NR_remap_file_pages 239 #define __NR_removexattr 218 +#define __NR_removexattrat 466 #define __NR_rename 38 #define __NR_renameat 293 #define __NR_renameat2 357 @@ -332,6 +336,7 @@ #define __NR_settimeofday 79 #define __NR_setuid 23 #define __NR_setxattr 209 +#define __NR_setxattrat 463 #define __NR_sgetmask 68 #define __NR_shmat 397 #define __NR_shmctl 396 diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist index cfc2ebd..8832568 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist @@ -2892,6 +2892,25 @@ GLIBC_2.4 wcstold F GLIBC_2.4 wcstold_l F GLIBC_2.4 wprintf F GLIBC_2.4 wscanf 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 GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist index 86fdb9f..bfc5310 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist @@ -1018,3 +1018,75 @@ GLIBC_2.40 logp1f32 F GLIBC_2.40 logp1f32x F GLIBC_2.40 logp1f64 F GLIBC_2.40 logp1l F +GLIBC_2.41 acospi F +GLIBC_2.41 acospif F +GLIBC_2.41 acospif32 F +GLIBC_2.41 acospif32x F +GLIBC_2.41 acospif64 F +GLIBC_2.41 acospil F +GLIBC_2.41 asinpi F +GLIBC_2.41 asinpif F +GLIBC_2.41 asinpif32 F +GLIBC_2.41 asinpif32x F +GLIBC_2.41 asinpif64 F +GLIBC_2.41 asinpil F +GLIBC_2.41 atan2pi F +GLIBC_2.41 atan2pif F +GLIBC_2.41 atan2pif32 F +GLIBC_2.41 atan2pif32x F +GLIBC_2.41 atan2pif64 F +GLIBC_2.41 atan2pil F +GLIBC_2.41 atanpi F +GLIBC_2.41 atanpif F +GLIBC_2.41 atanpif32 F +GLIBC_2.41 atanpif32x F +GLIBC_2.41 atanpif64 F +GLIBC_2.41 atanpil F +GLIBC_2.41 cospi F +GLIBC_2.41 cospif F +GLIBC_2.41 cospif32 F +GLIBC_2.41 cospif32x F +GLIBC_2.41 cospif64 F +GLIBC_2.41 cospil F +GLIBC_2.41 sinpi F +GLIBC_2.41 sinpif F +GLIBC_2.41 sinpif32 F +GLIBC_2.41 sinpif32x F +GLIBC_2.41 sinpif64 F +GLIBC_2.41 sinpil F +GLIBC_2.41 tanpi F +GLIBC_2.41 tanpif F +GLIBC_2.41 tanpif32 F +GLIBC_2.41 tanpif32x F +GLIBC_2.41 tanpif64 F +GLIBC_2.41 tanpil F +GLIBC_2.42 compoundn F +GLIBC_2.42 compoundnf F +GLIBC_2.42 compoundnf32 F +GLIBC_2.42 compoundnf32x F +GLIBC_2.42 compoundnf64 F +GLIBC_2.42 compoundnl F +GLIBC_2.42 pown F +GLIBC_2.42 pownf F +GLIBC_2.42 pownf32 F +GLIBC_2.42 pownf32x F +GLIBC_2.42 pownf64 F +GLIBC_2.42 pownl F +GLIBC_2.42 powr F +GLIBC_2.42 powrf F +GLIBC_2.42 powrf32 F +GLIBC_2.42 powrf32x F +GLIBC_2.42 powrf64 F +GLIBC_2.42 powrl F +GLIBC_2.42 rootn F +GLIBC_2.42 rootnf F +GLIBC_2.42 rootnf32 F +GLIBC_2.42 rootnf32x F +GLIBC_2.42 rootnf64 F +GLIBC_2.42 rootnl F +GLIBC_2.42 rsqrt F +GLIBC_2.42 rsqrtf F +GLIBC_2.42 rsqrtf32 F +GLIBC_2.42 rsqrtf32x F +GLIBC_2.42 rsqrtf64 F +GLIBC_2.42 rsqrtl F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S index 164311d..878c807 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S @@ -1,5 +1,5 @@ /* Wrapper around clone system call. PowerPC64 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 @@ -56,7 +56,6 @@ ENTRY (__clone) /* Save fn, args, stack across syscall. */ mr r30,r3 /* Function in r30. */ - mr r29,r5 /* Flags in r29. */ mr r31,r6 /* Argument in r31. */ /* 'flags' argument is first parameter to clone syscall. @@ -77,14 +76,12 @@ ENTRY (__clone) CHECK_SCV_SUPPORT r28 0f /* This is equivalent to DO_CALL_SCV, but we cannot use the macro here because it uses CFI directives and we just called cfi_endproc. */ - mflr r9 - std r9,FRAME_LR_SAVE(r1) + mflr r29 .machine "push" .machine "power9" scv 0 .machine "pop" - ld r9,FRAME_LR_SAVE(r1) - mtlr r9 + mtlr r29 /* Check for child process. */ /* When using scv, error is indicated by negative r3. */ diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone3.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone3.S index 900c354..332f3d9 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone3.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone3.S @@ -1,5 +1,5 @@ /* The clone3 syscall wrapper. Linux/powerpc64 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. @@ -39,14 +39,12 @@ because it uses CFI directives and we just called cfi_endproc. */ # define DO_CLONE3_SVC_CALL(jumpfalse) \ CHECK_SCV_SUPPORT r28 jumpfalse; \ - mflr r9; \ - std r9, FRAME_LR_SAVE(r1); \ + mflr r31; \ .machine "push"; \ .machine "power9"; \ scv 0; \ .machine "pop"; \ - ld r9, FRAME_LR_SAVE(r1); \ - mtlr r9; \ + mtlr r31; \ /* With scv an, an error is a value -4095 <= x < 0. */ \ cmpdi cr1, r3, 0; \ b 1f; @@ -66,13 +64,15 @@ ENTRY(__clone3) /* Save some regs in the "red zone". */ #ifdef USE_PPC_SCV - std r28, -24(r1) - cfi_offset (r28, -24) + std r28, -32(r1) + cfi_offset (r28, -32) #endif - std r29, -16(r1) - std r30, -8(r1) - cfi_offset (r29, -16) - cfi_offset (r30, -8) + std r29, -24(r1) + std r30, -16(r1) + std r31, -8(r1) + cfi_offset (r29, -24) + cfi_offset (r30, -16) + cfi_offset (r31, -8) /* Save func and arg across syscall. */ mr r30, r5 /* Function in r30. */ @@ -132,16 +132,19 @@ L(parent): /* Parent. Restore registers & return. */ #ifdef USE_PPC_SCV - cfi_offset (r28, -24) - ld r28, -24(r1) + cfi_offset (r28, -32) + ld r28, -32(r1) cfi_restore (r28) #endif - cfi_offset (r29,-16) - cfi_offset (r30,-8) - ld r29, -16(r1) - ld r30, -8(r1) + cfi_offset (r29,-24) + cfi_offset (r30,-16) + cfi_offset (r31,-8) + ld r29, -24(r1) + ld r30, -16(r1) + ld r31, -8(r1) cfi_restore (r29) cfi_restore (r30) + cfi_restore (r31) #ifdef USE_PPC_SCV beq cr1, 0f diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/dl-cache.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/dl-cache.h index a72f8ce..1b8ae1b 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/dl-cache.h +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/dl-cache.h @@ -1,5 +1,5 @@ /* Support for reading /etc/ld.so.cache files written by Linux ldconfig. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/powerpc/powerpc64/fpu/fe_mask.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c index d8b938d..8714aea 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c @@ -1,5 +1,5 @@ /* Procedure definition for FE_MASK_ENV for Linux/ppc64. - Copyright (C) 2007-2024 Free Software Foundation, Inc. + Copyright (C) 2007-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/powerpc/powerpc64/fpu/fe_nomask.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c index 50e5704..4cf946d 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c @@ -1,5 +1,5 @@ /* Procedure definition for FE_NOMASK_ENV for Linux/ppc64. - 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/powerpc/powerpc64/getcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S index 96d6005..9d8f021 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S @@ -1,5 +1,5 @@ /* Save current context. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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 @@ -32,6 +32,9 @@ ENTRY(__novec_getcontext) std r0,(SIGCONTEXT_GP_REGS+(PT_R0*8))(r3) std r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3) mflr r0 +#ifdef __ROP_PROTECT__ + hashst r0,FRAME_ROP_SAVE(r1) +#endif std r2,(SIGCONTEXT_GP_REGS+(PT_R2*8))(r3) std r0,FRAME_LR_SAVE(r1) cfi_offset (lr, FRAME_LR_SAVE) @@ -139,6 +142,9 @@ ENTRY(__novec_getcontext) ld r0,128+FRAME_LR_SAVE(r1) addi r1,r1,128 mtlr r0 +#ifdef __ROP_PROTECT__ + hashchk r0,FRAME_ROP_SAVE(r1) +#endif blr PSEUDO_END(__novec_getcontext) @@ -161,6 +167,9 @@ ENTRY(__getcontext) std r0,(SIGCONTEXT_GP_REGS+(PT_R0*8))(r3) std r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3) mflr r0 +#ifdef __ROP_PROTECT__ + hashst r0,FRAME_ROP_SAVE(r1) +#endif std r2,(SIGCONTEXT_GP_REGS+(PT_R2*8))(r3) std r0,FRAME_LR_SAVE(r1) cfi_offset (lr, FRAME_LR_SAVE) @@ -377,6 +386,9 @@ L(has_no_vec): ld r0,128+FRAME_LR_SAVE(r1) addi r1,r1,128 mtlr r0 +#ifdef __ROP_PROTECT__ + hashchk r0,FRAME_ROP_SAVE(r1) +#endif blr PSEUDO_END(__getcontext) diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/ldsodefs.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/ldsodefs.h index 5a4bc7f..f34e798 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/ldsodefs.h +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/ldsodefs.h @@ -1,5 +1,5 @@ /* Run-time dynamic linker data structures for loaded ELF shared objects. - 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 diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist index 8c9efc5..b6ff801 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist @@ -2968,3 +2968,22 @@ GLIBC_2.39 stdc_trailing_zeros_ui F 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.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/powerpc/powerpc64/le/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist index 34568bd..dedfefc 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist @@ -1366,3 +1366,111 @@ GLIBC_2.40 logp1f32x F GLIBC_2.40 logp1f64 F GLIBC_2.40 logp1f64x F GLIBC_2.40 logp1l F +GLIBC_2.41 __acospiieee128 F +GLIBC_2.41 __asinpiieee128 F +GLIBC_2.41 __atan2piieee128 F +GLIBC_2.41 __atanpiieee128 F +GLIBC_2.41 __cospiieee128 F +GLIBC_2.41 __sinpiieee128 F +GLIBC_2.41 __tanpiieee128 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 __compoundnieee128 F +GLIBC_2.42 __pownieee128 F +GLIBC_2.42 __powrieee128 F +GLIBC_2.42 __rootnieee128 F +GLIBC_2.42 __rsqrtieee128 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/powerpc/powerpc64/le/sysctl.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/sysctl.c index d91b441..c4e2b75 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/sysctl.c +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/sysctl.c @@ -1,5 +1,5 @@ /* sysctl function stub. powerpc64le 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/powerpc/powerpc64/makecontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S index 97ea557..7d0cede 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S @@ -1,5 +1,5 @@ /* Create new context. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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 @@ -39,6 +39,9 @@ ENTRY (__makecontext) addi r6,r1,FRAME_PARM_SAVE+24 std r0,FRAME_LR_SAVE(r1) cfi_offset (lr, FRAME_LR_SAVE) +#ifdef __ROP_PROTECT__ + hashst r0,FRAME_ROP_SAVE(r1) +#endif stdu r1,-128(r1) cfi_adjust_cfa_offset (128) @@ -181,6 +184,9 @@ L(gotexitcodeaddr): ld r0,128+FRAME_LR_SAVE(r1) addi r1,r1,128 mtlr r0 +#ifdef __ROP_PROTECT__ + hashchk r0,FRAME_ROP_SAVE(r1) +#endif blr END(__makecontext) diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/pkey_get.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/pkey_get.c index 217ecd0..cd4635a 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/pkey_get.c +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/pkey_get.c @@ -1,5 +1,5 @@ /* Reading the per-thread memory protection key, powerpc64 version. - 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 @@ -21,7 +21,7 @@ #include <sys/mman.h> int -pkey_get (int key) +__pkey_get (int key) { if (key < 0 || key > PKEY_MAX) { @@ -40,3 +40,5 @@ pkey_get (int key) return PKEY_DISABLE_WRITE; return 0; } +libc_hidden_def (__pkey_get) +weak_alias (__pkey_get, pkey_get) diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/pkey_set.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/pkey_set.c index cc67b0a..371f827 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/pkey_set.c +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/pkey_set.c @@ -1,5 +1,5 @@ /* Changing the per-thread memory protection key, powerpc64 version. - 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 @@ -21,7 +21,7 @@ #include <sys/mman.h> int -pkey_set (int key, unsigned int rights) +__pkey_set (int key, unsigned int rights) { if (key < 0 || key > PKEY_MAX || rights > 3) { @@ -46,3 +46,5 @@ pkey_set (int key, unsigned int rights) pkey_write (amr); return 0; } +libc_hidden_def (__pkey_set) +weak_alias (__pkey_set, pkey_set) diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S index eb83d21..bd00f43 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S @@ -1,5 +1,5 @@ /* Switch to context. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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 @@ -38,8 +38,11 @@ ENTRY(__novec_setcontext) CALL_MCOUNT 1 mflr r0 - std r31,-8(1) - cfi_offset(r31,-8) + std r31,-16(1) + cfi_offset(r31,-16) +#ifdef __ROP_PROTECT__ + hashst r0,FRAME_ROP_SAVE(r1) +#endif std r0,FRAME_LR_SAVE(r1) cfi_offset (lr, FRAME_LR_SAVE) stdu r1,-128(r1) @@ -184,7 +187,10 @@ L(nv_error_exit): ld r0,128+FRAME_LR_SAVE(r1) addi r1,r1,128 mtlr r0 - ld r31,-8(r1) +#ifdef __ROP_PROTECT__ + hashchk r0,FRAME_ROP_SAVE(r1) +#endif + ld r31,-16(r1) blr PSEUDO_END(__novec_setcontext) @@ -197,8 +203,11 @@ compat_symbol (libc, __novec_setcontext, setcontext, GLIBC_2_3) ENTRY(__setcontext) CALL_MCOUNT 1 mflr r0 - std r31,-8(1) - cfi_offset(r31,-8) + std r31,-16(1) + cfi_offset(r31,-16) +#ifdef __ROP_PROTECT__ + hashst r0,FRAME_ROP_SAVE(r1) +#endif std r0,FRAME_LR_SAVE(r1) cfi_offset (lr, FRAME_LR_SAVE) stdu r1,-128(r1) @@ -446,7 +455,10 @@ L(error_exit): ld r0,128+FRAME_LR_SAVE(r1) addi r1,r1,128 mtlr r0 - ld r31,-8(r1) +#ifdef __ROP_PROTECT__ + hashchk r0,FRAME_ROP_SAVE(r1) +#endif + ld r31,-16(r1) blr PSEUDO_END(__setcontext) diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S index b7133f0..4d98b4c 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S @@ -1,5 +1,5 @@ /* Save current context and install the given one. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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 @@ -40,8 +40,11 @@ ENTRY(__novec_swapcontext) std r0,(SIGCONTEXT_GP_REGS+(PT_R0*8))(r3) std r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3) mflr r0 - std r31,-8(1) - cfi_offset(r31,-8) + std r31,-16(1) + cfi_offset(r31,-16) +#ifdef __ROP_PROTECT__ + hashst r0,FRAME_ROP_SAVE(r1) +#endif std r2,(SIGCONTEXT_GP_REGS+(PT_R2*8))(r3) std r0,FRAME_LR_SAVE(r1) cfi_offset (lr, FRAME_LR_SAVE) @@ -271,7 +274,10 @@ L(nv_error_exit): ld r0,128+FRAME_LR_SAVE(r1) addi r1,r1,128 mtlr r0 - ld r31,-8(r1) +#ifdef __ROP_PROTECT__ + hashchk r0,FRAME_ROP_SAVE(r1) +#endif + ld r31,-16(r1) blr PSEUDO_END(__novec_swapcontext) @@ -287,8 +293,11 @@ ENTRY(__swapcontext) std r0,(SIGCONTEXT_GP_REGS+(PT_R0*8))(r3) std r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3) mflr r0 - std r31,-8(1) - cfi_offset(r31,-8) + std r31,-16(1) + cfi_offset(r31,-16) +#ifdef __ROP_PROTECT__ + hashst r0,FRAME_ROP_SAVE(r1) +#endif std r2,(SIGCONTEXT_GP_REGS+(PT_R2*8))(r3) std r0,FRAME_LR_SAVE(r1) cfi_offset (lr, FRAME_LR_SAVE) @@ -731,7 +740,10 @@ L(error_exit): ld r0,128+FRAME_LR_SAVE(r1) addi r1,r1,128 mtlr r0 - ld r31,-8(r1) +#ifdef __ROP_PROTECT__ + hashchk r0,FRAME_ROP_SAVE(r1) +#endif + ld r31,-16(r1) blr PSEUDO_END(__swapcontext) diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h index 41c4e0a..4018c30 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1992-2024 Free Software Foundation, Inc. +/* Copyright (C) 1992-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/powerpc/powerpc64/timer_t_was_int_compat.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_t_was_int_compat.h index 582aac7..5d25815 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_t_was_int_compat.h +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_t_was_int_compat.h @@ -1,5 +1,5 @@ /* timer_t/int compatibility transition. powerpc64 version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/powerpc/powerpc64/vfork.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S index 4fbbc2b..1018f3e 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S @@ -1,4 +1,4 @@ -/* 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/powerpc/readelflib.c b/sysdeps/unix/sysv/linux/powerpc/readelflib.c index d2e0e88..2996d08 100644 --- a/sysdeps/unix/sysv/linux/powerpc/readelflib.c +++ b/sysdeps/unix/sysv/linux/powerpc/readelflib.c @@ -1,5 +1,5 @@ /* Special checks on libraries for ldconfig. Linux/PowerPC version. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/powerpc/rtld_static_init.h b/sysdeps/unix/sysv/linux/powerpc/rtld_static_init.h index 5ec1f2b..551f5ea 100644 --- a/sysdeps/unix/sysv/linux/powerpc/rtld_static_init.h +++ b/sysdeps/unix/sysv/linux/powerpc/rtld_static_init.h @@ -1,5 +1,5 @@ /* Partial initialization of ld.so loaded via static dlopen. powerpc helper. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/powerpc/sigcontextinfo.h b/sysdeps/unix/sysv/linux/powerpc/sigcontextinfo.h index 860c2e3..a96d4d7 100644 --- a/sysdeps/unix/sysv/linux/powerpc/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/powerpc/sigcontextinfo.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/powerpc/socket-constants-time64.h b/sysdeps/unix/sysv/linux/powerpc/socket-constants-time64.h index f8ab6ff..c76a426 100644 --- a/sysdeps/unix/sysv/linux/powerpc/socket-constants-time64.h +++ b/sysdeps/unix/sysv/linux/powerpc/socket-constants-time64.h @@ -1,5 +1,5 @@ /* Compat socket constants used in 64-bit compat code. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/powerpc/sys/ptrace.h b/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h index 605ba3f..860a857 100644 --- a/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h +++ b/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h @@ -1,5 +1,5 @@ /* `ptrace' debugger support interface. Linux/PowerPC 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/powerpc/sys/ucontext.h b/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h index 8fe3975..0807a29 100644 --- a/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/powerpc/sys/user.h b/sysdeps/unix/sysv/linux/powerpc/sys/user.h index 1b207a3..529110c 100644 --- a/sysdeps/unix/sysv/linux/powerpc/sys/user.h +++ b/sysdeps/unix/sysv/linux/powerpc/sys/user.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/powerpc/syscall.S b/sysdeps/unix/sysv/linux/powerpc/syscall.S index 9d0cb54..ff33dd4 100644 --- a/sysdeps/unix/sysv/linux/powerpc/syscall.S +++ b/sysdeps/unix/sysv/linux/powerpc/syscall.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2024 Free Software Foundation, Inc. +/* Copyright (C) 1991-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/powerpc/syscall_cancel.S b/sysdeps/unix/sysv/linux/powerpc/syscall_cancel.S new file mode 100644 index 0000000..33b0b7c --- /dev/null +++ b/sysdeps/unix/sysv/linux/powerpc/syscall_cancel.S @@ -0,0 +1,86 @@ +/* Cancellable syscall wrapper. Linux/powerpc 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 [r3] __syscall_cancel_arch (int *cancelhandling [r3], + long int nr [r4], + long int arg1 [r5], + long int arg2 [r6], + long int arg3 [r7], + long int arg4 [r8], + long int arg5 [r9], + long int arg6 [r10]) */ + +ENTRY (__syscall_cancel_arch) + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + /* if (*cancelhandling & CANCELED_BITMASK) + __syscall_do_cancel() */ + lwz r0,0(r3) + andi. r0,r0,TCB_CANCELED_BITMASK + bne 1f + + /* Issue a 6 argument syscall, the nr [r4] being the syscall + number. */ + mr r0,r4 + mr r3,r5 + mr r4,r6 + mr r5,r7 + mr r6,r8 + mr r7,r9 + mr r8,r10 + +#if defined(USE_PPC_SVC) && defined(__powerpc64__) + CHECK_SCV_SUPPORT r9 0f + + stdu r1, -SCV_FRAME_SIZE(r1) + cfi_adjust_cfa_offset (SCV_FRAME_SIZE) + .machine "push" + .machine "power9" + scv 0 + .machine "pop" + .globl __syscall_cancel_arch_end_svc +__syscall_cancel_arch_end_svc: + ld r9, SCV_FRAME_SIZE + FRAME_LR_SAVE(r1) + mtlr r9 + addi r1, r1, SCV_FRAME_SIZE + cfi_restore (lr) + li r9, -4095 + cmpld r3, r9 + bnslr+ + neg r3,r3 + blr +0: +#endif + sc + .globl __syscall_cancel_arch_end_sc +__syscall_cancel_arch_end_sc: + bnslr+ + neg r3,r3 + blr + + /* Although the __syscall_do_cancel do not return, we need to stack + being set correctly for unwind. */ +1: + TAIL_CALL_NO_RETURN (__syscall_do_cancel) + +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/powerpc/sysconf.c b/sysdeps/unix/sysv/linux/powerpc/sysconf.c index f769a21..7d2b00b 100644 --- a/sysdeps/unix/sysv/linux/powerpc/sysconf.c +++ b/sysdeps/unix/sysv/linux/powerpc/sysconf.c @@ -1,5 +1,5 @@ /* Get system-specific information at run-time. Linux/powerpc version. - 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/powerpc/sysdep.c b/sysdeps/unix/sysv/linux/powerpc/sysdep.c index a7a55c0..21d48cff 100644 --- a/sysdeps/unix/sysv/linux/powerpc/sysdep.c +++ b/sysdeps/unix/sysv/linux/powerpc/sysdep.c @@ -1,4 +1,4 @@ -/* 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/powerpc/sysdep.h b/sysdeps/unix/sysv/linux/powerpc/sysdep.h index a69b7db..929784d 100644 --- a/sysdeps/unix/sysv/linux/powerpc/sysdep.h +++ b/sysdeps/unix/sysv/linux/powerpc/sysdep.h @@ -1,5 +1,5 @@ /* Syscall definitions, Linux PowerPC generic version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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 @@ -32,6 +32,18 @@ #undef SYS_ify #define SYS_ify(syscall_name) __NR_##syscall_name +#define tostring(s) #s +#define stringify(s) tostring(s) + +#ifdef _ARCH_PWR4 +/* Power4 and later cpus introduced a faster instruction to copy one + CR field, rather than the slower microcoded mfcr which copies all + CR fields. */ +# define MFCR0(REG) "mfocrf " stringify(REG) ",0x80" +#else +# define MFCR0(REG) "mfcr " stringify(REG) +#endif + /* Define a macro which expands inline into the wrapper code for a system call. This use is for internal calls that do not need to handle errors normally. It will never touch errno. This returns just what the kernel @@ -52,7 +64,7 @@ __asm__ __volatile__ \ ("mtctr %0\n\t" \ "bctrl\n\t" \ - "mfcr %0\n\t" \ + MFCR0(%0) "\n\t" \ "0:" \ : "+r" (r0), "+r" (r3), "+r" (r4), "+r" (r5), "+r" (r6), \ "+r" (r7), "+r" (r8) \ @@ -83,11 +95,10 @@ "scv 0\n\t" \ ".machine \"pop\"\n\t" \ "0:" \ - : "=&r" (r0), \ - "=&r" (r3), "=&r" (r4), "=&r" (r5), \ - "=&r" (r6), "=&r" (r7), "=&r" (r8) \ - : ASM_INPUT_##nr \ - : "r9", "r10", "r11", "r12", \ + : "+r" (r0), \ + "+r" (r3), "+r" (r4), "+r" (r5), \ + "+r" (r6), "+r" (r7), "+r" (r8) \ + : : "r9", "r10", "r11", "r12", \ "cr0", "cr1", "cr5", "cr6", "cr7", \ "xer", "lr", "ctr", "memory"); \ r3; \ @@ -97,13 +108,12 @@ ({ \ __asm__ __volatile__ \ ("sc\n\t" \ - "mfcr %0\n\t" \ + MFCR0(%0) "\n\t" \ "0:" \ - : "=&r" (r0), \ - "=&r" (r3), "=&r" (r4), "=&r" (r5), \ - "=&r" (r6), "=&r" (r7), "=&r" (r8) \ - : ASM_INPUT_##nr \ - : "r9", "r10", "r11", "r12", \ + : "+r" (r0), \ + "+r" (r3), "+r" (r4), "+r" (r5), \ + "+r" (r6), "+r" (r7), "+r" (r8) \ + : : "r9", "r10", "r11", "r12", \ "xer", "cr0", "ctr", "memory"); \ r0 & (1 << 28) ? -r3 : r3; \ }) @@ -199,14 +209,6 @@ __illegally_sized_syscall_arg6 (); \ r8 = _arg6 -#define ASM_INPUT_0 "0" (r0) -#define ASM_INPUT_1 ASM_INPUT_0, "1" (r3) -#define ASM_INPUT_2 ASM_INPUT_1, "2" (r4) -#define ASM_INPUT_3 ASM_INPUT_2, "3" (r5) -#define ASM_INPUT_4 ASM_INPUT_3, "4" (r6) -#define ASM_INPUT_5 ASM_INPUT_4, "5" (r7) -#define ASM_INPUT_6 ASM_INPUT_5, "6" (r8) - /* List of system calls which are supported as vsyscalls. */ #define VDSO_NAME "LINUX_2.6.15" #define VDSO_HASH 123718565 @@ -223,5 +225,6 @@ #define HAVE_TIME_VSYSCALL "__kernel_time" #define HAVE_GETTIMEOFDAY_VSYSCALL "__kernel_gettimeofday" #define HAVE_GET_TBFREQ "__kernel_get_tbfreq" +#define HAVE_GETRANDOM_VSYSCALL "__kernel_getrandom" #endif /* _LINUX_POWERPC_SYSDEP_H */ diff --git a/sysdeps/unix/sysv/linux/powerpc/termios_arch.h b/sysdeps/unix/sysv/linux/powerpc/termios_arch.h new file mode 100644 index 0000000..20025f2 --- /dev/null +++ b/sysdeps/unix/sysv/linux/powerpc/termios_arch.h @@ -0,0 +1,26 @@ +/* Architectural parameters for Linux termios - Alpha/PowerPC version + + 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 + 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/>. */ + +#ifndef TERMIOS_INTERNALS_H +# error "<termios_arch.h> should only be included from <termios_internals.h>" +#endif + +#define _TERMIOS2_NCCS 19 +#define _HAVE_TERMIOS2_C_CC_BEFORE_C_LINE 1 +#define _HAVE_STRUCT_OLD_TERMIOS 0 diff --git a/sysdeps/unix/sysv/linux/powerpc/test-gettimebasefreq-static.c b/sysdeps/unix/sysv/linux/powerpc/test-gettimebasefreq-static.c index 455a244..4298cab 100644 --- a/sysdeps/unix/sysv/linux/powerpc/test-gettimebasefreq-static.c +++ b/sysdeps/unix/sysv/linux/powerpc/test-gettimebasefreq-static.c @@ -1,5 +1,5 @@ /* Check __ppc_get_timebase_freq() for architecture changes - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/powerpc/test-gettimebasefreq.c b/sysdeps/unix/sysv/linux/powerpc/test-gettimebasefreq.c index 6610ac1..a720c54 100644 --- a/sysdeps/unix/sysv/linux/powerpc/test-gettimebasefreq.c +++ b/sysdeps/unix/sysv/linux/powerpc/test-gettimebasefreq.c @@ -1,5 +1,5 @@ /* Check __ppc_get_timebase_freq() for architecture changes - Copyright (C) 2012-2024 Free Software Foundation, Inc. + Copyright (C) 2012-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/powerpc/test-powerpc-linux-sysconf.c b/sysdeps/unix/sysv/linux/powerpc/test-powerpc-linux-sysconf.c index 31d055f..2dd4770 100644 --- a/sysdeps/unix/sysv/linux/powerpc/test-powerpc-linux-sysconf.c +++ b/sysdeps/unix/sysv/linux/powerpc/test-powerpc-linux-sysconf.c @@ -1,5 +1,5 @@ /* Check use of sysconf() for cache geometries. - 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/powerpc/time.c b/sysdeps/unix/sysv/linux/powerpc/time.c index 96ae60b..41c09c7 100644 --- a/sysdeps/unix/sysv/linux/powerpc/time.c +++ b/sysdeps/unix/sysv/linux/powerpc/time.c @@ -1,5 +1,5 @@ /* time system call for Linux/PowerPC. - Copyright (C) 2013-2024 Free Software Foundation, Inc. + Copyright (C) 2013-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/powerpc/tst-hwcap-tunables.c b/sysdeps/unix/sysv/linux/powerpc/tst-hwcap-tunables.c index f2fee35..2b0dc45 100644 --- a/sysdeps/unix/sysv/linux/powerpc/tst-hwcap-tunables.c +++ b/sysdeps/unix/sysv/linux/powerpc/tst-hwcap-tunables.c @@ -1,5 +1,5 @@ /* Tests for powerpc GLIBC_TUNABLES=glibc.cpu.hwcaps filter. - 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/ppoll.c b/sysdeps/unix/sysv/linux/ppoll.c index 39e7800..8067050 100644 --- a/sysdeps/unix/sysv/linux/ppoll.c +++ b/sysdeps/unix/sysv/linux/ppoll.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2006-2024 Free Software Foundation, Inc. +/* Copyright (C) 2006-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/ppoll_chk.c b/sysdeps/unix/sysv/linux/ppoll_chk.c index 1a4a793..3a1cb5e 100644 --- a/sysdeps/unix/sysv/linux/ppoll_chk.c +++ b/sysdeps/unix/sysv/linux/ppoll_chk.c @@ -1,5 +1,5 @@ /* Fortify ppoll implementation. Linux version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/pread.c b/sysdeps/unix/sysv/linux/pread.c index ff2c5da..b3bb0dc 100644 --- a/sysdeps/unix/sysv/linux/pread.c +++ b/sysdeps/unix/sysv/linux/pread.c @@ -1,4 +1,4 @@ -/* 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/pread64.c b/sysdeps/unix/sysv/linux/pread64.c index fd55c8b..5fbf14b 100644 --- a/sysdeps/unix/sysv/linux/pread64.c +++ b/sysdeps/unix/sysv/linux/pread64.c @@ -1,4 +1,4 @@ -/* 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/pread64_nocancel.c b/sysdeps/unix/sysv/linux/pread64_nocancel.c index bb685f2..a050f4f 100644 --- a/sysdeps/unix/sysv/linux/pread64_nocancel.c +++ b/sysdeps/unix/sysv/linux/pread64_nocancel.c @@ -1,5 +1,5 @@ /* Linux pread64() syscall implementation -- non-cancellable. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/preadv.c b/sysdeps/unix/sysv/linux/preadv.c index c58ee98..0887090 100644 --- a/sysdeps/unix/sysv/linux/preadv.c +++ b/sysdeps/unix/sysv/linux/preadv.c @@ -1,4 +1,4 @@ -/* 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/preadv2.c b/sysdeps/unix/sysv/linux/preadv2.c index 55f9603..7a39aff 100644 --- a/sysdeps/unix/sysv/linux/preadv2.c +++ b/sysdeps/unix/sysv/linux/preadv2.c @@ -1,5 +1,5 @@ /* Linux implementation of preadv2. - 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/preadv64.c b/sysdeps/unix/sysv/linux/preadv64.c index 3386fdb..6039fdf 100644 --- a/sysdeps/unix/sysv/linux/preadv64.c +++ b/sysdeps/unix/sysv/linux/preadv64.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2016-2024 Free Software Foundation, Inc. +/* Copyright (C) 2016-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/preadv64v2.c b/sysdeps/unix/sysv/linux/preadv64v2.c index 2dd52ef..2effbef 100644 --- a/sysdeps/unix/sysv/linux/preadv64v2.c +++ b/sysdeps/unix/sysv/linux/preadv64v2.c @@ -1,5 +1,5 @@ /* Linux implementation of preadv2 (LFS version). - 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/prlimit.c b/sysdeps/unix/sysv/linux/prlimit.c index 1188b3a..65b9f01 100644 --- a/sysdeps/unix/sysv/linux/prlimit.c +++ b/sysdeps/unix/sysv/linux/prlimit.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2010-2024 Free Software Foundation, Inc. +/* Copyright (C) 2010-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/prlimit64.c b/sysdeps/unix/sysv/linux/prlimit64.c index f34f536..199d639 100644 --- a/sysdeps/unix/sysv/linux/prlimit64.c +++ b/sysdeps/unix/sysv/linux/prlimit64.c @@ -1,5 +1,5 @@ /* Get/set resource limits. Linux specific syscall. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/process_vm_readv.c b/sysdeps/unix/sysv/linux/process_vm_readv.c index 23e6b08..47f9857 100644 --- a/sysdeps/unix/sysv/linux/process_vm_readv.c +++ b/sysdeps/unix/sysv/linux/process_vm_readv.c @@ -1,5 +1,5 @@ /* process_vm_readv - Linux specific syscall. - 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/process_vm_writev.c b/sysdeps/unix/sysv/linux/process_vm_writev.c index 308e9ed..09b50e6 100644 --- a/sysdeps/unix/sysv/linux/process_vm_writev.c +++ b/sysdeps/unix/sysv/linux/process_vm_writev.c @@ -1,5 +1,5 @@ /* process_vm_writev - Linux specific syscall. - 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/procutils.c b/sysdeps/unix/sysv/linux/procutils.c index 86d3d37..7399345 100644 --- a/sysdeps/unix/sysv/linux/procutils.c +++ b/sysdeps/unix/sysv/linux/procutils.c @@ -1,5 +1,5 @@ /* Utilities functions to read/parse Linux procfs and sysfs. - 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/procutils.h b/sysdeps/unix/sysv/linux/procutils.h index acf1ec5..7a90187 100644 --- a/sysdeps/unix/sysv/linux/procutils.h +++ b/sysdeps/unix/sysv/linux/procutils.h @@ -1,5 +1,5 @@ /* Utilities functions to read/parse Linux procfs and sysfs. - 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/prof-freq.c b/sysdeps/unix/sysv/linux/prof-freq.c index 5b35c1a..ec6effa 100644 --- a/sysdeps/unix/sysv/linux/prof-freq.c +++ b/sysdeps/unix/sysv/linux/prof-freq.c @@ -1,5 +1,5 @@ /* Determine realtime clock frequency. - 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/profil-counter.h b/sysdeps/unix/sysv/linux/profil-counter.h index 8da7f59..85359fd 100644 --- a/sysdeps/unix/sysv/linux/profil-counter.h +++ b/sysdeps/unix/sysv/linux/profil-counter.h @@ -1,5 +1,5 @@ /* Low-level statistical profiling support function. Linux 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/pselect.c b/sysdeps/unix/sysv/linux/pselect.c index f973726..6c50b54 100644 --- a/sysdeps/unix/sysv/linux/pselect.c +++ b/sysdeps/unix/sysv/linux/pselect.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2006-2024 Free Software Foundation, Inc. +/* Copyright (C) 2006-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/pselect32.c b/sysdeps/unix/sysv/linux/pselect32.c index 228f551..551fc6c 100644 --- a/sysdeps/unix/sysv/linux/pselect32.c +++ b/sysdeps/unix/sysv/linux/pselect32.c @@ -1,5 +1,5 @@ /* Synchronous I/O multiplexing. Linux 32-bit time fallback. - 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/ptrace.c b/sysdeps/unix/sysv/linux/ptrace.c index ed3c3a9..5b74846 100644 --- a/sysdeps/unix/sysv/linux/ptrace.c +++ b/sysdeps/unix/sysv/linux/ptrace.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/ptsname.c b/sysdeps/unix/sysv/linux/ptsname.c index 98e1ba4..c8455cf 100644 --- a/sysdeps/unix/sysv/linux/ptsname.c +++ b/sysdeps/unix/sysv/linux/ptsname.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/pwrite.c b/sysdeps/unix/sysv/linux/pwrite.c index 812e650..864d2b3 100644 --- a/sysdeps/unix/sysv/linux/pwrite.c +++ b/sysdeps/unix/sysv/linux/pwrite.c @@ -1,4 +1,4 @@ -/* 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/pwrite64.c b/sysdeps/unix/sysv/linux/pwrite64.c index ea83423..c1388b0 100644 --- a/sysdeps/unix/sysv/linux/pwrite64.c +++ b/sysdeps/unix/sysv/linux/pwrite64.c @@ -1,4 +1,4 @@ -/* 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/pwritev.c b/sysdeps/unix/sysv/linux/pwritev.c index d2bbbc1..a277df4 100644 --- a/sysdeps/unix/sysv/linux/pwritev.c +++ b/sysdeps/unix/sysv/linux/pwritev.c @@ -1,4 +1,4 @@ -/* 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/pwritev2.c b/sysdeps/unix/sysv/linux/pwritev2.c index 7bdbe57..29c0e90 100644 --- a/sysdeps/unix/sysv/linux/pwritev2.c +++ b/sysdeps/unix/sysv/linux/pwritev2.c @@ -1,5 +1,5 @@ /* Linux implementation of pwritev2. - 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/pwritev64.c b/sysdeps/unix/sysv/linux/pwritev64.c index 465f329..9593512 100644 --- a/sysdeps/unix/sysv/linux/pwritev64.c +++ b/sysdeps/unix/sysv/linux/pwritev64.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2016-2024 Free Software Foundation, Inc. +/* Copyright (C) 2016-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/pwritev64v2.c b/sysdeps/unix/sysv/linux/pwritev64v2.c index 58263d0..8328bc7 100644 --- a/sysdeps/unix/sysv/linux/pwritev64v2.c +++ b/sysdeps/unix/sysv/linux/pwritev64v2.c @@ -1,5 +1,5 @@ /* Linux implementation of pwritev2 (LFS version). - 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/read.c b/sysdeps/unix/sysv/linux/read.c index b0afd24..cb2f22e 100644 --- a/sysdeps/unix/sysv/linux/read.c +++ b/sysdeps/unix/sysv/linux/read.c @@ -1,5 +1,5 @@ /* Linux read syscall implementation. - 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/read_nocancel.c b/sysdeps/unix/sysv/linux/read_nocancel.c index 3e2e440..38c1d38 100644 --- a/sysdeps/unix/sysv/linux/read_nocancel.c +++ b/sysdeps/unix/sysv/linux/read_nocancel.c @@ -1,5 +1,5 @@ /* Linux read syscall implementation -- non-cancellable. - 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/readahead.c b/sysdeps/unix/sysv/linux/readahead.c index c744bf4..9661cbf 100644 --- a/sysdeps/unix/sysv/linux/readahead.c +++ b/sysdeps/unix/sysv/linux/readahead.c @@ -1,5 +1,5 @@ /* Provide kernel hint to read ahead. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/readdir.c b/sysdeps/unix/sysv/linux/readdir.c index 33bae4b..abd1ec5 100644 --- a/sysdeps/unix/sysv/linux/readdir.c +++ b/sysdeps/unix/sysv/linux/readdir.c @@ -1,5 +1,5 @@ /* Read a directory. Linux no-LFS 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/readdir64.c b/sysdeps/unix/sysv/linux/readdir64.c index e6f5108..f4b2cc0 100644 --- a/sysdeps/unix/sysv/linux/readdir64.c +++ b/sysdeps/unix/sysv/linux/readdir64.c @@ -1,5 +1,5 @@ /* Read a directory. Linux LFS 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 @@ -26,17 +26,13 @@ #undef __readdir #undef readdir -/* Read a directory entry from DIRP. */ -struct dirent64 * -__readdir64 (DIR *dirp) +/* Read a directory entry from DIRP. No locking. */ +static struct dirent64 * +__readdir64_unlocked (DIR *dirp) { struct dirent64 *dp; int saved_errno = errno; -#if IS_IN (libc) - __libc_lock_lock (dirp->lock); -#endif - if (dirp->offset >= dirp->size) { /* We've emptied out our buffer. Refill it. */ @@ -53,9 +49,6 @@ __readdir64 (DIR *dirp) do not set errno in that case, to indicate success. */ if (bytes == 0 || errno == ENOENT) __set_errno (saved_errno); -#if IS_IN (libc) - __libc_lock_unlock (dirp->lock); -#endif return NULL; } dirp->size = (size_t) bytes; @@ -68,10 +61,16 @@ __readdir64 (DIR *dirp) dirp->offset += dp->d_reclen; dirp->filepos = dp->d_off; -#if IS_IN (libc) - __libc_lock_unlock (dirp->lock); -#endif + return dp; +} +/* Read a directory entry from DIRP. */ +struct dirent64 * +__readdir64 (DIR *dirp) +{ + __libc_lock_lock (dirp->lock); + struct dirent64 *dp = __readdir64_unlocked (dirp); + __libc_lock_unlock (dirp->lock); return dp; } libc_hidden_def (__readdir64) @@ -99,45 +98,54 @@ __old_readdir64 (DIR *dirp) struct __old_dirent64 *dp; int saved_errno = errno; -#if IS_IN (libc) __libc_lock_lock (dirp->lock); -#endif - if (dirp->offset >= dirp->size) + while (1) { - /* We've emptied out our buffer. Refill it. */ + errno = 0; + struct dirent64 *newdp = __readdir64_unlocked (dirp); + if (newdp == NULL) + { + if (errno == 0 && dirp->errcode != 0) + __set_errno (dirp->errcode); + else if (errno == 0) + __set_errno (saved_errno); + dp = NULL; + break; + } - size_t maxread = dirp->allocation; - ssize_t bytes; + /* Convert to the target layout. Use a separate struct and + memcpy to side-step aliasing issues. */ + struct __old_dirent64 result; + result.d_ino = newdp->d_ino; + result.d_off = newdp->d_off; + result.d_reclen = newdp->d_reclen; + result.d_type = newdp->d_type; - bytes = __old_getdents64 (dirp->fd, dirp->data, maxread); - if (bytes <= 0) + /* Check for ino_t overflow. */ + if (__glibc_unlikely (result.d_ino != newdp->d_ino)) { - /* Linux may fail with ENOENT on some file systems if the - directory inode is marked as dead (deleted). POSIX - treats this as a regular end-of-directory condition, so - do not set errno in that case, to indicate success. */ - if (bytes == 0 || errno == ENOENT) - __set_errno (saved_errno); -#if IS_IN (libc) - __libc_lock_unlock (dirp->lock); -#endif - return NULL; + dirp->errcode = ENAMETOOLONG; + continue; } - dirp->size = (size_t) bytes; - /* Reset the offset into the buffer. */ - dirp->offset = 0; - } + /* Overwrite the fixed-sized part. */ + dp = (struct __old_dirent64 *) newdp; + memcpy (dp, &result, offsetof (struct __old_dirent64, d_name)); - dp = (struct __old_dirent64 *) &dirp->data[dirp->offset]; - dirp->offset += dp->d_reclen; - dirp->filepos = dp->d_off; + /* Move the name. */ + _Static_assert (offsetof (struct __old_dirent64, d_name) + <= offsetof (struct dirent64, d_name), + "old struct must be smaller"); + if (offsetof (struct __old_dirent64, d_name) + != offsetof (struct dirent64, d_name)) + memmove (dp->d_name, newdp->d_name, strlen (newdp->d_name) + 1); -#if IS_IN (libc) - __libc_lock_unlock (dirp->lock); -#endif + __set_errno (saved_errno); + break; + } + __libc_lock_unlock (dirp->lock); return dp; } libc_hidden_def (__old_readdir64) diff --git a/sysdeps/unix/sysv/linux/readdir64_r.c b/sysdeps/unix/sysv/linux/readdir64_r.c index e87882e..862e569 100644 --- a/sysdeps/unix/sysv/linux/readdir64_r.c +++ b/sysdeps/unix/sysv/linux/readdir64_r.c @@ -1,5 +1,5 @@ /* Read a directory in reentrant mode. Linux LFS 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 @@ -37,7 +37,7 @@ __readdir64_r (DIR *dirp, struct dirent64 *entry, struct dirent64 **result) __libc_lock_lock (dirp->lock); - do + while (1) { if (dirp->offset >= dirp->size) { @@ -79,26 +79,21 @@ __readdir64_r (DIR *dirp, struct dirent64 *entry, struct dirent64 **result) dirp->filepos = dp->d_off; - if (reclen > offsetof (struct dirent64, d_name) + NAME_MAX + 1) + if (reclen <= offsetof (struct dirent64, d_name) + NAME_MAX + 1) + break; + + /* The record is very long. It could still fit into the + caller-supplied buffer if we can skip padding at the end. */ + size_t namelen = _D_EXACT_NAMLEN (dp); + if (namelen <= NAME_MAX) { - /* The record is very long. It could still fit into the - caller-supplied buffer if we can skip padding at the - end. */ - size_t namelen = _D_EXACT_NAMLEN (dp); - if (namelen <= NAME_MAX) - reclen = offsetof (struct dirent64, d_name) + namelen + 1; - else - { - /* The name is too long. Ignore this file. */ - dirp->errcode = ENAMETOOLONG; - dp->d_ino = 0; - continue; - } + reclen = offsetof (struct dirent64, d_name) + namelen + 1; + break; } - /* Skip deleted and ignored files. */ + /* The name is too long. Ignore this file. */ + dirp->errcode = ENAMETOOLONG; } - while (dp->d_ino == 0); if (dp != NULL) { @@ -135,91 +130,37 @@ attribute_compat_text_section __old_readdir64_r (DIR *dirp, struct __old_dirent64 *entry, struct __old_dirent64 **result) { - struct __old_dirent64 *dp; - size_t reclen; - const int saved_errno = errno; - int ret; - - __libc_lock_lock (dirp->lock); - - do + while (1) { - if (dirp->offset >= dirp->size) - { - /* We've emptied out our buffer. Refill it. */ - - size_t maxread = dirp->allocation; - ssize_t bytes; - - maxread = dirp->allocation; - - bytes = __old_getdents64 (dirp->fd, dirp->data, maxread); - if (bytes <= 0) - { - /* On some systems getdents fails with ENOENT when the - open directory has been rmdir'd already. POSIX.1 - requires that we treat this condition like normal EOF. */ - if (bytes < 0 && errno == ENOENT) - { - bytes = 0; - __set_errno (saved_errno); - } - if (bytes < 0) - dirp->errcode = errno; - - dp = NULL; - break; - } - dirp->size = (size_t) bytes; + struct dirent64 new_entry; + struct dirent64 *newp; + int ret = __readdir64_r (dirp, &new_entry, &newp); - /* Reset the offset into the buffer. */ - dirp->offset = 0; + if (ret != 0) + return ret; + else if (newp == NULL) + { + *result = NULL; + return 0; } - - dp = (struct __old_dirent64 *) &dirp->data[dirp->offset]; - - reclen = dp->d_reclen; - - dirp->offset += reclen; - - dirp->filepos = dp->d_off; - - if (reclen > offsetof (struct __old_dirent64, d_name) + NAME_MAX + 1) + else { - /* The record is very long. It could still fit into the - caller-supplied buffer if we can skip padding at the - end. */ - size_t namelen = _D_EXACT_NAMLEN (dp); - if (namelen <= NAME_MAX) - reclen = offsetof (struct __old_dirent64, d_name) + namelen + 1; - else + entry->d_ino = newp->d_ino; + if (entry->d_ino != newp->d_ino) { - /* The name is too long. Ignore this file. */ - dirp->errcode = ENAMETOOLONG; - dp->d_ino = 0; + dirp->errcode = EOVERFLOW; continue; } + size_t namelen = strlen (newp->d_name); + entry->d_off = newp->d_off; + entry->d_reclen = (offsetof (struct __old_dirent64, d_name) + + namelen + 1); + entry->d_type = newp->d_type; + memcpy (entry->d_name, newp->d_name, namelen + 1); + *result = entry; + return 0; } - - /* Skip deleted and ignored files. */ } - while (dp->d_ino == 0); - - if (dp != NULL) - { - *result = memcpy (entry, dp, reclen); - entry->d_reclen = reclen; - ret = 0; - } - else - { - *result = NULL; - ret = dirp->errcode; - } - - __libc_lock_unlock (dirp->lock); - - return ret; } compat_symbol (libc, __old_readdir64_r, readdir64_r, GLIBC_2_1); diff --git a/sysdeps/unix/sysv/linux/readdir_r.c b/sysdeps/unix/sysv/linux/readdir_r.c index ffd5262..742317f 100644 --- a/sysdeps/unix/sysv/linux/readdir_r.c +++ b/sysdeps/unix/sysv/linux/readdir_r.c @@ -1,5 +1,5 @@ /* Read a directory in reentrant mode. Linux no-LFS 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 @@ -25,14 +25,22 @@ __readdir_r (DIR *dirp, struct dirent *entry, struct dirent **result) { struct dirent *dp; size_t reclen; + int saved_errno = errno; __libc_lock_lock (dirp->lock); while (1) { + /* If errno is changed from 0, the NULL return value indicates + an actual error. It overrides a pending ENAMETOOLONG error. */ + __set_errno (0); dp = __readdir_unlocked (dirp); if (dp == NULL) - break; + { + if (errno != 0) + dirp->errcode = errno; + break; + } reclen = dp->d_reclen; if (reclen <= offsetof (struct dirent, d_name) + NAME_MAX + 1) @@ -61,6 +69,7 @@ __readdir_r (DIR *dirp, struct dirent *entry, struct dirent **result) __libc_lock_unlock (dirp->lock); + __set_errno (saved_errno); return dp != NULL ? 0 : dirp->errcode; } diff --git a/sysdeps/unix/sysv/linux/readlink.c b/sysdeps/unix/sysv/linux/readlink.c index bb75d20..b7ef989 100644 --- a/sysdeps/unix/sysv/linux/readlink.c +++ b/sysdeps/unix/sysv/linux/readlink.c @@ -1,5 +1,5 @@ /* Read value of a symbolic link. Linux version. - 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/readonly-area.c b/sysdeps/unix/sysv/linux/readonly-area-fallback.c index 67975cf..c93ad2a 100644 --- a/sysdeps/unix/sysv/linux/readonly-area.c +++ b/sysdeps/unix/sysv/linux/readonly-area-fallback.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2024 Free Software Foundation, Inc. +/* Copyright (C) 2004-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 @@ -23,11 +23,8 @@ #include <string.h> #include "libio/libioP.h" -/* Return 1 if the whole area PTR .. PTR+SIZE is not writable. - Return -1 if it is writable. */ - -int -__readonly_area (const char *ptr, size_t size) +enum readonly_error_type +__readonly_area_fallback (const void *ptr, size_t size) { const void *ptr_end = ptr + size; @@ -42,11 +39,11 @@ __readonly_area (const char *ptr, size_t size) to the /proc filesystem if it is set[ug]id. There has been no willingness to change this in the kernel so far. */ - || errno == EACCES - /* Process has reached the maximum number of open files. */ - || errno == EMFILE) - return 1; - return -1; + || errno == EACCES) + return readonly_procfs_inaccessible; + /* Process has reached the maximum number of open files or another + unusual error. */ + return readonly_procfs_open_fail; } /* We need no locking. */ @@ -98,7 +95,5 @@ __readonly_area (const char *ptr, size_t size) fclose (fp); free (line); - /* If the whole area between ptr and ptr_end is covered by read-only - VMAs, return 1. Otherwise return -1. */ - return size == 0 ? 1 : -1; + return size == 0 ? readonly_noerror : readonly_area_writable; } diff --git a/sysdeps/unix/sysv/linux/readv.c b/sysdeps/unix/sysv/linux/readv.c index 3eae7e8..8b5c5f1 100644 --- a/sysdeps/unix/sysv/linux/readv.c +++ b/sysdeps/unix/sysv/linux/readv.c @@ -1,5 +1,5 @@ /* Linux implementation for readv syscall. - 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/reboot.c b/sysdeps/unix/sysv/linux/reboot.c index 2dbf723..b693751 100644 --- a/sysdeps/unix/sysv/linux/reboot.c +++ b/sysdeps/unix/sysv/linux/reboot.c @@ -1,4 +1,4 @@ -/* 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/recv.c b/sysdeps/unix/sysv/linux/recv.c index 6ff79b1..24ee8f7 100644 --- a/sysdeps/unix/sysv/linux/recv.c +++ b/sysdeps/unix/sysv/linux/recv.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2015-2024 Free Software Foundation, Inc. +/* Copyright (C) 2015-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/recvfrom.c b/sysdeps/unix/sysv/linux/recvfrom.c index a235355..fd47d31 100644 --- a/sysdeps/unix/sysv/linux/recvfrom.c +++ b/sysdeps/unix/sysv/linux/recvfrom.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2015-2024 Free Software Foundation, Inc. +/* Copyright (C) 2015-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/recvmmsg.c b/sysdeps/unix/sysv/linux/recvmmsg.c index 16136f5..3b00bb2 100644 --- a/sysdeps/unix/sysv/linux/recvmmsg.c +++ b/sysdeps/unix/sysv/linux/recvmmsg.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2010-2024 Free Software Foundation, Inc. +/* Copyright (C) 2010-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/recvmsg.c b/sysdeps/unix/sysv/linux/recvmsg.c index 034526e..5b4d0e1 100644 --- a/sysdeps/unix/sysv/linux/recvmsg.c +++ b/sysdeps/unix/sysv/linux/recvmsg.c @@ -1,5 +1,5 @@ /* Linux recvmsg syscall wrapper. - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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/rename.c b/sysdeps/unix/sysv/linux/rename.c index 583dcd4..76f7558 100644 --- a/sysdeps/unix/sysv/linux/rename.c +++ b/sysdeps/unix/sysv/linux/rename.c @@ -1,5 +1,5 @@ /* Linux implementation for rename function. - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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/renameat.c b/sysdeps/unix/sysv/linux/renameat.c index c9a014d..d090ea4 100644 --- a/sysdeps/unix/sysv/linux/renameat.c +++ b/sysdeps/unix/sysv/linux/renameat.c @@ -1,5 +1,5 @@ /* Linux implementation for renameat function. - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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/renameat2.c b/sysdeps/unix/sysv/linux/renameat2.c index 0d08eca..ca4c9d7 100644 --- a/sysdeps/unix/sysv/linux/renameat2.c +++ b/sysdeps/unix/sysv/linux/renameat2.c @@ -1,5 +1,5 @@ /* Linux implementation for renameat2 function. - 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/rewinddir.c b/sysdeps/unix/sysv/linux/rewinddir.c index af85000..40b5e10 100644 --- a/sysdeps/unix/sysv/linux/rewinddir.c +++ b/sysdeps/unix/sysv/linux/rewinddir.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2024 Free Software Foundation, Inc. +/* Copyright (C) 1991-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/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 diff --git a/sysdeps/unix/sysv/linux/rmdir.c b/sysdeps/unix/sysv/linux/rmdir.c index fba4bda..0a220a6 100644 --- a/sysdeps/unix/sysv/linux/rmdir.c +++ b/sysdeps/unix/sysv/linux/rmdir.c @@ -1,5 +1,5 @@ /* Delete a directory. Linux version. - 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/rseq-internal.h b/sysdeps/unix/sysv/linux/rseq-internal.h index 7ea935b..d2ab4cb 100644 --- a/sysdeps/unix/sysv/linux/rseq-internal.h +++ b/sysdeps/unix/sysv/linux/rseq-internal.h @@ -1,5 +1,5 @@ /* Restartable Sequences internal API. Linux implementation. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + 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 @@ -24,46 +24,111 @@ #include <stdbool.h> #include <stdio.h> #include <sys/rseq.h> +#include <ldsodefs.h> +#include <thread_pointer.h> +#include <rseq-access.h> -/* 32 is the initially required value for the area size. The - actually used rseq size may be less (20 bytes initially). */ +/* rseq area registered with the kernel. Use a custom definition here to + isolate from the system provided header which could lack some fields of the + Extended ABI. + + This is only used to get the field offsets and sizes, it should never be + used for direct object allocations. + + Access to fields of the Extended ABI beyond the 20 bytes of the original ABI + (after 'flags') must be gated by a check of the feature size. */ +struct rseq_area +{ + /* Original ABI. */ + uint32_t cpu_id_start; + uint32_t cpu_id; + uint64_t rseq_cs; + uint32_t flags; + /* Extended ABI. */ + uint32_t node_id; + uint32_t mm_cid; + /* Flexible array member to discourage direct object allocations. */ + char end[]; +}; + +/* Minimum size of the rseq area allocation required by the syscall. The + actually used rseq feature size may be less (20 bytes initially). */ #define RSEQ_AREA_SIZE_INITIAL 32 + +/* Minimum used feature size of the rseq area. */ #define RSEQ_AREA_SIZE_INITIAL_USED 20 -/* The variables are in .data.relro but are not yet write-protected. */ +/* Maximum currently used feature size of the rseq area. */ +#define RSEQ_AREA_SIZE_MAX_USED 28 + +/* Minimum alignment of the rseq area. */ +#define RSEQ_MIN_ALIGN 32 + +/* Alignment requirement of the rseq area. + Populated from the auxiliary vector with a minimum of '32'. + In .data.relro but not yet write-protected. */ +extern size_t _rseq_align attribute_hidden; + +/* Size of the active features in the rseq area. + Populated from the auxiliary vector with a minimum of '20'. + Set to '0' on registration failure of the main thread. + In .data.relro but not yet write-protected. */ extern unsigned int _rseq_size attribute_hidden; + +/* Offset from the thread pointer to the rseq area, always set to allow + checking the registration status by reading the 'cpu_id' field. + In .data.relro but not yet write-protected. */ extern ptrdiff_t _rseq_offset attribute_hidden; +/* We want to use rtld_hidden_proto in order to call the internal aliases + of __rseq_size and __rseq_offset from ld.so. This avoids dynamic symbol + binding at run time for both variables. */ +rtld_hidden_proto (__rseq_size) +rtld_hidden_proto (__rseq_offset) + +/* Returns a pointer to the current thread rseq area. */ +static inline struct rseq_area * +RSEQ_SELF (void) +{ + return (struct rseq_area *) ((char *) __thread_pointer () + __rseq_offset); +} + #ifdef RSEQ_SIG static inline bool rseq_register_current_thread (struct pthread *self, bool do_rseq) { if (do_rseq) { - unsigned int size; -#if IS_IN (rtld) - /* Use the hidden symbol in ld.so. */ - size = _rseq_size; -#else - size = __rseq_size; -#endif + unsigned int size = __rseq_size; + + /* The feature size can be smaller than the minimum rseq area size of 32 + bytes accepted by the syscall, if this is the case, bump the size of + the registration to the minimum. The 'extra TLS' block is always at + least 32 bytes. */ if (size < RSEQ_AREA_SIZE_INITIAL) - /* The initial implementation used only 20 bytes out of 32, - but still expected size 32. */ size = RSEQ_AREA_SIZE_INITIAL; - int ret = INTERNAL_SYSCALL_CALL (rseq, &self->rseq_area, - size, 0, RSEQ_SIG); + + /* Initialize the whole rseq area to zero prior to registration. */ + memset (RSEQ_SELF (), 0, size); + + /* Set the cpu_id field to RSEQ_CPU_ID_UNINITIALIZED, this is checked by + the kernel at registration when CONFIG_DEBUG_RSEQ is enabled. */ + RSEQ_SETMEM (cpu_id, RSEQ_CPU_ID_UNINITIALIZED); + + int ret = INTERNAL_SYSCALL_CALL (rseq, RSEQ_SELF (), size, 0, RSEQ_SIG); if (!INTERNAL_SYSCALL_ERROR_P (ret)) return true; } - THREAD_SETMEM (self, rseq_area.cpu_id, RSEQ_CPU_ID_REGISTRATION_FAILED); + /* When rseq is disabled by tunables or the registration fails, inform + userspace by setting 'cpu_id' to RSEQ_CPU_ID_REGISTRATION_FAILED. */ + RSEQ_SETMEM (cpu_id, RSEQ_CPU_ID_REGISTRATION_FAILED); return false; } #else /* RSEQ_SIG */ static inline bool rseq_register_current_thread (struct pthread *self, bool do_rseq) { - THREAD_SETMEM (self, rseq_area.cpu_id, RSEQ_CPU_ID_REGISTRATION_FAILED); + RSEQ_SETMEM (cpu_id, RSEQ_CPU_ID_REGISTRATION_FAILED); return false; } #endif /* RSEQ_SIG */ diff --git a/sysdeps/unix/sysv/linux/s390/bits/elfclass.h b/sysdeps/unix/sysv/linux/s390/bits/elfclass.h index cab779a..6867016 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/elfclass.h +++ b/sysdeps/unix/sysv/linux/s390/bits/elfclass.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/s390/bits/environments.h b/sysdeps/unix/sysv/linux/s390/bits/environments.h index 0798747..55cf387 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/environments.h +++ b/sysdeps/unix/sysv/linux/s390/bits/environments.h @@ -1,4 +1,4 @@ -/* 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/s390/bits/fcntl.h b/sysdeps/unix/sysv/linux/s390/bits/fcntl.h index 6f460a6..b113426 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/s390/bits/fcntl.h @@ -1,5 +1,5 @@ /* O_*, F_*, FD_* bit values for Linux. - 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/s390/bits/hwcap.h b/sysdeps/unix/sysv/linux/s390/bits/hwcap.h index 453408b..277c371 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/hwcap.h +++ b/sysdeps/unix/sysv/linux/s390/bits/hwcap.h @@ -1,5 +1,5 @@ /* Defines for bits in AT_HWCAP. - Copyright (C) 2012-2024 Free Software Foundation, Inc. + Copyright (C) 2012-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/s390/bits/procfs-extra.h b/sysdeps/unix/sysv/linux/s390/bits/procfs-extra.h index db10952..192d39b 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/procfs-extra.h +++ b/sysdeps/unix/sysv/linux/s390/bits/procfs-extra.h @@ -1,5 +1,5 @@ /* Extra sys/procfs.h definitions. S/390 version. - 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/s390/bits/procfs-id.h b/sysdeps/unix/sysv/linux/s390/bits/procfs-id.h index 3e35ff7..34736c0 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/procfs-id.h +++ b/sysdeps/unix/sysv/linux/s390/bits/procfs-id.h @@ -1,5 +1,5 @@ /* Types of pr_uid and pr_gid in struct elf_prpsinfo. S/390 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. diff --git a/sysdeps/unix/sysv/linux/s390/bits/procfs.h b/sysdeps/unix/sysv/linux/s390/bits/procfs.h index fe13bc2..36f2d80 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/s390/bits/procfs.h @@ -1,5 +1,5 @@ /* Types for registers for sys/procfs.h. S/390 version. - 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/s390/bits/rseq.h b/sysdeps/unix/sysv/linux/s390/bits/rseq.h index b39472d..e56d877 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/rseq.h +++ b/sysdeps/unix/sysv/linux/s390/bits/rseq.h @@ -1,5 +1,5 @@ /* Restartable Sequences Linux s390 architecture header. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + 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 diff --git a/sysdeps/unix/sysv/linux/s390/bits/sigaction.h b/sysdeps/unix/sysv/linux/s390/bits/sigaction.h index 6b790e9..8853310 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/sigaction.h +++ b/sysdeps/unix/sysv/linux/s390/bits/sigaction.h @@ -1,5 +1,5 @@ /* Definitions for 31 & 64 bit S/390 sigaction. - 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/s390/bits/statfs.h b/sysdeps/unix/sysv/linux/s390/bits/statfs.h index b367674..e8c2beb 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/statfs.h +++ b/sysdeps/unix/sysv/linux/s390/bits/statfs.h @@ -1,4 +1,4 @@ -/* 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/s390/bits/struct_stat.h b/sysdeps/unix/sysv/linux/s390/bits/struct_stat.h index e5c9024..c71a537 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/struct_stat.h +++ b/sysdeps/unix/sysv/linux/s390/bits/struct_stat.h @@ -1,5 +1,5 @@ /* Definition for struct stat. - 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/s390/bits/timesize.h b/sysdeps/unix/sysv/linux/s390/bits/timesize.h index d128fc3..f50aad7 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/timesize.h +++ b/sysdeps/unix/sysv/linux/s390/bits/timesize.h @@ -1,5 +1,5 @@ /* Bit size of the time_t type at glibc build time, Linux/s390. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/s390/bits/typesizes.h b/sysdeps/unix/sysv/linux/s390/bits/typesizes.h index 7451fa6..2bbf72f 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/s390/bits/typesizes.h @@ -1,5 +1,5 @@ /* bits/typesizes.h -- underlying types for *_t. Linux/s390 version. - 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/s390/bits/utmp.h b/sysdeps/unix/sysv/linux/s390/bits/utmp.h index b657583..1296193 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/utmp.h +++ b/sysdeps/unix/sysv/linux/s390/bits/utmp.h @@ -1,5 +1,5 @@ /* The `struct utmp' type, describing entries in the utmp file. GNU version. - Copyright (C) 1993-2024 Free Software Foundation, Inc. + Copyright (C) 1993-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/s390/bits/utmpx.h b/sysdeps/unix/sysv/linux/s390/bits/utmpx.h index 1f72a73..347f67f 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/utmpx.h +++ b/sysdeps/unix/sysv/linux/s390/bits/utmpx.h @@ -1,5 +1,5 @@ /* Structures and definitions for the user accounting database. GNU 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/s390/dl-procinfo.h b/sysdeps/unix/sysv/linux/s390/dl-procinfo.h deleted file mode 100644 index bcae03e..0000000 --- a/sysdeps/unix/sysv/linux/s390/dl-procinfo.h +++ /dev/null @@ -1,48 +0,0 @@ -/* Linux/s390 version of processor capability information handling macros. - Copyright (C) 2006-2024 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 - <https://www.gnu.org/licenses/>. */ - -#ifndef _DL_S390_PROCINFO_H -#define _DL_S390_PROCINFO_H 1 -#include <sysdeps/s390/dl-procinfo.h> -#include <ldsodefs.h> - - -#undef _dl_procinfo -static inline int -__attribute__ ((unused)) -_dl_procinfo (unsigned int type, unsigned long int word) -{ - /* This table should match the information from arch/s390/kernel/setup.c - in the kernel sources. */ - int i; - - /* Fallback to generic output mechanism. */ - if (type != AT_HWCAP) - return -1; - - _dl_printf ("AT_HWCAP: "); - - for (i = 0; i < _DL_HWCAP_COUNT; ++i) - if (word & (1UL << i)) - _dl_printf (" %s", _dl_s390_cap_flags[i]); - - _dl_printf ("\n"); - - return 0; -} -#endif diff --git a/sysdeps/unix/sysv/linux/s390/elision-conf.c b/sysdeps/unix/sysv/linux/s390/elision-conf.c index 08b9028..32b9b3a 100644 --- a/sysdeps/unix/sysv/linux/s390/elision-conf.c +++ b/sysdeps/unix/sysv/linux/s390/elision-conf.c @@ -1,5 +1,5 @@ /* Lock elision tunable parameters. - 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 @@ -20,7 +20,8 @@ #include <pthreadP.h> #include <elision-conf.h> #include <unistd.h> -#include <dl-procinfo.h> +#include <ldsodefs.h> +#include <sys/auxv.h> #define TUNABLE_NAMESPACE elision #include <elf/dl-tunables.h> diff --git a/sysdeps/unix/sysv/linux/s390/elision-conf.h b/sysdeps/unix/sysv/linux/s390/elision-conf.h index f0812c4..90845de 100644 --- a/sysdeps/unix/sysv/linux/s390/elision-conf.h +++ b/sysdeps/unix/sysv/linux/s390/elision-conf.h @@ -1,5 +1,5 @@ /* Lock elision tunable parameters. - 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/s390/elision-lock.c b/sysdeps/unix/sysv/linux/s390/elision-lock.c index d3de233..b22e6cd 100644 --- a/sysdeps/unix/sysv/linux/s390/elision-lock.c +++ b/sysdeps/unix/sysv/linux/s390/elision-lock.c @@ -1,5 +1,5 @@ /* Elided pthread mutex lock. - 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/s390/elision-timed.c b/sysdeps/unix/sysv/linux/s390/elision-timed.c index bef1aa4..2611e9c 100644 --- a/sysdeps/unix/sysv/linux/s390/elision-timed.c +++ b/sysdeps/unix/sysv/linux/s390/elision-timed.c @@ -1,5 +1,5 @@ /* Lock elision timed lock. - 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/s390/elision-trylock.c b/sysdeps/unix/sysv/linux/s390/elision-trylock.c index fa03a7a..1aa99d8 100644 --- a/sysdeps/unix/sysv/linux/s390/elision-trylock.c +++ b/sysdeps/unix/sysv/linux/s390/elision-trylock.c @@ -1,5 +1,5 @@ /* Elided pthread mutex trylock. - 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/s390/elision-unlock.c b/sysdeps/unix/sysv/linux/s390/elision-unlock.c index 388509f..11e96ab 100644 --- a/sysdeps/unix/sysv/linux/s390/elision-unlock.c +++ b/sysdeps/unix/sysv/linux/s390/elision-unlock.c @@ -1,5 +1,5 @@ /* Commit an elided pthread lock. - 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/s390/htm.h b/sysdeps/unix/sysv/linux/s390/htm.h index a0038ab..bf1a89c 100644 --- a/sysdeps/unix/sysv/linux/s390/htm.h +++ b/sysdeps/unix/sysv/linux/s390/htm.h @@ -1,7 +1,7 @@ /* Shared HTM header. Work around false transactional execution facility intrinsics. - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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/s390/ipc_priv.h b/sysdeps/unix/sysv/linux/s390/ipc_priv.h index 50bca10..27d20ef 100644 --- a/sysdeps/unix/sysv/linux/s390/ipc_priv.h +++ b/sysdeps/unix/sysv/linux/s390/ipc_priv.h @@ -1,5 +1,5 @@ /* Arch-specific SysV IPC definitions for Linux. s390 version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/s390/jmp-unwind.c b/sysdeps/unix/sysv/linux/s390/jmp-unwind.c index 5f6ae39..1eedb36 100644 --- a/sysdeps/unix/sysv/linux/s390/jmp-unwind.c +++ b/sysdeps/unix/sysv/linux/s390/jmp-unwind.c @@ -1,5 +1,5 @@ /* Clean up stack frames unwound by longjmp. Linux/s390 version. - 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/s390/kernel-features.h b/sysdeps/unix/sysv/linux/s390/kernel-features.h index 79363f9..4d9f223 100644 --- a/sysdeps/unix/sysv/linux/s390/kernel-features.h +++ b/sysdeps/unix/sysv/linux/s390/kernel-features.h @@ -1,6 +1,6 @@ /* Set flags signalling availability of kernel features based on given kernel version number. S/390 version. - 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/s390/ldconfig.h b/sysdeps/unix/sysv/linux/s390/ldconfig.h index 147ca09..c15c0ea 100644 --- a/sysdeps/unix/sysv/linux/s390/ldconfig.h +++ b/sysdeps/unix/sysv/linux/s390/ldconfig.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/s390/libpthread-compat.c b/sysdeps/unix/sysv/linux/s390/libpthread-compat.c index 2645dfc..04c0780 100644 --- a/sysdeps/unix/sysv/linux/s390/libpthread-compat.c +++ b/sysdeps/unix/sysv/linux/s390/libpthread-compat.c @@ -1,5 +1,5 @@ /* Placeholder definitions to pull in removed symbol versions. s390 version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/s390/longjmp_chk.c b/sysdeps/unix/sysv/linux/s390/longjmp_chk.c index 6a415ab..71195c5 100644 --- a/sysdeps/unix/sysv/linux/s390/longjmp_chk.c +++ b/sysdeps/unix/sysv/linux/s390/longjmp_chk.c @@ -1,4 +1,4 @@ -/* 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/s390/mmap_call.h b/sysdeps/unix/sysv/linux/s390/mmap_call.h index cd32a50..46e987f 100644 --- a/sysdeps/unix/sysv/linux/s390/mmap_call.h +++ b/sysdeps/unix/sysv/linux/s390/mmap_call.h @@ -1,5 +1,5 @@ /* mmap - map files or devices into memory. Linux/s390 version. - 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/s390/readelflib.c b/sysdeps/unix/sysv/linux/s390/readelflib.c index 39f12eb..8642189 100644 --- a/sysdeps/unix/sysv/linux/s390/readelflib.c +++ b/sysdeps/unix/sysv/linux/s390/readelflib.c @@ -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/s390/s390-32/____longjmp_chk.c b/sysdeps/unix/sysv/linux/s390/s390-32/____longjmp_chk.c index 4f933fa..7c09b21 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/____longjmp_chk.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/____longjmp_chk.c @@ -1,4 +1,4 @@ -/* 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/s390/s390-32/__makecontext_ret.S b/sysdeps/unix/sysv/linux/s390/s390-32/__makecontext_ret.S index 17f2432..a309d47 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/__makecontext_ret.S +++ b/sysdeps/unix/sysv/linux/s390/s390-32/__makecontext_ret.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2024 Free Software Foundation, Inc. +/* Copyright (C) 2012-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/s390/s390-32/arch-syscall.h b/sysdeps/unix/sysv/linux/s390/s390-32/arch-syscall.h index 464eca5..f77f39f 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/s390/s390-32/arch-syscall.h @@ -136,6 +136,7 @@ #define __NR_getuid 24 #define __NR_getuid32 199 #define __NR_getxattr 227 +#define __NR_getxattrat 464 #define __NR_idle 112 #define __NR_init_module 128 #define __NR_inotify_add_watch 285 @@ -173,6 +174,7 @@ #define __NR_listen 363 #define __NR_listmount 458 #define __NR_listxattr 230 +#define __NR_listxattrat 465 #define __NR_llistxattr 231 #define __NR_lookup_dcookie 110 #define __NR_lremovexattr 234 @@ -230,6 +232,7 @@ #define __NR_open 5 #define __NR_open_by_handle_at 336 #define __NR_open_tree 428 +#define __NR_open_tree_attr 467 #define __NR_openat 288 #define __NR_openat2 437 #define __NR_pause 29 @@ -279,6 +282,7 @@ #define __NR_recvmsg 372 #define __NR_remap_file_pages 267 #define __NR_removexattr 233 +#define __NR_removexattrat 466 #define __NR_rename 38 #define __NR_renameat 295 #define __NR_renameat2 347 @@ -355,6 +359,7 @@ #define __NR_setuid 23 #define __NR_setuid32 213 #define __NR_setxattr 224 +#define __NR_setxattrat 463 #define __NR_shmat 397 #define __NR_shmctl 396 #define __NR_shmdt 398 diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/clone.S b/sysdeps/unix/sysv/linux/s390/s390-32/clone.S index a7a8632..e8dec24 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/clone.S +++ b/sysdeps/unix/sysv/linux/s390/s390-32/clone.S @@ -1,4 +1,4 @@ -/* 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/s390/s390-32/clone3.S b/sysdeps/unix/sysv/linux/s390/s390-32/clone3.S index 1ea633a..5467be5 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/clone3.S +++ b/sysdeps/unix/sysv/linux/s390/s390-32/clone3.S @@ -1,5 +1,5 @@ /* The clone3 syscall wrapper. Linux/s390x 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/s390/s390-32/getcontext.S b/sysdeps/unix/sysv/linux/s390/s390-32/getcontext.S index ef2319a..a2a3061 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/getcontext.S +++ b/sysdeps/unix/sysv/linux/s390/s390-32/getcontext.S @@ -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/s390/s390-32/getutent.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutent.c index fc32ae1..4b37ba9 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/getutent.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/getutent.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/s390/s390-32/getutent_r.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutent_r.c index 59be826..e31c0a4 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/getutent_r.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/getutent_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/s390/s390-32/getutid.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutid.c index 68c88fc..dc8cf02 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/getutid.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/getutid.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/s390/s390-32/getutid_r.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutid_r.c index b202b4a..ccfa3ca 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/getutid_r.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/getutid_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/s390/s390-32/getutline.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutline.c index 4bb59a6..c8d3999 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/getutline.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/getutline.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/s390/s390-32/getutline_r.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutline_r.c index 2f48010..1979a5c 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/getutline_r.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/getutline_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/s390/s390-32/getutmp.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutmp.c index dc9a1c6..d0e0109 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/getutmp.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/getutmp.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/s390/s390-32/getutxent.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutxent.c index 866c5b6..644cf43 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/getutxent.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/getutxent.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/s390/s390-32/getutxid.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutxid.c index 1fb355a..75bf740 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/getutxid.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/getutxid.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/s390/s390-32/getutxline.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutxline.c index 541fc06..952a229 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/getutxline.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/getutxline.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist index a7467e2..f0decc7 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist @@ -3136,6 +3136,25 @@ GLIBC_2.4 wcstold F GLIBC_2.4 wcstold_l F GLIBC_2.4 wprintf F GLIBC_2.4 wscanf 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 GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist index 81f186f..be2d177 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist @@ -1292,3 +1292,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/s390/s390-32/libutil-compat.c b/sysdeps/unix/sysv/linux/s390/s390-32/libutil-compat.c index 83c98b5..630e477 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libutil-compat.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libutil-compat.c @@ -1,5 +1,5 @@ /* Placeholder compatibility symbols for libutil. s390 version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/s390/s390-32/login.c b/sysdeps/unix/sysv/linux/s390/s390-32/login.c index fe81bd8..9697d80 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/login.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/login.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/s390/s390-32/login32.c b/sysdeps/unix/sysv/linux/s390/s390-32/login32.c index 8c4d5fe..556184a 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/login32.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/login32.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/s390/s390-32/makecontext.c b/sysdeps/unix/sysv/linux/s390/s390-32/makecontext.c index e969ed8..b46592a 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/makecontext.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/makecontext.c @@ -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/s390/s390-32/pointer_guard.h b/sysdeps/unix/sysv/linux/s390/s390-32/pointer_guard.h index 4588d69..3f888e5 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/pointer_guard.h +++ b/sysdeps/unix/sysv/linux/s390/s390-32/pointer_guard.h @@ -1,5 +1,5 @@ /* Pointer obfuscation implenentation. s390 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 diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/posix_fadvise64.c b/sysdeps/unix/sysv/linux/s390/s390-32/posix_fadvise64.c index 4e7cd9f..4d0969e 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/posix_fadvise64.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/posix_fadvise64.c @@ -1,4 +1,4 @@ -/* 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/s390/s390-32/pututxline.c b/sysdeps/unix/sysv/linux/s390/s390-32/pututxline.c index 51f0062..c7dd975 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/pututxline.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/pututxline.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/s390/s390-32/setcontext.S b/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S index f3cd54f..2c6c273 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S +++ b/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S @@ -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/s390/s390-32/swapcontext.S b/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S index 4ef003b..32faa22 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S +++ b/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2024 Free Software Foundation, Inc. +/* Copyright (C) 2002-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/s390/s390-32/syscall.S b/sysdeps/unix/sysv/linux/s390/s390-32/syscall.S index b2b79cc..1e59e60 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/syscall.S +++ b/sysdeps/unix/sysv/linux/s390/s390-32/syscall.S @@ -1,4 +1,4 @@ -/* 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/s390/s390-32/syscall_cancel.S b/sysdeps/unix/sysv/linux/s390/s390-32/syscall_cancel.S new file mode 100644 index 0000000..54db44f --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-32/syscall_cancel.S @@ -0,0 +1,62 @@ +/* Cancellable syscall wrapper. Linux/s390 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) */ + +ENTRY (__syscall_cancel_arch) + stm %r6,%r7,24(%r15) + cfi_offset (%r6, -72) + cfi_offset (%r7, -68) + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + /* if (*cancelhandling & CANCELED_BITMASK) + __syscall_do_cancel() */ + tm 3(%r2),TCB_CANCELED_BITMASK + jne 1f + + /* Issue a 6 argument syscall, the nr [%r1] being the syscall + number. */ + lr %r1,%r3 + lr %r2,%r4 + lr %r3,%r5 + lr %r4,%r6 + lm %r5,%r7,96(%r15) + svc 0 + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + lm %r6,%r7,24(%r15) + cfi_remember_state + cfi_restore (%r7) + cfi_restore (%r6) + br %r14 +1: + cfi_restore_state + jg __syscall_do_cancel +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S b/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S index d77c5bf..011f47e 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S +++ b/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S @@ -1,4 +1,4 @@ -/* 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/s390/s390-32/sysdep.h b/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h index 215b44e..f8d9290 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h +++ b/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h @@ -1,4 +1,4 @@ -/* 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/s390/s390-32/updwtmp.c b/sysdeps/unix/sysv/linux/s390/s390-32/updwtmp.c index 9f8e944..0a8bd01 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/updwtmp.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/updwtmp.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/s390/s390-32/updwtmpx.c b/sysdeps/unix/sysv/linux/s390/s390-32/updwtmpx.c index 5c5a825..de282dc 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/updwtmpx.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/updwtmpx.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/s390/s390-32/utmp-compat.h b/sysdeps/unix/sysv/linux/s390/s390-32/utmp-compat.h index 6899fd8..4cba24b 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/utmp-compat.h +++ b/sysdeps/unix/sysv/linux/s390/s390-32/utmp-compat.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/s390/s390-32/utmp-convert.h b/sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h index acf9137..bc88317 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h +++ b/sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/s390/s390-32/utmp32.c b/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c index 66b5a4c..39729a4 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/s390/s390-32/utmp32.h b/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.h index 30037f2..c7d4388 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.h +++ b/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.h @@ -1,5 +1,5 @@ /* The `struct utmp' type, describing entries in the utmp file. GNU version. - Copyright (C) 1993-2024 Free Software Foundation, Inc. + Copyright (C) 1993-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/s390/s390-32/utmpx-convert.h b/sysdeps/unix/sysv/linux/s390/s390-32/utmpx-convert.h index 8fb5bd2..060b8a0 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/utmpx-convert.h +++ b/sysdeps/unix/sysv/linux/s390/s390-32/utmpx-convert.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/s390/s390-32/utmpx32.c b/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.c index 39ee486..71928a5 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.c +++ b/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/s390/s390-32/utmpx32.h b/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.h index ff4786e..5f0a094 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.h +++ b/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.h @@ -1,5 +1,5 @@ /* The `struct utmp' type, describing entries in the utmp file. GNU version. - Copyright (C) 1993-2024 Free Software Foundation, Inc. + Copyright (C) 1993-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/s390/s390-32/vfork.S b/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S index cdb4a64..91293f4 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S +++ b/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2024 Free Software Foundation, Inc. +/* Copyright (C) 2004-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/s390/s390-64/____longjmp_chk.c b/sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c index 6564824..f2c7f68 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c +++ b/sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c @@ -1,4 +1,4 @@ -/* 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/s390/s390-64/__makecontext_ret.S b/sysdeps/unix/sysv/linux/s390/s390-64/__makecontext_ret.S index 6214700..2ffa0d0 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/__makecontext_ret.S +++ b/sysdeps/unix/sysv/linux/s390/s390-64/__makecontext_ret.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2024 Free Software Foundation, Inc. +/* Copyright (C) 2012-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/s390/s390-64/arch-syscall.h b/sysdeps/unix/sysv/linux/s390/s390-64/arch-syscall.h index 5784270..65d6644 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/s390/s390-64/arch-syscall.h @@ -114,6 +114,7 @@ #define __NR_gettimeofday 78 #define __NR_getuid 199 #define __NR_getxattr 227 +#define __NR_getxattrat 464 #define __NR_idle 112 #define __NR_init_module 128 #define __NR_inotify_add_watch 285 @@ -148,6 +149,7 @@ #define __NR_listen 363 #define __NR_listmount 458 #define __NR_listxattr 230 +#define __NR_listxattrat 465 #define __NR_llistxattr 231 #define __NR_lookup_dcookie 110 #define __NR_lremovexattr 234 @@ -202,6 +204,7 @@ #define __NR_open 5 #define __NR_open_by_handle_at 336 #define __NR_open_tree 428 +#define __NR_open_tree_attr 467 #define __NR_openat 288 #define __NR_openat2 437 #define __NR_pause 29 @@ -248,6 +251,7 @@ #define __NR_recvmsg 372 #define __NR_remap_file_pages 267 #define __NR_removexattr 233 +#define __NR_removexattrat 466 #define __NR_rename 38 #define __NR_renameat 295 #define __NR_renameat2 347 @@ -313,6 +317,7 @@ #define __NR_settimeofday 79 #define __NR_setuid 213 #define __NR_setxattr 224 +#define __NR_setxattrat 463 #define __NR_shmat 397 #define __NR_shmctl 396 #define __NR_shmdt 398 diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/clone.S b/sysdeps/unix/sysv/linux/s390/s390-64/clone.S index c552a6b..5bf1e36 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/clone.S +++ b/sysdeps/unix/sysv/linux/s390/s390-64/clone.S @@ -1,5 +1,5 @@ /* Wrapper around clone system call. 64 bit S/390 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/s390/s390-64/clone3.S b/sysdeps/unix/sysv/linux/s390/s390-64/clone3.S index 70ae7f1..9190256 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/clone3.S +++ b/sysdeps/unix/sysv/linux/s390/s390-64/clone3.S @@ -1,5 +1,5 @@ /* The clone3 syscall wrapper. Linux/s390x 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/s390/s390-64/dl-cache.h b/sysdeps/unix/sysv/linux/s390/s390-64/dl-cache.h index e8dbadd..0367b51 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/dl-cache.h +++ b/sysdeps/unix/sysv/linux/s390/s390-64/dl-cache.h @@ -1,5 +1,5 @@ /* Support for reading /etc/ld.so.cache files written by Linux ldconfig. - 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/s390/s390-64/getcontext.S b/sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S index 8b1f002..4300079 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S +++ b/sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S @@ -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/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist index fd1cb29..da8a2bf 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist @@ -2929,6 +2929,25 @@ GLIBC_2.4 wcstold F GLIBC_2.4 wcstold_l F GLIBC_2.4 wprintf F GLIBC_2.4 wscanf 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 GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist index ee54f8d..7d7ba26 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist @@ -1292,3 +1292,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/s390/s390-64/makecontext.c b/sysdeps/unix/sysv/linux/s390/s390-64/makecontext.c index 986194c..c679cfe 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/makecontext.c +++ b/sysdeps/unix/sysv/linux/s390/s390-64/makecontext.c @@ -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/s390/s390-64/pointer_guard.h b/sysdeps/unix/sysv/linux/s390/s390-64/pointer_guard.h index b477ba8..1537df1 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/pointer_guard.h +++ b/sysdeps/unix/sysv/linux/s390/s390-64/pointer_guard.h @@ -1,5 +1,5 @@ /* Pointer obfuscation implenentation. s390x 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 diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/setcontext.S b/sysdeps/unix/sysv/linux/s390/s390-64/setcontext.S index 4949945..fa5203e 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/setcontext.S +++ b/sysdeps/unix/sysv/linux/s390/s390-64/setcontext.S @@ -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/s390/s390-64/swapcontext.S b/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S index 87ce4e8..23fa20d 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S +++ b/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2024 Free Software Foundation, Inc. +/* Copyright (C) 2002-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/s390/s390-64/syscall.S b/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S index 171104a..56ddb91 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S +++ b/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S @@ -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/s390/s390-64/syscall_cancel.S b/sysdeps/unix/sysv/linux/s390/s390-64/syscall_cancel.S new file mode 100644 index 0000000..e592ffa --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/syscall_cancel.S @@ -0,0 +1,62 @@ +/* Cancellable syscall wrapper. Linux/s390x 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) */ + +ENTRY (__syscall_cancel_arch) + stmg %r6,%r7,48(%r15) + cfi_offset (%r6, -112) + cfi_offset (%r7, -104) + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + /* if (*cancelhandling & CANCELED_BITMASK) + __syscall_do_cancel() */ + tm 3(%r2),TCB_CANCELED_BITMASK + jne 1f + + /* Issue a 6 argument syscall, the nr [%r1] being the syscall + number. */ + lgr %r1,%r3 + lgr %r2,%r4 + lgr %r3,%r5 + lgr %r4,%r6 + lmg %r5,%r7,160(%r15) + svc 0 + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + lmg %r6,%r7,48(%r15) + cfi_remember_state + cfi_restore (%r7) + cfi_restore (%r6) + br %r14 +1: + cfi_restore_state + jg __syscall_do_cancel +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S index 024e58d..fb3d155 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S +++ b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S @@ -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/s390/s390-64/sysdep.h b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h index 885ab81..a282e12 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h +++ b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h @@ -1,5 +1,5 @@ /* Assembler macros for 64 bit S/390. - 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/s390/s390-64/timer_t_was_int_compat.h b/sysdeps/unix/sysv/linux/s390/s390-64/timer_t_was_int_compat.h index d70186d..70c1037 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/timer_t_was_int_compat.h +++ b/sysdeps/unix/sysv/linux/s390/s390-64/timer_t_was_int_compat.h @@ -1,5 +1,5 @@ /* timer_t/int compatibility transition. s390x version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/s390/s390-64/vfork.S b/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S index e8f4cdf..d4abd5e 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S +++ b/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2024 Free Software Foundation, Inc. +/* Copyright (C) 2004-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/s390/sigcontextinfo.h b/sysdeps/unix/sysv/linux/s390/sigcontextinfo.h index 8c9d52c..6ce7229 100644 --- a/sysdeps/unix/sysv/linux/s390/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/s390/sigcontextinfo.h @@ -1,4 +1,4 @@ -/* 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/s390/sys/elf.h b/sysdeps/unix/sysv/linux/s390/sys/elf.h index f49abfa..1e3581b 100644 --- a/sysdeps/unix/sysv/linux/s390/sys/elf.h +++ b/sysdeps/unix/sysv/linux/s390/sys/elf.h @@ -1,4 +1,4 @@ -/* 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/s390/sys/ptrace.h b/sysdeps/unix/sysv/linux/s390/sys/ptrace.h index fa99d50..3d10f44 100644 --- a/sysdeps/unix/sysv/linux/s390/sys/ptrace.h +++ b/sysdeps/unix/sysv/linux/s390/sys/ptrace.h @@ -1,5 +1,5 @@ /* `ptrace' debugger support interface. Linux/S390 version. - 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/s390/sys/ucontext.h b/sysdeps/unix/sysv/linux/s390/sys/ucontext.h index cc373cd..dd0b2ef 100644 --- a/sysdeps/unix/sysv/linux/s390/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/s390/sys/ucontext.h @@ -1,4 +1,4 @@ -/* 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/s390/sys/user.h b/sysdeps/unix/sysv/linux/s390/sys/user.h index ced029e..86cd391 100644 --- a/sysdeps/unix/sysv/linux/s390/sys/user.h +++ b/sysdeps/unix/sysv/linux/s390/sys/user.h @@ -1,4 +1,4 @@ -/* 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/s390/sysconf.c b/sysdeps/unix/sysv/linux/s390/sysconf.c index ca25822..dcb335a 100644 --- a/sysdeps/unix/sysv/linux/s390/sysconf.c +++ b/sysdeps/unix/sysv/linux/s390/sysconf.c @@ -1,5 +1,5 @@ /* Get system parameters, e.g. cache information. S390/S390x version. - Copyright (C) 2015-2024 Free Software Foundation, Inc. + Copyright (C) 2015-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 @@ -17,8 +17,9 @@ <https://www.gnu.org/licenses/>. */ #include <unistd.h> -#include <dl-procinfo.h> #include <cpu-features.h> +#include <ldsodefs.h> +#include <sys/auxv.h> static long int linux_sysconf (int name); @@ -65,7 +66,7 @@ get_cache_info (int level, int attr, int type) return 0L; } - if (!S390_IS_Z10 (features->stfle_bits)) + if (!S390_IS_Z10 (features->stfle_orig)) { /* We are at least on a z9 machine. Return 256byte for LINESIZE for L1 d/i-cache, diff --git a/sysdeps/unix/sysv/linux/s390/sysdep.h b/sysdeps/unix/sysv/linux/s390/sysdep.h index 9b3000c..c802980 100644 --- a/sysdeps/unix/sysv/linux/s390/sysdep.h +++ b/sysdeps/unix/sysv/linux/s390/sysdep.h @@ -1,5 +1,5 @@ /* Syscall definitions, Linux s390 version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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 @@ -72,6 +72,7 @@ #ifdef __s390x__ #define HAVE_CLOCK_GETRES64_VSYSCALL "__kernel_clock_getres" #define HAVE_CLOCK_GETTIME64_VSYSCALL "__kernel_clock_gettime" +#define HAVE_GETRANDOM_VSYSCALL "__kernel_getrandom" #else #define HAVE_CLOCK_GETRES_VSYSCALL "__kernel_clock_getres" #define HAVE_CLOCK_GETTIME_VSYSCALL "__kernel_clock_gettime" diff --git a/sysdeps/unix/sysv/linux/s390/tst-ptrace-singleblock.c b/sysdeps/unix/sysv/linux/s390/tst-ptrace-singleblock.c index d9d2663..1f873bf 100644 --- a/sysdeps/unix/sysv/linux/s390/tst-ptrace-singleblock.c +++ b/sysdeps/unix/sysv/linux/s390/tst-ptrace-singleblock.c @@ -1,5 +1,5 @@ /* Testing s390x PTRACE_SINGLEBLOCK ptrace request. - 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/safe-fatal.h b/sysdeps/unix/sysv/linux/safe-fatal.h index f6011bf..57fc27f 100644 --- a/sysdeps/unix/sysv/linux/safe-fatal.h +++ b/sysdeps/unix/sysv/linux/safe-fatal.h @@ -1,5 +1,5 @@ /* Crash the process immediately, without possibility of deadlock. Linux. - 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/scandir64.c b/sysdeps/unix/sysv/linux/scandir64.c index 5ab87b4..28523ae 100644 --- a/sysdeps/unix/sysv/linux/scandir64.c +++ b/sysdeps/unix/sysv/linux/scandir64.c @@ -1,4 +1,4 @@ -/* 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/sched_getaffinity.c b/sysdeps/unix/sysv/linux/sched_getaffinity.c index f4c0e38..1c66beb 100644 --- a/sysdeps/unix/sysv/linux/sched_getaffinity.c +++ b/sysdeps/unix/sysv/linux/sched_getaffinity.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2024 Free Software Foundation, Inc. +/* Copyright (C) 2002-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/sched_getattr.c b/sysdeps/unix/sysv/linux/sched_getattr.c new file mode 100644 index 0000000..a0497e4 --- /dev/null +++ b/sysdeps/unix/sysv/linux/sched_getattr.c @@ -0,0 +1,27 @@ +/* Reading scheduling policy and attributes. + 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 + 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 <sched.h> +#include <sysdep.h> + +int +sched_getattr (pid_t pid, struct sched_attr *attr, unsigned int size, + unsigned int flags) +{ + return INLINE_SYSCALL_CALL (sched_getattr, pid, attr, size, flags); +} diff --git a/sysdeps/unix/sysv/linux/sched_getcpu.c b/sysdeps/unix/sysv/linux/sched_getcpu.c index 72a3360..828b651 100644 --- a/sysdeps/unix/sysv/linux/sched_getcpu.c +++ b/sysdeps/unix/sysv/linux/sched_getcpu.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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 @@ -19,6 +19,7 @@ #include <sched.h> #include <sysdep.h> #include <sysdep-vdso.h> +#include <rseq-internal.h> static int vsyscall_sched_getcpu (void) @@ -36,6 +37,6 @@ vsyscall_sched_getcpu (void) int sched_getcpu (void) { - int cpu_id = THREAD_GETMEM_VOLATILE (THREAD_SELF, rseq_area.cpu_id); + int cpu_id = RSEQ_GETMEM_ONCE (cpu_id); return __glibc_likely (cpu_id >= 0) ? cpu_id : vsyscall_sched_getcpu (); } diff --git a/sysdeps/unix/sysv/linux/sched_rr_gi.c b/sysdeps/unix/sysv/linux/sched_rr_gi.c index 2dde512..590cf43 100644 --- a/sysdeps/unix/sysv/linux/sched_rr_gi.c +++ b/sysdeps/unix/sysv/linux/sched_rr_gi.c @@ -1,5 +1,5 @@ /* sched_rr_get_interval -- get the scheduler's SCHED_RR policy time interval. - 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/sched_setaffinity.c b/sysdeps/unix/sysv/linux/sched_setaffinity.c index 21f6620..38f3287 100644 --- a/sysdeps/unix/sysv/linux/sched_setaffinity.c +++ b/sysdeps/unix/sysv/linux/sched_setaffinity.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2024 Free Software Foundation, Inc. +/* Copyright (C) 2002-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/nios2/kernel_rt_sigframe.h b/sysdeps/unix/sysv/linux/sched_setattr.c index 7dcf478..d6b6117 100644 --- a/sysdeps/unix/sysv/linux/nios2/kernel_rt_sigframe.h +++ b/sysdeps/unix/sysv/linux/sched_setattr.c @@ -1,5 +1,5 @@ -/* Linux kernel struct rt_sigframe declaration for Nios II. - Copyright (C) 2015-2024 Free Software Foundation, Inc. +/* Setting scheduling policy and attributes. + 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 @@ -16,11 +16,11 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -/* This structure must have the same shape as the Linux kernel - equivalent. */ +#include <sched.h> +#include <sysdep.h> -struct kernel_rt_sigframe +int +sched_setattr (pid_t pid, struct sched_attr *attr, unsigned int flags) { - siginfo_t info; - ucontext_t uc; -}; + return INLINE_SYSCALL_CALL (sched_setattr, pid, attr, flags); +} diff --git a/sysdeps/unix/sysv/linux/scsi/scsi.h b/sysdeps/unix/sysv/linux/scsi/scsi.h index 5079c07..d72d6a0 100644 --- a/sysdeps/unix/sysv/linux/scsi/scsi.h +++ b/sysdeps/unix/sysv/linux/scsi/scsi.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/scsi/scsi_ioctl.h b/sysdeps/unix/sysv/linux/scsi/scsi_ioctl.h index e56d17d..6b0bf05 100644 --- a/sysdeps/unix/sysv/linux/scsi/scsi_ioctl.h +++ b/sysdeps/unix/sysv/linux/scsi/scsi_ioctl.h @@ -1,4 +1,4 @@ -/* 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/scsi/sg.h b/sysdeps/unix/sysv/linux/scsi/sg.h index 1dcda67..ed787b3 100644 --- a/sysdeps/unix/sysv/linux/scsi/sg.h +++ b/sysdeps/unix/sysv/linux/scsi/sg.h @@ -1,4 +1,4 @@ -/* 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/seekdir.c b/sysdeps/unix/sysv/linux/seekdir.c index 5200587..facd2f9 100644 --- a/sysdeps/unix/sysv/linux/seekdir.c +++ b/sysdeps/unix/sysv/linux/seekdir.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2024 Free Software Foundation, Inc. +/* Copyright (C) 1991-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/select.c b/sysdeps/unix/sysv/linux/select.c index a75245c..f7b1077 100644 --- a/sysdeps/unix/sysv/linux/select.c +++ b/sysdeps/unix/sysv/linux/select.c @@ -1,5 +1,5 @@ /* Linux select implementation. - 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/semctl.c b/sysdeps/unix/sysv/linux/semctl.c index c57fcea..feaf3fc 100644 --- a/sysdeps/unix/sysv/linux/semctl.c +++ b/sysdeps/unix/sysv/linux/semctl.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/semget.c b/sysdeps/unix/sysv/linux/semget.c index 26d0046..ae311e6 100644 --- a/sysdeps/unix/sysv/linux/semget.c +++ b/sysdeps/unix/sysv/linux/semget.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/semop.c b/sysdeps/unix/sysv/linux/semop.c index 33f2ba5..52d79e5 100644 --- a/sysdeps/unix/sysv/linux/semop.c +++ b/sysdeps/unix/sysv/linux/semop.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/semtimedop.c b/sysdeps/unix/sysv/linux/semtimedop.c index 181289f..6478a11 100644 --- a/sysdeps/unix/sysv/linux/semtimedop.c +++ b/sysdeps/unix/sysv/linux/semtimedop.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/send.c b/sysdeps/unix/sysv/linux/send.c index 20dc6ea..68cdd40 100644 --- a/sysdeps/unix/sysv/linux/send.c +++ b/sysdeps/unix/sysv/linux/send.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2015-2024 Free Software Foundation, Inc. +/* Copyright (C) 2015-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/sendfile.c b/sysdeps/unix/sysv/linux/sendfile.c index a93d057..990a26a 100644 --- a/sysdeps/unix/sysv/linux/sendfile.c +++ b/sysdeps/unix/sysv/linux/sendfile.c @@ -1,5 +1,5 @@ /* Transfer data between file descriptors. Linux version. - 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/sendfile64.c b/sysdeps/unix/sysv/linux/sendfile64.c index a49aeac..a7e60c7 100644 --- a/sysdeps/unix/sysv/linux/sendfile64.c +++ b/sysdeps/unix/sysv/linux/sendfile64.c @@ -1,5 +1,5 @@ /* Transfer data between file descriptors. Linux version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/sendmmsg.c b/sysdeps/unix/sysv/linux/sendmmsg.c index 50e084d..0c86002 100644 --- a/sysdeps/unix/sysv/linux/sendmmsg.c +++ b/sysdeps/unix/sysv/linux/sendmmsg.c @@ -1,4 +1,4 @@ -/* 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/sendmsg.c b/sysdeps/unix/sysv/linux/sendmsg.c index 45c59ec..81d2c8b 100644 --- a/sysdeps/unix/sysv/linux/sendmsg.c +++ b/sysdeps/unix/sysv/linux/sendmsg.c @@ -1,5 +1,5 @@ /* Compatibility implementation of sendmsg. - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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/sendto.c b/sysdeps/unix/sysv/linux/sendto.c index 4fb227d..dde1296 100644 --- a/sysdeps/unix/sysv/linux/sendto.c +++ b/sysdeps/unix/sysv/linux/sendto.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2015-2024 Free Software Foundation, Inc. +/* Copyright (C) 2015-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/set-freeres-os.h b/sysdeps/unix/sysv/linux/set-freeres-os.h index 041d061..1c96ca1 100644 --- a/sysdeps/unix/sysv/linux/set-freeres-os.h +++ b/sysdeps/unix/sysv/linux/set-freeres-os.h @@ -1,5 +1,5 @@ /* System specific resource deallocation. Linux version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/setegid.c b/sysdeps/unix/sysv/linux/setegid.c index 4a60853..aa87a85 100644 --- a/sysdeps/unix/sysv/linux/setegid.c +++ b/sysdeps/unix/sysv/linux/setegid.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/seteuid.c b/sysdeps/unix/sysv/linux/seteuid.c index 64d3c84..7b78d60 100644 --- a/sysdeps/unix/sysv/linux/seteuid.c +++ b/sysdeps/unix/sysv/linux/seteuid.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/setgid.c b/sysdeps/unix/sysv/linux/setgid.c index 51d4df8..b848ead 100644 --- a/sysdeps/unix/sysv/linux/setgid.c +++ b/sysdeps/unix/sysv/linux/setgid.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/setgroups.c b/sysdeps/unix/sysv/linux/setgroups.c index be68f0c..2fd1dc5 100644 --- a/sysdeps/unix/sysv/linux/setgroups.c +++ b/sysdeps/unix/sysv/linux/setgroups.c @@ -1,4 +1,4 @@ -/* 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/setipv4sourcefilter.c b/sysdeps/unix/sysv/linux/setipv4sourcefilter.c index 8009ad0..98c2edd 100644 --- a/sysdeps/unix/sysv/linux/setipv4sourcefilter.c +++ b/sysdeps/unix/sysv/linux/setipv4sourcefilter.c @@ -1,5 +1,5 @@ /* Set IPv4 source filter. Linux version. - Copyright (C) 2004-2024 Free Software Foundation, Inc. + Copyright (C) 2004-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/setitimer.c b/sysdeps/unix/sysv/linux/setitimer.c index 2a2d59f..9478ffa 100644 --- a/sysdeps/unix/sysv/linux/setitimer.c +++ b/sysdeps/unix/sysv/linux/setitimer.c @@ -1,5 +1,5 @@ /* setitimer -- Set the state of an interval timer. Linux/32 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/setregid.c b/sysdeps/unix/sysv/linux/setregid.c index 2e89677..6df2687 100644 --- a/sysdeps/unix/sysv/linux/setregid.c +++ b/sysdeps/unix/sysv/linux/setregid.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/setresgid.c b/sysdeps/unix/sysv/linux/setresgid.c index 6b44503..07dbc45 100644 --- a/sysdeps/unix/sysv/linux/setresgid.c +++ b/sysdeps/unix/sysv/linux/setresgid.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/setresuid.c b/sysdeps/unix/sysv/linux/setresuid.c index 3339779..3c7e543 100644 --- a/sysdeps/unix/sysv/linux/setresuid.c +++ b/sysdeps/unix/sysv/linux/setresuid.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/setreuid.c b/sysdeps/unix/sysv/linux/setreuid.c index a3889b3..e40dd9f 100644 --- a/sysdeps/unix/sysv/linux/setreuid.c +++ b/sysdeps/unix/sysv/linux/setreuid.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/setrlimit.c b/sysdeps/unix/sysv/linux/setrlimit.c index 3be6f96..b635d7e 100644 --- a/sysdeps/unix/sysv/linux/setrlimit.c +++ b/sysdeps/unix/sysv/linux/setrlimit.c @@ -1,5 +1,5 @@ /* Linux setrlimit implementation (32 bits off_t). - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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/setrlimit64.c b/sysdeps/unix/sysv/linux/setrlimit64.c index 084700c..d62ea94 100644 --- a/sysdeps/unix/sysv/linux/setrlimit64.c +++ b/sysdeps/unix/sysv/linux/setrlimit64.c @@ -1,5 +1,5 @@ /* Linux setrlimit64 implementation (64 bits off_t). - Copyright (C) 2010-2024 Free Software Foundation, Inc. + Copyright (C) 2010-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/setsockopt.c b/sysdeps/unix/sysv/linux/setsockopt.c index e483c13..95734bd 100644 --- a/sysdeps/unix/sysv/linux/setsockopt.c +++ b/sysdeps/unix/sysv/linux/setsockopt.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2015-2024 Free Software Foundation, Inc. +/* Copyright (C) 2015-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/setsourcefilter.c b/sysdeps/unix/sysv/linux/setsourcefilter.c index 316f637..6fbd04c 100644 --- a/sysdeps/unix/sysv/linux/setsourcefilter.c +++ b/sysdeps/unix/sysv/linux/setsourcefilter.c @@ -1,5 +1,5 @@ /* Set source filter. Linux version. - Copyright (C) 2004-2024 Free Software Foundation, Inc. + Copyright (C) 2004-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/settimeofday.c b/sysdeps/unix/sysv/linux/settimeofday.c index 4235dc8..c74aaf2 100644 --- a/sysdeps/unix/sysv/linux/settimeofday.c +++ b/sysdeps/unix/sysv/linux/settimeofday.c @@ -1,5 +1,5 @@ /* settimeofday -- set system time - Linux version supporting 64 bit time. - 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 @@ -26,9 +26,9 @@ int __settimeofday64 (const struct __timeval64 *tv, const struct timezone *tz) { /* Backwards compatibility for setting the UTC offset. */ - if (__glibc_unlikely (tz != 0)) + if (__glibc_unlikely (tz != NULL)) { - if (tv != 0) + if (tv != NULL) { __set_errno (EINVAL); return -1; diff --git a/sysdeps/unix/sysv/linux/settimezone.c b/sysdeps/unix/sysv/linux/settimezone.c index 1f7b157..0505533 100644 --- a/sysdeps/unix/sysv/linux/settimezone.c +++ b/sysdeps/unix/sysv/linux/settimezone.c @@ -1,5 +1,5 @@ /* Obsolete set system time. Linux version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/setuid.c b/sysdeps/unix/sysv/linux/setuid.c index 39d5e0c..c76beb6 100644 --- a/sysdeps/unix/sysv/linux/setuid.c +++ b/sysdeps/unix/sysv/linux/setuid.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/setvmaname.c b/sysdeps/unix/sysv/linux/setvmaname.c index 8612efe..ea93a5f 100644 --- a/sysdeps/unix/sysv/linux/setvmaname.c +++ b/sysdeps/unix/sysv/linux/setvmaname.c @@ -1,5 +1,5 @@ /* Utilities functions to name memory mappings. - 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. The GNU C Library is free software; you can redistribute it and/or @@ -22,6 +22,33 @@ #include <sysdep.h> #include <elf/dl-tunables.h> +static enum { + decorate_unknown = -1, + decorate_off, + decorate_on +} decorate_maps = decorate_unknown; + +bool +__is_decorate_maps_enabled (void) +{ + switch (atomic_load_relaxed (&decorate_maps)) + { + case decorate_unknown: + if (TUNABLE_GET (glibc, mem, decorate_maps, int32_t, NULL) != 0) + { + atomic_store_relaxed (&decorate_maps, decorate_on); + return true; + } + atomic_store_relaxed (&decorate_maps, decorate_off); + return false; + case decorate_off: + return false; + case decorate_on: + return true; + } + __builtin_unreachable (); +} + /* If PR_SET_VMA_ANON_NAME is not supported by the kernel, prctl returns EINVAL. However, it also returns the same error for invalid argument. Since it is an internal-only API, it assumes well formatted input: @@ -31,19 +58,13 @@ void __set_vma_name (void *start, size_t len, const char *name) { - static int prctl_supported = 1; - if (atomic_load_relaxed (&prctl_supported) == 0) - return; - - /* Set the prctl as not supported to avoid checking the tunable on every - call. */ - if (TUNABLE_GET (glibc, mem, decorate_maps, int32_t, NULL) != 0) + if (__is_decorate_maps_enabled ()) { int r = INTERNAL_SYSCALL_CALL (prctl, PR_SET_VMA, PR_SET_VMA_ANON_NAME, - start, len, name); - if (r == 0 || r != -EINVAL) - return; + start, len, name); + + /* Disable further attempts if not supported by the kernel. */ + if (r == -EINVAL) + atomic_store_relaxed (&decorate_maps, decorate_off); } - atomic_store_relaxed (&prctl_supported, 0); - return; } diff --git a/sysdeps/unix/sysv/linux/setvmaname.h b/sysdeps/unix/sysv/linux/setvmaname.h index bf57351..48643d0 100644 --- a/sysdeps/unix/sysv/linux/setvmaname.h +++ b/sysdeps/unix/sysv/linux/setvmaname.h @@ -1,5 +1,5 @@ /* Utilities functions to name memory mappings. - 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. The GNU C Library is free software; you can redistribute it and/or @@ -19,9 +19,17 @@ #ifndef __SETVMANAME_H #define __SETVMANAME_H +/* Maximum supported name from initial kernel support, not exported + by user API. */ +#define ANON_VMA_NAME_MAX_LEN 80 + /* Set the NAME to the anonymous memory map START with size of LEN. It assumes well-formatted input. */ #if IS_IN(libc) || IS_IN(rtld) +#include <stdbool.h> + +bool __is_decorate_maps_enabled (void) attribute_hidden; + void __set_vma_name (void *start, size_t len, const char *name) attribute_hidden; #else diff --git a/sysdeps/unix/sysv/linux/sh/____longjmp_chk.S b/sysdeps/unix/sysv/linux/sh/____longjmp_chk.S index f61db0b..4a7748b 100644 --- a/sysdeps/unix/sysv/linux/sh/____longjmp_chk.S +++ b/sysdeps/unix/sysv/linux/sh/____longjmp_chk.S @@ -1,4 +1,4 @@ -/* 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/sh/adaptive_spin_count.h b/sysdeps/unix/sysv/linux/sh/adaptive_spin_count.h index 604dd62..ae5d5ee 100644 --- a/sysdeps/unix/sysv/linux/sh/adaptive_spin_count.h +++ b/sysdeps/unix/sysv/linux/sh/adaptive_spin_count.h @@ -1,5 +1,5 @@ /* Maximum adaptive spin count default for sh. - 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/sh/arch-syscall.h b/sysdeps/unix/sysv/linux/sh/arch-syscall.h index 165ba01..5948ab0 100644 --- a/sysdeps/unix/sysv/linux/sh/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/sh/arch-syscall.h @@ -133,6 +133,7 @@ #define __NR_getuid 24 #define __NR_getuid32 199 #define __NR_getxattr 229 +#define __NR_getxattrat 464 #define __NR_init_module 128 #define __NR_inotify_add_watch 291 #define __NR_inotify_init 290 @@ -166,6 +167,7 @@ #define __NR_listen 343 #define __NR_listmount 458 #define __NR_listxattr 232 +#define __NR_listxattrat 465 #define __NR_llistxattr 233 #define __NR_lookup_dcookie 253 #define __NR_lremovexattr 236 @@ -226,6 +228,7 @@ #define __NR_open 5 #define __NR_open_by_handle_at 360 #define __NR_open_tree 428 +#define __NR_open_tree_attr 467 #define __NR_openat 295 #define __NR_openat2 437 #define __NR_pause 29 @@ -274,6 +277,7 @@ #define __NR_recvmsg 356 #define __NR_remap_file_pages 257 #define __NR_removexattr 235 +#define __NR_removexattrat 466 #define __NR_rename 38 #define __NR_renameat 302 #define __NR_renameat2 371 @@ -346,6 +350,7 @@ #define __NR_setuid 23 #define __NR_setuid32 213 #define __NR_setxattr 226 +#define __NR_setxattrat 463 #define __NR_sgetmask 68 #define __NR_shmat 397 #define __NR_shmctl 396 diff --git a/sysdeps/unix/sysv/linux/sh/atomic-machine.h b/sysdeps/unix/sysv/linux/sh/atomic-machine.h index 1639280..fc37d6d 100644 --- a/sysdeps/unix/sysv/linux/sh/atomic-machine.h +++ b/sysdeps/unix/sysv/linux/sh/atomic-machine.h @@ -1,5 +1,5 @@ /* Atomic operations used inside libc. Linux/SH version. - 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/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist index ff6e6b1..fb30341 100644 --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist @@ -2828,6 +2828,25 @@ GLIBC_2.4 sys_errlist D 0x210 GLIBC_2.4 sys_nerr D 0x4 GLIBC_2.4 unlinkat F GLIBC_2.4 unshare 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 GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/sh/be/libm.abilist b/sysdeps/unix/sysv/linux/sh/be/libm.abilist index b21a3ba..5b0b080 100644 --- a/sysdeps/unix/sysv/linux/sh/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/sh/be/libm.abilist @@ -878,3 +878,75 @@ GLIBC_2.40 logp1f32 F GLIBC_2.40 logp1f32x F GLIBC_2.40 logp1f64 F GLIBC_2.40 logp1l F +GLIBC_2.41 acospi F +GLIBC_2.41 acospif F +GLIBC_2.41 acospif32 F +GLIBC_2.41 acospif32x F +GLIBC_2.41 acospif64 F +GLIBC_2.41 acospil F +GLIBC_2.41 asinpi F +GLIBC_2.41 asinpif F +GLIBC_2.41 asinpif32 F +GLIBC_2.41 asinpif32x F +GLIBC_2.41 asinpif64 F +GLIBC_2.41 asinpil F +GLIBC_2.41 atan2pi F +GLIBC_2.41 atan2pif F +GLIBC_2.41 atan2pif32 F +GLIBC_2.41 atan2pif32x F +GLIBC_2.41 atan2pif64 F +GLIBC_2.41 atan2pil F +GLIBC_2.41 atanpi F +GLIBC_2.41 atanpif F +GLIBC_2.41 atanpif32 F +GLIBC_2.41 atanpif32x F +GLIBC_2.41 atanpif64 F +GLIBC_2.41 atanpil F +GLIBC_2.41 cospi F +GLIBC_2.41 cospif F +GLIBC_2.41 cospif32 F +GLIBC_2.41 cospif32x F +GLIBC_2.41 cospif64 F +GLIBC_2.41 cospil F +GLIBC_2.41 sinpi F +GLIBC_2.41 sinpif F +GLIBC_2.41 sinpif32 F +GLIBC_2.41 sinpif32x F +GLIBC_2.41 sinpif64 F +GLIBC_2.41 sinpil F +GLIBC_2.41 tanpi F +GLIBC_2.41 tanpif F +GLIBC_2.41 tanpif32 F +GLIBC_2.41 tanpif32x F +GLIBC_2.41 tanpif64 F +GLIBC_2.41 tanpil F +GLIBC_2.42 compoundn F +GLIBC_2.42 compoundnf F +GLIBC_2.42 compoundnf32 F +GLIBC_2.42 compoundnf32x F +GLIBC_2.42 compoundnf64 F +GLIBC_2.42 compoundnl F +GLIBC_2.42 pown F +GLIBC_2.42 pownf F +GLIBC_2.42 pownf32 F +GLIBC_2.42 pownf32x F +GLIBC_2.42 pownf64 F +GLIBC_2.42 pownl F +GLIBC_2.42 powr F +GLIBC_2.42 powrf F +GLIBC_2.42 powrf32 F +GLIBC_2.42 powrf32x F +GLIBC_2.42 powrf64 F +GLIBC_2.42 powrl F +GLIBC_2.42 rootn F +GLIBC_2.42 rootnf F +GLIBC_2.42 rootnf32 F +GLIBC_2.42 rootnf32x F +GLIBC_2.42 rootnf64 F +GLIBC_2.42 rootnl F +GLIBC_2.42 rsqrt F +GLIBC_2.42 rsqrtf F +GLIBC_2.42 rsqrtf32 F +GLIBC_2.42 rsqrtf32x F +GLIBC_2.42 rsqrtf64 F +GLIBC_2.42 rsqrtl F diff --git a/sysdeps/unix/sysv/linux/sh/bits/fcntl.h b/sysdeps/unix/sysv/linux/sh/bits/fcntl.h index 64a6ddb..00b9051 100644 --- a/sysdeps/unix/sysv/linux/sh/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/sh/bits/fcntl.h @@ -1,5 +1,5 @@ /* O_*, F_*, FD_* bit values for Linux/SH. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/sh/bits/procfs-id.h b/sysdeps/unix/sysv/linux/sh/bits/procfs-id.h index 220d887..7a45982 100644 --- a/sysdeps/unix/sysv/linux/sh/bits/procfs-id.h +++ b/sysdeps/unix/sysv/linux/sh/bits/procfs-id.h @@ -1,5 +1,5 @@ /* Types of pr_uid and pr_gid in struct elf_prpsinfo. SH 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. diff --git a/sysdeps/unix/sysv/linux/sh/bits/procfs.h b/sysdeps/unix/sysv/linux/sh/bits/procfs.h index 621070b..b1a45ac 100644 --- a/sysdeps/unix/sysv/linux/sh/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/sh/bits/procfs.h @@ -1,5 +1,5 @@ /* Types for registers for sys/procfs.h. SH 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/sh/bits/shmlba.h b/sysdeps/unix/sysv/linux/sh/bits/shmlba.h index c3a9edf..7765d6a 100644 --- a/sysdeps/unix/sysv/linux/sh/bits/shmlba.h +++ b/sysdeps/unix/sysv/linux/sh/bits/shmlba.h @@ -1,5 +1,5 @@ /* Define SHMLBA. SH 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/sh/bits/struct_stat.h b/sysdeps/unix/sysv/linux/sh/bits/struct_stat.h index d47cd7b..107d833 100644 --- a/sysdeps/unix/sysv/linux/sh/bits/struct_stat.h +++ b/sysdeps/unix/sysv/linux/sh/bits/struct_stat.h @@ -1,5 +1,5 @@ /* Definition for struct stat. Linux/sh 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/sh/bits/timesize.h b/sysdeps/unix/sysv/linux/sh/bits/timesize.h index abc59d7..173bfe8 100644 --- a/sysdeps/unix/sysv/linux/sh/bits/timesize.h +++ b/sysdeps/unix/sysv/linux/sh/bits/timesize.h @@ -1,5 +1,5 @@ /* Bit size of the time_t type at glibc build time, Linux/sh. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/sh/bits/typesizes.h b/sysdeps/unix/sysv/linux/sh/bits/typesizes.h index 06321f9..22857ac 100644 --- a/sysdeps/unix/sysv/linux/sh/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/sh/bits/typesizes.h @@ -1,5 +1,5 @@ /* bits/typesizes.h -- underlying types for *_t. SH version. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/sh/clone.S b/sysdeps/unix/sysv/linux/sh/clone.S index 355a542..a2961ba 100644 --- a/sysdeps/unix/sysv/linux/sh/clone.S +++ b/sysdeps/unix/sysv/linux/sh/clone.S @@ -1,4 +1,4 @@ -/* 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/sh/kernel-features.h b/sysdeps/unix/sysv/linux/sh/kernel-features.h index 320faa6..dabf64b 100644 --- a/sysdeps/unix/sysv/linux/sh/kernel-features.h +++ b/sysdeps/unix/sysv/linux/sh/kernel-features.h @@ -1,6 +1,6 @@ /* Set flags signalling availability of kernel features based on given kernel version number. SH version. - 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/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist index 449d92b..d716673 100644 --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist @@ -2825,6 +2825,25 @@ GLIBC_2.4 sys_errlist D 0x210 GLIBC_2.4 sys_nerr D 0x4 GLIBC_2.4 unlinkat F GLIBC_2.4 unshare 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 GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/sh/le/libm.abilist b/sysdeps/unix/sysv/linux/sh/le/libm.abilist index b21a3ba..5b0b080 100644 --- a/sysdeps/unix/sysv/linux/sh/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/sh/le/libm.abilist @@ -878,3 +878,75 @@ GLIBC_2.40 logp1f32 F GLIBC_2.40 logp1f32x F GLIBC_2.40 logp1f64 F GLIBC_2.40 logp1l F +GLIBC_2.41 acospi F +GLIBC_2.41 acospif F +GLIBC_2.41 acospif32 F +GLIBC_2.41 acospif32x F +GLIBC_2.41 acospif64 F +GLIBC_2.41 acospil F +GLIBC_2.41 asinpi F +GLIBC_2.41 asinpif F +GLIBC_2.41 asinpif32 F +GLIBC_2.41 asinpif32x F +GLIBC_2.41 asinpif64 F +GLIBC_2.41 asinpil F +GLIBC_2.41 atan2pi F +GLIBC_2.41 atan2pif F +GLIBC_2.41 atan2pif32 F +GLIBC_2.41 atan2pif32x F +GLIBC_2.41 atan2pif64 F +GLIBC_2.41 atan2pil F +GLIBC_2.41 atanpi F +GLIBC_2.41 atanpif F +GLIBC_2.41 atanpif32 F +GLIBC_2.41 atanpif32x F +GLIBC_2.41 atanpif64 F +GLIBC_2.41 atanpil F +GLIBC_2.41 cospi F +GLIBC_2.41 cospif F +GLIBC_2.41 cospif32 F +GLIBC_2.41 cospif32x F +GLIBC_2.41 cospif64 F +GLIBC_2.41 cospil F +GLIBC_2.41 sinpi F +GLIBC_2.41 sinpif F +GLIBC_2.41 sinpif32 F +GLIBC_2.41 sinpif32x F +GLIBC_2.41 sinpif64 F +GLIBC_2.41 sinpil F +GLIBC_2.41 tanpi F +GLIBC_2.41 tanpif F +GLIBC_2.41 tanpif32 F +GLIBC_2.41 tanpif32x F +GLIBC_2.41 tanpif64 F +GLIBC_2.41 tanpil F +GLIBC_2.42 compoundn F +GLIBC_2.42 compoundnf F +GLIBC_2.42 compoundnf32 F +GLIBC_2.42 compoundnf32x F +GLIBC_2.42 compoundnf64 F +GLIBC_2.42 compoundnl F +GLIBC_2.42 pown F +GLIBC_2.42 pownf F +GLIBC_2.42 pownf32 F +GLIBC_2.42 pownf32x F +GLIBC_2.42 pownf64 F +GLIBC_2.42 pownl F +GLIBC_2.42 powr F +GLIBC_2.42 powrf F +GLIBC_2.42 powrf32 F +GLIBC_2.42 powrf32x F +GLIBC_2.42 powrf64 F +GLIBC_2.42 powrl F +GLIBC_2.42 rootn F +GLIBC_2.42 rootnf F +GLIBC_2.42 rootnf32 F +GLIBC_2.42 rootnf32x F +GLIBC_2.42 rootnf64 F +GLIBC_2.42 rootnl F +GLIBC_2.42 rsqrt F +GLIBC_2.42 rsqrtf F +GLIBC_2.42 rsqrtf32 F +GLIBC_2.42 rsqrtf32x F +GLIBC_2.42 rsqrtf64 F +GLIBC_2.42 rsqrtl F diff --git a/sysdeps/unix/sysv/linux/sh/lowlevel-atomic.h b/sysdeps/unix/sysv/linux/sh/lowlevel-atomic.h index f808a74..8e35e2f 100644 --- a/sysdeps/unix/sysv/linux/sh/lowlevel-atomic.h +++ b/sysdeps/unix/sysv/linux/sh/lowlevel-atomic.h @@ -1,4 +1,4 @@ -/* 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/sh/makecontext.S b/sysdeps/unix/sysv/linux/sh/makecontext.S index d20a630..482eaa2 100644 --- a/sysdeps/unix/sysv/linux/sh/makecontext.S +++ b/sysdeps/unix/sysv/linux/sh/makecontext.S @@ -1,5 +1,5 @@ /* Create new context. - 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 diff --git a/sysdeps/unix/sysv/linux/sh/pointer_guard.h b/sysdeps/unix/sysv/linux/sh/pointer_guard.h index 3eba9eb..17334e3 100644 --- a/sysdeps/unix/sysv/linux/sh/pointer_guard.h +++ b/sysdeps/unix/sysv/linux/sh/pointer_guard.h @@ -1,5 +1,5 @@ /* Pointer obfuscation implenentation. Generic (no-op) 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 diff --git a/sysdeps/unix/sysv/linux/sh/sh3/getcontext.S b/sysdeps/unix/sysv/linux/sh/sh3/getcontext.S index 55e91df..b954915 100644 --- a/sysdeps/unix/sysv/linux/sh/sh3/getcontext.S +++ b/sysdeps/unix/sysv/linux/sh/sh3/getcontext.S @@ -1,5 +1,5 @@ /* Save current context. - 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 diff --git a/sysdeps/unix/sysv/linux/sh/sh3/setcontext.S b/sysdeps/unix/sysv/linux/sh/sh3/setcontext.S index e66802a..0caa08c 100644 --- a/sysdeps/unix/sysv/linux/sh/sh3/setcontext.S +++ b/sysdeps/unix/sysv/linux/sh/sh3/setcontext.S @@ -1,5 +1,5 @@ /* Install given context. - 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 diff --git a/sysdeps/unix/sysv/linux/sh/sh3/swapcontext.S b/sysdeps/unix/sysv/linux/sh/sh3/swapcontext.S index ef33095..ad4bf05 100644 --- a/sysdeps/unix/sysv/linux/sh/sh3/swapcontext.S +++ b/sysdeps/unix/sysv/linux/sh/sh3/swapcontext.S @@ -1,5 +1,5 @@ /* Save current context and install the given one. - 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 diff --git a/sysdeps/unix/sysv/linux/sh/sh4/getcontext.S b/sysdeps/unix/sysv/linux/sh/sh4/getcontext.S index c890ce0..329a790 100644 --- a/sysdeps/unix/sysv/linux/sh/sh4/getcontext.S +++ b/sysdeps/unix/sysv/linux/sh/sh4/getcontext.S @@ -1,5 +1,5 @@ /* Save current context. - 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 @@ -67,6 +67,8 @@ ENTRY(__getcontext) add #(oFPUL+4-124),r0 sts.l fpul, @-r0 sts.l fpscr, @-r0 + mov #0, r6 + lds r6, fpscr frchg fmov.s fr15, @-r0 fmov.s fr14, @-r0 @@ -101,6 +103,10 @@ ENTRY(__getcontext) fmov.s fr2, @-r0 fmov.s fr1, @-r0 fmov.s fr0, @-r0 + mov r4, r0 + add #124, r0 + add #(oFPSCR-124), r0 + lds.l @r0+, fpscr #endif /* __SH_FPU_ANY__ */ /* sigprocmask (SIG_BLOCK, NULL, &uc->uc_sigmask). */ diff --git a/sysdeps/unix/sysv/linux/sh/sh4/setcontext.S b/sysdeps/unix/sysv/linux/sh/sh4/setcontext.S index 0cd12af..60aff78 100644 --- a/sysdeps/unix/sysv/linux/sh/sh4/setcontext.S +++ b/sysdeps/unix/sysv/linux/sh/sh4/setcontext.S @@ -1,5 +1,5 @@ /* Install given context. - 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 @@ -50,6 +50,8 @@ ENTRY(__setcontext) .Lsetcontext_restore: #ifdef __SH_FPU_ANY__ + mov #0, r9 + lds r9, fpscr mov r8, r0 add #(oFR0),r0 fmov.s @r0+, fr0 diff --git a/sysdeps/unix/sysv/linux/sh/sh4/swapcontext.S b/sysdeps/unix/sysv/linux/sh/sh4/swapcontext.S index a8e9028..6cf88f2 100644 --- a/sysdeps/unix/sysv/linux/sh/sh4/swapcontext.S +++ b/sysdeps/unix/sysv/linux/sh/sh4/swapcontext.S @@ -1,5 +1,5 @@ /* Save current context and install the given one. - 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 @@ -67,6 +67,8 @@ ENTRY(__swapcontext) add #(oFPUL+4-124),r0 sts.l fpul, @-r0 sts.l fpscr, @-r0 + mov #0, r9 + lds r9, fpscr frchg fmov.s fr15, @-r0 fmov.s fr14, @-r0 diff --git a/sysdeps/unix/sysv/linux/sh/sigcontextinfo.h b/sysdeps/unix/sysv/linux/sh/sigcontextinfo.h index 3cd9ca9..0790e60 100644 --- a/sysdeps/unix/sysv/linux/sh/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/sh/sigcontextinfo.h @@ -1,4 +1,4 @@ -/* 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/sh/sys/ucontext.h b/sysdeps/unix/sysv/linux/sh/sys/ucontext.h index 19fa2f9..6d3e2bd 100644 --- a/sysdeps/unix/sysv/linux/sh/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/sh/sys/ucontext.h @@ -1,4 +1,4 @@ -/* 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/sh/sys/user.h b/sysdeps/unix/sysv/linux/sh/sys/user.h index 8cbaf1a..c2000e4 100644 --- a/sysdeps/unix/sysv/linux/sh/sys/user.h +++ b/sysdeps/unix/sysv/linux/sh/sys/user.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/sh/syscall.S b/sysdeps/unix/sysv/linux/sh/syscall.S index 8b122e2..28c0b41 100644 --- a/sysdeps/unix/sysv/linux/sh/syscall.S +++ b/sysdeps/unix/sysv/linux/sh/syscall.S @@ -1,4 +1,4 @@ -/* 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/sh/syscall_cancel.S b/sysdeps/unix/sysv/linux/sh/syscall_cancel.S new file mode 100644 index 0000000..3a088ef --- /dev/null +++ b/sysdeps/unix/sysv/linux/sh/syscall_cancel.S @@ -0,0 +1,126 @@ +/* Cancellable syscall wrapper. Linux/sh 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, + long int nr, + long int arg1, + long int arg2, + long int arg3, + long int arg4, + long int arg5, + long int arg6) */ + +ENTRY (__syscall_cancel_arch) + +#ifdef SHARED + mov.l r12,@-r15 + cfi_def_cfa_offset (4) + cfi_offset (12, -4) + mova L(GT),r0 + mov.l L(GT),r12 + sts.l pr,@-r15 + cfi_def_cfa_offset (8) + cfi_offset (17, -8) + add r0,r12 +#else + sts.l pr,@-r15 + cfi_def_cfa_offset (4) + cfi_offset (17, -4) +#endif + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + /* if (*cancelhandling & CANCELED_BITMASK) + __syscall_do_cancel() */ + mov.l @r4,r0 + tst #TCB_CANCELED_BITMASK,r0 + bf/s 1f + + /* Issue a 6 argument syscall. */ + mov r5,r3 + mov r6,r4 + mov r7,r5 +#ifdef SHARED + mov.l @(8,r15),r6 + mov.l @(12,r15),r7 + mov.l @(16,r15),r0 + mov.l @(20,r15),r1 +#else + mov.l @(4,r15),r6 + mov.l @(8,r15),r7 + mov.l @(12,r15),r0 + mov.l @(16,r15),r1 +#endif + trapa #0x16 + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + + /* The additional or is a workaround for a hardware issue: + http://documentation.renesas.com/eng/products/mpumcu/tu/tnsh7456ae.pdf + */ + or r0,r0 + or r0,r0 + or r0,r0 + or r0,r0 + or r0,r0 + + lds.l @r15+,pr + cfi_remember_state + cfi_restore (17) +#ifdef SHARED + cfi_def_cfa_offset (4) + rts + mov.l @r15+,r12 + cfi_def_cfa_offset (0) + cfi_restore (12) + .align 1 +1: + cfi_restore_state + mov.l L(SC),r1 + bsrf r1 +L(M): + nop + + .align 2 +L(GT): + .long _GLOBAL_OFFSET_TABLE_ +L(SC): + .long __syscall_do_cancel-(L(M)+2) +#else + cfi_def_cfa_offset (0) + rts + nop + + .align 1 +1: + cfi_restore_state + mov.l 2f,r1 + jsr @r1 + nop + + .align 2 +2: + .long __syscall_do_cancel +#endif + +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/sh/sysdep.S b/sysdeps/unix/sysv/linux/sh/sysdep.S index d5d8c5e..db898e9 100644 --- a/sysdeps/unix/sysv/linux/sh/sysdep.S +++ b/sysdeps/unix/sysv/linux/sh/sysdep.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/sh/sysdep.h b/sysdeps/unix/sysv/linux/sh/sysdep.h index a394a1e..93c5b51 100644 --- a/sysdeps/unix/sysv/linux/sh/sysdep.h +++ b/sysdeps/unix/sysv/linux/sh/sysdep.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1992-2024 Free Software Foundation, Inc. +/* Copyright (C) 1992-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/sh/vfork.S b/sysdeps/unix/sysv/linux/sh/vfork.S index b92cfe7..3400190 100644 --- a/sysdeps/unix/sysv/linux/sh/vfork.S +++ b/sysdeps/unix/sysv/linux/sh/vfork.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2024 Free Software Foundation, Inc. +/* Copyright (C) 2004-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/shmat.c b/sysdeps/unix/sysv/linux/shmat.c index 3f6e0b9..06a8981 100644 --- a/sysdeps/unix/sysv/linux/shmat.c +++ b/sysdeps/unix/sysv/linux/shmat.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/shmctl.c b/sysdeps/unix/sysv/linux/shmctl.c index 5f13b57..2e8faaf 100644 --- a/sysdeps/unix/sysv/linux/shmctl.c +++ b/sysdeps/unix/sysv/linux/shmctl.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/shmdt.c b/sysdeps/unix/sysv/linux/shmdt.c index 60d54ca..56c27c9 100644 --- a/sysdeps/unix/sysv/linux/shmdt.c +++ b/sysdeps/unix/sysv/linux/shmdt.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/shmget.c b/sysdeps/unix/sysv/linux/shmget.c index 8f47aed..e27e9a2 100644 --- a/sysdeps/unix/sysv/linux/shmget.c +++ b/sysdeps/unix/sysv/linux/shmget.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/shutdown.c b/sysdeps/unix/sysv/linux/shutdown.c index 987ab66..29d8968 100644 --- a/sysdeps/unix/sysv/linux/shutdown.c +++ b/sysdeps/unix/sysv/linux/shutdown.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2015-2024 Free Software Foundation, Inc. +/* Copyright (C) 2015-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/siglist-compat.h b/sysdeps/unix/sysv/linux/siglist-compat.h index e3b647b..6c49820 100644 --- a/sysdeps/unix/sysv/linux/siglist-compat.h +++ b/sysdeps/unix/sysv/linux/siglist-compat.h @@ -1,5 +1,5 @@ /* Compatibility signal numbers and their names symbols. Linux 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/signalfd.c b/sysdeps/unix/sysv/linux/signalfd.c index 55724b8..0235386 100644 --- a/sysdeps/unix/sysv/linux/signalfd.c +++ b/sysdeps/unix/sysv/linux/signalfd.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/sigpending.c b/sysdeps/unix/sysv/linux/sigpending.c index 08e0779..d877e3a 100644 --- a/sysdeps/unix/sysv/linux/sigpending.c +++ b/sysdeps/unix/sysv/linux/sigpending.c @@ -1,4 +1,4 @@ -/* 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/sigprocmask.c b/sysdeps/unix/sysv/linux/sigprocmask.c index b426aa2..481870d 100644 --- a/sysdeps/unix/sysv/linux/sigprocmask.c +++ b/sysdeps/unix/sysv/linux/sigprocmask.c @@ -1,4 +1,4 @@ -/* 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/sigqueue.c b/sysdeps/unix/sysv/linux/sigqueue.c index 37d910c..274eb5a 100644 --- a/sysdeps/unix/sysv/linux/sigqueue.c +++ b/sysdeps/unix/sysv/linux/sigqueue.c @@ -1,4 +1,4 @@ -/* 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/sigset-cvt-mask.h b/sysdeps/unix/sysv/linux/sigset-cvt-mask.h index 939e5d0..286e95e 100644 --- a/sysdeps/unix/sysv/linux/sigset-cvt-mask.h +++ b/sysdeps/unix/sysv/linux/sigset-cvt-mask.h @@ -1,6 +1,6 @@ /* Convert between lowlevel sigmask and libc representation of sigset_t. Linux version. - Copyright (C) 1998-2024 Free Software Foundation, Inc. + Copyright (C) 1998-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/sigsetops.h b/sysdeps/unix/sysv/linux/sigsetops.h index 33db4f7..f4abf83 100644 --- a/sysdeps/unix/sysv/linux/sigsetops.h +++ b/sysdeps/unix/sysv/linux/sigsetops.h @@ -1,5 +1,5 @@ /* __sigset_t manipulators. Linux version. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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/sigstack.c b/sysdeps/unix/sysv/linux/sigstack.c index ec9e29f..b75453b 100644 --- a/sysdeps/unix/sysv/linux/sigstack.c +++ b/sysdeps/unix/sysv/linux/sigstack.c @@ -1,5 +1,5 @@ /* Emulate sigstack function using sigaltstack. - Copyright (C) 1998-2024 Free Software Foundation, Inc. + Copyright (C) 1998-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/sigsuspend.c b/sysdeps/unix/sysv/linux/sigsuspend.c index 4a5de2b..7a9da02 100644 --- a/sysdeps/unix/sysv/linux/sigsuspend.c +++ b/sysdeps/unix/sysv/linux/sigsuspend.c @@ -1,4 +1,4 @@ -/* 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/sigtimedwait.c b/sysdeps/unix/sysv/linux/sigtimedwait.c index 3da4e8e..ad76628 100644 --- a/sysdeps/unix/sysv/linux/sigtimedwait.c +++ b/sysdeps/unix/sysv/linux/sigtimedwait.c @@ -1,4 +1,4 @@ -/* 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/sigwait.c b/sysdeps/unix/sysv/linux/sigwait.c index 37de8db..7809945 100644 --- a/sysdeps/unix/sysv/linux/sigwait.c +++ b/sysdeps/unix/sysv/linux/sigwait.c @@ -1,4 +1,4 @@ -/* 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 @@ -25,7 +25,7 @@ __sigwait (const sigset_t *set, int *sig) siginfo_t si; int ret; do - ret = __sigtimedwait (set, &si, 0); + ret = __sigtimedwait (set, &si, NULL); /* Applications do not expect sigwait to return with EINTR, and the error code is not specified by POSIX. */ while (ret < 0 && errno == EINTR); diff --git a/sysdeps/unix/sysv/linux/sigwaitinfo.c b/sysdeps/unix/sysv/linux/sigwaitinfo.c index dba25bd..a7e2f15 100644 --- a/sysdeps/unix/sysv/linux/sigwaitinfo.c +++ b/sysdeps/unix/sysv/linux/sigwaitinfo.c @@ -1,4 +1,4 @@ -/* 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 @@ -22,7 +22,7 @@ int __sigwaitinfo (const sigset_t *set, siginfo_t *info) { - return __sigtimedwait (set, info, 0); + return __sigtimedwait (set, info, NULL); } libc_hidden_def (__sigwaitinfo) diff --git a/sysdeps/unix/sysv/linux/single-thread.h b/sysdeps/unix/sysv/linux/single-thread.h index b651860..eecaa2d 100644 --- a/sysdeps/unix/sysv/linux/single-thread.h +++ b/sysdeps/unix/sysv/linux/single-thread.h @@ -1,5 +1,5 @@ /* Single thread optimization, Linux version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/sizes.h b/sysdeps/unix/sysv/linux/sizes.h index ee95da2..2b6099f 100644 --- a/sysdeps/unix/sysv/linux/sizes.h +++ b/sysdeps/unix/sysv/linux/sizes.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/socket-constants-time64.h b/sysdeps/unix/sysv/linux/socket-constants-time64.h index 1a62054..fc7b2fc 100644 --- a/sysdeps/unix/sysv/linux/socket-constants-time64.h +++ b/sysdeps/unix/sysv/linux/socket-constants-time64.h @@ -1,5 +1,5 @@ /* Compat socket constants used in 64-bit compat code. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/socket.c b/sysdeps/unix/sysv/linux/socket.c index 2cd2626..4ec2b4d 100644 --- a/sysdeps/unix/sysv/linux/socket.c +++ b/sysdeps/unix/sysv/linux/socket.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2015-2024 Free Software Foundation, Inc. +/* Copyright (C) 2015-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/socketcall.h b/sysdeps/unix/sysv/linux/socketcall.h index 537fa43..44131c2 100644 --- a/sysdeps/unix/sysv/linux/socketcall.h +++ b/sysdeps/unix/sysv/linux/socketcall.h @@ -1,5 +1,5 @@ /* ID for functions called via socketcall system call. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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 @@ -88,14 +88,33 @@ sc_ret; \ }) - -#define SOCKETCALL_CANCEL(name, args...) \ - ({ \ - int oldtype = LIBC_CANCEL_ASYNC (); \ - long int sc_ret = __SOCKETCALL (SOCKOP_##name, args); \ - LIBC_CANCEL_RESET (oldtype); \ - sc_ret; \ - }) +#define __SOCKETCALL_CANCEL1(__name, __a1) \ + SYSCALL_CANCEL (socketcall, __name, \ + ((long int [1]) { (long int) __a1 })) +#define __SOCKETCALL_CANCEL2(__name, __a1, __a2) \ + SYSCALL_CANCEL (socketcall, __name, \ + ((long int [2]) { (long int) __a1, (long int) __a2 })) +#define __SOCKETCALL_CANCEL3(__name, __a1, __a2, __a3) \ + SYSCALL_CANCEL (socketcall, __name, \ + ((long int [3]) { (long int) __a1, (long int) __a2, (long int) __a3 })) +#define __SOCKETCALL_CANCEL4(__name, __a1, __a2, __a3, __a4) \ + SYSCALL_CANCEL (socketcall, __name, \ + ((long int [4]) { (long int) __a1, (long int) __a2, (long int) __a3, \ + (long int) __a4 })) +#define __SOCKETCALL_CANCEL5(__name, __a1, __a2, __a3, __a4, __a5) \ + SYSCALL_CANCEL (socketcall, __name, \ + ((long int [5]) { (long int) __a1, (long int) __a2, (long int) __a3, \ + (long int) __a4, (long int) __a5 })) +#define __SOCKETCALL_CANCEL6(__name, __a1, __a2, __a3, __a4, __a5, __a6) \ + SYSCALL_CANCEL (socketcall, __name, \ + ((long int [6]) { (long int) __a1, (long int) __a2, (long int) __a3, \ + (long int) __a4, (long int) __a5, (long int) __a6 })) + +#define __SOCKETCALL_CANCEL(...) __SOCKETCALL_DISP (__SOCKETCALL_CANCEL,\ + __VA_ARGS__) + +#define SOCKETCALL_CANCEL(name, args...) \ + __SOCKETCALL_CANCEL (SOCKOP_##name, args) #endif /* sys/socketcall.h */ diff --git a/sysdeps/unix/sysv/linux/socketpair.c b/sysdeps/unix/sysv/linux/socketpair.c index 8cd4301..4f2ae22 100644 --- a/sysdeps/unix/sysv/linux/socketpair.c +++ b/sysdeps/unix/sysv/linux/socketpair.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2015-2024 Free Software Foundation, Inc. +/* Copyright (C) 2015-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/sparc/Versions b/sysdeps/unix/sysv/linux/sparc/Versions index f127bdf..7dd61a5 100644 --- a/sysdeps/unix/sysv/linux/sparc/Versions +++ b/sysdeps/unix/sysv/linux/sparc/Versions @@ -29,6 +29,10 @@ libc { __getshmlba; } + GLIBC_2.42 { + tcgetattr; + tcsetattr; + } GLIBC_PRIVATE { # nptl/pthread_cond_timedwait.c uses INTERNAL_VSYSCALL(clock_gettime). __vdso_clock_gettime; diff --git a/sysdeps/unix/sysv/linux/sparc/bits/environments.h b/sysdeps/unix/sysv/linux/sparc/bits/environments.h index d31d5c2..d8339e6 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/environments.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/environments.h @@ -1,4 +1,4 @@ -/* 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/sparc/bits/epoll.h b/sysdeps/unix/sysv/linux/sparc/bits/epoll.h index fbc003f..2e22144 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/epoll.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/epoll.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2024 Free Software Foundation, Inc. +/* Copyright (C) 2002-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/sparc/bits/errno.h b/sysdeps/unix/sysv/linux/sparc/bits/errno.h index dc57434..dfe616c 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/errno.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/errno.h @@ -1,5 +1,5 @@ /* Error constants. Linux/Sparc specific 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/sparc/bits/eventfd.h b/sysdeps/unix/sysv/linux/sparc/bits/eventfd.h index abd23b4..2a3de66 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/eventfd.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/eventfd.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/sparc/bits/fcntl.h b/sysdeps/unix/sysv/linux/sparc/bits/fcntl.h index 3beeb4b..654a96d 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/fcntl.h @@ -1,5 +1,5 @@ /* O_*, F_*, FD_* bit values for Linux/SPARC. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/sparc/bits/inotify.h b/sysdeps/unix/sysv/linux/sparc/bits/inotify.h index a2b90b6..209f178 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/inotify.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/inotify.h @@ -1,4 +1,4 @@ -/* 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 diff --git a/sysdeps/unix/sysv/linux/sparc/bits/ioctls.h b/sysdeps/unix/sysv/linux/sparc/bits/ioctls.h index a0b47b5..1a95466 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/ioctls.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/ioctls.h @@ -1,4 +1,4 @@ -/* 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/sparc/bits/ipc-perm.h b/sysdeps/unix/sysv/linux/sparc/bits/ipc-perm.h index 8f78a55..68a56c7 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/ipc-perm.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/ipc-perm.h @@ -1,5 +1,5 @@ /* struct ipc_perm definition. Linux/sparc version. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/sparc/bits/mman.h b/sysdeps/unix/sysv/linux/sparc/bits/mman.h index 679c389..4075b18 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/mman.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/mman.h @@ -1,5 +1,5 @@ /* Definitions for POSIX memory map interface. Linux/SPARC 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/sparc/bits/poll.h b/sysdeps/unix/sysv/linux/sparc/bits/poll.h index 70f88fa..8ad8c4a 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/poll.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/poll.h @@ -1,4 +1,4 @@ -/* 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/sparc/bits/procfs-extra.h b/sysdeps/unix/sysv/linux/sparc/bits/procfs-extra.h index 21d365a..95d6c1a 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/procfs-extra.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/procfs-extra.h @@ -1,5 +1,5 @@ /* Extra sys/procfs.h definitions. SPARC 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/sparc/bits/procfs-id.h b/sysdeps/unix/sysv/linux/sparc/bits/procfs-id.h index 615716e..f992909 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/procfs-id.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/procfs-id.h @@ -1,5 +1,5 @@ /* Types of pr_uid and pr_gid in struct elf_prpsinfo. SPARC 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. diff --git a/sysdeps/unix/sysv/linux/sparc/bits/procfs.h b/sysdeps/unix/sysv/linux/sparc/bits/procfs.h index 72952ad..487d6b5 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/procfs.h @@ -1,5 +1,5 @@ /* Types for registers for sys/procfs.h. SPARC 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/sparc/bits/pthread_stack_min.h b/sysdeps/unix/sysv/linux/sparc/bits/pthread_stack_min.h index c6f736c..9ffb7f5 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/pthread_stack_min.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/pthread_stack_min.h @@ -1,5 +1,5 @@ /* Definition of PTHREAD_STACK_MIN. Linux/SPARC version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/sparc/bits/resource.h b/sysdeps/unix/sysv/linux/sparc/bits/resource.h index 7711e84..193c946 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/resource.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/resource.h @@ -1,5 +1,5 @@ /* Bit values & structures for resource limits. Linux/SPARC version. - Copyright (C) 1994-2024 Free Software Foundation, Inc. + Copyright (C) 1994-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/sparc/bits/setjmp.h b/sysdeps/unix/sysv/linux/sparc/bits/setjmp.h index 66aa299..3f959dd 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/setjmp.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/setjmp.h @@ -1,4 +1,4 @@ -/* 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/sparc/bits/shmlba.h b/sysdeps/unix/sysv/linux/sparc/bits/shmlba.h index a35859f..4cb2df5 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/shmlba.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/shmlba.h @@ -1,5 +1,5 @@ /* Define SHMLBA. SPARC 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/sparc/bits/sigaction.h b/sysdeps/unix/sysv/linux/sparc/bits/sigaction.h index 06b36fe..f5bc349 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/sigaction.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/sigaction.h @@ -1,5 +1,5 @@ /* The proper definitions for Linux/SPARC sigaction. - 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/sparc/bits/sigcontext.h b/sysdeps/unix/sysv/linux/sparc/bits/sigcontext.h index c9ae8b6..64784cb 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/sigcontext.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/sigcontext.h @@ -1,4 +1,4 @@ -/* 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/sparc/bits/signalfd.h b/sysdeps/unix/sysv/linux/sparc/bits/signalfd.h index 0a45883..4df5b87 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/signalfd.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/signalfd.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/sparc/bits/signum-arch.h b/sysdeps/unix/sysv/linux/sparc/bits/signum-arch.h index ab4373f..6abf08b 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/signum-arch.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/signum-arch.h @@ -1,5 +1,5 @@ /* Signal number definitions. Linux/SPARC 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/sparc/bits/sigstack.h b/sysdeps/unix/sysv/linux/sparc/bits/sigstack.h index b065216..25102e3 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/sigstack.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/sigstack.h @@ -1,5 +1,5 @@ /* sigstack, sigaltstack definitions. - Copyright (C) 1998-2024 Free Software Foundation, Inc. + Copyright (C) 1998-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/sparc/bits/socket-constants.h b/sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h index e7a6b68..98aec92 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h @@ -1,5 +1,5 @@ /* Socket constants which vary among Linux architectures. Version for SPARC. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/sparc/bits/socket_type.h b/sysdeps/unix/sysv/linux/sparc/bits/socket_type.h index e60a88a..e4da461 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/socket_type.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/socket_type.h @@ -1,5 +1,5 @@ /* Define enum __socket_type for Linux/SPARC. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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/sparc/bits/struct_stat.h b/sysdeps/unix/sysv/linux/sparc/bits/struct_stat.h index fcab5f4..622b8e1 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/struct_stat.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/struct_stat.h @@ -1,5 +1,5 @@ /* Definition for struct stat. - 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/sparc/bits/termios-c_cc.h b/sysdeps/unix/sysv/linux/sparc/bits/termios-c_cc.h index 87be92c..75803d6 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/termios-c_cc.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/termios-c_cc.h @@ -1,5 +1,5 @@ /* termios c_cc symbolic constant definitions. Linux/sparc version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/sparc/bits/termios-c_oflag.h b/sysdeps/unix/sysv/linux/sparc/bits/termios-c_oflag.h index d434456..ff342c3 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/termios-c_oflag.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/termios-c_oflag.h @@ -1,5 +1,5 @@ /* termios output mode definitions. Linux/sparc version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/sparc/bits/termios-baud.h b/sysdeps/unix/sysv/linux/sparc/bits/termios-cbaud.h index b9b94a4..34eba18 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/termios-baud.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/termios-cbaud.h @@ -1,5 +1,5 @@ /* termios baud rate selection definitions. Linux/sparc version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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 @@ -17,30 +17,29 @@ <https://www.gnu.org/licenses/>. */ #ifndef _TERMIOS_H -# error "Never include <bits/termios-baud.h> directly; use <termios.h> instead." +# error "Never include <bits/termios-cbaud.h> directly; use <termios.h> instead." #endif #ifdef __USE_MISC # define CBAUD 0x0000100f # define CBAUDEX 0x00001000 -# define CIBAUD 0x100f0000 /* input baud rate (not used) */ -# define CMSPAR 0x40000000 /* mark or space (stick) parity */ -# define CRTSCTS 0x80000000 /* flow control */ +# define CIBAUD 0x100f0000 /* input baud rate */ +# define IBSHIFT 16 #endif -#define B57600 0x00001001 -#define B115200 0x00001002 -#define B230400 0x00001003 -#define B460800 0x00001004 -#define B76800 0x00001005 -#define B153600 0x00001006 -#define B307200 0x00001007 -#define B614400 0x00001008 -#define B921600 0x00001009 -#define B500000 0x0000100a -#define B576000 0x0000100b -#define B1000000 0x0000100c -#define B1152000 0x0000100d -#define B1500000 0x0000100e -#define B2000000 0x0000100f -#define __MAX_BAUD B2000000 +#define __B57600 0x00001001 +#define __B115200 0x00001002 +#define __B230400 0x00001003 +#define __B460800 0x00001004 +#define __B76800 0x00001005 +#define __B153600 0x00001006 +#define __B307200 0x00001007 +#define __B614400 0x00001008 +#define __B921600 0x00001009 +#define __B500000 0x0000100a +#define __B576000 0x0000100b +#define __B1000000 0x0000100c +#define __B1152000 0x0000100d +#define __B1500000 0x0000100e +#define __B2000000 0x0000100f +#define __BOTHER 0x00001000 diff --git a/sysdeps/unix/sysv/linux/sparc/bits/termios-struct.h b/sysdeps/unix/sysv/linux/sparc/bits/termios-struct.h deleted file mode 100644 index c7cdc8c..0000000 --- a/sysdeps/unix/sysv/linux/sparc/bits/termios-struct.h +++ /dev/null @@ -1,34 +0,0 @@ -/* struct termios definition. Linux/sparc version. - Copyright (C) 2019-2024 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 - <https://www.gnu.org/licenses/>. */ - -#ifndef _TERMIOS_H -# error "Never include <bits/termios-struct.h> directly; use <termios.h> instead." -#endif - -#define NCCS 17 -struct termios - { - tcflag_t c_iflag; /* input mode flags */ - tcflag_t c_oflag; /* output mode flags */ - tcflag_t c_cflag; /* control mode flags */ - tcflag_t c_lflag; /* local mode flags */ - cc_t c_line; /* line discipline */ - cc_t c_cc[NCCS]; /* control characters */ -#define _HAVE_STRUCT_TERMIOS_C_ISPEED 0 -#define _HAVE_STRUCT_TERMIOS_C_OSPEED 0 - }; diff --git a/sysdeps/unix/sysv/linux/sparc/bits/timerfd.h b/sysdeps/unix/sysv/linux/sparc/bits/timerfd.h index 532f325..e381e97 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/timerfd.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/timerfd.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/sparc/bits/timesize.h b/sysdeps/unix/sysv/linux/sparc/bits/timesize.h index 4ba7e22..ea129aa 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/timesize.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/timesize.h @@ -1,5 +1,5 @@ /* Bit size of the time_t type at glibc build time, Linux/sparc. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/sparc/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_msqid_ds.h index ed8d47c..60b8dbe 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_msqid_ds.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_msqid_ds.h @@ -1,5 +1,5 @@ /* Linux/SPARC implementation of the SysV message struct msqid_ds. - 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/sparc/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h index b9e729b..95d66ca 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h @@ -1,5 +1,5 @@ /* Sparc implementation of the semaphore struct semid_ds - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/sparc/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h index 7885d2a..1289e5a 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h @@ -1,5 +1,5 @@ /* Linux/SPARC implementation of the shared memory struct shmid_ds. - 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/sparc/bits/typesizes.h b/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h index 9f3842a..97e9641 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h @@ -1,5 +1,5 @@ /* bits/typesizes.h -- underlying types for *_t. Linux/SPARC version. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/sparc/brk_call.h b/sysdeps/unix/sysv/linux/sparc/brk_call.h index 167295c..99361c9 100644 --- a/sysdeps/unix/sysv/linux/sparc/brk_call.h +++ b/sysdeps/unix/sysv/linux/sparc/brk_call.h @@ -1,5 +1,5 @@ /* Invoke the brk system call. Sparc version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/sparc/dl-cache.h b/sysdeps/unix/sysv/linux/sparc/dl-cache.h index cb6cc56..b1e39aa 100644 --- a/sysdeps/unix/sysv/linux/sparc/dl-cache.h +++ b/sysdeps/unix/sysv/linux/sparc/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/sparc/errlist-compat-data.h b/sysdeps/unix/sysv/linux/sparc/errlist-compat-data.h index c390163..9006f08 100644 --- a/sysdeps/unix/sysv/linux/sparc/errlist-compat-data.h +++ b/sysdeps/unix/sysv/linux/sparc/errlist-compat-data.h @@ -1,5 +1,5 @@ /* Linux sys_errlist compat symbol definitions. Sparc 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/sparc/getrlimit64.c b/sysdeps/unix/sysv/linux/sparc/getrlimit64.c index f17b1a2..fc52b7d 100644 --- a/sysdeps/unix/sysv/linux/sparc/getrlimit64.c +++ b/sysdeps/unix/sysv/linux/sparc/getrlimit64.c @@ -1,5 +1,5 @@ /* Linux getrlimit64 sparc32 implementation (64 bits rlim_t). - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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/sparc/getshmlba.c b/sysdeps/unix/sysv/linux/sparc/getshmlba.c index 9f502f1..cfadee7 100644 --- a/sysdeps/unix/sysv/linux/sparc/getshmlba.c +++ b/sysdeps/unix/sysv/linux/sparc/getshmlba.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2024 Free Software Foundation, Inc. +/* Copyright (C) 2012-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/sparc/kernel-features.h b/sysdeps/unix/sysv/linux/sparc/kernel-features.h index f7efbae..24423db 100644 --- a/sysdeps/unix/sysv/linux/sparc/kernel-features.h +++ b/sysdeps/unix/sysv/linux/sparc/kernel-features.h @@ -1,6 +1,6 @@ /* Set flags signalling availability of kernel features based on given kernel version number. SPARC version. - 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/sparc/kernel_termios.h b/sysdeps/unix/sysv/linux/sparc/kernel_termios.h deleted file mode 100644 index 61b7e84..0000000 --- a/sysdeps/unix/sysv/linux/sparc/kernel_termios.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright (C) 1997-2024 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 - <https://www.gnu.org/licenses/>. */ - -#ifndef _KERNEL_TERMIOS_H -#define _KERNEL_TERMIOS_H 1 -/* The following corresponds to the values from the Linux 2.1.20 kernel. */ - -/* We need the definition of tcflag_t, cc_t, and speed_t. */ -#include <termios.h> - -#define __KERNEL_NCCS 17 - -struct __kernel_termios - { - tcflag_t c_iflag; /* input mode flags */ - tcflag_t c_oflag; /* output mode flags */ - tcflag_t c_cflag; /* control mode flags */ - tcflag_t c_lflag; /* local mode flags */ - cc_t c_line; /* line discipline */ - cc_t c_cc[__KERNEL_NCCS]; /* control characters */ - }; - -#define _HAVE_C_ISPEED 0 -#define _HAVE_C_OSPEED 0 - -#endif /* kernel_termios.h */ diff --git a/sysdeps/unix/sysv/linux/sparc/librt-compat.c b/sysdeps/unix/sysv/linux/sparc/librt-compat.c index 2dcad0a..22b3ba1 100644 --- a/sysdeps/unix/sysv/linux/sparc/librt-compat.c +++ b/sysdeps/unix/sysv/linux/sparc/librt-compat.c @@ -1,5 +1,5 @@ /* Placeholder definitions to pull in removed symbol versions. sparc version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/sparc/profil-counter.h b/sysdeps/unix/sysv/linux/sparc/profil-counter.h index ef40359..715a361 100644 --- a/sysdeps/unix/sysv/linux/sparc/profil-counter.h +++ b/sysdeps/unix/sysv/linux/sparc/profil-counter.h @@ -1,5 +1,5 @@ /* Low-level statistical profiling support function. Linux/Sparc64 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/sparc/readelflib.c b/sysdeps/unix/sysv/linux/sparc/readelflib.c index afd5d7c..7f3dcab 100644 --- a/sysdeps/unix/sysv/linux/sparc/readelflib.c +++ b/sysdeps/unix/sysv/linux/sparc/readelflib.c @@ -1,4 +1,4 @@ -/* 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/sparc/socket-constants-time64.h b/sysdeps/unix/sysv/linux/sparc/socket-constants-time64.h index 871558d..31c0bbc 100644 --- a/sysdeps/unix/sysv/linux/sparc/socket-constants-time64.h +++ b/sysdeps/unix/sysv/linux/sparc/socket-constants-time64.h @@ -1,5 +1,5 @@ /* Compat socket constants used in 64-bit compat code. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/sparc/sparc32/____longjmp_chk.S b/sysdeps/unix/sysv/linux/sparc/sparc32/____longjmp_chk.S index fb77639..7fbe3c2 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/____longjmp_chk.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/____longjmp_chk.S @@ -1,4 +1,4 @@ -/* 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/sparc/sparc32/arch-syscall.h b/sysdeps/unix/sysv/linux/sparc/sparc32/arch-syscall.h index 3bad6f1..85828a8 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/arch-syscall.h @@ -136,6 +136,7 @@ #define __NR_getuid 24 #define __NR_getuid32 44 #define __NR_getxattr 172 +#define __NR_getxattrat 464 #define __NR_init_module 190 #define __NR_inotify_add_watch 152 #define __NR_inotify_init 151 @@ -171,6 +172,7 @@ #define __NR_listen 354 #define __NR_listmount 458 #define __NR_listxattr 178 +#define __NR_listxattrat 465 #define __NR_llistxattr 179 #define __NR_lookup_dcookie 208 #define __NR_lremovexattr 182 @@ -228,6 +230,7 @@ #define __NR_open 5 #define __NR_open_by_handle_at 333 #define __NR_open_tree 428 +#define __NR_open_tree_attr 467 #define __NR_openat 284 #define __NR_openat2 437 #define __NR_pause 29 @@ -279,6 +282,7 @@ #define __NR_recvmsg 113 #define __NR_remap_file_pages 192 #define __NR_removexattr 181 +#define __NR_removexattrat 466 #define __NR_rename 128 #define __NR_renameat 291 #define __NR_renameat2 345 @@ -351,6 +355,7 @@ #define __NR_setuid 23 #define __NR_setuid32 87 #define __NR_setxattr 169 +#define __NR_setxattrat 463 #define __NR_sgetmask 199 #define __NR_shmat 397 #define __NR_shmctl 396 diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/bits/long-double.h b/sysdeps/unix/sysv/linux/sparc/sparc32/bits/long-double.h index 8104f46..71d4332 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/bits/long-double.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/bits/long-double.h @@ -1,5 +1,5 @@ /* Properties of long double type. SPARC version. - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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/sparc/sparc32/clone.S b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S index c9cf9bb..79af157 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S @@ -1,4 +1,4 @@ -/* 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 @@ -29,7 +29,11 @@ ENTRY (__clone) save %sp,-96,%sp save %sp,-96,%sp +#ifdef __sparcv9 flushw +#else + ta 3 +#endif restore cfi_def_cfa_register(%fp) cfi_window_save diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/getcontext.S b/sysdeps/unix/sysv/linux/sparc/sparc32/getcontext.S index 4004c4e..d9d2ce8 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/getcontext.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/getcontext.S @@ -1,5 +1,5 @@ /* Save current context. - Copyright (C) 2008-2024 Free Software Foundation, Inc. + Copyright (C) 2008-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/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist index e615be7..6deedf2 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist @@ -3157,6 +3157,27 @@ GLIBC_2.4 wcstold F GLIBC_2.4 wcstold_l F GLIBC_2.4 wprintf F GLIBC_2.4 wscanf 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 tcgetattr F +GLIBC_2.42 tcsetattr F +GLIBC_2.42 uabs F +GLIBC_2.42 uimaxabs F +GLIBC_2.42 ulabs F +GLIBC_2.42 ullabs F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc_sigaction.c b/sysdeps/unix/sysv/linux/sparc/sparc32/libc_sigaction.c index 96e2fe9..e232731 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc_sigaction.c +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc_sigaction.c @@ -1,5 +1,5 @@ /* POSIX.1 sigaction call for Linux/SPARC. - 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/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist index 15c958e..8107101 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist @@ -1299,3 +1299,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/sparc/sparc32/makecontext.c b/sysdeps/unix/sysv/linux/sparc/sparc32/makecontext.c index 62013c4..7954b9c 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/makecontext.c +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/makecontext.c @@ -1,5 +1,5 @@ /* Create new context. - Copyright (C) 2008-2024 Free Software Foundation, Inc. + Copyright (C) 2008-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/sparc/sparc32/pointer_guard.h b/sysdeps/unix/sysv/linux/sparc/sparc32/pointer_guard.h index ab106f6..e6ad73c 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/pointer_guard.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/pointer_guard.h @@ -1,5 +1,5 @@ /* Pointer obfuscation implenentation. 32-bit SPARC version. - Copyright (C) 2006-2024 Free Software Foundation, Inc. + Copyright (C) 2006-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/sparc/sparc32/setcontext.S b/sysdeps/unix/sysv/linux/sparc/sparc32/setcontext.S index e86d641..fbc9aa7 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/setcontext.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/setcontext.S @@ -1,5 +1,5 @@ /* Install given context. - Copyright (C) 2008-2024 Free Software Foundation, Inc. + Copyright (C) 2008-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/sparc/sparc32/sigcontextinfo.h b/sysdeps/unix/sysv/linux/sparc/sparc32/sigcontextinfo.h index 6fcc2f9..187ec3e 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/sigcontextinfo.h @@ -1,4 +1,4 @@ -/* 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/sparc/sparc32/sigreturn_stub.S b/sysdeps/unix/sysv/linux/sparc/sparc32/sigreturn_stub.S index 21d36c5..358c844 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/sigreturn_stub.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/sigreturn_stub.S @@ -1,5 +1,5 @@ /* Sigreturn stub function used on sa_restore field. - 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/sparc/sparc32/swapcontext.S b/sysdeps/unix/sysv/linux/sparc/sparc32/swapcontext.S index 56abf67..01a138c 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/swapcontext.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/swapcontext.S @@ -1,5 +1,5 @@ /* Save current context and install the given one. - Copyright (C) 2008-2024 Free Software Foundation, Inc. + Copyright (C) 2008-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/sparc/sparc32/syscall.S b/sysdeps/unix/sysv/linux/sparc/sparc32/syscall.S index 2ae0854..082e1a3 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/syscall.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/syscall.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2024 Free Software Foundation, Inc. +/* Copyright (C) 1991-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/sparc/sparc32/syscall_cancel.S b/sysdeps/unix/sysv/linux/sparc/sparc32/syscall_cancel.S new file mode 100644 index 0000000..6bdd87d --- /dev/null +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/syscall_cancel.S @@ -0,0 +1,80 @@ +/* Cancellable syscall wrapper. Linux/sparc32 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, + long int nr, + long int arg1, + long int arg2, + long int arg3, + long int arg4, + long int arg5, + long int arg6) */ + +ENTRY (__syscall_cancel_arch) + save %sp, -96, %sp + + cfi_window_save + cfi_register (%o7, %i7) + cfi_def_cfa_register (%fp) + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + /* if (*cancelhandling & CANCELED_BITMASK) + __syscall_do_cancel() */ + ld [%i0], %g2 + andcc %g2, TCB_CANCELED_BITMASK, %g0 +#ifdef __sparcv9 + bne,pn %icc, 2f +#else + bne 2f +#endif + /* Issue a 6 argument syscall. */ + mov %i2, %o0 + mov %i3, %o1 + mov %i4, %o2 + mov %i5, %o3 + ld [%fp+92], %o4 + ld [%fp+96], %o5 + mov %i1, %g1 + ta 0x10 + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + bcc 1f + nop + sub %g0, %o0, %o0 +1: + mov %o0, %i0 +#ifdef __sparcv9 + return %i7+8 + nop +#else + jmp %i7+8 + restore +#endif + +2: + call __syscall_do_cancel, 0 + nop + nop + +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h b/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h index d2d68f5..9ad5192 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h @@ -1,4 +1,4 @@ -/* 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 @@ -107,6 +107,7 @@ ENTRY(name); \ #else /* __ASSEMBLER__ */ #define __SYSCALL_STRING \ + "mov %[scn], %%g1;" \ "ta 0x10;" \ "bcc 1f;" \ " nop;" \ @@ -114,7 +115,7 @@ ENTRY(name); \ "1:" #define __SYSCALL_CLOBBERS \ - "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \ + "g1", "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \ "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", \ "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23", \ "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31", \ diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S b/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S index e124b28..8e578d1 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2024 Free Software Foundation, Inc. +/* Copyright (C) 2004-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/sparc/sparc64/____longjmp_chk.S b/sysdeps/unix/sysv/linux/sparc/sparc64/____longjmp_chk.S index 8379e0f..7b98592 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/____longjmp_chk.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/____longjmp_chk.S @@ -1,4 +1,4 @@ -/* 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/sparc/sparc64/__start_context.S b/sysdeps/unix/sysv/linux/sparc/sparc64/__start_context.S index fa521a9..5c82694 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/__start_context.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/__start_context.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2024 Free Software Foundation, Inc. +/* Copyright (C) 2012-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/sparc/sparc64/arch-syscall.h b/sysdeps/unix/sysv/linux/sparc/sparc64/arch-syscall.h index 98e1437..d83ecd1 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/arch-syscall.h @@ -121,6 +121,7 @@ #define __NR_gettimeofday 116 #define __NR_getuid 24 #define __NR_getxattr 172 +#define __NR_getxattrat 464 #define __NR_init_module 190 #define __NR_inotify_add_watch 152 #define __NR_inotify_init 151 @@ -154,6 +155,7 @@ #define __NR_listen 354 #define __NR_listmount 458 #define __NR_listxattr 178 +#define __NR_listxattrat 465 #define __NR_llistxattr 179 #define __NR_lookup_dcookie 208 #define __NR_lremovexattr 182 @@ -209,6 +211,7 @@ #define __NR_open 5 #define __NR_open_by_handle_at 333 #define __NR_open_tree 428 +#define __NR_open_tree_attr 467 #define __NR_openat 284 #define __NR_openat2 437 #define __NR_pause 29 @@ -257,6 +260,7 @@ #define __NR_recvmsg 113 #define __NR_remap_file_pages 192 #define __NR_removexattr 181 +#define __NR_removexattrat 466 #define __NR_rename 128 #define __NR_renameat 291 #define __NR_renameat2 345 @@ -320,6 +324,7 @@ #define __NR_settimeofday 122 #define __NR_setuid 23 #define __NR_setxattr 169 +#define __NR_setxattrat 463 #define __NR_sgetmask 199 #define __NR_shmat 397 #define __NR_shmctl 396 diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/bits/long-double.h b/sysdeps/unix/sysv/linux/sparc/sparc64/bits/long-double.h index 8104f46..71d4332 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/bits/long-double.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/bits/long-double.h @@ -1,5 +1,5 @@ /* Properties of long double type. SPARC version. - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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/sparc/sparc64/clone.S b/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S index 370d51f..7800d0e 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S @@ -1,4 +1,4 @@ -/* 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/sparc/sparc64/dl-cache.h b/sysdeps/unix/sysv/linux/sparc/sparc64/dl-cache.h index 4f807b6..b990ff8 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/dl-cache.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/dl-cache.h @@ -1,5 +1,5 @@ /* Support for reading /etc/ld.so.cache files written by Linux ldconfig. - 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/sparc/sparc64/getcontext.S b/sysdeps/unix/sysv/linux/sparc/sparc64/getcontext.S index 13d4b28..e793120 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/getcontext.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/getcontext.S @@ -1,4 +1,4 @@ -/* 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/sparc/sparc64/ipc_priv.h b/sysdeps/unix/sysv/linux/sparc/sparc64/ipc_priv.h index 9c1944e..468b987 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/ipc_priv.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/ipc_priv.h @@ -1,5 +1,5 @@ /* Old SysV permission definition for Linux. x86_64 version. - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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/sparc/sparc64/kstat_cp.h b/sysdeps/unix/sysv/linux/sparc/sparc64/kstat_cp.h index 2aff560..8f4f9f8 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/kstat_cp.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/kstat_cp.h @@ -1,5 +1,5 @@ /* Struct kernel_stat64 to stat64. Linux/SPARC 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/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist index bd36431..1ce22bf 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist @@ -2793,6 +2793,27 @@ GLIBC_2.4 sys_errlist D 0x430 GLIBC_2.4 sys_nerr D 0x4 GLIBC_2.4 unlinkat F GLIBC_2.4 unshare 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 tcgetattr F +GLIBC_2.42 tcsetattr F +GLIBC_2.42 uabs F +GLIBC_2.42 uimaxabs F +GLIBC_2.42 ulabs F +GLIBC_2.42 ullabs F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc_sigaction.c b/sysdeps/unix/sysv/linux/sparc/sparc64/libc_sigaction.c index 4f92302..4f0ca3d 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc_sigaction.c +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc_sigaction.c @@ -1,5 +1,5 @@ /* POSIX.1 sigaction call for Linux/SPARC64. - 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/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist index bf608f5..418ed9d 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist @@ -1189,3 +1189,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/sparc/sparc64/longjmp.S b/sysdeps/unix/sysv/linux/sparc/sparc64/longjmp.S index 5c0ab82..033137f 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/longjmp.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/longjmp.S @@ -1,4 +1,4 @@ -/* 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/sparc/sparc64/makecontext.c b/sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c index ca2248d..6539387 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c @@ -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/sparc/sparc64/pointer_guard.h b/sysdeps/unix/sysv/linux/sparc/sparc64/pointer_guard.h index d7b6899..ab17055 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/pointer_guard.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/pointer_guard.h @@ -1,5 +1,5 @@ /* Pointer obfuscation implenentation. 64-bit SPARC version. - Copyright (C) 2006-2024 Free Software Foundation, Inc. + Copyright (C) 2006-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/sparc/sparc64/setcontext.S b/sysdeps/unix/sysv/linux/sparc/sparc64/setcontext.S index 644a4bb..f65717b 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/setcontext.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/setcontext.S @@ -1,4 +1,4 @@ -/* 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/sparc/sparc64/setjmp.S b/sysdeps/unix/sysv/linux/sparc/sparc64/setjmp.S index 6366af4..ceba233 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/setjmp.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/setjmp.S @@ -1,4 +1,4 @@ -/* 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/sparc/sparc64/sigcontextinfo.h b/sysdeps/unix/sysv/linux/sparc/sparc64/sigcontextinfo.h index 2eb8ff6..1f70503 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sigcontextinfo.h @@ -1,4 +1,4 @@ -/* 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/sparc/sparc64/sigreturn_stub.S b/sysdeps/unix/sysv/linux/sparc/sparc64/sigreturn_stub.S index 8c9fbbf..02e37d8 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/sigreturn_stub.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sigreturn_stub.S @@ -1,5 +1,5 @@ /* Sigreturn stub function used on sa_restore field. - 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/sparc/sparc64/sizes.h b/sysdeps/unix/sysv/linux/sparc/sparc64/sizes.h index cf74c66..380cf64 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/sizes.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sizes.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/sparc/sparc64/swapcontext.c b/sysdeps/unix/sysv/linux/sparc/sparc64/swapcontext.c index ddd515d..662954b 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/swapcontext.c +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/swapcontext.c @@ -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/sparc/sparc64/syscall.S b/sysdeps/unix/sysv/linux/sparc/sparc64/syscall.S index 0d0d3d1..7d5d211 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/syscall.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/syscall.S @@ -1,4 +1,4 @@ -/* 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/sparc/sparc64/syscall_cancel.S b/sysdeps/unix/sysv/linux/sparc/sparc64/syscall_cancel.S new file mode 100644 index 0000000..59765fe --- /dev/null +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/syscall_cancel.S @@ -0,0 +1,74 @@ +/* Cancellable syscall wrapper. Linux/sparc64 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> + + .register %g2, #scratch + +/* long int __syscall_cancel_arch (int *cancelhandling, + long int nr, + long int arg1, + long int arg2, + long int arg3, + long int arg4, + long int arg5, + long int arg6) */ + +ENTRY (__syscall_cancel_arch) + save %sp, -176, %sp + + cfi_window_save + cfi_register (%o7, %i7) + cfi_def_cfa_register (%fp) + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + /* if (*cancelhandling & CANCELED_BITMASK) + __syscall_do_cancel() */ + lduw [%i0], %g2 + andcc %g2, TCB_CANCELED_BITMASK, %g0 + bne,pn %xcc, 2f + /* Issue a 6 argument syscall. */ + mov %i2, %o0 + mov %i3, %o1 + mov %i4, %o2 + mov %i5, %o3 + ldx [%fp + STACK_BIAS + 176], %o4 + ldx [%fp + STACK_BIAS + 184], %o5 + mov %i1, %g1 + ta 0x6d + + .global __syscall_cancel_arch_end +__syscall_cancel_arch_end: + + bcc,pt %xcc, 1f + nop + sub %g0, %o0, %o0 +1: + mov %o0, %i0 + return %i7+8 + nop + +2: + call __syscall_do_cancel, 0 + nop + nop + +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h index 9604742..1781dec 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h @@ -1,4 +1,4 @@ -/* 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 @@ -106,6 +106,7 @@ ENTRY(name); \ #else /* __ASSEMBLER__ */ #define __SYSCALL_STRING \ + "mov %[scn], %%g1;" \ "ta 0x6d;" \ "bcc,pt %%xcc, 1f;" \ " nop;" \ @@ -113,7 +114,7 @@ ENTRY(name); \ "1:" #define __SYSCALL_CLOBBERS \ - "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \ + "g1", "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \ "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", \ "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23", \ "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31", \ diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/timer_t_was_int_compat.h b/sysdeps/unix/sysv/linux/sparc/sparc64/timer_t_was_int_compat.h index 59de36a..f271cad 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/timer_t_was_int_compat.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/timer_t_was_int_compat.h @@ -1,5 +1,5 @@ /* timer_t/int compatibility transition. sparc64 version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/sparc/sparc64/ucontext_i.h b/sysdeps/unix/sysv/linux/sparc/sparc64/ucontext_i.h index c41a932..0723904 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/ucontext_i.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/ucontext_i.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/sparc/sparc64/vfork.S b/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S index 46084c6..53ffecb 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2024 Free Software Foundation, Inc. +/* Copyright (C) 2004-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/sparc/sparc64/wordexp.c b/sysdeps/unix/sysv/linux/sparc/sparc64/wordexp.c index 144e608..7aedf24 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/wordexp.c +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/wordexp.c @@ -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/sparc/sparc64/xstatconv.c b/sysdeps/unix/sysv/linux/sparc/sparc64/xstatconv.c index 027000a..eb210d0 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/xstatconv.c +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/xstatconv.c @@ -1,5 +1,5 @@ /* Convert between the kernel's `struct stat' format, and libc's. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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/sparc/sys/ptrace.h b/sysdeps/unix/sysv/linux/sparc/sys/ptrace.h index 20da43b..29b6422 100644 --- a/sysdeps/unix/sysv/linux/sparc/sys/ptrace.h +++ b/sysdeps/unix/sysv/linux/sparc/sys/ptrace.h @@ -1,5 +1,5 @@ /* `ptrace' debugger support interface. Linux/SPARC 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/sparc/sys/ucontext.h b/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h index 1061b39..42c864c 100644 --- a/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/sparc/sys/user.h b/sysdeps/unix/sysv/linux/sparc/sys/user.h index 44e9c09..7bbe4dc 100644 --- a/sysdeps/unix/sysv/linux/sparc/sys/user.h +++ b/sysdeps/unix/sysv/linux/sparc/sys/user.h @@ -1,4 +1,4 @@ -/* 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/sparc/sysdep.h b/sysdeps/unix/sysv/linux/sparc/sysdep.h index dcabb57..0051f8b 100644 --- a/sysdeps/unix/sysv/linux/sparc/sysdep.h +++ b/sysdeps/unix/sysv/linux/sparc/sysdep.h @@ -1,4 +1,4 @@ -/* 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 @@ -50,97 +50,109 @@ #undef INTERNAL_SYSCALL_NCS #define INTERNAL_SYSCALL_NCS(name, nr, args...) \ - internal_syscall##nr(__SYSCALL_STRING, name, args) + _internal_syscall##nr(__SYSCALL_STRING, "p", name, args) -#define internal_syscall0(string,name,dummy...) \ +#define _internal_syscall0(string,nc,name,dummy...) \ ({ \ - register long int __g1 __asm__ ("g1") = (name); \ register long __o0 __asm__ ("o0"); \ + long int _name = (long int) (name); \ __asm __volatile (string : "=r" (__o0) : \ - "r" (__g1) : \ + [scn] nc (_name) : \ __SYSCALL_CLOBBERS); \ __o0; \ }) +#define internal_syscall0(string,name,args...) \ + _internal_syscall0(string, "i", name, args) -#define internal_syscall1(string,name,arg1) \ +#define _internal_syscall1(string,nc,name,arg1) \ ({ \ long int _arg1 = (long int) (arg1); \ - register long int __g1 __asm__("g1") = (name); \ + long int _name = (long int) (name); \ register long int __o0 __asm__ ("o0") = _arg1; \ - __asm __volatile (string : "=r" (__o0) : \ - "r" (__g1), "0" (__o0) : \ + __asm __volatile (string : "+r" (__o0) : \ + [scn] nc (_name) : \ __SYSCALL_CLOBBERS); \ __o0; \ }) +#define internal_syscall1(string,name,args...) \ + _internal_syscall1(string, "i", name, args) -#define internal_syscall2(string,name,arg1,arg2) \ +#define _internal_syscall2(string,nc,name,arg1,arg2) \ ({ \ long int _arg1 = (long int) (arg1); \ long int _arg2 = (long int) (arg2); \ - register long int __g1 __asm__("g1") = (name); \ + long int _name = (long int) (name); \ register long int __o0 __asm__ ("o0") = _arg1; \ register long int __o1 __asm__ ("o1") = _arg2; \ - __asm __volatile (string : "=r" (__o0) : \ - "r" (__g1), "0" (__o0), "r" (__o1) : \ + __asm __volatile (string : "+r" (__o0) : \ + [scn] nc (_name), "r" (__o1) : \ __SYSCALL_CLOBBERS); \ __o0; \ }) +#define internal_syscall2(string,name,args...) \ + _internal_syscall2(string, "i", name, args) -#define internal_syscall3(string,name,arg1,arg2,arg3) \ +#define _internal_syscall3(string,nc,name,arg1,arg2,arg3) \ ({ \ long int _arg1 = (long int) (arg1); \ long int _arg2 = (long int) (arg2); \ long int _arg3 = (long int) (arg3); \ - register long int __g1 __asm__("g1") = (name); \ + long int _name = (long int) (name); \ register long int __o0 __asm__ ("o0") = _arg1; \ register long int __o1 __asm__ ("o1") = _arg2; \ register long int __o2 __asm__ ("o2") = _arg3; \ - __asm __volatile (string : "=r" (__o0) : \ - "r" (__g1), "0" (__o0), "r" (__o1), \ + __asm __volatile (string : "+r" (__o0) : \ + [scn] nc (_name), "r" (__o1), \ "r" (__o2) : \ __SYSCALL_CLOBBERS); \ __o0; \ }) +#define internal_syscall3(string,name,args...) \ + _internal_syscall3(string, "i", name, args) -#define internal_syscall4(string,name,arg1,arg2,arg3,arg4) \ +#define _internal_syscall4(string,nc,name,arg1,arg2,arg3,arg4) \ ({ \ long int _arg1 = (long int) (arg1); \ long int _arg2 = (long int) (arg2); \ long int _arg3 = (long int) (arg3); \ long int _arg4 = (long int) (arg4); \ - register long int __g1 __asm__("g1") = (name); \ + long int _name = (long int) (name); \ register long int __o0 __asm__ ("o0") = _arg1; \ register long int __o1 __asm__ ("o1") = _arg2; \ register long int __o2 __asm__ ("o2") = _arg3; \ register long int __o3 __asm__ ("o3") = _arg4; \ - __asm __volatile (string : "=r" (__o0) : \ - "r" (__g1), "0" (__o0), "r" (__o1), \ + __asm __volatile (string : "+r" (__o0) : \ + [scn] nc (_name), "r" (__o1), \ "r" (__o2), "r" (__o3) : \ __SYSCALL_CLOBBERS); \ __o0; \ }) +#define internal_syscall4(string,name,args...) \ + _internal_syscall4(string, "i", name, args) -#define internal_syscall5(string,name,arg1,arg2,arg3,arg4,arg5) \ +#define _internal_syscall5(string,nc,name,arg1,arg2,arg3,arg4,arg5) \ ({ \ long int _arg1 = (long int) (arg1); \ long int _arg2 = (long int) (arg2); \ long int _arg3 = (long int) (arg3); \ long int _arg4 = (long int) (arg4); \ long int _arg5 = (long int) (arg5); \ - register long int __g1 __asm__("g1") = (name); \ + long int _name = (long int) (name); \ register long int __o0 __asm__ ("o0") = _arg1; \ register long int __o1 __asm__ ("o1") = _arg2; \ register long int __o2 __asm__ ("o2") = _arg3; \ register long int __o3 __asm__ ("o3") = _arg4; \ register long int __o4 __asm__ ("o4") = _arg5; \ - __asm __volatile (string : "=r" (__o0) : \ - "r" (__g1), "0" (__o0), "r" (__o1), \ + __asm __volatile (string : "+r" (__o0) : \ + [scn] nc (_name), "r" (__o1), \ "r" (__o2), "r" (__o3), "r" (__o4) : \ __SYSCALL_CLOBBERS); \ __o0; \ }) +#define internal_syscall5(string,name,args...) \ + _internal_syscall5(string, "i", name, args) -#define internal_syscall6(string,name,arg1,arg2,arg3,arg4,arg5,arg6) \ +#define _internal_syscall6(string,nc,name,arg1,arg2,arg3,arg4,arg5,arg6)\ ({ \ long int _arg1 = (long int) (arg1); \ long int _arg2 = (long int) (arg2); \ @@ -148,20 +160,22 @@ long int _arg4 = (long int) (arg4); \ long int _arg5 = (long int) (arg5); \ long int _arg6 = (long int) (arg6); \ - register long int __g1 __asm__("g1") = (name); \ + long int _name = (long int) (name); \ register long int __o0 __asm__ ("o0") = _arg1; \ register long int __o1 __asm__ ("o1") = _arg2; \ register long int __o2 __asm__ ("o2") = _arg3; \ register long int __o3 __asm__ ("o3") = _arg4; \ register long int __o4 __asm__ ("o4") = _arg5; \ register long int __o5 __asm__ ("o5") = _arg6; \ - __asm __volatile (string : "=r" (__o0) : \ - "r" (__g1), "0" (__o0), "r" (__o1), \ + __asm __volatile (string : "+r" (__o0) : \ + [scn] nc (_name), "r" (__o1), \ "r" (__o2), "r" (__o3), "r" (__o4), \ "r" (__o5) : \ __SYSCALL_CLOBBERS); \ __o0; \ }) +#define internal_syscall6(string,name,args...) \ + _internal_syscall6(string, "i", name, args) #define INLINE_CLONE_SYSCALL(arg1,arg2,arg3,arg4,arg5) \ ({ \ @@ -170,15 +184,15 @@ long int _arg3 = (long int) (arg3); \ long int _arg4 = (long int) (arg4); \ long int _arg5 = (long int) (arg5); \ + long int _name = __NR_clone; \ register long int __o0 __asm__ ("o0") = _arg1; \ register long int __o1 __asm__ ("o1") = _arg2; \ register long int __o2 __asm__ ("o2") = _arg3; \ register long int __o3 __asm__ ("o3") = _arg4; \ register long int __o4 __asm__ ("o4") = _arg5; \ - register long int __g1 __asm__ ("g1") = __NR_clone; \ __asm __volatile (__SYSCALL_STRING : \ "=r" (__o0), "=r" (__o1) : \ - "r" (__g1), "0" (__o0), "1" (__o1), \ + [scn] "i" (_name), "0" (__o0), "1" (__o1), \ "r" (__o2), "r" (__o3), "r" (__o4) : \ __SYSCALL_CLOBBERS); \ if (__glibc_unlikely ((unsigned long int) (__o0) > -4096UL)) \ diff --git a/sysdeps/unix/sysv/linux/sparc/termios_arch.h b/sysdeps/unix/sysv/linux/sparc/termios_arch.h new file mode 100644 index 0000000..f3b3f65 --- /dev/null +++ b/sysdeps/unix/sysv/linux/sparc/termios_arch.h @@ -0,0 +1,34 @@ +/* Architectural parameters for Linux termios - SPARC version + + Copyright (C) 1991-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 + <https://www.gnu.org/licenses/>. */ + +#define _TERMIOS2_NCCS 19 +#define _HAVE_TERMIOS2_C_CC_BEFORE_C_LINE 0 + +#define _HAVE_STRUCT_OLD_TERMIOS 1 + +#define OLD_NCCS 17 +struct old_termios +{ + tcflag_t c_iflag; /* input mode flags */ + tcflag_t c_oflag; /* output mode flags */ + tcflag_t c_cflag; /* control mode flags */ + tcflag_t c_lflag; /* local mode flags */ + cc_t c_line; /* line discipline */ + cc_t c_cc[OLD_NCCS]; /* control characters */ +}; diff --git a/sysdeps/unix/sysv/linux/spawn_int_def.h b/sysdeps/unix/sysv/linux/spawn_int_def.h index 604f3fb..524b320 100644 --- a/sysdeps/unix/sysv/linux/spawn_int_def.h +++ b/sysdeps/unix/sysv/linux/spawn_int_def.h @@ -1,5 +1,5 @@ /* Internal definitions for posix_spawn functionality. Linux version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/spawnattr_getcgroup_np.c b/sysdeps/unix/sysv/linux/spawnattr_getcgroup_np.c index c8f2a80..27e6664 100644 --- a/sysdeps/unix/sysv/linux/spawnattr_getcgroup_np.c +++ b/sysdeps/unix/sysv/linux/spawnattr_getcgroup_np.c @@ -1,4 +1,4 @@ -/* 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/spawnattr_setcgroup_np.c b/sysdeps/unix/sysv/linux/spawnattr_setcgroup_np.c index 1299c48..cd17ace 100644 --- a/sysdeps/unix/sysv/linux/spawnattr_setcgroup_np.c +++ b/sysdeps/unix/sysv/linux/spawnattr_setcgroup_np.c @@ -1,4 +1,4 @@ -/* 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/spawni.c b/sysdeps/unix/sysv/linux/spawni.c index f57e928..eca1a84 100644 --- a/sysdeps/unix/sysv/linux/spawni.c +++ b/sysdeps/unix/sysv/linux/spawni.c @@ -1,5 +1,5 @@ /* POSIX spawn interface. Linux version. - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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 @@ -115,7 +115,7 @@ __spawni_child (void *arguments) memset (&sa, '\0', sizeof (sa)); sigset_t hset; - __sigprocmask (SIG_BLOCK, 0, &hset); + __sigprocmask (SIG_BLOCK, NULL, &hset); for (int sig = 1; sig < _NSIG; ++sig) { if ((attr->__flags & POSIX_SPAWN_SETSIGDEF) @@ -129,7 +129,7 @@ __spawni_child (void *arguments) sa.sa_handler = SIG_IGN; else { - __libc_sigaction (sig, 0, &sa); + __libc_sigaction (sig, NULL, &sa); if (sa.sa_handler == SIG_IGN || sa.sa_handler == SIG_DFL) continue; sa.sa_handler = SIG_DFL; @@ -138,7 +138,7 @@ __spawni_child (void *arguments) else continue; - __libc_sigaction (sig, &sa, 0); + __libc_sigaction (sig, &sa, NULL); } #ifdef _POSIX_PRIORITY_SCHEDULING @@ -172,7 +172,7 @@ __spawni_child (void *arguments) goto fail; /* Execute the file actions. */ - if (file_actions != 0) + if (file_actions != NULL) { int cnt; struct rlimit64 fdlimit; @@ -383,7 +383,11 @@ __spawnix (int *pid, const char *file, args.pidfd = 0; args.xflags = xflags; - internal_signal_block_all (&args.oldmask); + /* Avoid the potential issues if caller sets a SIG_IGN for SIGABRT, calls + abort, and another thread issues posix_spawn just after the sigaction + returns. With default options (not setting POSIX_SPAWN_SETSIGDEF), the + process can still see SIG_DFL for SIGABRT, where it should be SIG_IGN. */ + __abort_lock_rdlock (&args.oldmask); /* The clone flags used will create a new child that will run in the same memory space (CLONE_VM) and the execution of calling thread will be @@ -474,7 +478,7 @@ __spawnix (int *pid, const char *file, if ((ec == 0) && (pid != NULL)) *pid = use_pidfd ? args.pidfd : new_pid; - internal_signal_restore_set (&args.oldmask); + __abort_lock_unlock (&args.oldmask); __pthread_setcancelstate (state, NULL); diff --git a/sysdeps/unix/sysv/linux/speed.c b/sysdeps/unix/sysv/linux/speed.c index 2753b02..4efb0de 100644 --- a/sysdeps/unix/sysv/linux/speed.c +++ b/sysdeps/unix/sysv/linux/speed.c @@ -1,5 +1,5 @@ /* `struct termios' speed frobnication functions. Linux version. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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 @@ -16,82 +16,351 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -#include <stddef.h> -#include <errno.h> -#include <termios.h> -#include <sysdep.h> +#include <termios_internals.h> -/* This is a gross hack around a kernel bug. If the cfsetispeed functions - is called with the SPEED argument set to zero this means use the same - speed as for output. But we don't have independent input and output - speeds and therefore cannot record this. +/* Conversions between legacy c_cflag fields and actual baud rates */ - We use an unused bit in the `c_iflag' field to keep track of this - use of `cfsetispeed'. The value here must correspond to the one used - in `tcsetattr.c'. */ -#define IBAUD0 020000000000 +/* These expressions may seem complicated; the _cbix() macro + compresses the CBAUD field into an index in the range 0-31. On most + Linux platforms, the CBAUD field is 5 bits, but the topmost bit + indicated by CBAUDEX, is discontinous with the rest. + + The resulting masks look like: + + Alpha PowerPC others + + CBAUD 0x001f 0x00ff 0x100f + CBAUDEX 0x0000 0x0010 0x1000 + + LOWCBAUD 0x001f 0x000f 0x000f + CBAUDMASK 0x001f 0x001f 0x100f + + CBAUDMASK is used to test for invalid values passed to the + compatibility functions or in termios::c_cflag on PowerPC. + + The divide-multiply sequence in the _cbix() macro gets converted + to shift and masks as necessary by the compiler. */ + +#define LOWCBAUD (CBAUD & (CBAUDEX-1)) +#define _cbix(x) (((x) & LOWCBAUD) | \ + (CBAUDEX ? ((x) & CBAUDEX)/CBAUDEX * (LOWCBAUD+1) : 0)) +#define CBAUDMASK (LOWCBAUD | CBAUDEX) + +/* Compile time sanity checks for broken CBAUD or CIBAUD definitions */ +#if CIBAUD != (CBAUD << IBSHIFT) +# error "CIBAUD should == CBAUD << IBSHIFT" +#elif CBAUDEX & (CBAUDEX-1) +# error "CBAUDEX should either be 0 or a single bit" +#elif !(CBAUD & 1) +# error "The CBAUD field should start at bit 0" +#elif CBAUDEX & ~CBAUD +# error "CBAUD should include the CBAUDEX bit" +#endif + +speed_t +___cbaud_to_speed (tcflag_t c_cflag, speed_t other) +{ + static const speed_t cbaudix_to_speed [] = + { + [0 ... _cbix(CBAUDMASK)] = -1, + [_cbix(__B0)] = 0, + [_cbix(__B50)] = 50, + [_cbix(__B75)] = 75, + [_cbix(__B110)] = 110, + [_cbix(__B134)] = 134, + [_cbix(__B150)] = 150, + [_cbix(__B200)] = 200, + [_cbix(__B300)] = 300, + [_cbix(__B600)] = 600, + [_cbix(__B1200)] = 1200, + [_cbix(__B1800)] = 1800, + [_cbix(__B2400)] = 2400, + [_cbix(__B4800)] = 4800, + [_cbix(__B9600)] = 9600, + [_cbix(__B19200)] = 19200, + [_cbix(__B38400)] = 38400, + [_cbix(__B57600)] = 57600, + [_cbix(__B115200)] = 115200, + [_cbix(__B230400)] = 230400, + [_cbix(__B460800)] = 460800, + [_cbix(__B500000)] = 500000, + [_cbix(__B576000)] = 576000, + [_cbix(__B921600)] = 921600, + [_cbix(__B1000000)] = 1000000, + [_cbix(__B1152000)] = 1152000, + [_cbix(__B1500000)] = 1500000, + [_cbix(__B2000000)] = 2000000, +#ifdef __B7200 + [_cbix(__B7200)] = 7200, +#endif +#ifdef __B14400 + [_cbix(__B14400)] = 14400, +#endif +#ifdef __B28800 + [_cbix(__B28800)] = 28800, +#endif +#ifdef __B76800 + [_cbix(__B76800)] = 76800, +#endif +#ifdef __B153600 + [_cbix(__B153600)] = 153600, +#endif +#ifdef __B307200 + [_cbix(__B307200)] = 307200, +#endif +#ifdef __B614400 + [_cbix(__B614400)] = 614400, +#endif +#ifdef __B2500000 + [_cbix(__B2500000)] = 2500000, +#endif +#ifdef __B3000000 + [_cbix(__B3000000)] = 3000000, +#endif +#ifdef __B3500000 + [_cbix(__B3500000)] = 3500000, +#endif +#ifdef __B4000000 + [_cbix(__B4000000)] = 4000000, +#endif + }; + speed_t speed; + + if (c_cflag & (tcflag_t)(~CBAUDMASK)) + return other; + + speed = cbaudix_to_speed[_cbix(c_cflag)]; + return speed == (speed_t)-1 ? other : speed; +} + +tcflag_t +___speed_to_cbaud (speed_t speed) +{ + switch (speed) { + case 0: + return __B0; + case 50: + return __B50; + case 75: + return __B75; + case 110: + return __B110; + case 134: + return __B134; + case 150: + return __B150; + case 200: + return __B200; + case 300: + return __B300; + case 600: + return __B600; + case 1200: + return __B1200; + case 1800: + return __B1800; + case 2400: + return __B2400; + case 4800: + return __B4800; + case 9600: + return __B9600; + case 19200: + return __B19200; + case 38400: + return __B38400; + case 57600: + return __B57600; + case 115200: + return __B115200; + case 230400: + return __B230400; + case 460800: + return __B460800; + case 500000: + return __B500000; + case 576000: + return __B576000; + case 921600: + return __B921600; + case 1000000: + return __B1000000; + case 1152000: + return __B1152000; + case 1500000: + return __B1500000; + case 2000000: + return __B2000000; +#ifdef __B76800 + case 76800: + return __B76800; +#endif +#ifdef __B153600 + case 153600: + return __B153600; +#endif +#ifdef __B307200 + case 307200: + return __B307200; +#endif +#ifdef __B614400 + case 614400: + return __B614400; +#endif +#ifdef __B2500000 + case 2500000: + return __B2500000; +#endif +#ifdef __B3000000 + case 3000000: + return __B3000000; +#endif +#ifdef __B3500000 + case 3500000: + return __B3500000; +#endif +#ifdef __B4000000 + case 4000000: + return __B4000000; +#endif + default: + return __BOTHER; + } +} + + +/* Canonicalize the representation of speed fields in a kernel + termios2 structure. Specifically, if there is a valid legacy cbaud + representation (not __BOTHER), use it and propagate the + corresponding speed value to ispeed/ospeed, otherwise the other way + around if possible. Finally, if the input speed is zero, copy the + output speed to the input speed. + + The kernel doesn't do this canonicalization, which can affect + legacy utilities, so do it here. + + This is used by tcgetattr() and tcsetattr(). */ +void +___termios2_canonicalize_speeds (struct termios2 *k_termios_p) +{ + k_termios_p->c_ospeed = + ___cbaud_to_speed (cbaud (k_termios_p->c_cflag), k_termios_p->c_ospeed); + k_termios_p->c_ispeed = + ___cbaud_to_speed (cibaud (k_termios_p->c_cflag), k_termios_p->c_ispeed); + + if (!k_termios_p->c_ispeed) + k_termios_p->c_ispeed = k_termios_p->c_ospeed; + + k_termios_p->c_cflag &= ~(CBAUD | CIBAUD); + k_termios_p->c_cflag |= ___speed_to_cbaud (k_termios_p->c_ospeed); + k_termios_p->c_cflag |= ___speed_to_cbaud (k_termios_p->c_ispeed) << IBSHIFT; +} /* Return the output baud rate stored in *TERMIOS_P. */ speed_t -cfgetospeed (const struct termios *termios_p) +__cfgetospeed (const struct termios *termios_p) { - return termios_p->c_cflag & (CBAUD | CBAUDEX); + return termios_p->c_ospeed; } +libc_hidden_def (__cfgetospeed) +versioned_symbol (libc, __cfgetospeed, cfgetospeed, GLIBC_2_42); -/* Return the input baud rate stored in *TERMIOS_P. - Although for Linux there is no difference between input and output - speed, the numerical 0 is a special case for the input baud rate. It - should set the input baud rate to the output baud rate. */ +/* Return the input baud rate stored in *TERMIOS_P. */ speed_t -cfgetispeed (const struct termios *termios_p) +__cfgetispeed (const struct termios *termios_p) { - return ((termios_p->c_iflag & IBAUD0) - ? 0 : termios_p->c_cflag & (CBAUD | CBAUDEX)); + return termios_p->c_ispeed; } +libc_hidden_def (__cfgetispeed) +versioned_symbol (libc, __cfgetispeed, cfgetispeed, GLIBC_2_42); /* Set the output baud rate stored in *TERMIOS_P to SPEED. */ int -cfsetospeed (struct termios *termios_p, speed_t speed) +__cfsetospeed (struct termios *termios_p, speed_t speed) { - if ((speed & ~CBAUD) != 0 - && (speed < B57600 || speed > __MAX_BAUD)) - return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL); + tcflag_t cbaud = ___speed_to_cbaud (speed); -#if _HAVE_STRUCT_TERMIOS_C_OSPEED termios_p->c_ospeed = speed; + termios_p->c_cflag &= ~CBAUD; + termios_p->c_cflag |= cbaud; + + return 0; +} +libc_hidden_def (__cfsetospeed) +versioned_symbol (libc, __cfsetospeed, cfsetospeed, GLIBC_2_42); + +/* Set the input baud rate stored in *TERMIOS_P to SPEED. */ +int +__cfsetispeed (struct termios *termios_p, speed_t speed) +{ + tcflag_t cbaud = ___speed_to_cbaud (speed); + + termios_p->c_ispeed = speed; + termios_p->c_cflag &= ~CIBAUD; + termios_p->c_cflag |= cbaud << IBSHIFT; + + return 0; +} +libc_hidden_def (__cfsetispeed) +versioned_symbol (libc, __cfsetispeed, cfsetispeed, GLIBC_2_42); + +#if _TERMIOS_OLD_COMPAT + +/* Legacy versions which returns cbaud-encoded speed_t values */ + +speed_t +attribute_compat_text_section +__old_cfgetospeed (const old_termios_t *termios_p) +{ + return cbaud (termios_p->c_cflag); +} +compat_symbol (libc, __old_cfgetospeed, cfgetospeed, GLIBC_2_0); + +speed_t +attribute_compat_text_section +__old_cfgetispeed (const old_termios_t *termios_p) +{ + return cibaud (termios_p->c_cflag); +} +compat_symbol (libc, __old_cfgetispeed, cfgetispeed, GLIBC_2_0); + +int +attribute_compat_text_section +__old_cfsetospeed (old_termios_t *termios_p, speed_t speed) +{ + speed_t real_speed = ___cbaud_to_speed (speed, -1); + if (real_speed == (speed_t)-1) + return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL); + +#if !_HAVE_STRUCT_OLD_TERMIOS + /* Otherwise this field doesn't exist in old_termios_t */ + termios_p->c_ospeed = real_speed; #endif - termios_p->c_cflag &= ~(CBAUD | CBAUDEX); + termios_p->c_cflag &= ~CBAUD; termios_p->c_cflag |= speed; return 0; } -libc_hidden_def (cfsetospeed) +compat_symbol (libc, __old_cfsetospeed, cfsetospeed, GLIBC_2_0); - -/* Set the input baud rate stored in *TERMIOS_P to SPEED. - Although for Linux there is no difference between input and output - speed, the numerical 0 is a special case for the input baud rate. It - should set the input baud rate to the output baud rate. */ int -cfsetispeed (struct termios *termios_p, speed_t speed) +attribute_compat_text_section +__old_cfsetispeed (old_termios_t *termios_p, speed_t speed) { - if ((speed & ~CBAUD) != 0 - && (speed < B57600 || speed > __MAX_BAUD)) + speed_t real_speed = ___cbaud_to_speed (speed, -1); + if (real_speed == (speed_t)-1) return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL); -#if _HAVE_STRUCT_TERMIOS_C_ISPEED - termios_p->c_ispeed = speed; +#if !_HAVE_STRUCT_OLD_TERMIOS + /* Otherwise this field doesn't exist in old_termios_t */ + termios_p->c_ispeed = real_speed; #endif - if (speed == 0) - termios_p->c_iflag |= IBAUD0; - else - { - termios_p->c_iflag &= ~IBAUD0; - termios_p->c_cflag &= ~(CBAUD | CBAUDEX); - termios_p->c_cflag |= speed; - } + termios_p->c_cflag &= ~CIBAUD; + termios_p->c_cflag |= speed << IBSHIFT; return 0; } -libc_hidden_def (cfsetispeed) +compat_symbol (libc, __old_cfsetispeed, cfsetispeed, GLIBC_2_0); + +#endif /* _TERMIOS_OLD_COMPAT */ diff --git a/sysdeps/unix/sysv/linux/splice.c b/sysdeps/unix/sysv/linux/splice.c index ab39620..9a34238 100644 --- a/sysdeps/unix/sysv/linux/splice.c +++ b/sysdeps/unix/sysv/linux/splice.c @@ -1,5 +1,5 @@ /* Splice data to/from a pipe Linux implementation. - 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/startup.h b/sysdeps/unix/sysv/linux/startup.h index 0092753..0b11bc0 100644 --- a/sysdeps/unix/sysv/linux/startup.h +++ b/sysdeps/unix/sysv/linux/startup.h @@ -1,5 +1,5 @@ /* Linux definitions of functions used by static libc main startup. - 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/stat.c b/sysdeps/unix/sysv/linux/stat.c index 21364f6..ce5175b 100644 --- a/sysdeps/unix/sysv/linux/stat.c +++ b/sysdeps/unix/sysv/linux/stat.c @@ -1,5 +1,5 @@ /* Get file status. Linux 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/stat64.c b/sysdeps/unix/sysv/linux/stat64.c index 4c8e175..61b6f5e 100644 --- a/sysdeps/unix/sysv/linux/stat64.c +++ b/sysdeps/unix/sysv/linux/stat64.c @@ -1,5 +1,5 @@ /* Get file status. Linux 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/stat_t64_cp.c b/sysdeps/unix/sysv/linux/stat_t64_cp.c index 3a07b78..a409f95 100644 --- a/sysdeps/unix/sysv/linux/stat_t64_cp.c +++ b/sysdeps/unix/sysv/linux/stat_t64_cp.c @@ -1,5 +1,5 @@ /* Struct stat/stat64 to stat/stat64 conversion for Linux. - 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/stat_t64_cp.h b/sysdeps/unix/sysv/linux/stat_t64_cp.h index 176b995..7f34f78 100644 --- a/sysdeps/unix/sysv/linux/stat_t64_cp.h +++ b/sysdeps/unix/sysv/linux/stat_t64_cp.h @@ -1,5 +1,5 @@ /* Copy to/from struct stat with and without 64-bit time_t support. - 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/statfs.c b/sysdeps/unix/sysv/linux/statfs.c index 5330063..74b0538 100644 --- a/sysdeps/unix/sysv/linux/statfs.c +++ b/sysdeps/unix/sysv/linux/statfs.c @@ -1,4 +1,4 @@ -/* 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/statfs64.c b/sysdeps/unix/sysv/linux/statfs64.c index 477dc12..fa26fa8 100644 --- a/sysdeps/unix/sysv/linux/statfs64.c +++ b/sysdeps/unix/sysv/linux/statfs64.c @@ -1,5 +1,5 @@ /* Return information about the filesystem on which FILE resides. - 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/statvfs.c b/sysdeps/unix/sysv/linux/statvfs.c index 724468c..4c7d6fc 100644 --- a/sysdeps/unix/sysv/linux/statvfs.c +++ b/sysdeps/unix/sysv/linux/statvfs.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/statvfs64.c b/sysdeps/unix/sysv/linux/statvfs64.c index 561e916..7ede175 100644 --- a/sysdeps/unix/sysv/linux/statvfs64.c +++ b/sysdeps/unix/sysv/linux/statvfs64.c @@ -1,5 +1,5 @@ /* Return information about the filesystem on which FILE resides. - Copyright (C) 1998-2024 Free Software Foundation, Inc. + Copyright (C) 1998-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/statx.c b/sysdeps/unix/sysv/linux/statx.c index a6295a1..9581ed1 100644 --- a/sysdeps/unix/sysv/linux/statx.c +++ b/sysdeps/unix/sysv/linux/statx.c @@ -1,5 +1,5 @@ /* Linux statx implementation. - 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/statx_cp.c b/sysdeps/unix/sysv/linux/statx_cp.c index ecddf6c..1afe840 100644 --- a/sysdeps/unix/sysv/linux/statx_cp.c +++ b/sysdeps/unix/sysv/linux/statx_cp.c @@ -1,5 +1,5 @@ /* Struct statx to stat/stat64 conversion for Linux. - 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/statx_cp.h b/sysdeps/unix/sysv/linux/statx_cp.h index ee73a77..13f680c 100644 --- a/sysdeps/unix/sysv/linux/statx_cp.h +++ b/sysdeps/unix/sysv/linux/statx_cp.h @@ -1,5 +1,5 @@ /* Struct statx to stat/stat64 conversion for Linux. - 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/struct_stat_time64.h b/sysdeps/unix/sysv/linux/struct_stat_time64.h index 52797de..c2efdff 100644 --- a/sysdeps/unix/sysv/linux/struct_stat_time64.h +++ b/sysdeps/unix/sysv/linux/struct_stat_time64.h @@ -1,5 +1,5 @@ /* Struct stat with 64-bit time support. - 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/symlink.c b/sysdeps/unix/sysv/linux/symlink.c index 8fe2c88..ebcb8f4 100644 --- a/sysdeps/unix/sysv/linux/symlink.c +++ b/sysdeps/unix/sysv/linux/symlink.c @@ -1,5 +1,5 @@ /* Make a new name for a file. Linux version. - 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/sync_file_range.c b/sysdeps/unix/sysv/linux/sync_file_range.c index 2a71d10..2c9f780 100644 --- a/sysdeps/unix/sysv/linux/sync_file_range.c +++ b/sysdeps/unix/sysv/linux/sync_file_range.c @@ -1,5 +1,5 @@ /* Selective file content synch'ing. - Copyright (C) 2006-2024 Free Software Foundation, Inc. + Copyright (C) 2006-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/sys/acct.h b/sysdeps/unix/sysv/linux/sys/acct.h index ab2bfb0..509b7ec 100644 --- a/sysdeps/unix/sysv/linux/sys/acct.h +++ b/sysdeps/unix/sysv/linux/sys/acct.h @@ -1,4 +1,4 @@ -/* 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/sys/epoll.h b/sysdeps/unix/sysv/linux/sys/epoll.h index 45e546f..42dbe70 100644 --- a/sysdeps/unix/sysv/linux/sys/epoll.h +++ b/sysdeps/unix/sysv/linux/sys/epoll.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2024 Free Software Foundation, Inc. +/* Copyright (C) 2002-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/sys/eventfd.h b/sysdeps/unix/sysv/linux/sys/eventfd.h index 32cd267..e236cba 100644 --- a/sysdeps/unix/sysv/linux/sys/eventfd.h +++ b/sysdeps/unix/sysv/linux/sys/eventfd.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/sys/fanotify.h b/sysdeps/unix/sysv/linux/sys/fanotify.h index f2e712b..d5a9afe 100644 --- a/sysdeps/unix/sysv/linux/sys/fanotify.h +++ b/sysdeps/unix/sysv/linux/sys/fanotify.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2010-2024 Free Software Foundation, Inc. +/* Copyright (C) 2010-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/sys/fsuid.h b/sysdeps/unix/sysv/linux/sys/fsuid.h index d51a395..3113985 100644 --- a/sysdeps/unix/sysv/linux/sys/fsuid.h +++ b/sysdeps/unix/sysv/linux/sys/fsuid.h @@ -1,4 +1,4 @@ -/* 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/sys/inotify.h b/sysdeps/unix/sysv/linux/sys/inotify.h index 566302a..8b23422 100644 --- a/sysdeps/unix/sysv/linux/sys/inotify.h +++ b/sysdeps/unix/sysv/linux/sys/inotify.h @@ -1,4 +1,4 @@ -/* 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 diff --git a/sysdeps/unix/sysv/linux/sys/kd.h b/sysdeps/unix/sysv/linux/sys/kd.h index 231c058..675dcd7 100644 --- a/sysdeps/unix/sysv/linux/sys/kd.h +++ b/sysdeps/unix/sysv/linux/sys/kd.h @@ -1,4 +1,4 @@ -/* 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/sys/klog.h b/sysdeps/unix/sysv/linux/sys/klog.h index 189dd80..c3c62ed 100644 --- a/sysdeps/unix/sysv/linux/sys/klog.h +++ b/sysdeps/unix/sysv/linux/sys/klog.h @@ -1,4 +1,4 @@ -/* 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/sys/mount.h b/sysdeps/unix/sysv/linux/sys/mount.h index e5964b5..b549e75 100644 --- a/sysdeps/unix/sysv/linux/sys/mount.h +++ b/sysdeps/unix/sysv/linux/sys/mount.h @@ -1,5 +1,5 @@ /* Header file for mounting/unmount Linux filesystems. - 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 @@ -121,7 +121,7 @@ enum MS_ACTIVE = 1 << 30, #define MS_ACTIVE MS_ACTIVE #undef MS_NOUSER - MS_NOUSER = 1 << 31 + MS_NOUSER = 1U << 31 #define MS_NOUSER MS_NOUSER }; diff --git a/sysdeps/unix/sysv/linux/sys/pci.h b/sysdeps/unix/sysv/linux/sys/pci.h index dd55553..400338c 100644 --- a/sysdeps/unix/sysv/linux/sys/pci.h +++ b/sysdeps/unix/sysv/linux/sys/pci.h @@ -1,4 +1,4 @@ -/* 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/sys/personality.h b/sysdeps/unix/sysv/linux/sys/personality.h index 40635ba..3f8971d 100644 --- a/sysdeps/unix/sysv/linux/sys/personality.h +++ b/sysdeps/unix/sysv/linux/sys/personality.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2024 Free Software Foundation, Inc. +/* Copyright (C) 2002-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/sys/pidfd.h b/sysdeps/unix/sysv/linux/sys/pidfd.h index 9f88d29..e6fc024 100644 --- a/sysdeps/unix/sysv/linux/sys/pidfd.h +++ b/sysdeps/unix/sysv/linux/sys/pidfd.h @@ -1,5 +1,5 @@ /* Wrapper for file descriptors that refers to a process functions. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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 @@ -20,6 +20,7 @@ #include <fcntl.h> #include <bits/types/siginfo_t.h> +#include <sys/ioctl.h> #define PIDFD_NONBLOCK O_NONBLOCK #define PIDFD_THREAD O_EXCL @@ -28,6 +29,19 @@ #define PIDFD_SIGNAL_THREAD_GROUP (1UL << 1) #define PIDFD_SIGNAL_PROCESS_GROUP (1UL << 2) +#define PIDFS_IOCTL_MAGIC 0xFF + +#define PIDFD_GET_CGROUP_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 1) +#define PIDFD_GET_IPC_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 2) +#define PIDFD_GET_MNT_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 3) +#define PIDFD_GET_NET_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 4) +#define PIDFD_GET_PID_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 5) +#define PIDFD_GET_PID_FOR_CHILDREN_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 6) +#define PIDFD_GET_TIME_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 7) +#define PIDFD_GET_TIME_FOR_CHILDREN_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 8) +#define PIDFD_GET_USER_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 9) +#define PIDFD_GET_UTS_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 10) + /* Returns a file descriptor that refers to the process PID. The close-on-exec is set on the file descriptor. */ extern int pidfd_open (__pid_t __pid, unsigned int __flags) __THROW; diff --git a/sysdeps/unix/sysv/linux/sys/prctl.h b/sysdeps/unix/sysv/linux/sys/prctl.h index 79a9b31..d2cdf15 100644 --- a/sysdeps/unix/sysv/linux/sys/prctl.h +++ b/sysdeps/unix/sysv/linux/sys/prctl.h @@ -1,4 +1,4 @@ -/* 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/sys/procfs.h b/sysdeps/unix/sysv/linux/sys/procfs.h index d5ec3bf..5de91f6 100644 --- a/sysdeps/unix/sysv/linux/sys/procfs.h +++ b/sysdeps/unix/sysv/linux/sys/procfs.h @@ -1,5 +1,5 @@ /* Definitions for core files and libthread_db. Generic Linux 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. diff --git a/sysdeps/unix/sysv/linux/sys/ptrace.h b/sysdeps/unix/sysv/linux/sys/ptrace.h index 6622c9c..d2ac671 100644 --- a/sysdeps/unix/sysv/linux/sys/ptrace.h +++ b/sysdeps/unix/sysv/linux/sys/ptrace.h @@ -1,5 +1,5 @@ /* `ptrace' debugger support interface. Linux 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. diff --git a/sysdeps/unix/sysv/linux/sys/quota.h b/sysdeps/unix/sysv/linux/sys/quota.h index 8121148..83a8653 100644 --- a/sysdeps/unix/sysv/linux/sys/quota.h +++ b/sysdeps/unix/sysv/linux/sys/quota.h @@ -1,5 +1,5 @@ /* This just represents the non-kernel parts of <linux/quota.h>. - Copyright (C) 1998-2024 Free Software Foundation, Inc. + Copyright (C) 1998-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/sys/raw.h b/sysdeps/unix/sysv/linux/sys/raw.h index 65fce10..5dfa9bd 100644 --- a/sysdeps/unix/sysv/linux/sys/raw.h +++ b/sysdeps/unix/sysv/linux/sys/raw.h @@ -1,4 +1,4 @@ -/* 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/sys/reboot.h b/sysdeps/unix/sysv/linux/sys/reboot.h index feda785..dc46766 100644 --- a/sysdeps/unix/sysv/linux/sys/reboot.h +++ b/sysdeps/unix/sysv/linux/sys/reboot.h @@ -1,4 +1,4 @@ -/* 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/sys/rseq.h b/sysdeps/unix/sysv/linux/sys/rseq.h index b8afab8..38fdb27 100644 --- a/sysdeps/unix/sysv/linux/sys/rseq.h +++ b/sysdeps/unix/sysv/linux/sys/rseq.h @@ -1,5 +1,5 @@ /* Restartable Sequences exported symbols. Linux header. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + 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 @@ -152,6 +152,17 @@ struct rseq Inhibit instruction sequence block restart on migration for this thread. */ uint32_t flags; + /* Restartable sequences node_id field. Updated by the kernel. Read by + user-space with single-copy atomicity semantics. This field should only + be read by the thread which registered this data structure. Aligned on + 32-bit. Contains the current NUMA node ID. */ + uint32_t node_id; + /* Restartable sequences mm_cid field. Updated by the kernel. Read by + user-space with single-copy atomicity semantics. This field should only + be read by the thread which registered this data structure. Aligned on + 32-bit. Contains the current thread's concurrency ID (allocated + uniquely within a memory map). */ + uint32_t mm_cid; } __attribute__ ((__aligned__ (32))); #endif /* __GLIBC_HAVE_KERNEL_RSEQ */ diff --git a/sysdeps/unix/sysv/linux/sys/signalfd.h b/sysdeps/unix/sysv/linux/sys/signalfd.h index 26313f9..736bbe0 100644 --- a/sysdeps/unix/sysv/linux/sys/signalfd.h +++ b/sysdeps/unix/sysv/linux/sys/signalfd.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-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/sys/swap.h b/sysdeps/unix/sysv/linux/sys/swap.h index 5b06adb..6e53956 100644 --- a/sysdeps/unix/sysv/linux/sys/swap.h +++ b/sysdeps/unix/sysv/linux/sys/swap.h @@ -1,5 +1,5 @@ /* Calls to enable and disable swapping on specified locations. Linux 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/sys/syscall.h b/sysdeps/unix/sysv/linux/sys/syscall.h index 259d7a7..781f178 100644 --- a/sysdeps/unix/sysv/linux/sys/syscall.h +++ b/sysdeps/unix/sysv/linux/sys/syscall.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/sys/sysinfo.h b/sysdeps/unix/sysv/linux/sys/sysinfo.h index e6a7cb9..e32d2de 100644 --- a/sysdeps/unix/sysv/linux/sys/sysinfo.h +++ b/sysdeps/unix/sysv/linux/sys/sysinfo.h @@ -1,4 +1,4 @@ -/* 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/sys/timerfd.h b/sysdeps/unix/sysv/linux/sys/timerfd.h index f66ece3..3c181a7 100644 --- a/sysdeps/unix/sysv/linux/sys/timerfd.h +++ b/sysdeps/unix/sysv/linux/sys/timerfd.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/sys/timex.h b/sysdeps/unix/sysv/linux/sys/timex.h index 568748d..db67ca2 100644 --- a/sysdeps/unix/sysv/linux/sys/timex.h +++ b/sysdeps/unix/sysv/linux/sys/timex.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/syscall-names.list b/sysdeps/unix/sysv/linux/syscall-names.list index 7871f93..bde20e4 100644 --- a/sysdeps/unix/sysv/linux/syscall-names.list +++ b/sysdeps/unix/sysv/linux/syscall-names.list @@ -1,5 +1,5 @@ # List of all known Linux system 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. # # The GNU C Library is free software; you can redistribute it and/or @@ -21,8 +21,8 @@ # This file can list all potential system calls. The names are only # used if the installed kernel headers also provide them. -# The list of system calls is current as of Linux 6.10. -kernel 6.10 +# The list of system calls is current as of Linux 6.15. +kernel 6.15 FAST_atomic_update FAST_cmpxchg @@ -198,6 +198,7 @@ getuid getuid32 getunwind getxattr +getxattrat getxgid getxpid getxuid @@ -241,6 +242,7 @@ linkat listen listmount listxattr +listxattrat llistxattr llseek lock @@ -314,6 +316,7 @@ olduname open open_by_handle_at open_tree +open_tree_attr openat openat2 or1k_atomic @@ -482,6 +485,7 @@ recvmmsg_time64 recvmsg remap_file_pages removexattr +removexattrat rename renameat renameat2 @@ -572,6 +576,7 @@ settimeofday setuid setuid32 setxattr +setxattrat sgetmask shmat shmctl @@ -653,6 +658,7 @@ uname unlink unlinkat unshare +uretprobe uselib userfaultfd usr26 diff --git a/sysdeps/unix/sysv/linux/syscall.c b/sysdeps/unix/sysv/linux/syscall.c index 3cff1d9..50496c7 100644 --- a/sysdeps/unix/sysv/linux/syscall.c +++ b/sysdeps/unix/sysv/linux/syscall.c @@ -1,5 +1,5 @@ /* Indirect system call. Linux generic implementation. - 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/syscall_cancel.c b/sysdeps/unix/sysv/linux/syscall_cancel.c new file mode 100644 index 0000000..2af7245 --- /dev/null +++ b/sysdeps/unix/sysv/linux/syscall_cancel.c @@ -0,0 +1,73 @@ +/* Pthread cancellation syscall bridge. Default Linux 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 <pthreadP.h> + +#warning "This implementation should be use just as reference or for bootstrapping" + +/* This is the generic version of the cancellable syscall code which + adds the label guards (__syscall_cancel_arch_{start,end}) used on SIGCANCEL + handler to check if the cancelled syscall have side-effects that need to be + returned to the caller. + + This implementation should be used as a reference one to document the + implementation constraints: + + 1. The __syscall_cancel_arch_start should point just before the test + that thread is already cancelled, + 2. The __syscall_cancel_arch_end should point to the immediate next + instruction after the syscall one. + 3. It should return the syscall value or a negative result if is has + failed, similar to INTERNAL_SYSCALL_CALL. + + The __syscall_cancel_arch_end one is because the kernel will signal + interrupted syscall with side effects by setting the signal frame program + counter (on the ucontext_t third argument from SA_SIGINFO signal handler) + right after the syscall instruction. + + For some architecture, the INTERNAL_SYSCALL_NCS macro use more instructions + to get the error condition from kernel (as for powerpc and sparc that + checks for the conditional register), or uses an out of the line helper + (ARM thumb), or uses a kernel helper gate (i686 or ia64). In this case + the architecture should either adjust the macro or provide a custom + __syscall_cancel_arch implementation. */ + +long int +__syscall_cancel_arch (volatile int *ch, __syscall_arg_t nr, + __syscall_arg_t a1, __syscall_arg_t a2, + __syscall_arg_t a3, __syscall_arg_t a4, + __syscall_arg_t a5, __syscall_arg_t a6 + __SYSCALL_CANCEL7_ARG_DEF) +{ +#define ADD_LABEL(__label) \ + asm volatile ( \ + ".global " __label "\t\n" \ + __label ":\n"); + + ADD_LABEL ("__syscall_cancel_arch_start"); + if (__glibc_unlikely (*ch & CANCELED_BITMASK)) + __syscall_do_cancel(); + + long int result = INTERNAL_SYSCALL_NCS_CALL (nr, a1, a2, a3, a4, a5, a6 + __SYSCALL_CANCEL7_ARG7); + ADD_LABEL ("__syscall_cancel_arch_end"); + if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (result))) + return -INTERNAL_SYSCALL_ERRNO (result); + return result; +} diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index 9ac42c3..f1cfe8d 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list +++ b/sysdeps/unix/sysv/linux/syscalls.list @@ -102,8 +102,8 @@ name_to_handle_at EXTRA name_to_handle_at i:isppi name_to_handle_at setns EXTRA setns i:ii setns memfd_create EXTRA memfd_create i:si memfd_create -pkey_alloc EXTRA pkey_alloc i:ii pkey_alloc -pkey_free EXTRA pkey_free i:i pkey_free +pkey_alloc EXTRA pkey_alloc i:ii __pkey_alloc pkey_alloc +pkey_free EXTRA pkey_free i:i __pkey_free pkey_free gettid EXTRA gettid Ei: __gettid gettid tgkill EXTRA tgkill i:iii __tgkill tgkill close_range - close_range i:iii __close_range close_range diff --git a/sysdeps/unix/sysv/linux/sysconf-pthread_stack_min.h b/sysdeps/unix/sysv/linux/sysconf-pthread_stack_min.h index 2a4a1eb..6cbd0b6 100644 --- a/sysdeps/unix/sysv/linux/sysconf-pthread_stack_min.h +++ b/sysdeps/unix/sysv/linux/sysconf-pthread_stack_min.h @@ -1,5 +1,5 @@ /* __get_pthread_stack_min (). Linux version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/sysconf-sigstksz.h b/sysdeps/unix/sysv/linux/sysconf-sigstksz.h index 884d27f..c4e51e3 100644 --- a/sysdeps/unix/sysv/linux/sysconf-sigstksz.h +++ b/sysdeps/unix/sysv/linux/sysconf-sigstksz.h @@ -1,5 +1,5 @@ /* sysconf_sigstksz (). Linux 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/sysconf.c b/sysdeps/unix/sysv/linux/sysconf.c index 009ca9d..1245b2a 100644 --- a/sysdeps/unix/sysv/linux/sysconf.c +++ b/sysdeps/unix/sysv/linux/sysconf.c @@ -1,5 +1,5 @@ /* Get file-specific information about a file. Linux version. - 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/sysctl.c b/sysdeps/unix/sysv/linux/sysctl.c index 903e89c..4412382 100644 --- a/sysdeps/unix/sysv/linux/sysctl.c +++ b/sysdeps/unix/sysv/linux/sysctl.c @@ -1,5 +1,5 @@ /* sysctl function stub. - 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/sysdep-cancel.h b/sysdeps/unix/sysv/linux/sysdep-cancel.h index c48a50f..96c9a90 100644 --- a/sysdeps/unix/sysv/linux/sysdep-cancel.h +++ b/sysdeps/unix/sysv/linux/sysdep-cancel.h @@ -1,5 +1,5 @@ /* Single-thread optimization definitions. Linux version. - 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. @@ -21,17 +21,5 @@ #define _SYSDEP_CANCEL_H #include <sysdep.h> -#include <tls.h> -#include <errno.h> - -/* Set cancellation mode to asynchronous. */ -extern int __pthread_enable_asynccancel (void); -libc_hidden_proto (__pthread_enable_asynccancel) -#define LIBC_CANCEL_ASYNC() __pthread_enable_asynccancel () - -/* Reset to previous cancellation mode. */ -extern void __pthread_disable_asynccancel (int oldtype); -libc_hidden_proto (__pthread_disable_asynccancel) -#define LIBC_CANCEL_RESET(oldtype) __pthread_disable_asynccancel (oldtype) #endif diff --git a/sysdeps/unix/sysv/linux/sysdep-vdso.h b/sysdeps/unix/sysv/linux/sysdep-vdso.h index 2f53ada..5a338718 100644 --- a/sysdeps/unix/sysv/linux/sysdep-vdso.h +++ b/sysdeps/unix/sysv/linux/sysdep-vdso.h @@ -1,5 +1,5 @@ /* vDSO common definition for Linux. - Copyright (C) 2015-2024 Free Software Foundation, Inc. + Copyright (C) 2015-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/sysdep.h b/sysdeps/unix/sysv/linux/sysdep.h index bf260a7..1385082 100644 --- a/sysdeps/unix/sysv/linux/sysdep.h +++ b/sysdeps/unix/sysv/linux/sysdep.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2015-2024 Free Software Foundation, Inc. +/* Copyright (C) 2015-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/tcdrain.c b/sysdeps/unix/sysv/linux/tcdrain.c index 34f8c73..8acd418 100644 --- a/sysdeps/unix/sysv/linux/tcdrain.c +++ b/sysdeps/unix/sysv/linux/tcdrain.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-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/tcflow.c b/sysdeps/unix/sysv/linux/tcflow.c index 810a2eb..afc44e6 100644 --- a/sysdeps/unix/sysv/linux/tcflow.c +++ b/sysdeps/unix/sysv/linux/tcflow.c @@ -1,5 +1,5 @@ /* tcflow -- Suspend or restart transmission on termios file descriptor. - Copyright (C) 1993-2024 Free Software Foundation, Inc. + Copyright (C) 1993-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/tcflush.c b/sysdeps/unix/sysv/linux/tcflush.c index 68b0548..587b0b9 100644 --- a/sysdeps/unix/sysv/linux/tcflush.c +++ b/sysdeps/unix/sysv/linux/tcflush.c @@ -1,5 +1,5 @@ /* tcflush -- Flush pending data on termios file descriptor. Linux version. - Copyright (C) 1993-2024 Free Software Foundation, Inc. + Copyright (C) 1993-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/tcgetattr.c b/sysdeps/unix/sysv/linux/tcgetattr.c index 68e0637..ca17569 100644 --- a/sysdeps/unix/sysv/linux/tcgetattr.c +++ b/sysdeps/unix/sysv/linux/tcgetattr.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1992-2024 Free Software Foundation, Inc. +/* Copyright (C) 1992-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 @@ -15,66 +15,56 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -#include <errno.h> -#include <string.h> -#include <termios.h> -#include <unistd.h> -#include <sys/ioctl.h> -#include <sys/types.h> -#include <sysdep.h> - -/* The difference here is that the termios structure used in the - kernel is not the same as we use in the libc. Therefore we must - translate it here. */ -#include <kernel_termios.h> +#include <termios_internals.h> /* Put the state of FD into *TERMIOS_P. */ int __tcgetattr (int fd, struct termios *termios_p) { - struct __kernel_termios k_termios; - int retval; - - retval = INLINE_SYSCALL (ioctl, 3, fd, TCGETS, &k_termios); + struct termios2 k_termios; + long int retval = INLINE_SYSCALL_CALL (ioctl, fd, TCGETS2, &k_termios); - if (__glibc_likely (retval == 0)) + if (__glibc_likely (retval != -1)) { - termios_p->c_iflag = k_termios.c_iflag; - termios_p->c_oflag = k_termios.c_oflag; - termios_p->c_cflag = k_termios.c_cflag; - termios_p->c_lflag = k_termios.c_lflag; - termios_p->c_line = k_termios.c_line; -#if _HAVE_STRUCT_TERMIOS_C_ISPEED -# if _HAVE_C_ISPEED - termios_p->c_ispeed = k_termios.c_ispeed; -# else - termios_p->c_ispeed = k_termios.c_cflag & (CBAUD | CBAUDEX); -# endif -#endif -#if _HAVE_STRUCT_TERMIOS_C_OSPEED -# if _HAVE_C_OSPEED + ___termios2_canonicalize_speeds (&k_termios); + + memset (termios_p, 0, sizeof (*termios_p)); + termios_p->c_iflag = k_termios.c_iflag; + termios_p->c_oflag = k_termios.c_oflag; + termios_p->c_cflag = k_termios.c_cflag; + termios_p->c_lflag = k_termios.c_lflag; + termios_p->c_line = k_termios.c_line; termios_p->c_ospeed = k_termios.c_ospeed; -# else - termios_p->c_ospeed = k_termios.c_cflag & (CBAUD | CBAUDEX); -# endif -#endif - if (sizeof (cc_t) == 1 || _POSIX_VDISABLE == 0 - || (unsigned char) _POSIX_VDISABLE == (unsigned char) -1) - memset (__mempcpy (&termios_p->c_cc[0], &k_termios.c_cc[0], - __KERNEL_NCCS * sizeof (cc_t)), - _POSIX_VDISABLE, (NCCS - __KERNEL_NCCS) * sizeof (cc_t)); - else - { - memcpy (&termios_p->c_cc[0], &k_termios.c_cc[0], - __KERNEL_NCCS * sizeof (cc_t)); + termios_p->c_ispeed = k_termios.c_ispeed; - for (size_t cnt = __KERNEL_NCCS; cnt < NCCS; ++cnt) - termios_p->c_cc[cnt] = _POSIX_VDISABLE; - } + copy_c_cc (termios_p->c_cc, NCCS, k_termios.c_cc, _TERMIOS2_NCCS); } return retval; } - libc_hidden_def (__tcgetattr) + +#if _TERMIOS_OLD_COMPAT && _HAVE_STRUCT_OLD_TERMIOS + +versioned_symbol (libc, __tcgetattr, tcgetattr, GLIBC_2_42); + +/* Legacy version for shorter struct termios */ +int +attribute_compat_text_section +__old_tcgetattr (int fd, old_termios_t *termios_p) +{ + struct termios new_termios; + int retval = __tcgetattr (fd, &new_termios); + if (__glibc_likely (retval != -1)) + { + memcpy (termios_p, &new_termios, sizeof (*termios_p)); + } + return retval; +} +compat_symbol (libc, __old_tcgetattr, tcgetattr, GLIBC_2_0); + +#else + weak_alias (__tcgetattr, tcgetattr) + +#endif diff --git a/sysdeps/unix/sysv/linux/tcsendbrk.c b/sysdeps/unix/sysv/linux/tcsendbrk.c index 0ad1323..738a582 100644 --- a/sysdeps/unix/sysv/linux/tcsendbrk.c +++ b/sysdeps/unix/sysv/linux/tcsendbrk.c @@ -1,5 +1,5 @@ /* Send break to terminal. - 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/tcsetattr.c b/sysdeps/unix/sysv/linux/tcsetattr.c index aea74d3..4f07a03 100644 --- a/sysdeps/unix/sysv/linux/tcsetattr.c +++ b/sysdeps/unix/sysv/linux/tcsetattr.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1993-2024 Free Software Foundation, Inc. +/* Copyright (C) 1993-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 @@ -15,67 +15,94 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -#include <errno.h> -#include <string.h> -#include <termios.h> -#include <sys/ioctl.h> -#include <sys/types.h> -#include <sysdep.h> - -/* The difference here is that the termios structure used in the - kernel is not the same as we use in the libc. Therefore we must - translate it here. */ -#include <kernel_termios.h> - - -/* This is a gross hack around a kernel bug. If the cfsetispeed functions - is called with the SPEED argument set to zero this means use the same - speed as for output. But we don't have independent input and output - speeds and therefore cannot record this. - - We use an unused bit in the `c_iflag' field to keep track of this - use of `cfsetispeed'. The value here must correspond to the one used - in `speed.c'. */ -#define IBAUD0 020000000000 +#include <termios_internals.h> +#define static_assert_equal(x,y) _Static_assert ((x) == (y), #x " != " #y) /* Set the state of FD to *TERMIOS_P. */ int __tcsetattr (int fd, int optional_actions, const struct termios *termios_p) { - struct __kernel_termios k_termios; - unsigned long int cmd; + struct termios2 k_termios; + unsigned long cmd; - switch (optional_actions) - { - case TCSANOW: - cmd = TCSETS; - break; - case TCSADRAIN: - cmd = TCSETSW; - break; - case TCSAFLUSH: - cmd = TCSETSF; - break; - default: - return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL); - } + memset (&k_termios, 0, sizeof k_termios); - k_termios.c_iflag = termios_p->c_iflag & ~IBAUD0; + k_termios.c_iflag = termios_p->c_iflag; k_termios.c_oflag = termios_p->c_oflag; k_termios.c_cflag = termios_p->c_cflag; k_termios.c_lflag = termios_p->c_lflag; - k_termios.c_line = termios_p->c_line; -#if _HAVE_C_ISPEED && _HAVE_STRUCT_TERMIOS_C_ISPEED - k_termios.c_ispeed = termios_p->c_ispeed; -#endif -#if _HAVE_C_OSPEED && _HAVE_STRUCT_TERMIOS_C_OSPEED + k_termios.c_line = termios_p->c_line; + k_termios.c_ospeed = termios_p->c_ospeed; -#endif - memcpy (&k_termios.c_cc[0], &termios_p->c_cc[0], - __KERNEL_NCCS * sizeof (cc_t)); + k_termios.c_ispeed = termios_p->c_ispeed; + + ___termios2_canonicalize_speeds (&k_termios); + + copy_c_cc (k_termios.c_cc, _TERMIOS2_NCCS, termios_p->c_cc, NCCS); + + /* + * Choose the proper ioctl number to invoke. + * + * Alpha got TCSETS2 late (Linux 4.20), but has the same structure + * format, and it only needs TCSETS2 if either it needs to use + * __BOTHER or split speed. All other architectures have TCSETS2 as + * far back as the current glibc supports. Calling TCSETS with + * __BOTHER causes unpredictable results on old Alpha kernels and + * could even crash them. + */ + static_assert_equal(TCSADRAIN, TCSANOW + 1); + static_assert_equal(TCSAFLUSH, TCSANOW + 2); + static_assert_equal(TCSETSW2, TCSETS2 + 1); + static_assert_equal(TCSETSF2, TCSETS2 + 2); + static_assert_equal(TCSETSW, TCSETS + 1); + static_assert_equal(TCSETSF, TCSETS + 2); + + cmd = (long)optional_actions - TCSANOW; + if (cmd > 2) + return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL); + + if (__ASSUME_TERMIOS2 || + k_termios.c_ospeed != k_termios.c_ispeed || + cbaud (k_termios.c_cflag) == __BOTHER) + { + cmd += TCSETS2; + } + else + { + cmd += TCSETS; + k_termios.c_cflag &= ~CIBAUD; + } + + return INLINE_SYSCALL_CALL (ioctl, fd, cmd, &k_termios); +} +libc_hidden_def (__tcsetattr) + +#if _HAVE_STRUCT_OLD_TERMIOS && _TERMIOS_OLD_COMPAT + +versioned_symbol (libc, __tcsetattr, tcsetattr, GLIBC_2_42); - return INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); +/* Legacy version for shorter struct termios without speed fields */ +int +attribute_compat_text_section +__old_tcsetattr (int fd, int optional_actions, const old_termios_t *termios_p) +{ + struct termios new_termios; + + memset (&new_termios, 0, sizeof (new_termios)); + new_termios.c_iflag = termios_p->c_iflag; + new_termios.c_oflag = termios_p->c_oflag; + new_termios.c_cflag = termios_p->c_cflag; + new_termios.c_lflag = termios_p->c_lflag; + new_termios.c_line = termios_p->c_line; + copy_c_cc(new_termios.c_cc, NCCS, termios_p->c_cc, OLD_NCCS); + + return __tcsetattr (fd, optional_actions, &new_termios); } +compat_symbol (libc, __old_tcsetattr, tcsetattr, GLIBC_2_0); + +#else + weak_alias (__tcsetattr, tcsetattr) -libc_hidden_def (tcsetattr) + +#endif diff --git a/sysdeps/unix/sysv/linux/tee.c b/sysdeps/unix/sysv/linux/tee.c index 50f6d05..f3fa57f 100644 --- a/sysdeps/unix/sysv/linux/tee.c +++ b/sysdeps/unix/sysv/linux/tee.c @@ -1,5 +1,5 @@ /* Linux duplicating pipe content implementation. - 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/telldir.c b/sysdeps/unix/sysv/linux/telldir.c index c8dff30..039d377 100644 --- a/sysdeps/unix/sysv/linux/telldir.c +++ b/sysdeps/unix/sysv/linux/telldir.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2024 Free Software Foundation, Inc. +/* Copyright (C) 1991-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/termio.h b/sysdeps/unix/sysv/linux/termio.h deleted file mode 100644 index 0e610f0..0000000 --- a/sysdeps/unix/sysv/linux/termio.h +++ /dev/null @@ -1,6 +0,0 @@ -/* Compatible <termio.h> for old `struct termio' ioctl interface. - This is obsolete; use the POSIX.1 `struct termios' interface - defined in <termios.h> instead. */ - -#include <termios.h> -#include <sys/ioctl.h> diff --git a/sysdeps/unix/sysv/linux/termios_arch.h b/sysdeps/unix/sysv/linux/termios_arch.h new file mode 100644 index 0000000..8dbf420 --- /dev/null +++ b/sysdeps/unix/sysv/linux/termios_arch.h @@ -0,0 +1,23 @@ +/* Architectural parameters for Linux termios - generic version + + 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 + 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/>. */ + +#define _TERMIOS2_NCCS 19 +#define _HAVE_TERMIOS2_C_CC_BEFORE_C_LINE 0 + +#define _HAVE_STRUCT_OLD_TERMIOS 0 diff --git a/sysdeps/unix/sysv/linux/termios_internals.h b/sysdeps/unix/sysv/linux/termios_internals.h new file mode 100644 index 0000000..e8dbfe7 --- /dev/null +++ b/sysdeps/unix/sysv/linux/termios_internals.h @@ -0,0 +1,143 @@ +/* termios functions internal implementation header for Linux + + Copyright (C) 1991-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 + <https://www.gnu.org/licenses/>. */ + +#ifndef TERMIOS_INTERNALS_H +#define TERMIOS_INTERNALS_H 1 + +#include <stddef.h> +#include <errno.h> +#include <string.h> +#include <unistd.h> +#include <termios.h> +#include <sys/ioctl.h> +#include <sys/types.h> +#include <sysdep.h> +#include <shlib-compat.h> + +#include <termios_arch.h> + +/* ---- Kernel interface definitions ---- */ + +/* The the termios2 structure used in the kernel interfaces is not the + same as the termios structure we use in the libc. Therefore we + must translate it here. */ + +struct termios2 +{ + tcflag_t c_iflag; /* input mode flags */ + tcflag_t c_oflag; /* output mode flags */ + tcflag_t c_cflag; /* control mode flags */ + tcflag_t c_lflag; /* local mode flags */ +#if _HAVE_TERMIOS2_C_CC_BEFORE_C_LINE + cc_t c_cc[_TERMIOS2_NCCS]; /* control characters */ + cc_t c_line; /* line discipline */ +#else + cc_t c_line; /* line discipline */ + cc_t c_cc[_TERMIOS2_NCCS]; /* control characters */ +#endif + speed_t c_ispeed; /* input speed */ + speed_t c_ospeed; /* output speed */ +}; + +/* Alpha got termios2 late, but TCGETS has exactly the same structure + format and function as TCGETS2. On all other platforms, the termios2 + interface exists as far back as this version of glibc supports. + + For TCSETS* it is more complicated; this is handled in tcsetattr.c. + + Some other architectures only have the equivalent of the termios2 + interface, in which case the old ioctl names are the only ones + presented, but are equivalent to the new ones. */ +#ifndef TCGETS2 +# define TCGETS2 TCGETS +# define TCSETS2 TCSETS +# define TCSETSW2 TCSETSW +# define TCSETSF2 TCSETSF +#elif !__ASSUME_TERMIOS2 +/* Hack for Alpha */ +# undef TCGETS2 +# define TCGETS2 TCGETS +#endif + +/* ---- Application interface definitions ---- */ + +/* + * Should old speed_t and struct termios (if applicable) compatibility + * functions be included? + */ +#define _TERMIOS_OLD_COMPAT SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_42) + +/* + * Old struct termios (without c_ispeed and c_ospeed fields) if + * applicable. The new struct termios *must* be binary identical up to + * the sizeof the old structure. + * + * This only applies to SPARC and MIPS; for other architectures the + * new and old speed_t interfaces both use the same struct termios. + */ +#if _HAVE_STRUCT_OLD_TERMIOS +typedef struct old_termios old_termios_t; +#else +# define OLD_NCCS NCCS +typedef struct termios old_termios_t; +#endif + +/* ---- Internal function definitions ---- */ + +/* + * Copy a set of c_cc fields of possibly different width. If the target + * field is longer, then fill with _POSIX_VDISABLE == -1. + */ +static inline void +copy_c_cc (cc_t *to, size_t nto, const cc_t *from, size_t nfrom) +{ + if (nto < nfrom) + nfrom = nto; + + to = __mempcpy (to, from, nfrom * sizeof(cc_t)); + if (nto > nfrom) + memset (to, _POSIX_VDISABLE, (nto - nfrom) * sizeof(cc_t)); +} + +/* Extract the output and input legacy speed fields from c_cflag. */ +static inline tcflag_t +cbaud (tcflag_t c_cflag) +{ + return c_cflag & CBAUD; +} + +static inline tcflag_t +cibaud (tcflag_t c_cflag) +{ + return cbaud (c_cflag >> IBSHIFT); +} + +extern speed_t +___cbaud_to_speed (tcflag_t c_cflag, speed_t other) + __attribute_const__ attribute_hidden; + +extern tcflag_t +___speed_to_cbaud (speed_t speed) + __attribute_const__ attribute_hidden; + +extern void +___termios2_canonicalize_speeds (struct termios2 *k_termios_p) + attribute_hidden; + +#endif /* TERMIOS_INTERNALS_H */ diff --git a/sysdeps/unix/sysv/linux/test-errno-linux.c b/sysdeps/unix/sysv/linux/test-errno-linux.c index de8188e..3150deb 100644 --- a/sysdeps/unix/sysv/linux/test-errno-linux.c +++ b/sysdeps/unix/sysv/linux/test-errno-linux.c @@ -1,7 +1,7 @@ /* Test that failing system calls do set errno to the correct value. Linux sycalls version. - 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/thrd_priv.h b/sysdeps/unix/sysv/linux/thrd_priv.h index dbf4472..394991d 100644 --- a/sysdeps/unix/sysv/linux/thrd_priv.h +++ b/sysdeps/unix/sysv/linux/thrd_priv.h @@ -1,5 +1,5 @@ /* Internal C11 threads definitions - linux 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/thrd_sleep.c b/sysdeps/unix/sysv/linux/thrd_sleep.c index f78776b..2dbc44f 100644 --- a/sysdeps/unix/sysv/linux/thrd_sleep.c +++ b/sysdeps/unix/sysv/linux/thrd_sleep.c @@ -1,5 +1,5 @@ /* C11 threads thread sleep implementation - Linux variant. - 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/time-clockid.h b/sysdeps/unix/sysv/linux/time-clockid.h index ae5bb5d..2397e2d 100644 --- a/sysdeps/unix/sysv/linux/time-clockid.h +++ b/sysdeps/unix/sysv/linux/time-clockid.h @@ -1,5 +1,5 @@ /* System specific time definitions. Generic Version. - Copyright 2019-2024 Free Software Foundation, Inc. + Copyright 2019-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/time.c b/sysdeps/unix/sysv/linux/time.c index f8b0cee..5a72481 100644 --- a/sysdeps/unix/sysv/linux/time.c +++ b/sysdeps/unix/sysv/linux/time.c @@ -1,5 +1,5 @@ /* time -- Get number of seconds since Epoch. Linux 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 @@ -33,11 +33,10 @@ time_syscall (time_t *t) } # undef INIT_ARCH -# define INIT_ARCH() \ - void *vdso_time = dl_vdso_vsym (HAVE_TIME_VSYSCALL); +# define INIT_ARCH() libc_ifunc (time, - vdso_time ? VDSO_IFUNC_RET (vdso_time) - : (void *) time_syscall); + GLRO(dl_vdso_time) != NULL ? VDSO_IFUNC_RET (GLRO(dl_vdso_time)) + : (void *) time_syscall); # else time_t diff --git a/sysdeps/unix/sysv/linux/timer_create.c b/sysdeps/unix/sysv/linux/timer_create.c index 2c505a5..ca377a6 100644 --- a/sysdeps/unix/sysv/linux/timer_create.c +++ b/sysdeps/unix/sysv/linux/timer_create.c @@ -1,4 +1,4 @@ -/* 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/timer_delete.c b/sysdeps/unix/sysv/linux/timer_delete.c index ad397e5..69f26b2 100644 --- a/sysdeps/unix/sysv/linux/timer_delete.c +++ b/sysdeps/unix/sysv/linux/timer_delete.c @@ -1,4 +1,4 @@ -/* 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/timer_getoverr.c b/sysdeps/unix/sysv/linux/timer_getoverr.c index dd7ad4c..676c244 100644 --- a/sysdeps/unix/sysv/linux/timer_getoverr.c +++ b/sysdeps/unix/sysv/linux/timer_getoverr.c @@ -1,4 +1,4 @@ -/* 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/timer_gettime.c b/sysdeps/unix/sysv/linux/timer_gettime.c index cc7ddd3..ff3141f 100644 --- a/sysdeps/unix/sysv/linux/timer_gettime.c +++ b/sysdeps/unix/sysv/linux/timer_gettime.c @@ -1,4 +1,4 @@ -/* 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/timer_routines.c b/sysdeps/unix/sysv/linux/timer_routines.c index 344033d..b2affaa 100644 --- a/sysdeps/unix/sysv/linux/timer_routines.c +++ b/sysdeps/unix/sysv/linux/timer_routines.c @@ -1,4 +1,4 @@ -/* 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/timer_settime.c b/sysdeps/unix/sysv/linux/timer_settime.c index 8986462..d53b858 100644 --- a/sysdeps/unix/sysv/linux/timer_settime.c +++ b/sysdeps/unix/sysv/linux/timer_settime.c @@ -1,4 +1,4 @@ -/* 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/timer_t_was_int_compat.h b/sysdeps/unix/sysv/linux/timer_t_was_int_compat.h index 4af71ed..5fbe179 100644 --- a/sysdeps/unix/sysv/linux/timer_t_was_int_compat.h +++ b/sysdeps/unix/sysv/linux/timer_t_was_int_compat.h @@ -1,5 +1,5 @@ /* timer_t/int compatibility transition. Generic version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/timerfd_gettime.c b/sysdeps/unix/sysv/linux/timerfd_gettime.c index 9991a93..004387d 100644 --- a/sysdeps/unix/sysv/linux/timerfd_gettime.c +++ b/sysdeps/unix/sysv/linux/timerfd_gettime.c @@ -1,5 +1,5 @@ /* timerfd_gettime -- get the timer setting referred to by file descriptor. - 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/timerfd_settime.c b/sysdeps/unix/sysv/linux/timerfd_settime.c index 86c49d4..8a0b3d9 100644 --- a/sysdeps/unix/sysv/linux/timerfd_settime.c +++ b/sysdeps/unix/sysv/linux/timerfd_settime.c @@ -1,5 +1,5 @@ /* timerfd_settime -- start or stop the timer referred to by file descriptor. - 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/times.c b/sysdeps/unix/sysv/linux/times.c index 9686065..2e29269 100644 --- a/sysdeps/unix/sysv/linux/times.c +++ b/sysdeps/unix/sysv/linux/times.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2008-2024 Free Software Foundation, Inc. +/* Copyright (C) 2008-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/timespec_get.c b/sysdeps/unix/sysv/linux/timespec_get.c index 778d1e3..9ed49a6 100644 --- a/sysdeps/unix/sysv/linux/timespec_get.c +++ b/sysdeps/unix/sysv/linux/timespec_get.c @@ -1,5 +1,5 @@ /* timespec_get -- get system time - Linux version supporting 64 bit time. - 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/timespec_getres.c b/sysdeps/unix/sysv/linux/timespec_getres.c index 2eef9e5..f1c915d 100644 --- a/sysdeps/unix/sysv/linux/timespec_getres.c +++ b/sysdeps/unix/sysv/linux/timespec_getres.c @@ -1,5 +1,5 @@ /* Get resolution of a time base. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/tls-internal.c b/sysdeps/unix/sysv/linux/tls-internal.c index 81ebcdf..acbfe06 100644 --- a/sysdeps/unix/sysv/linux/tls-internal.c +++ b/sysdeps/unix/sysv/linux/tls-internal.c @@ -1,5 +1,5 @@ /* Per-thread state. Linux version. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/tls-internal.h b/sysdeps/unix/sysv/linux/tls-internal.h index 8cb0d8a..5b84fdd 100644 --- a/sysdeps/unix/sysv/linux/tls-internal.h +++ b/sysdeps/unix/sysv/linux/tls-internal.h @@ -1,5 +1,5 @@ /* Per-thread state. Linux 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/truncate.c b/sysdeps/unix/sysv/linux/truncate.c index 1e5e718..f6505d6 100644 --- a/sysdeps/unix/sysv/linux/truncate.c +++ b/sysdeps/unix/sysv/linux/truncate.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2016-2024 Free Software Foundation, Inc. +/* Copyright (C) 2016-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/truncate64.c b/sysdeps/unix/sysv/linux/truncate64.c index 41b469b..799a81d 100644 --- a/sysdeps/unix/sysv/linux/truncate64.c +++ b/sysdeps/unix/sysv/linux/truncate64.c @@ -1,4 +1,4 @@ -/* 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/tst-adjtimex.c b/sysdeps/unix/sysv/linux/tst-adjtimex.c index b0e7321..945d3d9 100644 --- a/sysdeps/unix/sysv/linux/tst-adjtimex.c +++ b/sysdeps/unix/sysv/linux/tst-adjtimex.c @@ -1,5 +1,5 @@ /* Test for adjtimex. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/tst-affinity-pid.c b/sysdeps/unix/sysv/linux/tst-affinity-pid.c index c8996ef..89bb771 100644 --- a/sysdeps/unix/sysv/linux/tst-affinity-pid.c +++ b/sysdeps/unix/sysv/linux/tst-affinity-pid.c @@ -1,5 +1,5 @@ /* Test for sched_getaffinity and sched_setaffinity, PID version. - Copyright (C) 2015-2024 Free Software Foundation, Inc. + Copyright (C) 2015-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/tst-affinity.c b/sysdeps/unix/sysv/linux/tst-affinity.c index 218c02e..c0727b6 100644 --- a/sysdeps/unix/sysv/linux/tst-affinity.c +++ b/sysdeps/unix/sysv/linux/tst-affinity.c @@ -1,5 +1,5 @@ /* Single-threaded test for sched_getaffinity and sched_setaffinity. - Copyright (C) 2015-2024 Free Software Foundation, Inc. + Copyright (C) 2015-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/tst-align-clone-internal.c b/sysdeps/unix/sysv/linux/tst-align-clone-internal.c index aa06ee1..8753112 100644 --- a/sysdeps/unix/sysv/linux/tst-align-clone-internal.c +++ b/sysdeps/unix/sysv/linux/tst-align-clone-internal.c @@ -1,5 +1,5 @@ /* Verify that the clone child stack is properly aligned. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/tst-align-clone.c b/sysdeps/unix/sysv/linux/tst-align-clone.c index 1f39d81..d85375a 100644 --- a/sysdeps/unix/sysv/linux/tst-align-clone.c +++ b/sysdeps/unix/sysv/linux/tst-align-clone.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2004-2024 Free Software Foundation, Inc. +/* Copyright (C) 2004-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/tst-clock_adjtime.c b/sysdeps/unix/sysv/linux/tst-clock_adjtime.c index d37c06b..9eaf4b7 100644 --- a/sysdeps/unix/sysv/linux/tst-clock_adjtime.c +++ b/sysdeps/unix/sysv/linux/tst-clock_adjtime.c @@ -1,5 +1,5 @@ /* Test for clock_adjtime - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/tst-clock_gettime-clobber.c b/sysdeps/unix/sysv/linux/tst-clock_gettime-clobber.c index a693de1..524707d 100644 --- a/sysdeps/unix/sysv/linux/tst-clock_gettime-clobber.c +++ b/sysdeps/unix/sysv/linux/tst-clock_gettime-clobber.c @@ -1,5 +1,5 @@ /* Check that clock_gettime does not clobber errno on success. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/tst-clone.c b/sysdeps/unix/sysv/linux/tst-clone.c index 2bc7124..3e7a233 100644 --- a/sysdeps/unix/sysv/linux/tst-clone.c +++ b/sysdeps/unix/sysv/linux/tst-clone.c @@ -1,5 +1,5 @@ /* Test for proper error/errno handling in clone. - Copyright (C) 2006-2024 Free Software Foundation, Inc. + Copyright (C) 2006-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/tst-clone2-internal.c b/sysdeps/unix/sysv/linux/tst-clone2-internal.c index babfeb5..12f7218 100644 --- a/sysdeps/unix/sysv/linux/tst-clone2-internal.c +++ b/sysdeps/unix/sysv/linux/tst-clone2-internal.c @@ -1,5 +1,5 @@ /* Test if CLONE_VM does not change pthread pid/tid field (BZ #19957) - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/tst-clone2.c b/sysdeps/unix/sysv/linux/tst-clone2.c index 683a0d7..02cd539 100644 --- a/sysdeps/unix/sysv/linux/tst-clone2.c +++ b/sysdeps/unix/sysv/linux/tst-clone2.c @@ -1,5 +1,5 @@ /* Test if CLONE_VM does not change pthread pid/tid field (BZ #19957) - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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/tst-clone3-internal.c b/sysdeps/unix/sysv/linux/tst-clone3-internal.c index 2f0b200..5a41560 100644 --- a/sysdeps/unix/sysv/linux/tst-clone3-internal.c +++ b/sysdeps/unix/sysv/linux/tst-clone3-internal.c @@ -1,5 +1,5 @@ /* Check if clone (CLONE_THREAD) does not call exit_group (BZ #21512) - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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 @@ -54,7 +54,7 @@ f (void *a) } while (0) static inline int -futex_wait (int *futexp, int val) +futex_wait (_Atomic int *futexp, int val) { #ifdef __NR_futex return syscall (__NR_futex, futexp, FUTEX_WAIT, val); @@ -75,7 +75,7 @@ do_test (void) /* Initialize with a known value. ctid is set to zero by the kernel after the cloned thread has exited. */ #define CTID_INIT_VAL 1 - pid_t ctid = CTID_INIT_VAL; + _Atomic pid_t ctid = CTID_INIT_VAL; pid_t tid; struct clone_args clone_args = diff --git a/sysdeps/unix/sysv/linux/tst-clone3.c b/sysdeps/unix/sysv/linux/tst-clone3.c index 77b8731..98d56d5 100644 --- a/sysdeps/unix/sysv/linux/tst-clone3.c +++ b/sysdeps/unix/sysv/linux/tst-clone3.c @@ -1,5 +1,5 @@ /* Check if clone (CLONE_THREAD) does not call exit_group (BZ #21512) - 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 @@ -54,7 +54,7 @@ f (void *a) } while (0) static inline int -futex_wait (int *futexp, int val) +futex_wait (_Atomic int *futexp, int val) { #ifdef __NR_futex return syscall (__NR_futex, futexp, FUTEX_WAIT, val); @@ -75,7 +75,7 @@ do_test (void) /* Initialize with a known value. ctid is set to zero by the kernel after the cloned thread has exited. */ #define CTID_INIT_VAL 1 - pid_t ctid = CTID_INIT_VAL; + _Atomic pid_t ctid = CTID_INIT_VAL; pid_t tid; #if _STACK_GROWS_DOWN diff --git a/sysdeps/unix/sysv/linux/tst-epoll-ioctls.c b/sysdeps/unix/sysv/linux/tst-epoll-ioctls.c index 618ecc4..1ad58c9 100644 --- a/sysdeps/unix/sysv/linux/tst-epoll-ioctls.c +++ b/sysdeps/unix/sysv/linux/tst-epoll-ioctls.c @@ -1,5 +1,5 @@ /* Basic tests for Linux epoll ioctls. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/tst-epoll.c b/sysdeps/unix/sysv/linux/tst-epoll.c index 545f506..afe9d29 100644 --- a/sysdeps/unix/sysv/linux/tst-epoll.c +++ b/sysdeps/unix/sysv/linux/tst-epoll.c @@ -1,5 +1,5 @@ /* Basic tests for Linux epoll_* wrappers. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/tst-fallocate-common.c b/sysdeps/unix/sysv/linux/tst-fallocate-common.c index 28970df..d066712 100644 --- a/sysdeps/unix/sysv/linux/tst-fallocate-common.c +++ b/sysdeps/unix/sysv/linux/tst-fallocate-common.c @@ -1,5 +1,5 @@ /* Basic fallocate test (no specific flags is checked). - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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/tst-fallocate.c b/sysdeps/unix/sysv/linux/tst-fallocate.c index e68e7da..95eb967 100644 --- a/sysdeps/unix/sysv/linux/tst-fallocate.c +++ b/sysdeps/unix/sysv/linux/tst-fallocate.c @@ -1,5 +1,5 @@ /* Basic fallocate test (no specific flags is checked). - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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/tst-fallocate64.c b/sysdeps/unix/sysv/linux/tst-fallocate64.c index 1b53cc2..c22325a 100644 --- a/sysdeps/unix/sysv/linux/tst-fallocate64.c +++ b/sysdeps/unix/sysv/linux/tst-fallocate64.c @@ -1,5 +1,5 @@ /* Basic fallocate64 test (no specific flags is checked). - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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/tst-fanotify.c b/sysdeps/unix/sysv/linux/tst-fanotify.c index 264b1de..e630544 100644 --- a/sysdeps/unix/sysv/linux/tst-fanotify.c +++ b/sysdeps/unix/sysv/linux/tst-fanotify.c @@ -1,5 +1,5 @@ /* Basic fanotify test. - Copyright (C) 2013-2024 Free Software Foundation, Inc. + Copyright (C) 2013-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/tst-fdopendir-o_path.c b/sysdeps/unix/sysv/linux/tst-fdopendir-o_path.c index e61d67a..550a837 100644 --- a/sysdeps/unix/sysv/linux/tst-fdopendir-o_path.c +++ b/sysdeps/unix/sysv/linux/tst-fdopendir-o_path.c @@ -1,5 +1,5 @@ /* Check if fdopendir fails with file descriptor opened with O_PATH (BZ 30737) - 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/tst-getauxval.c b/sysdeps/unix/sysv/linux/tst-getauxval.c index 7979030..daf1a09 100644 --- a/sysdeps/unix/sysv/linux/tst-getauxval.c +++ b/sysdeps/unix/sysv/linux/tst-getauxval.c @@ -1,5 +1,5 @@ /* Basic test for getauxval. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/tst-getcwd-smallbuff.c b/sysdeps/unix/sysv/linux/tst-getcwd-smallbuff.c index 55362f6..8274958 100644 --- a/sysdeps/unix/sysv/linux/tst-getcwd-smallbuff.c +++ b/sysdeps/unix/sysv/linux/tst-getcwd-smallbuff.c @@ -59,7 +59,7 @@ send_fd (const int sock, const int fd) { struct cmsghdr hdr; char buf[CMSG_SPACE (sizeof (int))]; - } cmsgbuf = {0}; + } cmsgbuf = { }; struct cmsghdr *cmsg; struct iovec vec; char ch = 'A'; @@ -92,7 +92,7 @@ recv_fd (const int sock) { struct cmsghdr hdr; char buf[CMSG_SPACE(sizeof(int))]; - } cmsgbuf = {0}; + } cmsgbuf = { }; struct cmsghdr *cmsg; struct iovec vec; ssize_t n; diff --git a/sysdeps/unix/sysv/linux/tst-getdents64.c b/sysdeps/unix/sysv/linux/tst-getdents64.c index 3dd22a4..cdbd9c9 100644 --- a/sysdeps/unix/sysv/linux/tst-getdents64.c +++ b/sysdeps/unix/sysv/linux/tst-getdents64.c @@ -1,5 +1,5 @@ /* Test for reading directories with getdents64. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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 @@ -30,6 +30,7 @@ #include <sys/mman.h> #include <unistd.h> +#if __GNUC_PREREQ (5, 0) /* Called by large_buffer_checks below. */ static void large_buffer_check (int fd, char *large_buffer, size_t large_buffer_size) @@ -85,6 +86,12 @@ do_test_large_size (void) xclose (fd); } +#else +static void +do_test_large_size (void) +{ +} +#endif static void do_test_by_size (size_t buffer_size) @@ -96,6 +103,8 @@ do_test_by_size (size_t buffer_size) int fd = xopen (".", O_RDONLY | O_DIRECTORY, 0); TEST_VERIFY (fd >= 0); + char *data = xposix_memalign (_Alignof (struct dirent64), buffer_size); + /* Perform two passes, with a rewind operating between passes. */ for (int pass = 0; pass < 2; ++pass) { @@ -104,23 +113,15 @@ do_test_by_size (size_t buffer_size) while (true) { - /* Simple way to make sure that the memcpy below does not read - non-existing data. */ - struct - { - char buffer[buffer_size]; - struct dirent64 pad; - } data; - - ssize_t ret = getdents64 (fd, &data.buffer, sizeof (data.buffer)); + ssize_t ret = getdents64 (fd, data, buffer_size); if (ret < 0) FAIL_EXIT1 ("getdents64: %m"); if (ret == 0) break; ++read_count; - char *current = data.buffer; - char *end = data.buffer + ret; + char *current = data; + char *end = data + ret; while (current != end) { struct dirent64 entry; @@ -163,6 +164,8 @@ do_test_by_size (size_t buffer_size) rewinddir (reference); } + free (data); + xclose (fd); closedir (reference); } diff --git a/sysdeps/unix/sysv/linux/tst-getpid1-internal.c b/sysdeps/unix/sysv/linux/tst-getpid1-internal.c index 3f0d952..55bd615 100644 --- a/sysdeps/unix/sysv/linux/tst-getpid1-internal.c +++ b/sysdeps/unix/sysv/linux/tst-getpid1-internal.c @@ -1,5 +1,5 @@ /* Verify that the parent pid is unchanged by __clone_internal. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/tst-gettid-kill.c b/sysdeps/unix/sysv/linux/tst-gettid-kill.c index 01f439d..94a1221 100644 --- a/sysdeps/unix/sysv/linux/tst-gettid-kill.c +++ b/sysdeps/unix/sysv/linux/tst-gettid-kill.c @@ -1,5 +1,5 @@ /* Verify the interaction of kill and thread groups. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/tst-gettid.c b/sysdeps/unix/sysv/linux/tst-gettid.c index b992a58..7ee972a 100644 --- a/sysdeps/unix/sysv/linux/tst-gettid.c +++ b/sysdeps/unix/sysv/linux/tst-gettid.c @@ -1,5 +1,5 @@ /* Smoke test for the gettid system call. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/tst-gettimeofday-clobber.c b/sysdeps/unix/sysv/linux/tst-gettimeofday-clobber.c index 9699d9d..ee041d4 100644 --- a/sysdeps/unix/sysv/linux/tst-gettimeofday-clobber.c +++ b/sysdeps/unix/sysv/linux/tst-gettimeofday-clobber.c @@ -1,5 +1,5 @@ /* Check that gettimeofday does not clobber errno. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/tst-glibcsyscalls.py b/sysdeps/unix/sysv/linux/tst-glibcsyscalls.py index 034a67d..81ecdc9 100644 --- a/sysdeps/unix/sysv/linux/tst-glibcsyscalls.py +++ b/sysdeps/unix/sysv/linux/tst-glibcsyscalls.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 # Consistency checks for glibc system call lists. -# 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/tst-linux-mremap1.c b/sysdeps/unix/sysv/linux/tst-linux-mremap1.c index 408e8af..a5dce5a 100644 --- a/sysdeps/unix/sysv/linux/tst-linux-mremap1.c +++ b/sysdeps/unix/sysv/linux/tst-linux-mremap1.c @@ -1,5 +1,5 @@ /* Test mremap with MREMAP_DONTUNMAP. - 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/tst-memfd_create.c b/sysdeps/unix/sysv/linux/tst-memfd_create.c index 7b8ddca..15811cb 100644 --- a/sysdeps/unix/sysv/linux/tst-memfd_create.c +++ b/sysdeps/unix/sysv/linux/tst-memfd_create.c @@ -1,5 +1,5 @@ /* Test for the memfd_create system call. - 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/tst-misalign-clone.c b/sysdeps/unix/sysv/linux/tst-misalign-clone.c index 55abd23..a653933 100644 --- a/sysdeps/unix/sysv/linux/tst-misalign-clone.c +++ b/sysdeps/unix/sysv/linux/tst-misalign-clone.c @@ -1,5 +1,5 @@ /* Verify that the clone wrapper properly aligns the child stack. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/tst-mlock2.c b/sysdeps/unix/sysv/linux/tst-mlock2.c index 3f2b708..e3e7959 100644 --- a/sysdeps/unix/sysv/linux/tst-mlock2.c +++ b/sysdeps/unix/sysv/linux/tst-mlock2.c @@ -1,5 +1,5 @@ /* Test the mlock2 function. - Copyright (C) 2017-2024 Free Software Foundation, Inc. + Copyright (C) 2017-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 diff --git a/sysdeps/unix/sysv/linux/tst-mman-consts.py b/sysdeps/unix/sysv/linux/tst-mman-consts.py index a1137eb..24d5a23 100644 --- a/sysdeps/unix/sysv/linux/tst-mman-consts.py +++ b/sysdeps/unix/sysv/linux/tst-mman-consts.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 # Test that glibc's sys/mman.h constants match the kernel's. -# 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 @@ -33,7 +33,7 @@ def main(): help='C compiler (including options) to use') args = parser.parse_args() linux_version_headers = glibcsyscalls.linux_kernel_version(args.cc) - linux_version_glibc = (6, 10) + linux_version_glibc = (6, 13) sys.exit(glibcextract.compare_macro_consts( '#define _GNU_SOURCE 1\n' '#include <sys/mman.h>\n', diff --git a/sysdeps/unix/sysv/linux/tst-mount-compile.py b/sysdeps/unix/sysv/linux/tst-mount-compile.py index ed24b29..1931b05 100755 --- a/sysdeps/unix/sysv/linux/tst-mount-compile.py +++ b/sysdeps/unix/sysv/linux/tst-mount-compile.py @@ -1,7 +1,7 @@ #!/usr/bin/python3 # Check if glibc provided sys/mount.h can be used along related kernel # headers. -# Copyright (C) 2022-2024 Free Software Foundation, Inc. +# Copyright (C) 2022-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/tst-mount-consts.py b/sysdeps/unix/sysv/linux/tst-mount-consts.py index 675f179..9784775 100755 --- a/sysdeps/unix/sysv/linux/tst-mount-consts.py +++ b/sysdeps/unix/sysv/linux/tst-mount-consts.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 # Test that glibc's sys/mount.h constants match the kernel's. -# Copyright (C) 2022-2024 Free Software Foundation, Inc. +# Copyright (C) 2022-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 @@ -39,10 +39,10 @@ def main(): sys.exit (77) linux_version_headers = glibcsyscalls.linux_kernel_version(args.cc) - # Constants in glibc were updated to match Linux v6.10. When glibc + # Constants in glibc were updated to match Linux v6.13. When glibc # constants are updated this value should be updated to match the # released kernel version from which the constants were taken. - linux_version_glibc = (6, 10) + linux_version_glibc = (6, 13) def check(cte, exclude=None): return glibcextract.compare_macro_consts( '#include <sys/mount.h>\n', diff --git a/sysdeps/unix/sysv/linux/tst-mount.c b/sysdeps/unix/sysv/linux/tst-mount.c index 5eb5548..40913c7 100644 --- a/sysdeps/unix/sysv/linux/tst-mount.c +++ b/sysdeps/unix/sysv/linux/tst-mount.c @@ -1,5 +1,5 @@ /* Basic tests for the new Linux API added on Linux 5.2. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/nios2/vfork.S b/sysdeps/unix/sysv/linux/tst-nolink-libc.c index 897b637..817f377 100644 --- a/sysdeps/unix/sysv/linux/nios2/vfork.S +++ b/sysdeps/unix/sysv/linux/tst-nolink-libc.c @@ -1,5 +1,5 @@ -/* vfork for Nios II Linux. - Copyright (C) 2005-2024 Free Software Foundation, Inc. +/* Test program not linked against libc.so and not using any glibc functions. + Copyright (C) 2024 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 @@ -17,18 +17,9 @@ <https://www.gnu.org/licenses/>. */ #include <sysdep.h> -#include <tcb-offsets.h> -ENTRY(__vfork) - - movi r4, 0x4111 /* (CLONE_VM | CLONE_VFORK | SIGCHLD) */ - mov r5, zero - DO_CALL (clone, 2) - - bne r7, zero, SYSCALL_ERROR_LABEL - ret - -PSEUDO_END (__vfork) -libc_hidden_def (__vfork) - -weak_alias (__vfork, vfork) +void +_start (void) +{ + INTERNAL_SYSCALL_CALL (exit_group, 0); +} diff --git a/sysdeps/unix/sysv/linux/tst-ntp_adjtime.c b/sysdeps/unix/sysv/linux/tst-ntp_adjtime.c index d4e5a2a..f145525 100644 --- a/sysdeps/unix/sysv/linux/tst-ntp_adjtime.c +++ b/sysdeps/unix/sysv/linux/tst-ntp_adjtime.c @@ -1,5 +1,5 @@ /* Test for ntp_adjtime. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/tst-ntp_gettime.c b/sysdeps/unix/sysv/linux/tst-ntp_gettime.c index fd67b55..7e33445 100644 --- a/sysdeps/unix/sysv/linux/tst-ntp_gettime.c +++ b/sysdeps/unix/sysv/linux/tst-ntp_gettime.c @@ -1,5 +1,5 @@ /* Test for ntp_gettime. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/tst-ntp_gettimex.c b/sysdeps/unix/sysv/linux/tst-ntp_gettimex.c index feda890..0e8da20 100644 --- a/sysdeps/unix/sysv/linux/tst-ntp_gettimex.c +++ b/sysdeps/unix/sysv/linux/tst-ntp_gettimex.c @@ -1,5 +1,5 @@ /* Test for ntp_gettimex. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/tst-o_path-locks.c b/sysdeps/unix/sysv/linux/tst-o_path-locks.c index f085d0f..de794f9 100644 --- a/sysdeps/unix/sysv/linux/tst-o_path-locks.c +++ b/sysdeps/unix/sysv/linux/tst-o_path-locks.c @@ -1,5 +1,5 @@ /* Test that closing O_PATH descriptors does not release POSIX advisory locks. - 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/tst-ofdlocks-compat.c b/sysdeps/unix/sysv/linux/tst-ofdlocks-compat.c index 484f7d7..da10d61 100644 --- a/sysdeps/unix/sysv/linux/tst-ofdlocks-compat.c +++ b/sysdeps/unix/sysv/linux/tst-ofdlocks-compat.c @@ -1,6 +1,6 @@ /* Check non representable OFD locks regions in non-LFS mode for compat mode (BZ #20251) - Copyright (C) 2018-2024 Free Software Foundation, Inc. + Copyright (C) 2018-2025 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License diff --git a/sysdeps/unix/sysv/linux/tst-ofdlocks.c b/sysdeps/unix/sysv/linux/tst-ofdlocks.c index 2fa467a..aee1b66 100644 --- a/sysdeps/unix/sysv/linux/tst-ofdlocks.c +++ b/sysdeps/unix/sysv/linux/tst-ofdlocks.c @@ -1,5 +1,5 @@ /* Check non representable OFD locks regions in non-LFS mode (BZ #20251) - Copyright (C) 2018-2024 Free Software Foundation, Inc. + Copyright (C) 2018-2025 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License diff --git a/sysdeps/unix/sysv/linux/tst-personality.c b/sysdeps/unix/sysv/linux/tst-personality.c index 5765f23..215284d 100644 --- a/sysdeps/unix/sysv/linux/tst-personality.c +++ b/sysdeps/unix/sysv/linux/tst-personality.c @@ -1,6 +1,6 @@ /* BZ #19408 linux personality syscall wrapper test. - Copyright (C) 2015-2024 Free Software Foundation, Inc. + Copyright (C) 2015-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/tst-pidfd-consts.py b/sysdeps/unix/sysv/linux/tst-pidfd-consts.py index 9824fd2..18010fe 100644 --- a/sysdeps/unix/sysv/linux/tst-pidfd-consts.py +++ b/sysdeps/unix/sysv/linux/tst-pidfd-consts.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 # Test that glibc's sys/pidfd.h constants match the kernel's. -# Copyright (C) 2022-2024 Free Software Foundation, Inc. +# Copyright (C) 2022-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 @@ -39,7 +39,7 @@ def main(): sys.exit (77) linux_version_headers = glibcsyscalls.linux_kernel_version(args.cc) - linux_version_glibc = (6, 10) + linux_version_glibc = (6, 12) sys.exit(glibcextract.compare_macro_consts( '#include <sys/pidfd.h>\n', '#include <asm/fcntl.h>\n' diff --git a/sysdeps/unix/sysv/linux/tst-pidfd.c b/sysdeps/unix/sysv/linux/tst-pidfd.c index 2222ed5..f7e0c5d 100644 --- a/sysdeps/unix/sysv/linux/tst-pidfd.c +++ b/sysdeps/unix/sysv/linux/tst-pidfd.c @@ -1,5 +1,5 @@ /* Basic tests for Linux pidfd interfaces. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/tst-pidfd_getpid.c b/sysdeps/unix/sysv/linux/tst-pidfd_getpid.c index ef62fbe..cbccf0b 100644 --- a/sysdeps/unix/sysv/linux/tst-pidfd_getpid.c +++ b/sysdeps/unix/sysv/linux/tst-pidfd_getpid.c @@ -1,5 +1,5 @@ /* Specific tests for Linux pidfd_getpid. - 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/tst-pkey.c b/sysdeps/unix/sysv/linux/tst-pkey.c index 297a7fb..1000d8f 100644 --- a/sysdeps/unix/sysv/linux/tst-pkey.c +++ b/sysdeps/unix/sysv/linux/tst-pkey.c @@ -1,5 +1,5 @@ /* Tests for memory protection keys. - 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 @@ -120,7 +120,7 @@ sigusr1_handler (int signum) TEST_COMPARE (signum, SIGUSR1); for (int i = 0; i < key_count; ++i) TEST_VERIFY (pkey_get (keys[i]) == PKEY_DISABLE_ACCESS - || pkey_get (keys[i]) == i); + || (pkey_get (keys[i]) & i) == i); sigusr1_handler_ran = 1; } @@ -185,12 +185,13 @@ do_test (void) xmunmap (page, pagesize); } + /* Create thread before setting up key in the current thread. */ xpthread_barrier_init (&barrier, NULL, 2); bool delayed_thread_check_access = true; pthread_t delayed_thread = xpthread_create (NULL, &delayed_thread_func, &delayed_thread_check_access); - keys[0] = pkey_alloc (0, 0); + keys[0] = pkey_alloc (0, PKEY_UNRESTRICTED); if (keys[0] < 0) { if (errno == ENOSYS) @@ -212,19 +213,47 @@ do_test (void) ("glibc does not support memory protection keys"); FAIL_EXIT1 ("pkey_get: %m"); } + + /* Check that initial rights that are set via pkey_alloc + can be accessed via pkey_get. */ + { + int pkey = -1; + pkey = pkey_alloc (0, PKEY_DISABLE_ACCESS); + TEST_COMPARE (pkey_get (pkey) & PKEY_DISABLE_ACCESS, PKEY_DISABLE_ACCESS); + pkey_free (pkey); + pkey = pkey_alloc (0, PKEY_DISABLE_WRITE); + TEST_COMPARE (pkey_get (pkey) & PKEY_DISABLE_WRITE, PKEY_DISABLE_WRITE); + pkey_free (pkey); + } + + /* Check that unallocated pkey is not accepted by the + pkey_mprotect function. */ + { + int pkey = -1; + pkey = pkey_alloc (0, PKEY_DISABLE_WRITE); + pkey_free (pkey); + int *page = xmmap (NULL, pagesize, PROT_NONE, + MAP_ANONYMOUS | MAP_PRIVATE, -1); + TEST_COMPARE (pkey_mprotect (page, pagesize, PROT_READ, pkey), -1); + TEST_COMPARE (errno, EINVAL); + xmunmap (page, pagesize); + } + for (int i = 1; i < key_count; ++i) { + /* i == 1 corresponds to PKEY_DISABLE_ACCESS + i == 2 corresponds to PKEY_DISABLE_WRITE */ keys[i] = pkey_alloc (0, i); if (keys[i] < 0) FAIL_EXIT1 ("pkey_alloc (0, %d): %m", i); /* pkey_alloc is supposed to change the current thread's access rights for the new key. */ - TEST_COMPARE (pkey_get (keys[i]), i); + TEST_COMPARE (pkey_get (keys[i]) & i, i); } /* Check that all the keys have the expected access rights for the current thread. */ for (int i = 0; i < key_count; ++i) - TEST_COMPARE (pkey_get (keys[i]), i); + TEST_COMPARE (pkey_get (keys[i]) & i, i); /* Allocate a test page for each key. */ for (int i = 0; i < key_count; ++i) @@ -241,12 +270,12 @@ do_test (void) pthread_barrier_wait (&barrier); struct thread_result *result = xpthread_join (delayed_thread); for (int i = 0; i < key_count; ++i) - TEST_COMPARE (result->access_rights[i], - PKEY_DISABLE_ACCESS); + TEST_COMPARE (result->access_rights[i] & + PKEY_DISABLE_ACCESS, PKEY_DISABLE_ACCESS); struct thread_result *result2 = xpthread_join (result->next_thread); for (int i = 0; i < key_count; ++i) - TEST_COMPARE (result->access_rights[i], - PKEY_DISABLE_ACCESS); + TEST_COMPARE (result->access_rights[i] & + PKEY_DISABLE_ACCESS, PKEY_DISABLE_ACCESS); free (result); free (result2); } @@ -257,12 +286,12 @@ do_test (void) pthread_t get_thread = xpthread_create (NULL, get_thread_func, NULL); struct thread_result *result = xpthread_join (get_thread); for (int i = 0; i < key_count; ++i) - TEST_COMPARE (result->access_rights[i], i); + TEST_COMPARE (result->access_rights[i] & i, i); free (result); } for (int i = 0; i < key_count; ++i) - TEST_COMPARE (pkey_get (keys[i]), i); + TEST_COMPARE (pkey_get (keys[i]) & i, i); /* Check that in a signal handler, there is no access. */ xsignal (SIGUSR1, &sigusr1_handler); @@ -281,7 +310,7 @@ do_test (void) printf ("info: checking access for key %d, bits 0x%x\n", i, pkey_get (keys[i])); for (int j = 0; j < key_count; ++j) - TEST_COMPARE (pkey_get (keys[j]), j); + TEST_COMPARE (pkey_get (keys[j]) & j, j); if (i & PKEY_DISABLE_ACCESS) { TEST_VERIFY (!check_page_access (i, false)); @@ -304,7 +333,7 @@ do_test (void) if (i == allowed_key) { if (do_write) - TEST_COMPARE (pkey_set (keys[i], 0), 0); + TEST_COMPARE (pkey_set (keys[i], PKEY_UNRESTRICTED), 0); else TEST_COMPARE (pkey_set (keys[i], PKEY_DISABLE_WRITE), 0); } @@ -331,7 +360,7 @@ do_test (void) inherit that access. */ for (int i = 0; i < key_count; ++i) { - TEST_COMPARE (pkey_set (keys[i], 0), 0); + TEST_COMPARE (pkey_set (keys[i], PKEY_UNRESTRICTED), 0); TEST_VERIFY (check_page_access (i, false)); TEST_VERIFY (check_page_access (i, true)); } @@ -355,7 +384,7 @@ do_test (void) not what happens in practice. */ { /* The limit is in place to avoid running indefinitely in case - there many keys available. */ + there are many keys available. */ int *keys_array = xcalloc (100000, sizeof (*keys_array)); int keys_allocated = 0; while (keys_allocated < 100000) diff --git a/sysdeps/unix/sysv/linux/tst-posix_spawn-setsid-pidfd.c b/sysdeps/unix/sysv/linux/tst-posix_spawn-setsid-pidfd.c index 30edc58..1131050 100644 --- a/sysdeps/unix/sysv/linux/tst-posix_spawn-setsid-pidfd.c +++ b/sysdeps/unix/sysv/linux/tst-posix_spawn-setsid-pidfd.c @@ -1,5 +1,5 @@ /* Tests for spawn pidfd extension. - 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/tst-ppoll.c b/sysdeps/unix/sysv/linux/tst-ppoll.c index 392eb32..a00b6b8 100644 --- a/sysdeps/unix/sysv/linux/tst-ppoll.c +++ b/sysdeps/unix/sysv/linux/tst-ppoll.c @@ -1,5 +1,5 @@ /* Test for ppoll timeout - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/tst-prctl.c b/sysdeps/unix/sysv/linux/tst-prctl.c index 337c502..137dd37 100644 --- a/sysdeps/unix/sysv/linux/tst-prctl.c +++ b/sysdeps/unix/sysv/linux/tst-prctl.c @@ -1,5 +1,5 @@ /* Smoke test for prctl. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/tst-process_madvise.c b/sysdeps/unix/sysv/linux/tst-process_madvise.c index 05599b1..34da3c4 100644 --- a/sysdeps/unix/sysv/linux/tst-process_madvise.c +++ b/sysdeps/unix/sysv/linux/tst-process_madvise.c @@ -1,5 +1,5 @@ /* Basic tests for Linux process_madvise. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/tst-process_mrelease.c b/sysdeps/unix/sysv/linux/tst-process_mrelease.c index 35031bc..0c14a6a 100644 --- a/sysdeps/unix/sysv/linux/tst-process_mrelease.c +++ b/sysdeps/unix/sysv/linux/tst-process_mrelease.c @@ -1,5 +1,5 @@ /* Basic tests for Linux process_mrelease. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/tst-quota.c b/sysdeps/unix/sysv/linux/tst-quota.c index 7c34f93..0205332 100644 --- a/sysdeps/unix/sysv/linux/tst-quota.c +++ b/sysdeps/unix/sysv/linux/tst-quota.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2016-2024 Free Software Foundation, Inc. +/* Copyright (C) 2016-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/tst-readdir64-compat.c b/sysdeps/unix/sysv/linux/tst-readdir64-compat.c index 16c60d5..1075687 100644 --- a/sysdeps/unix/sysv/linux/tst-readdir64-compat.c +++ b/sysdeps/unix/sysv/linux/tst-readdir64-compat.c @@ -1,5 +1,5 @@ /* Test readdir64 compatibility symbol. - 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/tst-rlimit-infinity.c b/sysdeps/unix/sysv/linux/tst-rlimit-infinity.c index 2d88c0d..a207b91 100644 --- a/sysdeps/unix/sysv/linux/tst-rlimit-infinity.c +++ b/sysdeps/unix/sysv/linux/tst-rlimit-infinity.c @@ -1,4 +1,4 @@ -/* 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/tst-rseq-disable-static.c b/sysdeps/unix/sysv/linux/tst-rseq-disable-static.c new file mode 100644 index 0000000..2687d13 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tst-rseq-disable-static.c @@ -0,0 +1 @@ +#include "tst-rseq-disable.c" diff --git a/sysdeps/unix/sysv/linux/tst-rseq-disable.c b/sysdeps/unix/sysv/linux/tst-rseq-disable.c index bbc655b..8e9c11f 100644 --- a/sysdeps/unix/sysv/linux/tst-rseq-disable.c +++ b/sysdeps/unix/sysv/linux/tst-rseq-disable.c @@ -1,5 +1,5 @@ /* Test disabling of rseq registration via tunable. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + 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 @@ -26,32 +26,82 @@ #include <unistd.h> #ifdef RSEQ_SIG +# include <sys/auxv.h> +# include <dl-tls.h> +# include "tst-rseq.h" + +/* Used to test private registration with the rseq system call because glibc + rseq is disabled. */ +static __thread struct rseq local_rseq = { + .cpu_id = RSEQ_CPU_ID_REGISTRATION_FAILED, +}; + +/* Used to check if the address of the rseq area comes before or after the tls + blocks depending on the TLS model. */ +static __thread char tls_var __attribute__ ((tls_model ("initial-exec"))); /* Check that rseq can be registered and has not been taken by glibc. */ static void check_rseq_disabled (void) { - struct pthread *pd = THREAD_SELF; + struct rseq *rseq_abi = (struct rseq *) ((char *) __thread_pointer () + + __rseq_offset); + +#if TLS_TCB_AT_TP + /* The rseq area block should come before the thread pointer and be at least + 32 bytes. */ + TEST_VERIFY (__rseq_offset <= -RSEQ_AREA_SIZE_INITIAL); + + /* The rseq area block should come before TLS variables. */ + TEST_VERIFY ((intptr_t) rseq_abi < (intptr_t) &tls_var); +#elif TLS_DTV_AT_TP + /* The rseq area block should come after the TCB, add the TLS block offset to + the rseq offset to get a value relative to the TCB and test that it's + non-negative. */ + TEST_VERIFY (__rseq_offset + TLS_TP_OFFSET >= 0); + + /* The rseq area block should come after TLS variables. */ + TEST_VERIFY ((intptr_t) rseq_abi > (intptr_t) &tls_var); +#else +# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined" +#endif + /* __rseq_flags is unused and should always be '0'. */ TEST_COMPARE (__rseq_flags, 0); - TEST_VERIFY ((char *) __thread_pointer () + __rseq_offset - == (char *) &pd->rseq_area); + + /* When rseq is not registered, __rseq_size should always be '0'. */ TEST_COMPARE (__rseq_size, 0); - TEST_COMPARE ((int) pd->rseq_area.cpu_id, RSEQ_CPU_ID_REGISTRATION_FAILED); - int ret = syscall (__NR_rseq, &pd->rseq_area, sizeof (pd->rseq_area), - 0, RSEQ_SIG); + /* When rseq is not registered, the 'cpu_id' field should be set to + RSEQ_CPU_ID_REGISTRATION_FAILED. */ + TEST_COMPARE ((int) rseq_abi->cpu_id, RSEQ_CPU_ID_REGISTRATION_FAILED); + + /* Test a rseq registration which should succeed since the internal + registration is disabled. */ + int ret = syscall (__NR_rseq, &local_rseq, RSEQ_AREA_SIZE_INITIAL, 0, RSEQ_SIG); if (ret == 0) { - ret = syscall (__NR_rseq, &pd->rseq_area, sizeof (pd->rseq_area), + /* A successful registration should set the cpu id. */ + TEST_VERIFY (local_rseq.cpu_id >= 0); + + /* Test we can also unregister rseq. */ + ret = syscall (__NR_rseq, &local_rseq, RSEQ_AREA_SIZE_INITIAL, RSEQ_FLAG_UNREGISTER, RSEQ_SIG); TEST_COMPARE (ret, 0); - pd->rseq_area.cpu_id = RSEQ_CPU_ID_REGISTRATION_FAILED; } else { - TEST_VERIFY (errno != -EINVAL); - TEST_VERIFY (errno != -EBUSY); + /* Check if we failed with EINVAL which would mean an invalid rseq flags, + a mis-aligned rseq area address or an incorrect rseq size. */ + TEST_VERIFY (errno != EINVAL); + + /* Check if we failed with EBUSY which means an existing rseq + registration. */ + TEST_VERIFY (errno != EBUSY); + + /* Check if we failed with EFAULT which means an invalid rseq area + address. */ + TEST_VERIFY (errno != EFAULT); } } @@ -71,6 +121,13 @@ proc_func (void *ignored) static int do_test (void) { + printf ("info: __rseq_size: %u\n", __rseq_size); + printf ("info: __rseq_offset: %td\n", __rseq_offset); + printf ("info: __rseq_flags: %u\n", __rseq_flags); + printf ("info: getauxval (AT_RSEQ_FEATURE_SIZE): %ld\n", + getauxval (AT_RSEQ_FEATURE_SIZE)); + printf ("info: getauxval (AT_RSEQ_ALIGN): %ld\n", getauxval (AT_RSEQ_ALIGN)); + puts ("info: checking main thread"); check_rseq_disabled (); diff --git a/sysdeps/unix/sysv/linux/tst-rseq-nptl-static.c b/sysdeps/unix/sysv/linux/tst-rseq-nptl-static.c new file mode 100644 index 0000000..6e2c923 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tst-rseq-nptl-static.c @@ -0,0 +1 @@ +#include "tst-rseq-nptl.c" diff --git a/sysdeps/unix/sysv/linux/tst-rseq-nptl.c b/sysdeps/unix/sysv/linux/tst-rseq-nptl.c index b9f4984..bbe62f8 100644 --- a/sysdeps/unix/sysv/linux/tst-rseq-nptl.c +++ b/sysdeps/unix/sysv/linux/tst-rseq-nptl.c @@ -1,5 +1,5 @@ /* Restartable Sequences NPTL test. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + 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 @@ -28,6 +28,11 @@ #include <sys/rseq.h> #include <unistd.h> +/* Set this in 'do_test' only so as to invoke the destructor test in + the test process only and not 'support_test_main' parent. Otherwise + the test harness may hang in the destructor if something goes wrong. */ +static int run_destructor_test; + #ifdef RSEQ_SIG # include <array_length.h> # include <errno.h> @@ -236,6 +241,9 @@ do_rseq_test (void) static void __attribute__ ((destructor)) do_rseq_destructor_test (void) { + if (!run_destructor_test) + return; + /* Cannot use deferred failure reporting after main returns. */ if (do_rseq_test ()) FAIL_EXIT1 ("rseq not registered within destructor"); @@ -254,6 +262,7 @@ do_rseq_test (void) static int do_test (void) { + run_destructor_test = 1; return do_rseq_test (); } diff --git a/sysdeps/unix/sysv/linux/tst-rseq-static.c b/sysdeps/unix/sysv/linux/tst-rseq-static.c new file mode 100644 index 0000000..1d97f3b --- /dev/null +++ b/sysdeps/unix/sysv/linux/tst-rseq-static.c @@ -0,0 +1 @@ +#include "tst-rseq.c" diff --git a/sysdeps/unix/sysv/linux/tst-rseq-tls-range-4096-static.c b/sysdeps/unix/sysv/linux/tst-rseq-tls-range-4096-static.c new file mode 100644 index 0000000..5ad2853 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tst-rseq-tls-range-4096-static.c @@ -0,0 +1 @@ +#include "tst-rseq-tls-range.c" diff --git a/sysdeps/unix/sysv/linux/tst-rseq-tls-range-4096.c b/sysdeps/unix/sysv/linux/tst-rseq-tls-range-4096.c new file mode 100644 index 0000000..5ad2853 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tst-rseq-tls-range-4096.c @@ -0,0 +1 @@ +#include "tst-rseq-tls-range.c" diff --git a/sysdeps/unix/sysv/linux/tst-rseq-tls-range-mod.c b/sysdeps/unix/sysv/linux/tst-rseq-tls-range-mod.c new file mode 100644 index 0000000..165e468 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tst-rseq-tls-range-mod.c @@ -0,0 +1 @@ +__thread int mod_thread_var __attribute__ ((tls_model ("initial-exec"))); diff --git a/sysdeps/unix/sysv/linux/tst-rseq-tls-range-static.c b/sysdeps/unix/sysv/linux/tst-rseq-tls-range-static.c new file mode 100644 index 0000000..5ad2853 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tst-rseq-tls-range-static.c @@ -0,0 +1 @@ +#include "tst-rseq-tls-range.c" diff --git a/sysdeps/unix/sysv/linux/tst-rseq-tls-range.c b/sysdeps/unix/sysv/linux/tst-rseq-tls-range.c new file mode 100644 index 0000000..5891e5f --- /dev/null +++ b/sysdeps/unix/sysv/linux/tst-rseq-tls-range.c @@ -0,0 +1,195 @@ +/* Verify that TLS blocks and the rseq area do not overlap. + Copyright (C) 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 <array_length.h> +#include <elf.h> +#include <link.h> +#include <stdbool.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <support/check.h> +#include <support/xdlfcn.h> +#include <sys/auxv.h> +#include <sys/param.h> +#include <sys/rseq.h> +#include <thread_pointer.h> +#include <unistd.h> + +/* Used to keep track of address ranges. The ranges are sorted and + then checked for overlap. */ + +struct address_range +{ + const char *prefix; + const char *label; + uintptr_t start; + size_t length; +}; + +struct address_range ranges[20]; +size_t range_count; + +static void +add_range (const char *prefix, const char *label, + const void *start, size_t length) +{ + TEST_VERIFY (start != NULL); + TEST_VERIFY (length > 0); + TEST_VERIFY_EXIT (range_count < array_length (ranges)); + ranges[range_count].prefix = prefix; + ranges[range_count].label = label; + ranges[range_count].start = (uintptr_t) start; + ranges[range_count].length = length; + ++range_count; +} + +static int +range_compare (const void *a1, const void *b1) +{ + const struct address_range *a = a1; + const struct address_range *b = b1; + if (a->start < b->start) + return -1; + if (a->start > b->start) + return 1; + return 0; +} + +static void +check_for_overlap (void) +{ + qsort (ranges, range_count, sizeof (ranges[0]), range_compare); + uintptr_t previous_end = ranges[0].start + ranges[0].length - 1; + for (size_t i = 1; i < range_count; ++i) + { + uintptr_t this_end = ranges[i].start + ranges[i].length - 1; + if (ranges[i].start <= previous_end) + { + puts ("error: overlap between address ranges"); + printf (" %s%s: [0x%lx, 0x%lx)\n", + ranges[i - 1].prefix, ranges[i - 1].label, + (unsigned long int) ranges[i - 1].start, + (unsigned long int) previous_end); + printf (" %s%s: [0x%lx, 0x%lx)\n", + ranges[i].prefix, ranges[i].label, + (unsigned long int) ranges[i].start, + (unsigned long int) this_end); + } + previous_end = this_end; + } +} + +static void +add_rseq (void) +{ + /* The initial size of 32 bytes is always allocated. The value + reported by __rseq_size does not include the alignment, which can + be larger than 32 if requested by the kernel through the + auxiliary vector. */ + size_t size = 32; + if (__rseq_size > 0) + size = roundup (__rseq_size, MAX (getauxval (AT_RSEQ_ALIGN), 32)); + + printf ("info: adding rseq area of %zu bytes\n", size); + add_range ("", "rseq area", + (char *) __thread_pointer () + __rseq_offset, size); +} + +/* These functions add the TLS data for all loaded modules to the + recorded address ranges. */ + +static int +dlip_callback (struct dl_phdr_info *info, size_t size, void *ignored) +{ + /* If the dynamic linker does not provide TLS address information, + there is nothing to register. */ + if (info->dlpi_tls_data == NULL) + return 0; + + for (int i = 0; i < info->dlpi_phnum; ++i) + { + if (info->dlpi_phdr[i].p_type == PT_TLS) + { + printf ("info: adding TLS range for \"%s\" (%zu bytes)\n", + info->dlpi_name, (size_t) info->dlpi_phdr[i].p_memsz); + add_range ("TLS for ", + info->dlpi_name[0] != '\0' ? info->dlpi_name : "main", + info->dlpi_tls_data, info->dlpi_phdr[i].p_memsz); + break; + } + } + return 0; +} + +/* Returns true if any TLS ranges were found. */ +static void +add_tls_ranges (void) +{ + dl_iterate_phdr (dlip_callback, NULL); +} + +volatile __thread int thread_var __attribute__ ((aligned (MAIN_TLS_ALIGN))); + +static int +do_test (void) +{ + void *original_brk = sbrk (0); + void *initial_allocation = malloc (16); + + /* Ensure that the variable is not optimized away. */ + thread_var = 0; + + printf ("info: rseq area size: %u\n", __rseq_size); + + puts ("info: checking address ranges with initially loaded modules"); + add_range ("", "program break", original_brk, 1); + add_range ("", "malloc allocation", initial_allocation, 16); + add_rseq (); + add_tls_ranges (); + printf ("info: %zu ranges found\n", range_count); + check_for_overlap (); + range_count = 0; + + puts ("info: checking address ranges after dlopen"); + void *handle = xdlopen ("tst-rseq-tls-range-mod.so", RTLD_NOW); + int *mod_thread_var = xdlsym (handle, "mod_thread_var"); + add_range ("", "program break", original_brk, 1); + add_range ("", "malloc allocation", initial_allocation, 16); + add_rseq (); + add_tls_ranges (); + { + bool found_objects = false; + for (size_t i = 0; i < range_count; ++i) + if (strchr (ranges[i].label, '/') != NULL) + found_objects = true; + if (!found_objects) + /* __tls_get_addr does not fully work with static dlopen. + Add some fall-back test data. */ + add_range ("", "mod_thread_var", + mod_thread_var, sizeof (*mod_thread_var)); + } + printf ("info: %zu ranges found\n", range_count); + check_for_overlap (); + xdlclose (handle); + + free (initial_allocation); + return 0; +} + +#include <support/test-driver.c> diff --git a/sysdeps/unix/sysv/linux/tst-rseq.c b/sysdeps/unix/sysv/linux/tst-rseq.c index 08a9533..00181cf 100644 --- a/sysdeps/unix/sysv/linux/tst-rseq.c +++ b/sysdeps/unix/sysv/linux/tst-rseq.c @@ -1,5 +1,5 @@ /* Restartable Sequences single-threaded tests. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + 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 @@ -19,6 +19,8 @@ not linked against libpthread. */ #include <support/check.h> +#include <support/namespace.h> +#include <support/xthread.h> #include <stdio.h> #include <sys/rseq.h> #include <unistd.h> @@ -32,23 +34,82 @@ # include <sys/auxv.h> # include <thread_pointer.h> # include <tls.h> +# include <dl-tls.h> +# include <sys/auxv.h> # include "tst-rseq.h" +/* Used to check if the address of the rseq area comes before or after the tls + blocks depending on the TLS model. */ +static __thread char tls_var __attribute__ ((tls_model ("initial-exec"))); + static void do_rseq_main_test (void) { - struct pthread *pd = THREAD_SELF; + size_t rseq_align = MAX (getauxval (AT_RSEQ_ALIGN), RSEQ_MIN_ALIGN); + size_t rseq_feature_size = MAX (getauxval (AT_RSEQ_FEATURE_SIZE), + RSEQ_AREA_SIZE_INITIAL_USED); + size_t rseq_alloc_size = roundup (MAX (rseq_feature_size, + RSEQ_AREA_SIZE_INITIAL_USED), rseq_align); + struct rseq *rseq_abi = __thread_pointer () + __rseq_offset; TEST_VERIFY_EXIT (rseq_thread_registered ()); + + /* __rseq_flags is unused and should always be '0'. */ TEST_COMPARE (__rseq_flags, 0); - TEST_VERIFY ((char *) __thread_pointer () + __rseq_offset - == (char *) &pd->rseq_area); - /* The current implementation only supports the initial size. */ - TEST_COMPARE (__rseq_size, 20); + + /* When rseq is registered, __rseq_size should report the feature size. */ + TEST_COMPARE (__rseq_size, rseq_feature_size); + + /* When rseq is registered, the 'cpu_id' field should be set to a valid cpu + * number. */ + TEST_VERIFY ((int32_t) rseq_abi->cpu_id >= 0); + + /* The rseq area address must be aligned. */ + TEST_VERIFY (((unsigned long) rseq_abi % rseq_align) == 0); + +#if TLS_TCB_AT_TP + /* The rseq area block should come before the thread pointer and be at least + 32 bytes. */ + TEST_VERIFY (__rseq_offset <= -RSEQ_AREA_SIZE_INITIAL); + + /* The rseq area block should come before TLS variables. */ + TEST_VERIFY ((intptr_t) rseq_abi < (intptr_t) &tls_var); +#elif TLS_DTV_AT_TP + /* The rseq area block should come after the TCB, add the TLS block offset to + the rseq offset to get a value relative to the TCB and test that it's + non-negative. */ + TEST_VERIFY (__rseq_offset + TLS_TP_OFFSET >= 0); + + /* The rseq area block should come after TLS variables. */ + TEST_VERIFY ((intptr_t) rseq_abi > (intptr_t) &tls_var); +#else +# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined" +#endif + + /* Test a rseq registration with the same arguments as the internal + registration which should fail with errno == EBUSY. */ + TEST_VERIFY (((unsigned long) rseq_abi % rseq_align) == 0); + TEST_VERIFY (__rseq_size <= rseq_alloc_size); + int ret = syscall (__NR_rseq, rseq_abi, rseq_alloc_size, 0, RSEQ_SIG); + TEST_VERIFY (ret != 0); + TEST_COMPARE (errno, EBUSY); +} + +static void * +thread_func (void *ignored) +{ + do_rseq_main_test (); + return NULL; } static void -do_rseq_test (void) +proc_func (void *ignored) +{ + do_rseq_main_test (); +} + +static int +do_test (void) { if (!rseq_available ()) { @@ -60,21 +121,27 @@ do_rseq_test (void) printf ("info: getauxval (AT_RSEQ_FEATURE_SIZE): %ld\n", getauxval (AT_RSEQ_FEATURE_SIZE)); printf ("info: getauxval (AT_RSEQ_ALIGN): %ld\n", getauxval (AT_RSEQ_ALIGN)); + + puts ("info: checking main thread"); + do_rseq_main_test (); + + puts ("info: checking main thread (2)"); do_rseq_main_test (); + + puts ("info: checking new thread"); + xpthread_join (xpthread_create (NULL, thread_func, NULL)); + + puts ("info: checking subprocess"); + support_isolate_in_subprocess (proc_func, NULL); + + return 0; } #else /* RSEQ_SIG */ -static void -do_rseq_test (void) -{ - FAIL_UNSUPPORTED ("glibc does not define RSEQ_SIG, skipping test"); -} -#endif /* RSEQ_SIG */ - static int do_test (void) { - do_rseq_test (); - return 0; + FAIL_UNSUPPORTED ("glibc does not define RSEQ_SIG, skipping test"); } +#endif /* RSEQ_SIG */ #include <support/test-driver.c> diff --git a/sysdeps/unix/sysv/linux/tst-rseq.h b/sysdeps/unix/sysv/linux/tst-rseq.h index dc60332..812accc 100644 --- a/sysdeps/unix/sysv/linux/tst-rseq.h +++ b/sysdeps/unix/sysv/linux/tst-rseq.h @@ -1,5 +1,5 @@ /* Restartable Sequences tests header. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + 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 @@ -23,11 +23,12 @@ #include <syscall.h> #include <sys/rseq.h> #include <tls.h> +#include <rseq-internal.h> static inline bool rseq_thread_registered (void) { - return THREAD_GETMEM_VOLATILE (THREAD_SELF, rseq_area.cpu_id) >= 0; + return RSEQ_GETMEM_ONCE (cpu_id) >= 0; } static inline int diff --git a/sysdeps/unix/sysv/linux/tst-sched-affinity-inheritance.c b/sysdeps/unix/sysv/linux/tst-sched-affinity-inheritance.c new file mode 100644 index 0000000..8a42d27 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tst-sched-affinity-inheritance.c @@ -0,0 +1,72 @@ +/* CPU Affinity inheritance test - sched_{gs}etaffinity. + Copyright The GNU Toolchain Authors. + 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 + <https://www.gnu.org/licenses/>. */ + +/* See top level comment in nptl/tst-skeleton-affinity-inheritance.c for a + description of this test. */ + +#include <sched.h> +#include <string.h> +#include <stdio.h> +#include <support/check.h> + +static void +set_my_affinity (size_t size, const cpu_set_t *set) +{ + int ret = sched_setaffinity (0, size, set); + + if (ret != 0) + FAIL ("sched_setaffinity returned %d (%s)", ret, strerror (ret)); +} + +static void +verify_my_affinity (int nproc, int nproc_configured, size_t size, + const cpu_set_t *expected_set) +{ + cpu_set_t *set = CPU_ALLOC (nproc_configured); + cpu_set_t *xor_set = CPU_ALLOC (nproc_configured); + + if (set == NULL || xor_set== NULL) + FAIL_EXIT1 ("verify_my_affinity: Failed to allocate cpuset: %m\n"); + + int ret = sched_getaffinity (0, size, set); + if (ret != 0) + FAIL ("sched_getaffinity returned %d (%s)", ret, strerror (ret)); + + CPU_XOR_S (size, xor_set, expected_set, set); + + int cpucount = CPU_COUNT_S (size, xor_set); + + if (cpucount > 0) + { + FAIL ("Affinity mask not inherited, " + "following %d CPUs mismatched in the expected and actual sets:\n", + cpucount); + for (int cur = 0; cur < nproc && cpucount >= 0; cur++) + if (CPU_ISSET_S (size, cur, xor_set)) + { + printf ("%d ", cur); + cpucount--; + } + printf ("\n"); + } + + CPU_FREE (set); + CPU_FREE (xor_set); +} + +#include <nptl/tst-skeleton-affinity-inheritance.c> diff --git a/sysdeps/unix/sysv/linux/tst-sched-consts.py b/sysdeps/unix/sysv/linux/tst-sched-consts.py new file mode 100644 index 0000000..da13c5e --- /dev/null +++ b/sysdeps/unix/sysv/linux/tst-sched-consts.py @@ -0,0 +1,56 @@ +#!/usr/bin/python3 +# Test that glibc's sched.h constants match the kernel's. +# 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 +# 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/>. + +import argparse +import sys + +import glibcextract +import glibcsyscalls + + +def main(): + """The main entry point.""" + parser = argparse.ArgumentParser( + description="Test that glibc's sched.h constants " + "match the kernel's.") + parser.add_argument('--cc', metavar='CC', + help='C compiler (including options) to use') + args = parser.parse_args() + linux_version_headers = glibcsyscalls.linux_kernel_version(args.cc) + linux_version_glibc = (6, 13) + sys.exit(glibcextract.compare_macro_consts( + '#define _GNU_SOURCE 1\n' + '#include <sched.h>\n', + '#define _GNU_SOURCE 1\n' + '#include <linux/sched.h>\n' + '#include <linux/sched/types.h>\n', + args.cc, + 'SCHED_.*', + # SCHED_ISO is reserved, but not implemented in the kernel. + # SCHED_OTHER is the standard name for SCHED_NORMAL. + # SCHED_FLAG_ALL will receive more and more flags, so + # exposing it to userspace does not seem useful. + 'SCHED_ISO' + '|SCHED_OTHER' + '|SCHED_FLAG_ALL', + linux_version_glibc > linux_version_headers, + linux_version_headers > linux_version_glibc)) + +if __name__ == '__main__': + main() diff --git a/sysdeps/unix/sysv/linux/tst-sched_setattr-thread.c b/sysdeps/unix/sysv/linux/tst-sched_setattr-thread.c new file mode 100644 index 0000000..4600be9 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tst-sched_setattr-thread.c @@ -0,0 +1,116 @@ +/* Test for sched_setattr, sched_getattr involving multiple threads. + 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 + 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 <sched.h> + +#include <stddef.h> +#include <stdio.h> +#include <support/check.h> +#include <support/xthread.h> +#include <unistd.h> + +enum { initial_nice_value = 15 }; + +/* Check that thread TID has nice value EXPECTED. */ +static void +check_nice_value (int tid, int expected) +{ + struct sched_attr attr; + if (sched_getattr (tid, &attr, sizeof (attr), 0) != 0) + FAIL_EXIT1 ("sched_getattr (%d) failed: %m", tid); + TEST_COMPARE (attr.sched_policy, SCHED_OTHER); + int nice_value = attr.sched_nice; + if (attr.sched_nice != expected) + FAIL_EXIT1 ("thread %d: expected nice value %d, got %d" + " (called from thread %d)", + tid, expected, nice_value, (int) gettid ()); + printf ("info: thread %d: nice value %d (called from thread %d)\n", + tid, nice_value, (int) gettid ()); +} + +/* Set the nice value for TID to VALUE. */ +static void +set_nice_value (int tid, int value) +{ + struct sched_attr attr = + { + .size = sizeof (attr), + .sched_policy = SCHED_OTHER, + .sched_nice = value, + }; + if (sched_setattr (tid, &attr, 0) != 0) + FAIL_EXIT1 ("sched_setattr (%d) failed: %m", tid); +} + +static pthread_barrier_t barrier; + +static void * +thread_routine (void *nice_value_ptr) +{ + int nice_value = *(int *) nice_value_ptr; + /* Check that the nice value was inherited. */ + check_nice_value (gettid (), initial_nice_value); + xpthread_barrier_wait (&barrier); + /* Main thread sets nice value. */ + xpthread_barrier_wait (&barrier); + check_nice_value (gettid (), nice_value); + set_nice_value (gettid (), nice_value + 2); + xpthread_barrier_wait (&barrier); + /* Main thread sets checks value. */ + xpthread_barrier_wait (&barrier); + return NULL; +} + +static int +do_test (void) +{ + if (nice (initial_nice_value) != initial_nice_value) + FAIL_UNSUPPORTED ("cannot set nice value to initial_nice_value: %m"); + + xpthread_barrier_init (&barrier, NULL, 3); + + check_nice_value (0, initial_nice_value); + check_nice_value (gettid (), initial_nice_value); + + int nice0 = initial_nice_value + 1; + pthread_t thr0 = xpthread_create (NULL, thread_routine, &nice0); + int nice1 = initial_nice_value + 2; + pthread_t thr1 = xpthread_create (NULL, thread_routine, &nice1); + check_nice_value (pthread_gettid_np (thr0), initial_nice_value); + check_nice_value (pthread_gettid_np (thr1), initial_nice_value); + xpthread_barrier_wait (&barrier); + set_nice_value (pthread_gettid_np (thr0), nice0); + check_nice_value (pthread_gettid_np (thr0), nice0); + check_nice_value (pthread_gettid_np (thr1), initial_nice_value); + set_nice_value (pthread_gettid_np (thr1), nice1); + check_nice_value (pthread_gettid_np (thr0), nice0); + check_nice_value (pthread_gettid_np (thr1), nice1); + xpthread_barrier_wait (&barrier); + /* Threads set nice value. */ + xpthread_barrier_wait (&barrier); + check_nice_value (pthread_gettid_np (thr0), nice0 + 2); + check_nice_value (pthread_gettid_np (thr1), nice1 + 2); + xpthread_barrier_wait (&barrier); + + TEST_VERIFY (xpthread_join (thr1) == NULL); + TEST_VERIFY (xpthread_join (thr0) == NULL); + + return 0; +} + +#include <support/test-driver.c> diff --git a/sysdeps/unix/sysv/linux/tst-sched_setattr.c b/sysdeps/unix/sysv/linux/tst-sched_setattr.c new file mode 100644 index 0000000..bf8d9af --- /dev/null +++ b/sysdeps/unix/sysv/linux/tst-sched_setattr.c @@ -0,0 +1,96 @@ +/* Tests for sched_setattr and sched_getattr. + 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 + 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 <sched.h> + +#include <errno.h> +#include <stddef.h> +#include <string.h> +#include <support/check.h> +#include <sys/resource.h> +#include <unistd.h> + +/* Padding struct to detect unexpected writes. */ +union +{ + struct sched_attr attr; + /* Hopefully the kernel will never need as much. */ + unsigned char padding[4096]; +} u; + +static int +do_test (void) +{ + _Static_assert (SCHED_OTHER == SCHED_NORMAL, + "SCHED_OTHER, SCHED_NORMAL values"); + TEST_VERIFY (sizeof (struct sched_attr) < sizeof (u)); + + /* Check that reading and re-applying the current policy works. */ + memset (&u, 0xcc, sizeof (u)); + /* Compiler barrier to bypass write access attribute. */ + volatile unsigned int size = sizeof (u); + TEST_COMPARE (sched_getattr (0, (struct sched_attr *) &u, size, 0), 0); + TEST_COMPARE (sched_setattr (0, &u.attr, 0), 0); /* Apply unchanged. */ + + /* Try to switch to the SCHED_OTHER policy. */ + memset (&u, 0, sizeof (u)); + u.attr.size = sizeof (u); /* With padding, kernel should accept zeroes. */ + u.attr.sched_policy = SCHED_OTHER; /* Should be the default. */ + { + errno = 0; + int prio = getpriority (PRIO_PROCESS, 0); + if (errno != 0) + prio = 0; + u.attr.sched_nice = prio; + } + TEST_COMPARE (sched_setattr (0, &u.attr, 0), 0); + + /* Non-zero values not known to the kernel result in an E2BIG error. */ + memset (&u, 0, sizeof (u)); + TEST_COMPARE (sched_getattr (0, (struct sched_attr *) &u, size, 0), 0); + u.padding[u.attr.size] = 0xcc; + u.attr.size = sizeof (u); + errno = 0; + TEST_COMPARE (sched_setattr (0, &u.attr, 0), -1); + TEST_COMPARE (errno, E2BIG); + + memset (&u, 0xcc, sizeof (u)); + TEST_COMPARE (sched_getattr (0, (struct sched_attr *) &u, size, 0), 0); + TEST_COMPARE (u.attr.sched_policy, SCHED_OTHER); + + /* Raise the niceless level to 19 and observe its effect. */ + TEST_COMPARE (nice (19), 19); + TEST_COMPARE (sched_getattr (0, &u.attr, sizeof (u.attr), 0), 0); + TEST_COMPARE (u.attr.sched_policy, SCHED_OTHER); + TEST_COMPARE (u.attr.sched_nice, 19); + + /* Invalid buffer arguments result in EINVAL (not EFAULT). */ + { + errno = 0; + void *volatile null_pointer = NULL; /* compiler barrier. */ + TEST_COMPARE (sched_setattr (0, null_pointer, 0), -1); + TEST_COMPARE (errno, EINVAL); + errno = 0; + TEST_COMPARE (sched_getattr (0, null_pointer, size, 0), -1); + TEST_COMPARE (errno, EINVAL); + } + + return 0; +} + +#include <support/test-driver.c> diff --git a/sysdeps/unix/sysv/linux/tst-scm_rights.c b/sysdeps/unix/sysv/linux/tst-scm_rights.c index 23ccdad..99d4c8b 100644 --- a/sysdeps/unix/sysv/linux/tst-scm_rights.c +++ b/sysdeps/unix/sysv/linux/tst-scm_rights.c @@ -1,5 +1,5 @@ /* Smoke test for SCM_RIGHTS. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/tst-sem_getvalue-affinity.c b/sysdeps/unix/sysv/linux/tst-sem_getvalue-affinity.c new file mode 100644 index 0000000..07c5434 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tst-sem_getvalue-affinity.c @@ -0,0 +1,185 @@ +/* Test sem_getvalue across CPUs. Based on tst-skeleton-thread-affinity.c. + Copyright (C) 2015-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 + <https://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <pthread.h> +#include <semaphore.h> +#include <stdbool.h> +#include <stdlib.h> +#include <support/xthread.h> +#include <sys/time.h> + +struct conf; +static bool early_test (struct conf *); + +static int +setaffinity (size_t size, const cpu_set_t *set) +{ + int ret = pthread_setaffinity_np (pthread_self (), size, set); + if (ret != 0) + { + errno = ret; + return -1; + } + return 0; +} + +static int +getaffinity (size_t size, cpu_set_t *set) +{ + int ret = pthread_getaffinity_np (pthread_self (), size, set); + if (ret != 0) + { + errno = ret; + return -1; + } + return 0; +} + +#include "tst-skeleton-affinity.c" + +static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; +static sem_t sem; + +static void * +tf (void *arg) +{ + void *ret = NULL; + xpthread_mutex_lock (&lock); + int semval; + if (sem_getvalue (&sem, &semval) != 0) + { + printf ("sem_getvalue failed: %m\n"); + ret = (void *) 1; + } + else if (semval != 12345) + { + printf ("sem_getvalue returned %d not 12345\n", semval); + ret = (void *) 1; + } + xpthread_mutex_unlock (&lock); + return ret; +} + +static int +stop_and_join_threads (struct conf *conf, cpu_set_t *set, + pthread_t *pinned_first, pthread_t *pinned_last) +{ + int failed = 0; + for (pthread_t *p = pinned_first; p < pinned_last; ++p) + { + int cpu = p - pinned_first; + if (!CPU_ISSET_S (cpu, CPU_ALLOC_SIZE (conf->set_size), set)) + continue; + + void *retval = (void *) 1; + int ret = pthread_join (*p, &retval); + if (ret != 0) + { + printf ("error: Failed to join thread %d: %s\n", cpu, strerror (ret)); + fflush (stdout); + /* Cannot shut down cleanly with threads still running. */ + abort (); + } + if (retval != NULL) + failed = 1; + } + return failed; +} + +static bool +early_test (struct conf *conf) +{ + int ret; + ret = sem_init (&sem, 0, 12345); + if (ret != 0) + { + printf ("error: sem_init failed: %m\n"); + return false; + } + xpthread_mutex_lock (&lock); + pthread_t *pinned_threads + = calloc (conf->last_cpu + 1, sizeof (*pinned_threads)); + cpu_set_t *initial_set = CPU_ALLOC (conf->set_size); + cpu_set_t *scratch_set = CPU_ALLOC (conf->set_size); + + if (pinned_threads == NULL || initial_set == NULL || scratch_set == NULL) + { + puts ("error: Memory allocation failure"); + return false; + } + if (getaffinity (CPU_ALLOC_SIZE (conf->set_size), initial_set) < 0) + { + printf ("error: pthread_getaffinity_np failed: %m\n"); + return false; + } + + pthread_attr_t attr; + ret = pthread_attr_init (&attr); + if (ret != 0) + { + printf ("error: pthread_attr_init failed: %s\n", strerror (ret)); + return false; + } + support_set_small_thread_stack_size (&attr); + + /* Spawn a thread pinned to each available CPU. */ + for (int cpu = 0; cpu <= conf->last_cpu; ++cpu) + { + if (!CPU_ISSET_S (cpu, CPU_ALLOC_SIZE (conf->set_size), initial_set)) + continue; + CPU_ZERO_S (CPU_ALLOC_SIZE (conf->set_size), scratch_set); + CPU_SET_S (cpu, CPU_ALLOC_SIZE (conf->set_size), scratch_set); + ret = pthread_attr_setaffinity_np + (&attr, CPU_ALLOC_SIZE (conf->set_size), scratch_set); + if (ret != 0) + { + printf ("error: pthread_attr_setaffinity_np for CPU %d failed: %s\n", + cpu, strerror (ret)); + stop_and_join_threads (conf, initial_set, + pinned_threads, pinned_threads + cpu); + return false; + } + ret = pthread_create (pinned_threads + cpu, &attr, + tf, (void *) (uintptr_t) cpu); + if (ret != 0) + { + printf ("error: pthread_create for CPU %d failed: %s\n", + cpu, strerror (ret)); + stop_and_join_threads (conf, initial_set, + pinned_threads, pinned_threads + cpu); + return false; + } + } + + /* Main thread. */ + xpthread_mutex_unlock (&lock); + int failed = stop_and_join_threads (conf, initial_set, + pinned_threads, + pinned_threads + conf->last_cpu + 1); + + printf ("info: Main thread ran on %d CPU(s) of %d available CPU(s)\n", + CPU_COUNT_S (CPU_ALLOC_SIZE (conf->set_size), scratch_set), + CPU_COUNT_S (CPU_ALLOC_SIZE (conf->set_size), initial_set)); + + pthread_attr_destroy (&attr); + CPU_FREE (scratch_set); + CPU_FREE (initial_set); + free (pinned_threads); + return failed == 0; +} diff --git a/sysdeps/unix/sysv/linux/tst-sigcontext-get_pc.c b/sysdeps/unix/sysv/linux/tst-sigcontext-get_pc.c index ea375f9..f895641 100644 --- a/sysdeps/unix/sysv/linux/tst-sigcontext-get_pc.c +++ b/sysdeps/unix/sysv/linux/tst-sigcontext-get_pc.c @@ -1,5 +1,5 @@ /* Test that the GET_PC macro is consistent with the unwinder. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/tst-signal-numbers.py b/sysdeps/unix/sysv/linux/tst-signal-numbers.py index 0e05036..fed2125 100644 --- a/sysdeps/unix/sysv/linux/tst-signal-numbers.py +++ b/sysdeps/unix/sysv/linux/tst-signal-numbers.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 # Test that glibc's signal numbers match the kernel's. -# 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/tst-sigtimedwait.c b/sysdeps/unix/sysv/linux/tst-sigtimedwait.c index c2cb795..bfdc14b 100644 --- a/sysdeps/unix/sysv/linux/tst-sigtimedwait.c +++ b/sysdeps/unix/sysv/linux/tst-sigtimedwait.c @@ -1,5 +1,5 @@ /* Test for sigtimedwait timeout. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/tst-skeleton-affinity.c b/sysdeps/unix/sysv/linux/tst-skeleton-affinity.c index 31a15b3..cf97c3f 100644 --- a/sysdeps/unix/sysv/linux/tst-skeleton-affinity.c +++ b/sysdeps/unix/sysv/linux/tst-skeleton-affinity.c @@ -1,5 +1,5 @@ /* Generic test case for CPU affinity functions. - Copyright (C) 2015-2024 Free Software Foundation, Inc. + Copyright (C) 2015-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 @@ -38,6 +38,7 @@ #include <sched.h> #include <stdbool.h> #include <stdio.h> +#include <support/test-driver.h> /* CPU set configuration determined. Can be used from early_test. */ struct conf @@ -157,7 +158,7 @@ test_size (const struct conf *conf, size_t size) if (setaffinity (kernel_size, initial_set) < 0) { printf ("error: size %zu: setaffinity: %m\n", size); - return true; + return false; } /* Use one-CPU set to test switching between CPUs. */ @@ -253,12 +254,12 @@ do_test (void) if (getaffinity (sizeof (set), &set) < 0 && errno == ENOSYS) { puts ("warning: getaffinity not supported, test cannot run"); - return 0; + return EXIT_UNSUPPORTED; } if (sched_getcpu () < 0 && errno == ENOSYS) { puts ("warning: sched_getcpu not supported, test cannot run"); - return 0; + return EXIT_UNSUPPORTED; } } diff --git a/sysdeps/unix/sysv/linux/tst-skeleton-thread-affinity.c b/sysdeps/unix/sysv/linux/tst-skeleton-thread-affinity.c index 5a1e844..cf43340 100644 --- a/sysdeps/unix/sysv/linux/tst-skeleton-thread-affinity.c +++ b/sysdeps/unix/sysv/linux/tst-skeleton-thread-affinity.c @@ -1,5 +1,5 @@ /* Generic test for CPU affinity functions, multi-threaded variant. - Copyright (C) 2015-2024 Free Software Foundation, Inc. + Copyright (C) 2015-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 @@ -45,10 +45,14 @@ static int still_running; /* 0 if no scheduling failures, 1 if failures are encountered. */ static int failed; +/* Used to synchronize the threads. */ +static pthread_barrier_t barrier; + static void * thread_burn_one_cpu (void *closure) { int cpu = (uintptr_t) closure; + xpthread_barrier_wait (&barrier); while (__atomic_load_n (&still_running, __ATOMIC_RELAXED) == 0) { int current = sched_getcpu (); @@ -61,6 +65,11 @@ thread_burn_one_cpu (void *closure) __atomic_store_n (&still_running, 1, __ATOMIC_RELAXED); } } + if (sched_yield () != 0) + { + printf ("error: sched_yield() failed for cpu %d\n", cpu); + __atomic_store_n (&failed, 1, __ATOMIC_RELAXED); + } return NULL; } @@ -78,6 +87,7 @@ thread_burn_any_cpu (void *closure) { struct burn_thread *param = closure; + xpthread_barrier_wait (&barrier); /* Schedule this thread around a bit to see if it lands on another CPU. Run this for 2 seconds, once with sched_yield, once without. */ @@ -99,7 +109,11 @@ thread_burn_any_cpu (void *closure) CPU_SET_S (cpu, CPU_ALLOC_SIZE (param->conf->set_size), param->seen_set); if (pass == 1) - sched_yield (); + if (sched_yield () != 0) + { + printf ("error: sched_yield() failed for cpu %d\n", cpu); + __atomic_store_n (&failed, 1, __ATOMIC_RELAXED); + } } } return NULL; @@ -156,6 +170,7 @@ early_test (struct conf *conf) = calloc (conf->last_cpu + 1, sizeof (*other_threads)); cpu_set_t *initial_set = CPU_ALLOC (conf->set_size); cpu_set_t *scratch_set = CPU_ALLOC (conf->set_size); + int num_available_cpus = 0; if (pinned_threads == NULL || other_threads == NULL || initial_set == NULL || scratch_set == NULL) @@ -172,6 +187,7 @@ early_test (struct conf *conf) { if (!CPU_ISSET_S (cpu, CPU_ALLOC_SIZE (conf->set_size), initial_set)) continue; + num_available_cpus ++; other_threads[cpu].conf = conf; other_threads[cpu].initial_set = initial_set; other_threads[cpu].thread = cpu; @@ -194,6 +210,15 @@ early_test (struct conf *conf) } support_set_small_thread_stack_size (&attr); + /* This count assumes that all the threads below are created + successfully, and call pthread_barrier_wait(). If any threads + fail to be created, this function will return FALSE (failure) and + the waiting threads will eventually time out the whole test. + This is acceptable because we're not testing thread creation and + assume all threads will be created, and failure here implies a + failure outside the test's scope. */ + xpthread_barrier_init (&barrier, NULL, num_available_cpus * 2 + 1); + /* Spawn a thread pinned to each available CPU. */ for (int cpu = 0; cpu <= conf->last_cpu; ++cpu) { @@ -245,6 +270,15 @@ early_test (struct conf *conf) } } + /* Test that sched_yield() works correctly in the main thread. This + also gives the kernel an opportunity to run the other threads, + randomizing thread startup a bit. */ + if (sched_yield () != 0) + { + printf ("error: sched_yield() failed for main thread\n"); + __atomic_store_n (&failed, 1, __ATOMIC_RELAXED); + } + /* Main thread. */ struct burn_thread main_thread; main_thread.conf = conf; diff --git a/sysdeps/unix/sysv/linux/tst-socket-consts.py b/sysdeps/unix/sysv/linux/tst-socket-consts.py index e5eab91..b7b916a 100644 --- a/sysdeps/unix/sysv/linux/tst-socket-consts.py +++ b/sysdeps/unix/sysv/linux/tst-socket-consts.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 # Test that glibc's sys/socket.h SO_* constants match the kernel's. -# 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/tst-socket-timestamp-compat.c b/sysdeps/unix/sysv/linux/tst-socket-timestamp-compat.c index e0fb28d..1b073c3 100644 --- a/sysdeps/unix/sysv/linux/tst-socket-timestamp-compat.c +++ b/sysdeps/unix/sysv/linux/tst-socket-timestamp-compat.c @@ -1,5 +1,5 @@ /* Check recvmsg/recvmmsg 64-bit timestamp support. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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 @@ -76,7 +76,7 @@ do_recvmsg_ancillary (bool use_multi_call, struct mmsghdr *mmhdr, static void do_test_large_buffer (bool mc) { - struct mmsghdr mmhdr = { 0 }; + struct mmsghdr mmhdr = { }; /* It should be large enough for either timeval/timespec and the 64 time type as well. */ @@ -147,7 +147,7 @@ do_test_large_buffer (bool mc) static void do_test_small_buffer (bool mc) { - struct mmsghdr mmhdr = { 0 }; + struct mmsghdr mmhdr = { }; /* Enable 32 bit timeval precision and check if no 64 bit timeval stamp is created. */ diff --git a/sysdeps/unix/sysv/linux/tst-socket-timestamp.c b/sysdeps/unix/sysv/linux/tst-socket-timestamp.c index e5981f0..f8c849c 100644 --- a/sysdeps/unix/sysv/linux/tst-socket-timestamp.c +++ b/sysdeps/unix/sysv/linux/tst-socket-timestamp.c @@ -1,5 +1,5 @@ /* Check recvmsg/recvmmsg 64-bit timestamp support. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-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/tst-spawn-cgroup.c b/sysdeps/unix/sysv/linux/tst-spawn-cgroup.c index 3b9516f..b85dc5c 100644 --- a/sysdeps/unix/sysv/linux/tst-spawn-cgroup.c +++ b/sysdeps/unix/sysv/linux/tst-spawn-cgroup.c @@ -1,5 +1,5 @@ /* Tests for posix_spawn cgroup extension. - 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/tst-spawn-chdir-pidfd.c b/sysdeps/unix/sysv/linux/tst-spawn-chdir-pidfd.c index 94ed155..7aed4a5 100644 --- a/sysdeps/unix/sysv/linux/tst-spawn-chdir-pidfd.c +++ b/sysdeps/unix/sysv/linux/tst-spawn-chdir-pidfd.c @@ -1,5 +1,5 @@ /* Tests for spawn pidfd extension. - 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/tst-spawn-pidfd.c b/sysdeps/unix/sysv/linux/tst-spawn-pidfd.c index 81ae548..58edbaa 100644 --- a/sysdeps/unix/sysv/linux/tst-spawn-pidfd.c +++ b/sysdeps/unix/sysv/linux/tst-spawn-pidfd.c @@ -1,5 +1,5 @@ /* Tests for spawn pidfd extension. - 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/tst-spawn-pidfd.h b/sysdeps/unix/sysv/linux/tst-spawn-pidfd.h index 25e402a..94007a8 100644 --- a/sysdeps/unix/sysv/linux/tst-spawn-pidfd.h +++ b/sysdeps/unix/sysv/linux/tst-spawn-pidfd.h @@ -1,5 +1,5 @@ /* Tests for spawn pidfd extension. - 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/tst-spawn2-pidfd.c b/sysdeps/unix/sysv/linux/tst-spawn2-pidfd.c index 28d7071..5b22285 100644 --- a/sysdeps/unix/sysv/linux/tst-spawn2-pidfd.c +++ b/sysdeps/unix/sysv/linux/tst-spawn2-pidfd.c @@ -1,5 +1,5 @@ /* Tests for spawn pidfd extension. - 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/tst-spawn3-pidfd.c b/sysdeps/unix/sysv/linux/tst-spawn3-pidfd.c index bddaf9c..5e55e70 100644 --- a/sysdeps/unix/sysv/linux/tst-spawn3-pidfd.c +++ b/sysdeps/unix/sysv/linux/tst-spawn3-pidfd.c @@ -1,5 +1,5 @@ /* Check posix_spawn add file actions. - 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/tst-spawn4-pidfd.c b/sysdeps/unix/sysv/linux/tst-spawn4-pidfd.c index 12e2a50..8146a21 100644 --- a/sysdeps/unix/sysv/linux/tst-spawn4-pidfd.c +++ b/sysdeps/unix/sysv/linux/tst-spawn4-pidfd.c @@ -1,5 +1,5 @@ /* Tests for spawn pidfd extension. - 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/tst-spawn5-pidfd.c b/sysdeps/unix/sysv/linux/tst-spawn5-pidfd.c index fb3ef0a..7b279c7 100644 --- a/sysdeps/unix/sysv/linux/tst-spawn5-pidfd.c +++ b/sysdeps/unix/sysv/linux/tst-spawn5-pidfd.c @@ -1,5 +1,5 @@ /* Tests for spawn pidfd extension. - 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/tst-spawn6-pidfd.c b/sysdeps/unix/sysv/linux/tst-spawn6-pidfd.c index c227ff0..f789219 100644 --- a/sysdeps/unix/sysv/linux/tst-spawn6-pidfd.c +++ b/sysdeps/unix/sysv/linux/tst-spawn6-pidfd.c @@ -1,5 +1,5 @@ /* Tests for spawn pidfd extension. - 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/tst-spawn7-pidfd.c b/sysdeps/unix/sysv/linux/tst-spawn7-pidfd.c index 912ef59..a2a87ca 100644 --- a/sysdeps/unix/sysv/linux/tst-spawn7-pidfd.c +++ b/sysdeps/unix/sysv/linux/tst-spawn7-pidfd.c @@ -1,5 +1,5 @@ /* Tests for spawn pidfd extension. - 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/tst-sync_file_range.c b/sysdeps/unix/sysv/linux/tst-sync_file_range.c index fdbceab..ccd05df 100644 --- a/sysdeps/unix/sysv/linux/tst-sync_file_range.c +++ b/sysdeps/unix/sysv/linux/tst-sync_file_range.c @@ -1,5 +1,5 @@ /* Basic sync_file_range (not specific flag is checked). - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-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/tst-syscall-list.sh b/sysdeps/unix/sysv/linux/tst-syscall-list.sh index 89d67b8..7bea4eb 100644 --- a/sysdeps/unix/sysv/linux/tst-syscall-list.sh +++ b/sysdeps/unix/sysv/linux/tst-syscall-list.sh @@ -1,6 +1,6 @@ #!/bin/bash # Consistency checks for the system call list -# 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/tst-syscall-restart.c b/sysdeps/unix/sysv/linux/tst-syscall-restart.c new file mode 100644 index 0000000..73ca66a --- /dev/null +++ b/sysdeps/unix/sysv/linux/tst-syscall-restart.c @@ -0,0 +1,112 @@ +/* Test if a syscall is correctly restarted. + 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 + 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 <support/xsignal.h> +#include <support/check.h> +#include <support/process_state.h> +#include <support/xunistd.h> +#include <support/xthread.h> +#include <sys/wait.h> + +static int +check_pid (pid_t pid) +{ + /* Wait until the child has called pause and it blocking on kernel. */ + support_process_state_wait (pid, support_process_state_sleeping); + + TEST_COMPARE (kill (pid, SIGSTOP), 0); + + /* Adding process_state_tracing_stop ('t') allows the test to work under + trace programs such as ptrace. */ + support_process_state_wait (pid, support_process_state_stopped + | support_process_state_tracing_stop); + + TEST_COMPARE (kill (pid, SIGCONT), 0); + + enum support_process_state state + = support_process_state_wait (pid, support_process_state_sleeping + | support_process_state_zombie); + + TEST_COMPARE (state, support_process_state_sleeping); + + TEST_COMPARE (kill (pid, SIGTERM), 0); + + siginfo_t info; + TEST_COMPARE (waitid (P_PID, pid, &info, WEXITED), 0); + TEST_COMPARE (info.si_signo, SIGCHLD); + TEST_COMPARE (info.si_code, CLD_KILLED); + TEST_COMPARE (info.si_status, SIGTERM); + TEST_COMPARE (info.si_pid, pid); + + return 0; +} + +static void * +tf (void *closure) +{ + pause (); + return NULL; +} + +static void +child_mt (void) +{ + /* Let only the created thread to handle signals. */ + sigset_t set; + sigfillset (&set); + xpthread_sigmask (SIG_BLOCK, &set, NULL); + + sigdelset (&set, SIGSTOP); + sigdelset (&set, SIGCONT); + sigdelset (&set, SIGTERM); + + pthread_attr_t attr; + xpthread_attr_init (&attr); + TEST_COMPARE (pthread_attr_setsigmask_np (&attr, &set), 0); + + xpthread_join (xpthread_create (&attr, tf, NULL)); +} + +static void +do_test_syscall (bool multithread) +{ + pid_t pid = xfork (); + if (pid == 0) + { + if (multithread) + child_mt (); + else + pause (); + _exit (127); + } + + check_pid (pid); +} + +static int +do_test (void) +{ + /* Check for both single and multi thread, since they use different syscall + mechanisms. */ + do_test_syscall (false); + do_test_syscall (true); + + return 0; +} + +#include <support/test-driver.c> diff --git a/sysdeps/unix/sysv/linux/tst-sysconf-iov_max-uapi.c b/sysdeps/unix/sysv/linux/tst-sysconf-iov_max-uapi.c index 56925a0..29bf7c2 100644 --- a/sysdeps/unix/sysv/linux/tst-sysconf-iov_max-uapi.c +++ b/sysdeps/unix/sysv/linux/tst-sysconf-iov_max-uapi.c @@ -1,5 +1,5 @@ /* Check IOV_MAX definition: Helper function to capture UAPI header value. - 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/tst-sysconf-iov_max.c b/sysdeps/unix/sysv/linux/tst-sysconf-iov_max.c index 62dbcc6..c8ff044 100644 --- a/sysdeps/unix/sysv/linux/tst-sysconf-iov_max.c +++ b/sysdeps/unix/sysv/linux/tst-sysconf-iov_max.c @@ -1,5 +1,5 @@ /* Check IOV_MAX definition for consistency (bug 22321). - 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/tst-sysvmsg-linux.c b/sysdeps/unix/sysv/linux/tst-sysvmsg-linux.c index be10bc3..ffaaf80 100644 --- a/sysdeps/unix/sysv/linux/tst-sysvmsg-linux.c +++ b/sysdeps/unix/sysv/linux/tst-sysvmsg-linux.c @@ -1,5 +1,5 @@ /* Basic tests for Linux SYSV message queue extensions. - 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/tst-sysvsem-linux.c b/sysdeps/unix/sysv/linux/tst-sysvsem-linux.c index a8ed91e..94ec947 100644 --- a/sysdeps/unix/sysv/linux/tst-sysvsem-linux.c +++ b/sysdeps/unix/sysv/linux/tst-sysvsem-linux.c @@ -1,5 +1,5 @@ /* Basic tests for Linux SYSV semaphore extensions. - 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/tst-sysvshm-linux.c b/sysdeps/unix/sysv/linux/tst-sysvshm-linux.c index 5f2082b..27e6961 100644 --- a/sysdeps/unix/sysv/linux/tst-sysvshm-linux.c +++ b/sysdeps/unix/sysv/linux/tst-sysvshm-linux.c @@ -1,5 +1,5 @@ /* Basic tests for Linux SYSV shared memory extensions. - 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/tst-termios-linux.c b/sysdeps/unix/sysv/linux/tst-termios-linux.c new file mode 100644 index 0000000..e4b0c8b --- /dev/null +++ b/sysdeps/unix/sysv/linux/tst-termios-linux.c @@ -0,0 +1,592 @@ +/* Linux termios regression tests + + Copyright (C) 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; see the file COPYING.LIB. If + not, see <https://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <fcntl.h> +#include <limits.h> +#include <stdbool.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/ioctl.h> +#include <termios.h> +#include <unistd.h> + +#include <shlib-compat.h> +#include <array_length.h> + +#include <support/check.h> +#include <support/namespace.h> +#include <support/support.h> +#include <support/temp_file.h> +#include <support/test-driver.h> +#include <support/tty.h> + +/* Evaluate an expression and make sure errno did not get set; return + the value of the expression */ +#define CHECKERR(expr) \ + ({ \ + errno = 0; \ + const __typeof (expr) _val = (expr); \ + TEST_COMPARE(errno, 0); \ + _val; \ + }) + +/* Evaluate an expression and verify that is return a specific value, + as well as errno not having been set. */ +#define VERIFY(expr,val) TEST_COMPARE(CHECKERR(expr), val) +/* Check for zero and errno not set */ +#define CHECKZERO(expr) VERIFY(expr, 0) + +/* Table of legacy speed constants */ + +#define BOGUS ((speed_t)-1) +#define ANY ((speed_t)-2) + +struct cbaud_table +{ + speed_t speed; + speed_t cbaud; + const char *name; +}; + +static const struct cbaud_table cbaud_table [] = +{ + { 0, __B0, "__B0" }, + { 50, __B50, "__B50" }, + { 75, __B75, "__B75" }, + { 110, __B110, "__B110" }, + { 134, __B134, "__B134" }, + { 150, __B150, "__B150" }, + { 200, __B200, "__B200" }, + { 300, __B300, "__B300" }, + { 600, __B600, "__B600" }, + { 1200, __B1200, "__B1200" }, + { 1800, __B1800, "__B1800" }, + { 2400, __B2400, "__B2400" }, + { 4800, __B4800, "__B4800" }, +#ifdef __B7200 + { 7200, __B7200, "__B7200" }, +#endif + { 9600, __B9600, "__B9600" }, +#ifdef __B14400 + { 14400, __B14400, "__B14400" }, +#endif + { 19200, __B19200, "__B19200" }, +#ifdef __B28800 + { 28800, __B28800, "__B28800" }, +#endif + { 38400, __B38400, "__B38400" }, + { 57600, __B57600, "__B57600" }, +#ifdef __B76800 + { 76800, __B76800, "__B76800" }, +#endif + { 115200, __B115200, "__B115200" }, +#ifdef __B153600 + { 153600, __B153600, "__B153600" }, +#endif + { 230400, __B230400, "__B230400" }, +#ifdef __B307200 + { 307200, __B307200, "__B307200" }, +#endif + { 460800, __B460800, "__B460800" }, + { 500000, __B500000, "__B500000" }, + { 576000, __B576000, "__B576000" }, +#ifdef __B614400 + { 614400, __B614400, "__B614400" }, +#endif + { 921600, __B921600, "__B921600" }, + { 1000000, __B1000000, "__B1000000" }, + { 1152000, __B1152000, "__B1152000" }, + { 1500000, __B1500000, "__B1500000" }, + { 2000000, __B2000000, "__B2000000" }, +#ifdef __B2500000 + { 2500000, __B2500000, "__B2500000" }, +#endif +#ifdef __B3000000 + { 3000000, __B3000000, "__B3000000" }, +#endif +#ifdef __B3500000 + { 3500000, __B3500000, "__B3500000" }, +#endif +#ifdef __B4000000 + { 4000000, __B4000000, "__B4000000" }, +#endif + { ANY, __BOTHER, "__BOTHER" }, + { BOGUS, BOGUS, "invalid" } +}; + +/* List of common speeds to test */ + +static const speed_t test_speeds [] = +{ + 0, 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, + 4800, 7200, 9600, 14400, 19200, 28800, 33600, 38400, 57600, + 76800, 115200, 153600, 230400, 307200, 460800, 500000, + 576000, 614400, 921600, 1000000, 1152000, 1500000, 2000000, + 2500000, 3000000, 3500000, 4000000, 5000000, 10000000 +}; + +/* Speed function tests */ + +/* These intentionally are a separate implementation from speed.c; + these should be "trivially correct" and don't need to be optimized + in any way */ + +/* Returns __BOTHER if there is no legacy value for this speed */ +static speed_t speed_to_cbaud (speed_t speed) +{ + const struct cbaud_table *ct; + for (ct = cbaud_table; ct->speed != ANY; ct++) + { + if (ct->speed == speed) + break; + } + return ct->cbaud; +} + +/* Returns ANY if cbaud is __BOTHER, or BOGUS if invalid */ +static speed_t cbaud_to_speed (speed_t cbaud) +{ + const struct cbaud_table *ct; + for (ct = cbaud_table; ct->cbaud != BOGUS; ct++) + { + if (ct->cbaud == cbaud) + break; + } + return ct->speed; +} + +static const char *cbaud_name (speed_t cbaud) +{ + const struct cbaud_table *ct; + for (ct = cbaud_table; ct->cbaud != BOGUS; ct++) + { + if (ct->cbaud == cbaud) + break; + } + return ct->name; +} + +static int check_speed (speed_t expected, speed_t speed, speed_t cbaud, + speed_t cfspeed, baud_t cfbaud, char io) +{ + speed_t want_cbaud; + cbaud &= CBAUD; + + if (expected != ANY && speed != expected) + FAIL_RET ("c_%cspeed = %u, expected %u", io, speed, expected); + + if (cfspeed != speed) + FAIL_RET ("cfget%cspeed = %u, expected %u", io, cfspeed, speed); + + if (cfbaud != cfspeed) + FAIL_RET ("cfget%cbaud = %u, but cfget%cspeed = %u", + io, cfbaud, io, cfspeed); + + want_cbaud = speed_to_cbaud (speed); + + if (cbaud != want_cbaud) + FAIL_RET ("c_%cspeed = %u: %s = %s (%06o), should be %s (%06o)", + io, speed, + io == 'o' ? "CBAUD" : "CIBAUD", cbaud_name (cbaud), cbaud, + cbaud_name (want_cbaud), want_cbaud); + + return 0; +} + +/* Validate that the speeds in the struct termios are properly normalized. + The difference is the handling of ispeed == 0. */ + +/* Use this after cfset* () */ +static void check_speeds_cf (const struct termios *tio_p, + speed_t ospeed, speed_t ispeed) +{ + check_speed (ospeed, tio_p->c_ospeed, tio_p->c_cflag, + CHECKERR (cfgetospeed (tio_p)), + CHECKERR (cfgetobaud (tio_p)), 'o'); + check_speed (ispeed, tio_p->c_ispeed, tio_p->c_cflag >> IBSHIFT, + CHECKERR (cfgetispeed (tio_p)), + CHECKERR (cfgetibaud (tio_p)), 'i'); +} + +/* Use this after tc[gs]etattr () */ +static void check_speeds_tc (int fd, speed_t ospeed, speed_t ispeed) +{ + struct termios tio; + + CHECKZERO (tcgetattr (fd, &tio)); + check_speeds_cf (&tio, ospeed, ispeed ? ispeed : ospeed); +} + +/* For search and replace convenience */ +#define check_bauds_cf check_speeds_cf +#define check_bauds_tc check_speeds_tc + +/* Common routine for setting speeds, with checking */ +static void +set_speeds (int fd, speed_t ospeed, speed_t ispeed) +{ + struct termios tio; + + CHECKZERO (tcgetattr (fd, &tio)); + CHECKZERO (cfsetospeed (&tio, ospeed)); + CHECKZERO (cfsetispeed (&tio, ispeed)); + check_speeds_cf (&tio, ospeed, ispeed); + CHECKZERO (tcsetattr (fd, TCSANOW, &tio)); + check_speeds_tc (fd, ospeed, ispeed ? ispeed : ospeed); +} + +/* Actual tests */ + +typedef void (*speed_test_t)(int ttyfd, speed_t speed); +static void +run_speed_test (int fd, speed_test_t test); + +/* New interface cfset*speed test */ +static void +new_cfspeed_test (int fd, speed_t speed) +{ + struct termios tio; + speed_t old_ospeed, old_ispeed; + + CHECKZERO (tcgetattr (fd, &tio)); + old_ospeed = CHECKERR (cfgetospeed (&tio)); + old_ispeed = CHECKERR (cfgetispeed (&tio)); + + /* Check initial normalization */ + check_speeds_cf (&tio, old_ospeed, old_ispeed); + + /* Check cfset*speed normalization */ + CHECKZERO (cfsetospeed (&tio, speed)); + check_speeds_cf (&tio, speed, old_ispeed); + CHECKZERO (cfsetispeed (&tio, speed)); + check_speeds_cf (&tio, speed, speed); + CHECKZERO (cfsetospeed (&tio, old_ospeed)); + check_speeds_cf (&tio, old_ospeed, speed); + CHECKZERO (cfsetispeed (&tio, B0)); + check_speeds_cf (&tio, old_ospeed, B0); + CHECKZERO (cfsetspeed (&tio, speed)); + check_speeds_cf (&tio, speed, speed); + CHECKZERO (cfsetospeed (&tio, old_ospeed)); + CHECKZERO (cfsetispeed (&tio, old_ispeed)); + check_speeds_cf (&tio, old_ospeed, old_ispeed); +} + +/* New interface cfset*speed test with tcsetattr */ +static void +new_tcspeed_test (int fd, speed_t speed) +{ + struct termios tio; + speed_t old_ospeed, old_ispeed; + + CHECKZERO (tcgetattr (fd, &tio)); + old_ospeed = CHECKERR (cfgetospeed (&tio)); + old_ispeed = CHECKERR (cfgetispeed (&tio)); + + /* Check initial normalization */ + check_speeds_cf (&tio, old_ospeed, old_ispeed); + + /* Check cfset*speed normalization */ + CHECKZERO (cfsetospeed (&tio, speed)); + CHECKZERO (tcsetattr (fd, TCSANOW, &tio)); + check_speeds_tc (fd, speed, old_ispeed); + CHECKZERO (cfsetispeed (&tio, speed)); + CHECKZERO (tcsetattr (fd, TCSANOW, &tio)); + check_speeds_tc (fd, speed, speed); + CHECKZERO (cfsetospeed (&tio, old_ospeed)); + CHECKZERO (tcsetattr (fd, TCSANOW, &tio)); + check_speeds_tc (fd, old_ospeed, speed); + CHECKZERO (cfsetispeed (&tio, B0)); + CHECKZERO (tcsetattr (fd, TCSANOW, &tio)); + check_speeds_tc (fd, old_ospeed, B0); + CHECKZERO (cfsetspeed (&tio, speed)); + CHECKZERO (tcsetattr (fd, TCSANOW, &tio)); + check_speeds_tc (fd, speed, speed); + CHECKZERO (cfsetospeed (&tio, old_ospeed)); + CHECKZERO (cfsetispeed (&tio, old_ispeed)); + CHECKZERO (tcsetattr (fd, TCSANOW, &tio)); + check_speeds_tc (fd, old_ospeed, old_ispeed); +} + +/* New interface cfset*baud test */ +static void +new_cfbaud_test (int fd, baud_t baud) +{ + struct termios tio; + baud_t old_obaud, old_ibaud; + + CHECKZERO (tcgetattr (fd, &tio)); + old_obaud = CHECKERR (cfgetobaud (&tio)); + old_ibaud = CHECKERR (cfgetibaud (&tio)); + + /* Check initial normalization */ + check_bauds_cf (&tio, old_obaud, old_ibaud); + + /* Check cfset*baud normalization */ + CHECKZERO (cfsetobaud (&tio, baud)); + check_bauds_cf (&tio, baud, old_ibaud); + CHECKZERO (cfsetibaud (&tio, baud)); + check_bauds_cf (&tio, baud, baud); + CHECKZERO (cfsetobaud (&tio, old_obaud)); + check_bauds_cf (&tio, old_obaud, baud); + CHECKZERO (cfsetibaud (&tio, B0)); + check_bauds_cf (&tio, old_obaud, B0); + CHECKZERO (cfsetbaud (&tio, baud)); + check_bauds_cf (&tio, baud, baud); + CHECKZERO (cfsetobaud (&tio, old_obaud)); + CHECKZERO (cfsetibaud (&tio, old_ibaud)); + check_bauds_cf (&tio, old_obaud, old_ibaud); +} + +/* New interface cfset*baud test with tcsetattr */ +static void +new_tcbaud_test (int fd, baud_t baud) +{ + struct termios tio; + baud_t old_obaud, old_ibaud; + + CHECKZERO (tcgetattr (fd, &tio)); + old_obaud = CHECKERR (cfgetobaud (&tio)); + old_ibaud = CHECKERR (cfgetibaud (&tio)); + + /* Check initial normalization */ + check_bauds_cf (&tio, old_obaud, old_ibaud); + + /* Check cfset*baud normalization */ + CHECKZERO (cfsetobaud (&tio, baud)); + CHECKZERO (tcsetattr (fd, TCSANOW, &tio)); + check_bauds_tc (fd, baud, old_ibaud); + CHECKZERO (cfsetibaud (&tio, baud)); + CHECKZERO (tcsetattr (fd, TCSANOW, &tio)); + check_bauds_tc (fd, baud, baud); + CHECKZERO (cfsetobaud (&tio, old_obaud)); + CHECKZERO (tcsetattr (fd, TCSANOW, &tio)); + check_bauds_tc (fd, old_obaud, baud); + CHECKZERO (cfsetibaud (&tio, B0)); + CHECKZERO (tcsetattr (fd, TCSANOW, &tio)); + check_bauds_tc (fd, old_obaud, B0); + CHECKZERO (cfsetbaud (&tio, baud)); + CHECKZERO (tcsetattr (fd, TCSANOW, &tio)); + check_bauds_tc (fd, baud, baud); + CHECKZERO (cfsetobaud (&tio, old_obaud)); + CHECKZERO (cfsetibaud (&tio, old_ibaud)); + CHECKZERO (tcsetattr (fd, TCSANOW, &tio)); + check_bauds_tc (fd, old_obaud, old_ibaud); +} + +/* + * Old interface tests. This depends critically on the new struct + * termios being guaranteed to be a superset of the legacy struct + * termios. + */ +#if TEST_COMPAT (libc, GLIBC_2_0, GLIBC_2_42) +extern int __old_cfsetospeed (struct termios *tio_p, speed_t speed); +compat_symbol_reference (libc, __old_cfsetospeed, cfsetospeed, GLIBC_2_0); +extern int __old_cfsetispeed (struct termios *tio_p, speed_t speed); +compat_symbol_reference (libc, __old_cfsetispeed, cfsetispeed, GLIBC_2_0); +extern speed_t __old_cfgetospeed (const struct termios *tio_p); +compat_symbol_reference (libc, __old_cfgetospeed, cfgetospeed, GLIBC_2_0); +extern speed_t __old_cfgetispeed (const struct termios *tio_p); +compat_symbol_reference (libc, __old_cfgetispeed, cfgetispeed, GLIBC_2_0); +extern int __old_tcsetattr (int fd, int act, const struct termios *tio_p); +compat_symbol_reference (libc, __old_tcsetattr, tcsetattr, GLIBC_2_0); +extern int __old_tcgetattr (int fd, struct termios *tio_p); +compat_symbol_reference (libc, __old_tcgetattr, tcgetattr, GLIBC_2_0); + +static int old_tcsetattr (int fd, const struct termios *tio_p) +{ + struct termios old_tio = *tio_p; + + /* Deliberately corrupt c_ispeed and c_ospeed */ + old_tio.c_ispeed = 0xdeadbeef; + old_tio.c_ospeed = 0xfeedface; + return __old_tcsetattr (fd, TCSANOW, &old_tio); +} +static int old_tcgetattr (int fd, struct termios *tio_p) +{ + int rv; + memset (tio_p, 0xde, sizeof *tio_p); + rv = __old_tcgetattr (fd, tio_p); + if (rv) + return rv; + + /* Deliberately corrupt c_ispeed and c_ospeed */ + tio_p->c_ispeed = 0xdeadbeef; + tio_p->c_ospeed = 0xfeedface; + return 0; +} + +/* Old interface test. This relies on the new struct termios always + being a binary superset of the old one. + This doesn't bother testing split speed, since that never worked + on the old glibc. */ +static void +old_tcspeed_test (int fd, speed_t speed) +{ + struct termios tio; + speed_t cbaud; + + if (!speed) + return; /* Skip B0 for this test */ + + cbaud = speed_to_cbaud (speed); + if (cbaud == __BOTHER) + return; + + CHECKZERO (old_tcgetattr (fd, &tio)); + CHECKZERO (__old_cfsetospeed (&tio, cbaud)); + VERIFY (__old_cfgetospeed (&tio), cbaud); + CHECKZERO (__old_cfsetispeed (&tio, cbaud)); + VERIFY (__old_cfgetispeed (&tio), cbaud); + CHECKZERO (old_tcsetattr (fd, &tio)); + check_speeds_tc (fd, speed, speed); +} + +/* Verify that invalid CBAUD values return error for the old interfaces */ +static void +old_invalid_speeds_test (int fd) +{ + struct termios tio; + speed_t cbaud; + + for (cbaud = 0 ; cbaud ; cbaud > 0xffff ? (cbaud <<= 1) : cbaud++) { + speed_t realspeed; + realspeed = (cbaud & ~CBAUD) ? BOGUS : cbaud_to_speed (cbaud); + if (realspeed >= ANY) + { + int rv; + + errno = 0; + rv = __old_cfsetospeed (&tio, cbaud); + if (rv != -1 || errno != EINVAL) + FAIL("__old_cfsetospeed() accepted invalid value %06o", cbaud); + + errno = 0; + rv = __old_cfsetispeed (&tio, cbaud); + if (rv != -1 || errno != EINVAL) + FAIL("__old_cfsetispeed() accepted invalid value %06o", cbaud); + } + else + { + CHECKZERO (__old_cfsetospeed (&tio, cbaud)); + VERIFY (__old_cfgetospeed (&tio), cbaud); + CHECKZERO (__old_cfsetispeed (&tio, cbaud)); + VERIFY (__old_cfgetispeed (&tio), cbaud); + if (cbaud) + { + CHECKZERO (old_tcsetattr (fd, &tio)); + check_speeds_tc (fd, realspeed, realspeed); + } + } + } +} + +static void +compat_tests (int fd) +{ + run_speed_test (fd, old_tcspeed_test); + old_invalid_speeds_test (fd); +} +#else /* No TEST_COMPAT */ +#define compat_tests(fd) ((void)(fd)) +#endif + +static void +run_speed_test (int fd, speed_test_t test) +{ + unsigned short seed [3] = { 0x1234, 0x5678, 0x9abc }; + struct speeds { + speed_t ospeed, ispeed; + }; + static const struct speeds initial_speeds [] = { + { 2400, 2400 }, /* Standard speed, non-split */ + { 123456, 123456 }, /* Nonstandard speed, non-split */ + { 75, 1200 }, /* Standard split speeds */ + { 9600, 456789 }, /* One standard, one nonstandard */ + { 54321, 1234567890 } /* Nonstandard, one very high */ + }; + + array_foreach_const (is, initial_speeds) + { + /* Set up initial conditions */ + set_speeds (fd, is->ospeed, is->ispeed); + + /* Test all common speeds */ + array_foreach_const (ts, test_speeds) + test (fd, *ts); + + /* Test pseudorandom speeds; array_length(test_speeds) + here is an arbitrary value */ + const size_t random_test_count = array_length(test_speeds); + for (size_t i = 0 ; i < random_test_count ; i++) + test (fd, (speed_t) jrand48 (seed)); + + /* Test power-of-2 speeds */ + for (speed_t s = 1 ; s ; s <<= 1) + test (fd, s); + + /* Test power of 2 multiples of 75; 75 << 25 is the maximum below 2^32 */ + for (int i = 0 ; i < 26 ; i++) + test (fd, (speed_t)75 << i); + } +} + +static void +run_speed_tests (int fd) +{ + /* Test proper canonicalization using the new interface */ + run_speed_test (fd, new_cfspeed_test); + run_speed_test (fd, new_tcspeed_test); + + /* Try the new cfset*baud() functions */ + run_speed_test (fd, new_cfbaud_test); + run_speed_test (fd, new_tcbaud_test); + + /* Tests of the legacy functions */ + compat_tests (fd); +} + +/* test dispatch */ + +static void +run_in_chroot (void) +{ + /* Create a pty slave to use as a tty. Most of the termios settings, + including the speeds, have no impact on a pty, but they are still + settable like for any other tty, which makes them very convenient + for testing. */ + int ptmfd, ttyfd; + + support_openpty (&ptmfd, &ttyfd, NULL, NULL, NULL); + run_speed_tests (ttyfd); + close (ttyfd); + close (ptmfd); +} + +static int +do_test (void) +{ + support_become_root (); + run_in_chroot (); + + return 0; +} + +#include <support/test-driver.c> diff --git a/sysdeps/unix/sysv/linux/tst-tgkill.c b/sysdeps/unix/sysv/linux/tst-tgkill.c index 054bf7f..c489155 100644 --- a/sysdeps/unix/sysv/linux/tst-tgkill.c +++ b/sysdeps/unix/sysv/linux/tst-tgkill.c @@ -1,5 +1,5 @@ /* Smoke test for the tgkill system call. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/tst-time-clobber.c b/sysdeps/unix/sysv/linux/tst-time-clobber.c index b0e40b5..707d0d6 100644 --- a/sysdeps/unix/sysv/linux/tst-time-clobber.c +++ b/sysdeps/unix/sysv/linux/tst-time-clobber.c @@ -1,5 +1,5 @@ /* Check that time does not clobber errno. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/tst-timerfd.c b/sysdeps/unix/sysv/linux/tst-timerfd.c index 2e78c8f..7c89588 100644 --- a/sysdeps/unix/sysv/linux/tst-timerfd.c +++ b/sysdeps/unix/sysv/linux/tst-timerfd.c @@ -1,5 +1,5 @@ /* Test for timerfd related functions - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/tst-ttyname-common.c b/sysdeps/unix/sysv/linux/tst-ttyname-common.c index 2f2a36d..d01c8a3 100644 --- a/sysdeps/unix/sysv/linux/tst-ttyname-common.c +++ b/sysdeps/unix/sysv/linux/tst-ttyname-common.c @@ -1,5 +1,5 @@ /* Common definitions for ttyname tests. - 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/tst-ttyname-direct.c b/sysdeps/unix/sysv/linux/tst-ttyname-direct.c index 1ed87e7..87794ad 100644 --- a/sysdeps/unix/sysv/linux/tst-ttyname-direct.c +++ b/sysdeps/unix/sysv/linux/tst-ttyname-direct.c @@ -1,4 +1,4 @@ -/* 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/tst-ttyname-namespace.c b/sysdeps/unix/sysv/linux/tst-ttyname-namespace.c index 8d7a037..c003904 100644 --- a/sysdeps/unix/sysv/linux/tst-ttyname-namespace.c +++ b/sysdeps/unix/sysv/linux/tst-ttyname-namespace.c @@ -1,5 +1,5 @@ /* Tests for ttyname/ttyname_r with namespaces. - 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/ttyname.c b/sysdeps/unix/sysv/linux/ttyname.c index 55de841..9fb42f7 100644 --- a/sysdeps/unix/sysv/linux/ttyname.c +++ b/sysdeps/unix/sysv/linux/ttyname.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2024 Free Software Foundation, Inc. +/* Copyright (C) 1991-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/ttyname.h b/sysdeps/unix/sysv/linux/ttyname.h index bf5fca9..eb5f2df 100644 --- a/sysdeps/unix/sysv/linux/ttyname.h +++ b/sysdeps/unix/sysv/linux/ttyname.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2016-2024 Free Software Foundation, Inc. +/* Copyright (C) 2016-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/ttyname_r.c b/sysdeps/unix/sysv/linux/ttyname_r.c index 13b078d..72e5d98 100644 --- a/sysdeps/unix/sysv/linux/ttyname_r.c +++ b/sysdeps/unix/sysv/linux/ttyname_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2024 Free Software Foundation, Inc. +/* Copyright (C) 1991-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/tv32-compat.h b/sysdeps/unix/sysv/linux/tv32-compat.h index b322dc3..a97fb38 100644 --- a/sysdeps/unix/sysv/linux/tv32-compat.h +++ b/sysdeps/unix/sysv/linux/tv32-compat.h @@ -1,5 +1,5 @@ /* Compatibility definitions for 'struct timeval' with 32-bit time_t. - 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/umount.c b/sysdeps/unix/sysv/linux/umount.c index 97b3e29..865a47c 100644 --- a/sysdeps/unix/sysv/linux/umount.c +++ b/sysdeps/unix/sysv/linux/umount.c @@ -1,4 +1,4 @@ -/* 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/umount2.c b/sysdeps/unix/sysv/linux/umount2.c index 2b37c15..4d84800 100644 --- a/sysdeps/unix/sysv/linux/umount2.c +++ b/sysdeps/unix/sysv/linux/umount2.c @@ -1,5 +1,5 @@ /* Unmount filesystem. - 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/unlink.c b/sysdeps/unix/sysv/linux/unlink.c index 932cfcf..485f131 100644 --- a/sysdeps/unix/sysv/linux/unlink.c +++ b/sysdeps/unix/sysv/linux/unlink.c @@ -1,5 +1,5 @@ /* Delete a name and possibly the file it refers to. Linux version. - 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/unlockpt.c b/sysdeps/unix/sysv/linux/unlockpt.c index be5f728..447b5fc 100644 --- a/sysdeps/unix/sysv/linux/unlockpt.c +++ b/sysdeps/unix/sysv/linux/unlockpt.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/update-syscall-lists.py b/sysdeps/unix/sysv/linux/update-syscall-lists.py index 2393e9c..5bc3c2c 100644 --- a/sysdeps/unix/sysv/linux/update-syscall-lists.py +++ b/sysdeps/unix/sysv/linux/update-syscall-lists.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 # Regenerate <arch-syscall.h> and update syscall-names.list. -# 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/updwtmp.c b/sysdeps/unix/sysv/linux/updwtmp.c index 1e4b5b3..015237c 100644 --- a/sysdeps/unix/sysv/linux/updwtmp.c +++ b/sysdeps/unix/sysv/linux/updwtmp.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/ustat.c b/sysdeps/unix/sysv/linux/ustat.c index 0c2bcae..e1000aa 100644 --- a/sysdeps/unix/sysv/linux/ustat.c +++ b/sysdeps/unix/sysv/linux/ustat.c @@ -1,5 +1,5 @@ /* Get filesystem statistics (deprecated). Linux 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/utime.c b/sysdeps/unix/sysv/linux/utime.c index adb3145..eee1e8d 100644 --- a/sysdeps/unix/sysv/linux/utime.c +++ b/sysdeps/unix/sysv/linux/utime.c @@ -1,5 +1,5 @@ /* utime -- Change access and modification times of file. Linux 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/utimensat.c b/sysdeps/unix/sysv/linux/utimensat.c index 991897f..b7190d2 100644 --- a/sysdeps/unix/sysv/linux/utimensat.c +++ b/sysdeps/unix/sysv/linux/utimensat.c @@ -1,5 +1,5 @@ /* Change access and modification times of open file. Linux version. - Copyright (C) 2007-2024 Free Software Foundation, Inc. + Copyright (C) 2007-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 @@ -75,9 +75,6 @@ int __utimensat64 (int fd, const char *file, const struct __timespec64 tsp64[2], int flags) { - if (file == NULL) - return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL); - return __utimensat64_helper (fd, file, &tsp64[0], flags); } diff --git a/sysdeps/unix/sysv/linux/utimes.c b/sysdeps/unix/sysv/linux/utimes.c index a094457..9fbe53a 100644 --- a/sysdeps/unix/sysv/linux/utimes.c +++ b/sysdeps/unix/sysv/linux/utimes.c @@ -1,5 +1,5 @@ /* utimes -- Change access and modification times of file. Linux version. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/utmp_file.c b/sysdeps/unix/sysv/linux/utmp_file.c index f2d23a5..70e3bc6 100644 --- a/sysdeps/unix/sysv/linux/utmp_file.c +++ b/sysdeps/unix/sysv/linux/utmp_file.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/versionsort64.c b/sysdeps/unix/sysv/linux/versionsort64.c index dc5863b..71177a5 100644 --- a/sysdeps/unix/sysv/linux/versionsort64.c +++ b/sysdeps/unix/sysv/linux/versionsort64.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1992-2024 Free Software Foundation, Inc. +/* Copyright (C) 1992-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/vmsplice.c b/sysdeps/unix/sysv/linux/vmsplice.c index dc6e1b3..e05695c 100644 --- a/sysdeps/unix/sysv/linux/vmsplice.c +++ b/sysdeps/unix/sysv/linux/vmsplice.c @@ -1,5 +1,5 @@ /* Splice user pages into a pipe Linux implementation. - 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/wait3.c b/sysdeps/unix/sysv/linux/wait3.c index a06ca44..3d3d92e 100644 --- a/sysdeps/unix/sysv/linux/wait3.c +++ b/sysdeps/unix/sysv/linux/wait3.c @@ -1,5 +1,5 @@ /* Wait for process to change state, BSD style. Linux 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/wait4.c b/sysdeps/unix/sysv/linux/wait4.c index 5dd0d3e..80e4d13 100644 --- a/sysdeps/unix/sysv/linux/wait4.c +++ b/sysdeps/unix/sysv/linux/wait4.c @@ -1,5 +1,5 @@ /* Wait for process to change state. Linux version. - Copyright (C) 2019-2024 Free Software Foundation, Inc. + Copyright (C) 2019-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/waitid.c b/sysdeps/unix/sysv/linux/waitid.c index 13fed92..78dab22 100644 --- a/sysdeps/unix/sysv/linux/waitid.c +++ b/sysdeps/unix/sysv/linux/waitid.c @@ -1,5 +1,5 @@ /* Linux implementation of waitid. - Copyright (C) 2004-2024 Free Software Foundation, Inc. + Copyright (C) 2004-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/write.c b/sysdeps/unix/sysv/linux/write.c index b689a9f..dd40926 100644 --- a/sysdeps/unix/sysv/linux/write.c +++ b/sysdeps/unix/sysv/linux/write.c @@ -1,5 +1,5 @@ /* Linux write syscall implementation. - 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/write_nocancel.c b/sysdeps/unix/sysv/linux/write_nocancel.c index d16fda9..306bd28 100644 --- a/sysdeps/unix/sysv/linux/write_nocancel.c +++ b/sysdeps/unix/sysv/linux/write_nocancel.c @@ -1,5 +1,5 @@ /* Linux write syscall implementation -- non-cancellable. - 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/writev.c b/sysdeps/unix/sysv/linux/writev.c index f06bcd5..7259592 100644 --- a/sysdeps/unix/sysv/linux/writev.c +++ b/sysdeps/unix/sysv/linux/writev.c @@ -1,5 +1,5 @@ /* Linux writev syscall implementation. - 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/x86/arch-pkey.h b/sysdeps/unix/sysv/linux/x86/arch-pkey.h index 0b6c556..b76497b 100644 --- a/sysdeps/unix/sysv/linux/x86/arch-pkey.h +++ b/sysdeps/unix/sysv/linux/x86/arch-pkey.h @@ -1,5 +1,5 @@ /* Helper functions for manipulating memory protection keys. - 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/x86/bits/environments.h b/sysdeps/unix/sysv/linux/x86/bits/environments.h index dd7be14..66acb92 100644 --- a/sysdeps/unix/sysv/linux/x86/bits/environments.h +++ b/sysdeps/unix/sysv/linux/x86/bits/environments.h @@ -1,4 +1,4 @@ -/* 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/x86/bits/epoll.h b/sysdeps/unix/sysv/linux/x86/bits/epoll.h index a0279fc..03f3844 100644 --- a/sysdeps/unix/sysv/linux/x86/bits/epoll.h +++ b/sysdeps/unix/sysv/linux/x86/bits/epoll.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2024 Free Software Foundation, Inc. +/* Copyright (C) 2002-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/x86/bits/fcntl.h b/sysdeps/unix/sysv/linux/x86/bits/fcntl.h index 9a3734c..63b76c9 100644 --- a/sysdeps/unix/sysv/linux/x86/bits/fcntl.h +++ b/sysdeps/unix/sysv/linux/x86/bits/fcntl.h @@ -1,5 +1,5 @@ /* O_*, F_*, FD_* bit values for Linux/x86. - 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/x86/bits/ipctypes.h b/sysdeps/unix/sysv/linux/x86/bits/ipctypes.h index 93a5494..4163314 100644 --- a/sysdeps/unix/sysv/linux/x86/bits/ipctypes.h +++ b/sysdeps/unix/sysv/linux/x86/bits/ipctypes.h @@ -1,5 +1,5 @@ /* bits/ipctypes.h -- Define some types used by SysV IPC/MSG/SHM. - Copyright (C) 2012-2024 Free Software Foundation, Inc. + Copyright (C) 2012-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/x86/bits/mman.h b/sysdeps/unix/sysv/linux/x86/bits/mman.h index cd5ea8e..0da3ac6 100644 --- a/sysdeps/unix/sysv/linux/x86/bits/mman.h +++ b/sysdeps/unix/sysv/linux/x86/bits/mman.h @@ -1,5 +1,5 @@ /* Definitions for POSIX memory map interface. Linux/x86_64 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/x86/bits/platform/features.h b/sysdeps/unix/sysv/linux/x86/bits/platform/features.h index 7704feb..84842c5 100644 --- a/sysdeps/unix/sysv/linux/x86/bits/platform/features.h +++ b/sysdeps/unix/sysv/linux/x86/bits/platform/features.h @@ -1,6 +1,6 @@ /* Inline functions for x86 CPU features. This file is part of the GNU C Library. - Copyright (C) 2024 Free Software Foundation, Inc. + Copyright (C) 2024-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 @@ -28,7 +28,7 @@ enum x86_feature_1_shstk = 1U << 1 }; -static __inline__ _Bool +static __inline__ bool x86_cpu_cet_active (unsigned int __index) { #ifdef __x86_64__ diff --git a/sysdeps/unix/sysv/linux/x86/bits/procfs-id.h b/sysdeps/unix/sysv/linux/x86/bits/procfs-id.h index a64328a..a2daf70 100644 --- a/sysdeps/unix/sysv/linux/x86/bits/procfs-id.h +++ b/sysdeps/unix/sysv/linux/x86/bits/procfs-id.h @@ -1,5 +1,5 @@ /* Types of pr_uid and pr_gid in struct elf_prpsinfo. x86 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. diff --git a/sysdeps/unix/sysv/linux/x86/bits/procfs.h b/sysdeps/unix/sysv/linux/x86/bits/procfs.h index 18e37a1..afe295c 100644 --- a/sysdeps/unix/sysv/linux/x86/bits/procfs.h +++ b/sysdeps/unix/sysv/linux/x86/bits/procfs.h @@ -1,5 +1,5 @@ /* Types for registers for sys/procfs.h. x86 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/x86/bits/rseq.h b/sysdeps/unix/sysv/linux/x86/bits/rseq.h index 3b76b12..0c19fdc 100644 --- a/sysdeps/unix/sysv/linux/x86/bits/rseq.h +++ b/sysdeps/unix/sysv/linux/x86/bits/rseq.h @@ -1,5 +1,5 @@ /* Restartable Sequences Linux x86 architecture header. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + 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 diff --git a/sysdeps/unix/sysv/linux/x86/bits/sigcontext.h b/sysdeps/unix/sysv/linux/x86/bits/sigcontext.h index 773cc32..e852b9b 100644 --- a/sysdeps/unix/sysv/linux/x86/bits/sigcontext.h +++ b/sysdeps/unix/sysv/linux/x86/bits/sigcontext.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2024 Free Software Foundation, Inc. +/* Copyright (C) 2002-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/x86/bits/struct_stat.h b/sysdeps/unix/sysv/linux/x86/bits/struct_stat.h index 810d656..7edc1f0 100644 --- a/sysdeps/unix/sysv/linux/x86/bits/struct_stat.h +++ b/sysdeps/unix/sysv/linux/x86/bits/struct_stat.h @@ -1,5 +1,5 @@ /* Definition for struct stat. - 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/x86/bits/timesize.h b/sysdeps/unix/sysv/linux/x86/bits/timesize.h index 57d83ab..09aeb73 100644 --- a/sysdeps/unix/sysv/linux/x86/bits/timesize.h +++ b/sysdeps/unix/sysv/linux/x86/bits/timesize.h @@ -1,5 +1,5 @@ /* Bit size of the time_t type at glibc build time, x86-64 and x32 case. - 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/x86/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h index 81867c0..db1b94e 100644 --- a/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h +++ b/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h @@ -1,5 +1,5 @@ /* x86 implementation of the semaphore struct semid_ds. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-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/x86/bits/typesizes.h b/sysdeps/unix/sysv/linux/x86/bits/typesizes.h index f4e2ec2..8ba6e7f 100644 --- a/sysdeps/unix/sysv/linux/x86/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/x86/bits/typesizes.h @@ -1,5 +1,5 @@ /* bits/typesizes.h -- underlying types for *_t. Linux/x86-64 version. - Copyright (C) 2012-2024 Free Software Foundation, Inc. + Copyright (C) 2012-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/x86/dl-hwcap2.h b/sysdeps/unix/sysv/linux/x86/dl-hwcap2.h index b6bbedb..f1dd026 100644 --- a/sysdeps/unix/sysv/linux/x86/dl-hwcap2.h +++ b/sysdeps/unix/sysv/linux/x86/dl-hwcap2.h @@ -1,5 +1,5 @@ /* Handle AT_HWCAP2. Linux/x86 version. - Copyright (C) 2023-2024 Free Software Foundation, Inc. + Copyright (C) 2023-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 diff --git a/sysdeps/unix/sysv/linux/x86/dl-minsigstacksize.h b/sysdeps/unix/sysv/linux/x86/dl-minsigstacksize.h index a097825..c299c17 100644 --- a/sysdeps/unix/sysv/linux/x86/dl-minsigstacksize.h +++ b/sysdeps/unix/sysv/linux/x86/dl-minsigstacksize.h @@ -1,5 +1,5 @@ /* Emulate AT_MINSIGSTKSZ. Linux/x86 version. - Copyright (C) 2020-2024 Free Software Foundation, Inc. + Copyright (C) 2020-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 diff --git a/sysdeps/unix/sysv/linux/x86/dl-sysdep.c b/sysdeps/unix/sysv/linux/x86/dl-sysdep.c index d3eef75..b8a6f63 100644 --- a/sysdeps/unix/sysv/linux/x86/dl-sysdep.c +++ b/sysdeps/unix/sysv/linux/x86/dl-sysdep.c @@ -1,5 +1,5 @@ /* Operating system support for run-time dynamic linker. X86 version. - 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/x86/elf-read-prop.h b/sysdeps/unix/sysv/linux/x86/elf-read-prop.h index 5b34072..de0dd13 100644 --- a/sysdeps/unix/sysv/linux/x86/elf-read-prop.h +++ b/sysdeps/unix/sysv/linux/x86/elf-read-prop.h @@ -1,5 +1,5 @@ /* Support for GNU properties in ldconfig. x86 version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/x86/elision-conf.c b/sysdeps/unix/sysv/linux/x86/elision-conf.c index 0766306..cf120a9 100644 --- a/sysdeps/unix/sysv/linux/x86/elision-conf.c +++ b/sysdeps/unix/sysv/linux/x86/elision-conf.c @@ -1,5 +1,5 @@ /* elision-conf.c: Lock elision tunable parameters. - Copyright (C) 2013-2024 Free Software Foundation, Inc. + Copyright (C) 2013-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/x86/elision-conf.h b/sysdeps/unix/sysv/linux/x86/elision-conf.h index 18d0ce0..6ba8810 100644 --- a/sysdeps/unix/sysv/linux/x86/elision-conf.h +++ b/sysdeps/unix/sysv/linux/x86/elision-conf.h @@ -1,5 +1,5 @@ /* elision-conf.h: Lock elision tunable parameters. - Copyright (C) 2013-2024 Free Software Foundation, Inc. + Copyright (C) 2013-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/x86/elision-lock.c b/sysdeps/unix/sysv/linux/x86/elision-lock.c index ecc653d..74e7482 100644 --- a/sysdeps/unix/sysv/linux/x86/elision-lock.c +++ b/sysdeps/unix/sysv/linux/x86/elision-lock.c @@ -1,5 +1,5 @@ /* elision-lock.c: Elided pthread mutex lock. - 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/x86/elision-timed.c b/sysdeps/unix/sysv/linux/x86/elision-timed.c index e416c8d..50925f4 100644 --- a/sysdeps/unix/sysv/linux/x86/elision-timed.c +++ b/sysdeps/unix/sysv/linux/x86/elision-timed.c @@ -1,5 +1,5 @@ /* elision-timed.c: Lock elision timed lock. - Copyright (C) 2013-2024 Free Software Foundation, Inc. + Copyright (C) 2013-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/x86/elision-trylock.c b/sysdeps/unix/sysv/linux/x86/elision-trylock.c index 94265d7..60c4311 100644 --- a/sysdeps/unix/sysv/linux/x86/elision-trylock.c +++ b/sysdeps/unix/sysv/linux/x86/elision-trylock.c @@ -1,5 +1,5 @@ /* elision-trylock.c: Lock eliding trylock for pthreads. - Copyright (C) 2013-2024 Free Software Foundation, Inc. + Copyright (C) 2013-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/x86/elision-unlock.c b/sysdeps/unix/sysv/linux/x86/elision-unlock.c index 81301c0..67dd1e6 100644 --- a/sysdeps/unix/sysv/linux/x86/elision-unlock.c +++ b/sysdeps/unix/sysv/linux/x86/elision-unlock.c @@ -1,5 +1,5 @@ /* elision-unlock.c: Commit an elided pthread lock. - Copyright (C) 2013-2024 Free Software Foundation, Inc. + Copyright (C) 2013-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/x86/gettimeofday.c b/sysdeps/unix/sysv/linux/x86/gettimeofday.c index 6051556..f41999c 100644 --- a/sysdeps/unix/sysv/linux/x86/gettimeofday.c +++ b/sysdeps/unix/sysv/linux/x86/gettimeofday.c @@ -1,5 +1,5 @@ /* gettimeofday - get the time. Linux/x86 version. - Copyright (C) 2015-2024 Free Software Foundation, Inc. + Copyright (C) 2015-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/x86/longjmp.c b/sysdeps/unix/sysv/linux/x86/longjmp.c index 0f045e3..ad4df7a 100644 --- a/sysdeps/unix/sysv/linux/x86/longjmp.c +++ b/sysdeps/unix/sysv/linux/x86/longjmp.c @@ -1,5 +1,5 @@ /* __libc_siglongjmp for Linux/x86 - 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/x86/pkey_get.c b/sysdeps/unix/sysv/linux/x86/pkey_get.c index eb988a5..f0b4b3b 100644 --- a/sysdeps/unix/sysv/linux/x86/pkey_get.c +++ b/sysdeps/unix/sysv/linux/x86/pkey_get.c @@ -1,5 +1,5 @@ /* Reading the per-thread memory protection key, x86_64 version. - 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 @@ -18,9 +18,10 @@ #include <arch-pkey.h> #include <errno.h> +#include <sys/mman.h> int -pkey_get (int key) +__pkey_get (int key) { if (key < 0 || key > 15) { @@ -31,3 +32,5 @@ pkey_get (int key) return (pkru >> (2 * key)) & 3; return 0; } +libc_hidden_def (__pkey_get) +weak_alias (__pkey_get, pkey_get) diff --git a/sysdeps/unix/sysv/linux/x86/pkey_set.c b/sysdeps/unix/sysv/linux/x86/pkey_set.c index 3fd2c95..76c8f05 100644 --- a/sysdeps/unix/sysv/linux/x86/pkey_set.c +++ b/sysdeps/unix/sysv/linux/x86/pkey_set.c @@ -1,5 +1,5 @@ /* Changing the per-thread memory protection key, x86_64 version. - 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 @@ -18,9 +18,10 @@ #include <arch-pkey.h> #include <errno.h> +#include <sys/mman.h> int -pkey_set (int key, unsigned int rights) +__pkey_set (int key, unsigned int rights) { if (key < 0 || key > 15 || rights > 3) { @@ -33,3 +34,5 @@ pkey_set (int key, unsigned int rights) pkey_write (pkru); return 0; } +libc_hidden_def (__pkey_set) +weak_alias (__pkey_set, pkey_set) diff --git a/sysdeps/unix/sysv/linux/x86/setjmpP.h b/sysdeps/unix/sysv/linux/x86/setjmpP.h index 1f50f3e..a103e5c 100644 --- a/sysdeps/unix/sysv/linux/x86/setjmpP.h +++ b/sysdeps/unix/sysv/linux/x86/setjmpP.h @@ -1,5 +1,5 @@ /* Internal header file for <setjmp.h>. Linux/x86 version. - 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/x86/sys/debugreg.h b/sysdeps/unix/sysv/linux/x86/sys/debugreg.h index 78ebdd6..f1b4c96 100644 --- a/sysdeps/unix/sysv/linux/x86/sys/debugreg.h +++ b/sysdeps/unix/sysv/linux/x86/sys/debugreg.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/x86/sys/elf.h b/sysdeps/unix/sysv/linux/x86/sys/elf.h index b38d423..e8108ef 100644 --- a/sysdeps/unix/sysv/linux/x86/sys/elf.h +++ b/sysdeps/unix/sysv/linux/x86/sys/elf.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2024 Free Software Foundation, Inc. +/* Copyright (C) 1998-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/x86/sys/io.h b/sysdeps/unix/sysv/linux/x86/sys/io.h index 48cae99..d29f0fb 100644 --- a/sysdeps/unix/sysv/linux/x86/sys/io.h +++ b/sysdeps/unix/sysv/linux/x86/sys/io.h @@ -1,4 +1,4 @@ -/* 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/x86/sys/perm.h b/sysdeps/unix/sysv/linux/x86/sys/perm.h index d5f097d..64c1748 100644 --- a/sysdeps/unix/sysv/linux/x86/sys/perm.h +++ b/sysdeps/unix/sysv/linux/x86/sys/perm.h @@ -1,4 +1,4 @@ -/* 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/x86/sys/ptrace.h b/sysdeps/unix/sysv/linux/x86/sys/ptrace.h index 8dee96c..9dea188 100644 --- a/sysdeps/unix/sysv/linux/x86/sys/ptrace.h +++ b/sysdeps/unix/sysv/linux/x86/sys/ptrace.h @@ -1,5 +1,5 @@ /* `ptrace' debugger support interface. Linux/x86 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. diff --git a/sysdeps/unix/sysv/linux/x86/sys/reg.h b/sysdeps/unix/sysv/linux/x86/sys/reg.h index f66b3aa..2b28b91 100644 --- a/sysdeps/unix/sysv/linux/x86/sys/reg.h +++ b/sysdeps/unix/sysv/linux/x86/sys/reg.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/x86/sys/ucontext.h b/sysdeps/unix/sysv/linux/x86/sys/ucontext.h index 492ae83..1ef74a7 100644 --- a/sysdeps/unix/sysv/linux/x86/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/x86/sys/ucontext.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/x86/sys/user.h b/sysdeps/unix/sysv/linux/x86/sys/user.h index a8f3052..780ab1c 100644 --- a/sysdeps/unix/sysv/linux/x86/sys/user.h +++ b/sysdeps/unix/sysv/linux/x86/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/x86/sys/vm86.h b/sysdeps/unix/sysv/linux/x86/sys/vm86.h index 52199ce..e5be645 100644 --- a/sysdeps/unix/sysv/linux/x86/sys/vm86.h +++ b/sysdeps/unix/sysv/linux/x86/sys/vm86.h @@ -1,4 +1,4 @@ -/* 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/x86/sysconf.c b/sysdeps/unix/sysv/linux/x86/sysconf.c index 6095a58..5405290 100644 --- a/sysdeps/unix/sysv/linux/x86/sysconf.c +++ b/sysdeps/unix/sysv/linux/x86/sysconf.c @@ -1,5 +1,5 @@ /* Get file-specific information about a file. Linux version. - 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/x86/time.c b/sysdeps/unix/sysv/linux/x86/time.c index 067af1f..0eb302d 100644 --- a/sysdeps/unix/sysv/linux/x86/time.c +++ b/sysdeps/unix/sysv/linux/x86/time.c @@ -1,5 +1,5 @@ /* time -- Get number of seconds since Epoch. Linux/x86 version. - Copyright (C) 2015-2024 Free Software Foundation, Inc. + Copyright (C) 2015-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/x86/tst-saved_mask-1.c b/sysdeps/unix/sysv/linux/x86/tst-saved_mask-1.c index 4f7aec2..4de6b8c 100644 --- a/sysdeps/unix/sysv/linux/x86/tst-saved_mask-1.c +++ b/sysdeps/unix/sysv/linux/x86/tst-saved_mask-1.c @@ -1,5 +1,5 @@ /* Test that sigprocmask does not read from the unused part of jmpbuf. - 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/x86_64/64/arch-syscall.h b/sysdeps/unix/sysv/linux/x86_64/64/arch-syscall.h index 5d86e75..06fbae5 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/x86_64/64/arch-syscall.h @@ -117,6 +117,7 @@ #define __NR_gettimeofday 96 #define __NR_getuid 102 #define __NR_getxattr 191 +#define __NR_getxattrat 464 #define __NR_init_module 175 #define __NR_inotify_add_watch 254 #define __NR_inotify_init 253 @@ -151,6 +152,7 @@ #define __NR_listen 50 #define __NR_listmount 458 #define __NR_listxattr 194 +#define __NR_listxattrat 465 #define __NR_llistxattr 195 #define __NR_lookup_dcookie 212 #define __NR_lremovexattr 198 @@ -205,6 +207,7 @@ #define __NR_open 2 #define __NR_open_by_handle_at 304 #define __NR_open_tree 428 +#define __NR_open_tree_attr 467 #define __NR_openat 257 #define __NR_openat2 437 #define __NR_pause 34 @@ -250,6 +253,7 @@ #define __NR_recvmsg 47 #define __NR_remap_file_pages 216 #define __NR_removexattr 197 +#define __NR_removexattrat 466 #define __NR_rename 82 #define __NR_renameat 264 #define __NR_renameat2 316 @@ -313,6 +317,7 @@ #define __NR_settimeofday 164 #define __NR_setuid 105 #define __NR_setxattr 188 +#define __NR_setxattrat 463 #define __NR_shmat 30 #define __NR_shmctl 31 #define __NR_shmdt 67 @@ -359,6 +364,7 @@ #define __NR_unlink 87 #define __NR_unlinkat 263 #define __NR_unshare 272 +#define __NR_uretprobe 335 #define __NR_uselib 134 #define __NR_userfaultfd 323 #define __NR_ustat 136 diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist index aea7848..5648772 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist @@ -2744,6 +2744,25 @@ GLIBC_2.4 sys_errlist D 0x420 GLIBC_2.4 sys_nerr D 0x4 GLIBC_2.4 unlinkat F GLIBC_2.4 unshare 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 GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist index 0ba4ef5..6719814 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist @@ -1222,3 +1222,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/x86_64/64/mmap_internal.h b/sysdeps/unix/sysv/linux/x86_64/64/mmap_internal.h index be32183..cb08968 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/mmap_internal.h +++ b/sysdeps/unix/sysv/linux/x86_64/64/mmap_internal.h @@ -1,5 +1,5 @@ /* Linux mmap system call. x86-64 version. - Copyright (C) 2015-2024 Free Software Foundation, Inc. + Copyright (C) 2015-2025 Free Software Foundation, Inc. This file is part of the GNU C Library. diff --git a/sysdeps/unix/sysv/linux/x86_64/64/timer_t_was_int_compat.h b/sysdeps/unix/sysv/linux/x86_64/64/timer_t_was_int_compat.h index 8f8b9ba..75267a9 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/timer_t_was_int_compat.h +++ b/sysdeps/unix/sysv/linux/x86_64/64/timer_t_was_int_compat.h @@ -1,5 +1,5 @@ /* timer_t/int compatibility transition. x86_64 version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/x86_64/Makefile b/sysdeps/unix/sysv/linux/x86_64/Makefile index fcbffd8..6938382 100644 --- a/sysdeps/unix/sysv/linux/x86_64/Makefile +++ b/sysdeps/unix/sysv/linux/x86_64/Makefile @@ -67,7 +67,7 @@ $(objpfx)libx86-64-isa-level.so: $(objpfx)libx86-64-isa-level-1.so cp $< $@ endif -ifeq (yes,$(have-mamx-tile)) +ifeq (yesgnu2,$(have-mamx-tile)$(have-test-mtls-descriptor)) tests += \ tst-gnu2-tls2-amx \ # tests @@ -87,10 +87,10 @@ $(objpfx)tst-gnu2-tls2-amx-mod0.so: $(libsupport) $(objpfx)tst-gnu2-tls2-amx-mod1.so: $(libsupport) $(objpfx)tst-gnu2-tls2-amx-mod2.so: $(libsupport) -CFLAGS-tst-gnu2-tls2-amx.c += -mamx-tile -CFLAGS-tst-gnu2-tls2-amx-mod0.c += -mamx-tile -mtls-dialect=gnu2 -CFLAGS-tst-gnu2-tls2-amx-mod1.c += -mamx-tile -mtls-dialect=gnu2 -CFLAGS-tst-gnu2-tls2-amx-mod2.c += -mamx-tile -mtls-dialect=gnu2 +CFLAGS-tst-gnu2-tls2-amx.c += -mamx-tile -DTEST_AMX +CFLAGS-tst-gnu2-tls2-amx-mod0.c += -mamx-tile -DTEST_AMX -mtls-dialect=gnu2 +CFLAGS-tst-gnu2-tls2-amx-mod1.c += -mamx-tile -DTEST_AMX -mtls-dialect=gnu2 +CFLAGS-tst-gnu2-tls2-amx-mod2.c += -mamx-tile -DTEST_AMX -mtls-dialect=gnu2 endif endif # $(subdir) == elf diff --git a/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S b/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S index 9d9732a..b73a18b 100644 --- a/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S +++ b/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S @@ -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/x86_64/__start_context.S b/sysdeps/unix/sysv/linux/x86_64/__start_context.S index 742452d..293f3ba 100644 --- a/sysdeps/unix/sysv/linux/x86_64/__start_context.S +++ b/sysdeps/unix/sysv/linux/x86_64/__start_context.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2024 Free Software Foundation, Inc. +/* Copyright (C) 2002-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/x86_64/allocate-shadow-stack.c b/sysdeps/unix/sysv/linux/x86_64/allocate-shadow-stack.c index 5bd1870..7e060e1 100644 --- a/sysdeps/unix/sysv/linux/x86_64/allocate-shadow-stack.c +++ b/sysdeps/unix/sysv/linux/x86_64/allocate-shadow-stack.c @@ -1,5 +1,5 @@ /* Helper function to allocate shadow stack. - 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/x86_64/allocate-shadow-stack.h b/sysdeps/unix/sysv/linux/x86_64/allocate-shadow-stack.h index 2777ead..54d763e 100644 --- a/sysdeps/unix/sysv/linux/x86_64/allocate-shadow-stack.h +++ b/sysdeps/unix/sysv/linux/x86_64/allocate-shadow-stack.h @@ -1,5 +1,5 @@ /* Helper function to allocate shadow stack. - 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. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/unix/sysv/linux/x86_64/clone.S b/sysdeps/unix/sysv/linux/x86_64/clone.S index d0adc21..f3985e7 100644 --- a/sysdeps/unix/sysv/linux/x86_64/clone.S +++ b/sysdeps/unix/sysv/linux/x86_64/clone.S @@ -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/x86_64/clone3.S b/sysdeps/unix/sysv/linux/x86_64/clone3.S index 4cc19e0..3e26bd7 100644 --- a/sysdeps/unix/sysv/linux/x86_64/clone3.S +++ b/sysdeps/unix/sysv/linux/x86_64/clone3.S @@ -1,5 +1,5 @@ /* The clone3 syscall wrapper. Linux/x86-64 version. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/x86_64/dl-cet.h b/sysdeps/unix/sysv/linux/x86_64/dl-cet.h index b4f7e6c..773f573 100644 --- a/sysdeps/unix/sysv/linux/x86_64/dl-cet.h +++ b/sysdeps/unix/sysv/linux/x86_64/dl-cet.h @@ -1,5 +1,5 @@ /* Linux/x86-64 CET initializers function. - Copyright (C) 2023-2024 Free Software Foundation, Inc. + Copyright (C) 2023-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 diff --git a/sysdeps/unix/sysv/linux/x86_64/dl-plt-rewrite.h b/sysdeps/unix/sysv/linux/x86_64/dl-plt-rewrite.h index ad637df..a28ac55 100644 --- a/sysdeps/unix/sysv/linux/x86_64/dl-plt-rewrite.h +++ b/sysdeps/unix/sysv/linux/x86_64/dl-plt-rewrite.h @@ -1,5 +1,5 @@ /* PLT rewrite helper function. Linux/x86-64 version. - Copyright (C) 2024 Free Software Foundation, Inc. + Copyright (C) 2024-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 diff --git a/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h b/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h deleted file mode 100644 index 7b45fe4..0000000 --- a/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h +++ /dev/null @@ -1,5 +0,0 @@ -#if IS_IN (ldconfig) -# include <sysdeps/unix/sysv/linux/i386/dl-procinfo.h> -#else -# include <sysdeps/x86/dl-procinfo.h> -#endif diff --git a/sysdeps/unix/sysv/linux/x86_64/get-cpuid-feature-leaf.c b/sysdeps/unix/sysv/linux/x86_64/get-cpuid-feature-leaf.c index 39b3424..378c333 100644 --- a/sysdeps/unix/sysv/linux/x86_64/get-cpuid-feature-leaf.c +++ b/sysdeps/unix/sysv/linux/x86_64/get-cpuid-feature-leaf.c @@ -1,5 +1,5 @@ /* Get CPUID feature leaf. Linux/x86-64 version. - Copyright (C) 2024 Free Software Foundation, Inc. + Copyright (C) 2024-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 diff --git a/sysdeps/unix/sysv/linux/x86_64/getcontext.S b/sysdeps/unix/sysv/linux/x86_64/getcontext.S index e588a8c..9bf3d50 100644 --- a/sysdeps/unix/sysv/linux/x86_64/getcontext.S +++ b/sysdeps/unix/sysv/linux/x86_64/getcontext.S @@ -1,5 +1,5 @@ /* Save current context. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/x86_64/kernel-features.h b/sysdeps/unix/sysv/linux/x86_64/kernel-features.h index 2681e73..7778171 100644 --- a/sysdeps/unix/sysv/linux/x86_64/kernel-features.h +++ b/sysdeps/unix/sysv/linux/x86_64/kernel-features.h @@ -1,6 +1,6 @@ /* Set flags signalling availability of kernel features based on given kernel version number. x86-64 version. - 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/x86_64/ldd-rewrite.sed b/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed index 49c0c7a..ed5277e 100644 --- a/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed +++ b/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed @@ -1 +1 @@ -s_^\(RTLDLIST=\)\(.*lib\)\(\|64\|x32\)\(/[^/]*\)\(-x86-64\|-x32\)\(\.so\.[0-9.]*\)[ ]*$_\1"\2\4\6 \264\4-x86-64\6 \2x32\4-x32\6"_ +s_^\(RTLDLIST=\)\(.*lib\)\(\|64\|x32\)\(/[^/]*\)\(-x86-64\|-x32\)\(\.so\.[0-9.]*\)[ ]*$_\1"\264\4-x86-64\6 \2\4\6 \2x32\4-x32\6"_ diff --git a/sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c b/sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c index b39812f..812e023 100644 --- a/sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c +++ b/sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c @@ -1,5 +1,5 @@ /* POSIX.1 `sigaction' call for Linux/x86-64. - 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 @@ -22,7 +22,7 @@ extern void restore_rt (void) asm ("__restore_rt") attribute_hidden; #define SET_SA_RESTORER(kact, act) \ - (kact)->sa_flags = (act)->sa_flags | SA_RESTORER; \ + (kact)->sa_flags |= SA_RESTORER; \ (kact)->sa_restorer = &restore_rt #define RESET_SA_RESTORER(act, kact) \ diff --git a/sysdeps/unix/sysv/linux/x86_64/makecontext.c b/sysdeps/unix/sysv/linux/x86_64/makecontext.c index 8602a51..3a49aa6 100644 --- a/sysdeps/unix/sysv/linux/x86_64/makecontext.c +++ b/sysdeps/unix/sysv/linux/x86_64/makecontext.c @@ -1,5 +1,5 @@ /* Create new context. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/x86_64/pointer_guard.h b/sysdeps/unix/sysv/linux/x86_64/pointer_guard.h index bc02c0a..9cf79a4 100644 --- a/sysdeps/unix/sysv/linux/x86_64/pointer_guard.h +++ b/sysdeps/unix/sysv/linux/x86_64/pointer_guard.h @@ -1,5 +1,5 @@ /* Pointer obfuscation implenentation. x86-64 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 diff --git a/sysdeps/unix/sysv/linux/x86_64/setcontext.S b/sysdeps/unix/sysv/linux/x86_64/setcontext.S index d0bcd79..2d89f89 100644 --- a/sysdeps/unix/sysv/linux/x86_64/setcontext.S +++ b/sysdeps/unix/sysv/linux/x86_64/setcontext.S @@ -1,5 +1,5 @@ /* Install given context. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/x86_64/sigcontextinfo.h b/sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h index 408b730..4809abc 100644 --- a/sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.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/x86_64/swapcontext.S b/sysdeps/unix/sysv/linux/x86_64/swapcontext.S index b2e0f19..559f66f 100644 --- a/sysdeps/unix/sysv/linux/x86_64/swapcontext.S +++ b/sysdeps/unix/sysv/linux/x86_64/swapcontext.S @@ -1,5 +1,5 @@ /* Save current context and install the given one. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-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/x86_64/syscall.S b/sysdeps/unix/sysv/linux/x86_64/syscall.S index 43af808..b211a0b 100644 --- a/sysdeps/unix/sysv/linux/x86_64/syscall.S +++ b/sysdeps/unix/sysv/linux/x86_64/syscall.S @@ -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/x86_64/syscall_cancel.S b/sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S new file mode 100644 index 0000000..fdfe80a --- /dev/null +++ b/sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S @@ -0,0 +1,57 @@ +/* Cancellable syscall wrapper. Linux/x86_64 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 [rax] __syscall_cancel_arch (volatile int *cancelhandling [%rdi], + __syscall_arg_t nr [%rsi], + __syscall_arg_t arg1 [%rdx], + __syscall_arg_t arg2 [%rcx], + __syscall_arg_t arg3 [%r8], + __syscall_arg_t arg4 [%r9], + __syscall_arg_t arg5 [SP+8], + __syscall_arg_t arg6 [SP+16]) */ + +ENTRY (__syscall_cancel_arch) + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + /* if (*cancelhandling & CANCELED_BITMASK) + __syscall_do_cancel() */ + mov (%rdi),%eax + testb $TCB_CANCELED_BITMASK, (%rdi) + jne __syscall_do_cancel + + /* Issue a 6 argument syscall, the nr [%rax] being the syscall + number. */ + mov %rdi,%r11 + mov %rsi,%rax + mov %rdx,%rdi + mov %rcx,%rsi + mov %r8,%rdx + mov %r9,%r10 + mov 8(%rsp),%r8 + mov 16(%rsp),%r9 + mov %r11,8(%rsp) + syscall + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + ret +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/x86_64/sysdep.S b/sysdeps/unix/sysv/linux/x86_64/sysdep.S index a4ec142..3aa6226 100644 --- a/sysdeps/unix/sysv/linux/x86_64/sysdep.S +++ b/sysdeps/unix/sysv/linux/x86_64/sysdep.S @@ -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/x86_64/sysdep.h b/sysdeps/unix/sysv/linux/x86_64/sysdep.h index a2b021b..1d175df 100644 --- a/sysdeps/unix/sysv/linux/x86_64/sysdep.h +++ b/sysdeps/unix/sysv/linux/x86_64/sysdep.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 @@ -376,6 +376,7 @@ # define HAVE_TIME_VSYSCALL "__vdso_time" # define HAVE_GETCPU_VSYSCALL "__vdso_getcpu" # define HAVE_CLOCK_GETRES64_VSYSCALL "__vdso_clock_getres" +# define HAVE_GETRANDOM_VSYSCALL "__vdso_getrandom" # define HAVE_CLONE3_WRAPPER 1 diff --git a/sysdeps/unix/sysv/linux/x86_64/tst-cet-property-1.c b/sysdeps/unix/sysv/linux/x86_64/tst-cet-property-1.c index e13c752..c9ad187 100644 --- a/sysdeps/unix/sysv/linux/x86_64/tst-cet-property-1.c +++ b/sysdeps/unix/sysv/linux/x86_64/tst-cet-property-1.c @@ -1,5 +1,5 @@ /* Test CET property note parser. - 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/x86_64/tst-cet-property-2.c b/sysdeps/unix/sysv/linux/x86_64/tst-cet-property-2.c index 5274a09..5b6675a 100644 --- a/sysdeps/unix/sysv/linux/x86_64/tst-cet-property-2.c +++ b/sysdeps/unix/sysv/linux/x86_64/tst-cet-property-2.c @@ -1,5 +1,5 @@ /* Test CET property note parser for [BZ #23467]. - 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 @@ -25,7 +25,7 @@ extern void bar (void); void -__attribute__ ((noclone, noinline)) +__attribute_optimization_barrier__ test (void (*func_p) (void)) { func_p (); diff --git a/sysdeps/unix/sysv/linux/x86_64/tst-cet-property-dep-2.S b/sysdeps/unix/sysv/linux/x86_64/tst-cet-property-dep-2.S index 6a8dd8b..f1f00b4 100644 --- a/sysdeps/unix/sysv/linux/x86_64/tst-cet-property-dep-2.S +++ b/sysdeps/unix/sysv/linux/x86_64/tst-cet-property-dep-2.S @@ -1,5 +1,5 @@ /* Test CET property note parser. - 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/x86_64/tst-cet-setcontext-1.c b/sysdeps/unix/sysv/linux/x86_64/tst-cet-setcontext-1.c index 388931f..4ec132f 100644 --- a/sysdeps/unix/sysv/linux/x86_64/tst-cet-setcontext-1.c +++ b/sysdeps/unix/sysv/linux/x86_64/tst-cet-setcontext-1.c @@ -1,6 +1,6 @@ /* Check getcontext and setcontext on the context from makecontext with shadow stack. - 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 @@ -30,7 +30,7 @@ static ucontext_t ctx[5]; static atomic_int done; static void -__attribute__((noinline, noclone)) +__attribute_optimization_barrier__ f2 (void) { printf ("start f2\n"); diff --git a/sysdeps/unix/sysv/linux/x86_64/tst-cet-vfork-1.c b/sysdeps/unix/sysv/linux/x86_64/tst-cet-vfork-1.c index 56d7753..3e9fe4e 100644 --- a/sysdeps/unix/sysv/linux/x86_64/tst-cet-vfork-1.c +++ b/sysdeps/unix/sysv/linux/x86_64/tst-cet-vfork-1.c @@ -1,6 +1,6 @@ /* Verify that child of the vfork-calling function can't return when shadow stack is in use. - 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 @@ -25,7 +25,7 @@ #include <x86intrin.h> #include <support/test-driver.h> -__attribute__ ((noclone, noinline)) +__attribute_optimization_barrier__ static void do_test_1 (void) { diff --git a/sysdeps/unix/sysv/linux/x86_64/tst-glibc-hwcaps-2.c b/sysdeps/unix/sysv/linux/x86_64/tst-glibc-hwcaps-2.c index 379dd47..9293ec5 100644 --- a/sysdeps/unix/sysv/linux/x86_64/tst-glibc-hwcaps-2.c +++ b/sysdeps/unix/sysv/linux/x86_64/tst-glibc-hwcaps-2.c @@ -1,5 +1,5 @@ /* Check ISA level on shared object in glibc-hwcaps subdirectories. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-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/x86_64/tst-gnu2-tls2-amx.c b/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx.c index ae4dd82..794a31f 100644 --- a/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx.c +++ b/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx.c @@ -1,5 +1,5 @@ /* Test TLSDESC relocation with AMX. - 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 @@ -27,7 +27,7 @@ extern int arch_prctl (int, ...); #define X86_XSTATE_TILEDATA_ID 18 /* Initialize tile config. */ -__attribute__ ((noinline, noclone)) +__attribute_optimization_barrier__ static void init_tile_config (__tilecfg *tileinfo) { diff --git a/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx.h b/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx.h index 1845a3c..57c424a 100644 --- a/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx.h +++ b/sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx.h @@ -1,5 +1,5 @@ /* Test TLSDESC relocation with AMX. - 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/x86_64/vfork.S b/sysdeps/unix/sysv/linux/x86_64/vfork.S index 0d8732e..608394b 100644 --- a/sysdeps/unix/sysv/linux/x86_64/vfork.S +++ b/sysdeps/unix/sysv/linux/x86_64/vfork.S @@ -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/x86_64/x32/arch-syscall.h b/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h index 6c35068..135ef3d 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h @@ -111,6 +111,7 @@ #define __NR_gettimeofday 1073741920 #define __NR_getuid 1073741926 #define __NR_getxattr 1073742015 +#define __NR_getxattrat 1073742288 #define __NR_init_module 1073741999 #define __NR_inotify_add_watch 1073742078 #define __NR_inotify_init 1073742077 @@ -145,6 +146,7 @@ #define __NR_listen 1073741874 #define __NR_listmount 1073742282 #define __NR_listxattr 1073742018 +#define __NR_listxattrat 1073742289 #define __NR_llistxattr 1073742019 #define __NR_lookup_dcookie 1073742036 #define __NR_lremovexattr 1073742022 @@ -198,6 +200,7 @@ #define __NR_open 1073741826 #define __NR_open_by_handle_at 1073742128 #define __NR_open_tree 1073742252 +#define __NR_open_tree_attr 1073742291 #define __NR_openat 1073742081 #define __NR_openat2 1073742261 #define __NR_pause 1073741858 @@ -242,6 +245,7 @@ #define __NR_recvmsg 1073742343 #define __NR_remap_file_pages 1073742040 #define __NR_removexattr 1073742021 +#define __NR_removexattrat 1073742290 #define __NR_rename 1073741906 #define __NR_renameat 1073742088 #define __NR_renameat2 1073742140 @@ -305,6 +309,7 @@ #define __NR_settimeofday 1073741988 #define __NR_setuid 1073741929 #define __NR_setxattr 1073742012 +#define __NR_setxattrat 1073742287 #define __NR_shmat 1073741854 #define __NR_shmctl 1073741855 #define __NR_shmdt 1073741891 @@ -351,6 +356,7 @@ #define __NR_unlink 1073741911 #define __NR_unlinkat 1073742087 #define __NR_unshare 1073742096 +#define __NR_uretprobe 1073742159 #define __NR_userfaultfd 1073742147 #define __NR_ustat 1073741960 #define __NR_utime 1073741956 diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/arch_prctl.c b/sysdeps/unix/sysv/linux/x86_64/x32/arch_prctl.c index efcda97..c05bfa4 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/arch_prctl.c +++ b/sysdeps/unix/sysv/linux/x86_64/x32/arch_prctl.c @@ -1,5 +1,5 @@ /* arch_prctl call for Linux/x32. - Copyright (C) 2012-2024 Free Software Foundation, Inc. + Copyright (C) 2012-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/x86_64/x32/dl-cache.h b/sysdeps/unix/sysv/linux/x86_64/x32/dl-cache.h index df86a95..f181124 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/dl-cache.h +++ b/sysdeps/unix/sysv/linux/x86_64/x32/dl-cache.h @@ -1,5 +1,5 @@ /* Support for reading /etc/ld.so.cache files written by Linux ldconfig. - Copyright (C) 2012-2024 Free Software Foundation, Inc. + Copyright (C) 2012-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/x86_64/x32/fixup-asm-unistd.h b/sysdeps/unix/sysv/linux/x86_64/x32/fixup-asm-unistd.h index 47fa8af..0a8348d 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/fixup-asm-unistd.h +++ b/sysdeps/unix/sysv/linux/x86_64/x32/fixup-asm-unistd.h @@ -1,5 +1,5 @@ /* Regularize <asm/unistd.h> definitions. X32 version. - Copyright (C) 2020-2024 Free Software Foundation, Inc. + Copyright (C) 2020-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 diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist index 4ab3681..25a39d0 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist @@ -2763,3 +2763,22 @@ GLIBC_2.39 stdc_trailing_zeros_ui F 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.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/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist index 4057115..1a1069a 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist @@ -1222,3 +1222,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/x86_64/x32/lseek.S b/sysdeps/unix/sysv/linux/x86_64/x32/lseek.S index 271d7e3..bf05c61 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/lseek.S +++ b/sysdeps/unix/sysv/linux/x86_64/x32/lseek.S @@ -1,5 +1,5 @@ /* The lseek system call with 64-bit offset. Linux/x32 version. - Copyright (C) 2012-2024 Free Software Foundation, Inc. + Copyright (C) 2012-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/x86_64/x32/prctl.c b/sysdeps/unix/sysv/linux/x86_64/x32/prctl.c index 4bf1b47..714fd28 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/prctl.c +++ b/sysdeps/unix/sysv/linux/x86_64/x32/prctl.c @@ -1,5 +1,5 @@ /* prctl - Linux specific syscall. x86-64 x32 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/x86_64/x32/syscall_types.h b/sysdeps/unix/sysv/linux/x86_64/x32/syscall_types.h new file mode 100644 index 0000000..3c12b56 --- /dev/null +++ b/sysdeps/unix/sysv/linux/x86_64/x32/syscall_types.h @@ -0,0 +1,34 @@ +/* Types and macros used for syscall issuing. x86_64/x32 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 + <https://www.gnu.org/licenses/>. */ + +#ifndef _SYSCALL_TYPES_H +#define _SYSCALL_TYPES_H + +#include <libc-diag.h> + +typedef long long int __syscall_arg_t; + +/* Syscall arguments for x32 follows x86_64 ABI, however pointers are 32 bits + should be zero extended. */ +#define __SSC(__x) \ + ({ \ + TYPEFY (__x, __tmp) = ARGIFY (__x); \ + (__syscall_arg_t) __tmp; \ + }) + +#endif diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/sysdep.h b/sysdeps/unix/sysv/linux/x86_64/x32/sysdep.h index f3f9c52..707261a 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/sysdep.h +++ b/sysdeps/unix/sysv/linux/x86_64/x32/sysdep.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2024 Free Software Foundation, Inc. +/* Copyright (C) 2012-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/x86_64/x32/times.c b/sysdeps/unix/sysv/linux/x86_64/x32/times.c index 67b6fc1..edeea37 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/times.c +++ b/sysdeps/unix/sysv/linux/x86_64/x32/times.c @@ -1,5 +1,5 @@ /* Linux times. X32 version. - Copyright (C) 2015-2024 Free Software Foundation, Inc. + Copyright (C) 2015-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/xmknod.c b/sysdeps/unix/sysv/linux/xmknod.c index 206843b..7677dbe 100644 --- a/sysdeps/unix/sysv/linux/xmknod.c +++ b/sysdeps/unix/sysv/linux/xmknod.c @@ -1,5 +1,5 @@ /* xmknod call using old-style Unix mknod system call. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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/xmknodat.c b/sysdeps/unix/sysv/linux/xmknodat.c index 0535b3d..a082c69 100644 --- a/sysdeps/unix/sysv/linux/xmknodat.c +++ b/sysdeps/unix/sysv/linux/xmknodat.c @@ -1,4 +1,4 @@ -/* 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 diff --git a/sysdeps/unix/sysv/linux/xstat.c b/sysdeps/unix/sysv/linux/xstat.c index fa327ca..c2c05b4 100644 --- a/sysdeps/unix/sysv/linux/xstat.c +++ b/sysdeps/unix/sysv/linux/xstat.c @@ -1,5 +1,5 @@ /* xstat using old-style Unix stat system call. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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 @@ -38,7 +38,7 @@ __xstat (int vers, const char *name, struct stat *buf) { # if STAT_IS_KERNEL_STAT /* New kABIs which uses generic pre 64-bit time Linux ABI, - e.g. csky, nios2 */ + e.g. csky. */ int r = INLINE_SYSCALL_CALL (fstatat64, AT_FDCWD, name, buf, 0); return r ?: stat_overflow (buf); # else diff --git a/sysdeps/unix/sysv/linux/xstat64.c b/sysdeps/unix/sysv/linux/xstat64.c index aa63152..153a01c 100644 --- a/sysdeps/unix/sysv/linux/xstat64.c +++ b/sysdeps/unix/sysv/linux/xstat64.c @@ -1,5 +1,5 @@ /* xstat64 using Linux stat64 system call. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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 @@ -67,7 +67,7 @@ ___xstat64 (int vers, const char *name, struct stat64 *buf) #else # if STAT_IS_KERNEL_STAT /* New kABIs which uses generic pre 64-bit time Linux ABI, - e.g. csky, nios2 */ + e.g. csky. */ if (vers == _STAT_VER_KERNEL) return INLINE_SYSCALL_CALL (fstatat64, AT_FDCWD, name, buf, 0); # else diff --git a/sysdeps/unix/sysv/linux/xstatconv.c b/sysdeps/unix/sysv/linux/xstatconv.c index 8db6001..aaf766b 100644 --- a/sysdeps/unix/sysv/linux/xstatconv.c +++ b/sysdeps/unix/sysv/linux/xstatconv.c @@ -1,5 +1,5 @@ /* Convert between the kernel's `struct stat' format, and libc's. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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/xstatconv.h b/sysdeps/unix/sysv/linux/xstatconv.h index b9d7738..7f54dbe 100644 --- a/sysdeps/unix/sysv/linux/xstatconv.h +++ b/sysdeps/unix/sysv/linux/xstatconv.h @@ -1,5 +1,5 @@ /* Convert between the kernel's `struct stat' format, and libc's. - Copyright (C) 1991-2024 Free Software Foundation, Inc. + Copyright (C) 1991-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/xstatover.h b/sysdeps/unix/sysv/linux/xstatover.h index 7aada3b..df7d74a 100644 --- a/sysdeps/unix/sysv/linux/xstatover.h +++ b/sysdeps/unix/sysv/linux/xstatover.h @@ -1,5 +1,5 @@ /* Overflow tests for stat, statfs, and lseek functions. - 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 |