sym_cnt -= hash[1];
                    hashval = buckets + hash[0] + sym_cnt;
                    do
                    {
                        ++sym_cnt;
                    }
                    while (!(*hashval++ & 1));
                }
                break;
            }
        }
        if (!sym_cnt)
            continue;
        const char * strtab = nullptr;
        for (const auto * it = dyn_begin; it->d_tag != DT_NULL; ++it)
        {
            ElfW(Addr) base_address = correct_address(info->dlpi_addr, it->d_un.d_ptr);
            if (it->d_tag == DT_STRTAB)
            {
                strtab = reinterpret_cast<const char *>(base_address);
                break;
            }
        }
        if (!strtab)
            continue;
        for (const auto * it = dyn_begin; it->d_tag != DT_NULL; ++it)
        {
            ElfW(Addr) base_address = correct_address(info->dlpi_addr, it->d_un.d_ptr);
            if (it->d_tag == DT_SYMTAB)
            {