llvm/tools/llvm-xray/func-id-helper.h
Dean Michael Berris 6e1f066adf [XRay] Implement llvm-xray convert -- trace file conversion
This is the second part of a multi-part change to define additional
subcommands to the `llvm-xray` tool.

This change defines a conversion subcommand to take XRay log files, and
turns them from one format to another (binary or YAML). This currently
only supports the first version of the log file format, defined in the
compiler-rt runtime.

Depends on D21987.

Reviewers: dblaikie, echristo

Subscribers: mehdi_amini, dberris, beanz, llvm-commits

Differential Revision: https://reviews.llvm.org/D24376

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@291529 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-10 02:38:11 +00:00

50 lines
1.6 KiB
C++

//===- func-id-helper.h - XRay Function ID Conversion Helpers -------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// Defines helper tools dealing with XRay-generated function ids.
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_TOOLS_LLVM_XRAY_FUNC_ID_HELPER_H
#define LLVM_TOOLS_LLVM_XRAY_FUNC_ID_HELPER_H
#include "llvm/DebugInfo/Symbolize/Symbolize.h"
#include <unordered_map>
namespace llvm {
namespace xray {
// This class consolidates common operations related to Function IDs.
class FuncIdConversionHelper {
public:
using FunctionAddressMap = std::unordered_map<int32_t, uint64_t>;
private:
std::string BinaryInstrMap;
symbolize::LLVMSymbolizer &Symbolizer;
const FunctionAddressMap &FunctionAddresses;
public:
FuncIdConversionHelper(std::string BinaryInstrMap,
symbolize::LLVMSymbolizer &Symbolizer,
const FunctionAddressMap &FunctionAddresses)
: BinaryInstrMap(std::move(BinaryInstrMap)), Symbolizer(Symbolizer),
FunctionAddresses(FunctionAddresses) {}
// Returns the symbol or a string representation of the function id.
std::string SymbolOrNumber(int32_t FuncId) const;
// Returns the file and column from debug info for the given function id.
std::string FileLineAndColumn(int32_t FuncId) const;
};
} // namespace xray
} // namespace llvm
#endif // LLVM_TOOLS_LLVM_XRAY_FUNC_ID_HELPER_H