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