aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
12 hourspowerpc64le: _init/_fini file changes for ROPHEADmasterSachin Monga3-1/+14
The ROP instructions were added in ISA 3.1 (ie, Power10), however they were defined so that if executed on older cpus, they would behave as nops. This allows us to emit them on older cpus and they'd just be ignored, but if run on a Power10, then the binary would be ROP protected. Hash instructions use negative offsets so the default position of ROP pointer is FRAME_ROP_SAVE from caller's SP. Modified FRAME_MIN_SIZE_PARM to 112 for ELFv2 to reserve additional 16 bytes for ROP save slot and padding. Signed-off-by: Sachin Monga <smonga@linux.ibm.com> Reviewed-by: Peter Bergner <bergner@linux.ibm.com>
15 hoursmman.h: Fix MAP_HASSEMPHORE typoSamuel Thibault1-1/+1
BSD's MAP_HASSEMAPHORE is with an A. MAP_HASSEMPHORE is not used in any Debian software for instance.
20 hoursmisc: remove extra va_end in error_tail (bug 32233)Andreas Schwab1-1/+0
This is an addendum to commit b7b52b9dec ("error, error_at_line: Add missing va_end calls"), which added the va_end calls in the callers where they belong.
20 hoursintl: avoid alloca for arbitrary sizes (bug 32380)Andreas Schwab1-39/+12
Use malloc for the copy of the domain name and the category value, which can both be of arbitrary size.
22 hoursmanual: Add description of AArch64-specific pkey flagsYury Khrustalev1-1/+15
Describe AArch64 specific flags PKEY_DISABLE_READ and PKEY_DISABLE_EXECUTE that are available on AArch64 systems with enabled Stage 1 permission overlays feature introduced in Armv8.9 / 9.4 (FEAT_S1POE). Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
22 hoursAArch64: Add support for memory protection keysYury Khrustalev8-11/+477
This patch adds support for memory protection keys on AArch64 systems with enabled Stage 1 permission overlays feature introduced in Armv8.9 / 9.4 (FEAT_S1POE) [1]. 1. Internal functions "pkey_read" and "pkey_write" to access data associated with memory protection keys. 2. Implementation of API functions "pkey_get" and "pkey_set" for the AArch64 target. 3. AArch64-specific PKEY flags for READ and EXECUTE (see below). 4. New target-specific test that checks behaviour of pkeys on AArch64 targets. 5. This patch also extends existing generic test for pkeys. 6. HWCAP constant for Permission Overlay Extension feature. To support more accurate mapping of underlying permissions to the PKEY flags, we introduce additional AArch64-specific flags. The full list of flags is: - PKEY_UNRESTRICTED: 0x0 (for completeness) - PKEY_DISABLE_ACCESS: 0x1 (existing flag) - PKEY_DISABLE_WRITE: 0x2 (existing flag) - PKEY_DISABLE_EXECUTE: 0x4 (new flag, AArch64 specific) - PKEY_DISABLE_READ: 0x8 (new flag, AArch64 specific) The problem here is that PKEY_DISABLE_ACCESS has unusual semantics as it overlaps with existing PKEY_DISABLE_WRITE and new PKEY_DISABLE_READ. For this reason mapping between permission bits RWX and "restrictions" bits awxr (a for disable access, etc) becomes complicated: - PKEY_DISABLE_ACCESS disables both R and W - PKEY_DISABLE_{WRITE,READ} disables W and R respectively - PKEY_DISABLE_EXECUTE disables X Combinations like the one below are accepted although they are redundant: - PKEY_DISABLE_ACCESS | PKEY_DISABLE_READ | PKEY_DISABLE_WRITE Reverse mapping tries to retain backward compatibility and ORs PKEY_DISABLE_ACCESS whenever both flags PKEY_DISABLE_READ and PKEY_DISABLE_WRITE would be present. This will break code that compares pkey_get output with == instead of using bitwise operations. The latter is more correct since PKEY_* constants are essentially bit flags. It should be noted that PKEY_DISABLE_ACCESS does not prevent execution. [1] https://developer.arm.com/documentation/ddi0487/ka/ section D8.4.1.4 Co-authored-by: Szabolcs Nagy <szabolcs.nagy@arm.com> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
22 hoursAArch64: Remove thunderx{,2} memcpyAndrew Pinski7-792/+0
ThunderX1 and ThunderX2 have been retired for a few years now. So let's remove the thunderx{,2} specific versions of memcpy. The performance gain or them was for medium and large sizes while the generic (aarch64) memcpy will handle just slightly worse. Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com> Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
35 hoursFix femode_t conditionals for arc and or1kJoseph Myers2-2/+2
Two of the architecture bits/fenv.h headers define femode_t if __GLIBC_USE (IEC_60559_BFP_EXT), instead of the correct condition __GLIBC_USE (IEC_60559_BFP_EXT_C23) (both were added after commit 0175c9e9be5f0b2000859666b6e1ef3696f1123b, but were probably first developed before it and then not updated to take account of its changes). This results in failures of the installed headers check for fenv.h when building with GCC 15 (defaults to -std=gnu23 - we don't yet have an installed-headers test specifically for C23 mode and don't yet require a compiler with such a mode for building glibc) together with a combination of options leaving C23 features enabled, since the declarations of functions using femode_t use the correct conditions; see <https://sourceware.org/pipermail/libc-testresults/2024q4/013163.html>. Fix the conditionals to get <fenv.h> to work correctly in C23 mode again. Tested with build-many-glibcs.py (arc-linux-gnu, arch-linux-gnuhf, or1k-linux-gnu-hard, or1k-linux-gnu-soft).
37 hourspowerpc64le: Optimized strcat for POWER10Mahesh Bodapati4-9/+56
This patch adds an optimized strcat which makes use of the default strcat function which calls the Power10 strcpy and strlen routines.
40 hourspowerpc: Improve the inline asm for syscall wrappersPeter Bergner1-20/+22
Update the inline asm syscall wrappers to match the newer register constraint usage in INTERNAL_VSYSCALL_CALL_TYPE. Use the faster mfocrf instruction when available, rather than the slower mfcr microcoded instruction.
2 dayshtl: move pthread_attr_init into libc.gfleury10-11/+13
Signed-off-by: gfleury <gfleury@disroot.org>
2 dayshtl: move pthread_attr_setguardsize into libc.gfleury7-5/+14
Signed-off-by: gfleury <gfleury@disroot.org>
2 dayshtl: move pthread_attr_setschedparam into libc.gfleury9-15/+8
Signed-off-by: gfleury <gfleury@disroot.org>
2 dayshtl: move pthread_attr_setscope into libc.gfleury9-12/+8
Signed-off-by: gfleury <gfleury@disroot.org>
2 dayshtl: move pthread_attr_setstackaddr into libc.gfleury9-10/+33
Signed-off-by: gfleury <gfleury@disroot.org>
2 dayshtl: move pthread_attr_setstacksize into libc.gfleury8-5/+16
Signed-off-by: gfleury <gfleury@disroot.org>
2 dayshtl: move pthread_attr_getstack into libc.gfleury8-6/+16
Signed-off-by: gfleury <gfleury@disroot.org>
2 dayshtl: move pthread_attr_getstackaddr into libc.gfleury8-5/+17
Signed-off-by: gfleury <gfleury@disroot.org>
2 dayshtl move pthread_attr_getstacksize into libc.gfleury8-5/+17
Signed-off-by: gfleury <gfleury@disroot.org>
2 dayshtl move pthread_attr_getscope into libc.gfleury9-10/+9
Signed-off-by: gfleury <gfleury@disroot.org>
2 dayshtl move pthread_attr_getguardsize into libc.gfleury7-5/+18
Signed-off-by: gfleury <gfleury@disroot.org>
2 dayshtl: move __pthread_default_attr into libcgfleury4-1/+4
Signed-off-by: gfleury <gfleury@disroot.org>
2 dayshtl: move pthread_attr_destroy into libc.gfleury9-10/+9
Signed-off-by: gfleury <gfleury@disroot.org>
5 daysstdio-common: Fix C23-ism in formatted output specifier tests [BZ #32360]Maciej W. Rozycki1-1/+1
Nameless function parameters have only been added to ISO C with the C23 revision of the language standard. Give names to the unused parameters of the stub 'dladdr' implementation then so as to make compilation happy with the earlier language definitions, fixing errors such as: tst-printf-format-skeleton.c:374:9: error: parameter name omitted 374 | dladdr (const void *, Dl_info *) reported by older compilers. Reviewed-by: Florian Weimer <fweimer@redhat.com>
7 dayself: handle addition overflow in _dl_find_object_update_1 [BZ #32245]Aurelien Jarno1-0/+8
The remaining_to_add variable can be 0 if (current_used + count) wraps, This is caught by GCC 14+ on hppa, which determines from there that target_seg could be be NULL when remaining_to_add is zero, which in turns causes a -Wstringop-overflow warning: In file included from ../include/atomic.h:49, from dl-find_object.c:20: In function '_dlfo_update_init_seg', inlined from '_dl_find_object_update_1' at dl-find_object.c:689:30, inlined from '_dl_find_object_update' at dl-find_object.c:805:13: ../sysdeps/unix/sysv/linux/hppa/atomic-machine.h:44:4: error: '__atomic_store_4' writing 4 bytes into a region of size 0 overflows the destination [-Werror=stringop-overflow=] 44 | __atomic_store_n ((mem), (val), __ATOMIC_RELAXED); \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dl-find_object.c:644:3: note: in expansion of macro 'atomic_store_relaxed' 644 | atomic_store_relaxed (&seg->size, new_seg_size); | ^~~~~~~~~~~~~~~~~~~~ In function '_dl_find_object_update': cc1: note: destination object is likely at address zero In practice, this is not possible as it represent counts of link maps. Link maps have sizes larger than 1 byte, so the sum of any two link map counts will always fit within a size_t without wrapping around. This patch therefore adds a check on remaining_to_add == 0 and tell GCC that this can not happen using __builtin_unreachable. Thanks to Andreas Schwab for the investigation. Closes: BZ #32245 Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> Tested-by: John David Anglin <dave.anglin@bell.net> Reviewed-by: Florian Weimer <fweimer@redhat.com>
8 daysx86/string: Use `movsl` instead of `movsd` in strncpy/strncat [BZ #32344]Noah Goldstein1-1/+1
`ld`, starting at 2.40, emits a warning when using `movsd`. There is no change to the actual code produced. Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
8 daysmanual: Fix overeager s/int/size_t/ in memory.texiJonathan Wakely1-1/+1
The change in e3960d1c57e57f33e0e846d615788f4ede73b945 should only have affected 'int' not 'internally'. Signed-off-by: Jonathan Wakely <jwakely@redhat.com>
8 dayshppa: Update libm-test-ulpsJohn David Anglin1-0/+3
Update imaginary part of csin. Signed-off-by: John David Anglin <dave.anglin@bell.net>
8 daysRevert "hurd: Stop depending on the default_pager stubs provided by gnumach"Samuel Thibault2-2/+4
This reverts commit f7f7dd8009275504b211c170caf5bce50fa472ac. default_pager is actually also used in e.g. xosview.
9 dayslinux: Add support for getrandom vDSOAdhemerval Zanella23-8/+463
Linux 6.11 has getrandom() in vDSO. It operates on a thread-local opaque state allocated with mmap using flags specified by the vDSO. Multiple states are allocated at once, as many as fit into a page, and these are held in an array of available states to be doled out to each thread upon first use, and recycled when a thread terminates. As these states run low, more are allocated. To make this procedure async-signal-safe, a simple guard is used in the LSB of the opaque state address, falling back to the syscall if there's reentrancy contention. Also, _Fork() is handled by blocking signals on opaque state allocation (so _Fork() always sees a consistent state even if it interrupts a getrandom() call) and by iterating over the thread stack cache on reclaim_stack. Each opaque state will be in the free states list (grnd_alloc.states) or allocated to a running thread. The cancellation is handled by always using GRND_NONBLOCK flags while calling the vDSO, and falling back to the cancellable syscall if the kernel returns EAGAIN (would block). Since getrandom is not defined by POSIX and cancellation is supported as an extension, the cancellation is handled as 'may occur' instead of 'shall occur' [1], meaning that if vDSO does not block (the expected behavior) getrandom will not act as a cancellation entrypoint. It avoids a pthread_testcancel call on the fast path (different than 'shall occur' functions, like sem_wait()). It is currently enabled for x86_64, which is available in Linux 6.11, and aarch64, powerpc32, powerpc64, loongarch64, and s390x, which are available in Linux 6.12. Link: https://pubs.opengroup.org/onlinepubs/9799919799/nframe.html [1] Co-developed-by: Jason A. Donenfeld <Jason@zx2c4.com> Tested-by: Jason A. Donenfeld <Jason@zx2c4.com> # x86_64 Tested-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> # x86_64, aarch64 Tested-by: Xi Ruoyao <xry111@xry111.site> # x86_64, aarch64, loongarch64 Tested-by: Stefan Liebler <stli@linux.ibm.com> # s390x
9 daysio: Add setuid tests for faccessatSiddhesh Poyarekar2-0/+164
Add a new test tst-faccessat-setuid that iterates through real and effective UID/GID combination and tests the faccessat() interface for default and AT_EACCESS flags. Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
9 daystst-faccessat.c: Port to libsupportSiddhesh Poyarekar1-156/+65
Use libsupport convenience functions and macros instead of the old test-skeleton. Also add a new xdup() convenience wrapper function. Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
9 dayssupport: Add xdupSiddhesh Poyarekar3-0/+32
Add xdup as the error-checking version of dup for test cases. Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
9 daysLoongArch: Update ulpscaiyinyu1-1/+2
Needed for test-float-cacosh, test-float-csin, test-float32-cacosh and test-float32-csin. Signed-off-by: caiyinyu <caiyinyu@loongson.cn> Reviewed-by: Florian Weimer <fweimer@redhat.com>
11 daysstat.h: Fix missing declaration of struct timespecSamuel Thibault1-1/+1
When building with e.g. -std=c99 and _ATFILE_SOURCE, stat.h was missing including bits/types/struct_timespec.h to get the struct timespec declaration for utimensat.
12 daysmach: Fix __xpg_strerror_r on in-range but undefined errors [BZ #32350]Samuel Thibault1-2/+12
For instance, 1073741906 leads to system 16, subsystem 0 and code 82, which is in range (max_code is 122), but not defined. Return EINVAL in that case, like
12 daysx86/string: Use `movsl` instead of `movsd` [BZ #32344]Noah Goldstein1-1/+1
`ld`, starting at 2.40, emits a warning when using `movsd`. There is no change to the actual code produced. Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
13 daysRename new tst-sem17 test to tst-sem18Joseph Myers2-3/+3
As noted by Adhemerval, we already have a tst-sem17 in nptl. Tested for x86_64.
13 daysAvoid uninitialized result in sem_open when file does not existJoseph Myers3-0/+37
A static analyzer apparently reported an uninitialized use of the variable result in sem_open in the case where the file is required to exist but does not exist. The report appears to be correct; set result to SEM_FAILED in that case, and add a test for it. Note: the test passes for me even without the sem_open fix, I guess because result happens to get value SEM_FAILED (i.e. 0) when uninitialized. Tested for x86_64.
14 daysnptl: initialize rseq area prior to registrationMichael Jeanson2-0/+12
Per the rseq syscall documentation, 3 fields are required to be initialized by userspace prior to registration, they are 'cpu_id', 'rseq_cs' and 'flags'. Since we have no guarantee that 'struct pthread' is cleared on all architectures, explicitly set those 3 fields prior to registration. Signed-off-by: Michael Jeanson <mjeanson@efficios.com> Reviewed-by: Florian Weimer <fweimer@redhat.com>
14 dayss390x: Update ulpsMark Wielaard1-1/+2
Needed for test-float-cacosh, test-float-csin, test-float32-cacosh and test-float32-csin. Reviewed-by: Florian Weimer <fweimer@redhat.com>
14 dayself: avoid jumping over a needed declarationDJ Delorie1-3/+3
The declaration of found_other_class could be jumped over via the goto just above it, but the code jumped to uses found_other_class. Move the declaration up a bit to ensure it's properly declared and initialized.
14 daysmath: Fix log10f on some ABIsAdhemerval Zanella1-3/+2
The commit 9247f53219 triggered some regressions on loongarch and riscv: math/test-float-log10 math/test-float32-log10 And it is due a wrong sync with CORE-MATH for special 0.0/-0.0 inputs. Checked on aarch64-linux-gnu and loongarch64-linux-gnu-lp64d.
2024-11-07stdio-common: Add tests for formatted vsnprintf output specifiersMaciej W. Rozycki16-1/+345
Wire vsnprintf into test infrastructure for formatted printf output specifiers. Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-07stdio-common: Add tests for formatted vsprintf output specifiersMaciej W. Rozycki16-1/+345
Wire vsprintf into test infrastructure for formatted printf output specifiers. Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-07stdio-common: Add tests for formatted vfprintf output specifiersMaciej W. Rozycki16-1/+315
Wire vfprintf into test infrastructure for formatted printf output specifiers. Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-07stdio-common: Add tests for formatted vdprintf output specifiersMaciej W. Rozycki16-1/+343
Wire vdprintf into test infrastructure for formatted printf output specifiers. Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-07stdio-common: Add tests for formatted vasprintf output specifiersMaciej W. Rozycki16-1/+335
Wire vasprintf into test infrastructure for formatted printf output specifiers. Owing to mtrace logging these tests take amounts of time to complete similar to those of corresponding asprintf tests, so set timeouts for the tests accordingly, with a global default for all the vasprintf tests, and then individual higher settings for double and long double tests each. Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-07stdio-common: Add tests for formatted vprintf output specifiersMaciej W. Rozycki16-1/+315
Wire vprintf into test infrastructure for formatted printf output specifiers. Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-07stdio-common: Add tests for formatted snprintf output specifiersMaciej W. Rozycki16-1/+341
Wire snprintf into test infrastructure for formatted printf output specifiers. Reviewed-by: DJ Delorie <dj@redhat.com>