diff options
Diffstat (limited to 'llvm/tools/llvm-objdump/llvm-objdump.cpp')
-rw-r--r-- | llvm/tools/llvm-objdump/llvm-objdump.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index 3089ff75303..2ee34e48e41 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -284,13 +284,16 @@ LLVM_ATTRIBUTE_NORETURN void llvm::report_error(StringRef File, LLVM_ATTRIBUTE_NORETURN void llvm::report_error(StringRef ArchiveName, StringRef FileName, - llvm::Error E) { + llvm::Error E, + StringRef ArchitectureName) { assert(E); errs() << ToolName << ": "; if (ArchiveName != "") errs() << ArchiveName << "(" << FileName << ")"; else errs() << FileName; + if (!ArchitectureName.empty()) + errs() << " (for architecture " << ArchitectureName << ")"; std::string Buf; raw_string_ostream OS(Buf); logAllUnhandledErrors(std::move(E), OS, ""); @@ -301,15 +304,17 @@ LLVM_ATTRIBUTE_NORETURN void llvm::report_error(StringRef ArchiveName, LLVM_ATTRIBUTE_NORETURN void llvm::report_error(StringRef ArchiveName, const object::Archive::Child &C, - llvm::Error E) { + llvm::Error E, + StringRef ArchitectureName) { ErrorOr<StringRef> NameOrErr = C.getName(); // TODO: if we have a error getting the name then it would be nice to print // the index of which archive member this is and or its offset in the // archive instead of "???" as the name. if (NameOrErr.getError()) - llvm::report_error(ArchiveName, "???", std::move(E)); + llvm::report_error(ArchiveName, "???", std::move(E), ArchitectureName); else - llvm::report_error(ArchiveName, NameOrErr.get(), std::move(E)); + llvm::report_error(ArchiveName, NameOrErr.get(), std::move(E), + ArchitectureName); } static const Target *getTarget(const ObjectFile *Obj = nullptr) { @@ -1377,7 +1382,8 @@ void llvm::PrintSectionContents(const ObjectFile *Obj) { } } -void llvm::PrintSymbolTable(const ObjectFile *o, StringRef ArchiveName) { +void llvm::PrintSymbolTable(const ObjectFile *o, StringRef ArchiveName, + StringRef ArchitectureName) { outs() << "SYMBOL TABLE:\n"; if (const COFFObjectFile *coff = dyn_cast<const COFFObjectFile>(o)) { @@ -1402,7 +1408,8 @@ void llvm::PrintSymbolTable(const ObjectFile *o, StringRef ArchiveName) { } else { Expected<StringRef> NameOrErr = Symbol.getName(); if (!NameOrErr) - report_error(ArchiveName, o->getFileName(), NameOrErr.takeError()); + report_error(ArchiveName, o->getFileName(), NameOrErr.takeError(), + ArchitectureName); Name = *NameOrErr; } |