diff options
author | Michael Ellerman <mpe@ellerman.id.au> | 2022-12-08 23:57:47 +1100 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2022-12-08 23:57:47 +1100 |
commit | f24f21c4122e837fa031cc512a7f20eb8c554c5e (patch) | |
tree | b19acb396850fbfb36218329659b926446c24914 /tools/objtool/orc_dump.c | |
parent | 64fdcbcc064966bbf261bb455876dffa58858d32 (diff) | |
parent | a39818a3fb2bf12ae945a7c5fba8c5d9048a0e96 (diff) | |
download | linux-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.c | 11 |
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); |