1 //! Provide exec-file path for the target.
2 use crate::common::Pid;
3 use crate::target::Target;
4 use crate::target::TargetResult;
5 
6 /// Target Extension - Provide current exec-file.
7 ///
8 /// NOTE: this extension is primarily intended to be used alongside the [`Host
9 /// I/O Extensions`](crate::target::ext::host_io), which enables the GDB client
10 /// to read the executable file directly from the target
11 pub trait ExecFile: Target {
12     /// Get full absolute path of the file that was executed to create
13     /// process `pid` running on the remote system.
14     ///
15     /// If `pid` is `None`, return the filename corresponding to the
16     /// currently executing process.
17     ///
18     /// Return the number of bytes written into `buf` (which may be less than
19     /// `length`).
20     ///
21     /// If `offset` is greater than the length of the underlying data, return
22     /// `Ok(0)`.
get_exec_file( &self, pid: Option<Pid>, offset: u64, length: usize, buf: &mut [u8], ) -> TargetResult<usize, Self>23     fn get_exec_file(
24         &self,
25         pid: Option<Pid>,
26         offset: u64,
27         length: usize,
28         buf: &mut [u8],
29     ) -> TargetResult<usize, Self>;
30 }
31 
32 define_ext!(ExecFileOps, ExecFile);
33