This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch, master, updated. glibc-2.15-1052-ga386f1c


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  a386f1cc229e7de02740bef18bdd5d272d1e7537 (commit)
      from  db5013c65440b3fa87d7849c4d45d707807670de (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=a386f1cc229e7de02740bef18bdd5d272d1e7537

commit a386f1cc229e7de02740bef18bdd5d272d1e7537
Author: Richard Henderson <rth@twiddle.net>
Date:   Fri May 25 10:30:42 2012 -0700

    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.

diff --git a/ChangeLog b/ChangeLog
index ceb3f5a..2f6a533 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2012-05-25  Richard Henderson  <rth@twiddle.net>
+
+	* 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.
+
 2012-05-24  Joseph Myers  <joseph@codesourcery.com>
 
 	[BZ #14153]
diff --git a/sysdeps/powerpc/powerpc32/dl-irel.h b/sysdeps/powerpc/powerpc32/dl-irel.h
index c8e50ee..ebaf44a 100644
--- a/sysdeps/powerpc/powerpc32/dl-irel.h
+++ b/sysdeps/powerpc/powerpc32/dl-irel.h
@@ -1,6 +1,6 @@
 /* Machine-dependent ELF indirect relocation inline functions.
    PowerPC version.
-   Copyright (C) 2009 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
@@ -29,7 +29,7 @@ static inline Elf32_Addr
 __attribute ((always_inline))
 elf_ifunc_invoke (Elf32_Addr addr)
 {
-  return ((Elf32_Addr (*) (void)) (addr)) ();
+  return ((Elf32_Addr (*) (unsigned long int)) (addr)) (GLRO(dl_hwcap));
 }
 
 static inline void
diff --git a/sysdeps/powerpc/powerpc32/dl-machine.h b/sysdeps/powerpc/powerpc32/dl-machine.h
index 45868f5..3ae27a4 100644
--- a/sysdeps/powerpc/powerpc32/dl-machine.h
+++ b/sysdeps/powerpc/powerpc32/dl-machine.h
@@ -1,5 +1,5 @@
 /* Machine-dependent ELF dynamic relocation inline functions.  PowerPC version.
-   Copyright (C) 1995-2003, 2005, 2006, 2011 Free Software Foundation, Inc.
+   Copyright (C) 1995-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
@@ -23,6 +23,7 @@
 
 #include <assert.h>
 #include <dl-tls.h>
+#include <dl-irel.h>
 
 /* Translate a processor specific dynamic tag to the index
    in l_info array.  */
@@ -308,7 +309,7 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
       && __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0)
       && __builtin_expect (sym->st_shndx != SHN_UNDEF, 1)
       && __builtin_expect (!skip_ifunc, 1))
-    value = ((Elf32_Addr (*) (void)) value) ();
+    value = elf_ifunc_invoke (value);
 
   /* A small amount of code is duplicated here for speed.  In libc,
      more than 90% of the relocs are R_PPC_RELATIVE; in the X11 shared
diff --git a/sysdeps/powerpc/powerpc64/dl-irel.h b/sysdeps/powerpc/powerpc64/dl-irel.h
index 7270275..ced0f3f 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 a964a29..7c7d768 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

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                              |   10 ++++++++++
 sysdeps/powerpc/powerpc32/dl-irel.h    |    4 ++--
 sysdeps/powerpc/powerpc32/dl-machine.h |    5 +++--
 sysdeps/powerpc/powerpc64/dl-irel.h    |    4 ++--
 sysdeps/powerpc/powerpc64/dl-machine.h |    2 +-
 5 files changed, 18 insertions(+), 7 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]