mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-26 07:29:55 +00:00
MCDisassembler has an MCSymbolizer member that is meant to take care of symbolizing during disassembly, but it also has several methods that enable the disassembler to do symbolization internally (i.e. without an attached symbolizer object). There is no need for this duplication, but ARM64 had been making use of it. This patch moves the ARM64 symbolization logic out of ARM64Disassembler and into an ARM64ExternalSymbolizer class, and removes the duplicated MCSymbolizer functionality from the MCDisassembler interface. Symbolization will now be done exclusively through MCSymbolizers. There should be no impact on disassembly for any platform, but this allows us to tidy up the MCDisassembler interface and simplify the process of (and invariants related to) disassembler setup. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206063 91177308-0d34-0410-b5e6-96231b3b80d8
40 lines
1.5 KiB
C++
40 lines
1.5 KiB
C++
//===-- lib/MC/MCDisassembler.cpp - Disassembler interface ------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "llvm/MC/MCDisassembler.h"
|
|
#include "llvm/MC/MCExternalSymbolizer.h"
|
|
#include "llvm/Support/raw_ostream.h"
|
|
|
|
using namespace llvm;
|
|
|
|
MCDisassembler::~MCDisassembler() {
|
|
}
|
|
|
|
bool MCDisassembler::tryAddingSymbolicOperand(MCInst &Inst, int64_t Value,
|
|
uint64_t Address, bool IsBranch,
|
|
uint64_t Offset,
|
|
uint64_t InstSize) const {
|
|
raw_ostream &cStream = CommentStream ? *CommentStream : nulls();
|
|
if (Symbolizer)
|
|
return Symbolizer->tryAddingSymbolicOperand(Inst, cStream, Value, Address,
|
|
IsBranch, Offset, InstSize);
|
|
return false;
|
|
}
|
|
|
|
void MCDisassembler::tryAddingPcLoadReferenceComment(int64_t Value,
|
|
uint64_t Address) const {
|
|
raw_ostream &cStream = CommentStream ? *CommentStream : nulls();
|
|
if (Symbolizer)
|
|
Symbolizer->tryAddingPcLoadReferenceComment(cStream, Value, Address);
|
|
}
|
|
|
|
void MCDisassembler::setSymbolizer(std::unique_ptr<MCSymbolizer> Symzer) {
|
|
Symbolizer = std::move(Symzer);
|
|
}
|