On Sat, 2018-06-16 at 13:02 -0700, Yonghong Song wrote: > Due to libdw does not have proper BPF relocation support, > the pahole cannot display filenames correctly for objects > with default llvm options. So we have to invent > a special option "llc -march=bpf -mattr=dwarfris" to > prevent llvm from generating cross-section dwarf relocation > records (https://reviews.llvm.org/rL326505). > The pahole related discussion is in linux netdev > mailing list (http://lists.openwall.net/netdev/2018/06/15/38, etc.) > > We would like to add proper BPF relocation support > to libdw so eventually we could retire the special llc bpf > flag "-mattr=dwarfris". > > The bpf relocations are defined in > llvm_repo:include/llvm/BinaryFormat/ELFRelocs/BPF.def: > ELF_RELOC(R_BPF_NONE, 0) > ELF_RELOC(R_BPF_64_64, 1) > ELF_RELOC(R_BPF_64_32, 10) > > Removed the relocation type R_BPF_MAP_FD whoes name does not > confirm to llvm definition and replaced it with R_BPF_64_64. > The BPF object is just a relocatible object, not an executable or > a shared library, so assign ELF type to REL only in bpf_reloc.def. > > Signed-off-by: Yonghong Song <y...@fb.com> > --- > backends/ChangeLog | 7 +++++ > backends/Makefile.am | 2 +- > backends/bpf_init.c | 1 + > backends/bpf_reloc.def | 3 +- > backends/bpf_symbol.c | 54 > ++++++++++++++++++++++++++++++++++++ > libelf/elf.h | 3 +- > tests/ChangeLog | 9 ++++++ > tests/Makefile.am | 5 +++- > tests/run-reloc-bpf.sh | 33 ++++++++++++++++++++++ > tests/testfile-bpf-reloc.expect.bz2 | Bin 0 -> 300 bytes > tests/testfile-bpf-reloc.o.bz2 | Bin 0 -> 933 bytes > 11 files changed, 113 insertions(+), 4 deletions(-) > create mode 100644 backends/bpf_symbol.c > create mode 100755 tests/run-reloc-bpf.sh > create mode 100644 tests/testfile-bpf-reloc.expect.bz2 > create mode 100644 tests/testfile-bpf-reloc.o.bz2 > > Note: > I didn't add the Changelog to libelf/elf.h as I anticipate the > change will come from sync'ing with glibc. > If this patch version looks good, I can send another revision > once the libelf/elf.h is synced.
The patch looks perfect. And the new testcase is good. I used the testfile to quickly test eu-readelf --debug-dump also got the relocations right, and it did of course. Just waiting for the glibc elf.h update/sync and then I'll push this to master. Thanks, Mark