Commit Graph

42636 Commits

Author SHA1 Message Date
Wilco Dijkstra dea1e52af3 malloc: Cleanup libc_realloc
Minor cleanup of libc_realloc: remove unnecessary special cases for mmap, move
ar_ptr initialization, first check for oldmem == NULL.
2025-08-04 17:13:55 +00:00
Wilco Dijkstra 4b74591022 Change mmap representation 2025-08-04 17:13:55 +00:00
Collin Funk 4d059af105 manual: Adjust documentation to standardization of select
The select function, fd_set, and FD_* macros were standardized by POSIX
in the sys/select.h header. They are still defined in sys/types.h if
__USE_MISC is defined, but we should recommend the more portable and
standardized sys/select.h.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
2025-08-04 11:18:02 -03:00
Collin Funk 6e3e14fd4c manual: Use sys/select.h instead of sys/time.h for select example.
The original example works on glibc since sys/time.h includes
sys/select.h. However, since POSIX requires that select is defined in
sys/select.h this change makes the example more portable.

Reported by Gavin Smith <gavinsmith0123@gmail.com> in:
<https://lists.gnu.org/archive/html/bug-texinfo/2025-07/msg00091.html>.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
2025-08-04 11:16:23 -03:00
Collin Funk 0f8c3c4329 manual: document getsubopt standardization.
The getsubopt function was an XSI extension since POSIX issue 4 until it
was added to Base in POSIX Issue 7.  This also adds the 'restrict'
qualifier to the arguments as done in POSIX.1-2024, and has been the
case in glibc.
Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
2025-08-04 11:15:08 -03:00
Luca Boccassi d7da87980c errlist: add missing entries for MIPS/SPARC
These are defined in the kernel headers but missing from the list
of names, so strerrorname_np() returns NULL.

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/mips/include/uapi/asm/errno.h#n95
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/sparc/include/uapi/asm/errno.h#n55

Signed-off-by: Luca Boccassi <luca.boccassi@gmail.com>
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2025-08-04 11:13:48 -03:00
Samuel Thibault ad4589e2d8 hurd: support: Fix running SGID tests
Secure mode is enabled only if SGID actually provides a new privilege,
so we have to drop it before gaining it again.

Fixes commit 3a3fb2ed83
("Fix error reporting (false negatives) in SGID tests")
2025-08-03 23:59:55 +02:00
Florian Weimer e1f03adef9 support: Handle COPY_FILE_RANGE events with FUSE 2025-08-03 11:22:44 +02:00
Wilco Dijkstra 35a7a7ab99 malloc: Cleanup sysmalloc_mmap
Cleanup sysmalloc_mmap - simplify padding since it is always a constant.
Remove av parameter which is only used in do_check_chunk, but since it may be
NULL for mmap, it will cause a crash in checking mode.  Remove the odd check
on mmap in do_check_chunk.

Reviewed-by: DJ Delorie <dj@redhat.com>
2025-08-02 15:21:16 +00:00
Wilco Dijkstra b68b125ad1 malloc: Improve checked_request2size
Change checked_request2size to return SIZE_MAX for huge inputs.  This
ensures large allocation requests stay large and can't be confused with a
small allocation.  As a result several existing checks against PTRDIFF_MAX
become redundant.

Reviewed-by: DJ Delorie <dj@redhat.com>
2025-08-02 14:38:35 +00:00
Wilco Dijkstra 21fda179c2 malloc: Cleanup madvise defines
Remove redundant ifdefs for madvise/THP.

Reviewed-by: DJ Delorie <dj@redhat.com>
2025-08-02 14:19:50 +00:00
Wilco Dijkstra 2df57ad95c benchtests: Cleanup bench-malloc-thread
Change duration to 3 seconds.  Add spaces before '('.

Reviewed-by: DJ Delorie <dj@redhat.com>
2025-08-02 14:18:23 +00:00
Wilco Dijkstra ad4caba414 malloc: Fix MAX_TCACHE_SMALL_SIZE
MAX_TCACHE_SMALL_SIZE should use chunk size since it is used after
checked_request2size.  Increase limit of tcache_max_bytes by 1 since all
comparisons use '<'.  As a result, the last tcache entry is now used as
expected.

