diff options
author | Ulrich Drepper <drepper@redhat.com> | 2009-03-30 21:14:32 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2009-03-30 21:14:32 +0000 |
commit | cb14424eb93499ba6e6dc8dba45ef6a58ce0a174 (patch) | |
tree | 820e84323ce8b616aba7d8b797c84e3cce32bbd1 /elf | |
parent | db486995b6e86cb17cc689ca800139db3b9d4ce3 (diff) | |
download | glibc-cb14424eb93499ba6e6dc8dba45ef6a58ce0a174.zip glibc-cb14424eb93499ba6e6dc8dba45ef6a58ce0a174.tar.gz glibc-cb14424eb93499ba6e6dc8dba45ef6a58ce0a174.tar.bz2 |
* elf/do-lookup.h (do_lookup_x): Minor optimization and cleanup.
Avoid reuse of complex expression.
Diffstat (limited to 'elf')
-rw-r--r-- | elf/do-lookup.h | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/elf/do-lookup.h b/elf/do-lookup.h index 41e5fc1..ae74da4 100644 --- a/elf/do-lookup.h +++ b/elf/do-lookup.h @@ -1,5 +1,5 @@ /* 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. 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__ check_match (const ElfW(Sym) *sym) { + unsigned int stt = ELFW(ST_TYPE) (sym->st_info); assert (ELF_RTYPE_CLASS_PLT == 1); 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)), 0)) return NULL; - if (__builtin_expect (ELFW(ST_TYPE) (sym->st_info) > STT_FUNC - && ELFW(ST_TYPE) (sym->st_info) != STT_COMMON - && ELFW(ST_TYPE) (sym->st_info) != STT_TLS - && ELFW(ST_TYPE) (sym->st_info) != STT_GNU_IFUNC, - 0)) + if (__builtin_expect (stt > STT_FUNC + && stt != STT_COMMON + && stt != STT_TLS + && stt != STT_GNU_IFUNC, 0)) /* Ignore all but STT_NOTYPE, STT_OBJECT, STT_FUNC, STT_COMMON, STT_TLS, and STT_GNU_IFUNC since these are no code/data definitions. */ |