Update.
authorUlrich Drepper <drepper@redhat.com>
Tue, 4 Apr 2000 23:23:40 +0000 (23:23 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 4 Apr 2000 23:23:40 +0000 (23:23 +0000)
* 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
elf/dl-reloc.c
elf/dl-runtime.c

index de1cb9d..52ad654 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2000-04-04  Ulrich Drepper  <drepper@redhat.com>
 
+       * 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.
index 8d18073..fa8e31b 100644 (file)
@@ -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
          }
     }
 }
index ab944a8..d76b513 100644 (file)
@@ -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)
            {