brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.3 KiB · 3dd33b3 Raw
111 lines · c
1//===-- SymbolFileJSON.h ----------------------------------------*- 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-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLDB_SOURCE_PLUGINS_SYMBOLFILE_JSON_SYMBOLFILEJSON_H10#define LLDB_SOURCE_PLUGINS_SYMBOLFILE_JSON_SYMBOLFILEJSON_H11 12#include <map>13#include <optional>14#include <vector>15 16#include "lldb/Symbol/CompileUnit.h"17#include "lldb/Symbol/SymbolFile.h"18 19namespace lldb_private {20 21class SymbolFileJSON : public lldb_private::SymbolFileCommon {22  /// LLVM RTTI support.23  static char ID;24 25public:26  /// LLVM RTTI support.27  /// \{28  bool isA(const void *ClassID) const override {29    return ClassID == &ID || SymbolFileCommon::isA(ClassID);30  }31  static bool classof(const SymbolFile *obj) { return obj->isA(&ID); }32  /// \}33 34  SymbolFileJSON(lldb::ObjectFileSP objfile_sp);35 36  static void Initialize();37 38  static void Terminate();39 40  static llvm::StringRef GetPluginNameStatic() { return "JSON"; }41 42  static llvm::StringRef GetPluginDescriptionStatic();43 44  static lldb_private::SymbolFile *45  CreateInstance(lldb::ObjectFileSP objfile_sp);46 47  llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }48 49  uint32_t CalculateAbilities() override;50 51  lldb::LanguageType ParseLanguage(CompileUnit &comp_unit) override {52    return lldb::eLanguageTypeUnknown;53  }54 55  size_t ParseFunctions(CompileUnit &comp_unit) override { return 0; }56 57  bool ParseLineTable(CompileUnit &comp_unit) override { return false; }58 59  bool ParseDebugMacros(CompileUnit &comp_unit) override { return false; }60 61  bool ParseSupportFiles(CompileUnit &comp_unit,62                         SupportFileList &support_files) override {63    return false;64  }65 66  size_t ParseTypes(CompileUnit &cu) override { return 0; }67 68  bool ParseImportedModules(69      const SymbolContext &sc,70      std::vector<lldb_private::SourceModule> &imported_modules) override {71    return false;72  }73 74  size_t ParseBlocksRecursive(Function &func) override { return 0; }75 76  size_t ParseVariablesForContext(const SymbolContext &sc) override {77    return 0;78  }79 80  uint32_t CalculateNumCompileUnits() override { return 0; }81 82  lldb::CompUnitSP ParseCompileUnitAtIndex(uint32_t index) override;83 84  Type *ResolveTypeUID(lldb::user_id_t type_uid) override { return nullptr; }85  std::optional<ArrayInfo> GetDynamicArrayInfoForUID(86      lldb::user_id_t type_uid,87      const lldb_private::ExecutionContext *exe_ctx) override {88    return std::nullopt;89  }90 91  bool CompleteType(CompilerType &compiler_type) override { return false; }92 93  uint32_t ResolveSymbolContext(const lldb_private::Address &so_addr,94                                lldb::SymbolContextItem resolve_scope,95                                lldb_private::SymbolContext &sc) override;96 97  void GetTypes(lldb_private::SymbolContextScope *sc_scope,98                lldb::TypeClass type_mask,99                lldb_private::TypeList &type_list) override;100 101  void AddSymbols(Symtab &symtab) override;102 103private:104  lldb::addr_t GetBaseFileAddress();105 106  std::vector<std::pair<uint64_t, std::string>> m_symbols;107};108} // namespace lldb_private109 110#endif // LLDB_SOURCE_PLUGINS_SYMBOLFILE_JSON_SYMBOLFILEJSON_H111