Update.
2003-03-25 H.J. Lu <hjl@gnu.org> * elf/dl-lookup.c (_dl_lookup_symbol): Avoid looking up protected symbols twice. (_dl_lookup_versioned_symbol): Likewise.
This commit is contained in:
parent
42374865bc
commit
697119d670
@ -1,3 +1,9 @@
|
||||
2003-03-25 H.J. Lu <hjl@gnu.org>
|
||||
|
||||
* elf/dl-lookup.c (_dl_lookup_symbol): Avoid looking up protected
|
||||
symbols twice.
|
||||
(_dl_lookup_versioned_symbol): Likewise.
|
||||
|
||||
2003-03-26 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* csu/tst-atomic.c (do_test): Add some new
|
||||
|
@ -273,17 +273,30 @@ _dl_lookup_symbol (const char *undef_name, struct link_map *undef_map,
|
||||
{
|
||||
/* It is very tricky. We need to figure out what value to
|
||||
return for the protected symbol. */
|
||||
struct sym_val protected_value = { NULL, NULL };
|
||||
|
||||
for (scope = symbol_scope; *scope; ++scope)
|
||||
if (_dl_do_lookup (undef_name, hash, *ref, &protected_value, *scope,
|
||||
0, flags, NULL, ELF_RTYPE_CLASS_PLT))
|
||||
break;
|
||||
|
||||
if (protected_value.s != NULL && protected_value.m != undef_map)
|
||||
if (type_class == ELF_RTYPE_CLASS_PLT)
|
||||
{
|
||||
current_value.s = *ref;
|
||||
current_value.m = undef_map;
|
||||
if (current_value.s != NULL && current_value.m != undef_map)
|
||||
{
|
||||
current_value.s = *ref;
|
||||
current_value.m = undef_map;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
struct sym_val protected_value = { NULL, NULL };
|
||||
|
||||
for (scope = symbol_scope; *scope; ++scope)
|
||||
if (_dl_do_lookup (undef_name, hash, *ref,
|
||||
&protected_value, *scope, 0, flags,
|
||||
NULL, ELF_RTYPE_CLASS_PLT))
|
||||
break;
|
||||
|
||||
if (protected_value.s != NULL
|
||||
&& protected_value.m != undef_map)
|
||||
{
|
||||
current_value.s = *ref;
|
||||
current_value.m = undef_map;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -465,18 +478,31 @@ _dl_lookup_versioned_symbol (const char *undef_name,
|
||||
{
|
||||
/* It is very tricky. We need to figure out what value to
|
||||
return for the protected symbol. */
|
||||
struct sym_val protected_value = { NULL, NULL };
|
||||
|
||||
for (scope = symbol_scope; *scope; ++scope)
|
||||
if (_dl_do_lookup_versioned (undef_name, hash, *ref, &protected_value,
|
||||
*scope, 0, version, NULL,
|
||||
ELF_RTYPE_CLASS_PLT))
|
||||
break;
|
||||
|
||||
if (protected_value.s != NULL && protected_value.m != undef_map)
|
||||
if (type_class == ELF_RTYPE_CLASS_PLT)
|
||||
{
|
||||
current_value.s = *ref;
|
||||
current_value.m = undef_map;
|
||||
if (current_value.s != NULL && current_value.m != undef_map)
|
||||
{
|
||||
current_value.s = *ref;
|
||||
current_value.m = undef_map;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
struct sym_val protected_value = { NULL, NULL };
|
||||
|
||||
for (scope = symbol_scope; *scope; ++scope)
|
||||
if (_dl_do_lookup_versioned (undef_name, hash, *ref,
|
||||
&protected_value,
|
||||
*scope, 0, version, NULL,
|
||||
ELF_RTYPE_CLASS_PLT))
|
||||
break;
|
||||
|
||||
if (protected_value.s != NULL
|
||||
&& protected_value.m != undef_map)
|
||||
{
|
||||
current_value.s = *ref;
|
||||
current_value.m = undef_map;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user