diff options
Diffstat (limited to 'llvm/tools/llvm-objdump/llvm-objdump.cpp')
-rw-r--r-- | llvm/tools/llvm-objdump/llvm-objdump.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index 4fc4affa7f9..bff63e47b92 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -37,6 +37,7 @@ #include "llvm/MC/MCSubtargetInfo.h" #include "llvm/Object/Archive.h" #include "llvm/Object/COFF.h" +#include "llvm/Object/COFFImportFile.h" #include "llvm/Object/ELFObjectFile.h" #include "llvm/Object/MachO.h" #include "llvm/Object/ObjectFile.h" @@ -1824,6 +1825,20 @@ static void DumpObject(const ObjectFile *o, const Archive *a = nullptr) { } } +static void DumpObject(const COFFImportFile *I, const Archive *A) { + StringRef ArchiveName = A ? A->getFileName() : ""; + + // Avoid other output when using a raw option. + if (!RawClangAST) + outs() << '\n' + << ArchiveName << "(" << I->getFileName() << ")" + << ":\tfile format COFF-import-file" + << "\n\n"; + + if (SymbolTable) + printCOFFSymbolTable(I); +} + /// @brief Dump each object file in \a a; static void DumpArchive(const Archive *a) { Error Err; @@ -1836,6 +1851,8 @@ static void DumpArchive(const Archive *a) { } if (ObjectFile *o = dyn_cast<ObjectFile>(&*ChildOrErr.get())) DumpObject(o, a); + else if (COFFImportFile *I = dyn_cast<COFFImportFile>(&*ChildOrErr.get())) + DumpObject(I, a); else report_error(a->getFileName(), object_error::invalid_file_type); } |