summaryrefslogtreecommitdiffstats
path: root/src/core/gdbstub
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/core/gdbstub/gdbstub.cpp13
-rw-r--r--src/core/gdbstub/gdbstub.h7
2 files changed, 15 insertions, 5 deletions
diff --git a/src/core/gdbstub/gdbstub.cpp b/src/core/gdbstub/gdbstub.cpp
index ced1c54f5..25ce63b29 100644
--- a/src/core/gdbstub/gdbstub.cpp
+++ b/src/core/gdbstub/gdbstub.cpp
@@ -231,13 +231,18 @@ static void RemoveBreakpoint(BreakpointType type, PAddr addr) {
}
}
-PAddr GetNextBreakpointFromAddress(PAddr addr, BreakpointType type) {
+BreakpointAddress GetNextBreakpointFromAddress(PAddr addr, BreakpointType type) {
std::map<u32, Breakpoint>& p = GetBreakpointList(type);
auto next_breakpoint = p.lower_bound(addr);
- u32 breakpoint = -1;
+ BreakpointAddress breakpoint;
- if (next_breakpoint != p.end())
- breakpoint = next_breakpoint->first;
+ if (next_breakpoint != p.end()) {
+ breakpoint.address = next_breakpoint->first;
+ breakpoint.type = type;
+ } else {
+ breakpoint.address = 0;
+ breakpoint.type = BreakpointType::None;
+ }
return breakpoint;
}
diff --git a/src/core/gdbstub/gdbstub.h b/src/core/gdbstub/gdbstub.h
index 11ff823c3..da238f349 100644
--- a/src/core/gdbstub/gdbstub.h
+++ b/src/core/gdbstub/gdbstub.h
@@ -18,6 +18,11 @@ enum class BreakpointType {
Access ///< Access (R/W) Breakpoint
};
+struct BreakpointAddress {
+ PAddr address;
+ BreakpointType type;
+};
+
/// If set to false, the server will never be started and no gdbstub-related functions will be executed.
extern std::atomic<bool> g_server_enabled;
@@ -63,7 +68,7 @@ void HandlePacket();
* @param addr Address to search from.
* @param type Type of breakpoint.
*/
-PAddr GetNextBreakpointFromAddress(u32 addr, GDBStub::BreakpointType type);
+BreakpointAddress GetNextBreakpointFromAddress(u32 addr, GDBStub::BreakpointType type);
/**
* Check if a breakpoint of the specified type exists at the given address.