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) 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)) 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 // Potentially occuring during patches
// Avoid doing it for files with a single module such as most PRX // Avoid doing it for files with a single module such as most PRX
std::vector<be_t<u32>> addrs(info.funcs.size() + 1); std::vector<be_t<u32>> addrs;
usz addr_index = 0;
for (const ppu_function& func : info.funcs) 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>)); sha1_update(&ctx, reinterpret_cast<const u8*>(addrs.data()), addrs.size() * sizeof(be_t<u32>));
} }