[环境]
1.aarch-linux-5.15.7 ()
2.bpf编译工具:clang-11,
3.bpf编译参数:
clang -g -target bpf -Wall -O2 -g3 -g -DBPF_CODE -ggdb -std=gnu99 -D__TARGET_ARCH_arm64 -Wno-compare-distinct-pointer-types
4.使用 libbpf 1.0.1/bpf_object__load() 打开后失败
【有两种现象】
if (attr->attach_prog_fd) {
dst_prog = bpf_prog_get(attr->attach_prog_fd);
if (IS_ERR(dst_prog)) {
dst_prog = NULL;
attach_btf = btf_get_by_fd(attr->attach_btf_obj_fd);
if (IS_ERR(attach_btf))
return -EINVAL;
if (!btf_is_kernel(attach_btf)) {
/* attaching through specifying bpf_prog's BTF
* objects directly might be supported eventually
*/
btf_put(attach_btf);
return -ENOTSUPP;
}
}
}
我也试过禁用内核中的btf类型功能。仍然显示异常。相同的代码在 x86 上正常运行。
2.使用atomic64_add错误信息如下: libbpf:找不到 extern'atomic64_add' 的 BTF:- 2
查看Linux更新说明和相关代码。此版本支持原子操作。
谢谢你的帮助。