about summary refs log tree commit diff
path: root/sysdeps
Commit message (Collapse)AuthorAgeFilesLines
* htl: Remove unused filesSamuel Thibault2020-02-0924-1100/+0
| | | | These have never been used.
* Remove a comment claiming that sin/cos round correctly.Wilco Dijkstra2020-02-071-4/+4
|
* y2038: linux: Provide __settimeofday64 implementationLukasz Majewski2020-02-071-0/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | This patch provides new __settimeofday64 explicit 64 bit function for setting 64 bit time in the kernel (by internally calling __clock_settime64). Moreover, a 32 bit version - __settimeofday has been refactored to internally use __settimeofday64. The __settimeofday is now supposed to be used on systems still supporting 32 bit time (__TIMESIZE != 64) - hence the necessary conversion of struct timeval to 64 bit struct __timespec64. Internally the settimeofday uses __settimeofday64. This patch is necessary for having architectures with __WORDSIZE == 32 Y2038 safe. Build tests: ./src/scripts/build-many-glibcs.py glibcs Run-time tests: - Run specific tests on ARM/x86 32bit systems (qemu): https://github.com/lmajewski/meta-y2038 and run tests: https://github.com/lmajewski/y2038-tests/commits/master Above tests were performed with Y2038 redirection applied as well as without to test proper usage of both __settimeofday64 and __settimeofday. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* y2038: alpha: Rename valid_timeval64_to_timeval to valid_timeval_to_timeval32Lukasz Majewski2020-02-074-9/+9
| | | | | | | | | | | | | | | | The name 'valid_timeval64_to_timeval' suggest conversion of struct __timeval64 to struct timeval (as in ./include/time.h). As on the alpha the struct timeval supports 64 bit time, it seems more feasible to emphasis struct timeval32 in the conversion function name. Hence the helper function naming change to 'valid_timeval_to_timeval32'. Build tests: ./src/scripts/build-many-glibcs.py glibcs Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* y2038: alpha: Rename valid_timeval_to_timeval64 to valid_timeval32_to_timevalLukasz Majewski2020-02-074-7/+7
| | | | | | | | | | | | | | | | | | Without this patch the naming convention for functions to convert struct timeval32 to struct timeval (which supports 64 bit time on Alpha) was a bit misleading. The name 'valid_timeval_to_timeval64' suggest conversion of struct timeval to struct __timeval64 (as in ./include/time.h). As on alpha the struct timeval supports 64 bit time it seems more readable to emphasis struct timeval32 in the conversion function name. Hence the helper function naming change to 'valid_timeval32_to_timeval'. Build tests: ./src/scripts/build-many-glibcs.py glibcs Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* y2038: Define __suseconds64_t type to be used with struct __timeval64Lukasz Majewski2020-02-076-0/+6
| | | | | | | | | | | | | | | The __suseconds64_t type is supposed to be the 64 bit type across all architectures. It would be mostly used internally in the glibc - however, when passed to Linux kernel (very unlikely), if necessary, it shall be converted to 32 bit type (i.e. __suseconds_t) Build tests: ./src/scripts/build-many-glibcs.py glibcs Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* Update kernel version to 5.5 in tst-mman-consts.py.Joseph Myers2020-02-071-1/+1
| | | | | | | | This patch updates the kernel version in the test tst-mman-consts.py to 5.5. (There are no new constants covered by this test in 5.5 that need any other header changes.) Tested with build-many-glibcs.py.
* Update syscall lists for Linux 5.5.Joseph Myers2020-02-072-2/+3
| | | | | | | | | Linux 5.5 has no new syscalls to add to syscall-names.list, but it does newly enable the clone3 syscall for AArch64. This patch updates the kernel version listed in syscall-names.list and regenerates the AArch64 arch-syscall.h. Tested with build-many-glibcs.py.
* y2038: linux: Provide __timespec_get64 implementationLukasz Majewski2020-02-051-0/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch provides new instance of Linux specific timespec_get.c file placed in ./sysdeps/unix/sysv/linux/. When compared to this file version from ./time directory, it provides __timespec_get64 explicit 64 bit function for getting 64 bit time in the struct __timespec64 (for compilation using C11 standard). Moreover, a 32 bit version - __timespec_get internally uses __timespec_get64. The __timespec_get is now supposed to be used on systems still supporting 32 bit time (__TIMESIZE != 64) - hence the necessary conversion to 32 bit struct timespec. Internally the timespec_get uses __clock_gettime64. This patch is necessary for having architectures with __WORDSIZE == 32 Y2038 safe. Build tests: ./src/scripts/build-many-glibcs.py glibcs Run-time tests: - Run specific tests on ARM/x86 32bit systems (qemu): https://github.com/lmajewski/meta-y2038 and run tests: https://github.com/lmajewski/y2038-tests/commits/master Above tests were performed with Y2038 redirection applied as well as without to test proper usage of both __timespec_get64 and __timespec_get. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* rt: avoid PLT setup in timer_[sg]ettimeAndreas Schwab2020-02-032-2/+4
| | | | | | | | | | The functions __timer_gettime64 and __timer_settime64 live in librt, not libc. Use proper hidden aliases so that the callers do not need to set up the PLT register. Fixes commits cae1635a70 ("y2038: linux: Provide __timer_settime64 implementation") and 562cdc19c7 ("y2038: linux: Provide __timer_gettime64 implementation").
* y2038: linux: Provide __sched_rr_get_interval64 implementationLukasz Majewski2020-02-022-1/+73
| | | | | | | | | | | | | | | | | | | | | | This patch replaces auto generated wrapper (as described in sysdeps/unix/sysv/linux/syscalls.list) for sched_rr_get_interval with one which adds extra support for reading 64 bit time values on machines with __TIMESIZE != 64. There is no functional change for architectures already supporting 64 bit time ABI. The sched_rr_get_interval declaration in ./include/sched.h is not followed by corresponding libc_hidden_proto(), so it has been assumed that newly introduced syscall wrapper doesn't require libc_hidden_def() (which has been added by template used with auto generation script). Moreover, the code for building sched_rr_gi.c file is already placed in ./posix/Makefiles, so there was no need to add it elsewhere. Performed tests and validation are the same as for timer_gettime() conversion (sysdeps/unix/sysv/linux/timer_gettime.c). Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* y2038: linux: Provide __timerfd_settime64 implementationLukasz Majewski2020-02-023-2/+88
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch replaces auto generated wrapper (as described in sysdeps/unix/sysv/linux/syscalls.list) for timerfd_settime with one which adds extra support for reading and writing from Linux kernel 64 bit time values on machines with __TIMESIZE != 64. There is no functional change for archs already supporting 64 bit time ABI. This patch is conceptually identical to timer_settime conversion already done in sysdeps/unix/sysv/linux/timer_settime.c. Please refer to corresponding commit message for detailed description of introduced functions and the testing procedure. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> --- Changes for v4: - Update date from 2019 to 2020 Changes for v3: - Add missing libc_hidden_def() Changes for v2: - Remove "Contributed by" from the file header - Remove early check for (fd < 0) in __timerfd_settime64 as the fd correctness check is already done in Linux kernel - Add single descriptive comment line to provide concise explanation of the code
* y2038: linux: Provide __timerfd_gettime64 implementationLukasz Majewski2020-02-023-2/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch replaces auto generated wrapper (as described in sysdeps/unix/sysv/linux/syscalls.list) for timerfd_gettime with one which adds extra support for reading 64 bit time values on machines with __TIMESIZE != 64. There is no functional change for architectures already supporting 64 bit time ABI. This patch is conceptually identical to timer_gettime conversion already done in sysdeps/unix/sysv/linux/timer_gettime.c. Please refer to corresponding commit message for detailed description of introduced functions and the testing procedure. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> --- Changes for v4: - Update date from 2019 to 2020 Changes for v3: - Add missing libc_hidden_def() Changes for v2: - Remove "Contributed by" from the file header - Remove early check for (fd < 0) in __timerfd_gettime64 as the fd correctness check is already done in Linux kernel - Add single descriptive comment line to provide concise explanation of the code
* i386: Remove _exit.SH.J. Lu2020-02-011-44/+0
| | | | | | | The generic implementation is suffice since __NR_exit_group is always support and i386 does define ABORT_INSTRUCTION. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* i386: Use ENTRY/END in assembly codesH.J. Lu2020-02-013-15/+10
| | | | | | | Use ENTRY and END in assembly codes so that ENDBR32 will be added at function entries when CET is enabled. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* i386-mcount.S: Add _CET_ENDBR to _mcount and __fentry__H.J. Lu2020-02-011-0/+2
| | | | | | | Since _mcount and __fentry__ don't use ENTRY, we need to add _CET_ENDBR by hand. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* i386/sub_n.S: Add a missing _CET_ENDBR to indirect jump targetH.J. Lu2020-02-011-0/+1
| | | | | | Add a missing _CET_ENDBR to indirect jump targe in sysdeps/i386/sub_n.S. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* i386: Don't unnecessarily save and restore EAX, ECX and EDX [BZ# 25262]H.J. Lu2020-02-014-29/+10
| | | | | | | | | | | On i386, since EAX, ECX and EDX are caller-saved, there are no need to save and restore EAX, ECX and EDX in getcontext, setcontext and swapcontext. They just need to clear EAX on success. The extra scratch registers are needed to enable CET. Tested on i386. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* x86: Don't make 2 calls to dlerror () in a rowH.J. Lu2020-02-012-2/+2
| | | | | | | | | | We shouldn't make 2 calls to dlerror () in a row since the first call will clear the error. We should just use the return value from the first call. Tested on Linux/x86-64. Reviewed-by: Florian Weimer <fweimer@redhat.com>
* nptl: Avoid using PTHREAD_MUTEX_DEFAULT in macro definition [BZ #25271]Florian Weimer2020-01-301-1/+1
| | | | | | | | | | | | | | | | | | | Commit 1c3f9acf1f1f75faa7a28bf39af64afd ("nptl: Add struct_mutex.h") replaced a zero constant with the identifier PTHREAD_MUTEX_DEFAULT in the macro PTHREAD_MUTEX_INITIALIZER. However, that constant is not available in ISO C11 mode: In file included from /usr/include/bits/thread-shared-types.h:74, from /usr/include/bits/pthreadtypes.h:23, from /usr/include/pthread.h:26, from bug25271.c:1: bug25271.c:3:21: error: ‘PTHREAD_MUTEX_DEFAULT’ undeclared here (not in a function) 3 | pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; | ^~~~~~~~~~~~~~~~~~~~~~~~~ This commit change the constant to the equivalent PTHREAD_MUTEX_TIMED_NP, which is in the POSIX extension namespace and thus always available.
* Fix array overflow in backtrace on PowerPC (bug 25423)Andreas Schwab2020-01-212-0/+4
| | | | | | When unwinding through a signal frame the backtrace function on PowerPC didn't check array bounds when storing the frame address. Fixes commit d400dcac5e ("PowerPC: fix backtrace to handle signal trampolines").
* getaddrinfo: Fix resource leak after strdup failure in gethosts [BZ #25425]Florian Weimer2020-01-201-0/+1
| | | | | | | | | | | | Filip Ochnik spotted that one of the error jumps in gethosts fails to call __resolv_context_put to release the resolver context. Fixes commit 352f4ff9a268b81ef5d4b2413f582565806e4790 ("resolv: Introduce struct resolv_context [BZ #21668]") and commit 964263bb8d650f1681665c55704fb01a8e725621 ("getaddrinfo: Release resolver context on error in gethosts [BZ #21885]"). Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
* Fix maybe-uninitialized error on powerpcMatheus Castanho2020-01-171-0/+7
| | | | | | | | | | | | | | | | | | | | | | The build has been failing on powerpc64le-linux-gnu with GCC 10 due to a maybe-uninitialized error: ../sysdeps/ieee754/dbl-64/mpa.c:875:6: error: ‘w.e’ may be used uninitialized in this function [-Werror=maybe-uninitialized] 875 | EY -= EX; | ^~ The warning is thrown because when __inv is called by __dvd *y is not initialized and if t == 0 before calling __dbl_mp, EY will stay uninitialized, as the function does not touch it in this case. However, since t will be set to 1/t before calling __dbl_mp, t == 0 will never happen, so we can instruct the compiler to ignore this case, which suppresses the warning. Tested on powerpc64le. Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
* powerpc32: Fix syntax error in __GLRO macroAndreas Schwab2020-01-181-1/+1
|
* Fix tst-pkey.c pkey_alloc return checks and manualLucas A. M. Magalhaes2020-01-171-0/+4
| | | | | | | | | | | | This test was failing in some powerpc systems as it was not checking for ENOSPC return. As said on the Linux man-pages and can be observed by the implementation at mm/mprotect.c in the Linux Kernel source. The syscall pkey_alloc can return EINVAL or ENOSPC. ENOSPC will indicate either that all keys are in use or that the kernel does not support pkeys. Reviewed-by: Gabriel F. T. Gomes <gabriel@inconstante.net.br>
* powerpc: Move cache line size to rtld_global_roTulio Magno Quites Machado Filho2020-01-1718-63/+310
| | | | | | | | | | | | | | GCC 10.0 enabled -fno-common by default and this started to point that __cache_line_size had been implemented in 2 different places: loader and libc. In order to avoid this duplication, the libc variable has been removed and the loader variable is moved to rtld_global_ro. File sysdeps/unix/sysv/linux/powerpc/dl-auxv.h has been added in order to reuse code for both static and dynamic linking scenarios. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
* powerpc: Initialize rtld_global_ro for static dlopen [BZ #20802]Tulio Magno Quites Machado Filho2020-01-171-2/+11
| | | | | | | Initialize dl_auxv, dl_hwcap and dl_hwcap2 in rtld_global_ro for DSOs that have been statically dlopen'ed. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
* htl: Add internal version of __pthread_mutex_timedlockSamuel Thibault2020-01-133-2/+6
| | | | The C11 threads implementation will need it.
* htl: Avoid exposing unixoid functionsSamuel Thibault2020-01-133-2/+5
| | | | C11 threads should not expose them.
* htl: Add type sizes in bits/pthreadtypes-arch.h and check themSamuel Thibault2020-01-1314-0/+42
|
* htl: Add internal versions of functions used by C11 threadsSamuel Thibault2020-01-133-1/+5
| | | | | The C11 threads implementation needs to call pthread_join and pthread_key_delete without exposing them.
* MIPS: Fix circular definition of __LDBL_MANT_DIG__ in ieee754.hZack Weinberg2020-01-081-1/+1
| | | | | | | | | | | | | | | In commit aa706e13f4bfdf32a27c498902edf4f6006e433e, sysdeps/mips/ieee754/ieee754.h was changed to use GCC’s predefined macro __LDBL_MANT_DIG__, instead of including <float.h> and using LDBL_MANT_DIG (and therefore polluting the user namespace with all of the macros defined in float.h). In order to support compilers that don’t provide __LDBL_MANT_DIG__, there is a fallback #if block which was supposed to include <float.h> and then define __LDBL_MANT_DIG__ to LDBL_MANT_DIG. However, at some point during the development of the patch, a typo was introduced, causing the fallback block to define __LDBL_MANT_DIG__ to expand to __LDBL_MANT_DIG__. Correct this typo.
* hurd: Fix message reception for timer_threadSamuel Thibault2020-01-051-1/+2
| | | | | | | Without a proper size, we get MACH_RCV_TOO_LARGE instead of MACH_MSG_SUCCESS. * sysdeps/mach/hurd/setitimer.c (timer_thread): Add return_code_type field to received message, and set the receive size in __mach_msg call.
* htl: Add __errno_location and __h_errno_locationSamuel Thibault2020-01-042-0/+6
| | | | | | | | As explained on https://sourceware.org/ml/libc-alpha/2020-01/msg00049.html the presence of __errno_location in libpthread.so on GNU/Linux makes libpthread getting linked in for libstdc++. This aligns on that behavior, to avoid issues that only GNU/Hurd would get.
* htl: Move pthread_atfork to libc_nonshared.aSamuel Thibault2020-01-042-3/+3
| | | | | | | | | | | | | | | This follows bd60ce86520b ('nptl: Move pthread_atfork to libc_nonshared.a') with the same rationale: there is no non-libpthread equivalent to be used for making linking against libpthread optional. libpthread_nonshared.a is unused after this, so remove it from the build. There is no ABI impact because pthread_atfork was implemented using __register_atfork in libc even before this change. pthread_atfork has to be a weak alias because pthread_* names are not reserved in libc.
* htl: Use dso_handle.hSamuel Thibault2020-01-041-5/+2
|
* linux: Optimize fallback 32-bit clock_getresAdhemerval Zanella2020-01-031-4/+12
| | | | | | | | | | | | | | | | | | | | | | | | This patch avoid probing the __NR_clock_getttime64 syscall each time __clock_gettime64 is issued on a kernel without 64 bit time support. Once ENOSYS is obtained, only 32-bit clock_gettime are used. The following snippet: clock_getres (CLOCK_REALTIME, &(struct timespec) { 0 }); clock_getres (CLOCK_MONOTONIC, &(struct timespec) { 0 }); clock_getres (CLOCK_BOOTTIME, &(struct timespec) { 0 }); clock_getres (20, &(struct timespec) { 0 }); On a kernel without 64 bit time support issues the syscalls: syscall_0x196(0, 0xffb83330, [...]) = -1 ENOSYS (Function not implemented) clock_getres(CLOCK_REALTIME, {tv_sec=0, tv_nsec=1}) = 0 clock_getres(CLOCK_MONOTONIC, {tv_sec=0, tv_nsec=1}) = 0 clock_getres(CLOCK_BOOTTIME, {tv_sec=0, tv_nsec=1}) = 0 Checked on i686-linux-gnu on 4.15 kernel. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
* linux: Add support for clock_getres64 vDSOAdhemerval Zanella2020-01-038-12/+24
| | | | | | | | No architecture currently defines the vDSO symbol. On archictures with 64-bit time_t the HAVE_CLOCK_GETRES_VSYSCALL is renamed to HAVE_CLOCK_GETRES64_VSYSCALL, it simplifies clock_gettime code. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
* linux: Enable vDSO clock_gettime64 for mipsAdhemerval Zanella2020-01-031-0/+5
| | | | | | It was added on Linux 5.4 (commit 1f66c45db3302). Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
* linux: Enable vDSO clock_gettime64 for armAdhemerval Zanella2020-01-031-0/+1
| | | | | | It was added on Linux 5.5 (commit 74d06efb9c2f9). Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
* linux: Enable vDSO clock_gettime64 for i386Adhemerval Zanella2020-01-031-0/+1
| | | | | | | | It was added on Linux 5.3 (commit 22ca962288c0a). Checked on i686-linux-gnu with 5.3.0 kernel. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
* linux: Optimize fallback 32-bit clock_gettimeAdhemerval Zanella2020-01-031-4/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch avoid probing the __NR_clock_getttime64 syscall each time __clock_gettime64 is issued on a kernel without 64 bit time support. Once ENOSYS is obtained, only 32-bit clock_gettime are used. The following snippet: clock_gettime (CLOCK_REALTIME, &(struct timespec) { 0 }); clock_gettime (CLOCK_MONOTONIC, &(struct timespec) { 0 }); clock_gettime (CLOCK_BOOTTIME, &(struct timespec) { 0 }); clock_gettime (20, &(struct timespec) { 0 }); On a kernel without 64 bit time support and with vDSO support results on the following syscalls: syscall_0x193(0, 0xff87ba30, [...]) = -1 ENOSYS (Function not implemented) clock_gettime(CLOCK_BOOTTIME, {tv_sec=927082, tv_nsec=474382032}) = 0 clock_gettime(0x14 /* CLOCK_??? */, 0xff87b9f8) = -1 EINVAL (Invalid argument) While on a kernel without vDSO support: syscall_0x193(0, 0xbec95550, 0xb6ed2000, 0x1, 0xbec95550, 0) = -1 (errno 38) clock_gettime(CLOCK_REALTIME, {tv_sec=1576615930, tv_nsec=638250162}) = 0 clock_gettime(CLOCK_MONOTONIC, {tv_sec=1665478, tv_nsec=638779620}) = 0 clock_gettime(CLOCK_BOOTTIME, {tv_sec=1675418, tv_nsec=292932704}) = 0 clock_gettime(0x14 /* CLOCK_??? */, 0xbec95530) = -1 EINVAL (Invalid argument) Checked on i686-linux-gnu on 4.15 kernel and on a 5.3 kernel. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
* linux: Add support for clock_gettime64 vDSOAdhemerval Zanella2020-01-039-12/+34
| | | | | | | | No architecture currently defines the vDSO symbol. On architectures with 64-bit time_t the HAVE_CLOCK_GETTIME_VSYSCALL is renamed to HAVE_CLOCK_GETTIME64_VSYSCALL, it simplifies clock_gettime code. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
* elf: Move vDSO setup to rtld (BZ#24967)Adhemerval Zanella2020-01-0327-284/+239
| | | | | | | | | | | | | | | | | | | | | | | | This patch moves the vDSO setup from libc to loader code, just after the vDSO link_map setup. For static case the initialization is moved to _dl_non_dynamic_init instead. Instead of using the mangled pointer, the vDSO data is set as attribute_relro (on _rtld_global_ro for shared or _dl_vdso_* for static). It is read-only even with partial relro. It fixes BZ#24967 now that the vDSO pointer is setup earlier than malloc interposition is called. Also, vDSO calls should not be a problem for static dlopen as indicated by BZ#20802. The vDSO pointer would be zero-initialized and the syscall will be issued instead. Checked on x86_64-linux-gnu, i686-linux-gnu, aarch64-linux-gnu, arm-linux-gnueabihf, powerpc64le-linux-gnu, powerpc64-linux-gnu, powerpc-linux-gnu, s390x-linux-gnu, sparc64-linux-gnu, and sparcv9-linux-gnu. I also run some tests on mips. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
* linux: Consolidate time implementationAdhemerval Zanella2020-01-033-55/+54
| | | | | | | | | | | The IFUNC bypass to vDSO is used when USE_IFUNC_TIME is set. Currently powerpc and x86 defines it. Otherwise the generic implementation is used, which calls clock_gettime. Checked on powerpc64le-linux-gnu, powerpc64-linux-gnu, powerpc-linux-gnu-power4, x86_64-linux-gnu, and i686-linux-gnu. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
* linux: Consolidate Linux gettimeofdayAdhemerval Zanella2020-01-034-100/+63
| | | | | | | | | | | | The IFUNC bypass to vDSO is used when USE_IFUNC_GETTIMEOFDAY is set. Currently aarch64, powerpc*, and x86 defines it. Otherwise the generic implementation is used, which calls clock_gettime. Checked on aarch64-linux-gnu, powerpc64le-linux-gnu, powerpc64-linux-gnu, powerpc-linux-gnu-power4, x86_64-linux-gnu, and i686-linux-gnu. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
* linux: Update mips vDSO symbolsAdhemerval Zanella2020-01-031-0/+1
| | | | | | | | | The clock_getres is a new implementation added on Linux 5.4 (abed3d826f2f). Checked with a build against mips-linux-gnu and mips64-linux-gnu. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
* linux: Update x86 vDSO symbolsAdhemerval Zanella2020-01-033-4/+4
| | | | | | | | | | | | | Add the missing time and clock_getres vDSO symbol names on x86. For time, the iFUNC already uses expected name so it affects only the static build. The clock_getres is a new implementation added on Linux 5.3 (f66501dc53e72). Checked on x86-linux-gnu and i686-linux-gnu. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
* Remove vDSO support from make-syscall.shAdhemerval Zanella2020-01-031-44/+1
| | | | | | | | | | | | | | | | | The auto-generated vDSO call shows some issues: - It requires sync the auto-generated C file with current glibc implementation; - It still uses symbol redirections hacks where libc-symbols.h provide macros that uses compiler builtins (libc_ifunc_redirected for instance); - It does not handle all required compiler handling (inhibit_stack_protector on iFUNC resolver). - No architecure uses it. Checked with a build against all major ABIs. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
* x86: Make x32 use x86 time implementationAdhemerval Zanella2020-01-032-2/+0
| | | | | | | | | | This is the only use of auto-generation syscall which uses a vDSO plus IFUNC and the current x86 generic implementation already covers the expected semantic. Checked on x86_64-linux-gnu-x32. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>