From 1d0f30db7a633604ab098791117983330e304f8c Mon Sep 17 00:00:00 2001 From: Nav Date: Sun, 10 Sep 2023 21:50:26 +0100 Subject: [PATCH] New `rangeSteppingEnabled` server config param --- resources/bloom.template.yaml | 1 + src/DebugServer/Gdb/GdbDebugServerConfig.cpp | 12 ++++++++++++ src/DebugServer/Gdb/GdbDebugServerConfig.hpp | 9 +++++++++ 3 files changed, 22 insertions(+) diff --git a/resources/bloom.template.yaml b/resources/bloom.template.yaml index 43bcb34e..bc33569b 100644 --- a/resources/bloom.template.yaml +++ b/resources/bloom.template.yaml @@ -13,6 +13,7 @@ environments: name: "avr-gdb-rsp" ipAddress: "127.0.0.1" port: 1442 + rangeSteppingEnabled: true insight: activateOnStartup: false diff --git a/src/DebugServer/Gdb/GdbDebugServerConfig.cpp b/src/DebugServer/Gdb/GdbDebugServerConfig.cpp index d3d2daad..ba98ce0e 100644 --- a/src/DebugServer/Gdb/GdbDebugServerConfig.cpp +++ b/src/DebugServer/Gdb/GdbDebugServerConfig.cpp @@ -30,5 +30,17 @@ namespace DebugServer::Gdb ); } } + + if (debugServerConfig.debugServerNode["rangeSteppingEnabled"]) { + if (YamlUtilities::isCastable(debugServerConfig.debugServerNode["rangeSteppingEnabled"])) { + this->rangeSteppingEnabled = debugServerConfig.debugServerNode["rangeSteppingEnabled"].as(); + + } else { + Logger::error( + "Invalid GDB debug server config parameter ('rangeSteppingEnabled') provided - value must be " + "castable to a boolean. The parameter will be ignored." + ); + } + } } } diff --git a/src/DebugServer/Gdb/GdbDebugServerConfig.hpp b/src/DebugServer/Gdb/GdbDebugServerConfig.hpp index de615b46..a1881456 100644 --- a/src/DebugServer/Gdb/GdbDebugServerConfig.hpp +++ b/src/DebugServer/Gdb/GdbDebugServerConfig.hpp @@ -26,6 +26,15 @@ namespace DebugServer::Gdb */ std::string listeningAddress = "127.0.0.1"; + /** + * Controls Bloom's range stepping functionality. + * + * If this is set to true, the GDB server will service "vCont;r" commands from GDB. + * + * This parameter is optional. If not specified, the default value set here will be used. + */ + bool rangeSteppingEnabled = true; + explicit GdbDebugServerConfig(const DebugServerConfig& debugServerConfig); }; }