* elf/do-lookup.h (do_lookup_x): Minor optimization and cleanup.

Avoid reuse of complex expression.
This commit is contained in:
Ulrich Drepper 2009-03-30 21:14:32 +00:00
parent db486995b6
commit cb14424eb9
2 changed files with 10 additions and 7 deletions

View File

@ -1,5 +1,8 @@
2009-03-30 Ulrich Drepper <drepper@redhat.com> 2009-03-30 Ulrich Drepper <drepper@redhat.com>
* elf/do-lookup.h (do_lookup_x): Minor optimization and cleanup.
Avoid reuse of complex expression.
* po/fr.po: Update from translation team. * po/fr.po: Update from translation team.
2009-03-16 Ulrich Drepper <drepper@redhat.com> 2009-03-16 Ulrich Drepper <drepper@redhat.com>

View File

@ -1,5 +1,5 @@
/* Look up a symbol in the loaded objects. /* Look up a symbol in the loaded objects.
Copyright (C) 1995-2007, 2008 Free Software Foundation, Inc. Copyright (C) 1995-2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -79,18 +79,18 @@ do_lookup_x (const char *undef_name, uint_fast32_t new_hash,
__attribute_noinline__ __attribute_noinline__
check_match (const ElfW(Sym) *sym) check_match (const ElfW(Sym) *sym)
{ {
unsigned int stt = ELFW(ST_TYPE) (sym->st_info);
assert (ELF_RTYPE_CLASS_PLT == 1); assert (ELF_RTYPE_CLASS_PLT == 1);
if (__builtin_expect ((sym->st_value == 0 /* No value. */ if (__builtin_expect ((sym->st_value == 0 /* No value. */
&& ELFW(ST_TYPE) (sym->st_info) != STT_TLS) && stt != STT_TLS)
|| (type_class & (sym->st_shndx == SHN_UNDEF)), || (type_class & (sym->st_shndx == SHN_UNDEF)),
0)) 0))
return NULL; return NULL;
if (__builtin_expect (ELFW(ST_TYPE) (sym->st_info) > STT_FUNC if (__builtin_expect (stt > STT_FUNC
&& ELFW(ST_TYPE) (sym->st_info) != STT_COMMON && stt != STT_COMMON
&& ELFW(ST_TYPE) (sym->st_info) != STT_TLS && stt != STT_TLS
&& ELFW(ST_TYPE) (sym->st_info) != STT_GNU_IFUNC, && stt != STT_GNU_IFUNC, 0))
0))
/* Ignore all but STT_NOTYPE, STT_OBJECT, STT_FUNC, STT_COMMON, /* Ignore all but STT_NOTYPE, STT_OBJECT, STT_FUNC, STT_COMMON,
STT_TLS, and STT_GNU_IFUNC since these are no code/data STT_TLS, and STT_GNU_IFUNC since these are no code/data
definitions. */ definitions. */