diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ddf2585e..98a6e10a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -71,10 +71,9 @@ jobs: strategy: fail-fast: false matrix: - bpf_target_arch: + arch: - aarch64-unknown-linux-gnu - armv7-unknown-linux-gnueabi - - mips-unknown-linux-gnu - powerpc64le-unknown-linux-gnu - riscv64gc-unknown-linux-gnu - s390x-unknown-linux-gnu @@ -84,11 +83,18 @@ jobs: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.arch }} - uses: Swatinem/rust-cache@v2 - uses: taiki-e/install-action@cargo-hack + # This is magic, it sets `$CARGO_BUILD_TARGET`. + - uses: taiki-e/setup-cross-toolchain-action@v1 + with: + target: ${{ matrix.arch }} + - name: Build run: | set -euxo pipefail @@ -97,6 +103,7 @@ jobs: --exclude aya-ebpf-bindings \ --exclude aya-log-ebpf \ --exclude integration-ebpf \ + --exclude xtask \ --workspace - name: Test @@ -110,6 +117,7 @@ jobs: --exclude aya-log-ebpf \ --exclude integration-ebpf \ --exclude integration-test \ + --exclude xtask \ --workspace - name: Doctests @@ -124,6 +132,7 @@ jobs: --exclude init \ --exclude integration-ebpf \ --exclude integration-test \ + --exclude xtask \ --workspace build-test-aya-ebpf: diff --git a/aya/src/sys/bpf.rs b/aya/src/sys/bpf.rs index 564c414b..2332ac6f 100644 --- a/aya/src/sys/bpf.rs +++ b/aya/src/sys/bpf.rs @@ -1,6 +1,6 @@ use std::{ cmp, - ffi::{CStr, CString, c_char, c_long}, + ffi::{CStr, CString, c_char}, io, iter, mem::{self, MaybeUninit}, os::fd::{AsFd as _, AsRawFd as _, BorrowedFd, FromRawFd as _, RawFd}, @@ -1079,7 +1079,7 @@ fn bpf_prog_load(attr: &mut bpf_attr) -> io::Result { unsafe { fd_sys_bpf(bpf_cmd::BPF_PROG_LOAD, attr) } } -fn sys_bpf(cmd: bpf_cmd, attr: &mut bpf_attr) -> io::Result { +fn sys_bpf(cmd: bpf_cmd, attr: &mut bpf_attr) -> io::Result { syscall(Syscall::Ebpf { cmd, attr }).map_err(|(code, io_error)| { assert_eq!(code, -1); io_error diff --git a/aya/src/sys/mod.rs b/aya/src/sys/mod.rs index a28054b2..f8c8944b 100644 --- a/aya/src/sys/mod.rs +++ b/aya/src/sys/mod.rs @@ -8,7 +8,7 @@ mod perf_event; mod fake; use std::{ - ffi::{c_int, c_long, c_void}, + ffi::{c_int, c_void}, io, os::fd::{BorrowedFd, OwnedFd}, }; @@ -23,7 +23,7 @@ pub(crate) use netlink::*; pub(crate) use perf_event::*; use thiserror::Error; -pub(crate) type SysResult = Result; +pub(crate) type SysResult = Result; #[cfg_attr(test, expect(dead_code))] #[derive(Debug)] @@ -139,6 +139,9 @@ fn syscall(call: Syscall<'_>) -> SysResult { } } }; + // c_long is i32 on armv7. + #[allow(clippy::useless_conversion)] + let ret: i64 = ret.into(); match ret { 0.. => Ok(ret),