From 736d0841e4aeee3013893e0aa095802f2c1de0d8 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Tue, 4 Apr 2000 23:23:40 +0000 Subject: Update. * elf/dl-runtime.c (fixup): Correct handling of symbols marked STV_HIDDEN and STV_INTERNAL during lookup. (profile_fixup): Likewise. * elf/dl-reloc.c (RESOLVE): Likewise. --- ChangeLog | 5 +++++ elf/dl-reloc.c | 4 ++-- elf/dl-runtime.c | 8 ++++---- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index de1cb9d685..52ad654eac 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2000-04-04 Ulrich Drepper + * elf/dl-runtime.c (fixup): Correct handling of symbols marked + STV_HIDDEN and STV_INTERNAL during lookup. + (profile_fixup): Likewise. + * elf/dl-reloc.c (RESOLVE): Likewise. + * iconv/skeleton.c (FUNCTION_NAME): Reorder initialization of unaligned so that it compiles for system which need unaligned access handling. diff --git a/elf/dl-reloc.c b/elf/dl-reloc.c index 8d180732d6..fa8e31b22c 100644 --- a/elf/dl-reloc.c +++ b/elf/dl-reloc.c @@ -71,7 +71,7 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[], /* This macro is used as a callback from the ELF_DYNAMIC_RELOCATE code. */ #define RESOLVE(ref, version, flags) \ - (ELFW(ST_VISIBILITY) ((*ref)->st_other) != STV_PROTECTED \ + (__builtin_expect (ELFW(ST_VISIBILITY) ((*ref)->st_other), 0) == 0 \ ? ((version) != NULL && (version)->hash != 0 \ ? _dl_lookup_versioned_symbol (strtab + (*ref)->st_name, l, (ref), \ scope, (version), (flags)) \ @@ -134,7 +134,7 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[], #ifdef CLEAR_CACHE CLEAR_CACHE (mapstart, mapend); -#endif +#endif } } } diff --git a/elf/dl-runtime.c b/elf/dl-runtime.c index ab944a80e9..d76b513a27 100644 --- a/elf/dl-runtime.c +++ b/elf/dl-runtime.c @@ -68,9 +68,9 @@ fixup ( /* Sanity check that we're really looking at a PLT relocation. */ assert (ELFW(R_TYPE)(reloc->r_info) == ELF_MACHINE_JMP_SLOT); - /* Look up the target symbol. If the symbol is marked STV_PROTECTED - don't look in the global scope. */ - if (ELFW(ST_VISIBILITY) (sym->st_other) != STV_PROTECTED) + /* Look up the target symbol. If the normal lookup rules are not + used don't look in the global scope. */ + if (__builtin_expect (ELFW(ST_VISIBILITY) (sym->st_other), 0) == 0) { switch (l->l_info[VERSYMIDX (DT_VERSYM)] != NULL) { @@ -153,7 +153,7 @@ profile_fixup ( /* Look up the target symbol. If the symbol is marked STV_PROTEXTED don't look in the global scope. */ - if (ELFW(ST_VISIBILITY) (sym->st_other) != STV_PROTECTED) + if (__builtin_expect (ELFW(ST_VISIBILITY) (sym->st_other), 0) == 0) { switch (l->l_info[VERSYMIDX (DT_VERSYM)] != NULL) { -- cgit 1.4.1