1//===-- XCOFFDump.h ---------------------------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_TOOLS_LLVM_OBJDUMP_XCOFFDUMP_H
10#define LLVM_TOOLS_LLVM_OBJDUMP_XCOFFDUMP_H
11
12#include "llvm/Object/XCOFFObjectFile.h"
13
14namespace llvm {
15
16class formatted_raw_ostream;
17class MCSubtargetInfo;
18struct SymbolInfoTy;
19
20namespace objdump {
21std::optional<XCOFF::StorageMappingClass>
22getXCOFFSymbolCsectSMC(const object::XCOFFObjectFile &Obj,
23 const object::SymbolRef &Sym);
24
25std::optional<object::SymbolRef>
26getXCOFFSymbolContainingSymbolRef(const object::XCOFFObjectFile &Obj,
27 const object::SymbolRef &Sym);
28
29bool isLabel(const object::XCOFFObjectFile &Obj, const object::SymbolRef &Sym);
30
31std::string getXCOFFSymbolDescription(const SymbolInfoTy &SymbolInfo,
32 StringRef SymbolName);
33
34Error getXCOFFRelocationValueString(const object::XCOFFObjectFile &Obj,
35 const object::RelocationRef &RelRef,
36 bool SymbolDescription,
37 llvm::SmallVectorImpl<char> &Result);
38
39void dumpTracebackTable(ArrayRef<uint8_t> Bytes, uint64_t Address,
40 formatted_raw_ostream &OS, uint64_t End,
41 const MCSubtargetInfo &STI,
42 const object::XCOFFObjectFile *Obj);
43} // namespace objdump
44} // namespace llvm
45#endif
46