aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--NEWS2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/gettimeofday.c7
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/time.c7
4 files changed, 18 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 6297934..ed1153f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2014-01-20 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
+
+ [BZ#16431]
+ * sysdeps/unix/sysv/linux/powerpc/gettimeofday.c (__gettimeofday):
+ Adjust the vDSO correctly for internal calls.
+ * sysdeps/unix/sysv/linux/powerpc/time.c (time): Likewise.
+
2014-01-20 Allan McRae <allan@archlinux.org>
* po/ca.po: Update Catalan translation from translation project.
diff --git a/NEWS b/NEWS
index 87ab048..f4f22a8 100644
--- a/NEWS
+++ b/NEWS
@@ -25,7 +25,7 @@ Version 2.19
16151, 16153, 16167, 16169, 16172, 16195, 16214, 16245, 16271, 16274,
16283, 16289, 16293, 16314, 16316, 16330, 16337, 16338, 16356, 16365,
16366, 16369, 16372, 16375, 16379, 16384, 16385, 16386, 16387, 16390,
- 16394, 16400, 16407, 16408, 16414, 16430, 16453.
+ 16394, 16400, 16407, 16408, 16414, 16430, 16431, 16453.
* Slovenian translations for glibc messages have been contributed by the
Translation Project's Slovenian team of translators.
diff --git a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c
index 2085b68..97ea2a4 100644
--- a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c
+++ b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c
@@ -35,9 +35,12 @@ __gettimeofday_syscall (struct timeval *tv, struct timezone *tz)
void *
gettimeofday_ifunc (void)
{
+ PREPARE_VERSION (linux2615, "LINUX_2.6.15", 123718565);
+
/* If the vDSO is not available we fall back syscall. */
- return (__vdso_gettimeofday ? VDSO_IFUNC_RET (__vdso_gettimeofday)
- : __gettimeofday_syscall);
+ void *vdso_gettimeofday = _dl_vdso_vsym ("__kernel_gettimeofday", &linux2615);
+ return (vdso_gettimeofday ? VDSO_IFUNC_RET (vdso_gettimeofday)
+ : (void*)__gettimeofday_syscall);
}
asm (".type __gettimeofday, %gnu_indirect_function");
diff --git a/sysdeps/unix/sysv/linux/powerpc/time.c b/sysdeps/unix/sysv/linux/powerpc/time.c
index 023bc02..9f54d97 100644
--- a/sysdeps/unix/sysv/linux/powerpc/time.c
+++ b/sysdeps/unix/sysv/linux/powerpc/time.c
@@ -45,9 +45,12 @@ time_syscall (time_t *t)
void *
time_ifunc (void)
{
+ PREPARE_VERSION (linux2615, "LINUX_2.6.15", 123718565);
+
/* If the vDSO is not available we fall back to the syscall. */
- return (__vdso_time ? VDSO_IFUNC_RET (__vdso_time)
- : time_syscall);
+ void *vdso_time = _dl_vdso_vsym ("__kernel_time", &linux2615);
+ return (vdso_time ? VDSO_IFUNC_RET (vdso_time)
+ : (void*)time_syscall);
}
asm (".type time, %gnu_indirect_function");