aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
AgeCommit message (Collapse)Author
2021-03-29x86: Properly disable XSAVE related features [BZ #27605]H.J. Lu
1. Support GLIBC_TUNABLES=glibc.cpu.hwcaps=-XSAVE. 2. Disable all features which depend on XSAVE: a. If OSXSAVE is disabled by glibc tunables. Or b. If both XSAVE and XSAVEC aren't usable.
2021-03-26nptl: Remove __libc_allocate_rtsig, __libc_current_sigrtmax, and ↵Adhemerval Zanella
__libc_current_sigrtmin The libc version is identical and built with same flags. Checked on x86_64-linux-gnu.
2021-03-26nptl: Move sigaction to libcAdhemerval Zanella
The libc version is identical and built with same flags. Checked on x86_64-linux-gnu.
2021-03-26nptl: Remove pthread raise implementationAdhemerval Zanella
The Linux version already target the current thread by using tgkill along with getpid and gettid. For arm, libpthread does not do a intra PLT since it will call the raise from libc. Checked on x86_64-linux-gnu.
2021-03-26nptl: Move pthread_kill to libcAdhemerval Zanella
A new 2.34 version is also provided. Checked on x86_64-linux-gnu.
2021-03-26nptl: Remove pwrite from libpthreadAdhemerval Zanella
The libc version is identical and built with same flags, it is also uses as the default version. Checked on x86_64-linux-gnu.
2021-03-26nptl: Remove pread from libpthreadAdhemerval Zanella
The libc version is identical and built with same flags, it is also uses as the default version. Checked on x86_64-linux-gnu.
2021-03-26nptl: Remove open from libpthreadAdhemerval Zanella
The libc version is identical and built with same flags. The libc version is set as the default version. Checked on x86_64-linux-gnu.
2021-03-26nptl: Remove lseek from libpthreadAdhemerval Zanella
The libc version is identical and built with same flags. The libc version is set as the default version. The libpthread compat symbol requires to mask it when building the loader object otherwise ld might complain about a missing versioned symbol (as for alpha). Checked on x86_64-linux-gnu.
2021-03-26nptl: Remove send from libpthreadAdhemerval Zanella
The libc version is identical and built with same flags. Both aarch64 and nios2 also requires to export __send and tt was done previously with the HAVE_INTERNAL_SEND_SYMBOL (which forced the symbol creation). All __send callers are internal to libc and the original issue that required the symbol export was due a missing libc_hidden_def. So a compat symbol is added for __send and the libc_hidden_def is defined regardless. Checked on x86_64-linux-gnu and i686-linux-gnu.
2021-03-26aarch64: Optimize __libc_mtag_tag_zero_regionSzabolcs Nagy
This is a target hook for memory tagging, the original was a naive implementation. Uses the same algorithm as __libc_mtag_tag_region, but with instructions that also zero the memory. This was not benchmarked on real cpu, but expected to be faster than the naive implementation.
2021-03-26aarch64: Optimize __libc_mtag_tag_regionSzabolcs Nagy
This is a target hook for memory tagging, the original was a naive implementation. The optimized version relies on "dc gva" to tag 64 bytes at a time for large allocations and optimizes small cases without adding too many branches. This was not benchmarked on real cpu, but expected to be faster than the naive implementation.
2021-03-26aarch64: inline __libc_mtag_new_tagSzabolcs Nagy
This is a common operation when heap tagging is enabled, so inline the instructions instead of using an extern call.
2021-03-26aarch64: inline __libc_mtag_address_get_tagSzabolcs Nagy
This is a common operation when heap tagging is enabled, so inline the instruction instead of using an extern call. The .inst directive is used instead of the name of the instruction (or acle intrinsics) because malloc.c is not compiled for armv8.5-a+memtag architecture, runtime cpu support detection is used. Prototypes are removed from the comments as they were not always correct.
2021-03-26malloc: Only support zeroing and not arbitrary memset with mtagSzabolcs Nagy
The memset api is suboptimal and does not provide much benefit. Memory tagging only needs a zeroing memset (and only for memory that's sized and aligned to multiples of the tag granule), so change the internal api and the target hooks accordingly. This is to simplify the implementation of the target hook. Reviewed-by: DJ Delorie <dj@redhat.com>
2021-03-26malloc: Ensure the generic mtag hooks are not usedSzabolcs Nagy
Use inline functions instead of macros, because macros can cause unused variable warnings and type conversion issues. We assume these functions may appear in the code but only in dead code paths (hidden by a runtime check), so it's important that they can compile with correct types, but if they are actually used that should be an error. Currently the hooks are only used when USE_MTAG is true which only happens on aarch64 and then the aarch64 specific code is used not this generic header. However followup refactoring will allow the hooks to be used with !USE_MTAG. Note: the const qualifier in the comment was wrong: changing tags is a write operation. Reviewed-by: DJ Delorie <dj@redhat.com>
2021-03-26S390: Also check vector support in memmove ifunc-selector [BZ #27511]Stefan Liebler
The arch13 memmove variant is currently selected by the ifunc selector if the Miscellaneous-Instruction-Extensions Facility 3 facility bit is present, but the function is also using vector instructions. If the vector support is not present, one is receiving an operation exception. Therefore this patch also checks for vector support in the ifunc selector and in ifunc-impl-list.c. Just to be sure, the configure check is now also testing an arch13 vector instruction and an arch13 Miscellaneous-Instruction-Extensions Facility 3 instruction.
2021-03-25Support for multiple versions in versioned_symbol, compat_symbolFlorian Weimer
This essentially folds compat_symbol_unique functionality into compat_symbol. This change eliminates the need for intermediate aliases for defining multiple symbol versions, for both compat_symbol and versioned_symbol. Some binutils versions do not suport multiple versions per symbol on some targets, so aliases are automatically introduced, similar to what compat_symbol_unique did. To reduce symbol table sizes, a configure check is added to avoid these aliases if they are not needed. The new mechanism works with data symbols as well as function symbols, due to the way an assembler-level redirect is used. It is not compatible with weak symbols for old binutils versions, which is why the definition of __malloc_initialize_hook had to be changed. This is not a loss of functionality because weak symbols do not matter to dynamic linking. The placeholder symbol needs repeating in nptl/libpthread-compat.c now that compat_symbol is used, but that seems more obvious than introducing yet another macro. A subtle difference was that compat_symbol_unique made the symbol global automatically. compat_symbol does not do this, so static had to be removed from the definition of __libpthread_version_placeholder. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2021-03-25Change how the symbol_version_reference macro is definedFlorian Weimer
A subsequent change will require including <config.h> for defining symbol_version_reference. <libc-symbol.h> should not include <config.h> for _ISOMAC, so it cannot define symbol_version_reference anymore, but symbol_version_reference is needed <shlib-compat.h> even for _ISOMAC. Moving the definition of symbol_version_reference to a separate file <libc-symver.h> makes it possible to use a single definition for both cases. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2021-03-24elf: Fix not compiling ifunc tests that need gcc ifunc supportSamuel Thibault
2021-03-24htl: Add missing fork.hSamuel Thibault
2b47727c68b6 ("posix: Consolidate register-atfork") introduced a fork.h header to declare the atfork unregister hook, but was missing adding it for htl. This fixes tst-atfork2.
2021-03-23hurd: handle EINTR during critical sectionsSamuel Thibault
During critical sections, signal handling is deferred and thus RPCs return EINTR, even if SA_RESTART is set. We thus have to restart the whole critical section in that case. This also adds HURD_CRITICAL_UNLOCK in the cases where one wants to break the section in the middle.
2021-03-23tst: Add test for sigtimedwaitLukasz Majewski
This change adds new test to assess sigtimedwait's timeout related functionality - the sigset_t is configured for SIGUSR1, which will not be triggered, so sigtimedwait just waits for timeout. To be more specific - two use cases are checked: - if sigtimedwait times out immediately when passed struct timespec has zero values of tv_nsec and tv_sec. - if sigtimedwait times out after timeout specified in passed argument Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2021-03-23tst: Add test for ntp_gettimexLukasz Majewski
This test is a wrapper on tst-ntp_gettime test. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2021-03-23tst: Add test for ntp_gettimeLukasz Majewski
This code provides test to check if time on target machine is properly read via ntp_gettime syscall. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2021-03-23fix: Always export ntp_gettimex functionLukasz Majewski
After this patch applied the ntp_gettimex function is always declared in the sys/timex.h header. Currently it is not when __REDIRECT_NTH is defined (i.e. in ARM 32 bit port).
2021-03-19nptl: Remove MULTI_PAGE_ALIASING [BZ #23554]H.J. Lu
MULTI_PAGE_ALIASING was introduced to mitigate an aliasing issue on Pentium 4. It is no longer needed for processors after Pentium 4.
2021-03-18signal: Add __libc_sigactionAdhemerval Zanella
The generic implementation basically handle the system agnostic logic (filtering out the invalid signals) while the __libc_sigaction is the function with implements the system and architecture bits. Checked on x86_64-linux-gnu and i686-linux-gnu.
2021-03-18nptl: Move system to libcAdhemerval Zanella
The libc version is identical and built with same flags. Checked on x86_64-linux-gnu.
2021-03-18nptl: Move fcntl from libpthreadAdhemerval Zanella
The libc version is identical and built with same flags. Checked on x86_64-linux-gnu.
2021-03-18nptl: Remove sendmsg from libpthreadAdhemerval Zanella
The libc version is identical and built with same flags. Checked on x86_64-linux-gnu.
2021-03-18nptl: Remove recvmsg from libpthreadAdhemerval Zanella
The libc version is identical and built with same flags. Checked on x86_64-linux-gnu.
2021-03-18nptl: Remove sigwait from libpthreadAdhemerval Zanella
The libc version is identical and built with same flags. Checked on x86_64-linux-gnu.
2021-03-18nptl: Remove tcdrain from libpthreadAdhemerval Zanella
The libc version is identical and built with same flags. Checked on x86_64-linux-gnu.
2021-03-18nptl: Remove pause from libpthreadAdhemerval Zanella
The libc version is identical and built with same flags. Checked on x86_64-linux-gnu.
2021-03-18nptl: Remove msync from libpthreadAdhemerval Zanella
The libc version is identical and built with same flags. Checked on x86_64-linux-gnu.
2021-03-18nptl: Remove fsync from libpthreadAdhemerval Zanella
The libc version is identical and built with same flags. Checked on x86_64-linux-gnu.
2021-03-18nptl: Remove sendto from libpthreadAdhemerval Zanella
The libc version is identical and built with same flags. Checked on x86_64-linux-gnu.
2021-03-18nptl: Remove recvfrom from libpthreadAdhemerval Zanella
The libc version is identical and built with same flags. Checked on x86_64-linux-gnu.
2021-03-18nptl: Remove recv from libpthreadAdhemerval Zanella
The libc version is identical and built with same flags. Checked on x86_64-linux-gnu.
2021-03-18nptl: Remove connect from libpthreadAdhemerval Zanella
The libc version is identical and built with same flags. Checked on x86_64-linux-gnu.
2021-03-18nptl: Remove accept from libpthreadAdhemerval Zanella
The libc version is identical and built with same flags. Checked on x86_64-linux-gnu.
2021-03-18nptl: Remove close from libpthreadAdhemerval Zanella
The libc version is identical and built with same flags. Checked on x86_64-linux-gnu.
2021-03-18nptl: Remove read from libpthreadAdhemerval Zanella
The libc version is identical and built with same flags. Checked on x86_64-linux-gnu.
2021-03-18nptl: Remove write from libpthreadAdhemerval Zanella
The libc version is identical and built with same flags. Checked on x86_64-linux-gnu.
2021-03-16powerpc: Add optimized llogb* for POWER9Raphael Moreira Zinsly
The POWER9 builtins used to improve the ilogb* functions can be used in the llogb* functions as well.
2021-03-16powerpc: Add optimized ilogb* for POWER9Raphael Moreira Zinsly
The instructions xsxexpdp and xsxexpqp introduced on POWER9 extract the exponent from a double-precision and quad-precision floating-point respectively, thus they can be used to improve ilogb, ilogbf and ilogbf128.
2021-03-16Legacy unwinder: Remove definition of _Unwind_GetCFAFlorian Weimer
It is not actually used by the legacy unwinder linked into libc.so, and it conflicts with the unwind-link functionality in libpthread. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2021-03-16powerpc: Update libm-test-ulpsMatheus Castanho
Generated with 'make regen-ulps' on POWER8. Tested on powerpc, powerpc64, and powerpc64le
2021-03-15Build get-cpuid-feature-leaf.c without stack-protector [BZ #27555]Siddhesh Poyarekar
__x86_get_cpuid_feature_leaf is called during early startup, before the stack check guard is initialized and is hence not safe to build with stack-protector. Additionally, IFUNC resolvers for static tst-ifunc-isa tests get called too early for stack protector to be useful, so fix them to disable stack protector for the resolver functions. This fixes all failures seen with --enable-stack-protector=all configuration. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>