diff --git a/aya/scripts/gen-bindings.sh b/aya/scripts/gen-bindings.sh deleted file mode 100755 index e5e037dd..00000000 --- a/aya/scripts/gen-bindings.sh +++ /dev/null @@ -1,137 +0,0 @@ -#!/usr/bin/env sh - -set -e - -LIBBPF_DIR=$1 -OUTPUT_DIR=$2 - -if test -z "$LIBBPF_DIR"; then - echo "error: no libbpf dir provided" - exit 1 -fi - -if test -z "$OUTPUT_DIR"; then - echo "error: no output dir provided" - exit 1 -fi - -BPF_TYPES="\ - bpf_cmd \ - bpf_insn \ - bpf_attr \ - bpf_map_type \ - bpf_prog_type \ - bpf_attach_type - " - -BPF_VARS="\ - BPF_PSEUDO_.* - BPF_ALU \ - BPF_ALU64 \ - BPF_LDX \ - BPF_ST \ - BPF_STX \ - BPF_LD \ - BPF_K \ - BPF_DW \ - BPF_W \ - BPF_H \ - BPF_B \ - SO_ATTACH_BPF \ - SO_DETACH_BPF - " - -BTF_TYPES="\ - btf_header \ - btf_ext_header \ - btf_ext_info \ - btf_ext_info_sec \ - bpf_core_relo \ - bpf_core_relo_kind \ - btf_type \ - btf_enum \ - btf_array \ - btf_member \ - btf_param \ - btf_var \ - btf_var_secinfo - " - -BTF_VARS="\ - BTF_KIND_.* - BTF_INT_.* - " - -PERF_TYPES="\ - perf_event_attr \ - perf_sw_ids \ - perf_event_sample_format \ - perf_event_mmap_page \ - perf_event_header \ - perf_type_id \ - perf_event_type - " - -PERF_VARS="\ - PERF_FLAG_.* \ - PERF_EVENT_.* - " - -NETLINK_TYPES="\ - ifinfomsg - " - -NETLINK_VARS="\ - NLMSG_ALIGNTO \ - IFLA_XDP_FD \ - XDP_FLAGS_.* - " - -LINUX_TYPES="$BPF_TYPES $BTF_TYPES $PERF_TYPES $NETLINK_TYPES" -LINUX_VARS="$BPF_VARS $BTF_VARS $PERF_VARS $NETLINK_VARS" - -bindgen $LIBBPF_DIR/src/libbpf_internal.h \ - --no-layout-tests \ - --default-enum-style moduleconsts \ - $(for ty in $BTF_TYPES; do - echo --whitelist-type "$ty" - done) \ - $(for var in $BTF_VARS; do - echo --whitelist-var "$var" - done) \ - > $OUTPUT_DIR/btf_internal_bindings.rs - -KVER=5.10.0-051000 - -bindgen aya/include/linux_wrapper.h \ - --no-layout-tests \ - --default-enum-style moduleconsts \ - $(for ty in $LINUX_TYPES; do - echo --whitelist-type "$ty" - done) \ - $(for var in $LINUX_VARS; do - echo --whitelist-var "$var" - done) \ - -- \ - -target x86_64 \ - -I $LIBBPF_DIR/include/uapi \ - -I $LIBBPF_DIR/include/ \ - -I /usr/include/x86_64-linux-gnu \ - > $OUTPUT_DIR/linux_bindings_x86_64.rs - -# requires libc6-dev-arm64-cross -bindgen aya/include/linux_wrapper.h \ - --no-layout-tests \ - --default-enum-style moduleconsts \ - $(for ty in $LINUX_TYPES; do - echo --whitelist-type "$ty" - done) \ - $(for var in $LINUX_VARS; do - echo --whitelist-var "$var" - done) \ - -- \ - -target arm64 \ - -I $LIBBPF_DIR/include/uapi \ - -I $LIBBPF_DIR/include/ \ - -I /usr/aarch64-linux-gnu/include \ - > $OUTPUT_DIR/linux_bindings_aarch64.rs \ No newline at end of file diff --git a/aya/src/generated/btf_internal_bindings.rs b/aya/src/generated/btf_internal_bindings.rs index 08dda04a..a22755cb 100644 --- a/aya/src/generated/btf_internal_bindings.rs +++ b/aya/src/generated/btf_internal_bindings.rs @@ -1,47 +1,10 @@ -/* automatically generated by rust-bindgen 0.55.1 */ +/* automatically generated by rust-bindgen 0.57.0 */ -#[repr(C)] -#[derive(Default)] -pub struct __IncompleteArrayField(::std::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { - #[inline] - pub const fn new() -> Self { - __IncompleteArrayField(::std::marker::PhantomData, []) - } - #[inline] - pub fn as_ptr(&self) -> *const T { - self as *const _ as *const T - } - #[inline] - pub fn as_mut_ptr(&mut self) -> *mut T { - self as *mut _ as *mut T - } - #[inline] - pub unsafe fn as_slice(&self, len: usize) -> &[T] { - ::std::slice::from_raw_parts(self.as_ptr(), len) - } - #[inline] - pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { - ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len) - } -} -impl ::std::fmt::Debug for __IncompleteArrayField { - fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - fmt.write_str("__IncompleteArrayField") - } -} pub type __u8 = ::std::os::raw::c_uchar; pub type __u16 = ::std::os::raw::c_ushort; pub type __u32 = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] -pub struct btf_ext_info { - pub info: *mut ::std::os::raw::c_void, - pub rec_size: __u32, - pub len: __u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] pub struct btf_ext_header { pub magic: __u16, pub version: __u8, @@ -54,13 +17,6 @@ pub struct btf_ext_header { pub core_relo_off: __u32, pub core_relo_len: __u32, } -#[repr(C)] -#[derive(Debug)] -pub struct btf_ext_info_sec { - pub sec_name_off: __u32, - pub num_info: __u32, - pub data: __IncompleteArrayField<__u8>, -} pub mod bpf_core_relo_kind { pub type Type = ::std::os::raw::c_uint; pub const BPF_FIELD_BYTE_OFFSET: Type = 0; diff --git a/aya/src/generated/linux_bindings_aarch64.rs b/aya/src/generated/linux_bindings_aarch64.rs index 386d9ece..d3252d7c 100644 --- a/aya/src/generated/linux_bindings_aarch64.rs +++ b/aya/src/generated/linux_bindings_aarch64.rs @@ -1,18 +1,17 @@ -/* automatically generated by rust-bindgen 0.55.1 */ +/* automatically generated by rust-bindgen 0.57.0 */ #[repr(C)] #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] -pub struct __BindgenBitfieldUnit { +pub struct __BindgenBitfieldUnit { storage: Storage, - align: [Align; 0], } -impl __BindgenBitfieldUnit { +impl __BindgenBitfieldUnit { #[inline] pub const fn new(storage: Storage) -> Self { - Self { storage, align: [] } + Self { storage } } } -impl __BindgenBitfieldUnit +impl __BindgenBitfieldUnit where Storage: AsRef<[u8]> + AsMut<[u8]>, { @@ -141,7 +140,8 @@ pub type __u64 = ::std::os::raw::c_ulonglong; #[derive(Debug, Copy, Clone)] pub struct bpf_insn { pub code: __u8, - pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize], u8>, + pub _bitfield_align_1: [u8; 0], + pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, pub off: __s16, pub imm: __s32, } @@ -169,9 +169,8 @@ impl bpf_insn { } } #[inline] - pub fn new_bitfield_1(dst_reg: __u8, src_reg: __u8) -> __BindgenBitfieldUnit<[u8; 1usize], u8> { - let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize], u8> = - Default::default(); + pub fn new_bitfield_1(dst_reg: __u8, src_reg: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { + let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); __bindgen_bitfield_unit.set(0usize, 4u8, { let dst_reg: u8 = unsafe { ::std::mem::transmute(dst_reg) }; dst_reg as u64 @@ -712,7 +711,8 @@ pub struct perf_event_attr { pub __bindgen_anon_1: perf_event_attr__bindgen_ty_1, pub sample_type: __u64, pub read_format: __u64, - pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize], u32>, + pub _bitfield_align_1: [u32; 0], + pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>, pub __bindgen_anon_2: perf_event_attr__bindgen_ty_2, pub bp_type: __u32, pub __bindgen_anon_3: perf_event_attr__bindgen_ty_3, @@ -1159,9 +1159,8 @@ impl perf_event_attr { aux_output: __u64, cgroup: __u64, __reserved_1: __u64, - ) -> __BindgenBitfieldUnit<[u8; 8usize], u32> { - let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize], u32> = - Default::default(); + ) -> __BindgenBitfieldUnit<[u8; 8usize]> { + let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default(); __bindgen_bitfield_unit.set(0usize, 1u8, { let disabled: u64 = unsafe { ::std::mem::transmute(disabled) }; disabled as u64 @@ -1337,7 +1336,8 @@ pub union perf_event_mmap_page__bindgen_ty_1 { #[repr(align(8))] #[derive(Debug, Copy, Clone)] pub struct perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1 { - pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize], u64>, + pub _bitfield_align_1: [u64; 0], + pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>, } impl perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1 { #[inline] @@ -1414,9 +1414,8 @@ impl perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1 { cap_user_time: __u64, cap_user_time_zero: __u64, cap_____res: __u64, - ) -> __BindgenBitfieldUnit<[u8; 8usize], u64> { - let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize], u64> = - Default::default(); + ) -> __BindgenBitfieldUnit<[u8; 8usize]> { + let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default(); __bindgen_bitfield_unit.set(0usize, 1u8, { let cap_bit0: u64 = unsafe { ::std::mem::transmute(cap_bit0) }; cap_bit0 as u64 diff --git a/aya/src/generated/linux_bindings_x86_64.rs b/aya/src/generated/linux_bindings_x86_64.rs index f7e26723..30e16b5e 100644 --- a/aya/src/generated/linux_bindings_x86_64.rs +++ b/aya/src/generated/linux_bindings_x86_64.rs @@ -1,18 +1,17 @@ -/* automatically generated by rust-bindgen 0.55.1 */ +/* automatically generated by rust-bindgen 0.57.0 */ #[repr(C)] #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] -pub struct __BindgenBitfieldUnit { +pub struct __BindgenBitfieldUnit { storage: Storage, - align: [Align; 0], } -impl __BindgenBitfieldUnit { +impl __BindgenBitfieldUnit { #[inline] pub const fn new(storage: Storage) -> Self { - Self { storage, align: [] } + Self { storage } } } -impl __BindgenBitfieldUnit +impl __BindgenBitfieldUnit where Storage: AsRef<[u8]> + AsMut<[u8]>, { @@ -141,7 +140,8 @@ pub type __u64 = ::std::os::raw::c_ulonglong; #[derive(Debug, Copy, Clone)] pub struct bpf_insn { pub code: __u8, - pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize], u8>, + pub _bitfield_align_1: [u8; 0], + pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, pub off: __s16, pub imm: __s32, } @@ -169,9 +169,8 @@ impl bpf_insn { } } #[inline] - pub fn new_bitfield_1(dst_reg: __u8, src_reg: __u8) -> __BindgenBitfieldUnit<[u8; 1usize], u8> { - let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize], u8> = - Default::default(); + pub fn new_bitfield_1(dst_reg: __u8, src_reg: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { + let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); __bindgen_bitfield_unit.set(0usize, 4u8, { let dst_reg: u8 = unsafe { ::std::mem::transmute(dst_reg) }; dst_reg as u64 @@ -712,7 +711,8 @@ pub struct perf_event_attr { pub __bindgen_anon_1: perf_event_attr__bindgen_ty_1, pub sample_type: __u64, pub read_format: __u64, - pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize], u32>, + pub _bitfield_align_1: [u32; 0], + pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>, pub __bindgen_anon_2: perf_event_attr__bindgen_ty_2, pub bp_type: __u32, pub __bindgen_anon_3: perf_event_attr__bindgen_ty_3, @@ -1159,9 +1159,8 @@ impl perf_event_attr { aux_output: __u64, cgroup: __u64, __reserved_1: __u64, - ) -> __BindgenBitfieldUnit<[u8; 8usize], u32> { - let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize], u32> = - Default::default(); + ) -> __BindgenBitfieldUnit<[u8; 8usize]> { + let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default(); __bindgen_bitfield_unit.set(0usize, 1u8, { let disabled: u64 = unsafe { ::std::mem::transmute(disabled) }; disabled as u64 @@ -1337,7 +1336,8 @@ pub union perf_event_mmap_page__bindgen_ty_1 { #[repr(align(8))] #[derive(Debug, Copy, Clone)] pub struct perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1 { - pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize], u64>, + pub _bitfield_align_1: [u64; 0], + pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>, } impl perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1 { #[inline] @@ -1414,9 +1414,8 @@ impl perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1 { cap_user_time: __u64, cap_user_time_zero: __u64, cap_____res: __u64, - ) -> __BindgenBitfieldUnit<[u8; 8usize], u64> { - let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize], u64> = - Default::default(); + ) -> __BindgenBitfieldUnit<[u8; 8usize]> { + let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default(); __bindgen_bitfield_unit.set(0usize, 1u8, { let cap_bit0: u64 = unsafe { ::std::mem::transmute(cap_bit0) }; cap_bit0 as u64 diff --git a/aya/src/obj/mod.rs b/aya/src/obj/mod.rs index 1a628c2b..4bcb36bb 100644 --- a/aya/src/obj/mod.rs +++ b/aya/src/obj/mod.rs @@ -389,6 +389,7 @@ mod tests { fn fake_ins() -> bpf_insn { bpf_insn { code: 0, + _bitfield_align_1: [], _bitfield_1: bpf_insn::new_bitfield_1(0, 0), off: 0, imm: 0,