mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
52ce0c101e
This compiles with no changes to clang/lld/lldb with MSVC and includes overloads to various functions which are used by those projects and llvm which have OwningPtr's as parameters. This should allow out of tree projects some time to move. There are also no changes to libs/Target, which should help out of tree targets have time to move, if necessary. llvm-svn: 203083
47 lines
1.3 KiB
C++
47 lines
1.3 KiB
C++
//===- IRObjectFile.h - LLVM IR object file implementation ------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file declares the IRObjectFile template class.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_OBJECT_IR_OBJECT_FILE_H
|
|
#define LLVM_OBJECT_IR_OBJECT_FILE_H
|
|
|
|
#include "llvm/Object/SymbolicFile.h"
|
|
|
|
namespace llvm {
|
|
class Mangler;
|
|
class Module;
|
|
class GlobalValue;
|
|
|
|
namespace object {
|
|
class IRObjectFile : public SymbolicFile {
|
|
std::unique_ptr<Module> M;
|
|
std::unique_ptr<Mangler> Mang;
|
|
|
|
public:
|
|
IRObjectFile(MemoryBuffer *Object, error_code &EC, LLVMContext &Context,
|
|
bool BufferOwned);
|
|
void moveSymbolNext(DataRefImpl &Symb) const override;
|
|
error_code printSymbolName(raw_ostream &OS, DataRefImpl Symb) const override;
|
|
uint32_t getSymbolFlags(DataRefImpl Symb) const override;
|
|
const GlobalValue &getSymbolGV(DataRefImpl Symb) const;
|
|
basic_symbol_iterator symbol_begin_impl() const override;
|
|
basic_symbol_iterator symbol_end_impl() const override;
|
|
|
|
static inline bool classof(const Binary *v) {
|
|
return v->isIR();
|
|
}
|
|
};
|
|
}
|
|
}
|
|
|
|
#endif
|