aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
AgeCommit message (Collapse)AuthorFilesLines
2 daysi686: Compile .op files and gmon tests with -mfentryH.J. Lu3-0/+89
On i686, after GCC 16 commit: commit 07d8de9174c421d719649639a1452b8b9f2eee32 Author: H.J. Lu <hjl.tools@gmail.com> Date: Wed Jul 2 08:58:23 2025 +0800 x86-64: Add --enable-x86-64-mfentry which warns ‘-pg’ without ‘-mfentry’, when glibc is configured with --disable-default-pie, GCC 16 fails to compile .op files and gmon tests with error: cc1: error: ‘-pg’ without ‘-mfentry’ may be unreliable with shrink wrapping [-Werror] Compile .op files and gmon tests with -mfentry if it is supported by CC/TEST_CC and glibc is configured with --disable-default-pie. This fixes BZ #33376. Signed-off-by: H.J. Lu <hjl.tools@gmail.com> Reviewed-by: Joseph Myers <josmyers@redhat.com>
3 daysi386: Use __seg_gs qualifier to cast access to TCB in THREAD_GSCOPE_RESET_FLAG()Uros Bizjak1-2/+3
Use the __seg_gs named address space qualifier to cast access to the gscope_flag in the TCB as a %gs: prefixed address. This enables the use of the "m" operand constraint, which informs the compiler about memory access in the inline assembly. Signed-off-by: Uros Bizjak <ubizjak@gmail.com> Cc: H.J.Lu <hjl.tools@gmail.com> Cc: Florian Weimer <fweimer@redhat.com> Cc: Carlos O'Donell <carlos@redhat.com>
3 daysx86_64: Use __seg_fs qualifier to cast access to TCB in ↵Uros Bizjak1-2/+3
THREAD_GSCOPE_RESET_FLAG() Use the __seg_fs named address space qualifier to cast access to the gscope_flag in the TCB as a %fs: prefixed address. This enables the use of the "m" operand constraint, which informs the compiler about memory access in the inline assembly. Signed-off-by: Uros Bizjak <ubizjak@gmail.com> Cc: H.J.Lu <hjl.tools@gmail.com> Cc: Florian Weimer <fweimer@redhat.com> Cc: Carlos O'Donell <carlos@redhat.com>
4 daysFix RISC-V soft-float _FPU_SETCW for GCC 16 set-but-not-used warningsJoseph Myers1-1/+1
The soft-float RISC-V definition of _FPU_SETCW results in a -Werror=unused-but-set-variable= build failure with GCC mainline (in math/setfpucw.c) because it does not use the dummy cw variable. Change it to (void) (cw) as on other architectures to avoid this build failure. Tested with build-many-glibcs.py (compilers) for riscv64-linux-gnu-rv64imac-lp64, which previously failed. Reviewed-by: Sam James <sam@gentoo.org>
6 daysLoongArch: Use the generic shmlab.h.caiyinyu1-24/+0
The shmlba.h file related to the LoongArch architecture was introduced in commit 3eed5f3a1ee to address the mismatch in the SHMLBA definition between glibc and the kernel. See [1]. The SHMLBA definition was later updated in commit d23b77953f5a. See [2]. Now, we adopt the definition from the common layer. [1]: commit 3eed5f3a1ee356969afb403a1cf18d06f8d2d98a Author: caiyinyu <caiyinyu@loongson.cn> Date: Thu May 25 17:01:11 2023 +0800 LoongArch: Fix inconsistency in SHMLBA macro values between glibc and kernel The LoongArch glibc was using the value of the SHMLBA macro from common code, which is __getpagesize() (16k), but this was inconsistent with the value of the SHMLBA macro in the kernel, which is SZ_64K (64k). This caused several shmat-related tests in LTP (Linux Test Project) to fail. This commit fixes the issue by ensuring that the glibc's SHMLBA macro value matches the value used in the kernel like other architectures. [2]: commit d23b77953f5a4fbf94c05157b186aac2a247ae32 Author: Huacai Chen <chenhuacai@kernel.org> Date: Wed Jan 17 12:43:08 2024 +0800 LoongArch: Change SHMLBA from SZ_64K to PAGE_SIZE LoongArch has hardware page coloring for L1 Cache, so we don't have cache aliases. But SFB (Store Fill Buffer) still has aliases. So we define SHMLBA to SZ_64K previously. But there are losts of applications use PAGE_SIZE rather than SHMLBA to mmap() file pages and shared pages. Of course we can fix them one by one, but not easy. On the other hand, we can simply disable SFB for 4KB page size to fix cache alias (there will be performance decrease, but acceptable), and in future we will fix SFB in hardware. So we can safely define SHMLBA to PAGE_SIZE (use the generic shmparam.h) to make life easier. Signed-off-by: caiyinyu <caiyinyu@loongson.cn> Reported-by: lixing <lixing@loongson.cn> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
6 daysalpha: Fix missing inexact-flag raising for lround/lrintAdhemerval Zanella9-140/+17
The l*[rint|round]f implements uses alpha 'cvtst/s', 'addt/suc', adn 'cvttq/svd' which are not not fully IEEE compliant w.r.t inexact-flag raising.. Use the software fallback implementation instead. Checked on alpha-linux-gnu. Tested-by: Michael Cree <mcree@orcon.net.nz> Reviewed-by: Carlos O'Donell <carlos@redhat.com>
6 daysmath: Remove clz_uint64/ctz_uint64 and use stdbit.hAdhemerval Zanella2-22/+5
Checked on aarch64-linux-gnu and x86_64-linux-gnu Reviewed-by: Collin Funk <collin.funk1@gmail.com>
6 daysmath: Split erf and erfcAdhemerval Zanella2-126/+217
Checked on x86_64-linux-gnu, aarch64-linux-gnu, and powerpc64le-linux-gnu. Reviewed-by: DJ Delorie <dj@redhat.com>
6 daysmath: Use internal fesetround alias on fmaAdhemerval Zanella4-7/+7
To avoid linknamespace issues on old standards. It is required if the fallback fma implementation is used if/when it is also used internally for other implementation. Reviewed-by: DJ Delorie <dj@redhat.com>
6 daysmath: Use internal fetestexcept alias on fmaAdhemerval Zanella4-10/+10
To avoid linknamespace issues on old standards. It is required if the fallback fma implementation is used if/when it is also used internally for other implementation. Reviewed-by: DJ Delorie <dj@redhat.com>
6 daysmath: Add fetestexcept internal aliasAdhemerval Zanella19-22/+58
To avoid linknamespace issues on old standards. It is required if the fallback fma implementation is used if/when it is also used internally for other implementation. Reviewed-by: DJ Delorie <dj@redhat.com>
6 daysmath: Use internal feholdexcept alias on fmaAdhemerval Zanella4-4/+4
To avoid linknamespace issues on old standards. It is required if the fallback fma implementation is used if/when it is also used internally for other implementation. Reviewed-by: DJ Delorie <dj@redhat.com>
6 daysmath: Use internal feupdateenv alias on fmaAdhemerval Zanella4-11/+11
To avoid linknamespace issues on old standards. It is required if the fallback fma implementation is used if/when it is also used internally for other implementation. Reviewed-by: DJ Delorie <dj@redhat.com>
6 daysmath: Use internal feholdexcept alias on fmaAdhemerval Zanella4-4/+4
To avoid linknamespace issues on old standards. It is required if the fallback fma implementation is used if/when it is also used internally for other implementation. Reviewed-by: DJ Delorie <dj@redhat.com>
6 daysmath: Add feclearexcept internal aliasAdhemerval Zanella18-12/+42
To avoid linknamespace issues on old standards. It is required if the fallback fma implementation is used if/when it is also used internally for other implementation. Reviewed-by: DJ Delorie <dj@redhat.com>
6 daysmath: Fix x86_64 build for -Os (BZ 33367)Adhemerval Zanella7-0/+43
The compiler might not inline the trunc function call for USE_TRUNC_BUILTIN [1]. This patch adds an optimized __trunc/__truncf for x86 used on modf ifunc variant to avoid the trunc libcall. Checked on x86_64, x86_64-v2, x86_64-v3, and x86_64-v4. Used -O2 and -Os options. Performed a full make check on x86_64 with both optimizations. [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121861 Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
7 daysAArch64: add optimised strspn/strcspnremph2-0/+148
Requires Neon (aka. Advanced SIMD). Looks up 16 characters at a time, for a 2-3x perfomance improvement, and a ~30% speedup on the strtok & strsep benchtests, as tested on Cortex A-{53,72}. Signed-off-by: remph <lhr@disroot.org> Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
7 daysi386: Use __seg_gs qualifiers in {STACK, POINTER}_CHK_GUARD macrosUros Bizjak1-7/+2
Use the __seg_gs named address space qualifiers to cast reads of the guard values in the TCB as %gs: prefixed addresses. Signed-off-by: Uros Bizjak <ubizjak@gmail.com> Cc: H.J.Lu <hjl.tools@gmail.com> Cc: Florian Weimer <fweimer@redhat.com> Cc: Carlos O'Donell <carlos@redhat.com> Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
7 daysx86_64: Use __seg_fs qualifiers in {STACK, POINTER}_CHK_GUARD macrosUros Bizjak1-6/+2
Use the __seg_fs named address space qualifiers to cast reads of the guard values in the TCB as %fs: prefixed addresses. Signed-off-by: Uros Bizjak <ubizjak@gmail.com> Cc: H.J.Lu <hjl.tools@gmail.com> Cc: Florian Weimer <fweimer@redhat.com> Cc: Carlos O'Donell <carlos@redhat.com> Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
7 daysx86: Remove x86 version of thread_pointer.hUros Bizjak1-30/+0
The x86 version of thread_pointer.h is the same as the generic one. Signed-off-by: Uros Bizjak <ubizjak@gmail.com> Cc: H.J.Lu <hjl.tools@gmail.com> Cc: Florian Weimer <fweimer@redhat.com> Cc: Carlos O'Donell <carlos@redhat.com> Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
7 daysx86: Remove stale __GNUC_PREREQ (11, 1) test from __thread_pointer()Uros Bizjak1-10/+0
GCC 12 is currently the minimum supported compiler version. Remove no longer needed __GNUC_PREREQ (11, 1) test from __thread_pointer(). Signed-off-by: Uros Bizjak <ubizjak@gmail.com> Cc: H.J.Lu <hjl.tools@gmail.com> Cc: Florian Weimer <fweimer@redhat.com> Cc: Carlos O'Donell <carlos@redhat.com> Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
8 daysatomics: Remove unused atomicsWilco Dijkstra1-1/+1
Remove all unused atomics. Replace uses of catomic_increment and catomic_decrement with atomic_fetch_add_relaxed which maps to a standard compiler builtin. Relaxed memory ordering is correct for simple counters since they only need atomicity. Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
8 daysx86: Define atomic_compare_and_exchange_{val, bool}_acq using ↵Uros Bizjak1-4/+14
__atomic_compare_exchange_n No functional changes. Signed-off-by: Uros Bizjak <ubizjak@gmail.com> Cc: Florian Weimer <fweimer@redhat.com> Cc: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org> Cc: Wilco Dijkstra <Wilco.Dijkstra@arm.com> Cc: Collin Funk <collin.funk1@gmail.com> Cc: H.J.Lu <hjl.tools@gmail.com> Cc: Carlos O'Donell <carlos@redhat.com> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
8 daysx86: Define atomic_exchange_acq using __atomic_exchange_nUros Bizjak1-28/+1
The resulting libc.so is identical on both x86_64 and i386 targets compared to unpatched builds: $ sha1sum libc-x86_64-old.so libc-x86_64-new.so 74eca1b87f2ecc9757a984c089a582b7615d93e7 libc-x86_64-old.so 74eca1b87f2ecc9757a984c089a582b7615d93e7 libc-x86_64-new.so $ sha1sum libc-i386-old.so libc-i386-new.so 882bbab8324f79f4fbc85224c4c914fc6822ece7 libc-i386-old.so 882bbab8324f79f4fbc85224c4c914fc6822ece7 libc-i386-new.so Signed-off-by: Uros Bizjak <ubizjak@gmail.com> Cc: Florian Weimer <fweimer@redhat.com> Cc: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org> Cc: Wilco Dijkstra <Wilco.Dijkstra@arm.com> Cc: Collin Funk <collin.funk1@gmail.com> Cc: H.J.Lu <hjl.tools@gmail.com> Cc: Carlos O'Donell <carlos@redhat.com> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
8 daysx86: Define atomic_full_barrier using __sync_synchronizeUros Bizjak1-6/+2
For x86_64 targets, __sync_synchronize emits a full 64-bit 'LOCK ORQ $0x0,(%rsp)' instead of 'LOCK ORL $0x0,(%rsp)'. No functional changes. Signed-off-by: Uros Bizjak <ubizjak@gmail.com> Cc: Florian Weimer <fweimer@redhat.com> Cc: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org> Cc: Wilco Dijkstra <Wilco.Dijkstra@arm.com> Cc: Collin Funk <collin.funk1@gmail.com> Cc: H.J.Lu <hjl.tools@gmail.com> Cc: Carlos O'Donell <carlos@redhat.com> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
8 daysx86: Remove catomic_* locking primitivesUros Bizjak1-108/+4
Remove obsolete catomic_* locking primitives which don't map to standard compiler builtins. There are still a couple of places in the tree that uses them (malloc/arena.c and malloc/malloc.c). x86 didn't define __arch_c_compare_and_exchange_bool_* primitives so fallback code used __arch_c_compare_and_exchange_val_* primitives instead. This resulted in unoptimal code for catomic_compare_and_exchange_bool_acq where superfluous CMP was emitted after CMPXCHG, e.g. in arena_get2: 775b8: 48 8d 4a 01 lea 0x1(%rdx),%rcx 775bc: 48 89 d0 mov %rdx,%rax 775bf: 64 83 3c 25 18 00 00 cmpl $0x0,%fs:0x18 775c6: 00 00 775c8: 74 01 je 775cb <arena_get2+0x35b> 775ca: f0 48 0f b1 0d 75 3d lock cmpxchg %rcx,0x163d75(%rip) # 1db348 <narenas> 775d1: 16 00 775d3: 48 39 c2 cmp %rax,%rdx 775d6: 74 7f je 77657 <arena_get2+0x3e7> that now becomes: 775b8: 48 8d 4a 01 lea 0x1(%rdx),%rcx 775bc: 48 89 d0 mov %rdx,%rax 775bf: f0 48 0f b1 0d 80 3d lock cmpxchg %rcx,0x163d80(%rip) # 1db348 <narenas> 775c6: 16 00 775c8: 74 7f je 77649 <arena_get2+0x3d9> OTOH, catomic_decrement does not fallback to atomic_fetch_add (, -1) builtin but to the cmpxchg loop, so the generated code in arena_get2 regresses a bit, from using LOCK DECQ insn: 77829: 64 83 3c 25 18 00 00 cmpl $0x0,%fs:0x18 77830: 00 00 77832: 74 01 je 77835 <arena_get2+0x5c5> 77834: f0 48 ff 0d 0c 3b 16 lock decq 0x163b0c(%rip) # 1db348 <narenas> 7783b: 00 to a cmpxchg loop: 7783d: 48 8b 0d 04 3b 16 00 mov 0x163b04(%rip),%rcx # 1db348 <narenas> 77844: 48 8d 71 ff lea -0x1(%rcx),%rsi 77848: 48 89 c8 mov %rcx,%rax 7784b: f0 48 0f b1 35 f4 3a lock cmpxchg %rsi,0x163af4(%rip) # 1db348 <narenas> 77852: 16 00 77854: 0f 84 c9 fa ff ff je 77323 <arena_get2+0xb3> 7785a: eb e1 jmp 7783d <arena_get2+0x5cd> Defining catomic_exchange_and_add using __atomic_fetch_add solves the above issue and generates optimal: 77809: f0 48 83 2d 36 3b 16 lock subq $0x1,0x163b36(%rip) # 1db348 <narenas> 77810: 00 01 Depending on the target processor, the compiler may emit either 'LOCK ADD/SUB $1, m' or 'INC/DEC $1, m' instruction, due to partial flag register stall issue. Signed-off-by: Uros Bizjak <ubizjak@gmail.com> Cc: Florian Weimer <fweimer@redhat.com> Cc: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org> Cc: Wilco Dijkstra <Wilco.Dijkstra@arm.com> Cc: Collin Funk <collin.funk1@gmail.com> Cc: H.J.Lu <hjl.tools@gmail.com> Cc: Carlos O'Donell <carlos@redhat.com> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
8 daysx86: Remove unused atomicsUros Bizjak1-353/+0
Remove unused atomics from <sysdeps/x86/atomic-machine.h>. The resulting libc.so is identical on both x86_64 and i386 targets compared to unpatched builds: $ sha1sum libc-x86_64-old.so libc-x86_64-new.so b89aaa2b71efd435104ebe6f4cd0f2ef89fcac90 libc-x86_64-old.so b89aaa2b71efd435104ebe6f4cd0f2ef89fcac90 libc-x86_64-new.so $ sha1sum libc-i386-old.so libc-i386-new.so aa70f2d64da2f0f516634b116014cfe7af3e5b1a libc-i386-old.so aa70f2d64da2f0f516634b116014cfe7af3e5b1a libc-i386-new.so Signed-off-by: Uros Bizjak <ubizjak@gmail.com> Cc: Florian Weimer <fweimer@redhat.com> Cc: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org> Cc: Wilco Dijkstra <Wilco.Dijkstra@arm.com> Cc: Collin Funk <collin.funk1@gmail.com> Cc: H.J.Lu <hjl.tools@gmail.com> Cc: Carlos O'Donell <carlos@redhat.com> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
8 daysatomic: Switch power to builtin atomicsWilco Dijkstra3-522/+2
Switch power to builtin atomics. Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
8 daysatomic: Switch hppa to builtin atomicsWilco Dijkstra1-76/+1
Switch hppa to builtin atomics. Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
8 daysatomic: Switch sh to builtin atomicsWilco Dijkstra1-375/+1
Switch sh to builtin atomics. Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
8 daysatomic: Switch microblaze to builtin atomicsWilco Dijkstra1-228/+1
Switch microblaze to builtin atomics. Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
8 daysatomic: Switch alpha to builtin atomicsWilco Dijkstra1-312/+1
Switch alpha to builtin atomics. Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
8 daysatomic: Switch m68k to builtin atomicsWilco Dijkstra3-249/+4
Switch m68k to builtin atomics. Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
9 daysx86: Include <bits/stdlib-bsearch.h> in dl-cacheinfo.hH.J. Lu1-2/+13
On x86-64, when glibc is configured with --enable-stack-protector=all and compiled with -Os, ld.so crashes very early: (gdb) r --direct Starting program: /export/build/gnu/tools-build/glibc-gitlab/build-x86_64-linux/string/test-memswap --direct Program received signal SIGSEGV, Segmentation fault. 0x00007ffff7f41b0a in bsearch (__key=__key@entry=0x7fffffffda28, __base=__base@entry=0x7ffff7fca140 <intel_02_known>, __nmemb=__nmemb@entry=68, __size=__size@entry=8, __compar=__compar@entry=0x7ffff7f3b691 <intel_02_known_compare>) at ../bits/stdlib-bsearch.h:22 22 { (gdb) disass Dump of assembler code for function bsearch: 0x00007ffff7f41af0 <+0>: push %r15 0x00007ffff7f41af2 <+2>: mov %rcx,%r15 0x00007ffff7f41af5 <+5>: push %r14 0x00007ffff7f41af7 <+7>: push %r13 0x00007ffff7f41af9 <+9>: mov %rsi,%r13 0x00007ffff7f41afc <+12>: push %r12 0x00007ffff7f41afe <+14>: mov %rdi,%r12 0x00007ffff7f41b01 <+17>: push %rbp 0x00007ffff7f41b02 <+18>: mov %rdx,%rbp 0x00007ffff7f41b05 <+21>: push %rbx 0x00007ffff7f41b06 <+22>: sub $0x18,%rsp => 0x00007ffff7f41b0a <+26>: mov %fs:0x28,%r14 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ We can't use stack protector at this point. 0x00007ffff7f41b13 <+35>: mov %r14,0x8(%rsp) 0x00007ffff7f41b18 <+40>: mov %r8,%r14 0x00007ffff7f41b1b <+43>: test %rbp,%rbp 0x00007ffff7f41b1e <+46>: je 0x7ffff7f41b48 <bsearch+88> 0x00007ffff7f41b20 <+48>: mov %rbp,%rbx 0x00007ffff7f41b23 <+51>: mov %r12,%rdi 0x00007ffff7f41b26 <+54>: shr $1,%rbx 0x00007ffff7f41b29 <+57>: imul %r15,%rbx 0x00007ffff7f41b2d <+61>: add %r13,%rbx 0x00007ffff7f41b30 <+64>: mov %rbx,%rsi (gdb) bt #0 0x00007ffff7f41b0a in bsearch (__key=__key@entry=0x7fffffffda28, __base=__base@entry=0x7ffff7fca140 <intel_02_known>, __nmemb=__nmemb@entry=68, __size=__size@entry=8, __compar=__compar@entry=0x7ffff7f3b691 <intel_02_known_compare>) at ../bits/stdlib-bsearch.h:22 #1 0x00007ffff7f3c1be in intel_check_word (name=188, value=1979933440, has_level_2=has_level_2@entry=0x7fffffffda7f, no_level_2_or_3=no_level_2_or_3@entry=0x7fffffffda7e, cpu_features=<optimized out>) at ../sysdeps/x86/dl-cacheinfo.h:217 #2 0x00007ffff7f3c29f in handle_intel (name=name@entry=188, cpu_features=<optimized out>) at ../sysdeps/x86/dl-cacheinfo.h:279 #3 0x00007ffff7f3ccf9 in dl_init_cacheinfo (cpu_features=<optimized out>) at ../sysdeps/x86/dl-cacheinfo.h:852 #4 init_cpu_features (cpu_features=<optimized out>) at ../sysdeps/x86/cpu-features.c:1153 #5 0x00007ffff7f3d6f9 in __libc_start_main_impl (main=0x7ffff7f396dc <main>, argc=2, argv=0x7fffffffdbe8, init=<optimized out>, fini=<optimized out>, rtld_fini=0x0, stack_end=0x7fffffffdbd8) at ../csu/libc-start.c:269 #6 0x00007ffff7f39901 in _start () at ../sysdeps/x86_64/start.S:115 (gdb) The problem is that since __USE_EXTERN_INLINES isn't defined with -Os, the inline bsearch in <bits/stdlib-bsearch.h> isn't available and the external bsearch is compiled with stack protector. Include <bits/stdlib-bsearch.h> in dl-cacheinfo.h fixed BZ #33374. Signed-off-by: H.J. Lu <hjl.tools@gmail.com> Reviewed-by: Sam James <sam@gentoo.org>
9 daysLinux: Add missing si_code constants from Linux kernelThiago Jung Bauermann1-1/+15
This brings the si_codes listed in siginfo-consts.h up-to-date with Linux v6.16's include/uapi/asm-generic/siginfo.h. Tested on aarch64-linux-gnu and x86_64-linux-gnu. Suggested-by: Carlos O'Donell <carlos@redhat.com> Reviewed-by: Carlos O'Donell <carlos@redhat.com> Tested-by: Carlos O'Donell <carlos@redhat.com>
9 daysRemove futex_supports_psharedAndreas Schwab3-43/+0
Both NPTL and HTL support PTHREAD_PROCESS_SHARED, and since the removal of the NaCL port there are no other pthread implementations.
10 daysmisc: Add support for Linux uio.h RWF_DONTCACHE flagXi Ruoyao1-0/+1
Linux 6.14 adds the new flag for uncached buffered IO on a filesystem supporting it. This caused two test failures as these tests expected the flag 0x00000080 is unused. Add the flag definition to fix these tests on Linux >= 6.14: FAIL: misc/tst-preadvwritev2 FAIL: misc/tst-preadvwritev64v2 The test failures were not detected in routine test suite runs because normally we create the test file in /tmp, where a tmpfs is usually mounted, and tmpfs does not support this flag. But it can be reproduced with TMPDIR set to some directory in an ext4 file system. Link: https://git.kernel.org/torvalds/c/af6505e5745b Signed-off-by: Xi Ruoyao <xry111@xry111.site> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
10 daysalpha: Align stack for alphaAdhemerval Zanella1-0/+2
As done already for x86_64 [1] and aarch64 [2]. It fixes misc/tst-misalign-clone on alpha. [1] https://sourceware.org/bugzilla/show_bug.cgi?id=27902 [2] https://sourceware.org/bugzilla/show_bug.cgi?id=27939 Reviewed-by: Collin Funk <collin.funk1@gmail.com>
13 daysx86_64: Unconditionally run test elf/check-dt-x86-64-pltArjun Shankar1-1/+1
The intention of GLIBC_ABI_DT_X86_64_PLT is simply to mark the existence of the fix in f8587a61892cbafd98ce599131bf4f103466f084 ("x86-64: Ignore r_addend for R_X86_64_GLOB_DAT/R_X86_64_JUMP_SLOT"). Testing for GLIBC_ABI_DT_X86_64_PLT does not depend on the linker supporting -z mark-plt. Therefore remove this dependency on linker support and test unconditionally. Fixes commit 399384e0c8193e31aea014220ccfa24300ae5938 ("x86-64: Add GLIBC_ABI_DT_X86_64_PLT [BZ #33212]") Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
2025-09-03Fix sysdeps/mips/dl-machine-reject-phdr.h build with GCC 16Joseph Myers1-1/+1
Building for MIPS has been broken with GCC mainline since mid-July, probably GCC commit 0eac9cfee8cb0b21de866a04d5d59685ab35208f "c, c++: Extend -Wunused-but-set-* warnings [PR44677]", because the variable perfect_match in elf_machine_reject_phdr_p is set unconditionally, but only used if _MIPS_SIM == _ABIO32. Mark it with __attribute__ ((unused)), which seems cleaner in such a conditionally-used case than making all other logic relating to this variable conditional. Tested with build-many-glibcs.py (compilers build, which previously failed) for mips64-linux-gnu.
2025-09-02AArch64: Implement exp2m1 and exp10m1 routinesHasaan Khan17-0/+1283
Vector variants of the new C23 exp2m1 & exp10m1 routines. Note: Benchmark inputs for exp2m1 & exp10m1 are identical to exp2 & exp10 respectively, this also includes the floating point variations. Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
2025-09-01nptl: Fix "Arch-sepecific" typo in commentJonathan Wakely1-1/+1
2025-09-01nptl: Drop IS_IN (libpthread) around hidden_proto (__pthread_rwlock_unlock)Xi Ruoyao1-5/+1
Now libpthread is a dummy library and it no longer contains __pthread_rwlock_unlock at all, thus IS_IN (libpthread) does not make sense here. It seems an left over from commit eb29dcde31e7 ("nptl: Move rwlock functions with forwarders into libc") and it caused libc.so to export an unversioned __pthread_rwlock_unlock on Linux ports introduced after the 2.34 release (loongarch and or1k) but the symbol is not ever supposed to be exported on those new ports. Only since the commit 3b2b88cceeb7 ("elf: early conversion of elf p_flags to mprotect flags") the header dependency change happened to pull in libc-lockP.h which sets hidden_proto (__pthread_rwlock_unlock) correctly, the symbol is no longer exported, breaking the ABI on those ports. Remove this #if as a clean up and to prevent such a mess from happening again. Signed-off-by: Xi Ruoyao <xry111@xry111.site> Reviewed-by: Florian Weimer <fweimer@redhat.com>
2025-08-29x86: Use flag output operands for inline asm in atomic-machine.hUros Bizjak1-48/+48
Use the flag output constraints feature available in gcc 6+ ("=@cc<cond>") instead of explicitly setting a boolean variable with SETcc instruction. This approach decouples the instruction that sets the flags from the code that consumes them, allowing the compiler to create better code when working with flags users. Instead of e.g.: lock add %esi,(%rdi) sets %sil test %sil,%sil jne <...> the compiler now generates: lock add %esi,(%rdi) js <...> No functional changes intended. Signed-off-by: Uros Bizjak <ubizjak@gmail.com> Cc: H.J.Lu <hjl.tools@gmail.com> Cc: Florian Weimer <fweimer@redhat.com> Cc: Carlos O'Donell <carlos@redhat.com> Reviewed-by: Florian Weimer <fweimer@redhat.com>
2025-08-28x32: Fix, optimize and cleanup RSEQ_* accessorsUros Bizjak1-31/+39
Add missing "memory" clobber to accessors. The "memory" clobber tells the compiler that the assembly code performs memory reads or writes to items other than those listed in the input and output operands (for example, accessing the memory pointed to by one of the input parameters). Use MOVZBL instead of MOVB when reading 1-byte memory location into a register. MOVB to a register actually inserts into the LSB of the word-sized register, making the result dependent on the previous register value. MOVZBL avoids this issue. Change %P asm operand modifiers to %c. The ‘c’ modifier is a generic asm operand modifier that requires a constant operand and prints the constant expression without punctuation. Replace %b asm operand modifiers with explicit casts. Explicit casts inform the compiler which part of the register value is used, allowing it to perform additional optimizations (e.g. narrowing the preceding operation). Remove %q asm operand modifiers. Since the value is already cast to 'long long int', the compiler will emit a 64-bit register name in the assembly without needing %q. No functional changes intended. Tested-by: H.J. Lu <hjl.tools@gmail.com> Co-Authored-By: H.J. Lu <hjl.tools@gmail.com> Signed-off-by: H.J. Lu <hjl.tools@gmail.com> Signed-off-by: Uros Bizjak <ubizjak@gmail.com> Cc: Florian Weimer <fweimer@redhat.com> Cc: Carlos O'Donell <carlos@redhat.com> Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
2025-08-27x86/configure: Improve portability of isa level checkHenrik Lindström2-2/+2
wc -l pads the output with leading spaces on some systems, e.g. FreeBSD. This results in the check `test "$count" = 1` failing. Use -eq for integer comparison instead. Signed-off-by: Henrik Lindström <henrik@lxm.se> Reviewed-by: Arjun Shankar <arjun@redhat.com>
2025-08-27elf: early conversion of elf p_flags to mprotect flagsCupertino Miranda21-59/+48
This patch replaces _dl_stack_flags global variable by _dl_stack_prot_flags. The advantage is that any convertion from p_flags to final used mprotect flags occurs at loading of p_flags. It avoids repeated spurious convertions of _dl_stack_flags, for example in allocate_thread_stack. This modification was suggested in: https://sourceware.org/pipermail/libc-alpha/2025-March/165537.html Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2025-08-23Don't pass -c to LIBC_TRY_TEST_CC_OPTIONH.J. Lu2-2/+2
LIBC_TRY_TEST_CC_OPTION is defined with LIBC_TRY_CC_OPTION: dnl Test a compiler option or options with an empty input file. dnl LIBC_TRY_CC_OPTION([options], [action-if-true], [action-if-false]) AC_DEFUN([LIBC_TRY_CC_OPTION], [AS_IF([AC_TRY_COMMAND([${CC-cc} $1 -xc /dev/null -S -o /dev/null])], [$2], [$3])]) which passes -S to compiler. Unlike gcc, when -c is also passed to clang 20, we get configure:7838: clang -c -Werror -fsemantic-interposition -xc /dev/null -S -o /dev/null clang: error: argument unused during compilation: '-c' [-Werror,-Wunused-command-line-argument] Don't pass -c to LIBC_TRY_TEST_CC_OPTION since -c isn't needed. This fixes BZ #33318. Signed-off-by: H.J. Lu <hjl.tools@gmail.com> Reviewed-by: Sam James <sam@gentoo.org>
2025-08-22x86: Set have-protected-data to no if unsupportedH.J. Lu3-0/+207
If the building compiler enables no direct external data access by default, access to protected data in shared libraries from executables must be compiled with no direct external data access. If the testing compiler doesn't support it, set have-protected-data to no to disable the tests which requires no direct external data access. Add LIBC_TRY_CC_COMMAND to test a building compiler option or options with an input file. This fixes BZ #33286. Signed-off-by: H.J. Lu <hjl.tools@gmail.com> Reviewed-by: Sam James <sam@gentoo.org>
2025-08-23stdio-common: Convert macros across scanf input specifier testsMaciej W. Rozycki1-8/+10
Convert 'compare_real', 'read_real', and 'verify_input' macros to functions so as to improve readability and avoid pitfalls. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>