Comments (4)
This warning can be elimated by add -D__KERNEL__
:
# Build BPF code
$(OUTPUT)/%.bpf.o: %.bpf.c $(wildcard %.h) | $(OUTPUT)
$(call msg,BPF,$@)
$(Q)$(CLANG) -g -O2 -target bpf \
-D__KERNEL__ -D__TARGET_ARCH_$(ARCH) \
$(LINUX_INCLUDE) $(CLANG_BPF_SYS_INCLUDES) -c $(filter %.c,$^) -o $@
However, other undeclared identifier
error still exist.
from libbpf-bootstrap.
The recommendation is to use CO-RE and vmlinux.h. If you can't or don't want to, you'll have to make sure you are including the right headers with the right definitions. bool should come from just <stdbool.h>, there rest would come from either UAPI or kernel-internal headers (and kernel-internal is where you are running into issues, probably).
Check out bootstrap example for vmlinux.h usage. That makes everything much-much simpler (but you'll need kernel BTF, of course). You might want to check https://github.com/aquasecurity/btfhub and follow the BTFGen discussion which is currently happening upstream.
from libbpf-bootstrap.
The recommendation is to use CO-RE and vmlinux.h. If you can't or don't want to, you'll have to make sure you are including the right headers with the right definitions. bool should come from just <stdbool.h>, there rest would come from either UAPI or kernel-internal headers (and kernel-internal is where you are running into issues, probably).
Thanks for your reply. Because the BPF program will run Non-BTF OS(CONFIG_DEBUG_INFO_BTF is not set), So I imitated Minimal APP to write this BPF program.
Now, I decided to use vmlinux.h to slove the linux header problem, Howerver, is it possible to run such BPF program on Non-BTF OS?
Even though I delete #include <linux/stddef.h>
line, the problem still exist, and the <stdbool.h>
you mentioned is from standard libc or kernel internal implementaion?
from libbpf-bootstrap.
You can safely use vmlinux.h if you generated it from exactly the same vmlinux image that you are going to run on. Or if you are absolutely sure that you are using only types defined in kernel UAPI (which means they won't change their layout). But the latter doesn't seem true in your case, because you've tried to use internal kernel headers.
So, you can use vmlinux.h without relying on CO-RE, you'll just need to make sure that you have a matching vmlinux image. And you'll need to #define BPF_NO_PRESERVE_ACCESS_INDEX
before #include "vmlinux.h"
to disable CO-RE annotations.
stdbool.h was from standard libc, but you won't need it with vmlinux.h
from libbpf-bootstrap.
Related Issues (20)
- ksyscall invalid func unknown#177 HOT 2
- libbpf: Error in bpf_create_map_xattr():Invalid argument(-22). Retrying without BTF HOT 2
- Fail to set up performance monitor on a CPU/Core HOT 1
- profile can't output full user stack trace HOT 2
- Dropping Ethernet packets to user space applications HOT 1
- profile program crash HOT 3
- How can I get container id from cgroup v1 with ebpf code? HOT 1
- xmake build minimal fail stddef.h:11:2: error: expected identifier false = 0, HOT 1
- Compilation fails in CentOS 7.6 HOT 3
- Retrieving argument values from newfstatat HOT 2
- Rust: How to attach a single bpf program to multiple network interfaces? HOT 3
- Make failed HOT 2
- Make error - poisoned strlcpy HOT 1
- Android xmake fails HOT 10
- add xdp synproxy in c example? HOT 2
- run fentry examples in Loongarch cpu failed HOT 2
- error: unable to create target: 'No available targets are compatible with triple "bpf"' HOT 1
- Does libbpf-bootstrap support sk_msg/stream_parser & sk_msg/stream_parser hook ?
- example uprobe no output HOT 4
- (ARM64) Rust Example Tracecon Does Not Compile HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from libbpf-bootstrap.