diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux/powerpc/init-first.c')
-rw-r--r-- | sysdeps/unix/sysv/linux/powerpc/init-first.c | 56 |
1 files changed, 37 insertions, 19 deletions
diff --git a/sysdeps/unix/sysv/linux/powerpc/init-first.c b/sysdeps/unix/sysv/linux/powerpc/init-first.c index b4917d12a5..ee91c0bf9e 100644 --- a/sysdeps/unix/sysv/linux/powerpc/init-first.c +++ b/sysdeps/unix/sysv/linux/powerpc/init-first.c @@ -23,17 +23,19 @@ # undef __clock_getres # include <libc-vdso.h> -void *__vdso_gettimeofday attribute_hidden; -void *__vdso_clock_gettime; -void *__vdso_clock_getres; -void *__vdso_get_tbfreq; -void *__vdso_getcpu; -void *__vdso_time; +int (*VDSO_SYMBOL(gettimeofday)) (struct timeval *, void *) + attribute_hidden; +int (*VDSO_SYMBOL(clock_gettime)) (clockid_t, struct timespec *); +int (*VDSO_SYMBOL(clock_getres)) (clockid_t, struct timespec *); +unsigned long long (*VDSO_SYMBOL(get_tbfreq)) (void); +int (*VDSO_SYMBOL(getcpu)) (unsigned *, unsigned *); +time_t (*VDSO_SYMBOL(time)) (time_t *); + #if defined(__PPC64__) || defined(__powerpc64__) -void *__vdso_sigtramp_rt64; +void *VDSO_SYMBOL(sigtramp_rt64); #else -void *__vdso_sigtramp32; -void *__vdso_sigtramp_rt32; +void *VDSO_SYMBOL(sigtramp32); +void *VDSO_SYMBOL(sigtramp_rt32); #endif static inline void @@ -41,26 +43,42 @@ _libc_vdso_platform_setup (void) { PREPARE_VERSION (linux2615, "LINUX_2.6.15", 123718565); - __vdso_gettimeofday = _dl_vdso_vsym ("__kernel_gettimeofday", &linux2615); + void *p = _dl_vdso_vsym ("__kernel_gettimeofday", &linux2615); + PTR_MANGLE (p); + VDSO_SYMBOL (gettimeofday) = p; - __vdso_clock_gettime = _dl_vdso_vsym ("__kernel_clock_gettime", &linux2615); + p = _dl_vdso_vsym ("__kernel_clock_gettime", &linux2615); + PTR_MANGLE (p); + VDSO_SYMBOL (clock_gettime) = p; - __vdso_clock_getres = _dl_vdso_vsym ("__kernel_clock_getres", &linux2615); + p = _dl_vdso_vsym ("__kernel_clock_getres", &linux2615); + PTR_MANGLE (p); + VDSO_SYMBOL (clock_getres) = p; - __vdso_get_tbfreq = _dl_vdso_vsym ("__kernel_get_tbfreq", &linux2615); + p = _dl_vdso_vsym ("__kernel_get_tbfreq", &linux2615); + PTR_MANGLE (p); + VDSO_SYMBOL (get_tbfreq) = p; - __vdso_getcpu = _dl_vdso_vsym ("__kernel_getcpu", &linux2615); + p = _dl_vdso_vsym ("__kernel_getcpu", &linux2615); + PTR_MANGLE (p); + VDSO_SYMBOL (getcpu) = p; - __vdso_time = _dl_vdso_vsym ("__kernel_time", &linux2615); + p = _dl_vdso_vsym ("__kernel_time", &linux2615); + PTR_MANGLE (p); + VDSO_SYMBOL (time) = p; /* PPC64 uses only one signal trampoline symbol, while PPC32 will use two depending if SA_SIGINFO is used (__kernel_sigtramp_rt32) or not - (__kernel_sigtramp32). */ + (__kernel_sigtramp32). + There is no need to pointer mangle these symbol because they will + used only for pointer comparison. */ #if defined(__PPC64__) || defined(__powerpc64__) - __vdso_sigtramp_rt64 = _dl_vdso_vsym ("__kernel_sigtramp_rt64", &linux2615); + VDSO_SYMBOL(sigtramp_rt64) = _dl_vdso_vsym ("__kernel_sigtramp_rt64", + &linux2615); #else - __vdso_sigtramp32 = _dl_vdso_vsym ("__kernel_sigtramp32", &linux2615); - __vdso_sigtramp_rt32 = _dl_vdso_vsym ("__kernel_sigtramp_rt32", &linux2615); + VDSO_SYMBOL(sigtramp32) = _dl_vdso_vsym ("__kernel_sigtramp32", &linux2615); + VDSO_SYMBOL(sigtramp_rt32) = _dl_vdso_vsym ("__kernel_sigtramp_rt32", + &linux2615); #endif } |