diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2019-06-03 21:07:25 +0000 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2019-09-17 17:09:26 -0300 |
commit | 986a506481d4edb3b5c50c8245e915e39d248c7d (patch) | |
tree | 55276a7d3b3309b13dd2db13d00956db3c3da25d /sysdeps/unix/sysv/linux/libc-vdso.h | |
parent | b8a7c7da4e228d0f8fb39fdbc1a6cfd33a97a188 (diff) | |
download | glibc-986a506481d4edb3b5c50c8245e915e39d248c7d.tar glibc-986a506481d4edb3b5c50c8245e915e39d248c7d.tar.gz glibc-986a506481d4edb3b5c50c8245e915e39d248c7d.tar.bz2 glibc-986a506481d4edb3b5c50c8245e915e39d248c7d.zip |
powerpc: Simplify vsyscall internal macros
This patch simplifies the powerpc internal macros for vDSO calls
by:
- Removing INTERNAL_VSYSCALL_NO_SYSCALL_FALLBACK, used solely on
get_timebase_freq.
- Adjust INTERNAL_VSYSCALL_CALL_TYPE powerpc32 to follow powerpc64
argument ordering.
- Use HAVE_*_VSYSCALL instead of explicit strings.
- Make powerpc libc-vdso.h include generic implementation.
No semantic change expected, checked on powerpc-linux-gnu-power4,
powerpc64-linux-gnu, and powerpc64le-linux-gnu.
* sysdeps/unix/sysv/linux/libc-vdso.h (VDSO_IFUNC_RET): Define if not
defined.
* sysdeps/unix/sysv/linux/powerpc/get_timebase_freq.c
(__get_timebase_freq): Remove use of
INTERNAL_VSYSCALL_NO_SYSCALL_FALLBACK.
(get_timebase_freq_fallback): New symbol.
* sysdeps/unix/sysv/linux/powerpc/gettimeofday.c (time): Use
HAVE_GETTIMEOFDAY_VSYSCALL.
* sysdeps/unix/sysv/linux/powerpc/time.c (gettimeofday): Use
HAVE_TIME_VSYSCALL.
* sysdeps/unix/sysv/linux/powerpc/libc-vdso.h: Include generic
implementation.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
(INTERNAL_VSYSCALL_CALL_TYPE): Make calling convention similar to
powerpc64.
(INTERNAL_VSYSCALL_NO_SYSCALL_FALLBACK): Remove macro.
* .../sysv/linux/powerpc/powerpc64/sysdep.h
(INTERNAL_VSYSCALL_NO_SYSCALL_FALLBACK): Likewise.
* sysdeps/unix/sysv/linux/powerpc/sysdep.h
(HAVE_GETTIMEOFDAY_VSYSCALL): Define.
Diffstat (limited to 'sysdeps/unix/sysv/linux/libc-vdso.h')
-rw-r--r-- | sysdeps/unix/sysv/linux/libc-vdso.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/libc-vdso.h b/sysdeps/unix/sysv/linux/libc-vdso.h index 2e63aa1bba..792ac39d85 100644 --- a/sysdeps/unix/sysv/linux/libc-vdso.h +++ b/sysdeps/unix/sysv/linux/libc-vdso.h @@ -21,6 +21,13 @@ #define VDSO_SYMBOL(__name) __vdso_##__name +/* Adjust the return IFUNC value from a vDSO symbol accordingly required + by the ELFv1 ABI. It is used by the architecture to create an ODP + entry since the kernel vDSO does not provide it. */ +#ifndef VDSO_IFUNC_RET +# define VDSO_IFUNC_RET(__value) (__value) +#endif + #ifdef HAVE_CLOCK_GETTIME_VSYSCALL extern int (*VDSO_SYMBOL(clock_gettime)) (clockid_t, struct timespec *) attribute_hidden; |