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