LLVM  4.0.0
IRObjectFile.h
Go to the documentation of this file.
1 //===- IRObjectFile.h - LLVM IR object file implementation ------*- 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 // This file declares the IRObjectFile template class.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef LLVM_OBJECT_IROBJECTFILE_H
15 #define LLVM_OBJECT_IROBJECTFILE_H
16 
17 #include "llvm/ADT/PointerUnion.h"
20 
21 namespace llvm {
22 class Mangler;
23 class Module;
24 class GlobalValue;
25 class Triple;
26 
27 namespace object {
28 class ObjectFile;
29 
30 class IRObjectFile : public SymbolicFile {
31  std::vector<std::unique_ptr<Module>> Mods;
32  ModuleSymbolTable SymTab;
34  std::vector<std::unique_ptr<Module>> Mods);
35 
36 public:
37  ~IRObjectFile() override;
38  void moveSymbolNext(DataRefImpl &Symb) const override;
39  std::error_code printSymbolName(raw_ostream &OS,
40  DataRefImpl Symb) const override;
41  uint32_t getSymbolFlags(DataRefImpl Symb) const override;
42  basic_symbol_iterator symbol_begin() const override;
43  basic_symbol_iterator symbol_end() const override;
44 
45  StringRef getTargetTriple() const;
46 
47  static inline bool classof(const Binary *v) {
48  return v->isIR();
49  }
50 
51  /// \brief Finds and returns bitcode embedded in the given object file, or an
52  /// error code if not found.
54 
55  /// \brief Finds and returns bitcode in the given memory buffer (which may
56  /// be either a bitcode file or a native object file with embedded bitcode),
57  /// or an error code if not found.
60 
63 };
64 }
65 }
66 
67 #endif
Represents either an error or a value T.
Definition: ErrorOr.h:68
LLVMContext & Context
This class is the base class for all object file types.
Definition: ObjectFile.h:178
Tagged union holding either a T or a Error.
basic_symbol_iterator symbol_begin() const override
bool isIR() const
Definition: Binary.h:126
static ErrorOr< MemoryBufferRef > findBitcodeInMemBuffer(MemoryBufferRef Object)
Finds and returns bitcode in the given memory buffer (which may be either a bitcode file or a native ...
std::error_code printSymbolName(raw_ostream &OS, DataRefImpl Symb) const override
static Expected< std::unique_ptr< IRObjectFile > > create(MemoryBufferRef Object, LLVMContext &Context)
basic_symbol_iterator symbol_end() const override
This is an important class for using LLVM in a threaded context.
Definition: LLVMContext.h:48
StringRef getTargetTriple() const
static bool classof(const Binary *v)
Definition: IRObjectFile.h:47
void moveSymbolNext(DataRefImpl &Symb) const override
static ErrorOr< MemoryBufferRef > findBitcodeInObject(const ObjectFile &Obj)
Finds and returns bitcode embedded in the given object file, or an error code if not found...
This class implements an extremely fast bulk output stream that can only output to a stream...
Definition: raw_ostream.h:44
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:47
uint32_t getSymbolFlags(DataRefImpl Symb) const override