PPU LLVM: Fixup patches enlisting in analyzer

This commit is contained in:
Elad 2025-01-07 19:39:37 +02:00
parent ec77f2ab92
commit c6f3737c2a
2 changed files with 10 additions and 5 deletions

View File

@ -1449,7 +1449,7 @@ static usz apply_modification(std::vector<u32>& applied, patch_engine::patch_inf
void patch_engine::apply(std::vector<u32>& applied_total, const std::string& name, std::function<u8*(u32, u32)> mem_translate, u32 filesz, u32 min_addr)
{
applied_total.clear();
// applied_total may be non-empty, do not clear it
if (!m_map.contains(name))
{

View File

@ -4904,15 +4904,20 @@ bool ppu_initialize(const ppu_module<lv2_obj>& info, bool check_only, u64 file_s
// Potentially occuring during patches
// Avoid doing it for files with a single module such as most PRX
std::vector<be_t<u32>> addrs(info.funcs.size() + 1);
usz addr_index = 0;
std::vector<be_t<u32>> addrs;
for (const ppu_function& func : info.funcs)
{
addrs[addr_index++] = func.addr - reloc;
if (func.size == 0)
{
continue;
}
addrs.emplace_back(func.addr - reloc);
}
addrs.back() = ::size32(info.funcs);
// Hash its size too
addrs.emplace_back(::size32(addrs));
sha1_update(&ctx, reinterpret_cast<const u8*>(addrs.data()), addrs.size() * sizeof(be_t<u32>));
}