summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-readobj/COFFImportDumper.cpp
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2015-08-28 10:27:50 +0000
committerRui Ueyama <ruiu@google.com>2015-08-28 10:27:50 +0000
commit932108912da708100870db5bb901a079878ce7ed (patch)
treee46bc7b5aa603c85fb0422b171e1926d6bf04036 /llvm/tools/llvm-readobj/COFFImportDumper.cpp
parentb409fdc0d767d5073342367aaad2865d660a92f7 (diff)
downloadbcm5719-llvm-932108912da708100870db5bb901a079878ce7ed.tar.gz
bcm5719-llvm-932108912da708100870db5bb901a079878ce7ed.zip
llvm-readobj: Dump more info for COFF import libraries.
This patch teaches llvm-readobj to print out COFF import file header fields. llvm-svn: 246291
Diffstat (limited to 'llvm/tools/llvm-readobj/COFFImportDumper.cpp')
-rw-r--r--llvm/tools/llvm-readobj/COFFImportDumper.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/llvm/tools/llvm-readobj/COFFImportDumper.cpp b/llvm/tools/llvm-readobj/COFFImportDumper.cpp
new file mode 100644
index 00000000000..83715e60f05
--- /dev/null
+++ b/llvm/tools/llvm-readobj/COFFImportDumper.cpp
@@ -0,0 +1,52 @@
+//===-- COFFImportDumper.cpp - COFF import library dumper -------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+///
+/// \file
+/// \brief This file implements the COFF import library dumper for llvm-readobj.
+///
+//===----------------------------------------------------------------------===//
+
+#include "Error.h"
+#include "ObjDumper.h"
+#include "llvm-readobj.h"
+#include "llvm/Object/COFF.h"
+#include "llvm/Object/COFFImportFile.h"
+#include "llvm/Support/COFF.h"
+
+using namespace llvm::object;
+
+namespace llvm {
+
+void dumpCOFFImportFile(const COFFImportFile *File) {
+ outs() << '\n';
+ outs() << "File: " << File->getFileName() << "\n";
+ outs() << "Format: COFF-import-file\n";
+
+ const coff_import_header *H = File->getCOFFImportHeader();
+ switch (H->getType()) {
+ case COFF::IMPORT_CODE: outs() << "Type: code\n"; break;
+ case COFF::IMPORT_DATA: outs() << "Type: data\n"; break;
+ case COFF::IMPORT_CONST: outs() << "Type: const\n"; break;
+ }
+
+ switch (H->getNameType()) {
+ case COFF::IMPORT_ORDINAL: outs() << "Name type: ordinal\n"; break;
+ case COFF::IMPORT_NAME: outs() << "Name type: name\n"; break;
+ case COFF::IMPORT_NAME_NOPREFIX: outs() << "Name type: noprefix\n"; break;
+ case COFF::IMPORT_NAME_UNDECORATE: outs() << "Name type: undecorate\n"; break;
+ }
+
+ for (const object::BasicSymbolRef &Sym : File->symbols()) {
+ outs() << "Symbol: ";
+ Sym.printName(outs());
+ outs() << "\n";
+ }
+}
+
+} // namespace llvm
OpenPOWER on IntegriCloud