{
    const char * char_address = static_cast<const char *>(address);
    if (name.starts_with("_binary_") || name.starts_with("binary_"))
    {
        if (name.ends_with("_start"))
        {
            name = name.substr((name[0] == '_') + strlen("binary_"));
            name = name.substr(0, name.size() - strlen("_start"));
            resources.emplace(name, SymbolIndex::ResourcesBlob{
                base_address,
                object_name,
                std::string_view{char_address, 0}, 
            });
        }
        else if (name.ends_with("_end"))
        {
            name = name.substr((name[0] == '_') + strlen("binary_"));
            name = name.substr(0, name.size() - strlen("_end"));
            auto it = resources.find(name);
            if (it != resources.end() && it->second.base_address == base_address && it->second.data.empty())
            {
                const char * start = it->second.data.data();
                assert(char_address >= start);
                it->second.data = std::string_view{start, static_cast<size_t>(char_address - start)};
            }
        }
    }
}
void collectSymbolsFromProgramHeaders(