aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2024-04-17argp: Expand argp_usage, _option_is_short, and _option_is_endAdhemerval Zanella2-18/+26
The argp code uses some clever macro redefine to avoid need to duplicate the optimized static inline implementations for argp_usage, _option_is_short, and _option_is_end. This however leads to some build issues with clang, since some function prototypes are redefined to add the hidden attribute with libc_hidden_proto. To avoid extensive changes on internal headers, just expand the function implementations and avoid the macro redefine tricks.
2024-04-17misc: Suppress clang warnings on syslogAdhemerval Zanella1-6/+24
clang complains that adding a 'int_t' to a string does not append to it, but the idea is to print the pid conditionally.
2024-04-17posix: Suppress clang confstr -Wignored-attributesAdhemerval Zanella1-0/+6
clang warns that alias will be always resolve to _GI___confstr even if weak definition of __GI_confstr is overridden, which is really the intention.
2024-04-17resolv: Suppress clang -Wsometimes-uninitialized on getaddrinfoAdhemerval Zanella1-0/+11
clang warns that endp is used uninitialized whenever '||' condition is true: getaddrinfo.c:1888:11: error: variable 'endp' is used uninitialized whenever '||' condition is true [-Werror,-Wsometimes-uninitialized] 1888 | && (cp == NULL | ^~~~~~~~~~ getaddrinfo.c:1891:11: note: uninitialized use occurs here 1891 | && *endp == '\0' | ^~~~ getaddrinfo.c:1888:11: note: remove the '||' if its condition is always false 1888 | && (cp == NULL | ^~~~~~~~~~ 1889 | || (bits = strtoul (cp, &endp, 10)) != ULONG_MAX | ~~ getaddrinfo.c:1875:13: note: initialize the variable 'endp' to silence this warning 1875 | char *endp; | ^ | = NULL 1 error generated. However it will be evaluated after strtoul call.
2024-04-17elf: Suppress unused function clang for __ifunc_resolverAdhemerval Zanella3-1/+13
The __ifunc_resolver macro expands to: extern __typeof (__redirect_name) name __attribute__ ((ifunc ("iname_ifunc"))); static __typeof (__redirect_name) *name_ifunc (void) { [...] }; And although NAME_IFUNC is and alias for NAME, clang still emits an 'unused function 'name_ifunc' [-Werror,-Wunused-function]' warning. The static is used to avoid name pollution on static linkage.
2024-04-17Fix inhibit_stack_protector for clangAdhemerval Zanella1-1/+6
2024-04-17nptl: Fix Wincompatible-pointer-types on clangAdhemerval Zanella1-1/+1
Clang issues: error: incompatible pointer types passing 'struct pthread **' to parameter of type 'void **' [-Werror,-Wincompatible-pointer-types]
2024-04-17configure: Use -Wno-maybe-uninitialized iff compiler supports itAdhemerval Zanella3-1/+33
clang does not support the flag.
2024-04-17Suppress -Wmaybe-uninitialized only for gccAdhemerval Zanella40-54/+56
The warning is not supported by clang.
2024-04-17Disable __USE_EXTERN_INLINES for clangAdhemerval Zanella1-1/+1
clang does not allow to redefine attributes after function declaration. Although it work for external usage, its breaks the build for internal symbol that glibc provides as optimization (for instance bsearch with stdlib-bsearch.h or __cmsg_nxthdr). Disable such optimization for clang while building glibc.
2024-04-17Add clang specific warnings suppress macrosAdhemerval Zanella1-0/+22
Four new macros are added: * DIAG_{PUSH,POP}_NEEDS_COMMENT_CLANG are similar to DIAG_{PUSH,POP}_NEEDS_COMMENT, but enable clang specific pragmas to handle warnings for options only supported by clang. * DIAG_IGNORE_NEEDS_COMMENT_{CLANG,GCC} are similar to DIAG_IGNORE_NEEDS_COMMENT, but enable the warning suppression only for the referenced compiler.
2024-04-17stdlib: longlong.h: Do no use asm input cast for clangAdhemerval Zanella1-20/+28
clang by default rejects the input casts with: error: invalid use of a cast in a inline asm context requiring an lvalue: remove the cast or build with -fheinous-gnu-extensions And even with -fheinous-gnu-extensions clang still throws an warning and also states that this option might be removed in the future. For gcc the cast are still useful [1] as type-checking. [1] https://gcc.gnu.org/pipermail/gcc-patches/2021-October/581722.html
2024-04-17stdlib: Remove -Wmaybe-uninitialized supression on setenv.cAdhemerval Zanella1-11/+2
It is not required on current supported gcc.
2024-04-17stdlib: Improve fortify with clangAdhemerval Zanella1-0/+1
It improve fortify checks for realpath, ptsname_r, wctomb, mbstowcs, and wcstombs. The runtime and compile checks have similar coverage as with GCC. Checked on aarch64, armhf, x86_64, and i686.
2024-04-17Fix 'Reported-By' to use Camel Case for commit 6a98f4640ea453fAdhemerval Zanella1-1/+1
2024-04-17Document CVE-2024-2961Adhemerval Zanella1-0/+27
This commit adds "advisories" entries for the above three CVEs.
2024-04-17iconv: ISO-2022-CN-EXT: fix out-of-bound writes when writing escape sequence ↵Charles Fol3-1/+144
(CVE-2024-2961) ISO-2022-CN-EXT uses escape sequences to indicate character set changes (as specified by RFC 1922). While the SOdesignation has the expected bounds checks, neither SS2designation nor SS3designation have its; allowing a write overflow of 1, 2, or 3 bytes with fixed values: '$+I', '$+J', '$+K', '$+L', '$+M', or '$*H'. Checked on aarch64-linux-gnu. Co-authored-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> Reviewed-by: Carlos O'Donell <carlos@redhat.com> Tested-by: Carlos O'Donell <carlos@redhat.com>
2024-04-16elf/rtld: Count skipped environment variables for enable_secureJoe Simmons-Talbott3-8/+66
When using the glibc.rtld.enable_secure tunable we need to keep track of the count of environment variables we skip due to __libc_enable_secure being set and adjust the auxv section of the stack. This fixes an assertion when running ld.so directly with glibc.rtld.enable_secure set. Add a testcase that ensures the assert is not hit. elf/rtld.c:1324 assert (auxv == sp + 1); Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2024-04-14powerpc: Fix ld.so address determination for PCREL mode (bug 31640)Florian Weimer1-0/+19
This seems to have stopped working with some GCC 14 versions, which clobber r2. With other compilers, the kernel-provided r2 value is still available at this point. Reviewed-by: Peter Bergner <bergner@linux.ibm.com>
2024-04-13Revert "x86_64: Suppress false positive valgrind error"Florian Weimer4-29/+3
This reverts commit a1735e0aa858f0c8b15e5ee9975bff4279423680. The test failure is a real valgrind bug that needs to be fixed before valgrind is usable with a glibc that has been built with CC="gcc -march=x86-64-v3". The proposed valgrind patch teaches valgrind to replace ld.so strcmp with an unoptimized scalar implementation, thus avoiding any AVX2-related problems. Valgrind bug: <https://bugs.kde.org/show_bug.cgi?id=485487> Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
2024-04-11wcsmbs: Ensure wcstr worst-case linear execution time (BZ 23865)Adhemerval Zanella3-72/+507
It uses the same two-way algorithm used on strstr, strcasestr, and memmem. Different than strstr, neither the "shift table" optimization nor the self-adapting filtering check is used because it would result in a too-large shift table (and it also simplifies the implementation bit). Checked on x86_64-linux-gnu and aarch64-linux-gnu. Reviewed-by: DJ Delorie <dj@redhat.com>
2024-04-11wcsmbs: Add test-wcsstrAdhemerval Zanella4-54/+117
Parametrize test-strstr.c so it can be used to check wcsstr. Checked on x86_64-linux-gnu and aarch64-linux-gnu. Reviewed-by: DJ Delorie <dj@redhat.com>
2024-04-10posix: Sync tempname with gnulibAdhemerval Zanella12-132/+260
The gnulib version contains an important change (9ce573cde), which fixes some problems with multithreading, entropy loss, and ASLR leak nfo. It also fixes an issue where getrandom is not being used on some new files generation (only for __GT_NOCREATE on first try). The 044bf893ac removed __path_search, which is now moved to another gnulib shared files (stdio-common/tmpdir.{c,h}). Tthis patch also fixes direxists to use __stat64_time64 instead of __xstat64, and move the include of pathmax.h for !_LIBC (since it is not used by glibc). The license is also changed from GPL 3.0 to 2.1, with permission from the authors (Bruno Haible and Paul Eggert). The sync also removed the clock fallback, since clock_gettime with CLOCK_REALTIME is expected to always succeed. It syncs with gnulib commit 323834962817af7b115187e8c9a833437f8d20ec. Checked on x86_64-linux-gnu. Co-authored-by: Bruno Haible <bruno@clisp.org> Co-authored-by: Paul Eggert <eggert@cs.ucla.edu> Reviewed-by: Bruno Haible <bruno@clisp.org>
2024-04-10socket: Add new test for connectSergey Kolosov2-0/+114
This commit adds a simple bind/accept/connect test for an IPv4 TCP connection to a local process via the loopback interface. Reviewed-by: Arjun Shankar <arjun@redhat.com>
2024-04-10libsupport: Add xgetpeernameSergey Kolosov3-0/+32
The patch adds redirections for getpeername. Reviewed-by: Arjun Shankar <arjun@redhat.com>
2024-04-09nptl: Add tst-pthread-key1-static for BZ #21777H.J. Lu2-0/+39
Add a static pthread static tests to verify that BZ #21777 is fixed. Reviewed-by: Florian Weimer <fweimer@redhat.com>
2024-04-08elf: Add ld.so test with non-existing program nameFlorian Weimer2-0/+46
None of the existing tests seem to cover the case where _dl_signal_error is called without an active error handler. The new elf/tst-rtld-does-not-exist test triggers such a _dl_signal_error call from _dl_map_object. Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
2024-04-08elf: Check objname before calling fatal_errorH.J. Lu1-1/+5
_dl_signal_error may be called with objname == NULL. _dl_exception_create checks objname == NULL. But fatal_error doesn't. Check objname before calling fatal_error. This fixes BZ #31596. Reviewed-by: Sunil K Pandey <skpgkp2@gmail.com>
2024-04-08Use crtbeginT.o and crtend.o for non-PIE static executablesH.J. Lu1-4/+6
When static PIE is enabled by default, we shouldn't use crtbeginS.o and crtendS.o for non-PIE static executables. Check $($(@F)-no-pie) to use crtbeginT.o and crtend.o to create non-PIE static executables. Reviewed-by: Sunil K Pandey <skpgkp2@gmail.com>
2024-04-08aarch64: Enhanced CPU diagnostics for ld.soFlorian Weimer2-0/+118
This prints some information from struct cpu_features, and the midr_el1 and dczid_el0 system register contents on every CPU. Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com>
2024-04-08x86: Add generic CPUID data dumper to ld.so --list-diagnosticsFlorian Weimer2-1/+468
This is surprisingly difficult to implement if the goal is to produce reasonably sized output. With the current approaches to output compression (suppressing zeros and repeated results between CPUs, folding ranges of identical subleaves, dealing with the %ecx reflection issue), the output is less than 600 KiB even for systems with 256 logical CPUs. Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
2024-04-08elf: Add CPU iteration support for future use in ld.so diagnosticsFlorian Weimer3-0/+236
Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com>
2024-04-07timezone: sync to TZDB 2024aPaul Eggert9-1555/+2687
Sync tzselect, zdump, zic to TZDB 2024a. This patch incorporates the following TZDB source code changes, listed roughly in descending order of importance. zic now supports links to links, needed for future tzdata zic now defaults to '-b slim' zic now updates output files atomically zic has new options -R, -l -, -p - zic -r now uses -00 for unspecified timestamps zdump now uses [lo,hi) for both -c and -t Fix several integer overflow bugs zic now checks input bytes more carefully Simplify and fix new TZDIR setup Default time_t to 64 bits on glibc 2.34+ 32-bit zic now generates TZ strings that conform to POSIX when all-year DST zic -v now shows extreme-int tm_year transitions Fix zic bug in last time type of Asia/Gaza etc. Fix zic bug with Palestine after 2075 Fix bug uncovered by recent change to Iran history Fix 'zic -b fat' bug with Port Moresby 32-bit data Fix zic bug with -r @X where X is deduced from TZ Fix bug with zic -r cutoff before 1st transition Fix leap second expiry and truncation Fix zic bug on Linux 2.6.16 and 2.6.17 Fix bug with 'zic -d /a/b/c' if /a is unwriteable Don't mistruncate TZif files at leap seconds Fix zdump undefined behavior if !USE_LTZ zdump -v reports localtime+gmtime failures better Fix zdump diagnostic for missing timezone Don't assume nonempty argv Port better to C23 Do not assume negative >> behavior I18nize zdump a bit better Port zdump to right_only installations New tzselect menu option 'now' tzselect can now use current time to help choose Improve tzselect behavior for Turkey etc. tzselect: do not create temporary files tzselect: work around mawk bug with {2,} tzselect: Port to POSIX awk, which prohibits -v newlines Do not use empty RE in tzselect Don't set TZ in tzselect Avoid sed, expr in tzselect tzselect: Fix problems with spaces in TZDIR Improve tzselect diagnostics Remove zic workaround for Qt bug 53071 Remove zic support for "min" in Rule lines Remove zic support for zic -y, Rule TYPEs, pacificnew Remove tzselect workaround for Bash 1.14.7 bug * SHARED-FILES: Update to match current sync. * config.h.in (HAVE_STRERROR): Remove; no longer needed. * timezone/Makefile ($(objpfx)zic.o): Depend on tzdir.h. ($(objpfx)tzdir.h): New rule to build a placeholder. * timezone/private.h, timezone/tzfile.h, timezone/version: * timezone/zdump.c, timezone/zic.c: Copy verbatim from TZDB 2024a.
2024-04-06Fix bsearch, qsort doc to match POSIX betterPaul Eggert1-24/+36
* manual/search.texi (Array Search Function): Correct the statement about lfind’s mean runtime: it is proportional to a number (not that number), and this is true only if random elements are searched for. Relax the constraint on bsearch’s array argument: POSIX says it need not be sorted, only partially sorted. Say that the first arg passed to bsearch’s comparison function is the key, and the second arg is an array element, as POSIX requires. For bsearch and qsort, say that the comparison function should not alter the array, as POSIX requires. For qsort, say that the comparison function must define a total order, as POSIX requires, that it should not depend on element addresses, that the original array index can be used for stable sorts, and that if qsort still works if memory allocation fails. Be more consistent in calling the array elements “elements” rather than “objects”. Co-authored-by: Zack Weinberg <zack@owlfolio.org>
2024-04-06x86-64: Exclude FMA4 IFUNC functions for -mapxfH.J. Lu6-9/+70
When -mapxf is used to build glibc, the resulting glibc will never run on FMA4 machines. Exclude FMA4 IFUNC functions when -mapxf is used. This requires GCC which defines __APX_F__ for -mapxf with commit: 1df56719bd8 x86: Define __APX_F__ for -mapxf Reviewed-by: Sunil K Pandey <skpgkp2@gmail.com>
2024-04-05Reinstate generic features-time64.hAdhemerval Zanella1-0/+19
The a4ed0471d7 removed the generic version which is included by features.h and used by Hurd. Checked by building i686-gnu and x86_64-gnu with build-many-glibc.py.
2024-04-04Cleanup __tls_get_addr on alpha/microblaze localplt.dataAdhemerval Zanella2-4/+0
They are not required. Checked with a make check for both ABIs.
2024-04-04arm: Remove ld.so __tls_get_addr plt usageAdhemerval Zanella2-3/+2
Use the hidden alias instead. Checked on arm-linux-gnueabihf.
2024-04-04aarch64: Remove ld.so __tls_get_addr plt usageAdhemerval Zanella2-3/+2
Use the hidden alias instead. Checked on aarch64-linux-gnu.
2024-04-04math: x86 trunc traps when FE_INEXACT is enabled (BZ 31603)Adhemerval Zanella6-93/+87
The implementations of trunc functions using x87 floating point (i386 and x86_64 long double only) traps when FE_INEXACT is enabled. Although this is a GNU extension outside the scope of the C standard, other architectures that also support traps do not show this behavior. The fix moves the implementation to a common one that holds any exceptions with a 'fnclex' (libc_feholdexcept_setround_387). Checked on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
2024-04-04math: x86 floor traps when FE_INEXACT is enabled (BZ 31601)Adhemerval Zanella9-140/+144
The implementations of floor functions using x87 floating point (i386 and 86_64 long double only) traps when FE_INEXACT is enabled. Although this is a GNU extension outside the scope of the C standard, other architectures that also support traps do not show this behavior. The fix moves the implementation to a common one that holds any exceptions with a 'fnclex' (libc_feholdexcept_setround_387). Checked on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
2024-04-04math: x86 ceill traps when FE_INEXACT is enabled (BZ 31600)Adhemerval Zanella10-141/+181
The implementations of ceil functions using x87 floating point (i386 and x86_64 long double only) traps when FE_INEXACT is enabled. Although this is a GNU extension outside the scope of the C standard, other architectures that also support traps do not show this behavior. The fix moves the implementation to a common one that holds any exceptions with a 'fnclex' (libc_feholdexcept_setround_387). Checked on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
2024-04-04aarch64/fpu: Add vector variants of erfcJoe Ramsay17-1/+4897
Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com>
2024-04-04aarch64/fpu: Add vector variants of tanhJoe Ramsay16-27/+405
Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com>
2024-04-04aarch64/fpu: Add vector variants of sinhJoe Ramsay16-0/+572
Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com>
2024-04-04aarch64/fpu: Add vector variants of atanhJoe Ramsay14-0/+288
Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com>
2024-04-04aarch64/fpu: Add vector variants of asinhJoe Ramsay14-0/+489
Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com>
2024-04-04aarch64/fpu: Add vector variants of acoshJoe Ramsay19-0/+653
Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com>
2024-04-04aarch64/fpu: Add vector variants of coshJoe Ramsay18-1/+648
Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com>
2024-04-04aarch64/fpu: Add vector variants of erfJoe Ramsay19-1/+4531
Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com>