1336809Sdim//===-- llvm/BinaryFormat/Wasm.cpp -------------------------------*- C++-*-===//
2336809Sdim//
3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4353358Sdim// See https://llvm.org/LICENSE.txt for license information.
5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6336809Sdim//
7336809Sdim//===----------------------------------------------------------------------===//
8336809Sdim
9336809Sdim#include "llvm/BinaryFormat/Wasm.h"
10336809Sdim
11353358Sdimstd::string llvm::wasm::toString(wasm::WasmSymbolType Type) {
12353358Sdim  switch (Type) {
13336809Sdim  case wasm::WASM_SYMBOL_TYPE_FUNCTION:
14336809Sdim    return "WASM_SYMBOL_TYPE_FUNCTION";
15336809Sdim  case wasm::WASM_SYMBOL_TYPE_GLOBAL:
16336809Sdim    return "WASM_SYMBOL_TYPE_GLOBAL";
17336809Sdim  case wasm::WASM_SYMBOL_TYPE_DATA:
18336809Sdim    return "WASM_SYMBOL_TYPE_DATA";
19336809Sdim  case wasm::WASM_SYMBOL_TYPE_SECTION:
20336809Sdim    return "WASM_SYMBOL_TYPE_SECTION";
21344779Sdim  case wasm::WASM_SYMBOL_TYPE_EVENT:
22344779Sdim    return "WASM_SYMBOL_TYPE_EVENT";
23336809Sdim  }
24336809Sdim  llvm_unreachable("unknown symbol type");
25336809Sdim}
26336809Sdim
27353358Sdimstd::string llvm::wasm::relocTypetoString(uint32_t Type) {
28353358Sdim  switch (Type) {
29344779Sdim#define WASM_RELOC(NAME, VALUE)                                                \
30344779Sdim  case VALUE:                                                                  \
31344779Sdim    return #NAME;
32336809Sdim#include "llvm/BinaryFormat/WasmRelocs.def"
33336809Sdim#undef WASM_RELOC
34336809Sdim  default:
35336809Sdim    llvm_unreachable("unknown reloc type");
36336809Sdim  }
37336809Sdim}
38353358Sdim
39353358Sdimbool llvm::wasm::relocTypeHasAddend(uint32_t Type) {
40353358Sdim  switch (Type) {
41353358Sdim  case R_WASM_MEMORY_ADDR_LEB:
42353358Sdim  case R_WASM_MEMORY_ADDR_SLEB:
43353358Sdim  case R_WASM_MEMORY_ADDR_REL_SLEB:
44353358Sdim  case R_WASM_MEMORY_ADDR_I32:
45353358Sdim  case R_WASM_FUNCTION_OFFSET_I32:
46353358Sdim  case R_WASM_SECTION_OFFSET_I32:
47353358Sdim    return true;
48353358Sdim  default:
49353358Sdim    return false;
50353358Sdim  }
51353358Sdim}
52