On 04/03/2019 10:46 AM, Jiri Olsa wrote: > On Tue, Apr 02, 2019 at 09:49:50AM -0700, andrii.nakryiko@xxxxxxxxx wrote: >> From: Andrii Nakryiko <andriin@xxxxxx> >> >> This patch adds new config option to trigger generation of BTF type >> information from DWARF debuginfo for vmlinux and kernel modules through >> pahole, which in turn relies on libbpf for btf_dedup() algorithm. >> >> The intent is to record compact type information of all types used >> inside kernel, including all the structs/unions/typedefs/etc. This >> enables BPF's compile-once-run-everywhere ([0]) approach, in which >> tracing programs that are inspecting kernel's internal data (e.g., >> struct task_struct) can be compiled on a system running some kernel >> version, but would be possible to run on other kernel versions (and >> configurations) without recompilation, even if the layout of structs >> changed and/or some of the fields were added, removed, or renamed. >> >> This is only possible if BPF loader can get kernel type info to adjust >> all the offsets correctly. This patch is a first time in this direction, >> making sure that BTF type info is part of Linux kernel image in >> non-loadable ELF section. >> >> BTF deduplication ([1]) algorithm typically provides 100x savings >> compared to DWARF data, so resulting .BTF section is not big as is >> typically about 2MB in size. > > hi, > I'm using the latest pahole from git tree: > https://github.com/acmel/dwarves.git > > and getting pahole crash: > > LD vmlinux > BTF vmlinux > die__process_inline_expansion: DW_TAG_label (0xa) @ <0x3eef8> not handled! > scripts/link-vmlinux.sh: line 96: 31222 Segmentation fault (core dumped) LLVM_OBJCOPY=${OBJCOPY} ${PAHOLE} -J ${1} > make[1]: *** [/home/jolsa/linux/Makefile:1025: vmlinux] Error 139 > make: *** [Makefile:170: sub-make] Error 2 > > is there some other source/dependency I'm missing? Yesterday night, I've tested with [0] but seems to have the same HEAD as the github repo you pointed out. Seems the above is coming from pahole's __die__process_tag() bailing out with default for DW_TAG_label? On my side worked fine: # rm vmlinux # make -j8 DESCEND objtool CALL scripts/atomic/check-atomics.sh CALL scripts/checksyscalls.sh CHK include/generated/compile.h GEN .version CHK include/generated/compile.h UPD include/generated/compile.h CC init/version.o AR init/built-in.a LD vmlinux.o MODPOST vmlinux.o KSYM .tmp_kallsyms1.o KSYM .tmp_kallsyms2.o LD vmlinux BTF vmlinux <-- SORTEX vmlinux SYSMAP System.map Building modules, stage 2. CC arch/x86/boot/version.o VOFFSET arch/x86/boot/compressed/../voffset.h OBJCOPY arch/x86/boot/compressed/vmlinux.bin RELOCS arch/x86/boot/compressed/vmlinux.relocs CC arch/x86/boot/compressed/kaslr.o CC arch/x86/boot/compressed/misc.o GZIP arch/x86/boot/compressed/vmlinux.bin.gz MKPIGGY arch/x86/boot/compressed/piggy.S AS arch/x86/boot/compressed/piggy.o LD arch/x86/boot/compressed/vmlinux ZOFFSET arch/x86/boot/zoffset.h OBJCOPY arch/x86/boot/vmlinux.bin AS arch/x86/boot/header.o LD arch/x86/boot/setup.elf OBJCOPY arch/x86/boot/setup.bin BUILD arch/x86/boot/bzImage Setup is 17660 bytes (padded to 17920 bytes). System is 9245 kB CRC 24cd7eff Kernel: arch/x86/boot/bzImage is ready (#15) MODPOST 4979 modules [0] https://git.kernel.org/pub/scm/devel/pahole/pahole.git/