brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · d1a6628 Raw
50 lines · c
1//===- func-id-helper.h - XRay Function ID Conversion Helpers -------------===//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// Defines helper tools dealing with XRay-generated function ids.10//11//===----------------------------------------------------------------------===//12#ifndef LLVM_TOOLS_LLVM_XRAY_FUNC_ID_HELPER_H13#define LLVM_TOOLS_LLVM_XRAY_FUNC_ID_HELPER_H14 15#include "llvm/ADT/DenseMap.h"16#include "llvm/DebugInfo/Symbolize/SymbolizableModule.h"17#include "llvm/DebugInfo/Symbolize/Symbolize.h"18#include <unordered_map>19 20namespace llvm::xray {21 22// This class consolidates common operations related to Function IDs.23class FuncIdConversionHelper {24public:25  using FunctionAddressMap = std::unordered_map<int32_t, uint64_t>;26 27private:28  std::string BinaryInstrMap;29  symbolize::LLVMSymbolizer &Symbolizer;30  const FunctionAddressMap &FunctionAddresses;31  mutable llvm::DenseMap<int32_t, std::string> CachedNames;32 33public:34  FuncIdConversionHelper(std::string BinaryInstrMap,35                         symbolize::LLVMSymbolizer &Symbolizer,36                         const FunctionAddressMap &FunctionAddresses)37      : BinaryInstrMap(std::move(BinaryInstrMap)), Symbolizer(Symbolizer),38        FunctionAddresses(FunctionAddresses) {}39 40  // Returns the symbol or a string representation of the function id.41  std::string SymbolOrNumber(int32_t FuncId) const;42 43  // Returns the file and column from debug info for the given function id.44  std::string FileLineAndColumn(int32_t FuncId) const;45};46 47} // namespace llvm::xray48 49#endif // LLVM_TOOLS_LLVM_XRAY_FUNC_ID_HELPER_H50