xref: /freebsd/contrib/llvm-project/llvm/tools/llvm-objdump/XCOFFDump.h (revision 06c3fb2749bda94cb5201f81ffdb8fa6c3161b2e)
15ffd83dbSDimitry Andric //===-- XCOFFDump.h ---------------------------------------------*- C++ -*-===//
25ffd83dbSDimitry Andric //
35ffd83dbSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
45ffd83dbSDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
55ffd83dbSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
65ffd83dbSDimitry Andric //
75ffd83dbSDimitry Andric //===----------------------------------------------------------------------===//
85ffd83dbSDimitry Andric 
95ffd83dbSDimitry Andric #ifndef LLVM_TOOLS_LLVM_OBJDUMP_XCOFFDUMP_H
105ffd83dbSDimitry Andric #define LLVM_TOOLS_LLVM_OBJDUMP_XCOFFDUMP_H
115ffd83dbSDimitry Andric 
125ffd83dbSDimitry Andric #include "llvm/Object/XCOFFObjectFile.h"
135ffd83dbSDimitry Andric 
145ffd83dbSDimitry Andric namespace llvm {
155ffd83dbSDimitry Andric 
16*06c3fb27SDimitry Andric class formatted_raw_ostream;
17*06c3fb27SDimitry Andric class MCSubtargetInfo;
185ffd83dbSDimitry Andric struct SymbolInfoTy;
195ffd83dbSDimitry Andric 
205ffd83dbSDimitry Andric namespace objdump {
21bdd1243dSDimitry Andric std::optional<XCOFF::StorageMappingClass>
22753f127fSDimitry Andric getXCOFFSymbolCsectSMC(const object::XCOFFObjectFile &Obj,
235ffd83dbSDimitry Andric                        const object::SymbolRef &Sym);
245ffd83dbSDimitry Andric 
25bdd1243dSDimitry Andric std::optional<object::SymbolRef>
26753f127fSDimitry Andric getXCOFFSymbolContainingSymbolRef(const object::XCOFFObjectFile &Obj,
27349cc55cSDimitry Andric                                   const object::SymbolRef &Sym);
28349cc55cSDimitry Andric 
29753f127fSDimitry Andric bool isLabel(const object::XCOFFObjectFile &Obj, const object::SymbolRef &Sym);
305ffd83dbSDimitry Andric 
315ffd83dbSDimitry Andric std::string getXCOFFSymbolDescription(const SymbolInfoTy &SymbolInfo,
325ffd83dbSDimitry Andric                                       StringRef SymbolName);
335ffd83dbSDimitry Andric 
34753f127fSDimitry Andric Error getXCOFFRelocationValueString(const object::XCOFFObjectFile &Obj,
355ffd83dbSDimitry Andric                                     const object::RelocationRef &RelRef,
365ffd83dbSDimitry Andric                                     llvm::SmallVectorImpl<char> &Result);
37*06c3fb27SDimitry Andric 
38*06c3fb27SDimitry Andric void dumpTracebackTable(ArrayRef<uint8_t> Bytes, uint64_t Address,
39*06c3fb27SDimitry Andric                         formatted_raw_ostream &OS, uint64_t End,
40*06c3fb27SDimitry Andric                         const MCSubtargetInfo &STI,
41*06c3fb27SDimitry Andric                         const object::XCOFFObjectFile *Obj);
425ffd83dbSDimitry Andric } // namespace objdump
435ffd83dbSDimitry Andric } // namespace llvm
445ffd83dbSDimitry Andric #endif
45