aboutsummaryrefslogtreecommitdiff
path: root/tools/objtool/orc_dump.c
diff options
context:
space:
mode:
authorMichael Ellerman <mpe@ellerman.id.au>2022-12-08 23:57:47 +1100
committerMichael Ellerman <mpe@ellerman.id.au>2022-12-08 23:57:47 +1100
commitf24f21c4122e837fa031cc512a7f20eb8c554c5e (patch)
treeb19acb396850fbfb36218329659b926446c24914 /tools/objtool/orc_dump.c
parent64fdcbcc064966bbf261bb455876dffa58858d32 (diff)
parenta39818a3fb2bf12ae945a7c5fba8c5d9048a0e96 (diff)
downloadlinux-f24f21c4122e837fa031cc512a7f20eb8c554c5e.tar.gz
linux-f24f21c4122e837fa031cc512a7f20eb8c554c5e.tar.bz2
linux-f24f21c4122e837fa031cc512a7f20eb8c554c5e.zip
Merge branch 'topic/objtool' into next
Merge the powerpc objtool support, which we were keeping in a topic branch in case of any merge conflicts.
Diffstat (limited to 'tools/objtool/orc_dump.c')
-rw-r--r--tools/objtool/orc_dump.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/tools/objtool/orc_dump.c b/tools/objtool/orc_dump.c
index f5a8508c42d6..4f1211fec82c 100644
--- a/tools/objtool/orc_dump.c
+++ b/tools/objtool/orc_dump.c
@@ -76,6 +76,7 @@ int orc_dump(const char *_objname)
GElf_Rela rela;
GElf_Sym sym;
Elf_Data *data, *symtab = NULL, *rela_orc_ip = NULL;
+ struct elf dummy_elf = {};
objname = _objname;
@@ -94,6 +95,12 @@ int orc_dump(const char *_objname)
return -1;
}
+ if (!elf64_getehdr(elf)) {
+ WARN_ELF("elf64_getehdr");
+ return -1;
+ }
+ memcpy(&dummy_elf.ehdr, elf64_getehdr(elf), sizeof(dummy_elf.ehdr));
+
if (elf_getshdrnum(elf, &nr_sections)) {
WARN_ELF("elf_getshdrnum");
return -1;
@@ -198,11 +205,11 @@ int orc_dump(const char *_objname)
printf(" sp:");
- print_reg(orc[i].sp_reg, bswap_if_needed(orc[i].sp_offset));
+ print_reg(orc[i].sp_reg, bswap_if_needed(&dummy_elf, orc[i].sp_offset));
printf(" bp:");
- print_reg(orc[i].bp_reg, bswap_if_needed(orc[i].bp_offset));
+ print_reg(orc[i].bp_reg, bswap_if_needed(&dummy_elf, orc[i].bp_offset));
printf(" type:%s end:%d\n",
orc_type_name(orc[i].type), orc[i].end);