1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- //===- func-id-helper.h - XRay Function ID Conversion Helpers -------------===//
- //
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- // See https://llvm.org/LICENSE.txt for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- //===----------------------------------------------------------------------===//
- //
- // 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/ADT/DenseMap.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;
- mutable llvm::DenseMap<int32_t, std::string> CachedNames;
- 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
|