• Miguel Ojeda's avatar
    rust: warn about `bindgen` versions 0.66.0 and 0.66.1 · 981ad93c
    Miguel Ojeda authored
    `bindgen` versions 0.66.0 and 0.66.1 panic due to C string literals with
    NUL characters [1]:
    
        panicked at .cargo/registry/src/index.crates.io-6f17d22bba15001f/bindgen-0.66.0/codegen/mod.rs:717:71:
        called `Result::unwrap()` on an `Err` value: FromBytesWithNulError { kind: InteriorNul(4) }
    
    Thus, in preparation for supporting several `bindgen` versions, add a
    version check to warn the user about it.
    
    Since some distributions may have patched it (e.g. Debian did [2]),
    check if that seems to be the case (after the version check matches),
    in order to avoid printing a warning in that case.
    
    We could make it an error, but 1) it is going to fail anyway later
    in the build, 2) we would disable `RUST`, which is also painful, 3)
    someone could have patched it in a way that still makes our extra check
    fail (however unlikely), 4) the interior NUL may go away in the headers
    (however unlikely). Thus just warn about it so that users know why it
    is failing.
    
    In addition, add a couple tests for the new cases.
    
    Link: https://github.com/rust-lang/rust-bindgen/pull/2567 [1]
    Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1069047 [2]
    Link: https://lore.kernel.org/r/20240709160615.998336-11-ojeda@kernel.orgSigned-off-by: default avatarMiguel Ojeda <ojeda@kernel.org>
    981ad93c
rust_is_available_bindgen_0_66.h 54 Bytes