hi, adding d_path helper to return full path for 'path' object. I originally added and used 'file_path' helper, which did the same, but used 'struct file' object. Then realized that file_path is just a wrapper for d_path, so we'd cover more calling sites if we add d_path helper and allowed resolving BTF object within another object, so we could call d_path also with file pointer, like: bpf_d_path(&file->f_path, buf, size); This feature is mainly to be able to add dpath (filepath originally) function to bpftrace: # bpftrace -e 'kfunc:vfs_open { printf("%s\n", dpath(args->path)); }' v3 changes: - changed tests to use seleton and vmlinux.h [Andrii] - refactored to define ID lists in C object [Andrii] - changed btf_struct_access for nested ID check, instead of adding new function for that [Andrii] - fail build with CONFIG_DEBUG_INFO_BTF if libelf is not detected [Andrii] Also available at: https://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git bpf/d_path thanks, jirka --- Jiri Olsa (11): bpf: Add btfid tool to resolve BTF IDs in ELF object bpf: Compile btfid tool at kernel compilation start bpf: Add btf_ids object bpf: Resolve BTF IDs in vmlinux image bpf: Remove btf_id helpers resolving bpf: Do not pass enum bpf_access_type to btf_struct_access bpf: Allow nested BTF object to be refferenced by BTF object + offset bpf: Add BTF whitelist support bpf: Add d_path helper selftests/bpf: Add verifier test for d_path helper selftests/bpf: Add test for d_path helper Makefile | 25 ++++- include/asm-generic/vmlinux.lds.h | 4 + include/linux/bpf.h | 16 ++- include/uapi/linux/bpf.h | 14 ++- kernel/bpf/Makefile | 2 +- kernel/bpf/btf.c | 149 +++++++++++-------------- kernel/bpf/btf_ids.c | 26 +++++ kernel/bpf/btf_ids.h | 108 ++++++++++++++++++ kernel/bpf/verifier.c | 39 +++++-- kernel/trace/bpf_trace.c | 40 ++++++- net/core/filter.c | 2 - net/ipv4/bpf_tcp_ca.c | 2 +- scripts/bpf_helpers_doc.py | 2 + scripts/link-vmlinux.sh | 6 + tools/Makefile | 3 + tools/bpf/Makefile | 5 +- tools/bpf/btfid/Build | 26 +++++ tools/bpf/btfid/Makefile | 71 ++++++++++++ tools/bpf/btfid/btfid.c | 627 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ tools/include/uapi/linux/bpf.h | 14 ++- tools/testing/selftests/bpf/prog_tests/d_path.c | 153 +++++++++++++++++++++++++ tools/testing/selftests/bpf/progs/test_d_path.c | 55 +++++++++ tools/testing/selftests/bpf/test_verifier.c | 13 ++- tools/testing/selftests/bpf/verifier/d_path.c | 38 +++++++ 24 files changed, 1329 insertions(+), 111 deletions(-) create mode 100644 kernel/bpf/btf_ids.c create mode 100644 kernel/bpf/btf_ids.h create mode 100644 tools/bpf/btfid/Build create mode 100644 tools/bpf/btfid/Makefile create mode 100644 tools/bpf/btfid/btfid.c create mode 100644 tools/testing/selftests/bpf/prog_tests/d_path.c create mode 100644 tools/testing/selftests/bpf/progs/test_d_path.c create mode 100644 tools/testing/selftests/bpf/verifier/d_path.c