mirror of
https://sourceware.org/git/glibc.git
synced 2024-09-19 16:10:01 +00:00
Define elf_ifunc_invoke for ARM.
This commit is contained in:
parent
6cc02c7aae
commit
5411b5632d
@ -1,3 +1,8 @@
|
|||||||
|
2011-06-21 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
|
* sysdeps/arm/dl-irel.h (elf_ifunc_invoke): New.
|
||||||
|
(elf_irel): Use it.
|
||||||
|
|
||||||
2010-06-20 Joseph Myers <joseph@codesourcery.com>
|
2010-06-20 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/arm/eabi/internal_sendmmsg.S: New.
|
* sysdeps/unix/sysv/linux/arm/eabi/internal_sendmmsg.S: New.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* Machine-dependent ELF indirect relocation inline functions.
|
/* Machine-dependent ELF indirect relocation inline functions.
|
||||||
ARM version.
|
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.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -26,6 +26,13 @@
|
|||||||
|
|
||||||
#define ELF_MACHINE_IREL 1
|
#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
|
static inline void
|
||||||
__attribute ((always_inline))
|
__attribute ((always_inline))
|
||||||
elf_irel (const Elf32_Rel *reloc)
|
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))
|
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;
|
*reloc_addr = value;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user