//===- xray-extract.h - XRay Instrumentation Map Extraction ---------------===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // Defines the interface for extracting the instrumentation map from an // XRay-instrumented binary. // //===----------------------------------------------------------------------===// #ifndef LLVM_TOOLS_XRAY_EXTRACT_H #define LLVM_TOOLS_XRAY_EXTRACT_H #include #include #include #include #include "xray-sleds.h" #include "llvm/Support/Error.h" #include "llvm/Support/raw_ostream.h" namespace llvm { namespace xray { class InstrumentationMapExtractor { public: typedef std::unordered_map FunctionAddressMap; typedef std::unordered_map FunctionAddressReverseMap; enum class InputFormats { ELF, YAML }; private: std::deque Sleds; FunctionAddressMap FunctionAddresses; FunctionAddressReverseMap FunctionIds; public: /// Loads the instrumentation map from |Filename|. Updates |EC| in case there /// were errors encountered opening the file. |Format| defines what the input /// instrumentation map is in. InstrumentationMapExtractor(std::string Filename, InputFormats Format, Error &EC); const FunctionAddressMap &getFunctionAddresses() { return FunctionAddresses; } /// Exports the loaded function address map as YAML through |OS|. void exportAsYAML(raw_ostream &OS); }; } // namespace xray } // namespace llvm #endif // LLVM_TOOLS_XRAY_EXTRACT_H