From 79913b3e6cefbb6276026c4785aa8f776b2bd548 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 9 Jan 2008 06:59:58 +0000 Subject: fix broken whitespace in many places; no functional changes --- ldso/ldso/dl-hash.c | 142 ++++++++++++++++++++++++++-------------------------- 1 file changed, 71 insertions(+), 71 deletions(-) (limited to 'ldso/ldso/dl-hash.c') diff --git a/ldso/ldso/dl-hash.c b/ldso/ldso/dl-hash.c index f9c316281..8d2ae3e38 100644 --- a/ldso/ldso/dl-hash.c +++ b/ldso/ldso/dl-hash.c @@ -114,33 +114,32 @@ struct elf_resolve *_dl_add_elf_hash_table(const char *libname, _dl_memset(tpnt->next, 0, sizeof(struct elf_resolve)); tpnt->next->prev = tpnt; tpnt = tpnt->next; - }; + } tpnt->next = NULL; tpnt->init_flag = 0; tpnt->libname = _dl_strdup(libname); tpnt->dynamic_addr = (ElfW(Dyn) *)dynamic_addr; tpnt->libtype = loaded_file; - + #ifdef __LDSO_GNU_HASH_SUPPORT__ if (dynamic_info[DT_GNU_HASH_IDX] != 0) { - - Elf32_Word *hash32 = (Elf_Symndx*)dynamic_info[DT_GNU_HASH_IDX]; - - tpnt->nbucket = *hash32++; - Elf32_Word symbias = *hash32++; - Elf32_Word bitmask_nwords = *hash32++; - /* Must be a power of two. */ - _dl_assert ((bitmask_nwords & (bitmask_nwords - 1)) == 0); - tpnt->l_gnu_bitmask_idxbits = bitmask_nwords - 1; - tpnt->l_gnu_shift = *hash32++; - - tpnt->l_gnu_bitmask = (ElfW(Addr) *) hash32; - hash32 += __ELF_NATIVE_CLASS / 32 * bitmask_nwords; - - tpnt->l_gnu_buckets = hash32; - hash32 += tpnt->nbucket; - tpnt->l_gnu_chain_zero = hash32 - symbias; + Elf32_Word *hash32 = (Elf_Symndx*)dynamic_info[DT_GNU_HASH_IDX]; + + tpnt->nbucket = *hash32++; + Elf32_Word symbias = *hash32++; + Elf32_Word bitmask_nwords = *hash32++; + /* Must be a power of two. */ + _dl_assert ((bitmask_nwords & (bitmask_nwords - 1)) == 0); + tpnt->l_gnu_bitmask_idxbits = bitmask_nwords - 1; + tpnt->l_gnu_shift = *hash32++; + + tpnt->l_gnu_bitmask = (ElfW(Addr) *) hash32; + hash32 += __ELF_NATIVE_CLASS / 32 * bitmask_nwords; + + tpnt->l_gnu_buckets = hash32; + hash32 += tpnt->nbucket; + tpnt->l_gnu_chain_zero = hash32 - symbias; } else /* Fall using old SysV hash table if GNU hash is not present */ #endif @@ -162,45 +161,45 @@ struct elf_resolve *_dl_add_elf_hash_table(const char *libname, /* Routine to check whether the symbol matches. */ static __attribute_noinline__ const ElfW(Sym) * -check_match (const ElfW(Sym) *sym, char *strtab, const char* undef_name, int type_class) { - - if (type_class & (sym->st_shndx == SHN_UNDEF)) - /* undefined symbol itself */ - return NULL; - - if (sym->st_value == 0) - /* No value */ - return NULL; - - if (ELF_ST_TYPE(sym->st_info) > STT_FUNC - && ELF_ST_TYPE(sym->st_info) != STT_COMMON) - /* Ignore all but STT_NOTYPE, STT_OBJECT, STT_FUNC - * and STT_COMMON entries since these are no - * code/data definitions - */ - return NULL; - - if (_dl_strcmp(strtab + sym->st_name, undef_name) != 0) - return NULL; - - /* This is the matching symbol */ - return sym; +check_match (const ElfW(Sym) *sym, char *strtab, const char* undef_name, int type_class) +{ + if (type_class & (sym->st_shndx == SHN_UNDEF)) + /* undefined symbol itself */ + return NULL; + + if (sym->st_value == 0) + /* No value */ + return NULL; + + if (ELF_ST_TYPE(sym->st_info) > STT_FUNC + && ELF_ST_TYPE(sym->st_info) != STT_COMMON) + /* Ignore all but STT_NOTYPE, STT_OBJECT, STT_FUNC + * and STT_COMMON entries since these are no + * code/data definitions + */ + return NULL; + + if (_dl_strcmp(strtab + sym->st_name, undef_name) != 0) + return NULL; + + /* This is the matching symbol */ + return sym; } #ifdef __LDSO_GNU_HASH_SUPPORT__ -static __always_inline const ElfW(Sym) * -_dl_lookup_gnu_hash(struct elf_resolve *tpnt, ElfW(Sym) *symtab, unsigned long hash, - const char* undef_name, int type_class) { - +static __always_inline const ElfW(Sym) * +_dl_lookup_gnu_hash(struct elf_resolve *tpnt, ElfW(Sym) *symtab, unsigned long hash, + const char* undef_name, int type_class) +{ Elf_Symndx symidx; const ElfW(Sym) *sym; char *strtab; - + const ElfW(Addr) *bitmask = tpnt->l_gnu_bitmask; - ElfW(Addr) bitmask_word = bitmask[(hash / __ELF_NATIVE_CLASS) & tpnt->l_gnu_bitmask_idxbits]; + ElfW(Addr) bitmask_word = bitmask[(hash / __ELF_NATIVE_CLASS) & tpnt->l_gnu_bitmask_idxbits]; unsigned int hashbit1 = hash & (__ELF_NATIVE_CLASS - 1); unsigned int hashbit2 = ((hash >> tpnt->l_gnu_shift) & (__ELF_NATIVE_CLASS - 1)); @@ -208,9 +207,8 @@ _dl_lookup_gnu_hash(struct elf_resolve *tpnt, ElfW(Sym) *symtab, unsigned long h _dl_assert (bitmask != NULL); if (unlikely((bitmask_word >> hashbit1) & (bitmask_word >> hashbit2) & 1)) { - Elf32_Word bucket = tpnt->l_gnu_buckets[hash % tpnt->nbucket]; - + if (bucket != 0) { const Elf32_Word *hasharr = &tpnt->l_gnu_chain_zero[bucket]; do { @@ -229,20 +227,20 @@ _dl_lookup_gnu_hash(struct elf_resolve *tpnt, ElfW(Sym) *symtab, unsigned long h } #endif -static __always_inline const ElfW(Sym) * -_dl_lookup_sysv_hash(struct elf_resolve *tpnt, ElfW(Sym) *symtab, unsigned long hash, const char* undef_name, int type_class) { - +static __always_inline const ElfW(Sym) * +_dl_lookup_sysv_hash(struct elf_resolve *tpnt, ElfW(Sym) *symtab, unsigned long hash, const char* undef_name, int type_class) +{ unsigned long hn; char *strtab; const ElfW(Sym) *sym; Elf_Symndx symidx; - + /* Avoid calling .urem here. */ do_rem(hn, hash, tpnt->nbucket); strtab = (char *) (tpnt->dynamic_info[DT_STRTAB]); - + _dl_assert(tpnt->elf_buckets != NULL); - + for (symidx = tpnt->elf_buckets[hn]; symidx != STN_UNDEF; symidx = tpnt->chains[symidx]) { sym = check_match (&symtab[symidx], strtab, undef_name, type_class); if (sym != NULL) @@ -251,7 +249,7 @@ _dl_lookup_sysv_hash(struct elf_resolve *tpnt, ElfW(Sym) *symtab, unsigned long } /* No symbol found into the current module*/ return NULL; -} +} /* * This function resolves externals, and this is either called when we process @@ -276,7 +274,7 @@ char *_dl_lookup_hash(const char *name, struct dyn_elf *rpnt, #ifdef __LDSO_GNU_HASH_SUPPORT__ unsigned long gnu_hash_number = _dl_gnu_hash((const unsigned char *)name); #endif - + for (; rpnt; rpnt = rpnt->next) { tpnt = rpnt->dyn; @@ -302,30 +300,32 @@ char *_dl_lookup_hash(const char *name, struct dyn_elf *rpnt, if (tpnt->nbucket == 0) continue; - symtab = (ElfW(Sym) *) (intptr_t) (tpnt->dynamic_info[DT_SYMTAB]); - + symtab = (ElfW(Sym) *) (intptr_t) (tpnt->dynamic_info[DT_SYMTAB]); + #ifdef __LDSO_GNU_HASH_SUPPORT__ /* Prefer GNU hash style, if any */ - if(tpnt->l_gnu_bitmask) { - if((sym = _dl_lookup_gnu_hash(tpnt, symtab, gnu_hash_number, name, type_class)) != NULL) - /* If sym has been found, do not search further */ - break; + if (tpnt->l_gnu_bitmask) { + sym = _dl_lookup_gnu_hash(tpnt, symtab, gnu_hash_number, name, type_class); + if (sym != NULL) + /* If sym has been found, do not search further */ + break; } else { -#endif +#endif /* Use the old SysV-style hash table */ - + /* Calculate the old sysv hash number only once */ - if(elf_hash_number == 0xffffffff) + if (elf_hash_number == 0xffffffff) elf_hash_number = _dl_elf_hash((const unsigned char *)name); - if((sym = _dl_lookup_sysv_hash(tpnt, symtab, elf_hash_number, name, type_class)) != NULL ) + sym = _dl_lookup_sysv_hash(tpnt, symtab, elf_hash_number, name, type_class); + if (sym != NULL) break; -#ifdef __LDSO_GNU_HASH_SUPPORT__ +#ifdef __LDSO_GNU_HASH_SUPPORT__ } -#endif +#endif } /* end of for (; rpnt; rpnt = rpnt->next) { */ - if(sym) { + if (sym) { /* At this point we have found the requested symbol, do binding */ switch (ELF_ST_BIND(sym->st_info)) { case STB_WEAK: -- cgit v1.2.3