From a38862a58910a5209c9ac3baae5797fbbedbeb1c Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 6 Jul 2009 06:55:57 -0700 Subject: [PATCH] Optimize test for valid ELF symbol types in lookup function. --- ChangeLog | 4 ++++ elf/do-lookup.h | 14 +++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9d9828c..c364e5e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2009-07-06 Ulrich Drepper + + * elf/do-lookup.h (ALLOWED_STT): Optimize test for valid symbol types. + 2009-07-03 Andreas Schwab * sysdeps/powerpc/sysdep.h (PPC_FEATURE_ARCH_2_06): Fix value. diff --git a/elf/do-lookup.h b/elf/do-lookup.h index ae74da4..acbc53d 100644 --- a/elf/do-lookup.h +++ b/elf/do-lookup.h @@ -87,13 +87,13 @@ do_lookup_x (const char *undef_name, uint_fast32_t new_hash, 0)) return NULL; - 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. */ + /* Ignore all but STT_NOTYPE, STT_OBJECT, STT_FUNC, + STT_COMMON, STT_TLS, and STT_GNU_IFUNC since these are no + code/data definitions. */ +#define ALLOWED_STT \ + ((1 << STT_NOTYPE) | (1 << STT_OBJECT) | (1 << STT_FUNC) \ + | (1 << STT_COMMON) | (1 << STT_TLS) | (1 << STT_GNU_IFUNC)) + if (__builtin_expect (((1 << stt) & ALLOWED_STT) == 0, 0)) return NULL; if (sym != ref && strcmp (strtab + sym->st_name, undef_name)) -- 2.7.4