aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-08-12mtrace: Use a static buffer for printing [BZ #25947]Siddhesh Poyarekar
Use a static buffer for mtrace printing now that it no longer adds to default libc footprint. Reviewed-by: DJ Delorie <dj@redhat.com>
2021-08-11hurd mmap: Reduce the requested max vmprotSergey Bugaev
When the memory object is read-only, the kernel would be right in refusing max vmprot containing VM_PROT_WRITE. Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
2021-08-11hurd mmap: Factorize MAP_SHARED flag checkSergey Bugaev
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
2021-08-11aarch64: Make elf_machine_{load_address,dynamic} robust [BZ #28203]Fangrui Song
The AArch64 ABI is largely platform agnostic and does not specify _GLOBAL_OFFSET_TABLE_[0] ([1]). glibc ld.so turns out to be probably the only user of _GLOBAL_OFFSET_TABLE_[0] and GNU ld defines the value to the link-time address _DYNAMIC. [2] In 2012, __ehdr_start was implemented in GNU ld and gold in binutils 2.23. Using adrp+add / (-mcmodel=tiny) adr to access __ehdr_start/_DYNAMIC gives us a robust way to get the load address and the link-time address of _DYNAMIC. [1]: From a psABI maintainer, https://bugs.llvm.org/show_bug.cgi?id=49672#c2 [2]: LLD's aarch64 port does not set _GLOBAL_OFFSET_TABLE_[0] to the link-time address _DYNAMIC. LLD is widely used on aarch64 Android and ChromeOS devices. Software just works without the need for _GLOBAL_OFFSET_TABLE_[0]. Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com>
2021-08-10elf: Unconditionally use __ehdr_startFangrui Song
We can consider __ehdr_start (from binutils 2.23 onwards) unconditionally supported, since configure.ac requires binutils>=2.25. The configure.ac check is related to an ia64 bug fixed by binutils 2.24. See https://sourceware.org/pipermail/libc-alpha/2014-August/053503.html Tested on x86_64-linux-gnu. Tested build-many-glibcs.py with aarch64-linux-gnu and s390x-linux-gnu. Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com>
2021-08-10hurd: Add support for AT_NO_AUTOMOUNTSamuel Thibault
2021-08-10[5/5] AArch64: Improve A64FX memset medium loopsWilco Dijkstra
Simplify the code for memsets smaller than L1. Improve the unroll8 and L1_prefetch loops. Reviewed-by: Naohiro Tamura <naohirot@fujitsu.com>
2021-08-10[4/5] AArch64: Improve A64FX memset by removing unroll32Wilco Dijkstra
Remove unroll32 code since it doesn't improve performance. Reviewed-by: Naohiro Tamura <naohirot@fujitsu.com>
2021-08-10[3/5] AArch64: Improve A64FX memset for remaining bytesWilco Dijkstra
Simplify handling of remaining bytes. Avoid lots of taken branches and complex whilelo computations, instead unconditionally write vectors from the end. Reviewed-by: Naohiro Tamura <naohirot@fujitsu.com>
2021-08-10[2/5] AArch64: Improve A64FX memset for large sizesWilco Dijkstra
Improve performance of large memsets. Simplify alignment code. For zero memset use DC ZVA, which almost doubles performance. For non-zero memsets use the unroll8 loop which is about 10% faster. Reviewed-by: Naohiro Tamura <naohirot@fujitsu.com>
2021-08-10[1/5] AArch64: Improve A64FX memset for small sizesWilco Dijkstra
Improve performance of small memsets by reducing instruction counts and improving code alignment. Bench-memset shows 35-45% performance gain for small sizes. Reviewed-by: Naohiro Tamura <naohirot@fujitsu.com>
2021-08-09Use binutils 2.37 branch in build-many-glibcs.pyJoseph Myers
This patch makes build-many-glibcs.py use binutils 2.37 branch. Tested with build-many-glibcs.py (compilers and glibcs builds).
2021-08-09Add PTRACE_GET_RSEQ_CONFIGURATION from Linux 5.13 to sys/ptrace.hJoseph Myers
Linux 5.13 adds a PTRACE_GET_RSEQ_CONFIGURATION constant, with an associated ptrace_rseq_configuration structure. Add this constant to the various sys/ptrace.h headers in glibc, with the structure in bits/ptrace-shared.h (named struct __ptrace_rseq_configuration in glibc, as with other such structures). Tested for x86_64, and with build-many-glibcs.py.
2021-08-09librt: fix NULL pointer dereference (bug 28213)Nikita Popov
Helper thread frees copied attribute on NOTIFY_REMOVED message received from the OS kernel. Unfortunately, it fails to check whether copied attribute actually exists (data.attr != NULL). This worked earlier because free() checks passed pointer before actually attempting to release corresponding memory. But __pthread_attr_destroy assumes pointer is not NULL. So passing NULL pointer to __pthread_attr_destroy will result in segmentation fault. This scenario is possible if notification->sigev_notify_attributes == NULL (which means default thread attributes should be used). Signed-off-by: Nikita Popov <npv1310@gmail.com> Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2021-08-06powerpc64: Add checks for Altivec and VSX in ifunc selectionAnton Blanchard
We'd like to support processors without Altivec or VSX, so check the relevant hwcap bits before selecting them. Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
2021-08-06powerpc64: Check cacheline size before using optimised memset routinesAnton Blanchard
A number of optimised memset routines assume the cacheline size is 128B, so we better check before using them. Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
2021-08-06powerpc64: Replace some PPC_FEATURE_HAS_VSX with PPC_FEATURE_ARCH_2_06Anton Blanchard
We use PPC_FEATURE_HAS_VSX to select a number of POWER7 optimised functions. These functions don't use any VSX instructions, so PPC_FEATURE_ARCH_2_06 seems like a better fit. Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
2021-08-06Linux: Fix fcntl, ioctl, prctl redirects for _TIME_BITS=64 (bug 28182)Florian Weimer
__REDIRECT and __THROW are not compatible with C++ due to the ordering of the __asm__ alias and the throw specifier. __REDIRECT_NTH has to be used instead. Fixes commit 8a40aff86ba5f64a3a84883e539cb67b ("io: Add time64 alias for fcntl"), commit 82c395d91ea4f69120d453aeec398e30 ("misc: Add time64 alias for ioctl"), commit b39ffab860cd743a82c91946619f1b8158 ("Linux: Add time64 alias for prctl"). Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2021-08-05Add INADDR_DUMMY from Linux 5.13 to netinet/in.hJoseph Myers
Linux 5.13 adds an INADDR_DUMMY definition; add a corresponding definition to glibc's netinet/in.h. (This isn't strictly a new kernel interface, rather a value defined in RFC 7600.) Tested for x86_64.
2021-08-05tst-mxfast: Don't run with mcheckSiddhesh Poyarekar
The test may not show predictable behaviour with -lmcheck since the padding won't always guarantee fastbin usage.
2021-08-04rt: Set the correct message queue for tst-mqueue10Adhemerval Zanella
Checked on x86_64-linux-gnu.
2021-08-04Update sparc libm-test-ulpsAdhemerval Zanella
2021-08-04linux: Add sparck brk implementationAdhemerval Zanella
It turned that the generic implementation of brk() does not work for sparc, since on failure kernel will just return the previous input value without setting the conditional register. This patches adds back a sparc32 and sparc64 implementation removed by 720480934ab9107. Checked on sparc64-linux-gnu and sparcv9-linux-gnu.
2021-08-04test-dlclose-exit-race: avoid hang on pthread_create errorDJ Delorie
This test depends on the "last" function being called in a different thread than the "first" function, as "last" posts a semaphore that "first" is waiting on. However, if pthread_create fails - for example, if running in an older container before the clone3()-in-container-EPERM fixes - exit() is called in the same thread as everything else, the semaphore never gets posted, and first hangs. The fix is to pre-post that semaphore before a single-threaded exit. Reviewed-by: Arjun Shankar <arjun@redhat.com>
2021-08-04gethosts: Remove unused argument _typeSiddhesh Poyarekar
The generated code is unchanged.
2021-08-03hurd: Avoid spurious warningSamuel Thibault
Compilers missing some flow analysis may think ss may be used uninitialized.
2021-08-03gaiconf_init: Avoid double-free in label and precedence listsSiddhesh Poyarekar
labellist and precedencelist could get freed a second time if there are allocation failures, so set them to NULL to avoid a double-free. Reviewed-by: Arjun Shankar <arjun@redhat.com>
2021-08-03copy_and_spawn_sgid: Avoid double calls to close()Siddhesh Poyarekar
If close() on infd and outfd succeeded, reset the fd numbers so that we don't attempt to close them again. Reviewed-by: Arjun Shankar <arjun@redhat.com>
2021-08-03iconv_charmap: Close output file when doneSiddhesh Poyarekar
Reviewed-by: Arjun Shankar <arjun@redhat.com>
2021-08-03gconv_parseconfdir: Fix memory leakSiddhesh Poyarekar
The allocated `conf` would leak if we have to skip over the file due to the underlying filesystem not supporting dt_type. Reviewed-by: Arjun Shankar <arjun@redhat.com>
2021-08-03ldconfig: avoid leak on empty paths in config fileSiddhesh Poyarekar
Reviewed-by: Arjun Shankar <arjun@redhat.com>
2021-08-02Fix build of nptl/tst-thread_local1.cc with GCC 12Joseph Myers
The test nptl/tst-thread_local1.cc fails to build with GCC mainline because of changes to what libstdc++ headers implicitly include what other headers: tst-thread_local1.cc: In function 'int do_test()': tst-thread_local1.cc:177:5: error: variable 'std::array<std::pair<const char*, std::function<void(void* (*)(void*))> >, 2> do_thread_X' has initializer but incomplete type 177 | do_thread_X | ^~~~~~~~~~~ Fix this by adding an explicit include of <array>. Tested with build-many-glibcs.py for aarch64-linux-gnu.
2021-08-02nis: Fix leak on realloc failure in nis_getnames [BZ #28150]Robbie Harwood
If pos >= count but realloc fails, tmp will not have been placed in getnames[pos] yet, and so will not be freed in free_null. Detected by Coverity. Also remove misleading comment from nis_getnames(), since it actually did properly release getnames when out of memory. Tested-by: Carlos O'Donell <carlos@redhat.com>
2021-08-02Remove obsolete comments/name from several benchtest input files.Paul Zimmermann
These comments refer to slow paths that were removed in glibc 2.34 or earlier. The corresponding "names" that yield separate workload traces for "make bench" are thus obsolete. We are however keeping the corresponding inputs. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2021-08-02Remove obsolete comments/name from acos-inputs, since slow path was removed.Paul Zimmermann
2021-08-01Open master branch for glibc 2.35 developmentglibc-2.34.9000Carlos O'Donell
2021-08-01Update ChangeLog.old/ChangeLog.23.glibc-2.34Carlos O'Donell
2021-08-01Prepare for glibc 2.34 release.Carlos O'Donell
Update version.h, and include/features.h.
2021-08-01po/nl.po: Update Dutch translation.Carlos O'Donell
2021-08-01Update install.texi, and regenerate INSTALL.Carlos O'Donell
2021-08-01Update translations.Carlos O'Donell
2021-08-01Update NEWS.Carlos O'Donell
Suggestions by Florian Weimer, Andreas Schwab, and Alexander Monakov. See: https://sourceware.org/pipermail/libc-alpha/2021-July/129356.html https://sourceware.org/pipermail/libc-alpha/2021-July/129357.html https://sourceware.org/pipermail/libc-alpha/2021-July/129361.html
2021-08-01NEWS: Fix typos, grammar, and missing wordsMark Harris
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2021-07-30elf: Fix audit regressionAdhemerval Zanella
Commit 03e187a41d9 added a regression when an audit module does not have libc as DT_NEEDED (although unusual it is possible). Checked on x86_64-linux-gnu.
2021-07-28Update libc.pot for 2.34 release.Carlos O'Donell
2021-07-28x86-64: Add Avoid_Short_Distance_REP_MOVSBH.J. Lu
commit 3ec5d83d2a237d39e7fd6ef7a0bc8ac4c171a4a5 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Jan 25 14:19:40 2020 -0800 x86-64: Avoid rep movsb with short distance [BZ #27130] introduced some regressions on Intel processors without Fast Short REP MOV (FSRM). Add Avoid_Short_Distance_REP_MOVSB to avoid rep movsb with short distance only on Intel processors with FSRM. bench-memmove-large on Skylake server shows that cycles of __memmove_evex_unaligned_erms improves for the following data size: before after Improvement length=4127, align1=3, align2=0: 479.38 349.25 27% length=4223, align1=9, align2=5: 405.62 333.25 18% length=8223, align1=3, align2=0: 786.12 496.38 37% length=8319, align1=9, align2=5: 727.50 501.38 31% length=16415, align1=3, align2=0: 1436.88 840.00 41% length=16511, align1=9, align2=5: 1375.50 836.38 39% length=32799, align1=3, align2=0: 2890.00 1860.12 36% length=32895, align1=9, align2=5: 2891.38 1931.88 33%
2021-07-28Typo: Rename HAVE_CLONE3_WAPPER to HAVE_CLONE3_WRAPPERH.J. Lu
2021-07-28build-many-glibcs.py: Add x86_64-linux-gnu-minimal configurationFlorian Weimer
This configuration exercises various --disable-* configure options. It is expected to catch -Werror failures that only affect these configurations.
2021-07-28tests: use xmalloc to allocate implementation arraySiddhesh Poyarekar
The benchmark and tests must fail in case of allocation failure in the implementation array. Also annotate the x* allocators in support.h so that the compiler has more information about them. Reviewed-by: Florian Weimer <fweimer@redhat.com>
2021-07-28xmalloc: Fix warnings with gcc analyzerSiddhesh Poyarekar
Tell the compiler that xmalloc family of allocators always return non-NULL. xrealloc in locale/programs also always returns non-NULL, but that conflicts with default realloc behaviour and that of xrealloc in libsupport, so keep it as is for now and resolve the differences later. Reviewed-by: Florian Weimer <fweimer@redhat.com>