Reviewed-by: DJ Delorie <dj@redhat.com>
2025-08-02 14:16:24 +00:00
Adhemerval Zanella 7107bebf19 nptl: Fix SYSCALL_CANCEL for return values larger than INT_MAX (BZ 33245)
The SYSCALL_CANCEL calls __syscall_cancel, which in turn
calls __internal_syscall_cancel with an 'int' return instead of the
expected 'long int'.  This causes issues with syscalls that return
values larger than INT_MAX, such as copy_file_range [1].

Checked on x86_64-linux-gnu.

[1] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=79139

Reviewed-by: Andreas K. Huettel <dilfridge@gentoo.org>
2025-08-01 16:57:41 -03:00
H.J. Lu cf91048748 i386: Consolidate subdirectory check on elf and csu
Consolidate subdirectory check on elf and csu to avoid checking them
more than once.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Sam James <sam@gentoo.org>
2025-08-01 05:51:28 -07:00
H.J. Lu 69451ca6ec x86-64: Consolidate subdirectory check on elf and csu
Consolidate subdirectory check on elf and csu to avoid checking them
more than once.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Sam James <sam@gentoo.org>
2025-08-01 05:50:53 -07:00
Florian Weimer 20681be149 elf: Handle ld.so with LOAD segment gaps in _dl_find_object (bug 31943)
Detect if ld.so not contiguous and handle that case in _dl_find_object.
Set l_find_object_processed even for initially loaded link maps,
otherwise dlopen of an initially loaded object adds it to
_dlfo_loaded_mappings (where maps are expected to be contiguous),
in addition to _dlfo_nodelete_mappings.

Test elf/tst-link-map-contiguous-ldso iterates over the loader
image, reading every word to make sure memory is actually mapped.
It only does that if the l_contiguous flag is set for the link map.
Otherwise, it finds gaps with mmap and checks that _dl_find_object
does not return the ld.so mapping for them.

The test elf/tst-link-map-contiguous-main does the same thing for
the libc.so shared object.  This only works if the kernel loaded
the main program because the glibc dynamic loader may fill
the gaps with PROT_NONE mappings in some cases, making it contiguous,
but accesses to individual words may still fault.

