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