func-id-helper.h revision 314564
1//===- func-id-helper.h - XRay Function ID Conversion Helpers -------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// Defines helper tools dealing with XRay-generated function ids.
11//
12//===----------------------------------------------------------------------===//
13#ifndef LLVM_TOOLS_LLVM_XRAY_FUNC_ID_HELPER_H
14#define LLVM_TOOLS_LLVM_XRAY_FUNC_ID_HELPER_H
15
16#include "llvm/DebugInfo/Symbolize/Symbolize.h"
17#include <unordered_map>
18
19namespace llvm {
20namespace 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
32public:
33  FuncIdConversionHelper(std::string BinaryInstrMap,
34                         symbolize::LLVMSymbolizer &Symbolizer,
35                         const FunctionAddressMap &FunctionAddresses)
36      : BinaryInstrMap(std::move(BinaryInstrMap)), Symbolizer(Symbolizer),
37        FunctionAddresses(FunctionAddresses) {}
38
39  // Returns the symbol or a string representation of the function id.
40  std::string SymbolOrNumber(int32_t FuncId) const;
41
42  // Returns the file and column from debug info for the given function id.
43  std::string FileLineAndColumn(int32_t FuncId) const;
44};
45
46} // namespace xray
47} // namespace llvm
48
49#endif // LLVM_TOOLS_LLVM_XRAY_FUNC_ID_HELPER_H
50