Index: ELF/SyntheticSections.h =================================================================== --- ELF/SyntheticSections.h +++ ELF/SyntheticSections.h @@ -471,7 +471,7 @@ void addSymbols(std::vector &Symbols); private: - size_t getShift2() const { return Config->Is64 ? 6 : 5; } + enum { Shift2 = 6 }; void writeBloomFilter(uint8_t *Buf); void writeHashTable(uint8_t *Buf); Index: ELF/SyntheticSections.cpp =================================================================== --- ELF/SyntheticSections.cpp +++ ELF/SyntheticSections.cpp @@ -1733,7 +1733,7 @@ write32(Buf, NBuckets); write32(Buf + 4, InX::DynSymTab->getNumSymbols() - Symbols.size()); write32(Buf + 8, MaskWords); - write32(Buf + 12, getShift2()); + write32(Buf + 12, Shift2); Buf += 16; // Write a bloom filter and a hash table. @@ -1755,7 +1755,7 @@ size_t I = (Sym.Hash / C) & (MaskWords - 1); uint64_t Val = readUint(Buf + I * Config->Wordsize); Val |= uint64_t(1) << (Sym.Hash % C); - Val |= uint64_t(1) << ((Sym.Hash >> getShift2()) % C); + Val |= uint64_t(1) << ((Sym.Hash >> Shift2) % C); writeUint(Buf + I * Config->Wordsize, Val); } } Index: test/ELF/gnu-hash-table.s =================================================================== --- test/ELF/gnu-hash-table.s +++ test/ELF/gnu-hash-table.s @@ -54,7 +54,7 @@ # EMPTY-NEXT: Num Buckets: 1 # EMPTY-NEXT: First Hashed Symbol Index: 2 # EMPTY-NEXT: Num Mask Words: 1 -# EMPTY-NEXT: Shift Count: 5 +# EMPTY-NEXT: Shift Count: 6 # EMPTY-NEXT: Bloom Filter: [0x0] # EMPTY-NEXT: Buckets: [0] # EMPTY-NEXT: Values: [] @@ -113,8 +113,8 @@ # I386-NEXT: Num Buckets: 1 # I386-NEXT: First Hashed Symbol Index: 4 # I386-NEXT: Num Mask Words: 1 -# I386-NEXT: Shift Count: 5 -# I386-NEXT: Bloom Filter: [0x14000220] +# I386-NEXT: Shift Count: 6 +# I386-NEXT: Bloom Filter: [0x4004204] # I386-NEXT: Buckets: [4] # I386-NEXT: Values: [0xB8860BA, 0xB887389] # I386-NEXT: }