On Mon, Jun 08, 2020 at 01:39:59PM +0000, Maria Teguiani wrote: > From: Fangrui Song <maskray@xxxxxxxxxx> > > Simplify gen_btf logic to make it work with llvm-objcopy. The existing > 'file format' and 'architecture' parsing logic is brittle and does not > work with llvm-objcopy/llvm-objdump. > > 'file format' output of llvm-objdump>=11 will match GNU objdump, but > 'architecture' (bfdarch) may not. > > .BTF in .tmp_vmlinux.btf is non-SHF_ALLOC. Add the SHF_ALLOC flag > because it is part of vmlinux image used for introspection. C code > can reference the section via linker script defined __start_BTF and > __stop_BTF. This fixes a small problem that previous .BTF had the > SHF_WRITE flag (objcopy -I binary -O elf* synthesized .data). > > Additionally, `objcopy -I binary` synthesized symbols > _binary__btf_vmlinux_bin_start and _binary__btf_vmlinux_bin_stop (not > used elsewhere) are replaced with more commonplace __start_BTF and > __stop_BTF. > > Add 2>/dev/null because GNU objcopy (but not llvm-objcopy) warns > "empty loadable segment detected at vaddr=0xffffffff81000000, is this intentional?" > > We use a dd command to change the e_type field in the ELF header from > ET_EXEC to ET_REL so that lld will accept .btf.vmlinux.bin.o. Accepting > ET_EXEC as an input file is an extremely rare GNU ld feature that lld > does not intend to support, because this is error-prone. > > The output section description .BTF in include/asm-generic/vmlinux.lds.h > avoids potential subtle orphan section placement issues and suppresses > --orphan-handling=warn warnings. > > Fixes: df786c9b9476 ("bpf: Force .BTF section start to zero when dumping from vmlinux") > Fixes: cb0cc635c7a9 ("powerpc: Include .BTF section") > Reported-by: Nathan Chancellor <natechancellor@xxxxxxxxx> > Signed-off-by: Fangrui Song <maskray@xxxxxxxxxx> > Signed-off-by: Daniel Borkmann <daniel@xxxxxxxxxxxxx> > Tested-by: Stanislav Fomichev <sdf@xxxxxxxxxx> > Tested-by: Andrii Nakryiko <andriin@xxxxxx> > Reviewed-by: Stanislav Fomichev <sdf@xxxxxxxxxx> > Reviewed-by: Kees Cook <keescook@xxxxxxxxxxxx> > Acked-by: Andrii Nakryiko <andriin@xxxxxx> > Acked-by: Michael Ellerman <mpe@xxxxxxxxxxxxxx> (powerpc) > Link: https://github.com/ClangBuiltLinux/linux/issues/871 > Link: https://lore.kernel.org/bpf/20200318222746.173648-1-maskray@xxxxxxxxxx > (cherry picked from commit 90ceddcb495008ac8ba7a3dce297841efcd7d584) > Cc: <stable@xxxxxxxxxxxxxxx> # 5.4.x > Signed-off-by: Maria Teguiani <teguiani@xxxxxxxxxx> I've also queued this up to the 5.6.y tree, thanks. greg k-h