From 8a9fcd9fae5875f01c05b3f5b9fe352ee98c4fbd Mon Sep 17 00:00:00 2001 From: Steve Lau Date: Sun, 22 Sep 2024 21:52:08 +0800 Subject: [PATCH 1/5] ci: add CI for Linux/aarch64/musl --- .cirrus.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.cirrus.yml b/.cirrus.yml index 69012b576f..4f4cc76690 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -68,12 +68,18 @@ task: # Tasks for Linux aarch64 native builds task: matrix: - - name: Linux aarch64 + - name: Linux aarch64 gnu arm_container: image: rust:1.69.0 cpu: 1 env: TARGET: aarch64-unknown-linux-gnu + - name: Linux aarch64 musl + arm_container: + image: rust:1.69.0 + cpu: 1 + env: + TARGET: aarch64-unknown-linux-musl setup_script: - rustup target add $TARGET - rustup component add clippy From 9cb39625a840d378be0a1f20cb305128b309d303 Mon Sep 17 00:00:00 2001 From: Steve Lau Date: Sun, 22 Sep 2024 22:07:27 +0800 Subject: [PATCH 2/5] fix: enable RegisterSet and RegisterSetValue for aarch64/musl --- src/sys/ptrace/linux.rs | 73 +++++++++++++++++++++++++++++++---------- test/sys/test_ptrace.rs | 15 ++++++--- 2 files changed, 65 insertions(+), 23 deletions(-) diff --git a/src/sys/ptrace/linux.rs b/src/sys/ptrace/linux.rs index 762b337687..588631c6cd 100644 --- a/src/sys/ptrace/linux.rs +++ b/src/sys/ptrace/linux.rs @@ -173,13 +173,25 @@ libc_enum! { #[cfg(all( target_os = "linux", - target_env = "gnu", any( - target_arch = "x86_64", - target_arch = "x86", - target_arch = "aarch64", - target_arch = "riscv64", - ) + all( + target_env = "gnu", + any( + target_arch = "x86_64", + target_arch = "x86", + target_arch = "aarch64", + target_arch = "riscv64", + ) + ) + ), + any( + all( + target_env = "musl", + any( + target_arch = "aarch64", + ) + ) + ), ))] libc_enum! { #[repr(i32)] @@ -196,13 +208,25 @@ libc_enum! { #[cfg(all( target_os = "linux", - target_env = "gnu", any( - target_arch = "x86_64", - target_arch = "x86", - target_arch = "aarch64", - target_arch = "riscv64", - ) + all( + target_env = "gnu", + any( + target_arch = "x86_64", + target_arch = "x86", + target_arch = "aarch64", + target_arch = "riscv64", + ) + ) + ), + any( + all( + target_env = "musl", + any( + target_arch = "aarch64", + ) + ) + ), ))] /// Represents register set areas, such as general-purpose registers or /// floating-point registers. @@ -219,15 +243,28 @@ pub unsafe trait RegisterSet { type Regs; } + #[cfg(all( target_os = "linux", - target_env = "gnu", any( - target_arch = "x86_64", - target_arch = "x86", - target_arch = "aarch64", - target_arch = "riscv64", - ) + all( + target_env = "gnu", + any( + target_arch = "x86_64", + target_arch = "x86", + target_arch = "aarch64", + target_arch = "riscv64", + ) + ) + ), + any( + all( + target_env = "musl", + any( + target_arch = "aarch64", + ) + ) + ), ))] /// Register sets used in [`getregset`] and [`setregset`] pub mod regset { diff --git a/test/sys/test_ptrace.rs b/test/sys/test_ptrace.rs index 2e3e809ee8..5635346eac 100644 --- a/test/sys/test_ptrace.rs +++ b/test/sys/test_ptrace.rs @@ -179,12 +179,17 @@ fn test_ptrace_interrupt() { // ptrace::{setoptions, getregs} are only available in these platforms #[cfg(all( target_os = "linux", - target_env = "gnu", any( - target_arch = "x86_64", - target_arch = "x86", - target_arch = "aarch64", - target_arch = "riscv64", + all( + target_env = "gnu", + any( + target_arch = "x86_64", + target_arch = "x86", + target_arch = "aarch64", + target_arch = "riscv64" + ) + ), + all(target_env = "musl", target_arch = "aarch64") ) ))] #[test] From c05d4c68c8adec4d051a962d51c491b0dd78e795 Mon Sep 17 00:00:00 2001 From: Steve Lau Date: Sun, 22 Sep 2024 22:12:13 +0800 Subject: [PATCH 3/5] fix: cfg --- src/sys/ptrace/linux.rs | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/sys/ptrace/linux.rs b/src/sys/ptrace/linux.rs index 588631c6cd..1233990e8b 100644 --- a/src/sys/ptrace/linux.rs +++ b/src/sys/ptrace/linux.rs @@ -183,8 +183,6 @@ libc_enum! { target_arch = "riscv64", ) ) - ), - any( all( target_env = "musl", any( @@ -217,9 +215,7 @@ libc_enum! { target_arch = "aarch64", target_arch = "riscv64", ) - ) - ), - any( + ), all( target_env = "musl", any( @@ -256,8 +252,6 @@ pub unsafe trait RegisterSet { target_arch = "riscv64", ) ) - ), - any( all( target_env = "musl", any( From 3eae8b11d6b1bf07f892c0836aeb03674e6d4a0e Mon Sep 17 00:00:00 2001 From: Steve Lau Date: Sun, 22 Sep 2024 22:13:47 +0800 Subject: [PATCH 4/5] fix: cfg --- src/sys/ptrace/linux.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/sys/ptrace/linux.rs b/src/sys/ptrace/linux.rs index 1233990e8b..3331f46846 100644 --- a/src/sys/ptrace/linux.rs +++ b/src/sys/ptrace/linux.rs @@ -182,7 +182,7 @@ libc_enum! { target_arch = "aarch64", target_arch = "riscv64", ) - ) + ), all( target_env = "musl", any( @@ -251,7 +251,7 @@ pub unsafe trait RegisterSet { target_arch = "aarch64", target_arch = "riscv64", ) - ) + ), all( target_env = "musl", any( From cca2e880cac75a32a0739441101c0c1e6f82931b Mon Sep 17 00:00:00 2001 From: Steve Lau Date: Sun, 22 Sep 2024 22:15:36 +0800 Subject: [PATCH 5/5] style: make clippy happy --- src/sys/ptrace/linux.rs | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/sys/ptrace/linux.rs b/src/sys/ptrace/linux.rs index 3331f46846..1cebb37dfa 100644 --- a/src/sys/ptrace/linux.rs +++ b/src/sys/ptrace/linux.rs @@ -185,9 +185,7 @@ libc_enum! { ), all( target_env = "musl", - any( - target_arch = "aarch64", - ) + target_arch = "aarch64", ) ), ))] @@ -218,9 +216,7 @@ libc_enum! { ), all( target_env = "musl", - any( - target_arch = "aarch64", - ) + target_arch = "aarch64", ) ), ))] @@ -254,9 +250,7 @@ pub unsafe trait RegisterSet { ), all( target_env = "musl", - any( - target_arch = "aarch64", - ) + target_arch = "aarch64", ) ), ))]