| //===-- 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; |
| } |
| } |