diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | sysdeps/powerpc/powerpc64/dl-machine.h | 4 |
3 files changed, 10 insertions, 2 deletions
@@ -1,3 +1,9 @@ +2015-01-24 Adhemerval Zanellla <azanella@linux.vnet.ibm.com> + + [BZ #17868] + * sysdeps/powerpc/powerpc64/dl-machine.h (resolve_ifunc): Force value + set dependency from opd value. + 2015-01-23 H.J. Lu <hongjiu.lu@intel.com> * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): @@ -18,7 +18,7 @@ Version 2.21 17664, 17665, 17668, 17682, 17702, 17717, 17719, 17722, 17723, 17724, 17725, 17732, 17733, 17744, 17745, 17746, 17747, 17748, 17775, 17777, 17780, 17781, 17782, 17791, 17793, 17796, 17797, 17803, 17806, 17834, - 17844, 17848, 17870 + 17844, 17848, 17868, 17870 * A new semaphore algorithm has been implemented in generic C code for all machines. Previous custom assembly implementations of semaphore were diff --git a/sysdeps/powerpc/powerpc64/dl-machine.h b/sysdeps/powerpc/powerpc64/dl-machine.h index 944871223f..47bb5a7cb7 100644 --- a/sysdeps/powerpc/powerpc64/dl-machine.h +++ b/sysdeps/powerpc/powerpc64/dl-machine.h @@ -623,7 +623,9 @@ resolve_ifunc (Elf64_Addr value, opd.fd_func = func->fd_func + sym_map->l_addr; opd.fd_toc = func->fd_toc + sym_map->l_addr; opd.fd_aux = func->fd_aux; - value = (Elf64_Addr) &opd; + /* GCC 4.9+ eliminates the branch as dead code, force the odp set + dependency. */ + asm ("" : "=r" (value) : "0" (&opd), "X" (opd)); } #endif #endif |