diff options
Diffstat (limited to 'tools/llvm-objdump/llvm-objdump.cpp')
| -rw-r--r-- | tools/llvm-objdump/llvm-objdump.cpp | 20 | 
1 files changed, 18 insertions, 2 deletions
| diff --git a/tools/llvm-objdump/llvm-objdump.cpp b/tools/llvm-objdump/llvm-objdump.cpp index 6a9151570908..be5635a3d4c6 100644 --- a/tools/llvm-objdump/llvm-objdump.cpp +++ b/tools/llvm-objdump/llvm-objdump.cpp @@ -41,6 +41,7 @@  #include "llvm/Object/ELFObjectFile.h"  #include "llvm/Object/MachO.h"  #include "llvm/Object/ObjectFile.h" +#include "llvm/Object/Wasm.h"  #include "llvm/Support/Casting.h"  #include "llvm/Support/CommandLine.h"  #include "llvm/Support/Debug.h" @@ -886,6 +887,18 @@ static void printRelocationTargetName(const MachOObjectFile *O,    fmt << S;  } +static std::error_code getRelocationValueString(const WasmObjectFile *Obj, +                                                const RelocationRef &RelRef, +                                                SmallVectorImpl<char> &Result) { +  const wasm::WasmRelocation& Rel = Obj->getWasmRelocation(RelRef); +  std::string fmtbuf; +  raw_string_ostream fmt(fmtbuf); +  fmt << Rel.Index << (Rel.Addend < 0 ? "" : "+") << Rel.Addend; +  fmt.flush(); +  Result.append(fmtbuf.begin(), fmtbuf.end()); +  return std::error_code(); +} +  static std::error_code getRelocationValueString(const MachOObjectFile *Obj,                                                  const RelocationRef &RelRef,                                                  SmallVectorImpl<char> &Result) { @@ -1071,8 +1084,11 @@ static std::error_code getRelocationValueString(const RelocationRef &Rel,      return getRelocationValueString(ELF, Rel, Result);    if (auto *COFF = dyn_cast<COFFObjectFile>(Obj))      return getRelocationValueString(COFF, Rel, Result); -  auto *MachO = cast<MachOObjectFile>(Obj); -  return getRelocationValueString(MachO, Rel, Result); +  if (auto *Wasm = dyn_cast<WasmObjectFile>(Obj)) +    return getRelocationValueString(Wasm, Rel, Result); +  if (auto *MachO = dyn_cast<MachOObjectFile>(Obj)) +    return getRelocationValueString(MachO, Rel, Result); +  llvm_unreachable("unknown object file format");  }  /// @brief Indicates whether this relocation should hidden when listing | 
