Skip to content

Commit e7834bd

Browse files
committed
[llvm-objdump] Simplify Expected<T> handling with unwrapOrError
llvm-svn: 357855
1 parent 30eb575 commit e7834bd

File tree

4 files changed

+170
-327
lines changed

4 files changed

+170
-327
lines changed

llvm/tools/llvm-objdump/ELFDump.cpp

Lines changed: 13 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -163,16 +163,10 @@ uint64_t llvm::getELFSectionLMA(const object::ELFSectionRef &Sec) {
163163

164164
template <class ELFT>
165165
void printDynamicSection(const ELFFile<ELFT> *Elf, StringRef Filename) {
166-
auto ProgramHeaderOrError = Elf->program_headers();
167-
if (!ProgramHeaderOrError)
168-
report_error(Filename, ProgramHeaderOrError.takeError());
169-
170-
auto DynamicEntriesOrError = Elf->dynamicEntries();
171-
if (!DynamicEntriesOrError)
172-
report_error(Filename, DynamicEntriesOrError.takeError());
173-
166+
ArrayRef<typename ELFT::Dyn> DynamicEntries =
167+
unwrapOrError(Elf->dynamicEntries(), Filename);
174168
outs() << "Dynamic Section:\n";
175-
for (const auto &Dyn : *DynamicEntriesOrError) {
169+
for (const typename ELFT::Dyn &Dyn : DynamicEntries) {
176170
if (Dyn.d_tag == ELF::DT_NULL)
177171
continue;
178172

@@ -331,34 +325,23 @@ void printSymbolVersionDefinition(const typename ELFT::Shdr &Shdr,
331325

332326
template <class ELFT>
333327
void printSymbolVersionInfo(const ELFFile<ELFT> *Elf, StringRef FileName) {
334-
typedef typename ELFT::Shdr Elf_Shdr;
335-
336-
auto SectionsOrError = Elf->sections();
337-
if (!SectionsOrError)
338-
report_error(FileName, SectionsOrError.takeError());
339-
340-
for (const Elf_Shdr &Shdr : *SectionsOrError) {
328+
ArrayRef<typename ELFT::Shdr> Sections =
329+
unwrapOrError(Elf->sections(), FileName);
330+
for (const typename ELFT::Shdr &Shdr : Sections) {
341331
if (Shdr.sh_type != ELF::SHT_GNU_verneed &&
342332
Shdr.sh_type != ELF::SHT_GNU_verdef)
343333
continue;
344334

345-
auto ContentsOrError = Elf->getSectionContents(&Shdr);
346-
if (!ContentsOrError)
347-
report_error(FileName, ContentsOrError.takeError());
348-
349-
auto StrTabSecOrError = Elf->getSection(Shdr.sh_link);
350-
if (!StrTabSecOrError)
351-
report_error(FileName, StrTabSecOrError.takeError());
352-
353-
auto StrTabOrError = Elf->getStringTable(*StrTabSecOrError);
354-
if (!StrTabOrError)
355-
report_error(FileName, StrTabOrError.takeError());
335+
ArrayRef<uint8_t> Contents =
336+
unwrapOrError(Elf->getSectionContents(&Shdr), FileName);
337+
const typename ELFT::Shdr *StrTabSec =
338+
unwrapOrError(Elf->getSection(Shdr.sh_link), FileName);
339+
StringRef StrTab = unwrapOrError(Elf->getStringTable(StrTabSec), FileName);
356340

357341
if (Shdr.sh_type == ELF::SHT_GNU_verneed)
358-
printSymbolVersionDependency<ELFT>(*ContentsOrError, *StrTabOrError);
342+
printSymbolVersionDependency<ELFT>(Contents, StrTab);
359343
else
360-
printSymbolVersionDefinition<ELFT>(Shdr, *ContentsOrError,
361-
*StrTabOrError);
344+
printSymbolVersionDefinition<ELFT>(Shdr, Contents, StrTab);
362345
}
363346
}
364347

0 commit comments

Comments
 (0)