1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
> diff --git a/libbpf-cargo/src/btf/btf.rs b/libbpf-cargo/src/btf/btf.rs
> index a26b2a5..fffb281 100644
> --- a/libbpf-cargo/src/btf/btf.rs
> +++ b/libbpf-cargo/src/btf/btf.rs
> @@ -731,7 +731,7 @@ impl<'a> Btf<'a> {
> fn load_type(&mut self, data: &'a [u8]) -> Result<BtfType<'a>> {
> let t = data.pread::<btf_type>(0)?;
> let extra = &data[size_of::<btf_type>()..];
> - let kind = (t.info >> 24) & 0xf;
> + let kind = (t.info >> 24) & 0x1f;
Comment 1
>
> match BtfKind::try_from(kind)? {
> BtfKind::Void => {
> diff --git a/libbpf-cargo/src/test.rs b/libbpf-cargo/src/test.rs
> index 5b08843..82a0586 100644
> --- a/libbpf-cargo/src/test.rs
> +++ b/libbpf-cargo/src/test.rs
> @@ -2145,3 +2145,27 @@ pub struct __anon_3 {
>
> assert_definition(&btf, struct_bpf_sock_tuple, expected_output);
> }
> +
> +#[test]
> +fn test_btf_dump_float() {
> + let prog_text = r#"
> +float f = 2.16;
> +double d = 12.15;
> +"#;
> +
> + let btf = build_btf_prog(prog_text);
> +
> + let f = find_type_in_btf!(btf, Var, "f");
> + let d = find_type_in_btf!(btf, Var, "d");
Comment 2
> +
> + assert_eq!(
> + "f32",
> + btf.type_declaration(f)
> + .expect("Failed to generate f decl")
> + );
> + assert_eq!(
> + "f64",
> + btf.type_declaration(d)
> + .expect("Failed to generate d decl")
> + );
> +}
|