summaryrefslogtreecommitdiff
path: root/src/sys/ptrace
diff options
context:
space:
mode:
authorcoord.e <me@coord-e.com>2020-03-19 16:52:15 +0000
committercoord.e <me@coord-e.com>2020-04-02 00:28:09 +0900
commit87047fc3c5dc53da128d925c592f12c593c91846 (patch)
tree3fcd75d8f25316a66888b16e35422190b007bc6a /src/sys/ptrace
parentb5a129a275958040fe095790ebd7006cff5c2929 (diff)
downloadnix-87047fc3c5dc53da128d925c592f12c593c91846.zip
Enable getregs/setregs on musl
Update CHANGELOG for #1198
Diffstat (limited to 'src/sys/ptrace')
-rw-r--r--src/sys/ptrace/linux.rs30
1 files changed, 18 insertions, 12 deletions
diff --git a/src/sys/ptrace/linux.rs b/src/sys/ptrace/linux.rs
index ba0e6148..ca89afaa 100644
--- a/src/sys/ptrace/linux.rs
+++ b/src/sys/ptrace/linux.rs
@@ -9,10 +9,12 @@ use sys::signal::Signal;
pub type AddressType = *mut ::libc::c_void;
-#[cfg(all(target_os = "linux",
- any(target_arch = "x86_64",
- target_arch = "x86"),
- target_env = "gnu"))]
+#[cfg(all(
+ target_os = "linux",
+ any(all(target_arch = "x86_64",
+ any(target_env = "gnu", target_env = "musl")),
+ all(target_arch = "x86", target_env = "gnu"))
+))]
use libc::user_regs_struct;
cfg_if! {
@@ -199,19 +201,23 @@ fn ptrace_peek(request: Request, pid: Pid, addr: AddressType, data: *mut c_void)
}
/// Get user registers, as with `ptrace(PTRACE_GETREGS, ...)`
-#[cfg(all(target_os = "linux",
- any(target_arch = "x86_64",
- target_arch = "x86"),
- target_env = "gnu"))]
+#[cfg(all(
+ target_os = "linux",
+ any(all(target_arch = "x86_64",
+ any(target_env = "gnu", target_env = "musl")),
+ all(target_arch = "x86", target_env = "gnu"))
+))]
pub fn getregs(pid: Pid) -> Result<user_regs_struct> {
ptrace_get_data::<user_regs_struct>(Request::PTRACE_GETREGS, pid)
}
/// Set user registers, as with `ptrace(PTRACE_SETREGS, ...)`
-#[cfg(all(target_os = "linux",
- any(target_arch = "x86_64",
- target_arch = "x86"),
- target_env = "gnu"))]
+#[cfg(all(
+ target_os = "linux",
+ any(all(target_arch = "x86_64",
+ any(target_env = "gnu", target_env = "musl")),
+ all(target_arch = "x86", target_env = "gnu"))
+))]
pub fn setregs(pid: Pid, regs: user_regs_struct) -> Result<()> {
let res = unsafe {
libc::ptrace(Request::PTRACE_SETREGS as RequestType,