summary refs log tree commit diff
path: root/sysdeps/powerpc/powerpc64
diff options
context:
space:
mode:
authorRichard Henderson <rth@twiddle.net>2012-05-25 10:30:42 -0700
committerRichard Henderson <rth@twiddle.net>2012-05-25 10:30:42 -0700
commita386f1cc229e7de02740bef18bdd5d272d1e7537 (patch)
treec3ae8cdeed360682a0806dc0c0d4d5fa600aa229 /sysdeps/powerpc/powerpc64
parentdb5013c65440b3fa87d7849c4d45d707807670de (diff)
downloadglibc-a386f1cc229e7de02740bef18bdd5d272d1e7537.tar.gz
glibc-a386f1cc229e7de02740bef18bdd5d272d1e7537.tar.xz
glibc-a386f1cc229e7de02740bef18bdd5d272d1e7537.zip
ppc: Pass hwcap to ifuncs.
        * sysdeps/powerpc/powerpc32/dl-irel.h (elf_ifunc_invoke): Pass
        dl_hwcap to ifunc resolver.
        * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Use
        elf_ifunc_invoke.
        * sysdeps/powerpc/powerpc64/dl-irel.h (elf_ifunc_invoke): Pass
        dl_hwcap to ifunc resolver.
        * sysdeps/powerpc/powerpc64/dl-machine.h (resolve_ifunc): Likewise.
Diffstat (limited to 'sysdeps/powerpc/powerpc64')
-rw-r--r--sysdeps/powerpc/powerpc64/dl-irel.h4
-rw-r--r--sysdeps/powerpc/powerpc64/dl-machine.h2
2 files changed, 3 insertions, 3 deletions
diff --git a/sysdeps/powerpc/powerpc64/dl-irel.h b/sysdeps/powerpc/powerpc64/dl-irel.h
index 7270275945..ced0f3f6d8 100644
--- a/sysdeps/powerpc/powerpc64/dl-irel.h
+++ b/sysdeps/powerpc/powerpc64/dl-irel.h
@@ -1,6 +1,6 @@
 /* Machine-dependent ELF indirect relocation inline functions.
    PowerPC64 version.
-   Copyright (C) 2009, 2011 Free Software Foundation, Inc.
+   Copyright (C) 2009-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -31,7 +31,7 @@ static inline Elf64_Addr
 __attribute ((always_inline))
 elf_ifunc_invoke (Elf64_Addr addr)
 {
-  return ((Elf64_Addr (*) (void)) (addr)) ();
+  return ((Elf64_Addr (*) (unsigned long int)) (addr)) (GLRO(dl_hwcap));
 }
 
 static inline void
diff --git a/sysdeps/powerpc/powerpc64/dl-machine.h b/sysdeps/powerpc/powerpc64/dl-machine.h
index a964a29e38..7c7d768998 100644
--- a/sysdeps/powerpc/powerpc64/dl-machine.h
+++ b/sysdeps/powerpc/powerpc64/dl-machine.h
@@ -545,7 +545,7 @@ resolve_ifunc (Elf64_Addr value,
       value = (Elf64_Addr) &opd;
     }
 #endif
-  return ((Elf64_Addr (*) (void)) value) ();
+  return ((Elf64_Addr (*) (unsigned long int)) value) (GLRO(dl_hwcap));
 }
 
 /* Perform the relocation specified by RELOC and SYM (which is fully