[BPF] Fix bpf llvm-objdump issues.
authorYonghong Song <yhs@fb.com>
Sat, 17 Aug 2019 22:12:00 +0000 (22:12 +0000)
committerYonghong Song <yhs@fb.com>
Sat, 17 Aug 2019 22:12:00 +0000 (22:12 +0000)
commita8dad5c79b64523e4c39d2ee32739f8894d40129
treec87f20156c04bce36e605b855e16d1a874edb97f
parent37a928efd9f579126d5290f1ebb830eac053739a
[BPF] Fix bpf llvm-objdump issues.

Commit https://reviews.llvm.org/D57939 ("[DWARF] Refactor
RelocVisitor and fix computation of SHT_RELA-typed relocation entries)
made a change for relocation resolution when operating
on an object file.

The change unfortunately broke BPF as given SymbolValue (S) and
Addent (A), previously relocation is resolved to
    S + A
and after the change, it is resolved to
    S

This patch fixed the issue by resolving relocation correctly.

It looks not all relocation resolution reaches here and I did not
trace down exactly when. But I do find if the object file includes
codes in two different ELF sections than default ".text",
the above bug will be triggered.

This patch included a trivial two function source code to
demonstrate this issue. The relocation for .debug_loc is resolved
incorrectly due to this and llvm-objdump cannot display source
annotated assembly.

Differential Revision: https://reviews.llvm.org/D66372

llvm-svn: 369199
llvm/lib/Object/RelocationResolver.cpp
llvm/test/CodeGen/BPF/objdump_two_funcs.ll [new file with mode: 0644]