diff options
author | Andreas Schwab <schwab@redhat.com> | 2011-10-04 16:10:16 +0200 |
---|---|---|
committer | Andreas Schwab <schwab@redhat.com> | 2011-10-05 14:35:40 +0200 |
commit | 3a62d00d408e9ec19479b6c7d39e89021061f9cd (patch) | |
tree | 6f2c708cb3da2fe6d0cbcddfe096cc7e7a8051ba /elf/do-rel.h | |
parent | 68577918437e2ccfd6bd2836892f59ef42994963 (diff) | |
download | glibc-3a62d00d408e9ec19479b6c7d39e89021061f9cd.zip glibc-3a62d00d408e9ec19479b6c7d39e89021061f9cd.tar.gz glibc-3a62d00d408e9ec19479b6c7d39e89021061f9cd.tar.bz2 |
Don't call ifunc functions in trace mode
Diffstat (limited to 'elf/do-rel.h')
-rw-r--r-- | elf/do-rel.h | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/elf/do-rel.h b/elf/do-rel.h index 990b961..6187b9e 100644 --- a/elf/do-rel.h +++ b/elf/do-rel.h @@ -1,5 +1,5 @@ /* Do relocations for ELF dynamic linking. - Copyright (C) 1995-2003, 2004 Free Software Foundation, Inc. + Copyright (C) 1995-2003, 2004, 2011 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -52,7 +52,7 @@ auto inline void __attribute__ ((always_inline)) elf_dynamic_do_rel (struct link_map *map, ElfW(Addr) reladdr, ElfW(Addr) relsize, - int lazy) + int lazy, int skip_ifunc) { const ElfW(Rel) *r = (const void *) reladdr; const ElfW(Rel) *end = (const void *) (reladdr + relsize); @@ -66,7 +66,7 @@ elf_dynamic_do_rel (struct link_map *map, { /* Doing lazy PLT relocations; they need very little info. */ for (; r < end; ++r) - elf_machine_lazy_rel (map, l_addr, r); + elf_machine_lazy_rel (map, l_addr, r, skip_ifunc); } else #endif @@ -119,14 +119,14 @@ elf_dynamic_do_rel (struct link_map *map, ElfW(Half) ndx = version[ELFW(R_SYM) (r->r_info)] & 0x7fff; elf_machine_rel (map, r, &symtab[ELFW(R_SYM) (r->r_info)], &map->l_versions[ndx], - (void *) (l_addr + r->r_offset)); + (void *) (l_addr + r->r_offset), skip_ifunc); } } #ifndef RTLD_BOOTSTRAP else for (; r < end; ++r) elf_machine_rel (map, r, &symtab[ELFW(R_SYM) (r->r_info)], NULL, - (void *) (l_addr + r->r_offset)); + (void *) (l_addr + r->r_offset), skip_ifunc); #endif } } |