aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
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>
2024-12-27nptl: More useful padding in struct pthreadFlorian Weimer1-31/+25
The previous use of padding within a union made it impossible to re-use the padding for GLIBC_PRIVATE ABI preservation because tcbhead_t could use up all of the padding (as was historically the case on x86-64). Allocating padding unconditionally addresses this issue. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2024-12-27elf: Remove the GET_ADDR_ARGS and related macros from the TLS codeFlorian Weimer2-40/+23
This was used to manage an IA-64 ABI divergence is no longere needed after the IA-64 removal. (It should be possible to encode all the required information in one machine word, so the pointer indirection is really unnecessary. Technically, none of this is part of the ABI, so perhaps it's possible to do this retroactively. See bug 27404.) Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2024-12-27hurd: Avoid asm statements which returnSamuel Thibault5-67/+96
They are not supposed to change flow control. This fixes miscompilation with gcc 14.2.0 which then drops code, see https://lists.gnu.org/archive/html/bug-hurd/2024-11/msg00145.html
2024-12-25build-many-glibcs.py: Add --exclude optionH.J. Lu1-2/+7
m68k-linux-gnu-coldfire-soft GCC and glibc often won't build due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103370 which results in build-many-glibcs.py failure. Add an option, --exclude, to exclude some targets. Signed-off-by: H.J. Lu <hjl.tools@gmail.com> Reviewed-by: Sam James <sam@gentoo.org>
2024-12-24stdio-common: Tweak comment in MakefileSam James1-3/+3
Followup to 5a96da210c15e18c3c5298dc23a9e2e57691b6c6.
2024-12-24stdio-common: Use clang with bugfix for bug28Dmitry Chestnykh3-4/+61
The issue that was the cause of hang was fixed in upstream. Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
2024-12-24NEWS: Mention testing glibc build with a different set of compilersH.J. Lu3-7/+17
Also document C and C++ compilers used to test glibc should come from the same set of compilers. Signed-off-by: H.J. Lu <hjl.tools@gmail.com> Reviewed-by: Sam James <sam@gentoo.org>
2024-12-23support: Add support_record_failure_barrierFlorian Weimer2-0/+13
This can be used to stop execution after a TEST_COMPARE_BLOB failure, for example.
2024-12-23io: statx, fstatat: Drop nonnull attribute on the path argumentMiao Wang2-6/+6
Since Linux 6.11 the kernel allows path to be NULL if flags & AT_EMPTY_PATH. Let's allow users to take the advantage if they don't care running on old kernels. Signed-off-by: Miao Wang <shankerwangmiao@gmail.com> Signed-off-by: Xi Ruoyao <xry111@xry111.site> Reviewed-by: Florian Weimer <fweimer@redhat.com>
2024-12-23configure: Improve configure output for C++ CompilerH.J. Lu2-3/+3
Change configure output for C++ Compiler from ... checking -finput-charset=ascii in testing... -finput-charset=ascii checking -finput-charset=ascii in testing... -finput-charset=ascii ... to ... checking -finput-charset=ascii in testing... -finput-charset=ascii checking g++ -finput-charset=ascii in testing... -finput-charset=ascii ... Signed-off-by: H.J. Lu <hjl.tools@gmail.com> Reviewed-by: Sam James <sam@gentoo.org>
2024-12-23getaddrinfo.c: Avoid uninitialized pointer access [BZ #32465]H.J. Lu1-23/+22
Add valid_decimal_value to check valid decimal value in a string to avoid uninitialized endp in add_prefixlist and gaiconf_init as reported by Clang 19: ./getaddrinfo.c:1884:11: error: variable 'endp' is used uninitialized whenever '||' condition is true [-Werror,-Wsometimes-uninitialized] 1884 | && (cp == NULL | ^~~~~~~~~~ ./getaddrinfo.c:1887:11: note: uninitialized use occurs here 1887 | && *endp == '\0' | ^~~~ ./getaddrinfo.c:1884:11: note: remove the '||' if its condition is always false 1884 | && (cp == NULL | ^~~~~~~~~~ 1885 | || (bits = strtoul (cp, &endp, 10)) != ULONG_MAX | ~~ ./getaddrinfo.c:1875:13: note: initialize the variable 'endp' to silence this warning 1875 | char *endp; | ^ | = NULL This fixes BZ #32465. Signed-off-by: H.J. Lu <hjl.tools@gmail.com> Reviewed-by: Sam James <sam@gentoo.org>
2024-12-22htl: move pthread_cond_timedwait, pthread_cond_clockwait, pthread_cond_wait ↵gfleury13-33/+31
into libc. Message-ID: <20241219203727.669825-9-gfleury@disroot.org>
2024-12-22htl: move __pthread_mutex_checklocked into libc.gfleury11-3/+11
move out __getpid from pt-mutex.h and in pt-mutex-* include <unistd.h> where __getpid was called Signed-off-by: gfleury <gfleury@disroot.org> Message-ID: <20241219203727.669825-8-gfleury@disroot.org>
2024-12-22htl: move __pthread_timedblock, __pthread_timedblock_intr, __pthread_block, ↵gfleury5-6/+14
__pthread_block_intr into libc. Signed-off-by: gfleury <gfleury@disroot.org> Message-ID: <20241219203727.669825-7-gfleury@disroot.org>
2024-12-22htl: move pthread_cond_signal into libc.gfleury10-10/+12
Signed-off-by: gfleury <gfleury@disroot.org> Message-ID: <20241219203727.669825-6-gfleury@disroot.org>
2024-12-22htl: move pthread_cond_broadcast into libc.gfleury11-13/+14
Signed-off-by: gfleury <gfleury@disroot.org> Message-ID: <20241219203727.669825-5-gfleury@disroot.org>
2024-12-22htl: move pthread_cond_destroy into libc.gfleury11-10/+13
Signed-off-by: gfleury <gfleury@disroot.org> Message-ID: <20241219203727.669825-4-gfleury@disroot.org>
2024-12-22htl: move __pthread_wakeup into libc.gfleury4-2/+4
Signed-off-by: gfleury <gfleury@disroot.org> Message-ID: <20241219203727.669825-3-gfleury@disroot.org>
2024-12-22htl: move pthread_cond_init into libc.gfleury11-15/+13
Signed-off-by: gfleury <gfleury@disroot.org> Message-ID: <20241219203727.669825-2-gfleury@disroot.org>
2024-12-22assert/test-assert-2.c: Include <unistd.h>Samuel Thibault1-0/+1
For _exit declaration.
2024-12-23stdio-common: Suppress Clang warnings on scanf13.cH.J. Lu2-0/+11
Suppress Clang warnings on stdio-common/scanf13.c: 1. Before this commit: scanf13.c:43:17: error: invalid conversion specifier 'l' [-Werror,-Wformat-invalid-specifier] 43 | "A%mS%10mls%4ml[bcd]%4mCB", &lsp1, &lsp2, &lsp3, &lsp4) != 4) | ~~~~^ scanf13.c:43:22: error: invalid conversion specifier 'l' [-Werror,-Wformat-invalid-specifier] 43 | "A%mS%10mls%4ml[bcd]%4mCB", &lsp1, &lsp2, &lsp3, &lsp4) != 4) | ~~~~^ scanf13.c:43:50: error: data argument not used by format string [-Werror,-Wformat-extra-args] 43 | "A%mS%10mls%4ml[bcd]%4mCB", &lsp1, &lsp2, &lsp3, &lsp4) != 4) | ~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ scanf13.c:145:27: error: invalid conversion specifier 'l' [-Werror,-Wformat-invalid-specifier] 145 | if (sscanf (buf, "%2048mls%mlc", &lsp3, &lsp4) != 2) | ~~~~~~^ scanf13.c:145:31: error: invalid conversion specifier 'l' [-Werror,-Wformat-invalid-specifier] 145 | if (sscanf (buf, "%2048mls%mlc", &lsp3, &lsp4) != 2) | ~~~^ scanf13.c:145:43: error: data argument not used by format string [-Werror,-Wformat-extra-args] 145 | if (sscanf (buf, "%2048mls%mlc", &lsp3, &lsp4) != 2) | ~~~~~~~~~~~~~~ ^ scanf13.c:161:31: error: invalid conversion specifier 'l' [-Werror,-Wformat-invalid-specifier] 161 | if (sscanf (buf, "%4mC%1500ml[dr/]%548ml[abc/d]%3mlc", | ~~~~~~^ scanf13.c:161:42: error: invalid conversion specifier 'l' [-Werror,-Wformat-invalid-specifier] 161 | if (sscanf (buf, "%4mC%1500ml[dr/]%548ml[abc/d]%3mlc", | ~~~~~~~~~~^ scanf13.c:161:53: error: invalid conversion specifier 'l' [-Werror,-Wformat-invalid-specifier] 161 | if (sscanf (buf, "%4mC%1500ml[dr/]%548ml[abc/d]%3mlc", | ~~~~~~~~~~^ scanf13.c:162:15: error: data argument not used by format string [-Werror,-Wformat-extra-args] 161 | if (sscanf (buf, "%4mC%1500ml[dr/]%548ml[abc/d]%3mlc", | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 162 | &lsp1, &lsp2, &lsp3, &lsp4) != 4) | ^ 10 errors generated. 2. With DIAG_IGNORE_NEEDS_COMMENT_CLANG changes in stdio-common/scanf13.c: scanf13.c:28:40: error: 'sscanf' may overflow; destination buffer in argument 4 has size 8, but the corresponding specifier may require size 11 [-Werror,-Wfortify-source] 28 | "A%ms%10ms%4m[bcd]%4mcB", &sp1, &sp2, &sp3, &sp4) != 4) | ^ scanf13.c:94:34: error: 'sscanf' may overflow; destination buffer in argument 3 has size 8, but the corresponding specifier may require size 2049 [-Werror,-Wfortify-source] 94 | if (sscanf (buf, "%2048ms%mc", &sp3, &sp4) != 2) | ^ scanf13.c:110:61: error: 'sscanf' may overflow; destination buffer in argument 4 has size 8, but the corresponding specifier may require size 1501 [-Werror,-Wfortify-source] 110 | if (sscanf (buf, "%4mc%1500m[dr/]%548m[abc/d]%3mc", &sp1, &sp2, &sp3, &sp4) | ^ scanf13.c:110:67: error: 'sscanf' may overflow; destination buffer in argument 5 has size 8, but the corresponding specifier may require size 549 [-Werror,-Wfortify-source] 110 | if (sscanf (buf, "%4mc%1500m[dr/]%548m[abc/d]%3mc", &sp1, &sp2, &sp3, &sp4) | ^ 4 errors generated. 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>
2024-12-23string: Suppress Clang warnings on tester.cH.J. Lu3-2/+49
Add a configure check for -Wno-fortify-source to suppress Clang warnings on string/tester.c, like: tester.c:385:10: error: 'strncat' size argument is too large; destination buffer has size 50, but size argument is 99 [-Werror,-Wfortify-source] 385 | check (strncat (one, "lmn", 99) == one, 1); /* Returned value. */ Signed-off-by: H.J. Lu <hjl.tools@gmail.com> Reviewed-by: Sam James <sam@gentoo.org>