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

[commits] r14271 - in /fsf/trunk/ports: ChangeLog.arm sysdeps/arm/dl-irel.h



Author: eglibc
Date: Tue Jun 21 07:43:16 2011
New Revision: 14271

Log:
Import glibc-ports-mainline for 2011-06-21

Modified:
    fsf/trunk/ports/ChangeLog.arm
    fsf/trunk/ports/sysdeps/arm/dl-irel.h

Modified: fsf/trunk/ports/ChangeLog.arm
==============================================================================
--- fsf/trunk/ports/ChangeLog.arm (original)
+++ fsf/trunk/ports/ChangeLog.arm Tue Jun 21 07:43:16 2011
@@ -1,3 +1,8 @@
+2011-06-21  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/arm/dl-irel.h (elf_ifunc_invoke): New.
+	(elf_irel): Use it.
+
 2010-06-20  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	* sysdeps/unix/sysv/linux/arm/eabi/internal_sendmmsg.S: New.

Modified: fsf/trunk/ports/sysdeps/arm/dl-irel.h
==============================================================================
--- fsf/trunk/ports/sysdeps/arm/dl-irel.h (original)
+++ fsf/trunk/ports/sysdeps/arm/dl-irel.h Tue Jun 21 07:43:16 2011
@@ -1,6 +1,6 @@
 /* Machine-dependent ELF indirect relocation inline functions.
    ARM version.
-   Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+   Copyright (C) 2009, 2010, 2011 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
@@ -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 @@
 
   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