From: Ulrich Drepper Date: Mon, 27 Apr 2009 03:01:36 +0000 (+0000) Subject: [BZ #10087] X-Git-Tag: cvs/fedora-glibc-20090427T1419~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e49dc847d2059e96949ce9ad0b3338c7337eaec9;p=thirdparty%2Fglibc.git [BZ #10087] * elf/dl-runtime.c (_dl_fixup): Use DL_FIXUP_VALUE_ADDR to access result of lookup to make call to implement STT_GNU_IFUNC. (_dl_profile_fixup): Likewise. Patch by H.J. Lu . --- diff --git a/ChangeLog b/ChangeLog index 8419b29a440..eb561bd7de2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2009-04-26 Ulrich Drepper + [BZ #10087] + * elf/dl-runtime.c (_dl_fixup): Use DL_FIXUP_VALUE_ADDR to access + result of lookup to make call to implement STT_GNU_IFUNC. + (_dl_profile_fixup): Likewise. + Patch by H.J. Lu . + * nscd/connections.c (send_ro_fd): Define temporary variable to avoid warning. diff --git a/elf/dl-runtime.c b/elf/dl-runtime.c index 93c8f29d39a..0eb7d4e3b97 100644 --- a/elf/dl-runtime.c +++ b/elf/dl-runtime.c @@ -137,7 +137,7 @@ _dl_fixup ( value = elf_machine_plt_value (l, reloc, value); if (__builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0)) - value = ((DL_FIXUP_VALUE_TYPE (*) (void)) value) (); + value = ((DL_FIXUP_VALUE_TYPE (*) (void)) DL_FIXUP_VALUE_ADDR (value)) (); /* Finally, fix up the plt itself. */ if (__builtin_expect (GLRO(dl_bind_not), 0)) @@ -225,7 +225,8 @@ _dl_profile_fixup ( if (__builtin_expect (ELFW(ST_TYPE) (defsym->st_info) == STT_GNU_IFUNC, 0)) - value = ((DL_FIXUP_VALUE_TYPE (*) (void)) value) (); + value = ((DL_FIXUP_VALUE_TYPE (*) (void)) + DL_FIXUP_VALUE_ADDR (value)) (); } else { @@ -235,7 +236,8 @@ _dl_profile_fixup ( if (__builtin_expect (ELFW(ST_TYPE) (refsym->st_info) == STT_GNU_IFUNC, 0)) - value = ((DL_FIXUP_VALUE_TYPE (*) (void)) value) (); + value = ((DL_FIXUP_VALUE_TYPE (*) (void)) + DL_FIXUP_VALUE_ADDR (value)) (); result = l; }