Test elf/tst-link-map-contiguous-libc is again slightly different
because the dynamic loader always fills the gaps with PROT_NONE
mappings, so a different form of probing has to be used.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
2025-08-01 10:21:39 +02:00
Florian Weimer 2cac9559e0 elf: Extract rtld_setup_phdr function from dl_main
Remove historic binutils reference from comment and update
how this data is used by applications.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
2025-08-01 10:21:27 +02:00
Davide Cavalca d9a348d092 stdlib: resolve a double lock init issue after fork [BZ #32994]
The __abort_fork_reset_child (introduced in
d40ac01cbb) call resets the lock after the
fork. This causes a DRD regression in valgrind
(https://bugs.kde.org/show_bug.cgi?id=503668), as it's effectively a
double initialization, despite it being actually ok in this case. As
suggested in https://sourceware.org/bugzilla/show_bug.cgi?id=32994#c2
we replace it here with a memcpy of another initialized lock instead,
which makes valgrind happy.

Reviewed-by: Florian Weimer <fweimer@redhat.com>
2025-07-31 19:11:08 +02:00
Joseph Myers 258126bc0b Use Linux 6.16, GCC 15, binutils 2.45 in build-many-glibcs.py
Tested with build-many-glibcs.py (host-libraries, compilers and glibcs
builds).
2025-07-29 15:08:43 +00:00
William Hunt 9097cbf5d8 malloc: Enable THP always support on hugetlb tunable
Enable support for THP always when glibc.malloc.hugetlb=1, as the tunable
currently only gives explicit support in malloc for the THP madvise mode
by aligning to a huge page size. Add a thp_mode parameter to mp_ and check
in madvise_thp whether the system is using madvise mode, otherwise the
`__madvise` call is useless. Set the thp_mode to be unsupported by default,
but if the hugetlb tunable is set this updates thp_mode. Performance of
xalancbmk improves by 4.9% on Neoverse V2 when THP always mode is set on the
system and glibc.malloc.hugetlb=1.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
2025-07-29 15:05:51 +00:00
Wilco Dijkstra 089b4fb90f malloc: Remove redundant NULL check
Remove a redundant NULL check from tcache_get_n.

Reviewed-by: Cupertino Miranda <cupertino.miranda@oracle.com>
2025-07-29 14:11:58 +00:00
Paul Zimmermann 9716ee567a replace atan2-inputs with more meaningful inputs
Commit 934d88d used inputs with exponent generated at random in the
whole binary64 exponent range, which yields essentially very large
or very small values of |y/x|. Instead, this commit generates x, y at
random in [-10,10], which should better corresponds to real applications.
Reviewed-by: Florian Weimer <fweimer@redhat.com>
2025-07-29 13:25:59 +02:00
Sam James 87afbd7a1a
inet-fortified: fix namespace violation (bug 33227)
We need to use __sz, not sz, as we do elsewhere.

Reviewed-by: Florian Weimer <fweimer@redhat.com>
2025-07-29 11:50:29 +01:00
Samuel Thibault d25fcb681f tst-cond23: return EXIT_UNSUPPORTED on missing clock selection 2025-07-29 11:56:17 +02:00
Andreas K. Hüttel 03b2515065
NEWS: Add 2.43 section
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
2025-07-28 20:33:18 +02:00
Andreas K. Hüttel 170550da27
Bump version to 2.42.9000
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
2025-07-28 20:31:31 +02:00
Andreas K. Hüttel d2097651cc
Create ChangeLog.old/ChangeLog.31
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
2025-07-28 20:22:55 +02:00
Andreas K. Hüttel 2dc0412498
Bump version number to 2.42
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
2025-07-28 20:19:17 +02:00
Andreas K. Hüttel c113fdc40b
NEWS: update with last-minute fix bug 33224
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
2025-07-28 20:12:05 +02:00
Adhemerval Zanella 6ab36c4e6d math: Update auto-libm-tests-in with ldbl-128ibm compoundn/pown failures
It fixes ce488f7c16 which updated
the out files without using gen-auto-libm-tests.c instructions.

Checked on powerpc64le-linux-gnu.

Tested-by: Andreas K. Huettel <dilfridge@gentoo.org>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2025-07-28 13:58:54 -03:00
Andreas K. Hüttel 54851e392d
INSTALL: Update newest tested binutils version
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
2025-07-28 16:49:01 +02:00
Florian Weimer 620f0730f3 elf: Compile _dl_debug_state separately (bug 33224)
This ensures that the compiler will not inline it, so that
debuggers which do not use the Systemtap probes can reliably
set a breakpoint on it.

Reviewed-by: Andreas K. Huettel <dilfridge@gentoo.org>
Tested-by: Andreas K. Huettel <dilfridge@gentoo.org>
2025-07-28 16:06:54 +02:00
Sam James c4ff6e666b
configure.ac: fix bashisms in SFrame checks
Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
2025-07-28 15:52:11 +02:00
Andreas K. Hüttel 0def172386
INSTALL: regenerate
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
2025-07-26 17:07:14 +02:00
Andreas K. Hüttel 4e42971a03
install.texi: Update tested build tool versions
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
2025-07-26 17:05:21 +02:00
Andreas K. Hüttel 015483f8a1
contrib.texi: Update
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
2025-07-26 16:53:43 +02:00
Andreas K. Hüttel a92914de93
NEWS: insert list of CVEs
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
2025-07-26 15:23:49 +02:00
Andreas K. Hüttel 4d585d0afb
advisories: s/CVE-id/CVE-Id/ (the lowercase i breaks our tooling)
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
2025-07-26 15:21:27 +02:00
Carlos O'Donell 2a796b7981 NEWS: Generalize testing section and mention the manual. 2025-07-25 18:41:05 -04:00
Andreas K. Hüttel 712623fb07
NEWS: Insert list of bugs fixed in 2.42
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
2025-07-25 23:52:41 +02:00
Andreas K. Hüttel 12c9494310
NEWS: Collect some more newsworthy items
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
2025-07-25 23:36:56 +02:00
Andreas K. Hüttel 30a5fd9b11
NEWS: editorial changes
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
2025-07-25 21:18:13 +02:00
Andreas K. Hüttel b149c8e1f7
po: Update swedish translations
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
2025-07-25 19:31:37 +02:00
Adhemerval Zanella 9e1951ae88 debug: Only run sframe tests if run-built-tests is enabled 2025-07-25 14:03:23 -03:00
Adhemerval Zanella 8698af6dcf aarch64: Fix aarch64_be build with --enable-sframe 2025-07-25 13:57:44 -03:00
Adhemerval Zanella 158e939aef elf: Check SFrame on tst-dl_find_object.c
If SFrame is enable check if DLFO_FLAG_SFRAME is set (since sframe
support is added by default) and if dlfo_sframe has the expected
value.

Checked on aarch64-linux-gnu and x86_64-linux-gnu.

Reviewed-by: Sam James <sam@gentoo.org>
2025-07-24 15:51:58 -03:00
Claudiu Zissulescu 072b5a9922 sframe: Add support for SFRAME_F_FDE_FUNC_START_PCREL flag
The Sframe V2 has a new errata which introduces the
SFRAME_F_FDE_FUNC_START_PCREL flag. This flag indicates the encoding
of the SFrame FDE function start address field like this:

- if set, sfde_func_start_address field contains the offset in bytes
to the start PC of the associated function from the field itself.

- if unset, sfde_func_start_address field contains the offset in bytes
to the start PC of the associated function from the start of the
SFrame section.

Signed-off-by: Claudiu Zissulescu <claudiu.zissulescu-ianculescu@oracle.com>
Reviewed-by: Sam James <sam@gentoo.org>
2025-07-24 15:51:58 -03:00
Adhemerval Zanella 20528165bd Disable SFrame support by default
And add extra checks to enable for binutils 2.45 and if the architecture
explicitly enables it.  When SFrame is disabled, all the related code
is also not enabled for backtrace() and _dl_find_object(), so SFrame
backtracking is not used even if the binary has the SFrame segment.

This patch also adds some other related fixes:

  * Fixed an issue with AC_CHECK_PROG_VER, where the READELF_SFRAME
    usage prevented specifying a different readelf through READELF
    environment variable at configure time.

  * Add an extra arch-specific internal definition,
    libc_cv_support_sframe, to disable --enable-sframe on architectures
    that have binutils but not glibc support (s390x).

  * Renamed the tests without the .sframe segment and move the
    tst-backtrace1 from pthread to debug.

  * Use the built compiler strip to remove the .sframe segment,
    instead of the system one (which might not support SFrame).

Checked on x86_64-linux-gnu and aarch64-linux-gnu.

Reviewed-by: Sam James <sam@gentoo.org>
2025-07-24 15:51:58 -03:00
Sachin Monga ce488f7c16
math: xfail some pown and compoundn tests for ibm128-libgcc
On powerpc math/test-ibm128-pown shows below failures:

testing long double (without inline functions)
infinity has wrong sign.
Failure: Test: pown_downward (-inf, 0x7fffffffffffffffLL)
Result:
 is:          inf   inf
 should be:  -inf  -inf
Failure: Test: pown_downward (-0, 9223372036854775807LL)
Result:
 is:          0.00000000000000000000000000000000e+00   0x0.000000000000000000000000000p+0
 should be:  -0.00000000000000000000000000000000e+00  -0x0.000000000000000000000000000p+0
 difference:  0.00000000000000000000000000000000e+00   0x0.000000000000000000000000000p+0
 ulp       :  0.0000
 max.ulp   :  16.0000
Failure: pown_downward (-0x1p+0, 9223372036854775807LL): Exception "Invalid operation" set
Failure: pown_downward (-0x1p+0, 9223372036854775807LL): errno set to 34, expected 0 (unchanged)
Failure: Test: pown_downward (-0x1p+0, 9223372036854775807LL)
Result:
 is:         qNaN
 should be:  -1.00000000000000000000000000000000e+00  -0x1.000000000000000000000000000p+0
infinity has wrong sign.
Failure: Test: pown_towardzero (-0, -0x7fffffffffffffffLL)
Result:
 is:          inf   inf
 should be:  -inf  -inf
infinity has wrong sign.
Failure: Test: pown_towardzero (-inf, 0x7fffffffffffffffLL)
Result:
 is:          inf   inf
 should be:  -inf  -inf
Failure: Test: pown_towardzero (-inf, -0x7fffffffffffffffLL)
Result:
 is:          0.00000000000000000000000000000000e+00   0x0.000000000000000000000000000p+0
 should be:  -0.00000000000000000000000000000000e+00  -0x0.000000000000000000000000000p+0
 difference:  0.00000000000000000000000000000000e+00   0x0.000000000000000000000000000p+0
 ulp       :  0.0000
 max.ulp   :  16.0000
Failure: Test: pown_towardzero (-0, 9223372036854775807LL)
Result:
 is:          0.00000000000000000000000000000000e+00   0x0.000000000000000000000000000p+0
 should be:  -0.00000000000000000000000000000000e+00  -0x0.000000000000000000000000000p+0
 difference:  0.00000000000000000000000000000000e+00   0x0.000000000000000000000000000p+0
 ulp       :  0.0000
 max.ulp   :  16.0000
Failure: pown_towardzero (-0x1p+0, -9223372036854775807LL): Exception "Invalid operation" set
Failure: pown_towardzero (-0x1p+0, -9223372036854775807LL): errno set to 34, expected 0 (unchanged)
Failure: Test: pown_towardzero (-0x1p+0, -9223372036854775807LL)
Result:
 is:         qNaN
 should be:  -1.00000000000000000000000000000000e+00  -0x1.000000000000000000000000000p+0
Failure: pown_towardzero (-0x1p+0, 9223372036854775807LL): Exception "Invalid operation" set
Failure: pown_towardzero (-0x1p+0, 9223372036854775807LL): errno set to 34, expected 0 (unchanged)
Failure: Test: pown_towardzero (-0x1p+0, 9223372036854775807LL)
Result:
 is:         qNaN
 should be:  -1.00000000000000000000000000000000e+00  -0x1.000000000000000000000000000p+0
infinity has wrong sign.
Failure: Test: pown_upward (-0, -0x7fffffffffffffffLL)
Result:
 is:          inf   inf
 should be:  -inf  -inf
Failure: Test: pown_upward (-inf, -0x7fffffffffffffffLL)
Result:
 is:          0.00000000000000000000000000000000e+00   0x0.000000000000000000000000000p+0
 should be:  -0.00000000000000000000000000000000e+00  -0x0.000000000000000000000000000p+0
 difference:  0.00000000000000000000000000000000e+00   0x0.000000000000000000000000000p+0
 ulp       :  0.0000
 max.ulp   :  16.0000
Failure: pown_upward (-0x1p+0, -9223372036854775807LL): Exception "Invalid operation" set
Failure: pown_upward (-0x1p+0, -9223372036854775807LL): errno set to 34, expected 0 (unchanged)
Failure: Test: pown_upward (-0x1p+0, -9223372036854775807LL)
Result:
 is:         qNaN
 should be:  -1.00000000000000000000000000000000e+00  -0x1.000000000000000000000000000p+0

Likewise, math/test-ibm128-compoundn shows below failure:

testing long double (without inline functions)
Failure: compoundn_upward (0xf.ffffffffffff8p+1020, 1LL): Exception "Overflow" set
Failure: compoundn_upward (0xf.ffffffffffff8p+1020, 1LL): errno set to 34, expected 0 (unchanged)
Failure: Test: compoundn_upward (0xf.ffffffffffff8p+1020, 1LL)
Result:
 is:          inf   inf
 should be:   1.79769313486231570814527423731707e+308   0x1.fffffffffffff00000000000008p+1023

Signed-off-by: Sachin Monga <smonga@linux.ibm.com>
Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
2025-07-24 19:36:21 +02:00