aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2025-01-03AArch64: Improve codegen in AdvSIMD asinhLuna Lamb1-55/+119
Improves memory access and removes spills. Load the polynomial evaluation coefficients into 2 vectors and use lanewise MLAs. Reduces MOVs 6->3 , LDR 11->5, STR/STP 2->0, ADRP 3->2.
2025-01-04math: Add a reference to Clang's <tgmath.h> C23 issueH.J. Lu1-0/+1
Clang's <tgmath.h> doesn't support all C23 functions in glibc's <tgmath.h>: https://github.com/llvm/llvm-project/issues/121536 Signed-off-by: H.J. Lu <hjl.tools@gmail.com> Reviewed-by: Sam James <sam@gentoo.org>
2025-01-04Rename have-mtls-descriptor to have-test-mtls-descriptorH.J. Lu6-65/+33
Since have-mtls-descriptor is only used for glibc testing, rename it to have-test-mtls-descriptor. Also enable tst-gnu2-tls2-amx only if $(have-test-mtls-descriptor) == gnu2. Tested with GCC 14 and Clang 19/18/17 on x86-64. Signed-off-by: H.J. Lu <hjl.tools@gmail.com> Reviewed-by: Sam James <sam@gentoo.org>
2025-01-03math: update powerpc ulpsAndreas K. Hüttel1-25/+25
Linux timberdoodle 6.1.60-gentoo-dist-hardened #1 SMP Fri Dec 1 22:10:49 UTC 2023 ppc64 POWER9 (architected), altivec supported CHRP IBM pSeries (emulated by qemu) GNU/Linux Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
2025-01-03math: update sparc ulpsAndreas K. Hüttel1-15/+95
Linux catbus 6.1.112 #1 SMP Sun Oct 13 10:52:08 PDT 2024 sparc64 sun4v UltraSparc T5 (Niagara5) GNU/Linux Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
2025-01-03math: update s390 ulpsAndreas K. Hüttel1-15/+95
Linux lgentoo4 6.8.9-gentoo #1 SMP Tue May 7 09:52:48 EDT 2024 s390x 8561 IBM GNU/Linux Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
2025-01-03conform: Do not use __SIG_ATOMIC_TYPE__Adhemerval Zanella2-2/+6
clang does not define __SIG_ATOMIC_TYPE__, instead add another directive ('size:') which instruct to use an integer type of defined minimum size. Reviewed-by: Sam James <sam@gentoo.org>
2025-01-03Redirect mempcpy and stpcpy only in libc.aH.J. Lu1-1/+1
The mempcpy and stpcpy redirections to __mempcpy and __stpcpy were added by commit 939da41143341bbcdd3dd50ee7b57776603da260 Author: Joseph Myers <joseph@codesourcery.com> Date: Wed Nov 12 22:36:34 2014 +0000 Fix stpcpy / mempcpy namespace (bug 17573). to fix the namespace bug since __mempcpy and __stpcpy were defined as macros in <bits/string2.h>. These macros call __builtin_mempcpy and __builtin_stpcpy which may end up calling the C functions mempcpy and stpcpy. In libc.so, libc_hidden_builtin_proto ensures that calls to mempcpy and stpcpy are in turn mapped to call __GI_mempcpy and __GI_stpcpy. The redirections were applied outside of libc.so, including libc.a, to map mempcpy and stpcpy to __mempcpy and __stpcpy. Since commit 18b10de7ced9e9c3843299fb600e40b11af3e0af Author: Wilco Dijkstra <wdijkstr@arm.com> Date: Mon Jun 12 15:19:38 2017 +0100 2017-06-12 Wilco Dijkstra <wdijkstr@arm.com> There is no longer a need for string2.h, so remove it and all mention of it. Move the redirect for __stpcpy to include/string.h since it is still required until all internal uses have been renamed. This fixes several linknamespace/localplt failures when building with -Os. removed the __mempcpy and __stpcpy macros from the public header file, limit these redirections to libc.a to avoid Clang error: In file included from tst-iconv-sticky-input-error.c:22: In file included from ./gconv_int.h:24: ../include/string.h:182:44: error: attribute declaration must precede definition [-Werror,-Wignored-attributes] 182 | extern __typeof (mempcpy) mempcpy __asm__ ("__mempcpy"); | ^ ../string/bits/string_fortified.h:42:8: note: previous definition is here 42 | __NTH (mempcpy (void *__restrict __dest, const void *__restrict __src, | ^ when testing with Clang for fortify build. Signed-off-by: H.J. Lu <hjl.tools@gmail.com> Reviewed-by: Sam James <sam@gentoo.org>
2025-01-03not-cancel.h: Support testing fortify build with ClangH.J. Lu1-5/+5
When Clang is used to test fortify glibc build configured with --enable-fortify-source=N clang issues errors like In file included from tst-rfc3484.c:60: In file included from ./getaddrinfo.c:81: ../sysdeps/unix/sysv/linux/not-cancel.h:36:10: error: reference to overloaded function could not be resolved; did you mean to call it? 36 | __typeof (open64) __open64_nocancel; | ^~~~~~~~ ../include/bits/../../io/bits/fcntl2.h:127:1: note: possible target for call 127 | open64 (__fortify_clang_overload_arg (const char *, ,__path), int __oflag, | ^ ../include/bits/../../io/bits/fcntl2.h:118:1: note: possible target for call 118 | open64 (__fortify_clang_overload_arg (const char *, ,__path), int __oflag) | ^ ../include/bits/../../io/bits/fcntl2.h:114:1: note: possible target for call 114 | open64 (const char *__path, int __oflag, mode_t __mode, ...) | ^ ../io/fcntl.h:219:12: note: possible target for call 219 | extern int open64 (const char *__file, int __oflag, ...) __nonnull ((1)); | ^ because clang fortify support for functions with variable arguments relies on function overload. Update not-cancel.h to avoid __typeof on functions with variable arguments. Co-Authored-By: Adhemerval Zanella <adhemerval.zanella@linaro.org> Signed-off-by: H.J. Lu <hjl.tools@gmail.com> Reviewed-by: Sam James <sam@gentoo.org>
2025-01-03tst-unique[34].cc: Use explicit instantiation declaration/definitionH.J. Lu3-22/+51
Use explicit instantiation declaration and definition to silence Clang error: tst-unique3.cc:6:18: error: instantiation of variable 'S<char>::i' required here, but no definition is available [-Werror,-Wundefined-var-template] 6 | int t = S<char>::i; | ^ ./tst-unique3.h:5:14: note: forward declaration of template entity is here 5 | static int i; | ^ tst-unique3.cc:6:18: note: add an explicit instantiation declaration to suppress this warning if 'S<char>::i' is explicitly instantiated in another translation unit 6 | int t = S<char>::i; | ^ Signed-off-by: H.J. Lu <hjl.tools@gmail.com> Reviewed-by: Sam James <sam@gentoo.org>
2025-01-02RISC-V: Regenerate ULPsAurelien Jarno1-1/+158
Generated on a VisionFive 2 board running Linux version 6.12.6 and GCC 14.2.0. Needed due to: - commit bbd578b38df4 ("math: Use expm1f from CORE-MATH") - commit 8ae9e513762b ("math: Use log1pf from CORE-MATH") - commit 0ae0af68d8fa ("Implement C23 cospi") - commit 776938e8b8dc ("Implement C23 sinpi") - commit f9e90e4b4ce7 ("Implement C23 tanpi") - commit 28d102d15c6a ("Implement C23 acospi") - commit f962932206ec ("Implement C23 asinpi") - commit ffe79c446ced ("Implement C23 atanpi") - commit 3374de90386f ("Implement C23 atan2pi") - commit a357d6273f79 ("math: Use atanf from CORE-MATH") - commit 6f9bacf36b20 ("math: Use atan2f from CORE-MATH") - commit e5ca265a9c90 ("new inputs with large errors for [a]cospi, [a]sinpi, [a]tanpi, atan2pi") Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
2025-01-02mlock, mlock2, munlock: Use __attr_access_none macroSam James2-3/+3
This fixes build failures using GCC 7.5.0 against glibc headers, see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118194#c5. Followup to 013106ae677af9836614ace1a01d25b63fa555a7. Reported-by: vvinayag@arm.com
2025-01-02AArch64: Update libm-test-ulpsWilco Dijkstra1-24/+24
Update ulps for (a)cospi, (a)sinpi, (a)tanpi, atan2pi.
2025-01-02new inputs with large errors for [a]cospi, [a]sinpi, [a]tanpi, atan2piPaul Zimmermann9-33/+2784
These inputs were generated with the programs from https://gitlab.inria.fr/zimmerma/math_accuracy, with rounding to nearest: * for univariate binary32 functions by exhaustive search * for other functions with the "threshold" parameter up to 10^6
2025-01-02stdlib: fix lint failureSam James1-1/+1
Fixes: d5bceac99d24af1131b90027dab267e437b65cd1
2025-01-02stdlib: random_r: fix unaligned access in initstate and initstate_r [BZ #30584]Sam James3-11/+70
The initstate{,_r} interfaces are documented in BSD as needing an aligned array of 32-bit values, but neither POSIX nor glibc's own documentation require it to be aligned. glibc's documentation says it "should" be a power of 2, but not must. Use memcpy to read and write to `state` to handle such an unaligned argument. Co-authored-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> Reviewed-by: Florian Weimer <fweimer@redhat.com>
2025-01-02assert: Remove the use of %n from __assert_fail_base (BZ #32456)Adhemerval Zanella3-26/+15
The require size for mmap can be inferred from __vasprintf return value. It also fixes tst-assert-2 when building with --enable-fortify, where even if the format is not translated, __readonly_area fails because malloc can not be used. Checked on aarch64-linux-gnu. Reviewed-by: Florian Weimer <fweimer@redhat.com>
2025-01-02Translations: Regenerate libc.potAdhemerval Zanella1-126/+152
Reviewed-by: Florian Weimer <fweimer@redhat.com>
2025-01-02elf: Remove the remaining uses of GET_ADDR_OFFSETFlorian Weimer9-10/+5
Expand the macro where it is used in static definitions of __tls_get_addr. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2025-01-02elf: Use TLS_DTV_OFFSET in __tls_get_addrFlorian Weimer1-4/+16
This fixes commit 5e249192cac7354af02a7347a0d8c984e0c88ed3 ("elf: Remove the GET_ADDR_ARGS and related macros from the TLS code"): GET_ADDR_ARGS was indeed unused, but GET_ADDR_OFFSET was used on several targets, those that define TLS_DTV_OFFSET. Instead of reintroducing GET_ADDR_OFFSET, use TLS_DTV_OFFSET directly, now that it is defined on all targets. In the new tls_get_addr_adjust helper function, add a cast to uintptr_t to help the s390 case, where the offset can be positive or negative, depending on the addresses malloc returns. The cast avoids pointer wraparound/overflow. The outer uintptr_t cast is needed to suppress a warning on x86-64 x32 about mismatched integer/pointer sizes. Eventually this offset should be folded into the DTV addresses themselves, to eliminate the subtraction on the TLS fast path. This will require an adjustment to libthread_db because the debugger interface currently returns unadjusted pointers. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2025-01-02s390: Define TLS_DTV_OFFSET instead of GET_ADDR_OFFSETFlorian Weimer1-3/+3
This will be used in __tls_get_addr to adjust the returned pointer value. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2025-01-02elf: Introduce generic <dl-tls.h>Florian Weimer13-277/+43
On arc, the definition of TLS_DTV_UNALLOCATED now comes from <dl-dtv.h>. For x86-64 x32, a separate version is needed because unsigned long int is 32 bits on this target. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2025-01-02powerpc: Update acosf ulpsFlorian Weimer1-0/+2
As seen on powerpc64le-linux-gnu with GCC 11 defaulting to POWER9 instructions.
2025-01-02htl: move pthread_mutexattr_setprioceiling, pthread_mutexattr_getprioceiling ↵gfleury9-13/+37
into libc. Message-ID: <20241231134909.1166440-9-gfleury@disroot.org>
2025-01-02htl: move pthread_mutexattr_{setrobust, setrobust_np}, ↵gfleury9-19/+59
pthread_mutexattr_{getrobust, getrobust_np} into libc. Message-ID: <20241231134909.1166440-8-gfleury@disroot.org>
2025-01-02htl: move pthread_mutexattr_setpshared, pthread_mutexattr_getpshared into libc.gfleury9-12/+41
Message-ID: <20241231134909.1166440-7-gfleury@disroot.org>
2025-01-02htl: move pthread_mutexattr_settype, pthread_mutexattr_gettype into libc.gfleury9-11/+37
Message-ID: <20241231134909.1166440-6-gfleury@disroot.org>
2025-01-02htl: move pthread_mutexattr_setprotocol into libc.Samuel Thibault8-6/+21
Message-ID: <20241231134909.1166440-5-gfleury@disroot.org>
2025-01-02htl: move pthread_mutexattr_getprotocol into libc.gfleury8-6/+20
Message-ID: <20241231134909.1166440-4-gfleury@disroot.org>
2025-01-01htl: move pthread_mutexattr_destroy into libc.gfleury8-7/+9
Message-ID: <20241231134909.1166440-3-gfleury@disroot.org>
2025-01-01htl: move pthread_mutexattr_init into libc.gfleury9-9/+8
Message-ID: <20241231134909.1166440-2-gfleury@disroot.org>
2025-01-01bits/socket.h: Update to recent BSD definitionSamuel Thibault2-16/+8
The old BSD 4.4 definition (not used by Linux) was not 64b-proof: the cmsg_data field is supposed to CMSG_ALIGN'ed (as can be also seen in the CMSG_LEN macro). Suggested-by: Diego Nieto Cid <dnietoc@gmail.com>
2025-01-01Don't update copyright notices in Linux licensesPaul Eggert1-0/+3
* scripts/update-copyrights: Do not update copyright notices in licenses imported from the Linux kernel. This should prevent glitches such as those fixed in my recent commit.
2025-01-01Fix license typo induced by update-copyrighytPaul Eggert1-1/+1
2025-01-01Update copyright dates not handled by scripts/update-copyrightsPaul Eggert5-5/+5
I've updated copyright dates in glibc for 2025. This is the patch for the changes not generated by scripts/update-copyrights and subsequent build / regeneration of generated files.
2025-01-01Update copyright in generated files by running "make"Paul Eggert9-192/+175
2025-01-01Update copyright dates with scripts/update-copyrightsPaul Eggert13063-13066/+13065
2025-01-01Pass glibc pre-commit checksPaul Eggert2-2/+1
This is needed for the next patch which updates copyright dates. * assert/test-assert-2.c: Remove trailing white space. * elf/tst-startup-errno.c: Remove trailing empty lines.
2025-01-01mlock, mlock2, munlock: Tell the compiler we don't dereference the pointerXi Ruoyao2-3/+6
Since https://gcc.gnu.org/r11-959, the compiler emits -Wmaybe-uninitialized if a const pointer to an uninitialized buffer is passed. Tell the compiler we don't dereference the pointer to remove the false alarm. Link: https://gcc.gnu.org/PR118194 Signed-off-by: Xi Ruoyao <xry111@xry111.site> Reviewed-by: Sam James <sam@gentoo.org>
2024-12-31elf: Add glibc.rtld.execstackAdhemerval Zanella8-1/+96
The new tunable can be used to control whether executable stacks are allowed from either the main program or dependencies. The default is to allow executable stacks. The executable stacks default permission is checked agains the one provided by the PT_GNU_STACK from program headers (if present). The tunable also disables the stack permission change if any dependency requires an executable stack at loading time. Checked on x86_64-linux-gnu, i686-linux-gnu, and aarch64-linux-gnu. Reviewed-by: Florian Weimer <fweimer@redhat.com>
2024-12-31elf: Add tst-execstack-prog-staticAdhemerval Zanella2-0/+8
Similar to tst-execstack-prog, check if executable stacks works for statically linked programs. Reviewed-by: Florian Weimer <fweimer@redhat.com>
2024-12-31elf: Do not change stack permission on dlopen/dlmopenAdhemerval Zanella13-152/+66
If some shared library loaded with dlopen/dlmopen requires an executable stack, either implicitly because of a missing GNU_STACK ELF header (where the ABI default flags implies in the executable bit) or explicitly because of the executable bit from GNU_STACK; the loader will try to set the both the main thread and all thread stacks (from the pthread cache) as executable. Besides the issue where any __nptl_change_stack_perm failure does not undo the previous executable transition (meaning that if the library fails to load, there can be thread stacks with executable stacks), this behavior was used on a CVE [1] as a vector for RCE. This patch changes that if a shared library requires an executable stack, and the current stack is not executable, dlopen fails. The change is done only for dynamically loaded modules, if the program or any dependency requires an executable stack, the loader will still change the main thread before program execution and any thread created with default stack configuration. [1] https://www.qualys.com/2023/07/19/cve-2023-38408/rce-openssh-forwarded-ssh-agent.txt Checked on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: Florian Weimer <fweimer@redhat.com>
2024-12-31elf: Cleanup and improve tst-execstackAdhemerval Zanella1-85/+41
Reviewed-by: Florian Weimer <fweimer@redhat.com>
2024-12-31Use GCC 14 branch in build-many-glibcs.pyH.J. Lu1-1/+1
Tested with build-many-glibcs.py with --exclude m68k-linux-gnu-coldfire-soft Signed-off-by: H.J. Lu <hjl.tools@gmail.com> Reviewed-by: Sam James <sam@gentoo.org>
2024-12-30INSTALL, NEWS: Document requirement of gawk with MPFR supportAndreas K. Hüttel3-0/+11
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
2024-12-30Mention CORE-MATH optimize routines on NEWSAdhemerval Zanella1-0/+5
Reviewed-by: Andreas K. Huettel <dilfridge@gentoo.org>
2024-12-30x86-64: Reorder dynamic linker list in ldd script (bug 32508)Florian Weimer1-1/+1
Move the x86-64 loader first, before the i386 and x32 loaders. In most cases, it's the loader the script needs. This avoids an error message if the i386 loader does not work. The effect of this change to the generated ldd script looks like this: -RTLDLIST="/lib/ld-linux.so.2 /lib64/ld-linux-x86-64.so.2 /libx32/ld-linux-x32.so.2" +RTLDLIST="/lib64/ld-linux-x86-64.so.2 /lib/ld-linux.so.2 /libx32/ld-linux-x32.so.2" Reviewed-by: Sam James <sam@gentoo.org>
2024-12-27nptl: hppa: replace __get_cr27 with __thread_pointerMichael Jeanson2-20/+16
The addition of the new thread_pointer.h header on HPPA resulted in duplicated inline asm to get the current thread pointer from the cr27 register. Include thread_pointer.h in tls.h and replace __get/set_cr27() with __set_/thread_pointer() with the appropriate casts. Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
2024-12-27nptl: Add <thread_pointer.h> for hppaMichael Jeanson1-0/+30
This will be required by the rseq extensible ABI implementation on all Linux architectures exposing the '__rseq_size' and '__rseq_offset' symbols to set the initial value of the 'cpu_id' field which can be used by applications to test if rseq is available and registered. As long as the symbols are exposed it is valid for an application to perform this test even if rseq is not yet implemented in libc for this architecture. Compile tested with build-many-glibcs.py but I don't have access to any hardware to run the tests. Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
2024-12-27libio: asprintf should write NULL upon failureFlorian Weimer4-10/+68
This was suggested most recently by Solar Designer, noting that code replacing vsprintf with vasprintf in a security fix was subtly wrong: Re: GStreamer Security Advisory 2024-0003: Orc compiler stack-based buffer overflow <https://www.openwall.com/lists/oss-security/2024/07/26/2> Previous libc-alpha discussions: I: [PATCH] asprintf error handling fix <https://inbox.sourceware.org/libc-alpha/20011205185828.GA8376@ldv.office.alt-linux.org/> asprintf() issue <https://inbox.sourceware.org/libc-alpha/CANSoFxt-cdc-+C4u-rTENMtY4X9RpRSuv+axDswSPxbDgag8_Q@mail.gmail.com/> I don't think we need a compatibility symbol for this. As the GStreamer example shows, this change is much more likely to fix bugs than cause compatibility issues. Suggested-by: Dmitry V. Levin <ldv@altlinux.org> Suggested-by: Archie Cobbs <archie.cobbs@gmail.com> Suggested-by: Solar Designer <solar@openwall.com> Reviewed-by: Sam James <sam@gentoo.org>