xref: /freebsd-src/contrib/llvm-project/llvm/tools/llvm-objdump/XCOFFDump.h (revision cb14a3fe5122c879eae1fb480ed7ce82a699ddb6)
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 
1606c3fb27SDimitry Andric class formatted_raw_ostream;
1706c3fb27SDimitry 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,
36*cb14a3feSDimitry Andric                                     bool SymbolDescription,
375ffd83dbSDimitry Andric                                     llvm::SmallVectorImpl<char> &Result);
3806c3fb27SDimitry Andric 
3906c3fb27SDimitry Andric void dumpTracebackTable(ArrayRef<uint8_t> Bytes, uint64_t Address,
4006c3fb27SDimitry Andric                         formatted_raw_ostream &OS, uint64_t End,
4106c3fb27SDimitry Andric                         const MCSubtargetInfo &STI,
4206c3fb27SDimitry Andric                         const object::XCOFFObjectFile *Obj);
435ffd83dbSDimitry Andric } // namespace objdump
445ffd83dbSDimitry Andric } // namespace llvm
455ffd83dbSDimitry Andric #endif
46