blob: 7348a7100b05df72b87faf20bf49cbc96dac13b6 [file] [log] [blame]
Dean Michael Berrisf8f909f2017-01-10 02:38:11 +00001//===- 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