@@ -1912,7 +1912,7 @@ void ElfFile<ElfFileParamNames>::rebuildGnuHashTable(const char* strTab, span<El
1912
1912
1913
1913
// The hash table includes only a subset of dynsyms
1914
1914
auto firstSymIdx = rdi (ght.m_hdr .symndx );
1915
- auto symsToInsert = span (dynsyms.begin () + firstSymIdx, dynsyms.end ());
1915
+ dynsyms = span (dynsyms.begin () + firstSymIdx, dynsyms.end ());
1916
1916
1917
1917
// Only use the range of symbol versions that will be changed
1918
1918
auto versyms = tryGetSectionSpan<Elf_Versym>(" .gnu.version" );
@@ -1925,10 +1925,10 @@ void ElfFile<ElfFileParamNames>::rebuildGnuHashTable(const char* strTab, span<El
1925
1925
};
1926
1926
1927
1927
std::vector<Entry> entries;
1928
- entries.reserve (symsToInsert .size ());
1928
+ entries.reserve (dynsyms .size ());
1929
1929
1930
1930
uint32_t pos = 0 ; // Track the original position of the symbol in the table
1931
- for (auto & sym : symsToInsert )
1931
+ for (auto & sym : dynsyms )
1932
1932
{
1933
1933
Entry e;
1934
1934
e.hash = gnuHash (strTab + rdi (sym.st_name ));
@@ -1956,7 +1956,7 @@ void ElfFile<ElfFileParamNames>::rebuildGnuHashTable(const char* strTab, span<El
1956
1956
dst[old2new[i]] = tmp[i];
1957
1957
};
1958
1958
1959
- reorderSpan (symsToInsert , old2new);
1959
+ reorderSpan (dynsyms , old2new);
1960
1960
if (versyms)
1961
1961
reorderSpan (versyms, old2new);
1962
1962
@@ -1970,9 +1970,8 @@ void ElfFile<ElfFileParamNames>::rebuildGnuHashTable(const char* strTab, span<El
1970
1970
if (oldSymIdx >= firstSymIdx)
1971
1971
{
1972
1972
auto newSymIdx = old2new[oldSymIdx - firstSymIdx] + firstSymIdx;
1973
- if (newSymIdx != oldSymIdx) {
1973
+ if (newSymIdx != oldSymIdx)
1974
1974
wri (r.r_info , rel_setSymId (info, newSymIdx));
1975
- }
1976
1975
}
1977
1976
}
1978
1977
};
@@ -1995,7 +1994,7 @@ void ElfFile<ElfFileParamNames>::rebuildGnuHashTable(const char* strTab, span<El
1995
1994
size_t idx = (h / ElfClass) % ght.m_bloomFilters .size ();
1996
1995
auto val = rdi (ght.m_bloomFilters [idx]);
1997
1996
val |= uint64_t (1 ) << (h % ElfClass);
1998
- val |= uint64_t (1 ) << ((h >> ght.m_hdr .shift2 ) % ElfClass);
1997
+ val |= uint64_t (1 ) << ((h >> rdi ( ght.m_hdr .shift2 ) ) % ElfClass);
1999
1998
wri (ght.m_bloomFilters [idx], val);
2000
1999
}
2001
2000
@@ -2059,8 +2058,8 @@ void ElfFile<ElfFileParamNames>::rebuildHashTable(const char* strTab, span<Elf_S
2059
2058
auto name = strTab + rdi (sym.st_name );
2060
2059
uint32_t i = &sym - dynsyms.begin ();
2061
2060
uint32_t hash = sysvHash (name) % ht.m_buckets .size ();
2062
- ht.m_chain [i] = ht.m_buckets [hash];
2063
- ht.m_buckets [hash] = i ;
2061
+ wri ( ht.m_chain [i], rdi ( ht.m_buckets [hash])) ;
2062
+ wri ( ht.m_buckets [hash], i) ;
2064
2063
}
2065
2064
}
2066
2065
0 commit comments