1 //===- WriterUtils.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 LLD_WASM_WRITERUTILS_H 10 #define LLD_WASM_WRITERUTILS_H 11 12 #include "lld/Common/LLVM.h" 13 #include "llvm/ADT/Twine.h" 14 #include "llvm/Object/Wasm.h" 15 16 namespace lld { 17 namespace wasm { 18 19 void debugWrite(uint64_t offset, const Twine &msg); 20 21 void writeUleb128(raw_ostream &os, uint64_t number, const Twine &msg); 22 23 void writeSleb128(raw_ostream &os, int64_t number, const Twine &msg); 24 25 void writeBytes(raw_ostream &os, const char *bytes, size_t count, 26 const Twine &msg); 27 28 void writeStr(raw_ostream &os, StringRef string, const Twine &msg); 29 30 void writeU8(raw_ostream &os, uint8_t byte, const Twine &msg); 31 32 void writeU32(raw_ostream &os, uint32_t number, const Twine &msg); 33 34 void writeValueType(raw_ostream &os, llvm::wasm::ValType type, 35 const Twine &msg); 36 37 void writeSig(raw_ostream &os, const llvm::wasm::WasmSignature &sig); 38 39 void writeI32Const(raw_ostream &os, int32_t number, const Twine &msg); 40 41 void writeI64Const(raw_ostream &os, int64_t number, const Twine &msg); 42 43 void writeMemArg(raw_ostream &os, uint32_t alignment, uint64_t offset); 44 45 void writeInitExpr(raw_ostream &os, const llvm::wasm::WasmInitExpr &initExpr); 46 47 void writeLimits(raw_ostream &os, const llvm::wasm::WasmLimits &limits); 48 49 void writeGlobalType(raw_ostream &os, const llvm::wasm::WasmGlobalType &type); 50 51 void writeGlobal(raw_ostream &os, const llvm::wasm::WasmGlobal &global); 52 53 void writeEventType(raw_ostream &os, const llvm::wasm::WasmEventType &type); 54 55 void writeEvent(raw_ostream &os, const llvm::wasm::WasmEvent &event); 56 57 void writeTableType(raw_ostream &os, const llvm::wasm::WasmTable &type); 58 59 void writeImport(raw_ostream &os, const llvm::wasm::WasmImport &import); 60 61 void writeExport(raw_ostream &os, const llvm::wasm::WasmExport &export_); 62 63 } // namespace wasm 64 65 std::string toString(llvm::wasm::ValType type); 66 std::string toString(const llvm::wasm::WasmSignature &sig); 67 std::string toString(const llvm::wasm::WasmGlobalType &type); 68 std::string toString(const llvm::wasm::WasmEventType &type); 69 70 } // namespace lld 71 72 #endif // LLD_WASM_WRITERUTILS_H 73