From 33e746f21bc5c13842efe5c1e251a41d69b8a6f9 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Tue, 21 Jul 2015 13:48:41 +0000 Subject: [PATCH] Simplify printing the soname. NFC. llvm-svn: 242786 --- llvm/tools/llvm-readobj/ELFDumper.cpp | 5 +++++ llvm/tools/llvm-readobj/ObjDumper.h | 1 + llvm/tools/llvm-readobj/llvm-readobj.cpp | 15 +-------------- 3 files changed, 7 insertions(+), 14 deletions(-) diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp index a03b617..a710ea9 100644 --- a/llvm/tools/llvm-readobj/ELFDumper.cpp +++ b/llvm/tools/llvm-readobj/ELFDumper.cpp @@ -57,6 +57,7 @@ public: void printNeededLibraries() override; void printProgramHeaders() override; void printHashTable() override; + void printLoadName() override; void printAttributes() override; void printMipsPLTGOT() override; @@ -1140,6 +1141,10 @@ void ELFDumper::printHashTable() { W.printList("Chains", HT->chains()); } +template void ELFDumper::printLoadName() { + outs() << "LoadName: " << Obj->getLoadName() << '\n'; +} + template void ELFDumper::printAttributes() { W.startLine() << "Attributes not implemented.\n"; diff --git a/llvm/tools/llvm-readobj/ObjDumper.h b/llvm/tools/llvm-readobj/ObjDumper.h index ad1b70f..206082f 100644 --- a/llvm/tools/llvm-readobj/ObjDumper.h +++ b/llvm/tools/llvm-readobj/ObjDumper.h @@ -38,6 +38,7 @@ public: virtual void printNeededLibraries() { } virtual void printProgramHeaders() { } virtual void printHashTable() { } + virtual void printLoadName() {} // Only implemented for ARM ELF at this time. virtual void printAttributes() { } diff --git a/llvm/tools/llvm-readobj/llvm-readobj.cpp b/llvm/tools/llvm-readobj/llvm-readobj.cpp index 28532d99..f0956f8 100644 --- a/llvm/tools/llvm-readobj/llvm-readobj.cpp +++ b/llvm/tools/llvm-readobj/llvm-readobj.cpp @@ -251,18 +251,6 @@ static std::error_code createDumper(const ObjectFile *Obj, StreamWriter &Writer, return readobj_error::unsupported_obj_file_format; } -static StringRef getLoadName(const ObjectFile *Obj) { - if (auto *ELF = dyn_cast(Obj)) - return ELF->getELFFile()->getLoadName(); - if (auto *ELF = dyn_cast(Obj)) - return ELF->getELFFile()->getLoadName(); - if (auto *ELF = dyn_cast(Obj)) - return ELF->getELFFile()->getLoadName(); - if (auto *ELF = dyn_cast(Obj)) - return ELF->getELFFile()->getLoadName(); - llvm_unreachable("Not ELF"); -} - /// @brief Dumps the specified object file. static void dumpObject(const ObjectFile *Obj) { StreamWriter Writer(outs()); @@ -279,8 +267,7 @@ static void dumpObject(const ObjectFile *Obj) { << Triple::getArchTypeName((llvm::Triple::ArchType)Obj->getArch()) << "\n"; outs() << "AddressSize: " << (8*Obj->getBytesInAddress()) << "bit\n"; - if (Obj->isELF()) - outs() << "LoadName: " << getLoadName(Obj) << "\n"; + Dumper->printLoadName(); if (opts::FileHeaders) Dumper->printFileHeaders(); -- 2.7.4