[all-commits] [llvm/llvm-project] d15f96: [BPF][DebugInfo] Show CO-RE relocations in llvm-ob...
eddyz87 via All-commits
all-commits at lists.llvm.org
Thu Sep 21 12:00:31 PDT 2023
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: d15f96fe4b64e24d262fcc727dc0eede327804ba
https://github.com/llvm/llvm-project/commit/d15f96fe4b64e24d262fcc727dc0eede327804ba
Author: Eduard Zingerman <eddyz87 at gmail.com>
Date: 2023-09-21 (Thu, 21 Sep 2023)
Changed paths:
M llvm/include/llvm/DebugInfo/BTF/BTF.h
M llvm/include/llvm/DebugInfo/BTF/BTFParser.h
M llvm/lib/DebugInfo/BTF/BTFContext.cpp
M llvm/lib/DebugInfo/BTF/BTFParser.cpp
M llvm/lib/Target/BPF/BPFAbstractMemberAccess.cpp
M llvm/lib/Target/BPF/BPFCORE.h
M llvm/lib/Target/BPF/BPFPreserveDIType.cpp
M llvm/lib/Target/BPF/BTFDebug.cpp
A llvm/test/tools/llvm-objdump/BPF/core-relo-byte-offset.ll
A llvm/test/tools/llvm-objdump/BPF/core-relo-enum-value.ll
A llvm/test/tools/llvm-objdump/BPF/core-relo-field-info.ll
A llvm/test/tools/llvm-objdump/BPF/core-relo-formatting.s
A llvm/test/tools/llvm-objdump/BPF/core-relo-type-id.ll
A llvm/test/tools/llvm-objdump/BPF/core-relo-type-info.ll
M llvm/tools/llvm-objdump/CMakeLists.txt
M llvm/tools/llvm-objdump/llvm-objdump.cpp
M llvm/unittests/DebugInfo/BTF/BTFParserTest.cpp
Log Message:
-----------
[BPF][DebugInfo] Show CO-RE relocations in llvm-objdump
Extend llvm-objdump to show CO-RE relocations when `-r` option is
passed and object file has .BTF and .BTF.ext sections.
For example, the following C program:
#define __pai __attribute__((preserve_access_index))
struct foo { int i; int j;} __pai;
struct bar { struct foo f[7]; } __pai;
extern void sink(void *);
void root(struct bar *bar) {
sink(&bar[2].f[3].j);
}
Should lead to the following objdump output:
$ clang --target=bpf -O2 -g t.c -c -o - | \
llvm-objdump --no-addresses --no-show-raw-insn -dr -
...
r2 = 0x94
CO-RE <byte_off> [2] struct bar::[2].f[3].j (2:0:3:1)
r1 += r2
call -0x1
R_BPF_64_32 sink
exit
...
More examples could be found in unit tests, see BTFParserTest.cpp.
To achieve this:
- Move CO-RE relocation kinds definitions from BPFCORE.h to BTF.h.
- Extend BTF.h with types derived from BTF::CommonType, e.g.
BTF::IntType and BTF::StrutType, to allow dyn_cast() and access to
type additional data.
- Extend BTFParser to load BTF type and relocation data.
- Modify llvm-objdump.cpp to create instance of BTFParser when
disassembly of object file with BTF sections is processed and `-r`
flag is supplied.
Additional information about CO-RE is available at [1].
[1] https://docs.kernel.org/bpf/llvm_reloc.html
Depends on D149058
Differential Revision: https://reviews.llvm.org/D150079
More information about the All-commits
mailing list