mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	Merge pull request #2091 from FearlessTobi/port-4603
Port citra-emu/citra#4603: "gdbstub: only let Execute breakpoints write/restore BKPT opcodes into target memory"
This commit is contained in:
		
						commit
						ca482997fe
					
				@ -507,8 +507,11 @@ static void RemoveBreakpoint(BreakpointType type, VAddr addr) {
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Debug_GDBStub, "gdb: removed a breakpoint: {:016X} bytes at {:016X} of type {}",
 | 
			
		||||
              bp->second.len, bp->second.addr, static_cast<int>(type));
 | 
			
		||||
    Memory::WriteBlock(bp->second.addr, bp->second.inst.data(), bp->second.inst.size());
 | 
			
		||||
    Core::System::GetInstance().InvalidateCpuInstructionCaches();
 | 
			
		||||
 | 
			
		||||
    if (type == BreakpointType::Execute) {
 | 
			
		||||
        Memory::WriteBlock(bp->second.addr, bp->second.inst.data(), bp->second.inst.size());
 | 
			
		||||
        Core::System::GetInstance().InvalidateCpuInstructionCaches();
 | 
			
		||||
    }
 | 
			
		||||
    p.erase(addr);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1057,9 +1060,12 @@ static bool CommitBreakpoint(BreakpointType type, VAddr addr, u64 len) {
 | 
			
		||||
    breakpoint.addr = addr;
 | 
			
		||||
    breakpoint.len = len;
 | 
			
		||||
    Memory::ReadBlock(addr, breakpoint.inst.data(), breakpoint.inst.size());
 | 
			
		||||
 | 
			
		||||
    static constexpr std::array<u8, 4> btrap{0x00, 0x7d, 0x20, 0xd4};
 | 
			
		||||
    Memory::WriteBlock(addr, btrap.data(), btrap.size());
 | 
			
		||||
    Core::System::GetInstance().InvalidateCpuInstructionCaches();
 | 
			
		||||
    if (type == BreakpointType::Execute) {
 | 
			
		||||
        Memory::WriteBlock(addr, btrap.data(), btrap.size());
 | 
			
		||||
        Core::System::GetInstance().InvalidateCpuInstructionCaches();
 | 
			
		||||
    }
 | 
			
		||||
    p.insert({addr, breakpoint});
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Debug_GDBStub, "gdb: added {} breakpoint: {:016X} bytes at {:016X}",
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user