summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-objdump/llvm-objdump.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/tools/llvm-objdump/llvm-objdump.cpp')
-rw-r--r--llvm/tools/llvm-objdump/llvm-objdump.cpp19
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;
}
OpenPOWER on IntegriCloud