Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. //===- TapiFile.h - Text-based Dynamic Library Stub -------------*- C++ -*-===//
  2. //
  3. // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
  4. // See https://llvm.org/LICENSE.txt for license information.
  5. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  6. //
  7. //===----------------------------------------------------------------------===//
  8. //
  9. // This file declares the TapiFile interface.
  10. //
  11. //===----------------------------------------------------------------------===//
  12.  
  13. #ifndef LLVM_OBJECT_TAPIFILE_H
  14. #define LLVM_OBJECT_TAPIFILE_H
  15.  
  16. #include "llvm/ADT/StringRef.h"
  17. #include "llvm/Object/Binary.h"
  18. #include "llvm/Object/SymbolicFile.h"
  19. #include "llvm/Support/Error.h"
  20. #include "llvm/Support/MemoryBufferRef.h"
  21. #include "llvm/TextAPI/Architecture.h"
  22.  
  23. namespace llvm {
  24.  
  25. class raw_ostream;
  26.  
  27. namespace MachO {
  28.  
  29. class InterfaceFile;
  30.  
  31. }
  32.  
  33. namespace object {
  34.  
  35. class TapiFile : public SymbolicFile {
  36. public:
  37.   TapiFile(MemoryBufferRef Source, const MachO::InterfaceFile &interface,
  38.            MachO::Architecture Arch);
  39.   ~TapiFile() override;
  40.  
  41.   void moveSymbolNext(DataRefImpl &DRI) const override;
  42.  
  43.   Error printSymbolName(raw_ostream &OS, DataRefImpl DRI) const override;
  44.  
  45.   Expected<uint32_t> getSymbolFlags(DataRefImpl DRI) const override;
  46.  
  47.   basic_symbol_iterator symbol_begin() const override;
  48.  
  49.   basic_symbol_iterator symbol_end() const override;
  50.  
  51.   static bool classof(const Binary *v) { return v->isTapiFile(); }
  52.  
  53.   bool is64Bit() { return MachO::is64Bit(Arch); }
  54.  
  55. private:
  56.   struct Symbol {
  57.     StringRef Prefix;
  58.     StringRef Name;
  59.     uint32_t Flags;
  60.  
  61.     constexpr Symbol(StringRef Prefix, StringRef Name, uint32_t Flags)
  62.         : Prefix(Prefix), Name(Name), Flags(Flags) {}
  63.   };
  64.  
  65.   std::vector<Symbol> Symbols;
  66.   MachO::Architecture Arch;
  67. };
  68.  
  69. } // end namespace object.
  70. } // end namespace llvm.
  71.  
  72. #endif // LLVM_OBJECT_TAPIFILE_H
  73.