mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-09 13:33:17 +00:00
[ELF] add elf_hash function to compute the hash value of a symbol in the dynamic symbol table
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177872 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6a19f7b9de
commit
11987c4719
@ -2704,6 +2704,21 @@ static inline error_code GetELFSymbolVersion(const ObjectFile *Obj,
|
||||
llvm_unreachable("Object passed to GetELFSymbolVersion() is not ELF");
|
||||
}
|
||||
|
||||
/// This function returns the hash value for a symbol in the .dynsym section
|
||||
/// Name of the API remains consistent as specified in the libelf
|
||||
/// REF : http://eternallyconfuzzled.com/tuts/algorithms/jsw_tut_hashing.aspx
|
||||
static inline unsigned elf_hash(StringRef &symbolName) {
|
||||
unsigned h = 0, g;
|
||||
for (unsigned i = 0; i < symbolName.size(); i++) {
|
||||
h = (h << 4) + symbolName[i];
|
||||
g = h & 0xf0000000L;
|
||||
if (g != 0)
|
||||
h ^= g >> 24;
|
||||
h &= ~g;
|
||||
}
|
||||
return h;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user