diff options
Diffstat (limited to 'include/llvm/Object/IRObjectFile.h')
-rw-r--r-- | include/llvm/Object/IRObjectFile.h | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/include/llvm/Object/IRObjectFile.h b/include/llvm/Object/IRObjectFile.h index 78f5b2b..b33cc26 100644 --- a/include/llvm/Object/IRObjectFile.h +++ b/include/llvm/Object/IRObjectFile.h @@ -25,20 +25,33 @@ namespace object { class IRObjectFile : public SymbolicFile { std::unique_ptr<Module> M; std::unique_ptr<Mangler> Mang; + std::vector<std::pair<std::string, uint32_t>> AsmSymbols; public: - IRObjectFile(MemoryBuffer *Object, error_code &EC, LLVMContext &Context, - bool BufferOwned); + IRObjectFile(std::unique_ptr<MemoryBuffer> Object, std::unique_ptr<Module> M); + ~IRObjectFile(); void moveSymbolNext(DataRefImpl &Symb) const override; - error_code printSymbolName(raw_ostream &OS, DataRefImpl Symb) const override; + std::error_code printSymbolName(raw_ostream &OS, + DataRefImpl Symb) const override; uint32_t getSymbolFlags(DataRefImpl Symb) const override; - const GlobalValue &getSymbolGV(DataRefImpl Symb) const; + const GlobalValue *getSymbolGV(DataRefImpl Symb) const; basic_symbol_iterator symbol_begin_impl() const override; basic_symbol_iterator symbol_end_impl() const override; + const Module &getModule() const { + return const_cast<IRObjectFile*>(this)->getModule(); + } + Module &getModule() { + return *M; + } + static inline bool classof(const Binary *v) { return v->isIR(); } + + static ErrorOr<IRObjectFile *> + createIRObjectFile(std::unique_ptr<MemoryBuffer> Object, + LLVMContext &Context); }; } } |