1dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//===- AArch64ExternalSymbolizer.h - Symbolizer for AArch64 -----*- C++ -*-===// 2dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// 3dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// The LLVM Compiler Infrastructure 4dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// 5dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// This file is distributed under the University of Illinois Open Source 6dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// License. See LICENSE.TXT for details. 7dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// 8dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//===----------------------------------------------------------------------===// 9dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// 10dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// Symbolize AArch64 assembly code during disassembly using callbacks. 11dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// 12dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//===----------------------------------------------------------------------===// 13dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 14dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#ifndef AArch64EXTERNALSYMBOLIZER_H 15dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#define AArch64EXTERNALSYMBOLIZER_H 16dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 17dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#include "llvm/MC/MCExternalSymbolizer.h" 18dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 19dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesnamespace llvm { 20dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 21dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesclass AArch64ExternalSymbolizer : public MCExternalSymbolizer { 22dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinespublic: 23dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines AArch64ExternalSymbolizer(MCContext &Ctx, 24dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines std::unique_ptr<MCRelocationInfo> RelInfo, 25dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines LLVMOpInfoCallback GetOpInfo, 26dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines LLVMSymbolLookupCallback SymbolLookUp, 27dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines void *DisInfo) 28dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines : MCExternalSymbolizer(Ctx, std::move(RelInfo), GetOpInfo, SymbolLookUp, 29dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines DisInfo) {} 30dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 31dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines bool tryAddingSymbolicOperand(MCInst &MI, raw_ostream &CommentStream, 32dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines int64_t Value, uint64_t Address, bool IsBranch, 33dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines uint64_t Offset, uint64_t InstSize) override; 34dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines}; 35dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 36dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines} // namespace llvm 37dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 38dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#endif 39