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