aya: Fixup BTF STRUCT

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
pull/497/head
Dave Tucker 3 years ago committed by Andrew Stoycos
parent 1899d5f4fd
commit 986e765e91
No known key found for this signature in database
GPG Key ID: 66735B92BB71C096

@ -425,6 +425,18 @@ impl Btf {
fixed_ty.name_offset = 0;
types.types[i] = BtfType::Ptr(fixed_ty)
}
// Fixup STRUCT for Rust
// LLVM emits names that include characters that aren't valid C idents.
// Rather than replace all unsupported characters, just omit the name entirely.
BtfType::Struct(s) => {
let name = self.string_at(s.name_offset)?.to_string();
if name.contains(['<', '>', ' ', ':', ',']) {
debug!("STRUCT name {} not supported. Omitted from BTF", name);
let mut fixed_ty = s.clone();
fixed_ty.name_offset = 0;
types.types[i] = BtfType::Struct(fixed_ty)
}
}
// Sanitize VAR if they are not supported
BtfType::Var(v) if !features.btf_datasec => {
types.types[i] = BtfType::Int(Int::new(v.name_offset, 1, IntEncoding::None, 0));

Loading…
Cancel
Save