Debugger: Notate more cases of memory clears.

This commit is contained in:
Unknown W. Brackets 2021-02-02 00:44:35 -08:00
parent 44a0c54538
commit ca7d127adc
3 changed files with 7 additions and 2 deletions

View file

@ -475,10 +475,11 @@ int ElfReader::LoadInto(u32 loadAddress, bool fromTop)
if (srcSize < dstSize)
{
memset(dst + srcSize, 0, dstSize - srcSize); //zero out bss
NotifyMemInfo(MemBlockFlags::WRITE, writeAddr + srcSize, dstSize - srcSize, "ELFZero");
}
memcpy(dst, src, srcSize);
NotifyMemInfo(MemBlockFlags::WRITE, writeAddr, dstSize, "ELFLoad");
NotifyMemInfo(MemBlockFlags::WRITE, writeAddr, srcSize, "ELFLoad");
DEBUG_LOG(LOADER,"Loadable Segment Copied to %08x, size %08x", writeAddr, (u32)p->p_memsz);
}
}

View file

@ -1965,6 +1965,7 @@ int __KernelFreeTls(TLSPL *tls, SceUID threadID)
// Whenever freeing a block, clear it (even if it's not going to wake anyone.)
Memory::Memset(freedAddress, 0, tls->ntls.blockSize);
NotifyMemInfo(MemBlockFlags::WRITE, freedAddress, tls->ntls.blockSize, "TlsFree");
// First, let's remove the end check for the freeing thread.
auto freeingLocked = tlsplThreadEndChecks.equal_range(threadID);
@ -2239,8 +2240,10 @@ int sceKernelGetTlsAddr(SceUID uid)
NotifyMemInfo(MemBlockFlags::SUB_ALLOC, allocAddress, tls->ntls.blockSize, "TlsAddr");
// We clear the blocks upon first allocation (and also when they are freed, both are necessary.)
if (needsClear)
if (needsClear) {
Memory::Memset(allocAddress, 0, tls->ntls.blockSize);
NotifyMemInfo(MemBlockFlags::WRITE, allocAddress, tls->ntls.blockSize, "TlsAddr");
}
return allocAddress;
}

View file

@ -857,6 +857,7 @@ void PSPModule::Cleanup() {
Memory::Write_U32(MIPS_MAKE_BREAK(1), nm.text_addr + i);
}
Memory::Memset(nm.text_addr + nm.text_size, -1, nm.data_size + nm.bss_size);
NotifyMemInfo(MemBlockFlags::WRITE, nm.text_addr + nm.text_size, nm.data_size + nm.bss_size, "ModuleClear");
// Let's also invalidate, just to make sure it's cleared out for any future data.
currentMIPS->InvalidateICache(memoryBlockAddr, memoryBlockSize);