From 4cc8eea18ffa442623b2026ac8f5a4b343ec1636 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20M=C3=BCller?= Date: Tue, 10 Dec 2024 15:36:13 -0800 Subject: [PATCH] Represent btf::types::Enum64 values as i128 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Similar to what we did with Enum and storing i64 values, represent Enum64 values as i128. Signed-off-by: Daniel Müller --- libbpf-rs/src/btf/types.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/libbpf-rs/src/btf/types.rs b/libbpf-rs/src/btf/types.rs index 75f29d11..bf22458c 100644 --- a/libbpf-rs/src/btf/types.rs +++ b/libbpf-rs/src/btf/types.rs @@ -834,15 +834,20 @@ gen_collection_concrete_type! { /// The name of this enum variant. pub name: Option<&'btf OsStr>, /// The numeric value of this enum variant. - pub value: u64, + pub value: i128, } - |btf, member| Enum64Member { + |btf, member, signed| Enum64Member { name: btf.name_at(member.name_off), value: { let hi: u64 = member.val_hi32.into(); let lo: u64 = member.val_lo32.into(); - hi << 32 | lo + let val = hi << 32 | lo; + if signed { + i64::from_ne_bytes(val.to_ne_bytes()).into() + } else { + val.into() + } }, } }