]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/llvm-readobj/COFFImportDumper.cpp
Upgrade Unbound to 1.6.0. More to follow.
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / llvm-readobj / COFFImportDumper.cpp
1 //===-- COFFImportDumper.cpp - COFF import library dumper -------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 ///
10 /// \file
11 /// \brief This file implements the COFF import library dumper for llvm-readobj.
12 ///
13 //===----------------------------------------------------------------------===//
14
15 #include "llvm/BinaryFormat/COFF.h"
16 #include "llvm/Object/COFF.h"
17 #include "llvm/Object/COFFImportFile.h"
18
19 using namespace llvm::object;
20
21 namespace llvm {
22
23 void dumpCOFFImportFile(const COFFImportFile *File) {
24   outs() << '\n';
25   outs() << "File: " << File->getFileName() << "\n";
26   outs() << "Format: COFF-import-file\n";
27
28   const coff_import_header *H = File->getCOFFImportHeader();
29   switch (H->getType()) {
30   case COFF::IMPORT_CODE:  outs() << "Type: code\n"; break;
31   case COFF::IMPORT_DATA:  outs() << "Type: data\n"; break;
32   case COFF::IMPORT_CONST: outs() << "Type: const\n"; break;
33   }
34
35   switch (H->getNameType()) {
36   case COFF::IMPORT_ORDINAL: outs() << "Name type: ordinal\n"; break;
37   case COFF::IMPORT_NAME: outs() << "Name type: name\n"; break;
38   case COFF::IMPORT_NAME_NOPREFIX: outs() << "Name type: noprefix\n"; break;
39   case COFF::IMPORT_NAME_UNDECORATE: outs() << "Name type: undecorate\n"; break;
40   }
41
42   for (const object::BasicSymbolRef &Sym : File->symbols()) {
43     outs() << "Symbol: ";
44     Sym.printName(outs());
45     outs() << "\n";
46   }
47 }
48
49 } // namespace llvm