diff options
author | orivej <orivej@yandex-team.ru> | 2022-02-10 16:44:49 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:44:49 +0300 |
commit | 718c552901d703c502ccbefdfc3c9028d608b947 (patch) | |
tree | 46534a98bbefcd7b1f3faa5b52c138ab27db75b7 /contrib/libs/llvm12/include/llvm/Object/IRObjectFile.h | |
parent | e9656aae26e0358d5378e5b63dcac5c8dbe0e4d0 (diff) | |
download | ydb-718c552901d703c502ccbefdfc3c9028d608b947.tar.gz |
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/llvm12/include/llvm/Object/IRObjectFile.h')
-rw-r--r-- | contrib/libs/llvm12/include/llvm/Object/IRObjectFile.h | 204 |
1 files changed, 102 insertions, 102 deletions
diff --git a/contrib/libs/llvm12/include/llvm/Object/IRObjectFile.h b/contrib/libs/llvm12/include/llvm/Object/IRObjectFile.h index da4a9d74aa..548cea58d1 100644 --- a/contrib/libs/llvm12/include/llvm/Object/IRObjectFile.h +++ b/contrib/libs/llvm12/include/llvm/Object/IRObjectFile.h @@ -1,102 +1,102 @@ -#pragma once - -#ifdef __GNUC__ -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#endif - -//===- IRObjectFile.h - LLVM IR object file implementation ------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -// -// This file declares the IRObjectFile template class. -// -//===----------------------------------------------------------------------===// - -#ifndef LLVM_OBJECT_IROBJECTFILE_H -#define LLVM_OBJECT_IROBJECTFILE_H - -#include "llvm/ADT/PointerUnion.h" -#include "llvm/Object/IRSymtab.h" -#include "llvm/Object/ModuleSymbolTable.h" -#include "llvm/Object/SymbolicFile.h" - -namespace llvm { -class BitcodeModule; -class Mangler; -class Module; -class GlobalValue; -class Triple; - -namespace object { -class ObjectFile; - -class IRObjectFile : public SymbolicFile { - std::vector<std::unique_ptr<Module>> Mods; - ModuleSymbolTable SymTab; - IRObjectFile(MemoryBufferRef Object, - std::vector<std::unique_ptr<Module>> Mods); - -public: - ~IRObjectFile() override; - void moveSymbolNext(DataRefImpl &Symb) const override; - Error printSymbolName(raw_ostream &OS, DataRefImpl Symb) const override; - Expected<uint32_t> getSymbolFlags(DataRefImpl Symb) const override; - basic_symbol_iterator symbol_begin() const override; - basic_symbol_iterator symbol_end() const override; - - StringRef getTargetTriple() const; - - static bool classof(const Binary *v) { - return v->isIR(); - } - - using module_iterator = - pointee_iterator<std::vector<std::unique_ptr<Module>>::const_iterator, - const Module>; - - module_iterator module_begin() const { return module_iterator(Mods.begin()); } - module_iterator module_end() const { return module_iterator(Mods.end()); } - - iterator_range<module_iterator> modules() const { - return make_range(module_begin(), module_end()); - } - - /// Finds and returns bitcode embedded in the given object file, or an - /// error code if not found. - static Expected<MemoryBufferRef> findBitcodeInObject(const ObjectFile &Obj); - - /// Finds and returns bitcode in the given memory buffer (which may - /// be either a bitcode file or a native object file with embedded bitcode), - /// or an error code if not found. - static Expected<MemoryBufferRef> - findBitcodeInMemBuffer(MemoryBufferRef Object); - - static Expected<std::unique_ptr<IRObjectFile>> create(MemoryBufferRef Object, - LLVMContext &Context); -}; - -/// The contents of a bitcode file and its irsymtab. Any underlying data -/// for the irsymtab are owned by Symtab and Strtab. -struct IRSymtabFile { - std::vector<BitcodeModule> Mods; - SmallVector<char, 0> Symtab, Strtab; - irsymtab::Reader TheReader; -}; - -/// Reads a bitcode file, creating its irsymtab if necessary. -Expected<IRSymtabFile> readIRSymtab(MemoryBufferRef MBRef); - -} - -} - -#endif - -#ifdef __GNUC__ -#pragma GCC diagnostic pop -#endif +#pragma once + +#ifdef __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunused-parameter" +#endif + +//===- IRObjectFile.h - LLVM IR object file implementation ------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file declares the IRObjectFile template class. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_OBJECT_IROBJECTFILE_H +#define LLVM_OBJECT_IROBJECTFILE_H + +#include "llvm/ADT/PointerUnion.h" +#include "llvm/Object/IRSymtab.h" +#include "llvm/Object/ModuleSymbolTable.h" +#include "llvm/Object/SymbolicFile.h" + +namespace llvm { +class BitcodeModule; +class Mangler; +class Module; +class GlobalValue; +class Triple; + +namespace object { +class ObjectFile; + +class IRObjectFile : public SymbolicFile { + std::vector<std::unique_ptr<Module>> Mods; + ModuleSymbolTable SymTab; + IRObjectFile(MemoryBufferRef Object, + std::vector<std::unique_ptr<Module>> Mods); + +public: + ~IRObjectFile() override; + void moveSymbolNext(DataRefImpl &Symb) const override; + Error printSymbolName(raw_ostream &OS, DataRefImpl Symb) const override; + Expected<uint32_t> getSymbolFlags(DataRefImpl Symb) const override; + basic_symbol_iterator symbol_begin() const override; + basic_symbol_iterator symbol_end() const override; + + StringRef getTargetTriple() const; + + static bool classof(const Binary *v) { + return v->isIR(); + } + + using module_iterator = + pointee_iterator<std::vector<std::unique_ptr<Module>>::const_iterator, + const Module>; + + module_iterator module_begin() const { return module_iterator(Mods.begin()); } + module_iterator module_end() const { return module_iterator(Mods.end()); } + + iterator_range<module_iterator> modules() const { + return make_range(module_begin(), module_end()); + } + + /// Finds and returns bitcode embedded in the given object file, or an + /// error code if not found. + static Expected<MemoryBufferRef> findBitcodeInObject(const ObjectFile &Obj); + + /// Finds and returns bitcode in the given memory buffer (which may + /// be either a bitcode file or a native object file with embedded bitcode), + /// or an error code if not found. + static Expected<MemoryBufferRef> + findBitcodeInMemBuffer(MemoryBufferRef Object); + + static Expected<std::unique_ptr<IRObjectFile>> create(MemoryBufferRef Object, + LLVMContext &Context); +}; + +/// The contents of a bitcode file and its irsymtab. Any underlying data +/// for the irsymtab are owned by Symtab and Strtab. +struct IRSymtabFile { + std::vector<BitcodeModule> Mods; + SmallVector<char, 0> Symtab, Strtab; + irsymtab::Reader TheReader; +}; + +/// Reads a bitcode file, creating its irsymtab if necessary. +Expected<IRSymtabFile> readIRSymtab(MemoryBufferRef MBRef); + +} + +} + +#endif + +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif |