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

[commits] r9115 - in /fsf/trunk/libc: ChangeLog elf/dl-sym.c



Author: eglibc
Date: Thu Oct 22 00:04:59 2009
New Revision: 9115

Log:
Import glibc-mainline for 2009-10-22

Modified:
    fsf/trunk/libc/ChangeLog
    fsf/trunk/libc/elf/dl-sym.c

Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Thu Oct 22 00:04:59 2009
@@ -1,3 +1,7 @@
+2009-10-21  Andreas Schwab  <schwab@xxxxxxxxxx>
+
+	* elf/dl-sym.c (do_sym): Resolve STT_GNU_IFUNC symbols.
+
 2009-10-19  Andreas Schwab  <schwab@xxxxxxxxxx>
 
 	* include/math.h: Add hidden protos for __exp/__expf/__expl.

Modified: fsf/trunk/libc/elf/dl-sym.c
==============================================================================
--- fsf/trunk/libc/elf/dl-sym.c (original)
+++ fsf/trunk/libc/elf/dl-sym.c Thu Oct 22 00:04:59 2009
@@ -190,6 +190,11 @@
       else
 #endif
 	value = DL_SYMBOL_ADDRESS (result, ref);
+
+      /* Resolve indirect function address.  */
+      if (__builtin_expect (ELFW(ST_TYPE) (ref->st_info) == STT_GNU_IFUNC, 0))
+	value
+	  = ((DL_FIXUP_VALUE_TYPE (*) (void)) DL_FIXUP_VALUE_ADDR (value)) ();
 
 #ifdef SHARED
       /* Auditing checkpoint: we have a new binding.  Provide the