1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
use super::prelude::*;
use crate::protocol::commands::ext::XUpcasePacket;
use crate::arch::Arch;
use crate::target::ext::base::BaseOps;
impl<T: Target, C: Connection> GdbStubImpl<T, C> {
pub(crate) fn handle_x_upcase_packet(
&mut self,
_res: &mut ResponseWriter<'_, C>,
target: &mut T,
command: XUpcasePacket<'_>,
) -> Result<HandlerStatus, Error<T::Error, C::Error>> {
if !target.use_x_upcase_packet() {
return Ok(HandlerStatus::Handled);
}
crate::__dead_code_marker!("x_upcase_packet", "impl");
let handler_status = match command {
XUpcasePacket::X(cmd) => {
let addr = <T::Arch as Arch>::Usize::from_be_bytes(cmd.addr)
.ok_or(Error::TargetMismatch)?;
match target.base_ops() {
BaseOps::SingleThread(ops) => ops.write_addrs(addr, cmd.val),
BaseOps::MultiThread(ops) => {
ops.write_addrs(addr, cmd.val, self.current_mem_tid)
}
}
.handle_error()?;
HandlerStatus::NeedsOk
}
};
Ok(handler_status)
}
}
|