auto import from //depot/cupcake/@135843
This commit is contained in:
27
tools/apriori/hash.c
Normal file
27
tools/apriori/hash.c
Normal file
@@ -0,0 +1,27 @@
|
||||
#include <common.h>
|
||||
#include <debug.h>
|
||||
#include <libelf.h>
|
||||
#include <hash.h>
|
||||
#include <string.h>
|
||||
|
||||
int hash_lookup(Elf *elf,
|
||||
Elf_Data *hash,
|
||||
Elf_Data *symtab,
|
||||
Elf_Data *symstr,
|
||||
const char *symname) {
|
||||
Elf32_Word *hash_data = (Elf32_Word *)hash->d_buf;
|
||||
Elf32_Word index;
|
||||
Elf32_Word nbuckets = *hash_data++;
|
||||
Elf32_Word *buckets = ++hash_data;
|
||||
Elf32_Word *chains = hash_data + nbuckets;
|
||||
|
||||
index = buckets[elf_hash(symname) % nbuckets];
|
||||
while (index != STN_UNDEF &&
|
||||
strcmp((char *)symstr->d_buf +
|
||||
((Elf32_Sym *)symtab->d_buf)[index].st_name,
|
||||
symname)) {
|
||||
index = chains[index];
|
||||
}
|
||||
|
||||
return index;
|
||||
}
|
||||
Reference in New Issue
Block a user