mips: don't call ifunc functions in trace mode

This commit is contained in:
Andreas Schwab 2011-10-05 11:53:16 +02:00
parent 5c3bd23521
commit 9a7e10917d
2 changed files with 15 additions and 9 deletions

View File

@ -1,3 +1,8 @@
2011-10-05 Andreas Schwab <schwab@redhat.com>
* sysdeps/mips/dl-machine.h (elf_machine_rel, elf_machine_rela)
(elf_machine_lazy_rel): Add parameter skip_ifunc.
2011-09-13 Joseph Myers <joseph@codesourcery.com>
* sysdeps/unix/sysv/linux/mips/bits/socket.h (__cmsg_nxthdr): Cast
@ -389,7 +394,7 @@
Update comment.
* sysdeps/unix/sysv/linux/mips/kernel_rt_sigframe.h: New file.
* sysdeps/unix/sysv/linux/mips/ucontext_i.sym: New file.
* sysdeps/unix/sysv/linux/mips/Makefile (gen-as-const-headers):
* sysdeps/unix/sysv/linux/mips/Makefile (gen-as-const-headers):
Add ucontext_i.sym.
2009-04-18 Joseph Myers <joseph@codesourcery.com>
@ -594,7 +599,7 @@
2008-04-02 Aurelien Jarno <aurelien@aurel32.net>
* sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list: Add
* sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list: Add
truncate and ftruncate systems calls.
* sysdeps/unix/sysv/linux/mips/mips64/n32/ftruncate64.c: Make an
empty file.
@ -980,7 +985,7 @@
(lll_robust_mutex_dead, lll_robust_mutex_trylock, lll_robust_mutex_lock,
lll_robust_mutex_cond_lock, lll_robust_mutex_timedlock,
lll_robust_mutex_unlock): New macros.
(__lll_robust_lock_wait, __lll_robust_timedlock_wait): New prototypes.
(__lll_robust_lock_wait, __lll_robust_timedlock_wait): New prototypes.
* sysdeps/unix/sysv/linux/mips/nptl/pt-vfork.S: Use correct path to
vfork.S.
* sysdeps/unix/sysv/linux/mips/nptl/vfork.S: Likewise.

View File

@ -528,7 +528,7 @@ elf_machine_reloc (struct link_map *map, ElfW(Addr) r_info,
strtab + refsym->st_name);
}
memcpy (reloc_addr, (void *) value,
MIN (sym->st_size, refsym->st_size));
MIN (sym->st_size, refsym->st_size));
break;
}
@ -559,7 +559,7 @@ auto inline void
__attribute__ ((always_inline))
elf_machine_rel (struct link_map *map, const ElfW(Rel) *reloc,
const ElfW(Sym) *sym, const struct r_found_version *version,
void *const reloc_addr)
void *const reloc_addr, int skip_ifunc)
{
elf_machine_reloc (map, reloc->r_info, sym, version, reloc_addr, 0, 1);
}
@ -575,7 +575,8 @@ elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc,
auto inline void
__attribute__((always_inline))
elf_machine_lazy_rel (struct link_map *map,
ElfW(Addr) l_addr, const ElfW(Rel) *reloc)
ElfW(Addr) l_addr, const ElfW(Rel) *reloc,
int skip_ifunc)
{
ElfW(Addr) *const reloc_addr = (void *) (l_addr + reloc->r_offset);
const unsigned int r_type = ELFW(R_TYPE) (reloc->r_info);
@ -598,7 +599,7 @@ auto inline void
__attribute__ ((always_inline))
elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc,
const ElfW(Sym) *sym, const struct r_found_version *version,
void *const reloc_addr)
void *const reloc_addr, int skip_ifunc)
{
elf_machine_reloc (map, reloc->r_info, sym, version, reloc_addr,
reloc->r_addend, 0);
@ -626,7 +627,7 @@ elf_machine_got_rel (struct link_map *map, int lazy)
({ \
const ElfW(Sym) *ref = sym; \
const struct r_found_version *version \
= vernum ? &map->l_versions[vernum[sym_index] & 0x7fff] : NULL; \
= vernum ? &map->l_versions[vernum[sym_index] & 0x7fff] : NULL; \
struct link_map *sym_map; \
sym_map = RESOLVE_MAP (&ref, version, reloc); \
ref ? sym_map->l_addr + ref->st_value : 0; \
@ -648,7 +649,7 @@ elf_machine_got_rel (struct link_map *map, int lazy)
i = (got[1] & ELF_MIPS_GNU_GOT1_MASK)? 2 : 1;
/* Add the run-time displacement to all local got entries if
needed. */
needed. */
if (__builtin_expect (map->l_addr != 0, 0))
{
while (i < n)