aboutsummaryrefslogtreecommitdiff
path: root/src/protocol/commands.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/protocol/commands.rs')
-rw-r--r--src/protocol/commands.rs31
1 files changed, 22 insertions, 9 deletions
diff --git a/src/protocol/commands.rs b/src/protocol/commands.rs
index c42dccd..1229899 100644
--- a/src/protocol/commands.rs
+++ b/src/protocol/commands.rs
@@ -1,17 +1,17 @@
-use paste::paste;
-
use crate::protocol::packet::PacketBuf;
use crate::target::Target;
+use paste::paste;
/// Common imports used by >50% of all packet parsers.
///
/// Do not clutter this prelude with types only used by a few packets.
-pub(self) mod prelude {
- pub use core::convert::{TryFrom, TryInto};
-
+pub mod prelude {
pub use crate::protocol::commands::ParseCommand;
- pub use crate::protocol::common::hex::{decode_hex, decode_hex_buf};
+ pub use crate::protocol::common::hex::decode_hex;
+ pub use crate::protocol::common::hex::decode_hex_buf;
pub use crate::protocol::packet::PacketBuf;
+ pub use core::convert::TryFrom;
+ pub use core::convert::TryInto;
}
pub trait ParseCommand<'a>: Sized {
@@ -91,6 +91,7 @@ macro_rules! commands {
fn support_single_register_access(&mut self) -> Option<()>;
fn support_reverse_step(&mut self) -> Option<()>;
fn support_reverse_cont(&mut self) -> Option<()>;
+ fn support_no_ack_mode(&mut self) -> Option<()>;
fn support_x_upcase_packet(&mut self) -> Option<()>;
fn support_thread_extra_info(&mut self) -> Option<()>;
}
@@ -114,7 +115,7 @@ macro_rules! commands {
fn support_lldb_register_info(&mut self) -> Option<()> {
use crate::arch::Arch;
- if self.use_lldb_register_info()
+ if self.use_lldb_register_info()
&& (T::Arch::lldb_register_info(usize::max_value()).is_some()
|| self.support_lldb_register_info_override().is_some())
{
@@ -122,7 +123,7 @@ macro_rules! commands {
} else {
None
}
- }
+ }
fn support_resume(&mut self) -> Option<()> {
self.base_ops().resume_ops().map(drop)
@@ -160,6 +161,14 @@ macro_rules! commands {
}
}
+ fn support_no_ack_mode(&mut self) -> Option<()> {
+ if self.use_no_ack_mode() {
+ Some(())
+ } else {
+ None
+ }
+ }
+
fn support_thread_extra_info(&mut self) -> Option<()> {
use crate::target::ext::base::BaseOps;
match self.base_ops() {
@@ -228,7 +237,6 @@ commands! {
"M" => _m_upcase::M<'a>,
"qAttached" => _qAttached::qAttached,
"qfThreadInfo" => _qfThreadInfo::qfThreadInfo,
- "QStartNoAckMode" => _QStartNoAckMode::QStartNoAckMode,
"qsThreadInfo" => _qsThreadInfo::qsThreadInfo,
"qSupported" => _qSupported::qSupported<'a>,
"T" => _t_upcase::T,
@@ -249,6 +257,10 @@ commands! {
"X" => _x_upcase::X<'a>,
}
+ no_ack_mode {
+ "QStartNoAckMode" => _QStartNoAckMode::QStartNoAckMode,
+ }
+
single_register_access use 'a {
"p" => _p::p<'a>,
"P" => _p_upcase::P<'a>,
@@ -256,6 +268,7 @@ commands! {
extended_mode use 'a {
"!" => exclamation_mark::ExclamationMark,
+ "qC" => _qC::qC,
"QDisableRandomization" => _QDisableRandomization::QDisableRandomization,
"QEnvironmentHexEncoded" => _QEnvironmentHexEncoded::QEnvironmentHexEncoded<'a>,
"QEnvironmentReset" => _QEnvironmentReset::QEnvironmentReset,