//===- llvm/MC/MCSymbolizer.h - MCSymbolizer class --------------*- C++ -*-===// // // 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 // //===----------------------------------------------------------------------===// // // This file contains the declaration of the MCSymbolizer class, which is used // to symbolize instructions decoded from an object, that is, transform their // immediate operands to MCExprs. // //===----------------------------------------------------------------------===// #ifndef LLVM_MC_MCDISASSEMBLER_MCSYMBOLIZER_H #define LLVM_MC_MCDISASSEMBLER_MCSYMBOLIZER_H #include "llvm/ADT/ArrayRef.h" #include "llvm/MC/MCDisassembler/MCRelocationInfo.h" #include <cstdint> #include <memory> #include <utility> namespace llvm { class MCContext; class MCInst; class raw_ostream; /// Symbolize and annotate disassembled instructions. /// /// For now this mimics the old symbolization logic (from both ARM and x86), that /// relied on user-provided (C API) callbacks to do the actual symbol lookup in /// the object file. This was moved to MCExternalSymbolizer. /// A better API would not rely on actually calling the two methods here from /// inside each disassembler, but would use the instr info to determine what /// operands are actually symbolizable, and in what way. I don't think this /// information exists right now. class MCSymbolizer { … }; } // end namespace llvm #endif // LLVM_MC_MCDISASSEMBLER_MCSYMBOLIZER_H