|  | //===-- 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 | 
|  | /// This file implements the COFF import library dumper for llvm-readobj. | 
|  | /// | 
|  | //===----------------------------------------------------------------------===// | 
|  |  | 
|  | #include "llvm/BinaryFormat/COFF.h" | 
|  | #include "llvm/Object/COFF.h" | 
|  | #include "llvm/Object/COFFImportFile.h" | 
|  | #include "llvm/Support/ScopedPrinter.h" | 
|  |  | 
|  | using namespace llvm::object; | 
|  |  | 
|  | namespace llvm { | 
|  |  | 
|  | void dumpCOFFImportFile(const COFFImportFile *File, ScopedPrinter &Writer) { | 
|  | Writer.startLine() << '\n'; | 
|  | Writer.printString("File", File->getFileName()); | 
|  | Writer.printString("Format", "COFF-import-file"); | 
|  |  | 
|  | const coff_import_header *H = File->getCOFFImportHeader(); | 
|  | switch (H->getType()) { | 
|  | case COFF::IMPORT_CODE:  Writer.printString("Type", "code"); break; | 
|  | case COFF::IMPORT_DATA:  Writer.printString("Type", "data"); break; | 
|  | case COFF::IMPORT_CONST: Writer.printString("Type", "const"); break; | 
|  | } | 
|  |  | 
|  | switch (H->getNameType()) { | 
|  | case COFF::IMPORT_ORDINAL: | 
|  | Writer.printString("Name type", "ordinal"); | 
|  | break; | 
|  | case COFF::IMPORT_NAME: | 
|  | Writer.printString("Name type", "name"); | 
|  | break; | 
|  | case COFF::IMPORT_NAME_NOPREFIX: | 
|  | Writer.printString("Name type", "noprefix"); | 
|  | break; | 
|  | case COFF::IMPORT_NAME_UNDECORATE: | 
|  | Writer.printString("Name type", "undecorate"); | 
|  | break; | 
|  | } | 
|  |  | 
|  | for (const object::BasicSymbolRef &Sym : File->symbols()) { | 
|  | raw_ostream &OS = Writer.startLine(); | 
|  | OS << "Symbol: "; | 
|  | Sym.printName(OS); | 
|  | OS << "\n"; | 
|  | } | 
|  | } | 
|  |  | 
|  | } // namespace llvm |