aboutsummaryrefslogtreecommitdiff
path: root/elf/dl-runtime.c
diff options
context:
space:
mode:
Diffstat (limited to 'elf/dl-runtime.c')
-rw-r--r--elf/dl-runtime.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/elf/dl-runtime.c b/elf/dl-runtime.c
index b27cfbf204..8778e67f7c 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;
}