ilocker:关注 Android 安全(新手) QQ: 2597294287
符号哈希表用于支援符号表的访问,能够提高符号搜索速度。
下表用于解释该哈希表的组织,但该格式并不属于 ELF 规范。
bucket 和 chain 数组中都保存有符号表的索引,数组大小分别为 nbucket 和 nchain。
先来看 android linker 中的 hash 函数:
给定一个符号名字,返回一个哈希值 x,然后由 bucket[x%nbucket] 得到一个符号表索引 y,如果索引 y 对应的符号表项不是想要的符号,则由 chain[y] 得到下一个符号表索引 z,如果仍不是想要的符号,继续 chain[z]…。
之所以这样使用符号哈希表,应该是因为它是采用链地址法来解决哈希冲突。