| //===-- llvm/BinaryFormat/Wasm.cpp -------------------------------*- C++-*-===// | 
 | // | 
 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | 
 | // See https://llvm.org/LICENSE.txt for license information. | 
 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | 
 | // | 
 | //===----------------------------------------------------------------------===// | 
 |  | 
 | #include "llvm/BinaryFormat/Wasm.h" | 
 |  | 
 | llvm::StringRef llvm::wasm::toString(wasm::WasmSymbolType Type) { | 
 |   switch (Type) { | 
 |   case wasm::WASM_SYMBOL_TYPE_FUNCTION: | 
 |     return "WASM_SYMBOL_TYPE_FUNCTION"; | 
 |   case wasm::WASM_SYMBOL_TYPE_GLOBAL: | 
 |     return "WASM_SYMBOL_TYPE_GLOBAL"; | 
 |   case wasm::WASM_SYMBOL_TYPE_TABLE: | 
 |     return "WASM_SYMBOL_TYPE_TABLE"; | 
 |   case wasm::WASM_SYMBOL_TYPE_DATA: | 
 |     return "WASM_SYMBOL_TYPE_DATA"; | 
 |   case wasm::WASM_SYMBOL_TYPE_SECTION: | 
 |     return "WASM_SYMBOL_TYPE_SECTION"; | 
 |   case wasm::WASM_SYMBOL_TYPE_TAG: | 
 |     return "WASM_SYMBOL_TYPE_TAG"; | 
 |   } | 
 |   llvm_unreachable("unknown symbol type"); | 
 | } | 
 |  | 
 | llvm::StringRef llvm::wasm::relocTypetoString(uint32_t Type) { | 
 |   switch (Type) { | 
 | #define WASM_RELOC(NAME, VALUE)                                                \ | 
 |   case VALUE:                                                                  \ | 
 |     return #NAME; | 
 | #include "llvm/BinaryFormat/WasmRelocs.def" | 
 | #undef WASM_RELOC | 
 |   default: | 
 |     llvm_unreachable("unknown reloc type"); | 
 |   } | 
 | } | 
 |  | 
 | llvm::StringRef llvm::wasm::sectionTypeToString(uint32_t Type) { | 
 | #define ECase(X)                                                               \ | 
 |   case wasm::WASM_SEC_##X:                                                     \ | 
 |     return #X; | 
 |   switch (Type) { | 
 |     ECase(CUSTOM); | 
 |     ECase(TYPE); | 
 |     ECase(IMPORT); | 
 |     ECase(FUNCTION); | 
 |     ECase(TABLE); | 
 |     ECase(MEMORY); | 
 |     ECase(GLOBAL); | 
 |     ECase(EXPORT); | 
 |     ECase(START); | 
 |     ECase(ELEM); | 
 |     ECase(CODE); | 
 |     ECase(DATA); | 
 |     ECase(DATACOUNT); | 
 |     ECase(TAG); | 
 |   default: | 
 |     llvm_unreachable("unknown section type"); | 
 |   } | 
 | #undef ECase | 
 | } | 
 |  | 
 | bool llvm::wasm::relocTypeHasAddend(uint32_t Type) { | 
 |   switch (Type) { | 
 |   case R_WASM_MEMORY_ADDR_LEB: | 
 |   case R_WASM_MEMORY_ADDR_LEB64: | 
 |   case R_WASM_MEMORY_ADDR_SLEB: | 
 |   case R_WASM_MEMORY_ADDR_SLEB64: | 
 |   case R_WASM_MEMORY_ADDR_REL_SLEB: | 
 |   case R_WASM_MEMORY_ADDR_REL_SLEB64: | 
 |   case R_WASM_MEMORY_ADDR_I32: | 
 |   case R_WASM_MEMORY_ADDR_I64: | 
 |   case R_WASM_MEMORY_ADDR_TLS_SLEB: | 
 |   case R_WASM_MEMORY_ADDR_TLS_SLEB64: | 
 |   case R_WASM_FUNCTION_OFFSET_I32: | 
 |   case R_WASM_FUNCTION_OFFSET_I64: | 
 |   case R_WASM_SECTION_OFFSET_I32: | 
 |   case R_WASM_MEMORY_ADDR_LOCREL_I32: | 
 |     return true; | 
 |   default: | 
 |     return false; | 
 |   } | 
 | } |