diff options
Diffstat (limited to 'llvm/tools/llvm-readobj/DwarfCFIEHPrinter.h')
| -rw-r--r-- | llvm/tools/llvm-readobj/DwarfCFIEHPrinter.h | 42 |
1 files changed, 17 insertions, 25 deletions
diff --git a/llvm/tools/llvm-readobj/DwarfCFIEHPrinter.h b/llvm/tools/llvm-readobj/DwarfCFIEHPrinter.h index fdd01e12283..440b644e4a7 100644 --- a/llvm/tools/llvm-readobj/DwarfCFIEHPrinter.h +++ b/llvm/tools/llvm-readobj/DwarfCFIEHPrinter.h @@ -44,12 +44,12 @@ public: void printUnwindInformation() const; }; -template <class ELFT> -static const typename object::ELFObjectFile<ELFT>::Elf_Shdr * -findSectionByAddress(const object::ELFObjectFile<ELFT> *ObjF, uint64_t Addr) { - auto Sections = ObjF->getELFFile()->sections(); +template <class ELFO> +static const typename ELFO::Elf_Shdr *findSectionByAddress(const ELFO *Obj, + uint64_t Addr) { + auto Sections = Obj->sections(); if (Error E = Sections.takeError()) - reportError(std::move(E), ObjF->getFileName()); + reportError(toString(std::move(E))); for (const auto &Shdr : *Sections) if (Shdr.sh_addr == Addr) @@ -64,15 +64,13 @@ void PrinterContext<ELFT>::printUnwindInformation() const { auto PHs = Obj->program_headers(); if (Error E = PHs.takeError()) - reportError(std::move(E), ObjF->getFileName()); + reportError(toString(std::move(E))); for (const auto &Phdr : *PHs) { if (Phdr.p_type == ELF::PT_GNU_EH_FRAME) { EHFramePhdr = &Phdr; if (Phdr.p_memsz != Phdr.p_filesz) - reportError(object::createError( - "p_memsz does not match p_filesz for GNU_EH_FRAME"), - ObjF->getFileName()); + reportError("p_memsz does not match p_filesz for GNU_EH_FRAME"); break; } } @@ -83,12 +81,12 @@ void PrinterContext<ELFT>::printUnwindInformation() const { auto Sections = Obj->sections(); if (Error E = Sections.takeError()) - reportError(std::move(E), ObjF->getFileName()); + reportError(toString(std::move(E))); for (const auto &Shdr : *Sections) { auto SectionName = Obj->getSectionName(&Shdr); if (Error E = SectionName.takeError()) - reportError(std::move(E), ObjF->getFileName()); + reportError(toString(std::move(E))); if (*SectionName == ".eh_frame") printEHFrame(&Shdr); @@ -105,11 +103,11 @@ void PrinterContext<ELFT>::printEHFrameHdr(uint64_t EHFrameHdrOffset, W.startLine() << format("Size: 0x%" PRIx64 "\n", EHFrameHdrSize); const object::ELFFile<ELFT> *Obj = ObjF->getELFFile(); - const auto *EHFrameHdrShdr = findSectionByAddress(ObjF, EHFrameHdrAddress); + const auto *EHFrameHdrShdr = findSectionByAddress(Obj, EHFrameHdrAddress); if (EHFrameHdrShdr) { auto SectionName = Obj->getSectionName(EHFrameHdrShdr); if (Error E = SectionName.takeError()) - reportError(std::move(E), ObjF->getFileName()); + reportError(toString(std::move(E))); W.printString("Corresponding Section", *SectionName); } @@ -126,27 +124,22 @@ void PrinterContext<ELFT>::printEHFrameHdr(uint64_t EHFrameHdrOffset, auto Version = DE.getU8(&Offset); W.printNumber("version", Version); if (Version != 1) - reportError( - object::createError("only version 1 of .eh_frame_hdr is supported"), - ObjF->getFileName()); + reportError("only version 1 of .eh_frame_hdr is supported"); uint64_t EHFramePtrEnc = DE.getU8(&Offset); W.startLine() << format("eh_frame_ptr_enc: 0x%" PRIx64 "\n", EHFramePtrEnc); if (EHFramePtrEnc != (dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4)) - reportError(object::createError("unexpected encoding eh_frame_ptr_enc"), - ObjF->getFileName()); + reportError("unexpected encoding eh_frame_ptr_enc"); uint64_t FDECountEnc = DE.getU8(&Offset); W.startLine() << format("fde_count_enc: 0x%" PRIx64 "\n", FDECountEnc); if (FDECountEnc != dwarf::DW_EH_PE_udata4) - reportError(object::createError("unexpected encoding fde_count_enc"), - ObjF->getFileName()); + reportError("unexpected encoding fde_count_enc"); uint64_t TableEnc = DE.getU8(&Offset); W.startLine() << format("table_enc: 0x%" PRIx64 "\n", TableEnc); if (TableEnc != (dwarf::DW_EH_PE_datarel | dwarf::DW_EH_PE_sdata4)) - reportError(object::createError("unexpected encoding table_enc"), - ObjF->getFileName()); + reportError("unexpected encoding table_enc"); auto EHFramePtr = DE.getSigned(&Offset, 4) + EHFrameHdrAddress + 4; W.startLine() << format("eh_frame_ptr: 0x%" PRIx64 "\n", EHFramePtr); @@ -165,8 +158,7 @@ void PrinterContext<ELFT>::printEHFrameHdr(uint64_t EHFrameHdrOffset, W.startLine() << format("address: 0x%" PRIx64 "\n", Address); if (InitialPC < PrevPC) - reportError(object::createError("initial_location is out of order"), - ObjF->getFileName()); + reportError("initial_location is out of order"); PrevPC = InitialPC; ++NumEntries; @@ -186,7 +178,7 @@ void PrinterContext<ELFT>::printEHFrame( const object::ELFFile<ELFT> *Obj = ObjF->getELFFile(); auto Result = Obj->getSectionContents(EHFrameShdr); if (Error E = Result.takeError()) - reportError(std::move(E), ObjF->getFileName()); + reportError(toString(std::move(E))); auto Contents = Result.get(); DWARFDataExtractor DE( |

