• Stanislav Fomichev's avatar
    bpf: Force .BTF section start to zero when dumping from vmlinux · df786c9b
    Stanislav Fomichev authored
    While trying to figure out why fentry_fexit selftest doesn't pass for me
    (old pahole, broken BTF), I found out that my latest patch can break vmlinux
    .BTF generation. objcopy preserves section start when doing --only-section,
    so there is a chance (depending on where pahole inserts .BTF section) to
    have leading empty zeroes. Let's explicitly force section offset to zero.
    
    Before:
    
    $ objcopy --set-section-flags .BTF=alloc -O binary \
    	--only-section=.BTF vmlinux .btf.vmlinux.bin
    $ xxd .btf.vmlinux.bin | head -n1
    00000000: 0000 0000 0000 0000 0000 0000 0000 0000  ................
    
    After:
    
    $ objcopy --change-section-address .BTF=0 \
    	--set-section-flags .BTF=alloc -O binary \
    	--only-section=.BTF vmlinux .btf.vmlinux.bin
    $ xxd .btf.vmlinux.bin | head -n1
    00000000: 9feb 0100 1800 0000 0000 0000 80e1 1c00  ................
              ^BTF magic
    
    As part of this change, I'm also dropping '2>/dev/null' from objcopy
    invocation to be able to catch possible other issues (objcopy doesn't
    produce any warnings for me anymore, it did before with --dump-section).
    
    Fixes: da5fb182 ("bpf: Support pre-2.25-binutils objcopy for vmlinux BTF")
    Signed-off-by: default avatarStanislav Fomichev <sdf@google.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Acked-by: default avatarJohn Fastabend <john.fastabend@gmail.com>
    Cc: Andrii Nakryiko <andriin@fb.com>
    Link: https://lore.kernel.org/bpf/20191127225759.39923-1-sdf@google.com
    df786c9b
link-vmlinux.sh 7.69 KB