about summary refs log tree commit diff
Commit message (Collapse)AuthorAgeFilesLines
* Update syscall lists for Linux 5.12.Joseph Myers2021-04-2826-2/+28
| | | | | | | | Linux 5.12 has one new syscall, mount_setattr. Update syscall-names.list and regenerate the arch-syscall.h headers with build-many-glibcs.py update-syscalls. Tested with build-many-glibcs.py.
* regenerate ulps on x86_64 with -march=nativePaul Zimmermann2021-04-281-3/+3
| | | | | | | On x86_64, when configuring glibc with CFLAGS="-O2 -g -march=native", some tests fail. After this patch, "make check" succeeds. Tested on Intel Core i5-4590 with gcc 10.2.1.
* Pass a valid pointer to pthread_setspecific to avoid GCC 11 warning.Martin Sebor2021-04-278-18/+30
|
* Add __attribute_access_none to disable GCC warnings [BZ #27714]Martin Sebor2021-04-275-3/+54
| | | | | | | | | | | | | | | | GCC 11 warns when a pointer to an uninitialized object is passed to a function that takes a const-qualified argument. This is done on the assumption that most such functions read from the object. For the rare case of a function that doesn't, GCC 11 extends attribute access to add a new mode called none. POSIX pthread_setspecific() is one such rare function that takes a const void* argument but that doesn't read from the object it points to. To suppress the -Wmaybe-uninitialized issued by GCC 11 when the address of an uninitialized object is passed to it (e.g., the result of malloc()), this change #defines __attr_access_none in cdefs.h and uses the macro on the function in sysdeps/htl/pthread.h and sysdeps/nptl/pthread.h.
* Use Linux 5.12 and GCC 11 branch in build-many-glibcs.py.Joseph Myers2021-04-271-2/+2
| | | | | | | | This patch makes build-many-glibcs.py use Linux 5.12 and GCC 11 branch. Tested with build-many-glibcs.py (host-libraries, compilers and glibcs builds).
* powerpc: Add log IFUNC multiarch support for POWER10Raphael Moreira Zinsly2021-04-268-0/+104
| | | | | | | Checked on ppc64le built without --with-cpu, with --with-cpu=power9 and with --disable-multi-arch. Reviewed-by: Matheus Castanho <msc@linux.ibm.com>
* LC_COLLATE: Fix last character ellipsis handling (Bug 22668)Hanataka Shinya2021-04-261-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | During ellipsis processing the collation cursor was not correctly moved to the end of the ellipsis after processing. The code inserted the new entry after the cursor, but before the real end of the ellipsis: [cursor] ... element_t <-> element_t <-> element_t <-> element_t "<U0000>" "<U0001>" "<U007F>" startp endp At the end of the function we have: [cursor] ... element_t <-> element_t <-> element_t "<U007E>" "<U007F>" endp The cursor should be pointing at endp, the last element in the doubly-linked list, otherwise when execution returns to the caller we will start inserting the next line after <U007E>. Subsequent operations end up unlinking the ellipsis end entry or just leaving it in the list dangling from the end. This kind of dangling is immediately visible in C.UTF-8 with the following sorting from strcoll: <U0010FFFF> <U0000FFFF> <U000007FF> <U0000007F> With the cursor correctly adjusted the end entry is correctly given the right location and thus the right weight. Retested and no regressions on x86_64 and i686. Co-authored-by: Carlos O'Donell <carlos@redhat.com>
* x86: Optimize strchr-evex.SNoah Goldstein2021-04-251-174/+218
| | | | | | | | | | No bug. This commit optimizes strchr-evex.S. The optimizations are mostly small things such as save an ALU in the alignment process, saving a few instructions in the loop return. The one significant change is saving 2 instructions in the 4x loop. test-strchr, test-strchrnul, test-wcschr, and test-wcschrnul are all passing. Signed-off-by: Noah Goldstein <goldstein.w.n@gmail.com>
* x86: Optimize strchr-avx2.SNoah Goldstein2021-04-251-117/+169
| | | | | | | | | | No bug. This commit optimizes strchr-avx2.S. The optimizations are all small things such as save an ALU in the alignment process, saving a few instructions in the loop return, saving some bytes in the main loop, and increasing the ILP in the return cases. test-strchr, test-strchrnul, test-wcschr, and test-wcschrnul are all passing. Signed-off-by: Noah Goldstein <goldstein.w.n@gmail.com>
* nptl: Remove __h_errno_location from libpthreadFlorian Weimer2021-04-2332-65/+0
| | | | | | | The existing definition in libc will be used instead. The symbol was moved (that is, removed) using scripts/move-symbol-to-libc.py.
* nptl: Remove __res_state from libpthreadFlorian Weimer2021-04-2332-57/+0
| | | | | | | The existing definition in libc will be used instead. The symbol was moved (that is, removed) using scripts/move-symbol-to-libc.py.
* nptl: Move pthread_spin_trylock into libcFlorian Weimer2021-04-2372-52/+158
| | | | The symbol was moved using scripts/move-symbol-to-libc.py.
* nptl: Move pthread_spin_lock into libcFlorian Weimer2021-04-2372-47/+139
| | | | The symbol was moved using scripts/move-symbol-to-libc.py.
* nptl: Move pthread_spin_init, Move pthread_spin_unlock into libcFlorian Weimer2021-04-2373-89/+233
| | | | | | | For some architectures, the two functions are aliased, so these symbols need to be moved at the same time. The symbols were moved using scripts/move-symbol-to-libc.py.
* nptl: Move pthread_spin_destroy into libcFlorian Weimer2021-04-2364-33/+76
| | | | The symbol was moved using scripts/move-symbol-to-libc.py.
* nptl: Move pthread_condattr_setpshared into libcFlorian Weimer2021-04-2364-32/+76
| | | | The symbol was moved using scripts/move-symbol-to-libc.py.
* nptl: Move pthread_condattr_setclock into libcFlorian Weimer2021-04-2364-32/+75
| | | | The symbol was moved using scripts/move-symbol-to-libc.py.
* nptl: Move pthread_condattr_getpshared into libcFlorian Weimer2021-04-2364-33/+76
| | | | The symbol was moved using scripts/move-symbol-to-libc.py.
* nptl: Move pthread_condattr_getclock into libcFlorian Weimer2021-04-2364-33/+77
| | | | The symbol was moved using scripts/move-symbol-to-libc.py.
* nptl: Move pthread_mutexattr_settype, __pthread_mutexattr_settype into libcFlorian Weimer2021-04-2365-97/+187
| | | | | | | | | And pthread_mutexattr_setkind_np as a compatibility symbol. __pthread_mutexattr_settype is used in mtx_init from libpthread, so this commit adds a GLIBC_2.34 symbol version for it. The symbols were moved using scripts/move-symbol-to-libc.py.
* nptl: Move pthread_mutexattr_setrobust into libcFlorian Weimer2021-04-2367-68/+149
| | | | | | And pthread_mutexattr_getrobust_np as a compat symbol. The symbols were moved using scripts/move-symbol-to-libc.py.
* pthread: Use pthread_mutexattr_setrobust in testsFlorian Weimer2021-04-235-6/+6
| | | | pthread_mutexattr_setrobust_np is about to be deprecated.
* nptl: Move pthread_mutexattr_setpshared into libcFlorian Weimer2021-04-2364-33/+76
| | | | The symbol was moved using scripts/move-symbol-to-libc.py.
* nptl: Move pthread_mutexattr_setprotocol into libcFlorian Weimer2021-04-2364-33/+76
| | | | The symbol was moved using scripts/move-symbol-to-libc.py.
* nptl: Move pthread_mutexattr_setprioceiling into libcFlorian Weimer2021-04-2364-33/+76
| | | | The symbol was moved using scripts/move-symbol-to-libc.py.
* nptl: Move pthread_mutexattr_init, __pthread_mutexattr_init into libcFlorian Weimer2021-04-2365-66/+146
| | | | | | | __pthread_mutexattr_init cannot be be made a compat symbol because it is used in mtx_init, which is still in libpthread. The symbols were moved using scripts/move-symbol-to-libc.py.
* nptl: Move pthread_mutexattr_gettype into libcFlorian Weimer2021-04-2364-64/+114
| | | | | | | | And pthread_mutexattr_getkind_np as a compatibility symbol. (There is no declaration in <pthread.h>, so there is no need to add an alias or a deprecation warning there.) The symbols were moved using scripts/move-symbol-to-libc.py.
* nptl: Move pthread_mutexattr_getrobust into libcFlorian Weimer2021-04-2366-67/+128
| | | | | | And pthread_mutexattr_getrobust_np as a compat symbol. The symbols were moved using scripts/move-symbol-to-libc.py.
* nptl: Move pthread_mutexattr_getpshared into libcFlorian Weimer2021-04-2364-33/+75
| | | | The symbol was moved using scripts/move-symbol-to-libc.py.
* nptl: Move pthread_mutexattr_getprotocol into libcFlorian Weimer2021-04-2364-33/+76
| | | | The symbol was moved using scripts/move-symbol-to-libc.py.
* nptl: Move pthread_mutexattr_getprioceiling into libcFlorian Weimer2021-04-2364-34/+77
| | | | The symbol was moved using scripts/move-symbol-to-libc.py.
* nptl: Move pthread_mutexattr_destroy into libcFlorian Weimer2021-04-2364-64/+110
| | | | | | | And __pthread_mutexattr_destroy as a compat symbol (so no GLIBC_2.34 symbol version is added for it). The symbols were moved using scripts/move-symbol-to-libc.py.
* nptl: Move pthread_mutex_trylock, __pthread_mutex_trylock into libcFlorian Weimer2021-04-2365-69/+143
| | | | | | | | The symbols were moved using scripts/move-symbol-to-libc.py. __pthread_mutex_trylock is used to implement mtx_timedlock, which still resides in libpthread, so add a GLIBC_2.34 version for it, to match the existing GLIBC_2.0 version.
* nptl: Move pthread_mutex_timedlock, pthread_mutex_clocklock to libcFlorian Weimer2021-04-2365-78/+181
| | | | | | | The symbols were moved using scripts/move-symbol-to-libc.py. The symbol aliasing follows pthread_cond_timedwait et al. Missing hidden prototypes had to be added to nptl/pthreadP.h for consistency.
* nptl: Move pthread_mutex_setprioceiling into libcFlorian Weimer2021-04-2364-34/+77
| | | | The symbol was moved using scripts/move-symbol-to-libc.py.
* nptl: Move pthread_mutex_getprioceiling into libcFlorian Weimer2021-04-2364-33/+76
| | | | The symbol was moved using scripts/move-symbol-to-libc.py.
* powerpc: Add optimized strlen for POWER10Matheus Castanho2021-04-225-1/+230
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Improvements compared to POWER9 version: 1. Take into account first 16B comparison for aligned strings The previous version compares the first 16B and increments r4 by the number of bytes until the address is 16B-aligned, then starts doing aligned loads at that address. For aligned strings, this causes the first 16B to be compared twice, because the increment is 0. Here we calculate the next 16B-aligned address differently, which avoids that issue. 2. Use simple comparisons for the first ~192 bytes The main loop is good for big strings, but comparing 16B each time is better for smaller strings. So after aligning the address to 16 Bytes, we check more 176B in 16B chunks. There may be some overlaps with the main loop for unaligned strings, but we avoid using the more aggressive strategy too soon, and also allow the loop to start at a 64B-aligned address. This greatly benefits smaller strings and avoids overlapping checks if the string is already aligned at a 64B boundary. 3. Reduce dependencies between load blocks caused by address calculation on loop Doing a precise time tracing on the code showed many loads in the loop were stalled waiting for updates to r4 from previous code blocks. This implementation avoids that as much as possible by using 2 registers (r4 and r5) to hold addresses to be used by different parts of the code. Also, the previous code aligned the address to 16B, then to 64B by doing a few 48B loops (if needed) until the address was aligned. The main loop could not start until that 48B loop had finished and r4 was updated with the current address. Here we calculate the address used by the loop very early, so it can start sooner. The main loop now uses 2 pointers 128B apart to make pointer updates less frequent, and also unrolls 1 iteration to guarantee there is enough time between iterations to update the pointers, reducing stalled cycles. 4. Use new P10 instructions lxvp is used to load 32B with a single instruction, reducing contention in the load queue. vextractbm allows simplifying the tail code for the loop, replacing vbpermq and avoiding having to generate a permute control vector. Reviewed-by: Paul E Murphy <murphyp@linux.ibm.com> Reviewed-by: Raphael M Zinsly <rzinsly@linux.ibm.com> Reviewed-by: Lucas A. M. Magalhaes <lamm@linux.ibm.com>
* nptl: Do not build nptl/tst-pthread-gdb-attach as PIEFlorian Weimer2021-04-221-0/+3
|
* nptl: Move pthread_kill_other_threads_np compatibility symbol into libcFlorian Weimer2021-04-2264-33/+35
| | | | And stop including the function for new architectures.
* x86: tst-cpu-features-supports.c: Update AMX checkH.J. Lu2021-04-221-3/+3
| | | | | Pass "amx-bf16", "amx-int8" and "amx-tile", instead of "amx_bf16", "amx_int8" and "amx_tile", to __builtin_cpu_supports for GCC 11.
* nptl: Move pthread_atfork compatibility symbol to libcFlorian Weimer2021-04-2236-19/+21
| | | | | | | The symbol was moved using scripts/move-symbol-to-libc.py. There is no new symbol version because of the compatibility symbol status. The __pthread_atfork reference in nptl/Versions was unused.
* nptl: Check for compatible GDB in nptl/tst-pthread-gdb-attachFlorian Weimer2021-04-221-2/+76
| | | | | Also do not clear the subprocess environment, in case running GDB needs certain environment variables.
* nptl: __nptl_set_robust_list_avail must be nocommonFlorian Weimer2021-04-221-1/+1
| | | | | | | This is required for GCC versions before 10 which default to -fcommon. Fixes commit 442e8a40da9dfa24aeebf4f1a163f0a58b12cf7e ("nptl: Move part of TCB initialization from libpthread to __tls_init_tp").
* nptl: Remove remnants of the libc/libpthread forwarder interfaceFlorian Weimer2021-04-217-147/+10
| | | | | | All previously forwarded functions are now implemented in libc. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* nptl: Move setxid broadcast implementation into libcFlorian Weimer2021-04-219-287/+287
| | | | | | | The signal handler is exported as __nptl_setxid_sighandler, so that the libpthread initialization code can install it. This is sufficient for now because it is guarantueed to happen before the first pthread_create call.
* nptl: Move core condition variable functions into libcFlorian Weimer2021-04-2175-342/+166
| | | | | | | | | | | | | | | Onl pthread_cond_clockwait did not have a forwarder, so it needs a new symbol version. Some complications arise due to the need to supply hidden aliases, GLIBC_PRIVATE exports (for the C11 condition variable implementation that still remains in libpthread) and 64-bit time_t stubs. pthread_cond_broadcast, pthread_cond_signal, pthread_cond_timedwait, pthread_cond_wait, pthread_cond_clockwait have been moved using scripts/move-symbol-to-libc.py. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* nptl: Move core mutex functions into libcFlorian Weimer2021-04-2173-308/+340
| | | | | | | | | | | | | | This is complicated because of a second compilation of nptl/pthread_mutex_lock.c via nptl/pthread_mutex_cond_lock.c. PTHREAD_MUTEX_VERSIONS is introduced to suppress symbol versions in that case. The symbols __pthread_mutex_lock, __pthread_mutex_unlock, __pthread_mutex_init, __pthread_mutex_destroy, pthread_mutex_lock, pthread_mutex_unlock, pthread_mutex_init, pthread_mutex_destroy have been moved using scripts/move-symbol-to-libc.py. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* x86: Remove low-level lock optimizationFlorian Weimer2021-04-213-89/+0
| | | | | | | | | | | | | | | The current approach is to do this optimizations at a higher level, in generic code, so that single-threaded cases can be specifically targeted. Furthermore, using IS_IN (libc) as a compile-time indicator that all locks are private is no longer correct once process-shared lock implementations are moved into libc. The generic <lowlevellock.h> is not compatible with assembler code (obviously), so it's necessary to remove two long-unused #includes. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* nptl: pthread_mutex_lock, pthread_mutex_unock single-threaded optimizationFlorian Weimer2021-04-213-4/+39
| | | | | | | | | This is optimization is similar in spirit to the SINGLE_THREAD_P check in the malloc implementation. Doing this in generic code allows us to prioritize those cases which are likely to occur in single-threaded programs (normal and recursive mutexes). Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* nptl: Move internal symbol __mutex_aconf into libcFlorian Weimer2021-04-217-6/+72
| | | | | | | | This is in preparation of moving the mutex code into libc. __pthread_tunables_init is now called via __pthread_early_init. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>