[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

r4750 - in glibc-package/trunk/debian: . patches patches/any patches/sparc



Author: aurel32
Date: 2011-06-27 05:00:37 +0000 (Mon, 27 Jun 2011)
New Revision: 4750

Added:
   glibc-package/trunk/debian/patches/any/cvs-ifunc.diff
   glibc-package/trunk/debian/patches/sparc/cvs-ifunc.diff
Removed:
   glibc-package/trunk/debian/patches/sparc/cvs-ifunc1.diff
   glibc-package/trunk/debian/patches/sparc/submitted-ifunc2.diff
Modified:
   glibc-package/trunk/debian/changelog
   glibc-package/trunk/debian/patches/series
Log:
  * Replace sparc/submitted-ifunc2.diff by upstream version 
    any/cvs-ifunc.diff.



Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog	2011-06-26 21:08:25 UTC (rev 4749)
+++ glibc-package/trunk/debian/changelog	2011-06-27 05:00:37 UTC (rev 4750)
@@ -17,6 +17,8 @@
     fnmatch() (CVE-2011-1659).  Closes: #626370.
   * Add an entry to NEWS.Debian about multiarch and passing flags to the 
     compiler on pre-multiarch toolchains.
+  * Replace sparc/submitted-ifunc2.diff by upstream version 
+    any/cvs-ifunc.diff.
 
   [ Petr Salinger ]
   * kfreebsd/local-sysdeps.diff: update to revision 3467 (from glibc-bsd).

Added: glibc-package/trunk/debian/patches/any/cvs-ifunc.diff
===================================================================
--- glibc-package/trunk/debian/patches/any/cvs-ifunc.diff	                        (rev 0)
+++ glibc-package/trunk/debian/patches/any/cvs-ifunc.diff	2011-06-27 05:00:37 UTC (rev 4750)
@@ -0,0 +1,335 @@
+2011-06-21  Joseph Myers  <joseph@codesourcery.com>
+
+	* ports/sysdeps/arm/dl-irel.h (elf_ifunc_invoke): New.
+	(elf_irel): Use it.
+
+2011-06-20  David S. Miller  <davem@davemloft.net>
+
+	* sysdeps/sparc/sparc32/dl-plt.h: Protect against multiple
+	inclusions.
+	* sysdeps/sparc/sparc64/dl-plt.h: Likewise.
+
+	* sysdeps/i386/dl-irel.h (elf_ifunc_invoke): New.
+	(elf_irel): Use it.
+	* sysdeps/powerpc/powerpc32/dl-irel.h: Likewise.
+	* sysdeps/powerpc/powerpc64/dl-irel.h: Likewise.
+	* sysdeps/sparc/sparc32/dl-irel.h: Likewise.
+	* sysdeps/sparc/sparc64/dl-irel.h: Likewise.
+	* sysdeps/x86_64/dl-irel.h: Likewise.
+
+	* elf/dl-runtime.c: Use elf_ifunc_invoke.
+	* elf/dl-sym.c: Likewise.
+
+diff --git a/elf/dl-runtime.c b/elf/dl-runtime.c
+index b27cfbf..8778e67 100644
+--- a/elf/dl-runtime.c
++++ b/elf/dl-runtime.c
+@@ -27,6 +27,7 @@
+ #include <sysdep-cancel.h>
+ #include "dynamic-link.h"
+ #include <tls.h>
++#include <dl-irel.h>
+ 
+ 
+ #if (!defined ELF_MACHINE_NO_RELA && !defined ELF_MACHINE_PLT_REL) \
+@@ -146,7 +147,7 @@ _dl_fixup (
+ 
+   if (sym != NULL
+       && __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0))
+-    value = ((DL_FIXUP_VALUE_TYPE (*) (void)) DL_FIXUP_VALUE_ADDR (value)) ();
++    value = elf_ifunc_invoke (DL_FIXUP_VALUE_ADDR (value));
+ 
+   /* Finally, fix up the plt itself.  */
+   if (__builtin_expect (GLRO(dl_bind_not), 0))
+@@ -235,8 +236,7 @@ _dl_profile_fixup (
+ 	  if (defsym != NULL
+ 	      && __builtin_expect (ELFW(ST_TYPE) (defsym->st_info)
+ 				   == STT_GNU_IFUNC, 0))
+-	    value = ((DL_FIXUP_VALUE_TYPE (*) (void))
+-		     DL_FIXUP_VALUE_ADDR (value)) ();
++	    value = elf_ifunc_invoke (DL_FIXUP_VALUE_ADDR (value));
+ 	}
+       else
+ 	{
+@@ -246,8 +246,7 @@ _dl_profile_fixup (
+ 
+ 	  if (__builtin_expect (ELFW(ST_TYPE) (refsym->st_info)
+ 				== STT_GNU_IFUNC, 0))
+-	    value = ((DL_FIXUP_VALUE_TYPE (*) (void))
+-		     DL_FIXUP_VALUE_ADDR (value)) ();
++	    value = elf_ifunc_invoke (DL_FIXUP_VALUE_ADDR (value));
+ 
+ 	  result = l;
+ 	}
+diff --git a/elf/dl-sym.c b/elf/dl-sym.c
+index 4faf05c..0af3e48 100644
+--- a/elf/dl-sym.c
++++ b/elf/dl-sym.c
+@@ -27,6 +27,7 @@
+ #include <dl-hash.h>
+ #include <sysdep-cancel.h>
+ #include <dl-tls.h>
++#include <dl-irel.h>
+ 
+ 
+ #ifdef SHARED
+@@ -196,8 +197,7 @@ RTLD_NEXT used in code not dynamically loaded"));
+ 	{
+ 	  DL_FIXUP_VALUE_TYPE fixup
+ 	    = DL_FIXUP_MAKE_VALUE (result, (ElfW(Addr)) value);
+-	  fixup =
+-	    ((DL_FIXUP_VALUE_TYPE (*) (void)) DL_FIXUP_VALUE_ADDR (fixup)) ();
++	  fixup = elf_ifunc_invoke (DL_FIXUP_VALUE_ADDR (fixup));
+ 	  value = (void *) DL_FIXUP_VALUE_CODE_ADDR (fixup);
+ 	}
+ 
+diff --git a/sysdeps/i386/dl-irel.h b/sysdeps/i386/dl-irel.h
+index 30385a1..70cd6b0 100644
+--- a/sysdeps/i386/dl-irel.h
++++ b/sysdeps/i386/dl-irel.h
+@@ -26,6 +26,13 @@
+ 
+ #define ELF_MACHINE_IREL	1
+ 
++static inline Elf32_Addr
++__attribute ((always_inline))
++elf_ifunc_invoke (Elf32_Addr addr)
++{
++  return ((Elf32_Addr (*) (void)) (addr)) ();
++}
++
+ static inline void
+ __attribute ((always_inline))
+ elf_irel (const Elf32_Rel *reloc)
+@@ -35,7 +42,7 @@ elf_irel (const Elf32_Rel *reloc)
+ 
+   if (__builtin_expect (r_type == R_386_IRELATIVE, 1))
+     {
+-      Elf32_Addr value = ((Elf32_Addr (*) (void)) (*reloc_addr)) ();
++      Elf32_Addr value = elf_ifunc_invoke(*reloc_addr);
+       *reloc_addr = value;
+     }
+   else
+diff --git a/sysdeps/powerpc/powerpc32/dl-irel.h b/sysdeps/powerpc/powerpc32/dl-irel.h
+index 3f204cd..a31e1ed 100644
+--- a/sysdeps/powerpc/powerpc32/dl-irel.h
++++ b/sysdeps/powerpc/powerpc32/dl-irel.h
+@@ -26,6 +26,13 @@
+ 
+ #define ELF_MACHINE_IRELA	1
+ 
++static inline Elf32_Addr
++__attribute ((always_inline))
++elf_ifunc_invoke (Elf32_Addr addr)
++{
++  return ((Elf32_Addr (*) (void)) (addr)) ();
++}
++
+ static inline void
+ __attribute ((always_inline))
+ elf_irela (const Elf32_Rela *reloc)
+@@ -35,7 +42,7 @@ elf_irela (const Elf32_Rela *reloc)
+   if (__builtin_expect (r_type == R_PPC_IRELATIVE, 1))
+     {
+       Elf32_Addr *const reloc_addr = (void *) reloc->r_offset;
+-      Elf32_Addr value = ((Elf32_Addr (*) (void)) reloc->r_addend) ();
++      Elf32_Addr value = elf_ifunc_invoke(reloc->r_addend);
+       *reloc_addr = value;
+     }
+   else
+diff --git a/sysdeps/powerpc/powerpc64/dl-irel.h b/sysdeps/powerpc/powerpc64/dl-irel.h
+index 6cded50..3c2668f 100644
+--- a/sysdeps/powerpc/powerpc64/dl-irel.h
++++ b/sysdeps/powerpc/powerpc64/dl-irel.h
+@@ -33,6 +33,13 @@ typedef struct
+   Elf64_Addr fd_aux;
+ } Elf64_FuncDesc;
+ 
++static inline Elf64_Addr
++__attribute ((always_inline))
++elf_ifunc_invoke (Elf64_Addr addr)
++{
++  return ((Elf64_Addr (*) (void)) (addr)) ();
++}
++
+ static inline void
+ __attribute ((always_inline))
+ elf_irela (const Elf64_Rela *reloc)
+@@ -42,13 +49,13 @@ elf_irela (const Elf64_Rela *reloc)
+   if (__builtin_expect (r_type == R_PPC64_IRELATIVE, 1))
+     {
+       Elf64_Addr *const reloc_addr = (void *) reloc->r_offset;
+-      Elf64_Addr value = ((Elf64_Addr (*) (void)) reloc->r_addend) ();
++      Elf64_Addr value = elf_ifunc_invoke(reloc->r_addend);
+       *reloc_addr = value;
+     }
+   else if (__builtin_expect (r_type == R_PPC64_JMP_IREL, 1))
+     {
+       Elf64_Addr *const reloc_addr = (void *) reloc->r_offset;
+-      Elf64_Addr value = ((Elf64_Addr (*) (void)) reloc->r_addend) ();
++      Elf64_Addr value = elf_ifunc_invoke(reloc->r_addend);
+       *(Elf64_FuncDesc *) reloc_addr = *(Elf64_FuncDesc *) value;
+     }
+   else
+diff --git a/sysdeps/sparc/sparc32/dl-irel.h b/sysdeps/sparc/sparc32/dl-irel.h
+index 2753fb4..4eaaa37 100644
+--- a/sysdeps/sparc/sparc32/dl-irel.h
++++ b/sysdeps/sparc/sparc32/dl-irel.h
+@@ -28,6 +28,13 @@
+ 
+ #define ELF_MACHINE_IRELA	1
+ 
++static inline Elf32_Addr
++__attribute ((always_inline))
++elf_ifunc_invoke (Elf32_Addr addr)
++{
++  return ((Elf32_Addr (*) (int)) (addr)) (GLRO(dl_hwcap));
++}
++
+ static inline void
+ __attribute ((always_inline))
+ elf_irela (const Elf32_Rela *reloc)
+@@ -37,13 +44,13 @@ elf_irela (const Elf32_Rela *reloc)
+   if (__builtin_expect (r_type == R_SPARC_IRELATIVE, 1))
+     {
+       Elf32_Addr *const reloc_addr = (void *) reloc->r_offset;
+-      Elf32_Addr value = ((Elf32_Addr (*) (int)) reloc->r_addend) (GLRO(dl_hwcap));
++      Elf32_Addr value = elf_ifunc_invoke(reloc->r_addend);
+       *reloc_addr = value;
+     }
+   else if (__builtin_expect (r_type == R_SPARC_JMP_IREL, 1))
+     {
+       Elf32_Addr *const reloc_addr = (void *) reloc->r_offset;
+-      Elf32_Addr value = ((Elf32_Addr (*) (int)) reloc->r_addend) (GLRO(dl_hwcap));
++      Elf32_Addr value = elf_ifunc_invoke(reloc->r_addend);
+ 
+       sparc_fixup_plt (reloc, reloc_addr, value, 0, 1);
+     }
+diff --git a/sysdeps/sparc/sparc32/dl-plt.h b/sysdeps/sparc/sparc32/dl-plt.h
+index bfb891f..0fbd950 100644
+--- a/sysdeps/sparc/sparc32/dl-plt.h
++++ b/sysdeps/sparc/sparc32/dl-plt.h
+@@ -18,6 +18,9 @@
+    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+    02111-1307 USA.  */
+ 
++#ifndef _DL_PLT_H
++#define _DL_PLT_H
++
+ /* Some SPARC opcodes we need to use for self-modifying code.  */
+ #define OPCODE_NOP	0x01000000 /* nop */
+ #define OPCODE_CALL	0x40000000 /* call ?; add PC-rel word address */
+@@ -95,3 +98,5 @@ sparc_fixup_plt (const Elf32_Rela *reloc, Elf32_Addr *reloc_addr,
+ 
+   return value;
+ }
++
++#endif /* dl-plt.h */
+diff --git a/sysdeps/sparc/sparc64/dl-irel.h b/sysdeps/sparc/sparc64/dl-irel.h
+index 0d70e2a..e356ac6 100644
+--- a/sysdeps/sparc/sparc64/dl-irel.h
++++ b/sysdeps/sparc/sparc64/dl-irel.h
+@@ -28,6 +28,13 @@
+ 
+ #define ELF_MACHINE_IRELA	1
+ 
++static inline Elf64_Addr
++__attribute ((always_inline))
++elf_ifunc_invoke (Elf64_Addr addr)
++{
++  return ((Elf64_Addr (*) (int)) (addr)) (GLRO(dl_hwcap));
++}
++
+ static inline void
+ __attribute ((always_inline))
+ elf_irela (const Elf64_Rela *reloc)
+@@ -37,13 +44,13 @@ elf_irela (const Elf64_Rela *reloc)
+   if (__builtin_expect (r_type == R_SPARC_IRELATIVE, 1))
+     {
+       Elf64_Addr *const reloc_addr = (void *) reloc->r_offset;
+-      Elf64_Addr value = ((Elf64_Addr (*) (int)) reloc->r_addend) (GLRO(dl_hwcap));
++      Elf64_Addr value = elf_ifunc_invoke(reloc->r_addend);
+       *reloc_addr = value;
+     }
+   else if (__builtin_expect (r_type == R_SPARC_JMP_IREL, 1))
+     {
+       Elf64_Addr *const reloc_addr = (void *) reloc->r_offset;
+-      Elf64_Addr value = ((Elf64_Addr (*) (int)) reloc->r_addend) (GLRO(dl_hwcap));
++      Elf64_Addr value = elf_ifunc_invoke(reloc->r_addend);
+       struct link_map map = { .l_addr = 0 };
+ 
+       /* 'high' is always zero, for large PLT entries the linker
+diff --git a/sysdeps/sparc/sparc64/dl-plt.h b/sysdeps/sparc/sparc64/dl-plt.h
+index ca2fe3b..ed8abfa 100644
+--- a/sysdeps/sparc/sparc64/dl-plt.h
++++ b/sysdeps/sparc/sparc64/dl-plt.h
+@@ -17,6 +17,9 @@
+    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+    02111-1307 USA.  */
+ 
++#ifndef _DL_PLT_H
++#define _DL_PLT_H
++
+ /* We have 4 cases to handle.  And we code different code sequences
+    for each one.  I love V9 code models...  */
+ static inline void __attribute__ ((always_inline))
+@@ -161,3 +164,5 @@ sparc64_fixup_plt (struct link_map *map, const Elf64_Rela *reloc,
+       __asm __volatile ("flush %0" : : "r" (insns));
+     }
+ }
++
++#endif /* dl-plt.h */
+diff --git a/sysdeps/x86_64/dl-irel.h b/sysdeps/x86_64/dl-irel.h
+index d2d5c06..19f9457 100644
+--- a/sysdeps/x86_64/dl-irel.h
++++ b/sysdeps/x86_64/dl-irel.h
+@@ -26,6 +26,13 @@
+ 
+ #define ELF_MACHINE_IRELA	1
+ 
++static inline Elf64_Addr
++__attribute ((always_inline))
++elf_ifunc_invoke (Elf64_Addr addr)
++{
++  return ((Elf64_Addr (*) (void)) (addr)) ();
++}
++
+ static inline void
+ __attribute ((always_inline))
+ elf_irela (const Elf64_Rela *reloc)
+@@ -35,7 +42,7 @@ elf_irela (const Elf64_Rela *reloc)
+ 
+   if (__builtin_expect (r_type == R_X86_64_IRELATIVE, 1))
+     {
+-      Elf64_Addr value = ((Elf64_Addr (*) (void)) reloc->r_addend) ();
++      Elf64_Addr value = elf_ifunc_invoke(reloc->r_addend);
+       *reloc_addr = value;
+     }
+   else
+diff --git a/ports/sysdeps/arm/dl-irel.h b/ports/sysdeps/arm/dl-irel.h
+index 735e0a3..ab33ef8 100644
+--- a/ports/sysdeps/arm/dl-irel.h
++++ b/ports/sysdeps/arm/dl-irel.h
+@@ -26,6 +26,13 @@
+ 
+ #define ELF_MACHINE_IREL	1
+ 
++static inline Elf32_Addr
++__attribute ((always_inline))
++elf_ifunc_invoke (Elf32_Addr addr)
++{
++  return ((Elf32_Addr (*) (void)) (addr)) ();
++}
++
+ static inline void
+ __attribute ((always_inline))
+ elf_irel (const Elf32_Rel *reloc)
+@@ -35,7 +42,7 @@ elf_irel (const Elf32_Rel *reloc)
+ 
+   if (__builtin_expect (r_type == R_ARM_IRELATIVE, 1))
+     {
+-      Elf32_Addr value = ((Elf32_Addr (*) (void)) (*reloc_addr)) ();
++      Elf32_Addr value = elf_ifunc_invoke (*reloc_addr);
+       *reloc_addr = value;
+     }
+   else

Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series	2011-06-26 21:08:25 UTC (rev 4749)
+++ glibc-package/trunk/debian/patches/series	2011-06-27 05:00:37 UTC (rev 4750)
@@ -175,8 +175,7 @@
 sparc/local-sparcv9-target.diff
 sparc/submitted-timing.diff
 sparc/submitted-bzero.diff
-sparc/cvs-ifunc1.diff
-sparc/submitted-ifunc2.diff
+sparc/cvs-ifunc.diff
 
 all/local-alias-UTF-8.diff
 all/local-alias-et_EE.diff
@@ -268,3 +267,4 @@
 any/cvs-addmntent.diff
 any/cvs-resolv-different-nameserver.diff
 any/cvs-fnmatch.diff
+any/cvs-ifunc.diff

Copied: glibc-package/trunk/debian/patches/sparc/cvs-ifunc.diff (from rev 4743, glibc-package/trunk/debian/patches/sparc/cvs-ifunc1.diff)
===================================================================
--- glibc-package/trunk/debian/patches/sparc/cvs-ifunc.diff	                        (rev 0)
+++ glibc-package/trunk/debian/patches/sparc/cvs-ifunc.diff	2011-06-27 05:00:37 UTC (rev 4750)
@@ -0,0 +1,240 @@
+2011-06-07  David S. Miller  <davem@davemloft.net>
+
+	* sysdeps/sparc/sparc32/dl-irel.h (elf_irela): Pass dl_hwcap to
+	ifuncs.
+	* sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela,
+	elf_machine_lazy_rel): Likewise.
+	* sysdeps/sparc/sparc64/dl-irel.h (elf_irela): Likewise.
+	* sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela,
+	elf_machine_lazy_rel): Likewise.
+	* sysdeps/sparc/sparc64/multiarch/memcpy.S (memcpy): Fetch
+	dl_hwcap via passed in argument.
+	* sysdeps/sparc/sparc64/multiarch/memset.S (memset, bzero):
+	Likewise.
+ 
+diff --git a/sysdeps/sparc/sparc32/dl-irel.h b/sysdeps/sparc/sparc32/dl-irel.h
+index 1891938..2753fb4 100644
+--- a/sysdeps/sparc/sparc32/dl-irel.h
++++ b/sysdeps/sparc/sparc32/dl-irel.h
+@@ -24,6 +24,7 @@
+ #include <stdio.h>
+ #include <unistd.h>
+ #include <dl-plt.h>
++#include <ldsodefs.h>
+ 
+ #define ELF_MACHINE_IRELA	1
+ 
+@@ -36,13 +37,13 @@ elf_irela (const Elf32_Rela *reloc)
+   if (__builtin_expect (r_type == R_SPARC_IRELATIVE, 1))
+     {
+       Elf32_Addr *const reloc_addr = (void *) reloc->r_offset;
+-      Elf32_Addr value = ((Elf32_Addr (*) (void)) reloc->r_addend) ();
++      Elf32_Addr value = ((Elf32_Addr (*) (int)) reloc->r_addend) (GLRO(dl_hwcap));
+       *reloc_addr = value;
+     }
+   else if (__builtin_expect (r_type == R_SPARC_JMP_IREL, 1))
+     {
+       Elf32_Addr *const reloc_addr = (void *) reloc->r_offset;
+-      Elf32_Addr value = ((Elf32_Addr (*) (void)) reloc->r_addend) ();
++      Elf32_Addr value = ((Elf32_Addr (*) (int)) reloc->r_addend) (GLRO(dl_hwcap));
+ 
+       sparc_fixup_plt (reloc, reloc_addr, value, 0, 1);
+     }
+diff --git a/sysdeps/sparc/sparc32/dl-machine.h b/sysdeps/sparc/sparc32/dl-machine.h
+index 9631db3..f8e8fe4 100644
+--- a/sysdeps/sparc/sparc32/dl-machine.h
++++ b/sysdeps/sparc/sparc32/dl-machine.h
+@@ -399,7 +399,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))
+     {
+-      value = ((Elf32_Addr (*) (void)) value) ();
++      value = ((Elf32_Addr (*) (int)) value) (GLRO(dl_hwcap));
+     }
+ 
+   switch (r_type)
+@@ -430,11 +430,11 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
+       *reloc_addr = value;
+       break;
+     case R_SPARC_IRELATIVE:
+-      value = ((Elf32_Addr (*) (void)) value) ();
++      value = ((Elf32_Addr (*) (int)) value) (GLRO(dl_hwcap));
+       *reloc_addr = value;
+       break;
+     case R_SPARC_JMP_IREL:
+-      value = ((Elf32_Addr (*) (void)) value) ();
++      value = ((Elf32_Addr (*) (int)) value) (GLRO(dl_hwcap));
+       /* Fall thru */
+     case R_SPARC_JMP_SLOT:
+       {
+@@ -562,7 +562,7 @@ elf_machine_lazy_rel (struct link_map *map,
+   else if (r_type == R_SPARC_JMP_IREL)
+     {
+       Elf32_Addr value = map->l_addr + reloc->r_addend;
+-      value = ((Elf32_Addr (*) (void)) value) ();
++      value = ((Elf32_Addr (*) (int)) value) (GLRO(dl_hwcap));
+       sparc_fixup_plt (reloc, reloc_addr, value, 1, 1);
+     }
+   else if (r_type == R_SPARC_NONE)
+diff --git a/sysdeps/sparc/sparc64/dl-irel.h b/sysdeps/sparc/sparc64/dl-irel.h
+index 1a2a0a3..0d70e2a 100644
+--- a/sysdeps/sparc/sparc64/dl-irel.h
++++ b/sysdeps/sparc/sparc64/dl-irel.h
+@@ -24,6 +24,7 @@
+ #include <stdio.h>
+ #include <unistd.h>
+ #include <dl-plt.h>
++#include <ldsodefs.h>
+ 
+ #define ELF_MACHINE_IRELA	1
+ 
+@@ -36,13 +37,13 @@ elf_irela (const Elf64_Rela *reloc)
+   if (__builtin_expect (r_type == R_SPARC_IRELATIVE, 1))
+     {
+       Elf64_Addr *const reloc_addr = (void *) reloc->r_offset;
+-      Elf64_Addr value = ((Elf64_Addr (*) (void)) reloc->r_addend) ();
++      Elf64_Addr value = ((Elf64_Addr (*) (int)) reloc->r_addend) (GLRO(dl_hwcap));
+       *reloc_addr = value;
+     }
+   else if (__builtin_expect (r_type == R_SPARC_JMP_IREL, 1))
+     {
+       Elf64_Addr *const reloc_addr = (void *) reloc->r_offset;
+-      Elf64_Addr value = ((Elf64_Addr (*) (void)) reloc->r_addend) ();
++      Elf64_Addr value = ((Elf64_Addr (*) (int)) reloc->r_addend) (GLRO(dl_hwcap));
+       struct link_map map = { .l_addr = 0 };
+ 
+       /* 'high' is always zero, for large PLT entries the linker
+diff --git a/sysdeps/sparc/sparc64/dl-machine.h b/sysdeps/sparc/sparc64/dl-machine.h
+index 82ab5a4..aaa22d6 100644
+--- a/sysdeps/sparc/sparc64/dl-machine.h
++++ b/sysdeps/sparc/sparc64/dl-machine.h
+@@ -430,7 +430,7 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
+   if (sym != NULL
+       && __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0)
+       && __builtin_expect (sym->st_shndx != SHN_UNDEF, 1))
+-    value = ((Elf64_Addr (*) (void)) value) ();
++    value = ((Elf64_Addr (*) (int)) value) (GLRO(dl_hwcap));
+ 
+   switch (r_type)
+     {
+@@ -460,11 +460,11 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
+       *reloc_addr = value;
+       break;
+     case R_SPARC_IRELATIVE:
+-      value = ((Elf64_Addr (*) (void)) value) ();
++      value = ((Elf64_Addr (*) (int)) value) (GLRO(dl_hwcap));
+       *reloc_addr = value;
+       break;
+     case R_SPARC_JMP_IREL:
+-      value = ((Elf64_Addr (*) (void)) value) ();
++      value = ((Elf64_Addr (*) (int)) value) (GLRO(dl_hwcap));
+       /* Fall thru */
+     case R_SPARC_JMP_SLOT:
+ #ifdef RESOLVE_CONFLICT_FIND_MAP
+@@ -658,7 +658,7 @@ elf_machine_lazy_rel (struct link_map *map,
+ 	   || r_type == R_SPARC_IRELATIVE)
+     {
+       Elf64_Addr value = map->l_addr + reloc->r_addend;
+-      value = ((Elf64_Addr (*) (void)) value) ();
++      value = ((Elf64_Addr (*) (int)) value) (GLRO(dl_hwcap));
+       if (r_type == R_SPARC_JMP_IREL)
+ 	{
+ 	  /* 'high' is always zero, for large PLT entries the linker
+diff --git a/sysdeps/sparc/sparc64/multiarch/memcpy.S b/sysdeps/sparc/sparc64/multiarch/memcpy.S
+index a708de1..c12dc3b 100644
+--- a/sysdeps/sparc/sparc64/multiarch/memcpy.S
++++ b/sysdeps/sparc/sparc64/multiarch/memcpy.S
+@@ -32,26 +32,10 @@ ENTRY(memcpy)
+ 	 or	%o3, %lo(_GLOBAL_OFFSET_TABLE_+4), %o3
+ 1:	add	%o7, %o3, %o3
+ 	mov	%o5, %o7
+-	sethi	%hi(_rtld_global_ro), %o2
+-	or	%o2, %lo(_rtld_global_ro), %o2
+-#  ifdef __arch64__
+-	ldx	[%o3 + %o2], %o2
+-	ldx	[%o2 + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET], %o2
+-#  else
+-	ld	[%o3 + %o2], %o2
+-	ld	[%o2 + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET + 4], %o2
+-#  endif
+-# else
+-	set	_dl_hwcap, %o3
+-#  ifdef __arch64__
+-	ldx	[%o3], %o2
+-#  else
+-	ld	[%o3 + 4], %o2
+-#  endif
+ # endif
+-	andcc	%o2, 0x80, %g0	! HWCAP_SPARC_N2
++	andcc	%o0, 0x80, %g0	! HWCAP_SPARC_N2
+ 	be	1f
+-	 andcc	%o2, 0x40, %g0	! HWCAP_SPARC_BLKINIT
++	 andcc	%o0, 0x40, %g0	! HWCAP_SPARC_BLKINIT
+ # ifdef SHARED
+ 	sethi	%gdop_hix22(__memcpy_niagara2), %o1
+ 	xor	%o1, %gdop_lox10(__memcpy_niagara2), %o1
+@@ -61,7 +45,7 @@ ENTRY(memcpy)
+ 	ba	10f
+ 	 nop
+ 1:	be	1f
+-	 andcc	%o2, 0x20, %g0	! HWCAP_SPARC_ULTRA3
++	 andcc	%o0, 0x20, %g0	! HWCAP_SPARC_ULTRA3
+ # ifdef SHARED
+ 	sethi	%gdop_hix22(__memcpy_niagara1), %o1
+ 	xor	%o1, %gdop_lox10(__memcpy_niagara1), %o1
+diff --git a/sysdeps/sparc/sparc64/multiarch/memset.S b/sysdeps/sparc/sparc64/multiarch/memset.S
+index befd7ed..2e27448 100644
+--- a/sysdeps/sparc/sparc64/multiarch/memset.S
++++ b/sysdeps/sparc/sparc64/multiarch/memset.S
+@@ -32,24 +32,8 @@ ENTRY(memset)
+ 	 or	%o3, %lo(_GLOBAL_OFFSET_TABLE_+4), %o3
+ 1:	add	%o7, %o3, %o3
+ 	mov	%o5, %o7
+-	sethi	%hi(_rtld_global_ro), %o2
+-	or	%o2, %lo(_rtld_global_ro), %o2
+-#  ifdef __arch64__
+-	ldx	[%o3 + %o2], %o2
+-	ldx	[%o2 + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET], %o2
+-#  else
+-	ld	[%o3 + %o2], %o2
+-	ld	[%o2 + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET + 4], %o2
+-#  endif
+-# else
+-	set	_dl_hwcap, %o3
+-#  ifdef __arch64__
+-	ldx	[%o3], %o2
+-#  else
+-	ld	[%o3 + 4], %o2
+-#  endif
+ # endif
+-	andcc	%o2, 0x40, %g0	! HWCAP_SPARC_BLKINIT
++	andcc	%o0, 0x40, %g0	! HWCAP_SPARC_BLKINIT
+ 	be	9f
+ 	 nop
+ # ifdef SHARED
+@@ -84,24 +68,8 @@ ENTRY(__bzero)
+ 	 or	%o3, %lo(_GLOBAL_OFFSET_TABLE_+4), %o3
+ 1:	add	%o7, %o3, %o3
+ 	mov	%o5, %o7
+-	sethi	%hi(_rtld_global_ro), %o2
+-	or	%o2, %lo(_rtld_global_ro), %o2
+-#  ifdef __arch64__
+-	ldx	[%o3 + %o2], %o2
+-	ldx	[%o2 + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET], %o2
+-#  else
+-	ld	[%o3 + %o2], %o2
+-	ld	[%o2 + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET + 4], %o2
+-#  endif
+-# else
+-	set	_dl_hwcap, %o3
+-#  ifdef __arch64__
+-	ldx	[%o3], %o2
+-#  else
+-	ld	[%o3 + 4], %o2
+-#  endif
+ # endif
+-	andcc	%o2, 0x40, %g0	! HWCAP_SPARC_BLKINIT
++	andcc	%o0, 0x40, %g0	! HWCAP_SPARC_BLKINIT
+ 	be	9f
+ 	 nop
+ # ifdef SHARED

Deleted: glibc-package/trunk/debian/patches/sparc/cvs-ifunc1.diff
===================================================================
--- glibc-package/trunk/debian/patches/sparc/cvs-ifunc1.diff	2011-06-26 21:08:25 UTC (rev 4749)
+++ glibc-package/trunk/debian/patches/sparc/cvs-ifunc1.diff	2011-06-27 05:00:37 UTC (rev 4750)
@@ -1,240 +0,0 @@
-2011-06-07  David S. Miller  <davem@davemloft.net>
-
-	* sysdeps/sparc/sparc32/dl-irel.h (elf_irela): Pass dl_hwcap to
-	ifuncs.
-	* sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela,
-	elf_machine_lazy_rel): Likewise.
-	* sysdeps/sparc/sparc64/dl-irel.h (elf_irela): Likewise.
-	* sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela,
-	elf_machine_lazy_rel): Likewise.
-	* sysdeps/sparc/sparc64/multiarch/memcpy.S (memcpy): Fetch
-	dl_hwcap via passed in argument.
-	* sysdeps/sparc/sparc64/multiarch/memset.S (memset, bzero):
-	Likewise.
- 
-diff --git a/sysdeps/sparc/sparc32/dl-irel.h b/sysdeps/sparc/sparc32/dl-irel.h
-index 1891938..2753fb4 100644
---- a/sysdeps/sparc/sparc32/dl-irel.h
-+++ b/sysdeps/sparc/sparc32/dl-irel.h
-@@ -24,6 +24,7 @@
- #include <stdio.h>
- #include <unistd.h>
- #include <dl-plt.h>
-+#include <ldsodefs.h>
- 
- #define ELF_MACHINE_IRELA	1
- 
-@@ -36,13 +37,13 @@ elf_irela (const Elf32_Rela *reloc)
-   if (__builtin_expect (r_type == R_SPARC_IRELATIVE, 1))
-     {
-       Elf32_Addr *const reloc_addr = (void *) reloc->r_offset;
--      Elf32_Addr value = ((Elf32_Addr (*) (void)) reloc->r_addend) ();
-+      Elf32_Addr value = ((Elf32_Addr (*) (int)) reloc->r_addend) (GLRO(dl_hwcap));
-       *reloc_addr = value;
-     }
-   else if (__builtin_expect (r_type == R_SPARC_JMP_IREL, 1))
-     {
-       Elf32_Addr *const reloc_addr = (void *) reloc->r_offset;
--      Elf32_Addr value = ((Elf32_Addr (*) (void)) reloc->r_addend) ();
-+      Elf32_Addr value = ((Elf32_Addr (*) (int)) reloc->r_addend) (GLRO(dl_hwcap));
- 
-       sparc_fixup_plt (reloc, reloc_addr, value, 0, 1);
-     }
-diff --git a/sysdeps/sparc/sparc32/dl-machine.h b/sysdeps/sparc/sparc32/dl-machine.h
-index 9631db3..f8e8fe4 100644
---- a/sysdeps/sparc/sparc32/dl-machine.h
-+++ b/sysdeps/sparc/sparc32/dl-machine.h
-@@ -399,7 +399,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))
-     {
--      value = ((Elf32_Addr (*) (void)) value) ();
-+      value = ((Elf32_Addr (*) (int)) value) (GLRO(dl_hwcap));
-     }
- 
-   switch (r_type)
-@@ -430,11 +430,11 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
-       *reloc_addr = value;
-       break;
-     case R_SPARC_IRELATIVE:
--      value = ((Elf32_Addr (*) (void)) value) ();
-+      value = ((Elf32_Addr (*) (int)) value) (GLRO(dl_hwcap));
-       *reloc_addr = value;
-       break;
-     case R_SPARC_JMP_IREL:
--      value = ((Elf32_Addr (*) (void)) value) ();
-+      value = ((Elf32_Addr (*) (int)) value) (GLRO(dl_hwcap));
-       /* Fall thru */
-     case R_SPARC_JMP_SLOT:
-       {
-@@ -562,7 +562,7 @@ elf_machine_lazy_rel (struct link_map *map,
-   else if (r_type == R_SPARC_JMP_IREL)
-     {
-       Elf32_Addr value = map->l_addr + reloc->r_addend;
--      value = ((Elf32_Addr (*) (void)) value) ();
-+      value = ((Elf32_Addr (*) (int)) value) (GLRO(dl_hwcap));
-       sparc_fixup_plt (reloc, reloc_addr, value, 1, 1);
-     }
-   else if (r_type == R_SPARC_NONE)
-diff --git a/sysdeps/sparc/sparc64/dl-irel.h b/sysdeps/sparc/sparc64/dl-irel.h
-index 1a2a0a3..0d70e2a 100644
---- a/sysdeps/sparc/sparc64/dl-irel.h
-+++ b/sysdeps/sparc/sparc64/dl-irel.h
-@@ -24,6 +24,7 @@
- #include <stdio.h>
- #include <unistd.h>
- #include <dl-plt.h>
-+#include <ldsodefs.h>
- 
- #define ELF_MACHINE_IRELA	1
- 
-@@ -36,13 +37,13 @@ elf_irela (const Elf64_Rela *reloc)
-   if (__builtin_expect (r_type == R_SPARC_IRELATIVE, 1))
-     {
-       Elf64_Addr *const reloc_addr = (void *) reloc->r_offset;
--      Elf64_Addr value = ((Elf64_Addr (*) (void)) reloc->r_addend) ();
-+      Elf64_Addr value = ((Elf64_Addr (*) (int)) reloc->r_addend) (GLRO(dl_hwcap));
-       *reloc_addr = value;
-     }
-   else if (__builtin_expect (r_type == R_SPARC_JMP_IREL, 1))
-     {
-       Elf64_Addr *const reloc_addr = (void *) reloc->r_offset;
--      Elf64_Addr value = ((Elf64_Addr (*) (void)) reloc->r_addend) ();
-+      Elf64_Addr value = ((Elf64_Addr (*) (int)) reloc->r_addend) (GLRO(dl_hwcap));
-       struct link_map map = { .l_addr = 0 };
- 
-       /* 'high' is always zero, for large PLT entries the linker
-diff --git a/sysdeps/sparc/sparc64/dl-machine.h b/sysdeps/sparc/sparc64/dl-machine.h
-index 82ab5a4..aaa22d6 100644
---- a/sysdeps/sparc/sparc64/dl-machine.h
-+++ b/sysdeps/sparc/sparc64/dl-machine.h
-@@ -430,7 +430,7 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
-   if (sym != NULL
-       && __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0)
-       && __builtin_expect (sym->st_shndx != SHN_UNDEF, 1))
--    value = ((Elf64_Addr (*) (void)) value) ();
-+    value = ((Elf64_Addr (*) (int)) value) (GLRO(dl_hwcap));
- 
-   switch (r_type)
-     {
-@@ -460,11 +460,11 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
-       *reloc_addr = value;
-       break;
-     case R_SPARC_IRELATIVE:
--      value = ((Elf64_Addr (*) (void)) value) ();
-+      value = ((Elf64_Addr (*) (int)) value) (GLRO(dl_hwcap));
-       *reloc_addr = value;
-       break;
-     case R_SPARC_JMP_IREL:
--      value = ((Elf64_Addr (*) (void)) value) ();
-+      value = ((Elf64_Addr (*) (int)) value) (GLRO(dl_hwcap));
-       /* Fall thru */
-     case R_SPARC_JMP_SLOT:
- #ifdef RESOLVE_CONFLICT_FIND_MAP
-@@ -658,7 +658,7 @@ elf_machine_lazy_rel (struct link_map *map,
- 	   || r_type == R_SPARC_IRELATIVE)
-     {
-       Elf64_Addr value = map->l_addr + reloc->r_addend;
--      value = ((Elf64_Addr (*) (void)) value) ();
-+      value = ((Elf64_Addr (*) (int)) value) (GLRO(dl_hwcap));
-       if (r_type == R_SPARC_JMP_IREL)
- 	{
- 	  /* 'high' is always zero, for large PLT entries the linker
-diff --git a/sysdeps/sparc/sparc64/multiarch/memcpy.S b/sysdeps/sparc/sparc64/multiarch/memcpy.S
-index a708de1..c12dc3b 100644
---- a/sysdeps/sparc/sparc64/multiarch/memcpy.S
-+++ b/sysdeps/sparc/sparc64/multiarch/memcpy.S
-@@ -32,26 +32,10 @@ ENTRY(memcpy)
- 	 or	%o3, %lo(_GLOBAL_OFFSET_TABLE_+4), %o3
- 1:	add	%o7, %o3, %o3
- 	mov	%o5, %o7
--	sethi	%hi(_rtld_global_ro), %o2
--	or	%o2, %lo(_rtld_global_ro), %o2
--#  ifdef __arch64__
--	ldx	[%o3 + %o2], %o2
--	ldx	[%o2 + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET], %o2
--#  else
--	ld	[%o3 + %o2], %o2
--	ld	[%o2 + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET + 4], %o2
--#  endif
--# else
--	set	_dl_hwcap, %o3
--#  ifdef __arch64__
--	ldx	[%o3], %o2
--#  else
--	ld	[%o3 + 4], %o2
--#  endif
- # endif
--	andcc	%o2, 0x80, %g0	! HWCAP_SPARC_N2
-+	andcc	%o0, 0x80, %g0	! HWCAP_SPARC_N2
- 	be	1f
--	 andcc	%o2, 0x40, %g0	! HWCAP_SPARC_BLKINIT
-+	 andcc	%o0, 0x40, %g0	! HWCAP_SPARC_BLKINIT
- # ifdef SHARED
- 	sethi	%gdop_hix22(__memcpy_niagara2), %o1
- 	xor	%o1, %gdop_lox10(__memcpy_niagara2), %o1
-@@ -61,7 +45,7 @@ ENTRY(memcpy)
- 	ba	10f
- 	 nop
- 1:	be	1f
--	 andcc	%o2, 0x20, %g0	! HWCAP_SPARC_ULTRA3
-+	 andcc	%o0, 0x20, %g0	! HWCAP_SPARC_ULTRA3
- # ifdef SHARED
- 	sethi	%gdop_hix22(__memcpy_niagara1), %o1
- 	xor	%o1, %gdop_lox10(__memcpy_niagara1), %o1
-diff --git a/sysdeps/sparc/sparc64/multiarch/memset.S b/sysdeps/sparc/sparc64/multiarch/memset.S
-index befd7ed..2e27448 100644
---- a/sysdeps/sparc/sparc64/multiarch/memset.S
-+++ b/sysdeps/sparc/sparc64/multiarch/memset.S
-@@ -32,24 +32,8 @@ ENTRY(memset)
- 	 or	%o3, %lo(_GLOBAL_OFFSET_TABLE_+4), %o3
- 1:	add	%o7, %o3, %o3
- 	mov	%o5, %o7
--	sethi	%hi(_rtld_global_ro), %o2
--	or	%o2, %lo(_rtld_global_ro), %o2
--#  ifdef __arch64__
--	ldx	[%o3 + %o2], %o2
--	ldx	[%o2 + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET], %o2
--#  else
--	ld	[%o3 + %o2], %o2
--	ld	[%o2 + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET + 4], %o2
--#  endif
--# else
--	set	_dl_hwcap, %o3
--#  ifdef __arch64__
--	ldx	[%o3], %o2
--#  else
--	ld	[%o3 + 4], %o2
--#  endif
- # endif
--	andcc	%o2, 0x40, %g0	! HWCAP_SPARC_BLKINIT
-+	andcc	%o0, 0x40, %g0	! HWCAP_SPARC_BLKINIT
- 	be	9f
- 	 nop
- # ifdef SHARED
-@@ -84,24 +68,8 @@ ENTRY(__bzero)
- 	 or	%o3, %lo(_GLOBAL_OFFSET_TABLE_+4), %o3
- 1:	add	%o7, %o3, %o3
- 	mov	%o5, %o7
--	sethi	%hi(_rtld_global_ro), %o2
--	or	%o2, %lo(_rtld_global_ro), %o2
--#  ifdef __arch64__
--	ldx	[%o3 + %o2], %o2
--	ldx	[%o2 + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET], %o2
--#  else
--	ld	[%o3 + %o2], %o2
--	ld	[%o2 + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET + 4], %o2
--#  endif
--# else
--	set	_dl_hwcap, %o3
--#  ifdef __arch64__
--	ldx	[%o3], %o2
--#  else
--	ld	[%o3 + 4], %o2
--#  endif
- # endif
--	andcc	%o2, 0x40, %g0	! HWCAP_SPARC_BLKINIT
-+	andcc	%o0, 0x40, %g0	! HWCAP_SPARC_BLKINIT
- 	be	9f
- 	 nop
- # ifdef SHARED

Deleted: glibc-package/trunk/debian/patches/sparc/submitted-ifunc2.diff
===================================================================
--- glibc-package/trunk/debian/patches/sparc/submitted-ifunc2.diff	2011-06-26 21:08:25 UTC (rev 4749)
+++ glibc-package/trunk/debian/patches/sparc/submitted-ifunc2.diff	2011-06-27 05:00:37 UTC (rev 4750)
@@ -1,56 +0,0 @@
-2011-06-11  Aurelien Jarno  <aurelien@aurel32.net>
-
-	* elf/dl-runtime.c(_dl_fixup,_dl_profile_fixup): Pass dl_hwcap to 
-	ifuncs.
-	* elf/dl-sym.c(do_sym): Likewise.
-
-diff --git a/elf/dl-runtime.c b/elf/dl-runtime.c
-index b27cfbf..f48702b 100644
---- a/elf/dl-runtime.c
-+++ b/elf/dl-runtime.c
-@@ -146,7 +146,8 @@ _dl_fixup (
- 
-   if (sym != NULL
-       && __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0))
--    value = ((DL_FIXUP_VALUE_TYPE (*) (void)) DL_FIXUP_VALUE_ADDR (value)) ();
-+    value = ((DL_FIXUP_VALUE_TYPE (*) (int))
-+	     DL_FIXUP_VALUE_ADDR (value)) (GLRO(dl_hwcap));
- 
-   /* Finally, fix up the plt itself.  */
-   if (__builtin_expect (GLRO(dl_bind_not), 0))
-@@ -235,8 +236,8 @@ _dl_profile_fixup (
- 	  if (defsym != NULL
- 	      && __builtin_expect (ELFW(ST_TYPE) (defsym->st_info)
- 				   == STT_GNU_IFUNC, 0))
--	    value = ((DL_FIXUP_VALUE_TYPE (*) (void))
--		     DL_FIXUP_VALUE_ADDR (value)) ();
-+	    value = ((DL_FIXUP_VALUE_TYPE (*) (int))
-+		     DL_FIXUP_VALUE_ADDR (value)) (GLRO(dl_hwcap));
- 	}
-       else
- 	{
-@@ -246,8 +247,8 @@ _dl_profile_fixup (
- 
- 	  if (__builtin_expect (ELFW(ST_TYPE) (refsym->st_info)
- 				== STT_GNU_IFUNC, 0))
--	    value = ((DL_FIXUP_VALUE_TYPE (*) (void))
--		     DL_FIXUP_VALUE_ADDR (value)) ();
-+	    value = ((DL_FIXUP_VALUE_TYPE (*) (int))
-+		     DL_FIXUP_VALUE_ADDR (value)) (GLRO(dl_hwcap));
- 
- 	  result = l;
- 	}
-diff --git a/elf/dl-sym.c b/elf/dl-sym.c
-index 4faf05c..de6d34a 100644
---- a/elf/dl-sym.c
-+++ b/elf/dl-sym.c
-@@ -197,7 +197,8 @@ RTLD_NEXT used in code not dynamically loaded"));
- 	  DL_FIXUP_VALUE_TYPE fixup
- 	    = DL_FIXUP_MAKE_VALUE (result, (ElfW(Addr)) value);
- 	  fixup =
--	    ((DL_FIXUP_VALUE_TYPE (*) (void)) DL_FIXUP_VALUE_ADDR (fixup)) ();
-+	    ((DL_FIXUP_VALUE_TYPE (*) (int))
-+	     DL_FIXUP_VALUE_ADDR (fixup)) (GLRO(dl_hwcap));
- 	  value = (void *) DL_FIXUP_VALUE_CODE_ADDR (fixup);
- 	}
- 


Reply to: