While playing with using libbpf for the Suricata project, we had issues LLVM >= 4.0.1 generating ELF files that could not be loaded with libbpf (tools/lib/bpf/).
During the troubleshooting phase, I wrote a test program and improved the debugging output in libbpf. I turned this into a selftests program, and it also serves as a code example for libbpf in itself. I discovered that there are at least three ELF load issues with libbpf. I left them as TODO comments in (tools/testing/selftests/bpf) test_libbpf.sh. I've only fixed the load issue with eh_frames, and other types of relo-section that does not have exec flags. We can work on the other issues later. --- Jesper Dangaard Brouer (5): bpf: Sync kernel ABI header with tooling header for bpf_common.h tools/libbpf: improve the pr_debug statements to contain section numbers selftests/bpf: add test program for loading BPF ELF files selftests/bpf: add selftest that use test_libbpf_open tools/libbpf: handle issues with bpf ELF objects containing .eh_frames tools/include/uapi/linux/bpf_common.h | 7 + tools/lib/bpf/libbpf.c | 51 ++++++-- tools/testing/selftests/bpf/Makefile | 12 ++ tools/testing/selftests/bpf/test_libbpf.sh | 49 ++++++++ tools/testing/selftests/bpf/test_libbpf_open.c | 150 ++++++++++++++++++++++++ 5 files changed, 253 insertions(+), 16 deletions(-) create mode 100755 tools/testing/selftests/bpf/test_libbpf.sh create mode 100644 tools/testing/selftests/bpf/test_libbpf_open.c --