+2014-01-16 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
+
+ [BZ#16430]
+ * sysdeps/unix/sysv/linux/powerpc/gettimeofday.c
+ (__GI___gettimeofday): Alias for a different internal symbol to avoid
+ local calls issues by not having a PLT stub required for IFUNC calls.
+ * sysdeps/unix/sysv/linux/powerpc/time.c (__GI_time): Likewise.
+
2013-11-08 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
* sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h (VDSO_IFUNC_RET):
(parse_dollars): Remove check for WRDE_NOCMD.
(parse_dquote): Likewise.
-2014-12-16 Florian Weimer <fweimer@redhat.com>
-
- [BZ #17630]
- * resolv/nss_dns/dns-network.c (getanswer_r): Iterate over alias
- names.
-
2014-12-15 Jeff Law <law@redhat.com>
[BZ #16617]
/* This is doing "libc_hidden_def (__gettimeofday)" but the compiler won't
let us do it in C because it doesn't know we're defining __gettimeofday
here in this file. */
-asm (".globl __GI___gettimeofday\n"
- "__GI___gettimeofday = __gettimeofday");
+asm (".globl __GI___gettimeofday");
+
+/* __GI___gettimeofday is defined as hidden and for ppc32 it enables the
+ compiler make a local call (symbol@local) for internal GLIBC usage. It
+ means the PLT won't be used and the ifunc resolver will be called directly.
+ For ppc64 a call to a function in another translation unit might use a
+ different toc pointer thus disallowing direct branchess and making internal
+ ifuncs calls safe. */
+#ifdef __powerpc64__
+asm ("__GI___gettimeofday = __gettimeofday");
+#else
+int
+__gettimeofday_vsyscall (struct timeval *tv, struct timezone *tz)
+{
+ return INLINE_VSYSCALL (gettimeofday, 2, tv, tz);
+}
+asm ("__GI___gettimeofday = __gettimeofday_vsyscall");
+#endif
#else