137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines//===-- MCDisassembler.cpp - Disassembler interface -----------------------===// 2251ef612a812ac99edeab6c08a752bf8ca220921Sean Callanan// 3251ef612a812ac99edeab6c08a752bf8ca220921Sean Callanan// The LLVM Compiler Infrastructure 4251ef612a812ac99edeab6c08a752bf8ca220921Sean Callanan// 5251ef612a812ac99edeab6c08a752bf8ca220921Sean Callanan// This file is distributed under the University of Illinois Open Source 6251ef612a812ac99edeab6c08a752bf8ca220921Sean Callanan// License. See LICENSE.TXT for details. 7251ef612a812ac99edeab6c08a752bf8ca220921Sean Callanan// 8251ef612a812ac99edeab6c08a752bf8ca220921Sean Callanan//===----------------------------------------------------------------------===// 9251ef612a812ac99edeab6c08a752bf8ca220921Sean Callanan 10de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#include "llvm/MC/MCDisassembler/MCDisassembler.h" 11de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#include "llvm/MC/MCDisassembler/MCExternalSymbolizer.h" 122c94d0faa0e1c268893d5e04dc77e8a35889db00Ahmed Bougacha#include "llvm/Support/raw_ostream.h" 132c94d0faa0e1c268893d5e04dc77e8a35889db00Ahmed Bougacha 142a1744f553442fbc3cd74114cbcd1305d91d8a90Chris Lattnerusing namespace llvm; 15251ef612a812ac99edeab6c08a752bf8ca220921Sean Callanan 162a1744f553442fbc3cd74114cbcd1305d91d8a90Chris LattnerMCDisassembler::~MCDisassembler() { 17aa5c1b7f9366950b4cbe710c8426d8589d5d975bEdward O'Callaghan} 182c94d0faa0e1c268893d5e04dc77e8a35889db00Ahmed Bougacha 192c94d0faa0e1c268893d5e04dc77e8a35889db00Ahmed Bougachabool MCDisassembler::tryAddingSymbolicOperand(MCInst &Inst, int64_t Value, 202c94d0faa0e1c268893d5e04dc77e8a35889db00Ahmed Bougacha uint64_t Address, bool IsBranch, 212c94d0faa0e1c268893d5e04dc77e8a35889db00Ahmed Bougacha uint64_t Offset, 222c94d0faa0e1c268893d5e04dc77e8a35889db00Ahmed Bougacha uint64_t InstSize) const { 232c94d0faa0e1c268893d5e04dc77e8a35889db00Ahmed Bougacha raw_ostream &cStream = CommentStream ? *CommentStream : nulls(); 242c94d0faa0e1c268893d5e04dc77e8a35889db00Ahmed Bougacha if (Symbolizer) 252c94d0faa0e1c268893d5e04dc77e8a35889db00Ahmed Bougacha return Symbolizer->tryAddingSymbolicOperand(Inst, cStream, Value, Address, 262c94d0faa0e1c268893d5e04dc77e8a35889db00Ahmed Bougacha IsBranch, Offset, InstSize); 272c94d0faa0e1c268893d5e04dc77e8a35889db00Ahmed Bougacha return false; 282c94d0faa0e1c268893d5e04dc77e8a35889db00Ahmed Bougacha} 292c94d0faa0e1c268893d5e04dc77e8a35889db00Ahmed Bougacha 302c94d0faa0e1c268893d5e04dc77e8a35889db00Ahmed Bougachavoid MCDisassembler::tryAddingPcLoadReferenceComment(int64_t Value, 312c94d0faa0e1c268893d5e04dc77e8a35889db00Ahmed Bougacha uint64_t Address) const { 322c94d0faa0e1c268893d5e04dc77e8a35889db00Ahmed Bougacha raw_ostream &cStream = CommentStream ? *CommentStream : nulls(); 332c94d0faa0e1c268893d5e04dc77e8a35889db00Ahmed Bougacha if (Symbolizer) 342c94d0faa0e1c268893d5e04dc77e8a35889db00Ahmed Bougacha Symbolizer->tryAddingPcLoadReferenceComment(cStream, Value, Address); 352c94d0faa0e1c268893d5e04dc77e8a35889db00Ahmed Bougacha} 362c94d0faa0e1c268893d5e04dc77e8a35889db00Ahmed Bougacha 3736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesvoid MCDisassembler::setSymbolizer(std::unique_ptr<MCSymbolizer> Symzer) { 3836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines Symbolizer = std::move(Symzer); 392c94d0faa0e1c268893d5e04dc77e8a35889db00Ahmed Bougacha} 40