diff options
Diffstat (limited to 'llvm/tools/llvm-objdump/llvm-objdump.cpp')
-rw-r--r-- | llvm/tools/llvm-objdump/llvm-objdump.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index 77c425d617e..610d54877ea 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -321,6 +321,10 @@ static std::error_code getRelocationValueString(const ELFObjectFile<ELFT> *Obj, const ELFFile<ELFT> &EF = *Obj->getELFFile(); const Elf_Shdr *sec = EF.getSection(Rel.d.a); + const Elf_Shdr *SymTab = EF.getSection(sec->sh_link); + assert(SymTab->sh_type == ELF::SHT_SYMTAB || + SymTab->sh_type == ELF::SHT_DYNSYM); + const Elf_Shdr *StrTab = EF.getSection(SymTab->sh_link); uint8_t type; StringRef res; int64_t addend = 0; @@ -351,8 +355,7 @@ static std::error_code getRelocationValueString(const ELFObjectFile<ELFT> *Obj, return EC; Target = *SecName; } else { - ErrorOr<StringRef> SymName = - EF.getSymbolName(EF.getSection(sec->sh_link), symb); + ErrorOr<StringRef> SymName = EF.getSymbolName(StrTab, symb); if (!SymName) return SymName.getError(); Target = *SymName; |