mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-09-03 03:05:18 +02:00
Use the new kernel module description thing to annotate GPRs in the register viewer
This commit is contained in:
@@ -2647,7 +2647,7 @@ static u32 sceKernelGetModuleIdList(u32 resultBuffer, u32 resultBufferSize, u32
|
||||
return hleNoLog(0);
|
||||
}
|
||||
|
||||
std::string KernelModuleAddressDescription(u32 address) {
|
||||
bool DescribeKernelModuleAddress(u32 address, char *buffer, size_t bufferSize) {
|
||||
u32 error;
|
||||
for (SceUID moduleId : loadedModules) {
|
||||
PSPModule *module = kernelObjects.Get<PSPModule>(moduleId, error);
|
||||
@@ -2657,19 +2657,26 @@ std::string KernelModuleAddressDescription(u32 address) {
|
||||
const NativeModule &nm = module->nm;
|
||||
u32 dataAddr = module->GetDataAddr();
|
||||
u32 bssAddr = module->GetBSSAddr();
|
||||
|
||||
if (nm.text_size != 0 && address >= nm.text_addr && address < nm.text_addr + nm.text_size)
|
||||
return StringFromFormat("%s.text+%x", nm.name, address - nm.text_addr);
|
||||
if (nm.data_size != 0 && address >= dataAddr && address < dataAddr + nm.data_size)
|
||||
return StringFromFormat("%s.data+%x", nm.name, address - dataAddr);
|
||||
if (nm.bss_size != 0 && address >= bssAddr && address < bssAddr + nm.bss_size)
|
||||
return StringFromFormat("%s.bss+%x", nm.name, address - bssAddr);
|
||||
if (nm.text_size != 0 && address >= nm.text_addr && address < nm.text_addr + nm.text_size) {
|
||||
snprintf(buffer, bufferSize, "%s.text+%x", nm.name, address - nm.text_addr);
|
||||
return true;
|
||||
}
|
||||
if (nm.data_size != 0 && address >= dataAddr && address < dataAddr + nm.data_size) {
|
||||
snprintf(buffer, bufferSize, "%s.data+%x", nm.name, address - dataAddr);
|
||||
return true;
|
||||
}
|
||||
if (nm.bss_size != 0 && address >= bssAddr && address < bssAddr + nm.bss_size) {
|
||||
snprintf(buffer, bufferSize, "%s.bss+%x", nm.name, address - bssAddr);
|
||||
return true;
|
||||
}
|
||||
for (int i = 0; i < (int)nm.nsegment && i < 4; i++) {
|
||||
if (nm.segmentsize[i] != 0 && address >= nm.segmentaddr[i] && address < nm.segmentaddr[i] + nm.segmentsize[i])
|
||||
return StringFromFormat("%s.seg%d+%x", nm.name, i, address - nm.segmentaddr[i]);
|
||||
if (nm.segmentsize[i] != 0 && address >= nm.segmentaddr[i] && address < nm.segmentaddr[i] + nm.segmentsize[i]) {
|
||||
snprintf(buffer, bufferSize, "%s.seg%d+%x", nm.name, i, address - nm.segmentaddr[i]);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return std::string();
|
||||
return false;
|
||||
}
|
||||
|
||||
//fix for tiger x dragon
|
||||
|
||||
Reference in New Issue
Block a user