about summary refs log tree commit diff
Commit message (Collapse)AuthorAgeFilesLines
...
* S390: Do not clobber r7 in clone [BZ #31402]Stefan Liebler2024-02-263-12/+63
| | | | | | | | | | | | Starting with commit e57d8fc97b90127de4ed3e3a9cdf663667580935 "S390: Always use svc 0" clone clobbers the call-saved register r7 in error case: function or stack is NULL. This patch restores the saved registers also in the error case. Furthermore the existing test misc/tst-clone is extended to check all error cases and that clone does not clobber registers in this error case.
* x86_64: Exclude SSE, AVX and FMA4 variants in libm multiarchSunil K Pandey2024-02-2562-295/+953
| | | | | | | | | | | | | | | | | | | When glibc is built with ISA level 3 or higher by default, the resulting glibc binaries won't run on SSE or FMA4 processors. Exclude SSE, AVX and FMA4 variants in libm multiarch when ISA level 3 or higher is enabled by default. When glibc is built with ISA level 2 enabled by default, only keep SSE4.1 variant. Fixes BZ 31335. NB: elf/tst-valgrind-smoke test fails with ISA level 4, because valgrind doesn't support AVX512 instructions: https://bugs.kde.org/show_bug.cgi?id=383010 Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
* hurd: Reformat Makefile.Carlos O'Donell2024-02-251-42/+129
| | | | | | | | | | Reflow and sort Makefile. Code generation changes present due to link order changes. No regressions on x86_64 and i686. Tested with build-many-glibcs.py for x86_64-gnu.
* htl/tests: Reformat Makefile.Carlos O'Donell2024-02-251-4/+19
| | | | | | | | | | Reflow and sort Makefile. No code generation changes in non-test binary artifacts. No regressions on x86_64 and i686. Tested with build-many-glibcs.py for x86_64-gnu.
* htl: Reformat Makefile.Carlos O'Donell2024-02-251-141/+183
| | | | | | | | Reflow and sort Makefile. Code generation changes present due to link order changes. No regressions on x86_64 and i686.
* hesiod: Reformat Makefile.Carlos O'Donell2024-02-251-2/+7
| | | | | | | | Reflow and sort Makefile. No code generation changes in non-test binary artifacts. No regressions on x86_64 and i686.
* gmon: Reformat Makefile.Carlos O'Donell2024-02-251-6/+21
| | | | | | | | Reflow and sort Makefile. Code generation changes present due to link order changes. No regressions on x86_64 and i686.
* dlfcn: Reformat Makefile.Carlos O'Donell2024-02-251-12/+62
| | | | | | | | Reflow and sort Makefile. No code generation changes in non-test binary artifacts. No regressions on x86_64 and i686.
* dirent: Reformat Makefile.Carlos O'Donell2024-02-251-10/+42
| | | | | | | | Reflow and sort Makefile. Code generation changes present due to link order changes. No regressions on x86_64 and i686.
* ctype: Reformat Makefile.Carlos O'Donell2024-02-251-4/+13
| | | | | | | | Reflow and sort Makefile. Code generation changes present due to link order changes. No regressions on x86_64 and i686.
* csu: Reformat Makefile.Carlos O'Donell2024-02-251-15/+59
| | | | | | | | Reflow and sort Makefile. Code generation changes present due to link order changes. No regressions on x86_64 and i686.
* conform: Reformat Makefile.Carlos O'Donell2024-02-251-66/+278
| | | | | | | | Reflow and sort Makefile. No code changes in generated binary artifacts. No regressions on x86_64 and i686.
* Support compiling .S files with additional optionsH.J. Lu2024-02-251-2/+4
| | | | | Add $(sysdep-ASFLAGS) $(ASFLAGS-$(<F)) $(ASFLAGS-$(@F)) to compile.S and COMPILE.S to support compiling .S files with additional options.
* x86-64: Save APX registers in ld.so trampolineH.J. Lu2024-02-251-6/+46
| | | | | | | | | Add APX registers to STATE_SAVE_MASK so that APX registers are saved in ld.so trampoline. This fixes BZ #31371. Also update STATE_SAVE_OFFSET and STATE_SAVE_MASK for i386 which will be used by i386 _dl_tlsdesc_dynamic. Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
* benchtests: Add more benchtests for rounding functions.Junxian Zhu2024-02-2312-0/+233
| | | | | | This patch adds more benchtests for rounding functions. The double inputs are copied from trunc-inputs, the float inputs are copied from truncf-inputs. and the rintf is copied from rint-inputs. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* tests: gracefully handle AppArmor userns containmentSimon Chopin2024-02-232-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | Recent AppArmor containment allows restricting unprivileged user namespaces, which is enabled by default on recent Ubuntu systems. When this happens, as is common with Linux Security Modules, the syscall will fail with -EACCESS. When that happens, the affected tests will now be considered unsupported rather than simply failing. Further information: * https://gitlab.com/apparmor/apparmor/-/wikis/unprivileged_userns_restriction * https://ubuntu.com/blog/ubuntu-23-10-restricted-unprivileged-user-namespaces * https://manpages.ubuntu.com/manpages/jammy/man5/apparmor.d.5.html (for the return code) V2: * Fix duplicated line in check_unshare_hints * Also handle similar failure in tst-pidfd_getpid V3: * Comment formatting * Aded some more documentation on syscall return value Signed-off-by: Simon Chopin <simon.chopin@canonical.com>
* treewide: python-scripts: use `is None` for none-equalityKonstantin Kharlamov2024-02-232-4/+4
| | | | | | | | Testing for `None`-ness with `==` operator is frowned upon and causes warnings in at least "LGTM" python linter. Fix that. Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* powerpc: Remove power7 strstr optimizationAdhemerval Zanella2024-02-238-671/+1
| | | | | | | | | | | | | | | The optimization is not faster than the generic algorithm, using the bench-strstr the geometric mean running on a POWER10 machine using gcc 13.1.1 is 482.47 while the default __strstr_ppc is 340.97 (which uses the generic implementation). Also, there is no need to redirect the internal str*/mem* call to optimized version, internal ifunc is supported and enabled for internal calls (meaning that the generic implementation will use any asm optimization if available). Checked on powerpc64le-linux-gnu. Reviewed-by: Peter Bergner <bergner@linux.ibm.com>
* arm: Use _dl_find_object on __gnu_Unwind_Find_exidx (BZ 31405)Adhemerval Zanella2024-02-234-57/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of __dl_iterate_phdr. On ARM dlfo_eh_frame/dlfo_eh_count maps to PT_ARM_EXIDX vaddr start / length. On a Neoverse N1 machine with 160 cores, the following program: $ cat test.c #include <stdlib.h> #include <pthread.h> #include <assert.h> enum { niter = 1024, ntimes = 128, }; static void * tf (void *arg) { int a = (int) arg; for (int i = 0; i < niter; i++) { void *p[ntimes]; for (int j = 0; j < ntimes; j++) p[j] = malloc (a * 128); for (int j = 0; j < ntimes; j++) free (p[j]); } return NULL; } int main (int argc, char *argv[]) { enum { nthreads = 16 }; pthread_t t[nthreads]; for (int i = 0; i < nthreads; i ++) assert (pthread_create (&t[i], NULL, tf, (void *) i) == 0); for (int i = 0; i < nthreads; i++) { void *r; assert (pthread_join (t[i], &r) == 0); assert (r == NULL); } return 0; } $ arm-linux-gnueabihf-gcc -fsanitize=address test.c -o test Improves from ~15s to 0.5s. Checked on arm-linux-gnueabihf.
* math: Update mips64 ulpsXi Ruoyao2024-02-221-3/+4
| | | | Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
* elf: Add new LoongArch reloc types (110 to 126) into elf.hXi Ruoyao2024-02-221-0/+17
| | | | | | | These reloc types have been added in LoongArch psABI v2.30. Link: https://github.com/loongson/la-abi-specs/blob/v2.30/laelf.adoc#relocation-types Signed-off-by: Xi Ruoyao <xry111@xry111.site>
* build-many-glibcs.py: Add s390 --disable-multi-arch / multi-arch configurations.Stefan Liebler2024-02-211-1/+16
| | | | | | | | This patch adds some --disable-multi-arch variants for s390x. As the used IFUNC variants and __GI symbols depend on the used gcc -march=cpu-level, there are multiple new configurations. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* sparc: Treat the version field in the FPU control word as reservedDaniel Cederman2024-02-191-1/+1
| | | | | | | | | | The FSR version field is read-only and might be non-zero. This allows math/test-fpucw* to correctly pass when the version is non-zero. Signed-off-by: Daniel Cederman <cederman@gaisler.com> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* Implement setcontext/getcontext/makecontext/swapcontext for Hurd x86_64Flavio Cruz2024-02-176-0/+456
| | | | | Tested with the tests provided by glibc plus some other toy examples. Message-ID: <20240217202535.1860803-1-flaviocruz@gmail.com>
* Use proc_getchildren_rusage when available in getrusage and times.Flavio Cruz2024-02-175-3/+219
| | | | Message-ID: <20240217164846.1837223-1-flaviocruz@gmail.com>
* Linux: Switch back to assembly syscall wrapper for prctl (bug 29770)Florian Weimer2024-02-172-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | Commit ff026950e280bc3e9487b41b460fb31bc5b57721 ("Add a C wrapper for prctl [BZ #25896]") replaced the assembler wrapper with a C function. However, on powerpc64le-linux-gnu, the C variadic function implementation requires extra work in the caller to set up the parameter save area. Calling a function that needs a parameter save area without one (because the prototype used indicates the function is not variadic) corrupts the caller's stack. The Linux manual pages project documents prctl as a non-variadic function. This has resulted in various projects over the years using non-variadic prototypes, including the sanitizer libraries in LLVm and GCC (GCC PR 113728). This commit switches back to the assembler implementation on most targets and only keeps the C implementation for x86-64 x32. Also add the __prctl_time64 alias from commit b39ffab860cd743a82c91946619f1b8158b0b65e ("Linux: Add time64 alias for prctl") to sysdeps/unix/sysv/linux/syscalls.list; it was not yet present in commit ff026950e280bc3e9487b41b460fb31bc5b57721. This restores the old ABI on powerpc64le-linux-gnu, thus fixing bug 29770. Reviewed-By: Simon Chopin <simon.chopin@canonical.com>
* i386: Use generic memrchr in libc (bug 31316)Florian Weimer2024-02-162-1/+1
| | | | | | | | Before this change, we incorrectly used the SSE2 variant in the implementation, without checking that the system actually supports SSE2. Tested-by: Sam James <sam@gentoo.org>
* Apply the Makefile sorting fixH.J. Lu2024-02-155-57/+57
| | | | Apply the Makefile sorting fix generated by sort-makefile-lines.py.
* sysdeps/x86_64/Makefile (tests): Add the end markerH.J. Lu2024-02-151-2/+4
|
* sort-makefile-lines.py: Allow '_' in name and "^# name"H.J. Lu2024-02-151-2/+2
| | | | | | '_' is used in Makefile variable names and many variables end with "^# name". Relax sort-makefile-lines.py to allow '_' in name and "^# name" as variable end. This fixes BZ #31385.
* trivial doc fix: remove weird phrase "syscall takes zero to five arguments"Askar Safin2024-02-141-2/+1
| | | | | | | | | | | | | "number of arguments, from zero to five" is wrong, because on Linux maximal number of arguments is 6, not 5. Also, maximal number of arguments is kernel-dependent, so let's not include it here at all. Moreover, "Each kind of system call has a definite number of arguments" is questionable. Think about SYS_open on Linux, which takes 2 or 3 arguments. Or SYS_clone on Linux x86_64, which takes 2 to 5 arguments. So I propose to fully remove this sentence. Signed-off-by: Askar Safin <safinaskar@zohomail.com> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* mips: Use builtins for ffs and ffsllJunxian Zhu2024-02-141-0/+3
| | | | | | | | | | | __builtin_ffs{,ll} basically on __builtin_ctz{,ll} in MIPS GCC compiler. The hardware ctz instructions were available after MIPS{32,64} Release1. By using builtin ctz. It can also reduce code size of ffs/ffsll. Checked on mips o32. mips64. Signed-off-by: Junxian Zhu <zhujunxian@oss.cipunited.com> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> Reviewed-by: Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org>
* x86: Expand the comment on when REP STOSB is used on memsetAdhemerval Zanella2024-02-131-1/+3
| | | | Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
* x86: Do not prefer ERMS for memset on Zen3+Adhemerval Zanella2024-02-131-0/+5
| | | | | | | | For AMD Zen3+ architecture, the performance of the vectorized loop is slightly better than ERMS. Checked on x86_64-linux-gnu on Zen3. Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
* x86: Fix Zen3/Zen4 ERMS selection (BZ 30994)Adhemerval Zanella2024-02-131-20/+18
| | | | | | | | | | | | | | | | The REP MOVSB usage on memcpy/memmove does not show much performance improvement on Zen3/Zen4 cores compared to the vectorized loops. Also, as from BZ 30994, if the source is aligned and the destination is not the performance can be 20x slower. The performance difference is noticeable with small buffer sizes, closer to the lower bounds limits when memcpy/memmove starts to use ERMS. The performance of REP MOVSB is similar to vectorized instruction on the size limit (the L2 cache). Also, there is no drawback to multiple cores sharing the cache. Checked on x86_64-linux-gnu on Zen3. Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
* x86/cet: fix shadow stack test scriptsMichael Jeanson2024-02-123-3/+3
| | | | | | | | | | | | | Some shadow stack test scripts use the '==' operator with the 'test' command to validate exit codes resulting in the following error: sysdeps/x86_64/tst-shstk-legacy-1e.sh: 31: test: 139: unexpected operator The '==' operator is invalid for the 'test' command, use '-eq' like the previous call to 'test'. Signed-off-by: Michael Jeanson <mjeanson@efficios.com> Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
* test_printers_common.py: Remove invalid escape sequenceH.J. Lu2024-02-121-1/+1
| | | | | | | | Change "\(" and "\)" to "\\(" and "\\)" in test_printers_common.py. This fixes the test warning: .../scripts/test_printers_common.py:101: SyntaxWarning: invalid escape sequence '\(' Reviewed-by: Florian Weimer <fweimer@redhat.com>
* elf: Remove attempt at env handling in elf/tst-rtld-list-diagnostics.pyFlorian Weimer2024-02-091-3/+2
| | | | | Instead, let the system shell parse the whole thing and invoke the env command.
* Add SOL_VSOCK from Linux 6.7 to bits/socket.hJoseph Myers2024-02-081-0/+1
| | | | | | | | | Linux 6.7 adds a constant SOL_VSOCK (recall that various constants in include/linux/socket.h are in fact part of the kernel-userspace API despite that not being a uapi header). Add it to glibc's bits/socket.h. Tested for x86_64.
* localedata: ssy_ER: Fix syntax errorMike FABIAN2024-02-081-1/+1
|
* localedata: hr_HR: change currency to EUR/€Dragan Stanojević (Nevidljivi)2024-02-082-8/+8
| | | | Resolves: BZ # 29845
* Change lv_LV collation to agree with the recent change in CLDRMike FABIAN2024-02-082-36/+122
| | | | | | | Resolves: https://sourceware.org/bugzilla/show_bug.cgi?id=23774 See this change in CLDR committed on 2024-01-29: https://github.com/unicode-org/cldr/commit/635e2d3d0566563e12c8ea58c219d35183fcec12
* Add new AArch64 HWCAP2 definitions from Linux 6.7 to bits/hwcap.hJoseph Myers2024-02-081-0/+3
| | | | | Linux 6.7 adds three new HWCAP2_* values for AArch64; add them to bits/hwcap.h in glibc.
* string: Add hidden builtin definition for __strcpy_chk.Stefan Liebler2024-02-062-0/+2
| | | | | | | | | | | | Otherwise on at least x86_64 and s390x there is an unwanted PLT entry in libc.so when configured with --enable-fortify-source=3 and build with -Os. This is observed in elf/check-localplt Extra PLT reference: libc.so: __strcpy_chk The call to PLT entry is in inet/ruserpass.c. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* arm: Remove wrong ldr from _dl_start_user (BZ 31339)Adhemerval Zanella2024-02-051-1/+0
| | | | | | | | | | | | | | | | | | The commit 49d877a80b29d3002887b084eec6676d9f5fec18 (arm: Remove _dl_skip_args usage) removed the _SKIP_ARGS literal, which was previously loader to r4 on loader _start. However, the cleanup did not remove the following 'ldr r4, [sl, r4]' on _dl_start_user, used to check to skip the arguments after ld self-relocations. In my testing, the kernel initially set r4 to 0, which makes the ldr instruction just read the _GLOBAL_OFFSET_TABLE_. However, since r4 is a callee-saved register; a different runtime might not zero initialize it and thus trigger an invalid memory access. Checked on arm-linux-gnu. Reported-by: Adrian Ratiu <adrian.ratiu@collabora.com> Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com>
* LoongArch: Use builtins for ffs and ffsllXi Ruoyao2024-02-051-0/+2
| | | | | | | | | | | | On LoongArch GCC compiles __builtin_ffs{,ll} to basically `(x ? __builtin_ctz (x) : -1) + 1`. Since a hardware ctz instruction is available, this is much better than the table-driven generic implementation. Tested on loongarch64. Signed-off-by: Xi Ruoyao <xry111@xry111.site> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* Remove sysdeps/ia64/math-use-builtins-ffs.hXi Ruoyao2024-02-051-2/+0
| | | | | | IA64 is gone. Signed-off-by: Xi Ruoyao <xry111@xry111.site>
* Fix stringop-overflow warning in tst-strlcat2.Stefan Liebler2024-02-051-0/+1
| | | | | | | | | | | | | | | | On s390x, I get warnings like this when do_one_test is inlined with SIZE_MAX: In function ‘do_one_test’, inlined from ‘do_overflow_tests’ at tst-strlcat2.c:184:2: tst-strlcat2.c:49:18: error: ‘strnlen’ specified bound [18446744073709550866, 18446744073709551615] exceeds maximum object size 9223372036854775807 [-Werror=stringop-overflow=] 49 | # define STRNLEN strnlen | ^ tst-strlcat2.c:89:23: note: in expansion of macro ‘STRNLEN’ 89 | size_t dst_length = STRNLEN (dst, n); | ^~~~~~~ This patch just marks the do_one_test function as noinline as also done in test-strncat.c: Fix stringop-overflow warning in test-strncat. https://sourceware.org/git/?p=glibc.git;a=commit;h=51aeab9a363a0d000d0912aa3d6490463a26fba2
* mips: FIx clone3 implementation (BZ 31325)Adhemerval Zanella2024-02-021-5/+27
| | | | | | | | | | | | | For o32 we need to setup a minimal stack frame to allow cprestore on __thread_start_clone3 (which instruct the linker to save the gp for PIC). Also, there is no guarantee by kABI that $8 will be preserved after syscall execution, so we need to save it on the provided stack. Checked on mipsel-linux-gnu. Reported-by: Khem Raj <raj.khem@gmail.com> Tested-by: Khem Raj <raj.khem@gmail.com>
* stdlib: fix qsort example in manualPaul Eggert2024-02-011-9/+12
| | | | | | | | * manual/search.texi (Comparison Functions, Array Sort Function): Sort an array of long ints, not doubles, to avoid hassles with NaNs. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>